From ac4d930aac16f1676789491abc7245e2a3f8ed7e Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 10 Jun 2014 09:53:46 -0400 Subject: [PATCH] Added to TileMechanical packet system --- .../energy/grid/TileMechanical.java | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/TileMechanical.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/TileMechanical.java index 62338398c..d91ff6cb5 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/TileMechanical.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/TileMechanical.java @@ -1,11 +1,15 @@ package resonantinduction.mechanical.energy.grid; +import java.io.IOException; + import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.packet.Packet; import net.minecraftforge.common.ForgeDirection; import resonant.api.grid.INode; import resonant.api.grid.INodeProvider; +import resonant.lib.References; import resonant.lib.content.module.TileBase; import resonant.lib.network.IPacketReceiver; import resonant.lib.network.IPacketReceiverWithID; @@ -21,6 +25,7 @@ import com.google.common.io.ByteArrayDataInput; * @author Calclavia */ public abstract class TileMechanical extends TileBase implements INodeProvider, IPacketReceiverWithID { + protected static final int PACKET_NBT = 0; protected static final int PACKET_VELOCITY = 1; /** Node that handles most mechanical actions */ @@ -74,6 +79,14 @@ public abstract class TileMechanical extends TileBase implements INodeProvider, return mechanicalNode; return null; } + + @Override + public Packet getDescriptionPacket() + { + NBTTagCompound tag = new NBTTagCompound(); + writeToNBT(tag); + return References.PACKET_TILE.getPacketWithID(PACKET_NBT, this, tag); + } private void sendRotationPacket() { @@ -83,14 +96,27 @@ public abstract class TileMechanical extends TileBase implements INodeProvider, @Override public boolean onReceivePacket(int id, ByteArrayDataInput data, EntityPlayer player, Object... extra) { - if (!world().isRemote) + try { - if (id == PACKET_VELOCITY) + if (!world().isRemote) { - mechanicalNode.angularVelocity = data.readDouble(); - return true; + if (id == PACKET_NBT) + { + readFromNBT(PacketHandler.readNBTTagCompound(data)); + return true; + } + else if (id == PACKET_VELOCITY) + { + mechanicalNode.angularVelocity = data.readDouble(); + return true; + } } } + catch (IOException e) + { + e.printStackTrace(); + return true; + } return false; }