diff --git a/src/dark/api/fluid/INetworkFluidPart.java b/src/dark/api/fluid/INetworkFluidPart.java index 644e4f78..d299cba5 100644 --- a/src/dark/api/fluid/INetworkFluidPart.java +++ b/src/dark/api/fluid/INetworkFluidPart.java @@ -3,8 +3,8 @@ package dark.api.fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidTank; +import dark.api.ColorCode.IColorCoded; import dark.api.parts.INetworkPart; -import dark.core.interfaces.ColorCode.IColorCoded; public interface INetworkFluidPart extends IColorCoded, IFluidHandler, INetworkPart { diff --git a/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidContainers.java b/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidContainers.java index 1864d81f..450ca95a 100644 --- a/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidContainers.java +++ b/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidContainers.java @@ -6,9 +6,9 @@ import java.util.List; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidHandler; +import dark.api.ColorCode; import dark.api.fluid.INetworkFluidPart; import dark.api.parts.INetworkPart; -import dark.core.interfaces.ColorCode; import dark.core.prefab.helpers.FluidHelper; import dark.core.prefab.tilenetwork.NetworkTileEntities; diff --git a/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidTiles.java b/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidTiles.java index dc900cb9..cfebb002 100644 --- a/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidTiles.java +++ b/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidTiles.java @@ -9,9 +9,9 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.IFluidHandler; +import dark.api.ColorCode; import dark.api.fluid.INetworkFluidPart; import dark.api.parts.INetworkPart; -import dark.core.interfaces.ColorCode; import dark.core.prefab.helpers.FluidHelper; import dark.core.prefab.tilenetwork.NetworkTileEntities; @@ -23,7 +23,7 @@ public class NetworkFluidTiles extends NetworkTileEntities public FluidTank sharedTank; /** Color code of the network, mainly used for connection rules */ - public ColorCode color = ColorCode.NONE; + public ColorCode color = ColorCode.UNKOWN; /** Has the collective tank been loaded yet */ protected boolean loadedLiquids = false; diff --git a/src/dark/core/prefab/tilenetwork/fluid/NetworkPipes.java b/src/dark/core/prefab/tilenetwork/fluid/NetworkPipes.java index a159adaf..58926b8b 100644 --- a/src/dark/core/prefab/tilenetwork/fluid/NetworkPipes.java +++ b/src/dark/core/prefab/tilenetwork/fluid/NetworkPipes.java @@ -9,9 +9,9 @@ import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import dark.api.ColorCode; import dark.api.fluid.INetworkPipe; import dark.api.parts.INetworkPart; -import dark.core.interfaces.ColorCode; import dark.core.prefab.helpers.ConnectionHelper; import dark.core.prefab.helpers.FluidHelper; import dark.core.prefab.tilenetwork.NetworkTileEntities; diff --git a/src/dark/fluid/client/render/RenderReleaseValve.java b/src/dark/fluid/client/render/RenderReleaseValve.java index d0b5618b..dbd5a3c9 100644 --- a/src/dark/fluid/client/render/RenderReleaseValve.java +++ b/src/dark/fluid/client/render/RenderReleaseValve.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import dark.api.ColorCode; import dark.core.client.renders.RenderTileMachine; -import dark.core.interfaces.ColorCode; import dark.core.prefab.ModPrefab; import dark.fluid.client.model.ModelLargePipe; import dark.fluid.client.model.ModelReleaseValve; diff --git a/src/dark/fluid/client/render/RenderTank.java b/src/dark/fluid/client/render/RenderTank.java index b580e89e..51bbc07b 100644 --- a/src/dark/fluid/client/render/RenderTank.java +++ b/src/dark/fluid/client/render/RenderTank.java @@ -9,9 +9,9 @@ import org.lwjgl.opengl.GL11; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import dark.api.ColorCode; import dark.core.client.renders.RenderBlockFluid; import dark.core.client.renders.RenderTileMachine; -import dark.core.interfaces.ColorCode; import dark.fluid.client.model.ModelTankSide; import dark.fluid.common.machines.TileEntityTank; diff --git a/src/dark/fluid/client/render/pipe/IPipeExtentionRender.java b/src/dark/fluid/client/render/pipe/IPipeExtentionRender.java deleted file mode 100644 index e67d418c..00000000 --- a/src/dark/fluid/client/render/pipe/IPipeExtentionRender.java +++ /dev/null @@ -1,26 +0,0 @@ -package dark.fluid.client.render.pipe; - -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.vector.Vector3; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import dark.fluid.common.pipes.TileEntityPipe; - -/** Class for TileEntity Renders that extend the pipe class to use instead of extending - * TileEntitySpecialRender - * - * @author Rseifert */ -@SideOnly(Side.CLIENT) -public interface IPipeExtentionRender -{ - /** Renders the pipe extension just like a normal tileEntity render however this is called and - * process threw the RenderPipe.class so you don't need to do all the GL11 calls for scaling, - * translation, etc - * - * @param renderPipe - render instance that is calling this method - * @param pipe - TileEntity this extension is attached too - * @param location - position too be rendered from the players plane - * @param size - This should be the size of the render, correct me if wrong - * @param facingDirection - Facing direction of the extension in relation to its pipe frame */ - public void renderAModelAt(RenderPipe renderPipe, TileEntityPipe pipe, Vector3 location, float size, ForgeDirection facingDirection); -} diff --git a/src/dark/fluid/client/render/pipe/RenderPipe.java b/src/dark/fluid/client/render/pipe/RenderPipe.java index 5fe6d2eb..2bd9f87e 100644 --- a/src/dark/fluid/client/render/pipe/RenderPipe.java +++ b/src/dark/fluid/client/render/pipe/RenderPipe.java @@ -2,23 +2,20 @@ package dark.fluid.client.render.pipe; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.Fluid; import org.lwjgl.opengl.GL11; -import universalelectricity.core.vector.Vector3; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import dark.api.ColorCode; import dark.core.client.renders.RenderTileMachine; -import dark.core.interfaces.ColorCode; import dark.core.prefab.ModPrefab; import dark.core.prefab.helpers.FluidHelper; import dark.fluid.client.model.ModelLargePipe; import dark.fluid.common.FMRecipeLoader; import dark.fluid.common.FluidMech; import dark.fluid.common.pipes.TileEntityPipe; -import dark.fluid.common.pipes.addon.IPipeExtention; @SideOnly(Side.CLIENT) public class RenderPipe extends RenderTileMachine @@ -49,34 +46,6 @@ public class RenderPipe extends RenderTileMachine TileEntityPipe pipe = ((TileEntityPipe) te); this.renderSide = pipe.renderConnection; - // Pipes extension rendering - for (int i = 0; i < 6; i++) - { - IPipeExtention extention = pipe.subEntities[i]; - if (extention != null) - { - Object ob; - try - { - ob = extention.getExtentionRenderClass().newInstance(); - - if (ob instanceof IPipeExtentionRender) - { - IPipeExtentionRender render = (IPipeExtentionRender) ob; - if (render != null) - { - System.out.println("Rendering Pipe Addon side " + i); - render.renderAModelAt(this, pipe, new Vector3(0, 0, 0), f, ForgeDirection.getOrientation(i)); - } - } - } - catch (Exception e) - { - System.out.println("Failed to render a pipe extention"); - e.printStackTrace(); - } - } - } } this.render(blockID, meta, renderSide); GL11.glPopMatrix(); diff --git a/src/dark/fluid/client/render/pipe/RenderPipeWindow.java b/src/dark/fluid/client/render/pipe/RenderPipeWindow.java deleted file mode 100644 index d4c915d8..00000000 --- a/src/dark/fluid/client/render/pipe/RenderPipeWindow.java +++ /dev/null @@ -1,54 +0,0 @@ -package dark.fluid.client.render.pipe; - -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.vector.Vector3; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import dark.fluid.client.model.ModelLargePipe; -import dark.fluid.common.pipes.TileEntityPipe; - -@SideOnly(Side.CLIENT) -public class RenderPipeWindow implements IPipeExtentionRender -{ - private ModelLargePipe SixPipe; - - public RenderPipeWindow() - { - SixPipe = new ModelLargePipe(); - } - - @Override - public void renderAModelAt(RenderPipe renderPipe, TileEntityPipe pipe, Vector3 location, float size, ForgeDirection facingDirection) - { - //renderPipe.bindTextureForPipe(RenderPipe.getPipeTexture(0, false)); - this.render(facingDirection.ordinal()); - System.out.println("Rendered Window Pipe"); - - } - - public void render(int side) - { - switch (side) - { - case 0: - SixPipe.renderBottom(); - break; - case 1: - SixPipe.renderTop(); - break; - case 3: - SixPipe.renderFront(); - break; - case 2: - SixPipe.renderBack(); - break; - case 5: - SixPipe.renderRight(); - break; - case 4: - SixPipe.renderLeft(); - break; - } - } - -} \ No newline at end of file diff --git a/src/dark/fluid/common/FMRecipeLoader.java b/src/dark/fluid/common/FMRecipeLoader.java index c12ff866..d45aee41 100644 --- a/src/dark/fluid/common/FMRecipeLoader.java +++ b/src/dark/fluid/common/FMRecipeLoader.java @@ -5,10 +5,10 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.ShapedOreRecipe; import cpw.mods.fml.common.registry.GameRegistry; +import dark.api.ColorCode; import dark.core.common.CoreRecipeLoader; import dark.core.common.RecipeLoader; import dark.core.common.items.ItemParts.Parts; -import dark.core.interfaces.ColorCode; public class FMRecipeLoader extends RecipeLoader { @@ -79,11 +79,11 @@ public class FMRecipeLoader extends RecipeLoader // lava tank new RecipeGrid(new ItemStack(blockTank, 4, ColorCode.RED.ordinal())).setRowOne(Block.netherrack, Block.obsidian, Block.netherrack).setRowTwo(Block.obsidian, null, Block.obsidian).setRowThree(Block.netherrack, Block.obsidian, Block.netherrack).RegisterRecipe(); // water tank - GameRegistry.addShapelessRecipe(new ItemStack(blockTank, 1, ColorCode.BLUE.ordinal()), new Object[] { new ItemStack(blockTank, 4, ColorCode.NONE.ordinal()), new ItemStack(Item.dyePowder, 1, ColorCode.BLUE.ordinal()) }); + GameRegistry.addShapelessRecipe(new ItemStack(blockTank, 1, ColorCode.BLUE.ordinal()), new Object[] { new ItemStack(blockTank, 4, 15), new ItemStack(Item.dyePowder, 1, ColorCode.BLUE.ordinal()) }); // milk tank new RecipeGrid(new ItemStack(blockTank, 4, ColorCode.WHITE.ordinal())).setRowOne(Block.planks, Block.glass, Block.planks).setRowTwo(Block.glass, null, Block.glass).setRowThree(Block.planks, Block.glass, Block.planks).RegisterRecipe(); // generic Tank - new RecipeGrid(new ItemStack(blockTank, 4, ColorCode.NONE.ordinal())).setRowOne(Item.ingotIron, Block.glass, Item.ingotIron).setRowTwo(Block.glass, null, Block.glass).setRowThree(Item.ingotIron, Block.glass, Item.ingotIron).RegisterRecipe(); + new RecipeGrid(new ItemStack(blockTank, 4, 15)).setRowOne(Item.ingotIron, Block.glass, Item.ingotIron).setRowTwo(Block.glass, null, Block.glass).setRowThree(Item.ingotIron, Block.glass, Item.ingotIron).RegisterRecipe(); } public void registerPipes() @@ -106,7 +106,7 @@ public class FMRecipeLoader extends RecipeLoader // generic pipe crafting for (int pipeMeta = 0; pipeMeta < 15; pipeMeta++) { - if (pipeMeta != ColorCode.WHITE.ordinal() && pipeMeta != ColorCode.NONE.ordinal()) + if (pipeMeta != ColorCode.WHITE.ordinal() && pipeMeta != 15) { new RecipeGrid(new ItemStack(blockGenPipe, 4, pipeMeta)).setRowOne(null, blockGenPipe, null).setRowTwo(blockGenPipe, new ItemStack(Item.dyePowder, 1, pipeMeta), blockGenPipe).setRowOne(null, blockGenPipe, null).RegisterRecipe(); } diff --git a/src/dark/fluid/common/machines/TileEntityBoiler.java b/src/dark/fluid/common/machines/TileEntityBoiler.java index d70bebf8..c1d14ee9 100644 --- a/src/dark/fluid/common/machines/TileEntityBoiler.java +++ b/src/dark/fluid/common/machines/TileEntityBoiler.java @@ -10,8 +10,8 @@ import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidTank; +import dark.api.ColorCode; import dark.api.fluid.INetworkFluidPart; -import dark.core.interfaces.ColorCode; import dark.core.prefab.tilenetwork.NetworkTileEntities; import dark.fluid.common.prefab.TileEntityFluidDevice; diff --git a/src/dark/fluid/common/machines/TileEntityReleaseValve.java b/src/dark/fluid/common/machines/TileEntityReleaseValve.java index 0e592d4d..9d0021b7 100644 --- a/src/dark/fluid/common/machines/TileEntityReleaseValve.java +++ b/src/dark/fluid/common/machines/TileEntityReleaseValve.java @@ -11,11 +11,11 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidHandler; import universalelectricity.core.vector.Vector3; +import dark.api.ColorCode; import dark.api.IToolReadOut; +import dark.api.ColorCode.IColorCoded; import dark.api.fluid.INetworkPipe; import dark.api.parts.ITileConnector; -import dark.core.interfaces.ColorCode; -import dark.core.interfaces.ColorCode.IColorCoded; import dark.core.prefab.helpers.ConnectionHelper; import dark.core.prefab.tilenetwork.fluid.NetworkPipes; import dark.fluid.common.prefab.TileEntityFluidDevice; diff --git a/src/dark/fluid/common/machines/TileEntitySink.java b/src/dark/fluid/common/machines/TileEntitySink.java index 32fb4e59..a4fa29ca 100644 --- a/src/dark/fluid/common/machines/TileEntitySink.java +++ b/src/dark/fluid/common/machines/TileEntitySink.java @@ -14,8 +14,8 @@ import universalelectricity.prefab.network.IPacketReceiver; import com.google.common.io.ByteArrayDataInput; +import dark.api.ColorCode; import dark.core.common.DarkMain; -import dark.core.interfaces.ColorCode; import dark.core.network.PacketHandler; import dark.fluid.common.prefab.TileEntityFluidStorage; diff --git a/src/dark/fluid/common/machines/TileEntityTank.java b/src/dark/fluid/common/machines/TileEntityTank.java index 4f604561..f29305e1 100644 --- a/src/dark/fluid/common/machines/TileEntityTank.java +++ b/src/dark/fluid/common/machines/TileEntityTank.java @@ -30,12 +30,12 @@ import com.google.common.io.ByteArrayDataInput; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import dark.api.ColorCode; import dark.api.IToolReadOut; +import dark.api.ColorCode.IColorCoded; import dark.api.fluid.INetworkFluidPart; import dark.api.fluid.INetworkPipe; import dark.core.common.DarkMain; -import dark.core.interfaces.ColorCode; -import dark.core.interfaces.ColorCode.IColorCoded; import dark.core.network.PacketHandler; import dark.core.prefab.helpers.FluidHelper; import dark.core.prefab.tilenetwork.NetworkTileEntities; @@ -137,7 +137,7 @@ public class TileEntityTank extends TileEntityFluidStorage implements IFluidHand { if (this.worldObj == null) { - return ColorCode.NONE; + return ColorCode.UNKOWN; } return ColorCode.get(worldObj.getBlockMetadata(xCoord, yCoord, zCoord)); } @@ -202,7 +202,7 @@ public class TileEntityTank extends TileEntityFluidStorage implements IFluidHand } /** Checks to make sure the connection is valid to the tileEntity - * + * * @param tileEntity - the tileEntity being checked * @param side - side the connection is too */ public void validateConnectionSide(TileEntity tileEntity, ForgeDirection side) diff --git a/src/dark/fluid/common/pipes/BlockPipe.java b/src/dark/fluid/common/pipes/BlockPipe.java index 5d5473e8..ae7547dc 100644 --- a/src/dark/fluid/common/pipes/BlockPipe.java +++ b/src/dark/fluid/common/pipes/BlockPipe.java @@ -14,6 +14,8 @@ import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.IFluidTank; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import dark.api.ColorCode; +import dark.api.ColorCode.IColorCoded; import dark.api.fluid.INetworkPipe; import dark.core.prefab.helpers.FluidHelper; import dark.core.prefab.helpers.Pair; @@ -138,12 +140,9 @@ public class BlockPipe extends BlockFM { if (this.blockID == FMRecipeLoader.blockGenPipe.blockID) { - int meta = world.getBlockMetadata(x, y, z); - if (meta != colour) + if (world.getBlockTileEntity(x, y, z) instanceof IColorCoded) { - world.setBlockMetadataWithNotify(x, y, z, colour, 3); - this.onNeighborBlockChange(world, x, y, z, world.getBlockId(x, y, z)); - return true; + ((IColorCoded) world.getBlockTileEntity(x, y, z)).setColor(ColorCode.get(colour)); } } return false; diff --git a/src/dark/fluid/common/pipes/TileEntityGenericPipe.java b/src/dark/fluid/common/pipes/TileEntityGenericPipe.java index ac60dc59..fc5f60ed 100644 --- a/src/dark/fluid/common/pipes/TileEntityGenericPipe.java +++ b/src/dark/fluid/common/pipes/TileEntityGenericPipe.java @@ -7,7 +7,7 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.VectorHelper; -import dark.core.interfaces.ColorCode; +import dark.api.ColorCode; import dark.core.prefab.tilenetwork.fluid.NetworkPipes; public class TileEntityGenericPipe extends TileEntityPipe @@ -48,6 +48,6 @@ public class TileEntityGenericPipe extends TileEntityPipe @Override public ColorCode getColor() { - return ColorCode.NONE; + return ColorCode.UNKOWN; } } diff --git a/src/dark/fluid/common/pipes/TileEntityPipe.java b/src/dark/fluid/common/pipes/TileEntityPipe.java index bc9e6809..c7242368 100644 --- a/src/dark/fluid/common/pipes/TileEntityPipe.java +++ b/src/dark/fluid/common/pipes/TileEntityPipe.java @@ -1,9 +1,7 @@ package dark.fluid.common.pipes; -import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.Random; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -32,121 +30,67 @@ import com.google.common.io.ByteArrayDataInput; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import dark.api.ColorCode; +import dark.api.ColorCode.IColorCoded; import dark.api.IToolReadOut; import dark.api.fluid.INetworkPipe; import dark.api.parts.ITileConnector; import dark.core.common.DarkMain; -import dark.core.interfaces.ColorCode; -import dark.core.interfaces.ColorCode.IColorCoded; import dark.core.network.PacketHandler; import dark.core.prefab.helpers.FluidHelper; import dark.core.prefab.tilenetwork.NetworkTileEntities; import dark.core.prefab.tilenetwork.fluid.NetworkPipes; -import dark.fluid.common.pipes.addon.IPipeExtention; public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, IToolReadOut, IColorCoded, INetworkPipe, IPacketReceiver { + /** Pipe temp tank storage, main storage is thought of as the collective network tank */ + protected FluidTank tank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME); - /* TANK TO FAKE OTHER TILES INTO BELIVING THIS HAS AN INTERNAL STORAGE */ - protected FluidTank fakeTank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME); - /* CURRENTLY CONNECTED TILE ENTITIES TO THIS */ + /** TileEntities that this pipe has connections too */ private List connectedBlocks = new ArrayList(); + + /** Should render connections on side */ public boolean[] renderConnection = new boolean[6]; - public IPipeExtention[] subEntities = new IPipeExtention[6]; - /* RANDOM INSTANCE USED BY THE UPDATE TICK */ - private Random random = new Random(); - /* NETWORK INSTANCE THAT THIS PIPE USES */ + + /** Network that links the collective pipes together to work */ private NetworkPipes pipeNetwork; - private boolean shouldAutoDrain = false; + protected ColorCode colorCode = ColorCode.UNKOWN; - public enum PacketID + protected boolean flagForColorCodeUpdate = false; + + protected int updateTick = 1; + + public enum PipePacketID { PIPE_CONNECTIONS, EXTENTION_CREATE, EXTENTION_UPDATE; } - @Override - public void initiate() - { - this.refresh(); - if (this.subEntities[0] == null) - { - // this.addNewExtention(0, TileEntityPipeWindow.class); - } - if (!worldObj.isRemote) - { - - for (int i = 0; i < 6; i++) - { - TileEntity entity = (TileEntity) this.subEntities[i]; - if (entity != null) - { - this.initSubTile(i); - } - } - } - } - @Override public void updateEntity() { super.updateEntity(); - if (ticks > 1) - { - this.updateSubEntities(); - } if (!worldObj.isRemote) { - if (ticks % (random.nextInt(5) * 40 + 20) == 0) + if (ticks % this.updateTick == 0) { + this.updateTick = this.worldObj.rand.nextInt(5) * 40 + 20; this.refresh(); } - if (ticks % (random.nextInt(5) * 60 + 20) == 0) - { - for (int i = 0; i < 6; i++) - { - if (this.subEntities[i] != null) - { - this.initSubTile(i); - } - } - } - } - } - - /** Builds and sends data to client for all PipeExtentions */ - private void updateSubEntities() - { - - for (int i = 0; i < 6; i++) - { - if (subEntities[i] instanceof IPipeExtention && subEntities[i] instanceof TileEntity) - { - IPipeExtention extention = subEntities[i]; - if (this.ticks % extention.updateTick() == 0) - { - ((TileEntity) extention).updateEntity(); - if (extention.shouldSendPacket(!this.worldObj.isRemote) && extention.getExtentionPacketData(!this.worldObj.isRemote) != null) - { - Packet packet = PacketHandler.instance().getPacket(DarkMain.CHANNEL, this, PacketID.EXTENTION_UPDATE.ordinal(), ForgeDirection.getOrientation(i), extention.getExtentionPacketData(!this.worldObj.isRemote)); - PacketHandler.instance().sendPacketToClients(packet, worldObj, new Vector3(this), 50); - } - } - } } } @Override public void invalidate() { + super.invalidate(); if (!this.worldObj.isRemote) { this.getTileNetwork().splitNetwork(this.worldObj, this); } - super.invalidate(); } @Override @@ -154,37 +98,18 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, { try { - PacketID id = PacketID.values()[dataStream.readInt()]; if (this.worldObj.isRemote) { - if (id == PacketID.PIPE_CONNECTIONS) - { - this.renderConnection[0] = dataStream.readBoolean(); - this.renderConnection[1] = dataStream.readBoolean(); - this.renderConnection[2] = dataStream.readBoolean(); - this.renderConnection[3] = dataStream.readBoolean(); - this.renderConnection[4] = dataStream.readBoolean(); - this.renderConnection[5] = dataStream.readBoolean(); - } - else if (id == PacketID.EXTENTION_CREATE) - { - System.out.println("Handling Packet for Pipe addon"); - int side = dataStream.readInt(); - NBTTagCompound tag = PacketHandler.instance().readNBTTagCompound(dataStream); - this.loadOrCreateSubTile(side, tag); - - } - else if (id == PacketID.EXTENTION_UPDATE) - { - int side = dataStream.readInt(); - if (this.subEntities[side] instanceof IPipeExtention) - { - this.subEntities[side].handlePacketData(network, type, packet, player, dataStream); - } - } + this.colorCode = ColorCode.get(dataStream.readInt()); + this.renderConnection[0] = dataStream.readBoolean(); + this.renderConnection[1] = dataStream.readBoolean(); + this.renderConnection[2] = dataStream.readBoolean(); + this.renderConnection[3] = dataStream.readBoolean(); + this.renderConnection[4] = dataStream.readBoolean(); + this.renderConnection[5] = dataStream.readBoolean(); } } - catch (IOException e) + catch (Exception e) { System.out.print("Error with reading packet for TileEntityPipe"); e.printStackTrace(); @@ -194,7 +119,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, @Override public Packet getDescriptionPacket() { - return PacketHandler.instance().getPacket(DarkMain.CHANNEL, this, PacketID.PIPE_CONNECTIONS.ordinal(), this.renderConnection[0], this.renderConnection[1], this.renderConnection[2], this.renderConnection[3], this.renderConnection[4], this.renderConnection[5]); + return PacketHandler.instance().getPacket(DarkMain.CHANNEL, this, this.colorCode.ordinal(), this.renderConnection[0], this.renderConnection[1], this.renderConnection[2], this.renderConnection[3], this.renderConnection[4], this.renderConnection[5]); } /** Reads a tile entity from NBT. */ @@ -202,6 +127,17 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); + //Load color code from nbt + if (nbt.hasKey("ColorCode")) + { + this.colorCode = ColorCode.get(nbt.getInteger("ColorCode")); + } + else + { + this.flagForColorCodeUpdate = true; + } + + //Load fluid tank FluidStack liquid = FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("FluidTank")); if (nbt.hasKey("stored")) { @@ -216,14 +152,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, } if (liquid != null) { - this.fakeTank.setFluid(liquid); - } - for (int i = 0; i < 6; i++) - { - if (nbt.hasKey("Addon" + i)) - { - this.loadOrCreateSubTile(i, nbt.getCompoundTag("Addon" + i)); - } + this.tank.setFluid(liquid); } } @@ -232,122 +161,27 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - if (this.fakeTank != null && this.fakeTank.getFluid() != null) + nbt.setInteger("ColorCode", this.colorCode.ordinal()); + if (this.tank != null && this.tank.getFluid() != null) { - nbt.setTag("FluidTank", this.fakeTank.getFluid().writeToNBT(new NBTTagCompound())); + nbt.setTag("FluidTank", this.tank.getFluid().writeToNBT(new NBTTagCompound())); } - for (int i = 0; i < 6; i++) - { - if (this.subEntities[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - ((TileEntity) this.subEntities[i]).writeToNBT(tag); - nbt.setTag("Addon" + i, tag); - } - } - } - - public boolean addNewExtention(int side, Class partClass) - { - if (partClass == null) - { - return false; - } - try - { - TileEntity tile = partClass.newInstance(); - if (tile instanceof IPipeExtention) - { - this.subEntities[side] = (IPipeExtention) tile; - this.initSubTile(side); - } - } - catch (Exception e) - { - System.out.print("Failed to add a Pipe Extention using Class " + partClass.toString()); - e.printStackTrace(); - } - return false; - } - - public void loadOrCreateSubTile(int side, NBTTagCompound tag) - { - if (tag != null && tag.hasKey("id")) - { - TileEntity tile = TileEntity.createAndLoadEntity(tag); - if (tile instanceof IPipeExtention) - { - this.subEntities[side] = (IPipeExtention) tile; - this.initSubTile(side); - if (worldObj != null) - { - System.out.println("Creating addon " + (worldObj.isRemote ? "Client" : "Server")); - } - else - { - System.out.println("Creating addon Unkown side"); - } - } - } - } - - public void initSubTile(int side) - { - if (this.subEntities[side] instanceof TileEntity) - { - TileEntity tile = (TileEntity) subEntities[side]; - ((IPipeExtention) tile).setPipe(this); - ((IPipeExtention) tile).setDirection(ForgeDirection.getOrientation(side)); - tile.worldObj = this.worldObj; - tile.xCoord = this.xCoord; - tile.yCoord = this.yCoord; - tile.zCoord = this.zCoord; - - this.sendExtentionToClient(side); - } - } - - /** Sends the save data for the tileEntity too the client */ - public void sendExtentionToClient(int side) - { - if (worldObj != null && !worldObj.isRemote && this.subEntities[side] instanceof TileEntity) - { - NBTTagCompound tag = new NBTTagCompound(); - ((TileEntity) this.subEntities[side]).writeToNBT(tag); - if (tag != null && tag.hasKey("id")) - { - System.out.println("Sending TileEntity to Client"); - Packet packet = PacketHandler.instance().getPacket(DarkMain.CHANNEL, this, PacketID.EXTENTION_CREATE.ordinal(), ForgeDirection.getOrientation(side), tag); - PacketHandler.instance().sendPacketToClients(packet, this.worldObj, new Vector3(this), 50); - } - } - } - - public TileEntity getEntitySide(ForgeDirection side) - { - return (TileEntity) this.subEntities[side.ordinal() & 5]; - } /** gets the current color mark of the pipe */ @Override public ColorCode getColor() { - if (this.worldObj == null) - { - return ColorCode.NONE; - } - return ColorCode.get(worldObj.getBlockMetadata(xCoord, yCoord, zCoord)); + return this.colorCode; } /** sets the current color mark of the pipe */ @Override public void setColor(Object cc) { - ColorCode code = ColorCode.get(cc); - if (!worldObj.isRemote && code != this.getColor()) + if (!worldObj.isRemote) { - this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, code.ordinal(), 3); + this.colorCode = ColorCode.get(cc); } } @@ -355,9 +189,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, public String getMeterReading(EntityPlayer user, ForgeDirection side, EnumTools tool) { /* DEBUG CODE ACTIVATERS */ - boolean testConnections = false; - boolean testNetwork = true; - boolean testSubs = false; + boolean testConnections = false, testNetwork = true; /* NORMAL OUTPUT */ String string = ((NetworkPipes) this.getTileNetwork()).pressureProduced + "p " + ((NetworkPipes) this.getTileNetwork()).getNetworkFluid() + " Extra"; @@ -374,22 +206,6 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, { string += " " + this.getTileNetwork().toString(); } - if (testSubs) - { - string += " "; - for (int i = 0; i < 6; i++) - { - if (this.subEntities[i] == null) - { - string += ":" + "Null"; - } - else - { - string += ":" + this.subEntities[i].toString(); - } - } - string += " "; - } return string; } @@ -418,7 +234,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, } /** Checks to make sure the connection is valid to the tileEntity - * + * * @param tileEntity - the tileEntity being checked * @param side - side the connection is too * @return */ @@ -426,10 +242,6 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, { if (!this.worldObj.isRemote && tileEntity != null) { - if (this.subEntities[side.ordinal()] != null) - { - return false; - } if (tileEntity instanceof ITileConnector) { if (((ITileConnector) tileEntity).canTileConnect(Connection.NETWORK, side.getOpposite())) @@ -451,7 +263,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, } else if (tileEntity instanceof IColorCoded) { - if (this.getColor() == ColorCode.NONE || this.getColor() == ((IColorCoded) tileEntity).getColor()) + if (this.getColor() == ColorCode.UNKOWN || this.getColor() == ((IColorCoded) tileEntity).getColor()) { return connectedBlocks.add(tileEntity); } @@ -507,8 +319,7 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, @Override public boolean canTileConnect(Connection type, ForgeDirection dir) { - TileEntity entity = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj); - return entity != null && this.subEntities[dir.ordinal()] == null; + return new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj) != null; } @Override @@ -570,11 +381,11 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, @Override public FluidTank getTank(int index) { - if (this.fakeTank == null) + if (this.tank == null) { - this.fakeTank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME); + this.tank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME); } - return this.fakeTank; + return this.tank; } @Override @@ -607,20 +418,18 @@ public class TileEntityPipe extends TileEntityAdvanced implements IFluidHandler, @Override public boolean canFill(ForgeDirection from, Fluid fluid) { - return this.subEntities[from.ordinal()] == null; + return this.canTileConnect(Connection.FLUIDS, from); } @Override public boolean canDrain(ForgeDirection from, Fluid fluid) { - // TODO Auto-generated method stub - return false; + return this.canTileConnect(Connection.FLUIDS, from); } @Override public boolean mergeDamage(String result) { - // TODO Auto-generated method stub return false; } diff --git a/src/dark/fluid/common/pipes/addon/IPipeExtention.java b/src/dark/fluid/common/pipes/addon/IPipeExtention.java deleted file mode 100644 index 56413265..00000000 --- a/src/dark/fluid/common/pipes/addon/IPipeExtention.java +++ /dev/null @@ -1,34 +0,0 @@ -package dark.fluid.common.pipes.addon; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.prefab.network.IPacketReceiver; -import dark.fluid.common.pipes.TileEntityPipe; - -public interface IPipeExtention extends IPacketReceiver -{ - public boolean canBePlacedOnPipe(TileEntityPipe pipe, int side); - - public TileEntityPipe getPipe(); - - public void setPipe(TileEntityPipe pipe); - - /** how many ticks before next update */ - public int updateTick(); - - /** if this sub tile needs a packet update - * - * @param */ - public boolean shouldSendPacket(boolean server); - - /** data that will be sent to this extension */ - public NBTTagCompound getExtentionPacketData(boolean server); - - /** render class to be used to render this pipe extension of the face of the main pipe */ - public Class getExtentionRenderClass(); - - public void setDirection(ForgeDirection dir); - - public ForgeDirection getDirection(); - -} diff --git a/src/dark/fluid/common/pipes/addon/TileEntityPipeExtention.java b/src/dark/fluid/common/pipes/addon/TileEntityPipeExtention.java deleted file mode 100644 index 1b29b9ed..00000000 --- a/src/dark/fluid/common/pipes/addon/TileEntityPipeExtention.java +++ /dev/null @@ -1,71 +0,0 @@ -package dark.fluid.common.pipes.addon; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.Packet250CustomPayload; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.prefab.network.IPacketReceiver; -import universalelectricity.prefab.tile.TileEntityAdvanced; - -import com.google.common.io.ByteArrayDataInput; - -import dark.fluid.common.pipes.TileEntityPipe; - -/** Pipe Extension for the TileEntityPipe.class is a sub TileEntity and is not loaded the same way as - * a normal TileEntity - * - * @author Rseifert */ -public abstract class TileEntityPipeExtention extends TileEntityAdvanced implements IPipeExtention, IPacketReceiver -{ - - private TileEntityPipe masterPipe = null; - public ForgeDirection direction = ForgeDirection.UNKNOWN; - - @Override - public void initiate() - { - if (this.masterPipe != null) - { - System.out.println("Sending TileEntity to Client from extention.class"); - masterPipe.sendExtentionToClient(direction.ordinal()); - } - } - - @Override - public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) - { - // TODO Auto-generated method stub - - } - - @Override - public TileEntityPipe getPipe() - { - return this.masterPipe; - } - - @Override - public void setPipe(TileEntityPipe pipe) - { - this.masterPipe = pipe; - } - - @Override - public void setDirection(ForgeDirection dir) - { - this.direction = dir; - - } - - @Override - public ForgeDirection getDirection() - { - return this.direction; - } - - @Override - public String toString() - { - return "PipeExtention"; - } -} diff --git a/src/dark/fluid/common/pipes/addon/TileEntityPipeWindow.java b/src/dark/fluid/common/pipes/addon/TileEntityPipeWindow.java deleted file mode 100644 index d610781f..00000000 --- a/src/dark/fluid/common/pipes/addon/TileEntityPipeWindow.java +++ /dev/null @@ -1,101 +0,0 @@ -package dark.fluid.common.pipes.addon; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.Packet250CustomPayload; - -import com.google.common.io.ByteArrayDataInput; - -import dark.fluid.client.render.pipe.RenderPipeWindow; -import dark.fluid.common.pipes.TileEntityPipe; - -public class TileEntityPipeWindow extends TileEntityPipeExtention -{ - - private TileEntityPipe pipe = null; - private boolean shouldUpdate = false; - - @Override - public void updateEntity() - { - // TODO replace the updateEntity method with updateAddon(TileEntityPipe pipe) - super.updateEntity(); - - if (!worldObj.isRemote) - { - if (pipe != null) - { - } - } - else - { - System.out.println("Updating side Client"); - } - } - - @Override - public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) - { - - if (pipe != null && worldObj.isRemote) - { - - } - - } - - @Override - public boolean shouldSendPacket(boolean server) - { - return shouldUpdate; - } - - @Override - public NBTTagCompound getExtentionPacketData(boolean server) - { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean canBePlacedOnPipe(TileEntityPipe pipe, int side) - { - if (pipe != null && pipe.subEntities[side] == null) - { - return true; - } - return false; - } - - @Override - public TileEntityPipe getPipe() - { - return pipe; - } - - @Override - public void setPipe(TileEntityPipe pipe) - { - this.pipe = pipe; - } - - @Override - public int updateTick() - { - return 20; - } - - @Override - public Class getExtentionRenderClass() - { - return RenderPipeWindow.class; - } - - @Override - public String toString() - { - return "PipeWindow"; - } - -} diff --git a/src/dark/fluid/common/prefab/TileEntityFluidStorage.java b/src/dark/fluid/common/prefab/TileEntityFluidStorage.java index fd7b8d92..cd929b58 100644 --- a/src/dark/fluid/common/prefab/TileEntityFluidStorage.java +++ b/src/dark/fluid/common/prefab/TileEntityFluidStorage.java @@ -12,7 +12,7 @@ import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; import universalelectricity.core.vector.Vector3; -import dark.core.interfaces.ColorCode.IColorCoded; +import dark.api.ColorCode.IColorCoded; import dark.core.prefab.helpers.FluidHelper; public abstract class TileEntityFluidStorage extends TileEntityFluidDevice implements IFluidHandler, IColorCoded