Fabricators-of-Create / Create

[Fabric Mod] Building Tools and Aesthetic Technology
MIT License
834 stars 188 forks source link

Impossible to create a bottomless lava source #779

Open Daniel366Cobra opened 1 year ago

Daniel366Cobra commented 1 year ago

Describe the Bug

In Create Fabric 0.5.0g-796, making a limitless lava supply with Hose Pulleys is impossible.

  1. When filling a reservoir, Hose Pulley will fill it one block less than the threshold (i.e. 9999 blocks), then stop filling and begin discarding any further lava at the hose inlet, making bucket-emptying sound and lava particles. Hose pulley block will show "Bottomless supply", but only intermittently. Following image is 25x25 reservoir filled to 16 block height (10000 blocks), farthest corner from the pulley does not get filled.

BottomlessSupplyWithUnfilledCorner

  1. When trying to pump lava out, pulley will start draining the reservoir it considered bottomless when filling. Tested it when pumping from the top or bottom, with the same pulley as filled it or with another, it gets drained anyway.

BottomlessSupplyGettingDrained

  1. After adding in one more (17th) layer of lava with /fill command and starting pumping, lava starts flowing in the pipe, briefly stalls, then resumes, triggering the advancement. The source is now stably considered bottomless. TrulyBottomlessSupply

  2. After removing the extra layer of lava with /fill several drained blocks in the 16th layer can be seen. When resuming pumping, the pulley pumps for some time like it did in bottomless mode, briefly stalls, then resumes, but the reservoir is no longer considered bottomless and starts being drained. Attempting to refill the 16th layer via pulley results in single unfilled block as described in 1. BottomlessSupplyDrainedCorner

I believe the problem is two part and could be described as follows. Firstly, the pulley seems to check the infinity of the source after pumping some blocks (resulting in a drained corner in image above), so when trying to create a source of precisely 10000 blocks some will be gone when starting pumping and the source will not be considered infinite. Secondly, when trying to fill a reservoir, the pulley stops 1 block short and starts discarding all following blocks, making it impossible to add one more layer for a truly infinite source in current circumstances (drain before check).

Reproduction Steps

Describing my process of testing in creative mode after discovering the issue in survival.

  1. Create a 25x25 reservoir.
  2. Build 2 structures, each consisting of one 2x2x2 creative fluid tank, 3 pumps with drives able to be switched on/off and reversed to drain/fill and one hose pulley on the edge of the reservoir. Pipe from pulley to pumps must have a window for watching the flow.
  3. Extend one pulley's hose to the bottom of the reservoir, other to the 16th block (hose copper end in 16th block from the bottom so that the desired lava volume is 25x25x16 = 10000. Set bottom pulley's pumps to suck liquid from reservoir, top pulley to deposit it into the reservoir.
  4. Fill creative tanks with lava.
  5. Activate filling pulley's pumps and observe the reservoir filling to 9999 blocks, leaving an air block in the corner, and the pulley to start emitting lava splashes at the hose end while intermittently showing "bottomless supply" (Image 1).
  6. Stop filling pulley's pumps. Activate draining pulley's pumps. Observe the pulley draining the supply and not showing "bottomless" (Image 2).
  7. Stop draining pulley's pumps. Refill 16th layer to (25x25 - 1) via filling pulley. Fill missing block manually with bucket so there is 10000 blocks of lava.
  8. Activate draining pulley. Observe the same as in step 6.
  9. Stop draining pulley. Refill the top layer again. Add one more layer of lava blocks via /fill command.
  10. Activate draining pulley. Observe it pump for ~2 seconds, then stall (liquid in pipe disappears), then restart and reliably show "bottomless supply" (Image 3).
  11. Stop draining pulley. Remove top layer via /fill. Observe missing lava blocks in 16th layer (Image 4).
  12. Activate draining pulley. Observe it pump for ~2 seconds without draining the blocks, then stall, then restart and begin draining the lava. Optionally stop the draining pulley and try refilling the 16th layer via filling pulley to once again see one unfilled block.

Expected Result

Possibility of making a truly infinite source via pulley and pump without resorting to commands or to add more lava layers to the reservoir after it is considered infinite to compensate for blocks drained before infinity check.

