From dbce273e03ab942dfa7a0ce2b7be2eaf5bcb4776 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 9 Mar 2022 22:17:03 +0100 Subject: [PATCH] some more chemfac work, expanded fluid acceptor interface --- .../hbm/blocks/machine/MachineChemfac.java | 20 ++++++++++++ .../com/hbm/interfaces/IFluidAcceptor.java | 12 +++++++ src/main/java/com/hbm/lib/Library.java | 30 +++++++++--------- .../machine/TileEntityMachineChemfac.java | 20 ++++++++++++ .../hbm/textures/models/machines/chemfac.png | Bin 3333 -> 6406 bytes 5 files changed, 67 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachineChemfac.java b/src/main/java/com/hbm/blocks/machine/MachineChemfac.java index 6a0f5d8b3..b533df783 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineChemfac.java +++ b/src/main/java/com/hbm/blocks/machine/MachineChemfac.java @@ -6,6 +6,7 @@ import com.hbm.tileentity.machine.TileEntityMachineChemfac; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -41,5 +42,24 @@ public class MachineChemfac extends BlockDummyable { @Override public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + this.safeRem = true; + + for(int i = -3; i < 3; i++) { + this.makeExtra(world, x + rot.offsetX * 2 + dir.offsetX * i, y + 3, z + rot.offsetZ * 2 + dir.offsetZ * i); + this.makeExtra(world, x - rot.offsetX * 3 + dir.offsetX * i, y + 3, z - rot.offsetZ * 3 + dir.offsetZ * i); + + this.makeExtra(world, x + rot.offsetX * 3 + dir.offsetX * i, y + 1, z + rot.offsetZ * 3 + dir.offsetZ * i); + this.makeExtra(world, x + rot.offsetX * 3 + dir.offsetX * i, y + 2, z + rot.offsetZ * 3 + dir.offsetZ * i); + + this.makeExtra(world, x - rot.offsetX * 4 + dir.offsetX * i, y + 1, z - rot.offsetZ * 4 + dir.offsetZ * i); + this.makeExtra(world, x - rot.offsetX * 4 + dir.offsetX * i, y + 2, z - rot.offsetZ * 4 + dir.offsetZ * i); + } + + this.safeRem = false; } } diff --git a/src/main/java/com/hbm/interfaces/IFluidAcceptor.java b/src/main/java/com/hbm/interfaces/IFluidAcceptor.java index 89fc523f4..dcb749c85 100644 --- a/src/main/java/com/hbm/interfaces/IFluidAcceptor.java +++ b/src/main/java/com/hbm/interfaces/IFluidAcceptor.java @@ -5,4 +5,16 @@ import com.hbm.inventory.fluid.FluidType; public interface IFluidAcceptor extends IFluidContainer { int getMaxFluidFill(FluidType type); + + public default void setFluidFillForReceive(int fill, FluidType type) { + this.setFluidFill(fill, type); + } + + public default int getFluidFillForReceive(FluidType type) { + return this.getFluidFill(type); + } + + public default int getMaxFluidFillForReceive(FluidType type) { + return this.getMaxFluidFill(type); + } } diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index a1791721e..f9a3861bc 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -611,28 +611,28 @@ public class Library { } } - if(tileentity instanceof IFluidAcceptor && newTact && ((IFluidAcceptor)tileentity).getMaxFluidFill(type) > 0 && - ((IFluidAcceptor)tileentity).getMaxFluidFill(type) - ((IFluidAcceptor)tileentity).getFluidFill(type) > 0) { + if(tileentity instanceof IFluidAcceptor && newTact && ((IFluidAcceptor)tileentity).getMaxFluidFillForReceive(type) > 0 && + ((IFluidAcceptor)tileentity).getMaxFluidFillForReceive(type) - ((IFluidAcceptor)tileentity).getFluidFillForReceive(type) > 0) { that.getFluidList(type).add((IFluidAcceptor)tileentity); } - if(!newTact) - { + if(!newTact) { int size = that.getFluidList(type).size(); - if(size > 0) - { + + if(size > 0) { int part = that.getFluidFill(type) / size; - for(IFluidAcceptor consume : that.getFluidList(type)) - { - if(consume.getFluidFill(type) < consume.getMaxFluidFill(type)) - { - if(consume.getMaxFluidFill(type) - consume.getFluidFill(type) >= part) - { + + for(IFluidAcceptor consume : that.getFluidList(type)) { + + if(consume.getFluidFillForReceive(type) < consume.getMaxFluidFillForReceive(type)) { + + if(consume.getMaxFluidFillForReceive(type) - consume.getFluidFillForReceive(type) >= part) { that.setFluidFill(that.getFluidFill(type) - part, type); - consume.setFluidFill(consume.getFluidFill(type) + part, type); + consume.setFluidFillForReceive(consume.getFluidFillForReceive(type) + part, type); + } else { - that.setFluidFill(that.getFluidFill(type) - (consume.getMaxFluidFill(type) - consume.getFluidFill(type)), type); - consume.setFluidFill(consume.getMaxFluidFill(type), type); + that.setFluidFill(that.getFluidFill(type) - (consume.getMaxFluidFillForReceive(type) - consume.getFluidFillForReceive(type)), type); + consume.setFluidFillForReceive(consume.getMaxFluidFillForReceive(type), type); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 4eaa15658..c386e4b72 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -6,6 +6,7 @@ import java.util.List; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.fluid.FluidType; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChunkCoordinates; public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { @@ -78,4 +79,23 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { public String getName() { return "container.machineChemFac"; } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 5, + yCoord, + zCoord - 5, + xCoord + 5, + yCoord + 4, + zCoord + 5 + ); + } + + return bb; + } } diff --git a/src/main/resources/assets/hbm/textures/models/machines/chemfac.png b/src/main/resources/assets/hbm/textures/models/machines/chemfac.png index 2b251a41c6f890927677fabf8def8879bdcfbc9d..a8e3f5ba1408c348311e07c26512f4ce9119ef98 100644 GIT binary patch literal 6406 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 C6(~jk