Create

Create

105M Downloads

Supplementaries x Create Pipes (Exploit) [Infinite Lumisene]

Looxond opened this issue ยท 4 comments

commented

Description

In the latest update in supplementaries, a liquid was added known as lumisene which behaves quite different from regular liquids as a result of such strange behavior, this happens if you try to gather it using pipes.

Minecraft_.Forge.1.20.1.-.Singleplayer.2024-11-14.23-28-31.mp4

Extra log just in case: https://mclo.gs/xM9czzV

Game Log

https://mclo.gs/7aZ2Mzd

Debug Information

No response

commented

Would you be able to explain how this fluid normally should act like? As in what it's mechanics are since i feel like there's some context missing here

commented

tldr: its a finite fluid with 16 layers

Not really sure what this issue is about or where it comes from exactly

commented

maybe create is only supposed to extract source blocks and when it loses a layer, it breaks the pump? or some other thing w/ compatibility issues.

commented

Immediate infinite dupe happens here, this is used to clear the fluid:

world.setBlock(outputPos, fluidState.createLegacyBlock()
.setValue(LiquidBlock.LEVEL, 14), 3);
return stack;

Which due to lumisene's implementation of createLegacyBlock just keeps placing lumisene with 2 levels left.
https://github.com/MehVahdJukaar/Supplementaries/blob/68b8224e34f07c2df5d7efbd91338f5126b69df9/common/src/main/java/net/mehvahdjukaar/supplementaries/common/fluids/FiniteFluid.java#L264-L273

Is there an underlying reason a fluid with level 0 is placed (intended to be placed, in this case), rather than something like air?

Also, Create's pump doesn't know how to place lumisene either, as lumisene isn't an instance of FlowingFluid and thus exits early:

if (!(fluid.getFluid() instanceof FlowingFluid))
return false;

Additionally, with the finiteness of lumisene, pumping should take into account how many layers of lumisene there actually are instead of always using 1000 as there'd still be a dupe otherwise. 1000/16 = 62.5 though so maybe that needs to be restricted to only even levels. Taking layers into account is only really relevant for pumping from the world, pumping into the world checks whether the output space has a source fluid, which lumisene always is, so there already is no adding layers onto it.