Screenshots and Videos

No response

Crash Report or Log

No response

Operating System

Windows 10 Pro

Mod Version

0.5.0g

Minecraft Version

1.19.2

Other Mods

image

Additional Context

No response

Evrey commented 1 year ago

MC 1.18 is also affected by this.

DarianLStephens commented 1 year ago

I don't think infinite lava sources should really exist outside the Nether, anyway. It makes the portal train kinda useless unless you have something specifically in the Nether.

Daniel366Cobra commented 1 year ago

I don't think infinite lava sources should really exist outside the Nether, anyway. It makes the portal train kinda useless unless you have something specifically in the Nether.

I think if someone takes their time to dig a reservoir and transport 10000 blocks of lava from the nether they pretty much earned their infinite source. Besides it is irrelevant - the pulley still disrespects the 10000 blocks threshold and therefore is not working as intended.

DarianLStephens commented 1 year ago

Yeah, it's a bug, but I think it could also be changed to be a feature. At the very least, extended control over infinite fluids would be great for modpack makers. If you could condition it behind dimensions or biomes, even better! Infinite water only in the ocean/rivers, infinite lava only in the Nether, would be so good!

TropheusJ commented 1 year ago

Infinite fluids can be controlled with tags and we aren’t changing features from forge

DarianLStephens commented 1 year ago

Is there a place for suggestions on the forge repo?

TropheusJ commented 1 year ago

the suggestion issue template

DarianLStephens commented 1 year ago

Alright, suggested! https://github.com/Creators-of-Create/Create/issues/4372

TropheusJ commented 1 year ago

Can you test the latest release?

Daniel366Cobra commented 1 year ago

Can you test the latest release?

tested in exactly similar setup with 0.5.0i-946, still starts draining when precisely 10000 blocks are provided and does not fill 1 block in a corner, leaving 9999.

jonask028 commented 1 year ago

Same issue on 1.19.2 on 0.5.0i-1003, but i've gone well over the 10000 block limit(161647 so 12032) and it still just takes source block after source block. Both with lava and water.

jonask028 commented 1 year ago

dropping the hose pully all the way to the bottom of the lava pit fixed the issue.

Crazyafk commented 11 months ago

Also having this issue. 1.19.2 0.5.0i-998, As part of the create astral 2.0.4(d) pack

Philbertz commented 6 months ago

Still having this issue in version create-fabric-0.5.1-d-build.1161+mc1.20.1

What I did: I created a big pit of 48 by 48 blocks (3 x 3 chunks). At 5 layers that would be more than 10k blocks. On top of pit I had a big fluid tank with a hose pully. I lowered the hose so that it was at the 5th layer of the pit. Then I started hauling lava from the nether with a train, pumping that into the tank, hosing it down into the pit.

It took me a while to notice that while my lava was disappearing, the hole was not getting fuller. When looking at the hose pully with goggles, it said "Bottomless Supply". So happily I reversed the pump and the fluid tank started filling up. The hose pulley was still saying "Bottomless Supply" so I thought I was in business. After playing for another few hours I noticed that my fluid tank was not full anymore. Pump was still spinning and the hose pulley was still saying "Bottomless Supply". When I went underground I saw that the hose had drained the top layer off my pit. Basically the pulley was lying to me.

Expected behavior for me would be that the hose pulley would keep adding blocks even if the filling is > 10k and fill out its top level. Then when pumping back up it should respect the "bottomless supply" indication regardless of at what height the hose end is as long as it is under the surface of the liquid.

drwoops commented 6 months ago

create 0.5.1d sodium 0.4.10 fabric api 0.88.1 iris 1.6.4 and indium 1.0.21

jonask028 commented 6 months ago

Make sure the pulley goes all the way to the bottom of the lava pool

Philbertz commented 6 months ago

So, to work around this: In the mod settings (while in world) you can change the number of blocks for an bottomless supply. So to get one, do these steps:

  1. Set the # of blocks higher
  2. fill your pit with the pulley (hose on the level where you will hit the # of blocks)
  3. When it stops filling, put pulley mouth all the way to the bottom
  4. Decrease the # of blocks again
  5. start pumping from your infinite source.