From a71d7972ec8f168bf0af7e9e637cc06519b65cbc Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 14 May 2023 17:51:35 +0200 Subject: [PATCH] fluid pressure stat --- .../java/api/hbm/fluid/IFluidConductor.java | 4 +- .../java/api/hbm/fluid/IFluidConnector.java | 4 +- .../api/hbm/fluid/IFluidStandardReceiver.java | 8 +- .../api/hbm/fluid/IFluidStandardSender.java | 12 +- .../hbm/fluid/IFluidStandardTransceiver.java | 8 +- src/main/java/api/hbm/fluid/IFluidUser.java | 26 ++-- src/main/java/api/hbm/fluid/IPipeNet.java | 2 +- src/main/java/api/hbm/fluid/PipeNet.java | 10 +- .../hbm/commands/CommandDebugChunkLoad.java | 112 ++++++++++++++++++ .../hbm/entity/train/EntityRailCarBase.java | 8 +- .../entity/train/EntityRailCarRidable.java | 47 +++++++- .../com/hbm/entity/train/TrainCargoTram.java | 2 +- .../com/hbm/handler/nei/CokingHandler.java | 11 ++ .../hbm/handler/nei/CombinationHandler.java | 11 ++ .../hbm/inventory/fluid/tank/FluidTank.java | 20 ++++ src/main/java/com/hbm/main/MainRegistry.java | 2 + .../hbm/tileentity/TileEntityProxyCombo.java | 8 +- .../tileentity/machine/TileEntityChungus.java | 2 +- .../machine/TileEntityCondenser.java | 2 +- .../machine/TileEntityCoreEmitter.java | 36 +----- .../machine/TileEntityDeuteriumExtractor.java | 2 +- .../machine/TileEntityDeuteriumTower.java | 11 +- .../machine/TileEntityFurnaceCombination.java | 4 +- .../machine/TileEntityHeatBoiler.java | 2 +- .../machine/TileEntityHeaterHeatex.java | 2 +- .../tileentity/machine/TileEntityITER.java | 2 +- .../machine/TileEntityMachineAssemfac.java | 2 +- .../machine/TileEntityMachineBoiler.java | 2 +- .../TileEntityMachineBoilerElectric.java | 2 +- .../machine/TileEntityMachineChemfac.java | 62 +--------- .../machine/TileEntityMachineChemplant.java | 4 +- .../TileEntityMachineChemplantBase.java | 71 +++-------- .../machine/TileEntityMachineCyclotron.java | 2 +- .../machine/TileEntityMachineHephaestus.java | 2 +- .../TileEntityMachineLargeTurbine.java | 2 +- .../machine/TileEntityMachineMiningLaser.java | 8 +- .../machine/TileEntityMachineMixer.java | 2 +- .../machine/TileEntityMachineRadiolysis.java | 4 +- .../TileEntityMachineReactorLarge.java | 6 +- .../machine/TileEntityMachineTurbine.java | 2 +- .../machine/TileEntityMachineTurbineGas.java | 2 +- .../machine/TileEntityMachineTurbofan.java | 2 +- .../machine/TileEntityReactorZirnox.java | 2 +- .../machine/TileEntitySolarBoiler.java | 4 +- .../machine/TileEntitySteamEngine.java | 2 +- .../machine/TileEntityStorageDrum.java | 4 +- .../machine/TileEntityTowerLarge.java | 8 +- .../machine/TileEntityTowerSmall.java | 10 +- .../tileentity/machine/TileEntityWatz.java | 4 +- .../machine/TileEntityWatzCore.java | 8 +- .../TileEntityMachineCatalyticCracker.java | 2 +- .../TileEntityMachineCatalyticReformer.java | 2 +- .../machine/oil/TileEntityMachineCoker.java | 2 +- .../oil/TileEntityMachineFractionTower.java | 4 +- .../oil/TileEntityMachineLiquefactor.java | 2 +- .../oil/TileEntityMachineRefinery.java | 2 +- .../oil/TileEntityMachineVacuumDistill.java | 2 +- .../machine/oil/TileEntityOilDrillBase.java | 4 +- .../machine/rbmk/TileEntityRBMKBoiler.java | 2 +- .../machine/rbmk/TileEntityRBMKHeater.java | 2 +- .../machine/rbmk/TileEntityRBMKOutgasser.java | 2 +- .../machine/rbmk/TileEntityRBMKOutlet.java | 2 +- .../machine/storage/TileEntityBarrel.java | 8 +- .../storage/TileEntityMachineFluidTank.java | 10 +- .../network/TileEntityPipeBaseNT.java | 6 +- .../java/com/hbm/wiaj/cannery/Dummies.java | 4 +- .../processing/gui_furnace_combination.png | Bin 6228 -> 6931 bytes 67 files changed, 357 insertions(+), 274 deletions(-) create mode 100644 src/main/java/com/hbm/commands/CommandDebugChunkLoad.java diff --git a/src/main/java/api/hbm/fluid/IFluidConductor.java b/src/main/java/api/hbm/fluid/IFluidConductor.java index 95ae30766..d9d1e00c7 100644 --- a/src/main/java/api/hbm/fluid/IFluidConductor.java +++ b/src/main/java/api/hbm/fluid/IFluidConductor.java @@ -9,11 +9,11 @@ public interface IFluidConductor extends IFluidConnector { public void setPipeNet(FluidType type, IPipeNet network); @Override - public default long transferFluid(FluidType type, long amount) { + public default long transferFluid(FluidType type, int pressure, long amount) { if(this.getPipeNet(type) == null) return amount; - return this.getPipeNet(type).transferFluid(amount); + return this.getPipeNet(type).transferFluid(amount, pressure); } } diff --git a/src/main/java/api/hbm/fluid/IFluidConnector.java b/src/main/java/api/hbm/fluid/IFluidConnector.java index 634412cbf..a47b56def 100644 --- a/src/main/java/api/hbm/fluid/IFluidConnector.java +++ b/src/main/java/api/hbm/fluid/IFluidConnector.java @@ -17,7 +17,7 @@ public interface IFluidConnector { * @param power * @return */ - public long transferFluid(FluidType type, long fluid); + public long transferFluid(FluidType type, int pressure, long fluid); /** * Whether the given side can be connected to @@ -33,7 +33,7 @@ public interface IFluidConnector { * @param type * @return */ - public long getDemand(FluidType type); + public long getDemand(FluidType type, int pressure); /** * Basic implementation of subscribing to a nearby power grid diff --git a/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java index e60aca9cd..dc7151daf 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java @@ -14,10 +14,10 @@ import com.hbm.inventory.fluid.tank.FluidTank; public interface IFluidStandardReceiver extends IFluidUser { @Override - public default long transferFluid(FluidType type, long amount) { + public default long transferFluid(FluidType type, int pressure, long amount) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() + (int) amount); if(tank.getFill() > tank.getMaxFill()) { @@ -36,10 +36,10 @@ public interface IFluidStandardReceiver extends IFluidUser { public FluidTank[] getReceivingTanks(); @Override - public default long getDemand(FluidType type) { + public default long getDemand(FluidType type, int pressure) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getMaxFill() - tank.getFill(); } } diff --git a/src/main/java/api/hbm/fluid/IFluidStandardSender.java b/src/main/java/api/hbm/fluid/IFluidStandardSender.java index 46baee9da..57b587370 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardSender.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardSender.java @@ -16,10 +16,10 @@ public interface IFluidStandardSender extends IFluidUser { public FluidTank[] getSendingTanks(); @Override - public default long getTotalFluidForSend(FluidType type) { + public default long getTotalFluidForSend(FluidType type, int pressure) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getFill(); } } @@ -28,10 +28,10 @@ public interface IFluidStandardSender extends IFluidUser { } @Override - public default void removeFluidForTransfer(FluidType type, long amount) { + public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() - (int) amount); return; } @@ -39,12 +39,12 @@ public interface IFluidStandardSender extends IFluidUser { } @Override - public default long transferFluid(FluidType type, long fluid) { + public default long transferFluid(FluidType type, int pressure, long fluid) { return fluid; } @Override - public default long getDemand(FluidType type) { + public default long getDemand(FluidType type, int pressure) { return 0; } } diff --git a/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java b/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java index 4cbe6b0a4..eb7092ad8 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java @@ -23,7 +23,7 @@ public interface IFluidStandardTransceiver extends IFluidUser { public FluidTank[] getReceivingTanks(); @Override - public default long getTotalFluidForSend(FluidType type) { + public default long getTotalFluidForSend(FluidType type, int pressure) { for(FluidTank tank : getSendingTanks()) { if(tank.getTankType() == type) { @@ -35,7 +35,7 @@ public interface IFluidStandardTransceiver extends IFluidUser { } @Override - public default void removeFluidForTransfer(FluidType type, long amount) { + public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { for(FluidTank tank : getSendingTanks()) { if(tank.getTankType() == type) { @@ -46,7 +46,7 @@ public interface IFluidStandardTransceiver extends IFluidUser { } @Override - public default long getDemand(FluidType type) { + public default long getDemand(FluidType type, int pressure) { for(FluidTank tank : getReceivingTanks()) { if(tank.getTankType() == type) { @@ -58,7 +58,7 @@ public interface IFluidStandardTransceiver extends IFluidUser { } @Override - public default long transferFluid(FluidType type, long amount) { + public default long transferFluid(FluidType type, int pressure, long amount) { for(FluidTank tank : getReceivingTanks()) { if(tank.getTankType() == type) { diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java index 2a181f99c..7c4a36a92 100644 --- a/src/main/java/api/hbm/fluid/IFluidUser.java +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -13,7 +13,11 @@ import net.minecraftforge.common.util.ForgeDirection; public interface IFluidUser extends IFluidConnector { - public default void sendFluid(FluidType type, World world, int x, int y, int z, ForgeDirection dir) { + public default void sendFluid(FluidTank tank, World world, int x, int y, int z, ForgeDirection dir) { + sendFluid(tank.getTankType(), tank.getPressure(), world, x, y, z, dir); + } + + public default void sendFluid(FluidType type, int pressure, World world, int x, int y, int z, ForgeDirection dir) { TileEntity te = world.getTileEntity(x, y, z); boolean wasSubscribed = false; @@ -32,9 +36,9 @@ public interface IFluidUser extends IFluidConnector { IFluidConnector con = (IFluidConnector) te; if(con.canConnect(type, dir.getOpposite())) { - long toSend = this.getTotalFluidForSend(type); - long transfer = toSend - con.transferFluid(type, toSend); - this.removeFluidForTransfer(type, transfer); + long toSend = this.getTotalFluidForSend(type, pressure); + long transfer = toSend - con.transferFluid(type, pressure, toSend); + this.removeFluidForTransfer(type, pressure, transfer); red = true; } } @@ -77,15 +81,21 @@ public interface IFluidUser extends IFluidConnector { return null; } - public default void sendFluidToAll(FluidType type, TileEntity te) { + /** Use more common conPos method instead */ + @Deprecated public default void sendFluidToAll(FluidTank tank, TileEntity te) { + sendFluidToAll(tank.getTankType(), tank.getPressure(), te); + } + + /** Use more common conPos method instead */ + @Deprecated public default void sendFluidToAll(FluidType type, int pressure, TileEntity te) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - sendFluid(type, te.getWorldObj(), te.xCoord + dir.offsetX, te.yCoord + dir.offsetY, te.zCoord + dir.offsetZ, dir); + sendFluid(type, pressure, te.getWorldObj(), te.xCoord + dir.offsetX, te.yCoord + dir.offsetY, te.zCoord + dir.offsetZ, dir); } } - public default long getTotalFluidForSend(FluidType type) { return 0; } - public default void removeFluidForTransfer(FluidType type, long amount) { } + public default long getTotalFluidForSend(FluidType type, int pressure) { return 0; } + public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { } public default void subscribeToAllAround(FluidType type, TileEntity te) { subscribeToAllAround(type, te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord); diff --git a/src/main/java/api/hbm/fluid/IPipeNet.java b/src/main/java/api/hbm/fluid/IPipeNet.java index 442ec3a33..45e67b017 100644 --- a/src/main/java/api/hbm/fluid/IPipeNet.java +++ b/src/main/java/api/hbm/fluid/IPipeNet.java @@ -24,7 +24,7 @@ public interface IPipeNet { public boolean isValid(); - public long transferFluid(long fill); + public long transferFluid(long fill, int pressure); public FluidType getType(); public BigInteger getTotalTransfer(); } diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java index 1b3d46f5d..09b63d4f5 100644 --- a/src/main/java/api/hbm/fluid/PipeNet.java +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -85,7 +85,7 @@ public class PipeNet implements IPipeNet { } @Override - public long transferFluid(long fill) { + public long transferFluid(long fill, int pressure) { this.subscribers.removeIf(x -> x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() @@ -97,16 +97,16 @@ public class PipeNet implements IPipeNet { trackingInstances = new ArrayList(); trackingInstances.add(this); List subList = new ArrayList(subscribers); - return fairTransfer(subList, type, fill); + return fairTransfer(subList, type, pressure, fill); } - public static long fairTransfer(List subList, FluidType type, long fill) { + public static long fairTransfer(List subList, FluidType type, int pressure, long fill) { List weight = new ArrayList(); long totalReq = 0; for(IFluidConnector con : subList) { - long req = con.getDemand(type); + long req = con.getDemand(type, pressure); weight.add(req); totalReq += req; } @@ -123,7 +123,7 @@ public class PipeNet implements IPipeNet { long given = (long) Math.floor(fraction * fill); - totalGiven += (given - con.transferFluid(type, given)); + totalGiven += (given - con.transferFluid(type, pressure, given)); } if(trackingInstances != null) { diff --git a/src/main/java/com/hbm/commands/CommandDebugChunkLoad.java b/src/main/java/com/hbm/commands/CommandDebugChunkLoad.java new file mode 100644 index 000000000..ac10eae4d --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandDebugChunkLoad.java @@ -0,0 +1,112 @@ +package com.hbm.commands; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.chunk.storage.AnvilChunkLoader; +import net.minecraft.world.chunk.storage.IChunkLoader; +import net.minecraft.world.gen.ChunkProviderServer; + +public class CommandDebugChunkLoad extends CommandBase { + + @Override + public String getCommandName() { + return "ntmloadchunk"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/ntmloadchunk "; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if(args.length != 2) { + return; + } + + int x = this.parseInt(sender, args[0]); + int z = this.parseInt(sender, args[1]); + + IChunkProvider prov = sender.getEntityWorld().getChunkProvider(); + if(prov instanceof ChunkProviderServer) { + ChunkProviderServer serv = (ChunkProviderServer) prov; + IChunkLoader loader = serv.currentChunkLoader; + + if(loader instanceof AnvilChunkLoader) { + AnvilChunkLoader anvil = (AnvilChunkLoader) loader; + + try { + int cX = x >> 4; + int cZ = z >> 4; + + if(prov.chunkExists(cX, cZ)) { + Chunk chunk = sender.getEntityWorld().getChunkFromChunkCoords(cX, cZ); + if(chunk.isChunkLoaded) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Chunk currently loaded.")); + return; + } + } + + Object[] data = anvil.loadChunk__Async(sender.getEntityWorld(), cX, cZ); + Chunk chunk = (Chunk) data[0]; + NBTTagCompound nbt = (NBTTagCompound) data[1]; + NBTTagCompound level = nbt.getCompoundTag("Level"); + NBTTagList tagList = level.getTagList("TileEntities", 10); + + if(tagList != null) { + + if(tagList.tagCount() <= 0) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Tag list empty")); + } + + for(int i1 = 0; i1 < tagList.tagCount(); ++i1) { + NBTTagCompound tileCompound = tagList.getCompoundTagAt(i1); + int tX = tileCompound.getInteger("x"); + int tY = tileCompound.getInteger("y"); + int tZ = tileCompound.getInteger("z"); + String name = tileCompound.getString("id"); + + int i = tX - cX * 16; + int j = tY; + int k = tZ - cZ * 16; + + EnumChatFormatting color = EnumChatFormatting.GREEN; + + if(i < 0 || i > 15 || j < 0 || j > 255 || k < 0 || k > 15) { + color = EnumChatFormatting.RED; + } + + sender.addChatMessage(new ChatComponentText(color + name + " " + i + " " + j + " " + k)); + + if(i < 0 || i > 15 || j < 0 || j > 255 || k < 0 || k > 15) { + tileCompound.setString("id", "INVALID_POS_" + name); + + NBTTagCompound nbttagcompound = new NBTTagCompound(); + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound.setTag("Level", nbttagcompound1); + // anvil.writeChunkToNBT(chunk, sender.getEntityWorld(), nbttagcompound1); + // anvil.addChunkToPending(chunk.getChunkCoordIntPair(), nbttagcompound); + } + } + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Tag list null")); + } + + } catch(Exception e) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "" + e.getLocalizedMessage())); + } + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Not AnvilChunkLoader")); + } + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Not ChunkProviderServer")); + } + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index f2a502e69..008ed2e78 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -41,7 +41,7 @@ public abstract class EntityRailCarBase extends Entity { @Override protected void readEntityFromNBT(NBTTagCompound nbt) { } @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } - @Override + /*@Override public boolean canBePushed() { return true; } @@ -49,7 +49,7 @@ public abstract class EntityRailCarBase extends Entity { @Override public boolean canBeCollidedWith() { return !this.isDead; - } + }*/ @Override public void onUpdate() { @@ -260,7 +260,7 @@ public abstract class EntityRailCarBase extends Entity { } @Override protected void entityInit() { - this.dataWatcher.addObject(3, new Integer(1)); + this.dataWatcher.addObject(3, new Integer(0)); this.dataWatcher.addObject(4, new Float(1F)); this.dataWatcher.addObject(5, new Float(1F)); } @@ -276,7 +276,7 @@ public abstract class EntityRailCarBase extends Entity { @Override public void onUpdate() { if(!worldObj.isRemote) { - if(this.train.isDead) { + if(this.train == null || this.train.isDead) { this.setDead(); } } else { diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java index 084beef8a..1725275b8 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -2,6 +2,8 @@ package com.hbm.entity.train; import com.hbm.util.BobMathUtil; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -72,7 +74,7 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo { if(nearestSeat == -1) { player.mountEntity(this); } else { - SeatDummyEntity dummySeat = new SeatDummyEntity(worldObj); + SeatDummyEntity dummySeat = new SeatDummyEntity(worldObj, this); Vec3 passengerSeat = this.getPassengerSeats()[nearestSeat]; passengerSeat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); double x = posX + passengerSeat.xCoord; @@ -108,7 +110,6 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo { double y = posY + rot.yCoord; double z = posZ + rot.zCoord; seat.setPosition(x, y - 1, z); - seat.updateRiderPosition(); } } } @@ -133,11 +134,51 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo { /** Dynamic seats generated when a player clicks near a seat-spot, moves and rotates with the train as one would expect. */ public static class SeatDummyEntity extends Entity { + + private int turnProgress; + private double trainX; + private double trainY; + private double trainZ; + public EntityRailCarBase train; + public SeatDummyEntity(World world) { super(world); this.setSize(0.5F, 0.1F);} - @Override protected void entityInit() { } + public SeatDummyEntity(World world, EntityRailCarBase train) { + this(world); + this.train = train; + if(train != null) this.dataWatcher.updateObject(3, train.getEntityId()); + } + + @Override protected void entityInit() { this.dataWatcher.addObject(3, new Integer(0)); } @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } @Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); } + + @Override public void onUpdate() { + if(!worldObj.isRemote) { + if(this.train == null || this.train.isDead) { + this.setDead(); + } + } else { + + if(this.turnProgress > 0) { + this.prevRotationYaw = this.rotationYaw; + double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress; + double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress; + double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress; + --this.turnProgress; + this.setPosition(x, y, z); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + } + } + + @Override @SideOnly(Side.CLIENT) public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) { + this.trainX = posX; + this.trainY = posY; + this.trainZ = posZ; + this.turnProgress = turnProg + 2; + } @Override public void updateRiderPosition() { diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index c88d6b35c..46981be68 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -30,7 +30,7 @@ public class TrainCargoTram extends EntityRailCarRidable implements IGUIProvider public TrainCargoTram(World world) { super(world); - this.setSize(1F, 1F); + this.setSize(5F, 2F); } public double speed = 0; diff --git a/src/main/java/com/hbm/handler/nei/CokingHandler.java b/src/main/java/com/hbm/handler/nei/CokingHandler.java index da3cb101d..a0227147e 100644 --- a/src/main/java/com/hbm/handler/nei/CokingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CokingHandler.java @@ -1,6 +1,9 @@ package com.hbm.handler.nei; +import java.awt.Rectangle; + import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIMachineCoker; import com.hbm.inventory.recipes.CokerRecipes; public class CokingHandler extends NEIUniversalHandler { @@ -13,4 +16,12 @@ public class CokingHandler extends NEIUniversalHandler { public String getKey() { return "ntmCoking"; } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(55, 15, 36, 18), "ntmCoking")); + guiGui.add(GUIMachineCoker.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } } diff --git a/src/main/java/com/hbm/handler/nei/CombinationHandler.java b/src/main/java/com/hbm/handler/nei/CombinationHandler.java index 8537c12b0..0c07afbbc 100644 --- a/src/main/java/com/hbm/handler/nei/CombinationHandler.java +++ b/src/main/java/com/hbm/handler/nei/CombinationHandler.java @@ -1,6 +1,9 @@ package com.hbm.handler.nei; +import java.awt.Rectangle; + import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIFurnaceCombo; import com.hbm.inventory.recipes.CombinationRecipes; public class CombinationHandler extends NEIUniversalHandler { @@ -13,4 +16,12 @@ public class CombinationHandler extends NEIUniversalHandler { public String getKey() { return "ntmCombination"; } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(49, 44, 18, 18), "ntmCombination")); + guiGui.add(GUIFurnaceCombo.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 5d67bb325..ce98e9579 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -19,6 +19,7 @@ import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; public class FluidTank { @@ -34,12 +35,18 @@ public class FluidTank { int fluid; int maxFluid; public int index = 0; + int pressure = 0; public FluidTank(FluidType type, int maxFluid) { this.type = type; this.maxFluid = maxFluid; } + public FluidTank withPressure(int pressure) { + this.pressure = pressure; + return this; + } + @Deprecated // indices are no longer needed public FluidTank(FluidType type, int maxFluid, int index) { this.type = type; @@ -76,6 +83,10 @@ public class FluidTank { return maxFluid; } + public int getPressure() { + return pressure; + } + public int changeTankSize(int size) { maxFluid = size; @@ -108,6 +119,8 @@ public class FluidTank { if(slots[in] == null) return false; + if(this.pressure != 0) return false; //for now, canisters can only be loaded from high-pressure tanks, not unloaded + int prev = this.getFill(); for(FluidLoadingHandler handler : loadingHandlers) { @@ -223,6 +236,10 @@ public class FluidTank { list.add(I18n.format(this.type.getUnlocalizedName())); list.add(fluid + "/" + maxFluid + "mB"); + if(this.pressure != 0) { + list.add(EnumChatFormatting.RED + "" + this.pressure + "mB/l"); + } + type.addInfo(list); gui.drawInfo(list.toArray(new String[0]), mouseX, mouseY); } @@ -233,6 +250,7 @@ public class FluidTank { nbt.setInteger(s, fluid); nbt.setInteger(s + "_max", maxFluid); nbt.setInteger(s + "_type", type.getID()); + nbt.setShort(s + "_p", (short) pressure); } //Called by TE to load fillstate @@ -245,6 +263,8 @@ public class FluidTank { type = Fluids.fromName(nbt.getString(s + "_type")); //compat if(type == Fluids.NONE) type = Fluids.fromID(nbt.getInteger(s + "_type")); + + this.pressure = nbt.getShort(s + "_p"); } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index d2806ca03..acaadd51d 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -47,6 +47,7 @@ import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockToolConversion; +import com.hbm.commands.CommandDebugChunkLoad; import com.hbm.commands.CommandReloadRecipes; import com.hbm.config.*; import com.hbm.crafting.RodRecipes; @@ -895,6 +896,7 @@ public class MainRegistry { RBMKDials.createDials(world); SiegeOrchestrator.createGameRules(world); event.registerServerCommand(new CommandReloadRecipes()); + event.registerServerCommand(new CommandDebugChunkLoad()); } @EventHandler diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index 4a1786e53..c4b8404d3 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -427,25 +427,25 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy } @Override - public long transferFluid(FluidType type, long fluid) { + public long transferFluid(FluidType type, int pressure, long fluid) { if(!this.fluid) return fluid; if(getTile() instanceof IFluidConnector) { - return ((IFluidConnector)getTile()).transferFluid(type, fluid); + return ((IFluidConnector)getTile()).transferFluid(type, pressure, fluid); } return fluid; } @Override - public long getDemand(FluidType type) { + public long getDemand(FluidType type, int pressure) { if(!this.fluid) return 0; if(getTile() instanceof IFluidConnector) { - return ((IFluidConnector)getTile()).getDemand(type); + return ((IFluidConnector)getTile()).getDemand(type, pressure); } return 0; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index fdc95bc0e..4a0226d96 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -81,7 +81,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc this.sendPower(worldObj, xCoord - dir.offsetX * 11, yCoord, zCoord - dir.offsetZ * 11, dir.getOpposite()); for(DirPos pos : this.getConPos()) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 20f0d3915..8b42674b0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -60,7 +60,7 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidA } this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); fillFluidInit(tanks[1].getTankType()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 085f1d9ad..ec4354528 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -3,9 +3,7 @@ package com.hbm.tileentity.machine; import api.hbm.block.ILaserable; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidStandardReceiver; -import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerCoreEmitter; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUICoreEmitter; @@ -35,7 +33,7 @@ import net.minecraftforge.common.util.ForgeDirection; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider { +public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider { public long power; public static final long maxPower = 1000000000L; @@ -198,38 +196,6 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return (watts * i) / 100; } - @Override - public void setFluidFill(int i, FluidType type) { - if(type.name().equals(tank.getTankType().name())) - tank.setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - if(type.name().equals(tank.getTankType().name())) - return tank.getFill(); - else - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if(type.name().equals(tank.getTankType().name())) - return tank.getMaxFill(); - else - return 0; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - @Override public void setPower(long i) { this.power = i; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java index 1996b4bec..b902dfd3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java @@ -43,7 +43,7 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen } this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java index 8cc2e93c9..a05b6fe01 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java @@ -20,7 +20,8 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor { tanks[0] = new FluidTank(Fluids.WATER, 50000, 0); tanks[1] = new FluidTank(Fluids.HEAVYWATER, 5000, 1); } - + + @Override protected void updateConnections() { for(DirPos pos : getConPos()) { @@ -28,17 +29,19 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor { } } + @Override public void subscribeToAllAround(FluidType type, World world, int x, int y, int z) { for(DirPos pos : getConPos()) { this.trySubscribe(type, world, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - - public void sendFluidToAll(FluidType type, TileEntity te) { + + @Override + public void sendFluidToAll(FluidTank tank, TileEntity te) { for(DirPos pos : getConPos()) { - this.sendFluid(type, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 3295b6b0c..a35eaa70d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -62,14 +62,14 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen for(int y = yCoord; y <= yCoord + 1; y++) { for(int j = -1; j <= 1; j++) { - if(tank.getFill() > 0) this.sendFluid(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * j, y, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); + if(tank.getFill() > 0) this.sendFluid(tank, worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * j, y, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); } } } for(int x = xCoord - 1; x <= xCoord + 1; x++) { for(int z = zCoord - 1; z <= zCoord + 1; z++) { - if(tank.getFill() > 0) this.sendFluid(tank.getTankType(), worldObj, x, yCoord + 2, z, ForgeDirection.UP); + if(tank.getFill() > 0) this.sendFluid(tank, worldObj, x, yCoord + 2, z, ForgeDirection.UP); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java index a2325f6af..c7c98008d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java @@ -193,7 +193,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java index 7d0656c7e..e1dffc2b1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java @@ -65,7 +65,7 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe INBTPacketReceiver.networkPack(this, data, 25); for(DirPos pos : getConPos()) { - if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index fe47229b1..1e7d206f2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -156,7 +156,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser for(DirPos pos : getConPos()) { if(tanks[1].getFill() > 0) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java index 9dd81d815..8a7c4e55f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java @@ -91,7 +91,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im this.consumption *= (overLevel + 1); for(DirPos pos : getConPos()) { - this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(steam.getFill() > 0) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java index 50571797e..7882e3e8c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java @@ -218,7 +218,7 @@ public class TileEntityMachineBoiler extends TileEntityLoadedBase implements ISi if(!worldObj.isRemote) { this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); age++; if(age >= 20) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java index 38616f5a8..e29757724 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java @@ -233,7 +233,7 @@ public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implem { this.updateConnections(); this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); age++; if(age >= 20) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 69215202a..539ea2f42 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -1,15 +1,12 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerChemfac; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIChemfac; @@ -76,7 +73,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { for(DirPos pos : getConPos()) for(FluidTank tank : outTanks()) { if(tank.getTankType() != Fluids.NONE && tank.getFill() > 0) { - this.sendFluid(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -217,58 +214,6 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { return conPos; } - @Override - public void fillFluidInit(FluidType type) { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - for(int i = 0; i < 6; i++) { - fillFluid(xCoord + dir.offsetX * (2 - i) + rot.offsetX * 3, yCoord + 4, zCoord + dir.offsetZ * (2 - i) + rot.offsetZ * 3, this.getTact(), type); - fillFluid(xCoord + dir.offsetX * (2 - i) - rot.offsetX * 2, yCoord + 4, zCoord + dir.offsetZ * (2 - i) - rot.offsetZ * 2, this.getTact(), type); - - for(int j = 0; j < 2; j++) { - fillFluid(xCoord + dir.offsetX * (2 - i) + rot.offsetX * 5, yCoord + 1 + j, zCoord + dir.offsetZ * (2 - i) + rot.offsetZ * 5, this.getTact(), type); - fillFluid(xCoord + dir.offsetX * (2 - i) - rot.offsetX * 4, yCoord + 1 + j, zCoord + dir.offsetZ * (2 - i) - rot.offsetZ * 4, this.getTact(), type); - } - } - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return this.worldObj.getTotalWorldTime() % 20 < 10; - } - - private HashMap> fluidMap = new HashMap(); - - @Override - public List getFluidList(FluidType type) { - - List list = fluidMap.get(type); - - if(list == null) { - list = new ArrayList(); - fluidMap.put(type, list); - } - - return list; - } - - @Override - public void clearFluidList(FluidType type) { - - List list = fluidMap.get(type); - - if(list != null) { - list.clear(); - } - } - @Override public int getRecipeCount() { return 8; @@ -366,11 +311,6 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { return outTanks; } - - @Override - public int getMaxFluidFillForReceive(FluidType type) { - return super.getMaxFluidFillForReceive(type); - } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index a1b29e28e..b40be0fdc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -111,8 +111,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } for(DirPos pos : getConPos()) { - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(tanks[3].getFill() > 0) this.sendFluid(tanks[3].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[3].getFill() > 0) this.sendFluid(tanks[3], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } UpgradeManager.eval(slots, 1, 3); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 1a32bf626..9956e1810 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -34,7 +34,7 @@ import net.minecraft.util.ChunkCoordinates; * Tanks follow the order R1(I1, I2, O1, O2), R2(I1, I2, O1, O2) ... * @author hbm */ -public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IFluidUser, IGUIProvider { +public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBase implements IEnergyUser, IFluidUser, IGUIProvider { public long power; public int[] progress; @@ -74,15 +74,6 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa loadItems(i); unloadItems(i); } - - if(worldObj.getTotalWorldTime() % 10 == 0) { - - for(FluidTank tank : this.outTanks()) { - if(tank.getTankType() != Fluids.NONE && tank.getFill() > 0) { - this.fillFluidInit(tank.getTankType()); - } - } - } for(int i = 0; i < count; i++) { @@ -322,17 +313,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa this.power = power; } - @Override - public void setFillForSync(int fill, int index) { } - - @Override - public void setFluidFill(int fill, FluidType type) { } - - @Override - public void setTypeForSync(FluidType type, int index) { } - - @Override - public int getFluidFill(FluidType type) { + /*public int getFluidFill(FluidType type) { int fill = 0; @@ -349,10 +330,9 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } return fill; - } + }*/ /* For input only! */ - @Override public int getMaxFluidFill(FluidType type) { int maxFill = 0; @@ -365,20 +345,6 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa return maxFill; } - - @Override - public int getFluidFillForReceive(FluidType type) { - - int fill = 0; - - for(FluidTank tank : inTanks()) { - if(tank.getTankType() == type) { - fill += tank.getFill(); - } - } - - return fill; - } protected List inTanks() { @@ -394,8 +360,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa return inTanks; } - @Override - public void receiveFluid(int amount, FluidType type) { + /*public void receiveFluid(int amount, FluidType type) { if(amount <= 0) return; @@ -431,15 +396,14 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa tank.setFill(tank.getFill() + part); } - } + }*/ - @Override - public int getFluidFillForTransfer(FluidType type) { + public int getFluidFillForTransfer(FluidType type, int pressure) { int fill = 0; for(FluidTank tank : outTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { fill += tank.getFill(); } } @@ -447,8 +411,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa return fill; } - @Override - public void transferFluid(int amount, FluidType type) { + public void transferFluid(int amount, FluidType type, int pressure) { /* * this whole new fluid mumbo jumbo extra abstraction layer might just be a bandaid @@ -462,7 +425,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa List send = new ArrayList(); for(FluidTank tank : outTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { send.add(tank); } } @@ -524,7 +487,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } @Override - public long transferFluid(FluidType type, long fluid) { + public long transferFluid(FluidType type, int pressure, long fluid) { int amount = (int) fluid; if(amount <= 0) @@ -533,7 +496,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa List rec = new ArrayList(); for(FluidTank tank : inTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { rec.add(tank); } } @@ -567,18 +530,18 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } @Override - public long getDemand(FluidType type) { - return getMaxFluidFill(type) - getFluidFillForTransfer(type); + public long getDemand(FluidType type, int pressure) { + return getMaxFluidFill(type) - getFluidFillForTransfer(type, pressure); } @Override - public long getTotalFluidForSend(FluidType type) { - return getFluidFillForTransfer(type); + public long getTotalFluidForSend(FluidType type, int pressure) { + return getFluidFillForTransfer(type, pressure); } @Override - public void removeFluidForTransfer(FluidType type, long amount) { - this.transferFluid((int) amount, type); + public void removeFluidForTransfer(FluidType type, int pressure, long amount) { + this.transferFluid((int) amount, type, pressure); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index 05459da78..0fa7a053f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -173,7 +173,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(amat.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(amat, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java index 242d316cd..f629c577b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java @@ -72,7 +72,7 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements if(output.getFill() > 0) { for(DirPos pos : getConPos()) { - this.sendFluid(output.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(output, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } data.setInteger("heat", this.getTotalHeat()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 4e43bfcb0..5f37053e9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -74,7 +74,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.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - for(DirPos pos : getConPos()) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + for(DirPos pos : getConPos()) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); tanks[0].setType(0, 1, slots); tanks[0].loadTank(2, 3, slots); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index b8d708c5e..e0e4c52f7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -99,10 +99,10 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if (age == 9 || age == 19) fillFluidInit(tank.getTankType()); - this.sendFluid(tank.getTankType(), worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord + 2, zCoord, Library.POS_Z); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord - 2, zCoord, Library.NEG_Z); + this.sendFluid(tank, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); + this.sendFluid(tank, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); + this.sendFluid(tank, worldObj, xCoord, yCoord + 2, zCoord, Library.POS_Z); + this.sendFluid(tank, worldObj, xCoord, yCoord - 2, zCoord, Library.NEG_Z); power = Library.chargeTEFromItems(slots, 0, power, maxPower); tank.updateTank(xCoord, yCoord, zCoord, this.worldObj.provider.dimensionId); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index d92976d5f..37333a316 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -100,7 +100,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB } for(DirPos pos : getConPos()) { - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index 12ec35a76..1cbe50ab4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -142,8 +142,8 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement 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()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java index ee0e824d8..9cfafeb0d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java @@ -771,7 +771,7 @@ public class TileEntityMachineReactorLarge extends TileEntityLoadedBase implemen if(worldObj.getBlock(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2) == ModBlocks.reactor_hatch) { fillFluid(this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, getTact(), type); for(int i = 0; i < 2; i++) this.trySubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); - this.sendFluid(tanks[2].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); + this.sendFluid(tanks[2], worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); } else { for(int i = 0; i < 2; i++) this.tryUnsubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3); } @@ -780,8 +780,8 @@ public class TileEntityMachineReactorLarge extends TileEntityLoadedBase implemen fillFluid(this.xCoord, this.yCoord + height + 1, this.zCoord, getTact(), type); fillFluid(this.xCoord, this.yCoord - depth - 1, this.zCoord, getTact(), type); - this.sendFluid(tanks[2].getTankType(), worldObj, this.xCoord, this.yCoord + height + 1, this.zCoord, Library.POS_Y); - this.sendFluid(tanks[2].getTankType(), worldObj, this.xCoord, this.yCoord - depth - 1, this.zCoord, Library.NEG_Y); + this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord + height + 1, this.zCoord, Library.POS_Y); + this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord - depth - 1, this.zCoord, Library.NEG_Y); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 2a9f08a8b..eb4d3f731 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -261,7 +261,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS if(!valid) tanks[1].setTankType(Fluids.NONE); if(power > maxPower) power = maxPower; - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); tanks[1].unloadTank(5, 6, slots); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 79334c4b6..e2b64dde5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -139,7 +139,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement this.trySubscribe(tanks[2].getTankType(), worldObj, xCoord - dir.offsetX * 2 + rot.offsetX * -4, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * -4, dir.getOpposite()); this.trySubscribe(tanks[2].getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -4, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -4, dir); //steam - this.sendFluid(tanks[3].getTankType(), worldObj, xCoord + dir.offsetZ * 6, yCoord + 1, zCoord - dir.offsetX * 6, rot.getOpposite()); + this.sendFluid(tanks[3], worldObj, xCoord + dir.offsetZ * 6, yCoord + 1, zCoord - dir.offsetX * 6, rot.getOpposite()); //if(audio != null) // audio shouldn't even exist serverside // audio.updatePitch((float) (0.45 + 0.05 * rpm / 10)); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 262bfb654..bd87b519c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -168,7 +168,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements for(DirPos pos : getConPos()) { this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(this.blood.getFill() > 0) this.sendFluid(blood.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.blood.getFill() > 0) this.sendFluid(blood, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(burnValue > 0 && amountToBurn > 0) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 143795070..c605f96d6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -230,7 +230,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF } for(DirPos pos : getConPos()) { - this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } checkIfMeltdown(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java index 2ceec4118..ab91d87c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java @@ -56,8 +56,8 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui water.setFill(water.getFill() - process); steam.setFill(steam.getFill() + process * 100); - this.sendFluid(steam.getTankType(), worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); - this.sendFluid(steam.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); + this.sendFluid(steam, worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); + this.sendFluid(steam, worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); heat = 0; } else { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java index f3c99b090..2d70dc4c6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java @@ -120,7 +120,7 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui if(this.powerBuffer > 0) 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()); - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(tanks[1].getFill() > 0) fillFluidInit(tanks[1].getTankType()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java index e157188be..9b9a4432c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java @@ -148,8 +148,8 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu fillFluidInit(tanks[1].getTankType()); } - this.sendFluidToAll(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[0], this); + this.sendFluidToAll(tanks[1], this); tanks[0].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); tanks[1].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java index 5fd40bbe0..03b16cf88 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java @@ -68,14 +68,14 @@ public class TileEntityTowerLarge extends TileEntityCondenser { } @Override - public void sendFluidToAll(FluidType type, TileEntity te) { + public void sendFluidToAll(FluidTank tank, TileEntity te) { for(int i = 2; i < 6; i++) { ForgeDirection dir = ForgeDirection.getOrientation(i); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord + dir.offsetX * 5, yCoord, zCoord + dir.offsetZ * 5, dir); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * 3, dir); - this.sendFluid(this.tanks[1].getTankType(),worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * -3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * -3, dir); + this.sendFluid(this.tanks[1], worldObj, xCoord + dir.offsetX * 5, yCoord, zCoord + dir.offsetZ * 5, dir); + this.sendFluid(this.tanks[1], worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * 3, dir); + this.sendFluid(this.tanks[1], worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * -3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * -3, dir); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java index 05849023a..7dbb010bb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java @@ -53,11 +53,11 @@ public class TileEntityTowerSmall extends TileEntityCondenser { } @Override - public void sendFluidToAll(FluidType type, TileEntity te) { - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord + 3, yCoord, zCoord, Library.POS_X); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord - 3, yCoord, zCoord, Library.NEG_X); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord, yCoord, zCoord + 3, Library.POS_Z); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord, yCoord, zCoord - 3, Library.NEG_Z); + public void sendFluidToAll(FluidTank tank, TileEntity te) { + this.sendFluid(this.tanks[1], worldObj, xCoord + 3, yCoord, zCoord, Library.POS_X); + this.sendFluid(this.tanks[1], worldObj, xCoord - 3, yCoord, zCoord, Library.NEG_X); + this.sendFluid(this.tanks[1], worldObj, xCoord, yCoord, zCoord + 3, Library.POS_Z); + this.sendFluid(this.tanks[1], worldObj, xCoord, yCoord, zCoord - 3, Library.NEG_Z); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index 4f1124f8e..8b3e4baeb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -318,8 +318,8 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand protected void sendOutBottom() { for(DirPos pos : getSendingPos()) { - 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()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java index 8411a1c76..95db0d668 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java @@ -565,10 +565,10 @@ public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedIn this.sendPower(worldObj, xCoord, yCoord + 7, zCoord, ForgeDirection.UP); this.sendPower(worldObj, xCoord, yCoord - 7, zCoord, ForgeDirection.DOWN); - this.sendFluid(tank.getTankType(), worldObj, xCoord + 4, yCoord, zCoord, Library.POS_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord, zCoord + 4, Library.POS_Z); - this.sendFluid(tank.getTankType(), worldObj, xCoord - 4, yCoord, zCoord, Library.NEG_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord, zCoord - 4, Library.NEG_Z); + this.sendFluid(tank, worldObj, xCoord + 4, yCoord, zCoord, Library.POS_X); + this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord + 4, Library.POS_Z); + this.sendFluid(tank, worldObj, xCoord - 4, yCoord, zCoord, Library.NEG_X); + this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord - 4, Library.NEG_Z); if (age == 9 || age == 19) { fillFluidInit(tank.getTankType()); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java index e04bef058..37f9f4fb0 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java @@ -49,7 +49,7 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl for(DirPos pos : getConPos()) { for(int i = 2; i <= 4; i++) { - if(tanks[i].getFill() > 0) this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[i].getFill() > 0) this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java index 7aaf0ed3a..04e534de5 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java @@ -69,7 +69,7 @@ public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase im for(DirPos pos : getConPos()) { for(int i = 1; i < 4; i++) { if(tanks[i].getFill() > 0) { - this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java index fa5ee1a72..65db88540 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -101,7 +101,7 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl } for(DirPos pos : getConPos()) { - if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java index c963381a2..19ed18ecd 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java @@ -104,8 +104,8 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index 2092b4805..99f9d8bf0 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -97,7 +97,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index a345a43d4..8cac21820 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -174,7 +174,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements for(DirPos pos : getConPos()) { for(int i = 1; i < 5; i++) { if(tanks[i].getFill() > 0) { - this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index 400e5c98f..81ef2baa8 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -66,7 +66,7 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem for(DirPos pos : getConPos()) { for(int i = 1; i < 5; i++) { if(tanks[i].getFill() > 0) { - this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java index 7ac708861..11d36657f 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java @@ -132,8 +132,8 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple this.fillFluidInit(tanks[1].getTankType()); for(DirPos pos : getConPos()) { - if(tanks[0].getFill() > 0) this.sendFluid(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[0].getFill() > 0) this.sendFluid(tanks[0], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(this.power >= this.getPowerReqEff() && this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index bd46536de..6c1a784e6 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -95,7 +95,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I this.trySubscribe(feed.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); for(DirPos pos : getOutputPos()) { - if(this.steam.getFill() > 0) this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.steam.getFill() > 0) this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index 3ddb02d04..3d408086d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -86,7 +86,7 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I this.trySubscribe(feed.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); for(DirPos pos : getOutputPos()) { - if(this.steam.getFill() > 0) this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.steam.getFill() > 0) this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index bbb5ff2e0..c3c2665bf 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -54,7 +54,7 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement } for(DirPos pos : getOutputPos()) { - if(this.gas.getFill() > 0) this.sendFluid(gas.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.gas.getFill() > 0) this.sendFluid(gas, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java index f852e31bd..2c047cfd1 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java @@ -54,7 +54,7 @@ public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluid } fillFluidInit(this.steam.getTankType()); - this.sendFluidToAll(steam.getTankType(), this); + this.sendFluidToAll(steam, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index d6957ce01..e8f941496 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -75,7 +75,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); this.sendingBrake = true; - tank.setFill(transmitFluidFairly(worldObj, tank.getTankType(), this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); + tank.setFill(transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); this.sendingBrake = false; age++; @@ -106,10 +106,12 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc }; } - protected static int transmitFluidFairly(World world, FluidType type, IFluidConnector that, int fill, boolean connect, boolean send, DirPos[] connections) { + protected static int transmitFluidFairly(World world, FluidTank tank, IFluidConnector that, int fill, boolean connect, boolean send, DirPos[] connections) { Set nets = new HashSet(); Set consumers = new HashSet(); + FluidType type = tank.getTankType(); + int pressure = tank.getPressure(); for(DirPos pos : connections) { @@ -144,7 +146,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc if(x instanceof PipeNet) PipeNet.trackingInstances.add((PipeNet) x); }); - fill = (int) PipeNet.fairTransfer(con, type, fill); + fill = (int) PipeNet.fairTransfer(con, type, pressure, fill); } //resubscribe to buffered nets, if necessary diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 91174eb4a..391f5fe43 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -107,7 +107,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements age = 0; this.sendingBrake = true; - tank.setFill(TileEntityBarrel.transmitFluidFairly(worldObj, tank.getTankType(), this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); + tank.setFill(TileEntityBarrel.transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); this.sendingBrake = false; if((mode == 1 || mode == 2) && (age == 9 || age == 19)) @@ -359,18 +359,20 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements } @Override - public long transferFluid(FluidType type, long fluid) { - long toTransfer = Math.min(getDemand(type), fluid); + public long transferFluid(FluidType type, int pressure, long fluid) { + long toTransfer = Math.min(getDemand(type, pressure), fluid); tank.setFill(tank.getFill() + (int) toTransfer); return fluid - toTransfer; } @Override - public long getDemand(FluidType type) { + public long getDemand(FluidType type, int pressure) { if(this.mode == 2 || this.mode == 3 || this.sendingBrake) return 0; + if(tank.getPressure() != pressure) return 0; + return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java index 71e0c0104..c238da297 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java @@ -107,16 +107,16 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor } @Override - public long transferFluid(FluidType type, long fluid) { + public long transferFluid(FluidType type, int pressure, long fluid) { if(this.network == null) return fluid; - return this.network.transferFluid(fluid); + return this.network.transferFluid(fluid, pressure); } @Override - public long getDemand(FluidType type) { + public long getDemand(FluidType type, int pressure) { return 0; } diff --git a/src/main/java/com/hbm/wiaj/cannery/Dummies.java b/src/main/java/com/hbm/wiaj/cannery/Dummies.java index adbc22ee6..879a3fd3a 100644 --- a/src/main/java/com/hbm/wiaj/cannery/Dummies.java +++ b/src/main/java/com/hbm/wiaj/cannery/Dummies.java @@ -11,8 +11,8 @@ public class Dummies { public static class JarDummyConnector extends TileEntity implements IEnergyConnector, IFluidConnector { @Override public boolean isLoaded() { return false; } - @Override public long transferFluid(FluidType type, long fluid) { return 0; } - @Override public long getDemand(FluidType type) { return 0; } + @Override public long transferFluid(FluidType type, int pressure, long fluid) { return 0; } + @Override public long getDemand(FluidType type, int pressure) { return 0; } @Override public long transferPower(long power) { return 0; } @Override public long getPower() { return 0; } @Override public long getMaxPower() { return 0; } diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png index 3645fbfd5cb8309eabd11e95781fdb756c18118c..9db29bd5f86b9d8ce034e3d1e504cd8bddb86b83 100644 GIT binary patch literal 6931 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