From c9ba859d343ee568a91b43ab1e73b32a3835f47b Mon Sep 17 00:00:00 2001 From: asdflj <854865755@qq.com> Date: Sun, 18 Dec 2022 15:04:59 +0800 Subject: [PATCH] fix fluid buffer bug --- dependencies.gradle | 2 +- .../github/common/block/BlockFluidBuffer.java | 3 +- .../github/common/tile/TileFluidBuffer.java | 39 +++++++------------ .../waila/tile/FluidInvWailaDataProvider.java | 4 ++ 4 files changed, 20 insertions(+), 28 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index b81df083..35ddf8d5 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -2,7 +2,7 @@ dependencies { compile('com.github.GTNewHorizons:NotEnoughItems:2.3.10-GTNH:dev') - compile('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-121-GTNH:dev') + compile('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-127-GTNH:dev') compile('curse.maven:cofh-core-69162:2388751') compile('com.github.GTNewHorizons:waila:1.5.22:dev') compileOnly('com.github.GTNewHorizons:ExtraCells2:2.5.25:dev') { transitive = false } diff --git a/src/main/java/com/glodblock/github/common/block/BlockFluidBuffer.java b/src/main/java/com/glodblock/github/common/block/BlockFluidBuffer.java index 80a4ba8d..93a258f4 100644 --- a/src/main/java/com/glodblock/github/common/block/BlockFluidBuffer.java +++ b/src/main/java/com/glodblock/github/common/block/BlockFluidBuffer.java @@ -37,6 +37,7 @@ public class BlockFluidBuffer extends FCBaseBlock { if (Platform.isServer()) { TileFluidBuffer tile = getTileEntity(world, x, y, z); if (tile == null) return false; + if(player.isSneaking() && itemStack == null) return !tile.setFluid(null); IAEFluidStack ias = tile.getAEStoreFluidStack(); if (fs == null && ias != null) { player.addChatMessage(new ChatComponentText( @@ -47,7 +48,7 @@ public class BlockFluidBuffer extends FCBaseBlock { return true; } } - return fs != null; + return fs != null || (player.isSneaking() && itemStack == null); } public BlockFluidBuffer register() { diff --git a/src/main/java/com/glodblock/github/common/tile/TileFluidBuffer.java b/src/main/java/com/glodblock/github/common/tile/TileFluidBuffer.java index d917280c..02ac6d13 100644 --- a/src/main/java/com/glodblock/github/common/tile/TileFluidBuffer.java +++ b/src/main/java/com/glodblock/github/common/tile/TileFluidBuffer.java @@ -31,7 +31,7 @@ import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; public class TileFluidBuffer extends AENetworkTile - implements IAEFluidInventory, IFluidHandler, IPowerChannelState, IGridTickable { + implements IAEFluidInventory, IFluidHandler, IPowerChannelState { private final AEFluidInventory invFluids = new AEFluidInventory(this, 1, Integer.MAX_VALUE); private final BaseActionSource source; @@ -44,10 +44,6 @@ public class TileFluidBuffer extends AENetworkTile } public boolean setFluid(FluidStack fs) { - return this.setFluid(fs, Actionable.MODULATE); - } - - public boolean setFluid(FluidStack fs, Actionable actionable) { if (fs == null) { this.invFluids.setFluidInSlot(0, null); return false; @@ -58,7 +54,7 @@ public class TileFluidBuffer extends AENetworkTile .getFluidInventory() .getStorageList() .findPrecise(AEFluidStack.create(fs)); - if (actionable == Actionable.MODULATE) this.invFluids.setFluidInSlot(0, ias); + this.invFluids.setFluidInSlot(0, ias); if (ias != null) return true; } catch (final GridAccessException e) { // :P @@ -89,7 +85,12 @@ public class TileFluidBuffer extends AENetworkTile @Override public FluidStack drain(ForgeDirection forgeDirection, FluidStack fluidStack, boolean b) { - return this.drainFluid(fluidStack, b ? Actionable.MODULATE : Actionable.SIMULATE); + FluidStack fs = this.getFluidStack(); + if(fs != null && fs.getFluid() == fluidStack.getFluid()){ + return this.drainFluid(fluidStack, b ? Actionable.MODULATE : Actionable.SIMULATE); + }else { + return null; + } } public FluidStack drainFluid(FluidStack fs, Actionable actionable) { @@ -227,24 +228,10 @@ public class TileFluidBuffer extends AENetworkTile public AEFluidInventory getInternalFluid() { return this.invFluids; } - - @Override - public TickingRequest getTickingRequest(IGridNode node) { - return new TickingRequest(40, 120, false, true); - } - - @Override - public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) { - return this.canDoBusWork() ? this.doWork() : TickRateModulation.IDLE; - } - - private TickRateModulation doWork() { - return this.setFluid(this.getFluidStack(), Actionable.SIMULATE) - ? TickRateModulation.SLOWER - : TickRateModulation.FASTER; - } - - private boolean canDoBusWork() { - return this.getProxy().isActive(); + public void updateFluidStore(){ + IAEFluidStack iaf = this.getAEStoreFluidStack(); + if(iaf != null){ + this.invFluids.setFluidInSlot(0,iaf); + } } } diff --git a/src/main/java/com/glodblock/github/crossmod/waila/tile/FluidInvWailaDataProvider.java b/src/main/java/com/glodblock/github/crossmod/waila/tile/FluidInvWailaDataProvider.java index 2d432e28..26befc36 100644 --- a/src/main/java/com/glodblock/github/crossmod/waila/tile/FluidInvWailaDataProvider.java +++ b/src/main/java/com/glodblock/github/crossmod/waila/tile/FluidInvWailaDataProvider.java @@ -2,6 +2,7 @@ package com.glodblock.github.crossmod.waila.tile; import appeng.integration.modules.waila.BaseWailaDataProvider; import com.glodblock.github.common.item.ItemFluidPacket; +import com.glodblock.github.common.tile.TileFluidBuffer; import com.glodblock.github.common.tile.TileFluidInterface; import com.glodblock.github.common.tile.TileFluidPacketDecoder; import com.glodblock.github.crossmod.waila.Tooltip; @@ -73,6 +74,9 @@ public class FluidInvWailaDataProvider extends BaseWailaDataProvider { final int x, final int y, final int z) { + if(te instanceof TileFluidBuffer){ + ((TileFluidBuffer) te).updateFluidStore(); + } if (te instanceof IAEFluidInventory) { ((IAEFluidInventory) te).getInternalFluid().writeToNBT(tag, "fluidInv"); } else if (te instanceof TileFluidPacketDecoder) {