From a2eb3dfc0d19d5304b397bebc7763ab405068ec2 Mon Sep 17 00:00:00 2001 From: Kogepan229 Date: Mon, 10 Nov 2025 22:39:00 +0900 Subject: [PATCH] Update IOBus --- .../common/parts/PartFluidExportBus.java | 22 ++++-- .../common/parts/PartFluidImportBus.java | 78 +++++++++++-------- 2 files changed, 59 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidExportBus.java b/src/main/java/com/glodblock/github/common/parts/PartFluidExportBus.java index 2339d33c..793e9fff 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidExportBus.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidExportBus.java @@ -1,5 +1,7 @@ package com.glodblock.github.common.parts; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; @@ -15,6 +17,7 @@ import appeng.api.storage.StorageName; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IAEStackType; import appeng.me.GridAccessException; import appeng.parts.automation.PartBaseExportBus; import appeng.tile.inventory.IAEStackInventory; @@ -31,11 +34,6 @@ public class PartFluidExportBus extends PartBaseExportBus { return FCPartsTexture.PartFluidExportBus.getIcon(); } - @Override - protected int getAdaptorFlags() { - return InventoryAdaptor.DEFAULT & ~InventoryAdaptor.ALLOW_ITEMS; - } - @Override public int calculateAmountToSend() { double amount = 1000D; @@ -72,11 +70,16 @@ public class PartFluidExportBus extends PartBaseExportBus { } @Override - protected void doFuzzy(IAEFluidStack aes, FuzzyMode fzMode, InventoryAdaptor destination, IEnergyGrid energy, + protected int getAdaptorFlags() { + return InventoryAdaptor.DEFAULT & ~InventoryAdaptor.ALLOW_ITEMS; + } + + @Override + protected void doFuzzy(IAEFluidStack aes, FuzzyMode fzMode, IEnergyGrid energy, IMEMonitor gridInv) {} @Override - protected void doOreDict(InventoryAdaptor destination, IEnergyGrid energy, IMEMonitor gridInv) {} + protected void doOreDict(IEnergyGrid energy, IMEMonitor gridInv) {} // legacy @Override @@ -91,4 +94,9 @@ public class PartFluidExportBus extends PartBaseExportBus { } } } + + @Override + public IAEStackType getStackType() { + return FLUID_STACK_TYPE; + } } diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidImportBus.java b/src/main/java/com/glodblock/github/common/parts/PartFluidImportBus.java index e59f6e63..07eb671f 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidImportBus.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidImportBus.java @@ -1,16 +1,16 @@ package com.glodblock.github.common.parts; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; -import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; import com.glodblock.github.client.textures.FCPartsTexture; -import com.glodblock.github.util.BlockPos; import com.glodblock.github.util.Util; import appeng.api.config.Actionable; @@ -23,9 +23,11 @@ import appeng.api.storage.StorageName; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IAEStackType; import appeng.me.GridAccessException; import appeng.parts.automation.PartBaseImportBus; import appeng.tile.inventory.IAEStackInventory; +import appeng.util.InventoryAdaptor; import appeng.util.item.AEFluidStack; public class PartFluidImportBus extends PartBaseImportBus { @@ -41,18 +43,14 @@ public class PartFluidImportBus extends PartBaseImportBus { @Override protected Object getTarget() { - TileEntity self = this.getHost().getTile(); - return this.getTileEntity(self, (new BlockPos(self)).getOffSet(this.getSide())); - } + final TileEntity self = this.getHost().getTile(); + final TileEntity target = this.getTileEntity( + self, + self.xCoord + this.getSide().offsetX, + self.yCoord + this.getSide().offsetY, + self.zCoord + this.getSide().offsetZ); - private TileEntity getTileEntity(final TileEntity self, final BlockPos pos) { - final World w = self.getWorldObj(); - - if (w.getChunkProvider().chunkExists(pos.getX() >> 4, pos.getZ() >> 4)) { - return w.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); - } - - return null; + return target instanceof IFluidHandler handler ? handler : null; } @Override @@ -90,41 +88,48 @@ public class PartFluidImportBus extends PartBaseImportBus { } } + @Override + protected int getAdaptorFlags() { + return InventoryAdaptor.DEFAULT & ~InventoryAdaptor.ALLOW_ITEMS; + } + @Override protected boolean importStuff(final Object myTarget, final IAEFluidStack whatToImport, final IMEMonitor inv, final IEnergySource energy, final FuzzyMode fzMode) { - if (myTarget instanceof IFluidHandler fh) { - FluidTankInfo[] tanksInfo = fh.getTankInfo(this.getSide().getOpposite()); - if (tanksInfo == null) return true; + final IFluidHandler fh = (IFluidHandler) myTarget; - int maxDrain = this.calculateAmountToSend(); - boolean doBreak = true; + FluidTankInfo[] tanksInfo = fh.getTankInfo(this.getSide().getOpposite()); + if (tanksInfo == null) return true; - for (FluidTankInfo tankInfo : tanksInfo) { - if (tankInfo.fluid == null) continue; + int maxDrain = this.calculateAmountToSend(); - FluidStack fluidStack = new FluidStack(tankInfo.fluid, Math.min(tankInfo.fluid.amount, maxDrain)); - fluidStack = fh.drain(this.getSide().getOpposite(), fluidStack, false); - if (this.filterEnabled() && !this.isInFilter(fluidStack)) continue; + for (FluidTankInfo tankInfo : tanksInfo) { + if (tankInfo.fluid == null) continue; - final AEFluidStack aeFluidStack = AEFluidStack.create(fluidStack); - if (aeFluidStack != null) { - final IAEFluidStack notInserted = inv.injectItems(aeFluidStack, Actionable.MODULATE, this.mySrc); + FluidStack fluidStack = new FluidStack(tankInfo.fluid, Math.min(tankInfo.fluid.amount, maxDrain)); + fluidStack = fh.drain(this.getSide().getOpposite(), fluidStack, false); + if (this.filterEnabled() && !this.isInFilter(fluidStack)) continue; - if (notInserted != null && notInserted.getStackSize() > 0) { - aeFluidStack.decStackSize(notInserted.getStackSize()); - } + final AEFluidStack aeFluidStack = AEFluidStack.create(fluidStack); + if (aeFluidStack != null) { + final IAEFluidStack notInserted = inv.injectItems(aeFluidStack, Actionable.MODULATE, this.mySrc); - fh.drain(this.getSide().getOpposite(), aeFluidStack.getFluidStack(), true); - maxDrain -= aeFluidStack.getFluidStack().amount; - doBreak = false; + if (notInserted != null && notInserted.getStackSize() > 0) { + aeFluidStack.decStackSize(notInserted.getStackSize()); } - } - return doBreak; + FluidStack drained = fh.drain(this.getSide().getOpposite(), aeFluidStack.getFluidStack(), true); + if (drained.amount > 0) { + this.worked = true; + } + + maxDrain -= drained.amount; + if (maxDrain <= 0) break; + } } return true; + return true; } @Override @@ -173,4 +178,9 @@ public class PartFluidImportBus extends PartBaseImportBus { } } } + + @Override + public IAEStackType getStackType() { + return FLUID_STACK_TYPE; + } }