From 3b858df7ba39eeb50321babb2c03eabcf39e700e Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 15 Nov 2022 16:00:33 +0100 Subject: [PATCH] a tiny bit of fluid stuff --- .../TileEntityMachineLargeTurbine.java | 30 ++++++++++- .../machine/TileEntityMachineRadiolysis.java | 51 ++++++++++++++----- .../tileentity/machine/TileEntitySILEX.java | 2 - 3 files changed, 68 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 51694e40f..050d19aec 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.BlockDummyable; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -14,6 +15,7 @@ import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import cpw.mods.fml.relauncher.Side; @@ -23,7 +25,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator { +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver { public long power; public static final long maxPower = 100000000; @@ -64,6 +66,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); this.sendPower(worldObj, xCoord + dir.offsetX * -4, yCoord, zCoord + dir.offsetZ * -4, dir.getOpposite()); + for(DirPos pos : getConPos()) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); tanks[0].setType(0, 1, slots); tanks[0].loadTank(2, 3, slots); @@ -120,6 +123,16 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme } } + protected DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot), + new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), + new DirPos(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2, dir) + }; + } + public void networkUnpack(NBTTagCompound data) { this.power = data.getLong("power"); this.shouldTurn = data.getBoolean("operational"); @@ -243,4 +256,19 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0]}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index 76e67276d..75471e696 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -1,10 +1,9 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; -import com.hbm.blocks.BlockDummyable; +import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -20,19 +19,18 @@ import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.RTGUtil; import com.hbm.util.Tuple.Pair; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyGenerator, IFluidAcceptor, IFluidSource, IFluidContainer { +public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyGenerator, IFluidAcceptor, IFluidSource, IFluidContainer, IFluidStandardTransceiver { public long power; public static final int maxPower = 1000000; @@ -116,13 +114,6 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement if(power > maxPower) power = maxPower; - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - this.sendPower(worldObj, xCoord + 2, yCoord, zCoord, dir); - this.sendPower(worldObj, xCoord - 2, yCoord, zCoord, dir); - this.sendPower(worldObj, xCoord, yCoord, zCoord + 2, dir); - this.sendPower(worldObj, xCoord, yCoord, zCoord - 2, dir); - tanks[0].setType(10, 11, slots); setupTanks(); @@ -141,6 +132,13 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement fillFluidInit(tanks[2].getTankType()); } + for(DirPos pos : getConPos()) { + this.sendPower(worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + } + NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); data.setInteger("heat", heat); @@ -151,6 +149,15 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement } } + protected DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) + }; + } + /* Processing Methods */ private void crack() { @@ -322,6 +329,26 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement if(type == tanks[2].getTankType()) list2.clear(); } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1], tanks[2]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0]}; + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return dir != ForgeDirection.UNKNOWN && dir != ForgeDirection.DOWN; + } public AxisAlignedBB getRenderBoundingBox() { return AxisAlignedBB.getBoundingBox(xCoord - 1, yCoord, zCoord - 1, xCoord + 2, yCoord + 3, zCoord + 2); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java index f39b0734e..6593f7ad0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java @@ -1,8 +1,6 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.interfaces.IFluidAcceptor;