diff --git a/common/buildcraft/core/network/PacketIds.java b/common/buildcraft/core/network/PacketIds.java index c456a7c1..29dc0748 100644 --- a/common/buildcraft/core/network/PacketIds.java +++ b/common/buildcraft/core/network/PacketIds.java @@ -10,7 +10,6 @@ public class PacketIds { public static final int SELECTION_ASSEMBLY_GET = 20; public static final int SELECTION_ASSEMBLY = 21; public static final int SELECTION_ASSEMBLY_SEND = 22; - public static final int DIAMOND_PIPE_CONTENTS = 30; public static final int DIAMOND_PIPE_SELECT = 31; public static final int GATE_ACTIONS = 40; public static final int GATE_REQUEST_INIT = 41; diff --git a/common/buildcraft/transport/network/PacketHandlerTransport.java b/common/buildcraft/transport/network/PacketHandlerTransport.java index adb59cd6..b1dba611 100644 --- a/common/buildcraft/transport/network/PacketHandlerTransport.java +++ b/common/buildcraft/transport/network/PacketHandlerTransport.java @@ -36,11 +36,6 @@ public class PacketHandlerTransport implements IPacketHandler { PacketUpdate packet = new PacketUpdate(); switch (packetID) { - case PacketIds.DIAMOND_PIPE_CONTENTS: - PacketNBT packetN = new PacketNBT(); - packetN.readData(data); - onDiamondContents((EntityPlayer)player, packetN); - break; case PacketIds.PIPE_POWER: PacketPowerUpdate packetPower= new PacketPowerUpdate(); packetPower.readData(data); @@ -245,42 +240,6 @@ public class PacketHandlerTransport implements IPacketHandler { ((PipeTransportLiquids) pipe.pipe.transport).handleLiquidPacket(packetLiquid); } - /** - * Updates contents of a diamond pipe. - * - * @param packet - */ - private void onDiamondContents(EntityPlayer player, PacketNBT packet) { - - World world = player.worldObj; - - if (!world.blockExists(packet.posX, packet.posY, packet.posZ)) - return; - - TileEntity entity = world.getBlockTileEntity(packet.posX, packet.posY, packet.posZ); - if (!(entity instanceof TileGenericPipe)) - return; - - TileGenericPipe pipe = (TileGenericPipe) entity; - if (pipe.pipe == null) - return; - - if (!(pipe.pipe.logic instanceof PipeLogicDiamond)) - return; - - ((PipeLogicDiamond) pipe.pipe.logic).handleFilterSet(packet); - - // / FIXME: Unsure how to handle this - /* - BlockIndex index = new BlockIndex(packet.posX, packet.posY, packet.posZ); - - if (BuildCraftCore.bufferedDescriptions.containsKey(index)) - BuildCraftCore.bufferedDescriptions.remove(index); - - BuildCraftCore.bufferedDescriptions.put(index, packet); - */ - } - /******************** SERVER ******************** **/ /** diff --git a/common/buildcraft/transport/pipes/PipeItemsDiamond.java b/common/buildcraft/transport/pipes/PipeItemsDiamond.java index f49299d9..031a93a8 100644 --- a/common/buildcraft/transport/pipes/PipeItemsDiamond.java +++ b/common/buildcraft/transport/pipes/PipeItemsDiamond.java @@ -8,21 +8,28 @@ package buildcraft.transport.pipes; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; import java.util.LinkedList; +import cpw.mods.fml.common.FMLLog; + +import net.minecraft.src.Item; +import net.minecraft.src.ItemStack; +import net.minecraft.src.NBTBase; +import net.minecraft.src.NBTTagCompound; import buildcraft.BuildCraftTransport; import buildcraft.api.core.Orientations; import buildcraft.api.core.Position; import buildcraft.api.transport.IPipedItem; import buildcraft.core.DefaultProps; +import buildcraft.core.network.IClientState; import buildcraft.transport.IPipeTransportItemsHook; import buildcraft.transport.Pipe; import buildcraft.transport.PipeTransportItems; -import net.minecraft.src.Item; -import net.minecraft.src.ItemStack; - -public class PipeItemsDiamond extends Pipe implements IPipeTransportItemsHook { +public class PipeItemsDiamond extends Pipe implements IPipeTransportItemsHook, IClientState { public PipeItemsDiamond(int itemID) { super(new PipeTransportItems(), new PipeLogicDiamond(), itemID); @@ -86,4 +93,20 @@ public class PipeItemsDiamond extends Pipe implements IPipeTransportItemsHook { ((PipeTransportItems) transport).defaultReajustSpeed(item); } + // ICLIENTSTATE + @Override + public void writeData(DataOutputStream data) throws IOException { + NBTTagCompound nbt = new NBTTagCompound(); + ((PipeLogicDiamond) logic).writeToNBT(nbt); + NBTBase.writeNamedTag(nbt, data); + } + + @Override + public void readData(DataInputStream data) throws IOException { + NBTBase nbt = NBTBase.readNamedTag(data); + if (nbt instanceof NBTTagCompound) { + logic.readFromNBT((NBTTagCompound) nbt); + } + } + } diff --git a/common/buildcraft/transport/pipes/PipeLogicDiamond.java b/common/buildcraft/transport/pipes/PipeLogicDiamond.java index 9414a860..a5f6d5d4 100644 --- a/common/buildcraft/transport/pipes/PipeLogicDiamond.java +++ b/common/buildcraft/transport/pipes/PipeLogicDiamond.java @@ -29,7 +29,6 @@ import net.minecraft.src.NBTTagCompound; public class PipeLogicDiamond extends PipeLogic implements ISpecialInventory { private SimpleInventory filters = new SimpleInventory(54, "items", 1); - private final SafeTimeTracker tracker = new SafeTimeTracker(); /* PIPE LOGIC */ @Override @@ -50,14 +49,6 @@ public class PipeLogicDiamond extends PipeLogic implements ISpecialInventory { return true; } - /* UPDATING */ - @Override - public void updateEntity() { - if (tracker.markTimeIfDelay(worldObj, 20 * BuildCraftCore.updateFactor)) - if (CoreProxy.proxy.isSimulating(container.worldObj)) - sendFilterSet(); - } - /* SAVING & LOADING */ @Override public void readFromNBT(NBTTagCompound nbttagcompound) { @@ -96,8 +87,8 @@ public class PipeLogicDiamond extends PipeLogic implements ISpecialInventory { public ItemStack decrStackSize(int i, int j) { ItemStack stack = filters.decrStackSize(i, j); - if (CoreProxy.proxy.isSimulating(container.worldObj)) - sendFilterSet(); + if (CoreProxy.proxy.isSimulating(worldObj)) + worldObj.markBlockNeedsUpdate(xCoord, yCoord, zCoord); return stack; } @@ -106,22 +97,9 @@ public class PipeLogicDiamond extends PipeLogic implements ISpecialInventory { public void setInventorySlotContents(int i, ItemStack itemstack) { filters.setInventorySlotContents(i, itemstack); - if (CoreProxy.proxy.isSimulating(container.worldObj)) - sendFilterSet(); + if (CoreProxy.proxy.isSimulating(worldObj)) + worldObj.markBlockNeedsUpdate(xCoord, yCoord, zCoord); } - /* SERVER SIDE */ - public void sendFilterSet() { - NBTTagCompound nbttagcompound = new NBTTagCompound(); - this.writeToNBT(nbttagcompound); - PacketNBT packet = new PacketNBT(PacketIds.DIAMOND_PIPE_CONTENTS, nbttagcompound, xCoord, yCoord, zCoord); - CoreProxy.proxy.sendToPlayers(packet.getPacket(), worldObj, xCoord, yCoord, zCoord, DefaultProps.NETWORK_UPDATE_RANGE); - } - - /* CLIENT SIDE */ - public void handleFilterSet(PacketNBT packet) { - this.readFromNBT(packet.getTagCompound()); - } - }