From 148152fc716c9e6fd2e2b3a037b78accd6728f3c Mon Sep 17 00:00:00 2001 From: Calclavia Date: Sat, 8 Mar 2014 11:51:54 -0800 Subject: [PATCH] Fixed inability to inherit twice, changed INodeProvider interface --- .../engineering/TileEngineeringTable.java | 13 ------- .../archaic/filter/TileFilter.java | 2 +- .../archaic/fluid/gutter/TileGutter.java | 2 +- .../archaic/fluid/tank/TileTank.java | 22 +---------- .../electrical/generator/TileGenerator.java | 15 ++++---- .../electrical/multimeter/PartMultimeter.java | 17 +++++---- .../mechanical/MultipartMechanical.java | 3 +- .../mechanical/belt/TileConveyorBelt.java | 12 +++--- .../mechanical/energy/gear/PartGear.java | 37 ++++++++++--------- .../mechanical/energy/gear/PartGearShaft.java | 12 +++--- .../energy/{network => grid}/EnergyNode.java | 2 +- .../{network => grid}/MechanicalNode.java | 11 +++--- .../{network => grid}/PacketNetwork.java | 2 +- .../{network => grid}/PartMechanical.java | 15 +++++--- .../{network => grid}/TileMechanical.java | 13 ++++--- .../network/IMechanicalNodeProvider.java | 8 ---- .../energy/turbine/TileMechanicalTurbine.java | 33 +++++++++-------- .../mechanical/fluid/pipe/PartPipe.java | 5 +-- .../mechanical/fluid/pipe/RenderPipe.java | 4 +- .../fluid/transport/RenderPump.java | 2 +- .../mechanical/fluid/transport/TilePump.java | 13 ++++++- .../crusher/RenderMechanicalPiston.java | 3 +- .../process/crusher/TileMechanicalPiston.java | 2 +- .../process/grinder/TileGrinderWheel.java | 4 +- .../process/purifier/RenderMixer.java | 2 +- .../process/purifier/TileMixer.java | 6 +-- .../core/fluid/TilePressurizedNode.java | 7 +++- .../core/grid/INodeProvider.java | 4 +- .../core/grid/TraitNodeProvider.java | 25 ++++++------- .../core/grid/fluid/PressureNode.java | 4 +- .../core/prefab/part/PartFramedNode.java | 12 ++++-- 31 files changed, 150 insertions(+), 162 deletions(-) rename mechanical/src/main/java/resonantinduction/mechanical/energy/{network => grid}/EnergyNode.java (91%) rename mechanical/src/main/java/resonantinduction/mechanical/energy/{network => grid}/MechanicalNode.java (94%) rename mechanical/src/main/java/resonantinduction/mechanical/energy/{network => grid}/PacketNetwork.java (97%) rename mechanical/src/main/java/resonantinduction/mechanical/energy/{network => grid}/PartMechanical.java (88%) rename mechanical/src/main/java/resonantinduction/mechanical/energy/{network => grid}/TileMechanical.java (86%) delete mode 100644 mechanical/src/main/java/resonantinduction/mechanical/energy/network/IMechanicalNodeProvider.java rename mechanical/src/main/java/resonantinduction/mechanical/trait/TraitMechanical.java => src/main/java/resonantinduction/core/grid/TraitNodeProvider.java (50%) diff --git a/archaic/src/main/java/resonantinduction/archaic/engineering/TileEngineeringTable.java b/archaic/src/main/java/resonantinduction/archaic/engineering/TileEngineeringTable.java index 73265481..a28683a6 100644 --- a/archaic/src/main/java/resonantinduction/archaic/engineering/TileEngineeringTable.java +++ b/archaic/src/main/java/resonantinduction/archaic/engineering/TileEngineeringTable.java @@ -753,17 +753,4 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv return slots; } - - @Override - public ForgeDirection getDirection() - { - return ForgeDirection.getOrientation(getBlockMetadata()); - } - - @Override - public void setDirection(ForgeDirection direction) - { - worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, direction.ordinal(), 3); - } - } diff --git a/archaic/src/main/java/resonantinduction/archaic/filter/TileFilter.java b/archaic/src/main/java/resonantinduction/archaic/filter/TileFilter.java index 2bfcc2f7..e39b10c6 100644 --- a/archaic/src/main/java/resonantinduction/archaic/filter/TileFilter.java +++ b/archaic/src/main/java/resonantinduction/archaic/filter/TileFilter.java @@ -53,7 +53,7 @@ public class TileFilter extends TileFilterable implements IFilterable */ for (RecipeResource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER, "dust" + LanguageUtility.capitalizeFirst(ResourceGenerator.mixtureToMaterial(fluidBlock.getFluid().getName())))) { - InventoryUtility.dropItemStack(worldObj, checkAbove.clone().add(0.5), resoure.getItemStack().copy(), 0, false); + InventoryUtility.dropItemStack(worldObj, checkAbove.clone().add(0.5), resoure.getItemStack().copy(), 0, 0); } // TODO: Check if this is correct? diff --git a/archaic/src/main/java/resonantinduction/archaic/fluid/gutter/TileGutter.java b/archaic/src/main/java/resonantinduction/archaic/fluid/gutter/TileGutter.java index be67f063..90c5a67f 100644 --- a/archaic/src/main/java/resonantinduction/archaic/fluid/gutter/TileGutter.java +++ b/archaic/src/main/java/resonantinduction/archaic/fluid/gutter/TileGutter.java @@ -57,7 +57,7 @@ public class TileGutter extends TilePressurizedNode { if (tile instanceof IPressureNodeProvider) { - PressureNode check = ((IPressureNodeProvider) tile).getNode(dir.getOpposite()); + PressureNode check = ((IPressureNodeProvider) tile).getNode(PressureNode.class, dir.getOpposite()); if (check != null && canConnect(dir, check) && check.canConnect(dir.getOpposite(), this)) { diff --git a/archaic/src/main/java/resonantinduction/archaic/fluid/tank/TileTank.java b/archaic/src/main/java/resonantinduction/archaic/fluid/tank/TileTank.java index d1da61df..56eee16d 100644 --- a/archaic/src/main/java/resonantinduction/archaic/fluid/tank/TileTank.java +++ b/archaic/src/main/java/resonantinduction/archaic/fluid/tank/TileTank.java @@ -1,16 +1,11 @@ package resonantinduction.archaic.fluid.tank; -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.FluidContainerRegistry; -import resonantinduction.api.mechanical.fluid.IPressure; import resonantinduction.core.fluid.FluidDistributionetwork; import resonantinduction.core.fluid.IFluidDistribution; import resonantinduction.core.fluid.TileFluidDistribution; @@ -22,7 +17,7 @@ import calclavia.lib.utility.FluidUtility; import calclavia.lib.utility.WorldUtility; import calclavia.lib.utility.inventory.InventoryUtility; -public class TileTank extends TileFluidDistribution implements IPressure, IComparatorInputOverride +public class TileTank extends TileFluidDistribution implements IComparatorInputOverride { public static final int VOLUME = 16; @@ -62,7 +57,7 @@ public class TileTank extends TileFluidDistribution implements IPressure, ICompa return true; } - + @Override public int getComparatorInputOverride(int side) { @@ -112,17 +107,4 @@ public class TileTank extends TileFluidDistribution implements IPressure, ICompa } } } - - @Override - public void setPressure(int amount) - { - pressure = amount; - } - - @Override - public int getPressure(ForgeDirection dir) - { - return 0;// (getInternalTank().getCapacity() - getInternalTank().getFluidAmount()) / 10; - } - } diff --git a/electrical/src/main/java/resonantinduction/electrical/generator/TileGenerator.java b/electrical/src/main/java/resonantinduction/electrical/generator/TileGenerator.java index 261d33f1..70dec3b3 100644 --- a/electrical/src/main/java/resonantinduction/electrical/generator/TileGenerator.java +++ b/electrical/src/main/java/resonantinduction/electrical/generator/TileGenerator.java @@ -3,12 +3,11 @@ package resonantinduction.electrical.generator; import java.util.EnumSet; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import resonantinduction.mechanical.energy.network.IMechanicalNodeProvider; -import resonantinduction.mechanical.energy.network.MechanicalNode; +import resonantinduction.core.grid.INodeProvider; +import resonantinduction.core.grid.Node; +import resonantinduction.mechanical.energy.grid.MechanicalNode; import universalelectricity.api.energy.EnergyStorageHandler; -import universalelectricity.api.vector.Vector3; import calclavia.lib.prefab.tile.IRotatable; import calclavia.lib.prefab.tile.TileElectrical; @@ -17,7 +16,7 @@ import calclavia.lib.prefab.tile.TileElectrical; * * @author Calclavia */ -public class TileGenerator extends TileElectrical implements IRotatable, IMechanicalNodeProvider +public class TileGenerator extends TileElectrical implements IRotatable, INodeProvider { protected MechanicalNode node = new MechanicalNode(this) { @@ -164,8 +163,10 @@ public class TileGenerator extends TileElectrical implements IRotatable, IMechan } @Override - public MechanicalNode getNode(ForgeDirection from) + public N getNode(Class nodeType, ForgeDirection from) { - return node; + if (nodeType.isAssignableFrom(node.getClass())) + return (N) node; + return null; } } diff --git a/electrical/src/main/java/resonantinduction/electrical/multimeter/PartMultimeter.java b/electrical/src/main/java/resonantinduction/electrical/multimeter/PartMultimeter.java index 78523899..7aaec597 100644 --- a/electrical/src/main/java/resonantinduction/electrical/multimeter/PartMultimeter.java +++ b/electrical/src/main/java/resonantinduction/electrical/multimeter/PartMultimeter.java @@ -11,12 +11,13 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; -import resonantinduction.api.mechanical.fluid.IPressure; import resonantinduction.core.ResonantInduction; +import resonantinduction.core.grid.INodeProvider; +import resonantinduction.core.grid.fluid.IPressureNodeProvider; +import resonantinduction.core.grid.fluid.PressureNode; import resonantinduction.core.prefab.part.PartFace; import resonantinduction.electrical.Electrical; -import resonantinduction.mechanical.energy.network.IMechanicalNodeProvider; -import resonantinduction.mechanical.energy.network.MechanicalNode; +import resonantinduction.mechanical.energy.grid.MechanicalNode; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.energy.IConductor; @@ -268,9 +269,9 @@ public class PartMultimeter extends PartFace implements IConnector N getNode(Class nodeType, ForgeDirection from) { - return getMultiBlock().get().node; + if (nodeType.isAssignableFrom(node.getClass())) + return (N) getMultiBlock().get().node; + return null; } /** Multipart Bounds */ diff --git a/mechanical/src/main/java/resonantinduction/mechanical/energy/gear/PartGearShaft.java b/mechanical/src/main/java/resonantinduction/mechanical/energy/gear/PartGearShaft.java index 88ffd21e..a28855f1 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/energy/gear/PartGearShaft.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/energy/gear/PartGearShaft.java @@ -7,10 +7,10 @@ import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import resonantinduction.core.grid.INodeProvider; import resonantinduction.mechanical.Mechanical; -import resonantinduction.mechanical.energy.network.IMechanicalNodeProvider; -import resonantinduction.mechanical.energy.network.MechanicalNode; -import resonantinduction.mechanical.energy.network.PartMechanical; +import resonantinduction.mechanical.energy.grid.MechanicalNode; +import resonantinduction.mechanical.energy.grid.PartMechanical; import codechicken.lib.raytracer.IndexedCuboid6; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Vector3; @@ -98,7 +98,7 @@ public class PartGearShaft extends PartMechanical if (checkDir == placementSide || checkDir == placementSide.getOpposite()) { - MechanicalNode instance = ((IMechanicalNodeProvider) tile()).getNode(checkDir); + MechanicalNode instance = ((INodeProvider) tile()).getNode(MechanicalNode.class, checkDir); if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this)) { @@ -116,9 +116,9 @@ public class PartGearShaft extends PartMechanical { TileEntity checkTile = new universalelectricity.api.vector.Vector3(tile()).translate(checkDir).getTileEntity(world()); - if (checkTile instanceof IMechanicalNodeProvider) + if (checkTile instanceof INodeProvider) { - MechanicalNode instance = ((IMechanicalNodeProvider) checkTile).getNode(checkDir.getOpposite()); + MechanicalNode instance = ((INodeProvider) checkTile).getNode(MechanicalNode.class, checkDir.getOpposite()); // Only connect to shafts outside of this block space. if (instance != null && instance != this && instance.parent instanceof PartGearShaft && instance.canConnect(checkDir.getOpposite(), this)) diff --git a/mechanical/src/main/java/resonantinduction/mechanical/energy/network/EnergyNode.java b/mechanical/src/main/java/resonantinduction/mechanical/energy/grid/EnergyNode.java similarity index 91% rename from mechanical/src/main/java/resonantinduction/mechanical/energy/network/EnergyNode.java rename to mechanical/src/main/java/resonantinduction/mechanical/energy/grid/EnergyNode.java index cf4cad34..0db69068 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/energy/network/EnergyNode.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/energy/grid/EnergyNode.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.network; +package resonantinduction.mechanical.energy.grid; import resonantinduction.core.grid.Grid; import resonantinduction.core.grid.INodeProvider; diff --git a/mechanical/src/main/java/resonantinduction/mechanical/energy/network/MechanicalNode.java b/mechanical/src/main/java/resonantinduction/mechanical/energy/grid/MechanicalNode.java similarity index 94% rename from mechanical/src/main/java/resonantinduction/mechanical/energy/network/MechanicalNode.java rename to mechanical/src/main/java/resonantinduction/mechanical/energy/grid/MechanicalNode.java index 67a1beb0..fa5b02f4 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/energy/network/MechanicalNode.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/energy/grid/MechanicalNode.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.network; +package resonantinduction.mechanical.energy.grid; import java.util.Iterator; import java.util.Map.Entry; @@ -8,7 +8,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.ResonantInduction; -import resonantinduction.core.grid.Grid; import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.TickingGrid; import universalelectricity.api.vector.Vector3; @@ -30,7 +29,7 @@ import codechicken.multipart.TMultiPart; * * @author Calclavia */ -public class MechanicalNode extends EnergyNode +public class MechanicalNode extends EnergyNode { public double torque = 0; public double prevAngularVelocity, angularVelocity = 0; @@ -46,7 +45,7 @@ public class MechanicalNode extends EnergyNode N getNode(Class nodeType, ForgeDirection from) { - return node; + if (nodeType.isAssignableFrom(node.getClass())) + return (N) node; + return null; } @Override diff --git a/mechanical/src/main/java/resonantinduction/mechanical/energy/network/TileMechanical.java b/mechanical/src/main/java/resonantinduction/mechanical/energy/grid/TileMechanical.java similarity index 86% rename from mechanical/src/main/java/resonantinduction/mechanical/energy/network/TileMechanical.java rename to mechanical/src/main/java/resonantinduction/mechanical/energy/grid/TileMechanical.java index b69a4e26..4792be71 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/energy/network/TileMechanical.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/energy/grid/TileMechanical.java @@ -1,9 +1,10 @@ -package resonantinduction.mechanical.energy.network; +package resonantinduction.mechanical.energy.grid; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.ResonantInduction; +import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.Node; import resonantinduction.mechanical.Mechanical; import universalelectricity.api.vector.Vector3; @@ -13,7 +14,7 @@ import calclavia.lib.prefab.tile.TileAdvanced; import com.google.common.io.ByteArrayDataInput; -public abstract class TileMechanical extends TileAdvanced implements IMechanicalNodeProvider, IPacketReceiver +public abstract class TileMechanical extends TileAdvanced implements INodeProvider, IPacketReceiver { protected static final int PACKET_VELOCITY = Mechanical.contentRegistry.getNextPacketID(); @@ -21,7 +22,7 @@ public abstract class TileMechanical extends TileAdvanced implements IMechanical protected class PacketMechanicalNode extends MechanicalNode { - public PacketMechanicalNode(IMechanicalNodeProvider parent) + public PacketMechanicalNode(INodeProvider parent) { super(parent); } @@ -69,9 +70,11 @@ public abstract class TileMechanical extends TileAdvanced implements IMechanical } @Override - public MechanicalNode getNode(Class clazz, ForgeDirection dir) + public N getNode(Class nodeType, ForgeDirection from) { - return mechanicalNode; + if (nodeType.isAssignableFrom(mechanicalNode.getClass())) + return (N) mechanicalNode; + return null; } private void sendRotationPacket() diff --git a/mechanical/src/main/java/resonantinduction/mechanical/energy/network/IMechanicalNodeProvider.java b/mechanical/src/main/java/resonantinduction/mechanical/energy/network/IMechanicalNodeProvider.java deleted file mode 100644 index ff4894cf..00000000 --- a/mechanical/src/main/java/resonantinduction/mechanical/energy/network/IMechanicalNodeProvider.java +++ /dev/null @@ -1,8 +0,0 @@ -package resonantinduction.mechanical.energy.network; - -import resonantinduction.core.grid.INodeProvider; - -public interface IMechanicalNodeProvider extends INodeProvider -{ - -} diff --git a/mechanical/src/main/java/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java b/mechanical/src/main/java/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java index 5091d345..ead281ec 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java @@ -3,22 +3,23 @@ package resonantinduction.mechanical.energy.turbine; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import resonantinduction.mechanical.energy.network.IMechanicalNodeProvider; -import resonantinduction.mechanical.energy.network.MechanicalNode; +import resonantinduction.core.grid.INodeProvider; +import resonantinduction.core.grid.Node; +import resonantinduction.mechanical.energy.grid.MechanicalNode; import universalelectricity.api.energy.EnergyStorageHandler; import calclavia.lib.network.Synced.SyncedInput; import calclavia.lib.network.Synced.SyncedOutput; import calclavia.lib.prefab.turbine.TileTurbine; -public class TileMechanicalTurbine extends TileTurbine implements IMechanicalNodeProvider +public class TileMechanicalTurbine extends TileTurbine implements INodeProvider { - protected MechanicalNode node; + protected MechanicalNode mechanicalNode; public TileMechanicalTurbine() { super(); energy = new EnergyStorageHandler(0); - node = new MechanicalNode(this) + mechanicalNode = new MechanicalNode(this) { @Override public boolean canConnect(ForgeDirection from, Object source) @@ -30,9 +31,9 @@ public class TileMechanicalTurbine extends TileTurbine implements IMechanicalNod */ TileEntity sourceTile = position().translate(from).getTileEntity(getWorld()); - if (sourceTile instanceof IMechanicalNodeProvider) + if (sourceTile instanceof INodeProvider) { - MechanicalNode sourceInstance = ((IMechanicalNodeProvider) sourceTile).getNode(from.getOpposite()); + MechanicalNode sourceInstance = ((INodeProvider) sourceTile).getNode(MechanicalNode.class, from.getOpposite()); return sourceInstance == source && from == getDirection().getOpposite(); } } @@ -57,28 +58,30 @@ public class TileMechanicalTurbine extends TileTurbine implements IMechanicalNod @Override public void initiate() { - node.reconstruct(); + mechanicalNode.reconstruct(); super.initiate(); } @Override public void invalidate() { - node.deconstruct(); + mechanicalNode.deconstruct(); super.invalidate(); } @Override public void onProduce() { - node.torque += (torque - node.torque) / 10; - node.angularVelocity += (angularVelocity - node.angularVelocity) / 10; + mechanicalNode.torque += (torque - mechanicalNode.torque) / 10; + mechanicalNode.angularVelocity += (angularVelocity - mechanicalNode.angularVelocity) / 10; } @Override - public MechanicalNode getNode(ForgeDirection dir) + public N getNode(Class nodeType, ForgeDirection from) { - return ((TileMechanicalTurbine) getMultiBlock().get()).node; + if (nodeType.isAssignableFrom(mechanicalNode.getClass())) + return (N) ((TileMechanicalTurbine) getMultiBlock().get()).mechanicalNode; + return null; } @Override @@ -87,7 +90,7 @@ public class TileMechanicalTurbine extends TileTurbine implements IMechanicalNod { super.readFromNBT(nbt); tier = nbt.getInteger("tier"); - node.load(nbt); + mechanicalNode.load(nbt); } /** @@ -99,6 +102,6 @@ public class TileMechanicalTurbine extends TileTurbine implements IMechanicalNod { super.writeToNBT(nbt); nbt.setInteger("tier", tier); - node.save(nbt); + mechanicalNode.save(nbt); } } diff --git a/mechanical/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java b/mechanical/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java index 45c41e4c..33b46650 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/fluid/pipe/PartPipe.java @@ -13,6 +13,7 @@ import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; import resonantinduction.core.ResonantInduction; +import resonantinduction.core.grid.Node; import resonantinduction.core.grid.fluid.IPressureNodeProvider; import resonantinduction.core.grid.fluid.PressureNode; import resonantinduction.core.prefab.part.PartFramedNode; @@ -59,7 +60,7 @@ public class PartPipe extends PartFramedNode 0) diff --git a/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/RenderPump.java b/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/RenderPump.java index 130f052d..d28af245 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/RenderPump.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/RenderPump.java @@ -36,7 +36,7 @@ public class RenderPump extends TileEntitySpecialRenderer List notRendered = new ArrayList(); GL11.glPushMatrix(); - GL11.glRotated(Math.toDegrees((float) tile.getNode(null).angle), 0, 0, 1); + GL11.glRotated(Math.toDegrees((float) tile.mechanicalNode.angle), 0, 0, 1); for (int i = 1; i <= 12; i++) { diff --git a/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/TilePump.java b/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/TilePump.java index 899169e9..cf026090 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/TilePump.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/TilePump.java @@ -7,9 +7,10 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import resonantinduction.core.grid.Node; import resonantinduction.core.grid.fluid.IPressureNodeProvider; import resonantinduction.core.grid.fluid.PressureNode; -import resonantinduction.mechanical.energy.network.TileMechanical; +import resonantinduction.mechanical.energy.grid.TileMechanical; import universalelectricity.api.vector.Vector3; import calclavia.lib.prefab.tile.IRotatable; @@ -39,7 +40,7 @@ public class TilePump extends TileMechanical implements IPressureNodeProvider, I return 0; } - } + }; } @Override @@ -129,4 +130,12 @@ public class TilePump extends TileMechanical implements IPressureNodeProvider, I return null; } + @Override + public N getNode(Class nodeType, ForgeDirection from) + { + if (nodeType.isAssignableFrom(pressureNode.getClass())) + return (N) pressureNode; + + return super.getNode(nodeType, from); + } } diff --git a/mechanical/src/main/java/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java b/mechanical/src/main/java/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java index 8185c3a5..af58c85d 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java @@ -9,6 +9,7 @@ import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; import resonantinduction.core.Reference; +import resonantinduction.core.grid.fluid.PressureNode; import calclavia.lib.render.RenderUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -33,7 +34,7 @@ public class RenderMechanicalPiston extends TileEntitySpecialRenderer RenderUtility.bind(TEXTURE); // Angle in radians of the rotor. - float angle = (float) tile.getNode(null).angle; + float angle = (float) tile.mechanicalNode.angle; float radius = 0.5f; // Length of piston arm float length = 1f; diff --git a/mechanical/src/main/java/resonantinduction/mechanical/process/crusher/TileMechanicalPiston.java b/mechanical/src/main/java/resonantinduction/mechanical/process/crusher/TileMechanicalPiston.java index 18f70b2a..b6f2dd62 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/process/crusher/TileMechanicalPiston.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/process/crusher/TileMechanicalPiston.java @@ -7,7 +7,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; -import resonantinduction.mechanical.energy.network.TileMechanical; +import resonantinduction.mechanical.energy.grid.TileMechanical; import universalelectricity.api.vector.Vector3; import calclavia.lib.utility.MovementUtility; import cpw.mods.fml.common.Loader; diff --git a/mechanical/src/main/java/resonantinduction/mechanical/process/grinder/TileGrinderWheel.java b/mechanical/src/main/java/resonantinduction/mechanical/process/grinder/TileGrinderWheel.java index 2878727b..95589ec2 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/process/grinder/TileGrinderWheel.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/process/grinder/TileGrinderWheel.java @@ -13,8 +13,8 @@ import resonantinduction.api.recipe.RecipeResource; import resonantinduction.archaic.filter.Timer; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; -import resonantinduction.mechanical.energy.network.MechanicalNode; -import resonantinduction.mechanical.energy.network.TileMechanical; +import resonantinduction.mechanical.energy.grid.MechanicalNode; +import resonantinduction.mechanical.energy.grid.TileMechanical; import universalelectricity.api.vector.Vector3; import calclavia.lib.prefab.tile.IRotatable; diff --git a/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/RenderMixer.java b/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/RenderMixer.java index b059693d..517e7ed1 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/RenderMixer.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/RenderMixer.java @@ -40,7 +40,7 @@ public class RenderMixer extends TileEntitySpecialRenderer implements ISimpleIte RenderUtility.bind(TEXTURE); MODEL.renderOnly("centerTop", "centerBase"); glPushMatrix(); - glRotatef((float) Math.toDegrees((float) tile.getNode(null).angle), 0, 1, 0); + glRotatef((float) Math.toDegrees((float) tile.mechanicalNode.angle), 0, 1, 0); MODEL.renderAllExcept("centerTop", "centerBase"); glPopMatrix(); glPopMatrix(); diff --git a/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/TileMixer.java b/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/TileMixer.java index eecd07e8..1ccd68b5 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/TileMixer.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/TileMixer.java @@ -18,8 +18,8 @@ import resonantinduction.archaic.filter.Timer; import resonantinduction.core.Reference; import resonantinduction.core.resource.ResourceGenerator; import resonantinduction.core.resource.fluid.BlockFluidMixture; -import resonantinduction.mechanical.energy.network.MechanicalNode; -import resonantinduction.mechanical.energy.network.TileMechanical; +import resonantinduction.mechanical.energy.grid.MechanicalNode; +import resonantinduction.mechanical.energy.grid.TileMechanical; import universalelectricity.api.vector.Vector3; import calclavia.lib.utility.inventory.InventoryUtility; @@ -205,7 +205,7 @@ public class TileMixer extends TileMechanical implements IInventory if (!worldObj.isRemote) { Vector3 spawnVector = new Vector3(this).translate(ForgeDirection.getOrientation(worldObj.rand.nextInt(4) + 2)).translate(0.5); - InventoryUtility.dropItemStack(worldObj, spawnVector, itemstack, 20, false); + InventoryUtility.dropItemStack(worldObj, spawnVector, itemstack, 20, 0); } } diff --git a/src/main/java/resonantinduction/core/fluid/TilePressurizedNode.java b/src/main/java/resonantinduction/core/fluid/TilePressurizedNode.java index 885a5c15..09cbaa4c 100644 --- a/src/main/java/resonantinduction/core/fluid/TilePressurizedNode.java +++ b/src/main/java/resonantinduction/core/fluid/TilePressurizedNode.java @@ -6,6 +6,7 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; +import resonantinduction.core.grid.Node; import resonantinduction.core.grid.fluid.IPressureNodeProvider; import resonantinduction.core.grid.fluid.PressureNode; import calclavia.lib.network.IPacketReceiverWithID; @@ -94,8 +95,10 @@ public abstract class TilePressurizedNode extends TileFluidNode implements IPres } @Override - public PressureNode getNode(ForgeDirection from) + public N getNode(Class nodeType, ForgeDirection from) { - return node; + if (nodeType.isAssignableFrom(node.getClass())) + return (N) node; + return null; } } diff --git a/src/main/java/resonantinduction/core/grid/INodeProvider.java b/src/main/java/resonantinduction/core/grid/INodeProvider.java index 1b944f52..ae6846ba 100644 --- a/src/main/java/resonantinduction/core/grid/INodeProvider.java +++ b/src/main/java/resonantinduction/core/grid/INodeProvider.java @@ -3,8 +3,6 @@ package resonantinduction.core.grid; import net.minecraftforge.common.ForgeDirection; /** - * Any inheritance of INodeProvider should have a method "getNode()" - * * @author Calclavia * * @param - Node type. @@ -16,5 +14,5 @@ public interface INodeProvider * @param from - The direction. * @return Returns the node object. */ - public Object getNode(Class nodeType, ForgeDirection from); + public N getNode(Class nodeType, ForgeDirection from); } diff --git a/mechanical/src/main/java/resonantinduction/mechanical/trait/TraitMechanical.java b/src/main/java/resonantinduction/core/grid/TraitNodeProvider.java similarity index 50% rename from mechanical/src/main/java/resonantinduction/mechanical/trait/TraitMechanical.java rename to src/main/java/resonantinduction/core/grid/TraitNodeProvider.java index 650bd99e..b3e0fb8d 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/trait/TraitMechanical.java +++ b/src/main/java/resonantinduction/core/grid/TraitNodeProvider.java @@ -1,27 +1,25 @@ -package resonantinduction.mechanical.trait; +package resonantinduction.core.grid; import java.util.HashSet; import java.util.Set; import net.minecraftforge.common.ForgeDirection; -import resonantinduction.mechanical.energy.network.IMechanicalNodeProvider; -import resonantinduction.mechanical.energy.network.MechanicalNode; import codechicken.multipart.PartMap; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; -public class TraitMechanical extends TileMultipart implements IMechanicalNodeProvider +public class TraitNodeProvider extends TileMultipart implements INodeProvider { - public Set mechanicalInterfaces = new HashSet(); + public Set mechanicalInterfaces = new HashSet(); @Override public void copyFrom(TileMultipart that) { super.copyFrom(that); - if (that instanceof TraitMechanical) + if (that instanceof TraitNodeProvider) { - this.mechanicalInterfaces = ((TraitMechanical) that).mechanicalInterfaces; + this.mechanicalInterfaces = ((TraitNodeProvider) that).mechanicalInterfaces; } } @@ -30,9 +28,9 @@ public class TraitMechanical extends TileMultipart implements IMechanicalNodePro { super.bindPart(part); - if (part instanceof IMechanicalNodeProvider) + if (part instanceof INodeProvider) { - this.mechanicalInterfaces.add((IMechanicalNodeProvider) part); + this.mechanicalInterfaces.add((INodeProvider) part); } } @@ -41,7 +39,7 @@ public class TraitMechanical extends TileMultipart implements IMechanicalNodePro { super.partRemoved(part, p); - if (part instanceof IMechanicalNodeProvider) + if (part instanceof INodeProvider) { this.mechanicalInterfaces.remove(part); } @@ -55,7 +53,7 @@ public class TraitMechanical extends TileMultipart implements IMechanicalNodePro } @Override - public MechanicalNode getNode(ForgeDirection from) + public N getNode(Class nodeType, ForgeDirection from) { TMultiPart part = this.partMap(from.ordinal()); @@ -64,12 +62,11 @@ public class TraitMechanical extends TileMultipart implements IMechanicalNodePro part = partMap(PartMap.CENTER.ordinal()); } - if (part instanceof IMechanicalNodeProvider) + if (part instanceof INodeProvider) { - return ((IMechanicalNodeProvider) part).getNode(from); + return ((INodeProvider) part).getNode(nodeType, from); } return null; - } } diff --git a/src/main/java/resonantinduction/core/grid/fluid/PressureNode.java b/src/main/java/resonantinduction/core/grid/fluid/PressureNode.java index 27af98a2..d9583f21 100644 --- a/src/main/java/resonantinduction/core/grid/fluid/PressureNode.java +++ b/src/main/java/resonantinduction/core/grid/fluid/PressureNode.java @@ -137,7 +137,7 @@ public class PressureNode extends Node other) { this.isInsulated = other.isInsulated; @@ -264,7 +264,7 @@ public abstract class PartFramedNode N getNode(Class nodeType, ForgeDirection from) { - return node; + if (nodeType.isAssignableFrom(node.getClass())) + return (N) node; + return null; } } \ No newline at end of file