package mods.custom_flags.packet; import cpw.mods.fml.common.network.Player; import mods.custom_flags.blocks.TileEntityFlagPole; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.util.ArrayList; import java.util.List; /** * Created by Aaron on 3/08/13. */ public class FlagTileEntityDescripPacket extends AbstractPacket{ public static final String channel = "CF.FlagDes"; public static Packet250CustomPayload generatePacket(int x, int y, int z, List<ItemStack> flags){ ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream outputStream = new DataOutputStream(bos); try{ outputStream.writeInt(x); outputStream.writeInt(y); outputStream.writeInt(z); outputStream.writeByte(((byte) flags.size())); for(ItemStack f:flags){ Packet.writeItemStack(f, outputStream); } }catch (Exception e){ e.printStackTrace(); } return new Packet250CustomPayload(channel, bos.toByteArray()); } @Override public void process(INetworkManager manager, Packet250CustomPayload packet, Player player) { DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data)); int x = 0; int y = 0; int z = 0; int size = 0; List<ItemStack> flags = new ArrayList<ItemStack>(); try{ x = inputStream.readInt(); y = inputStream.readInt(); z = inputStream.readInt(); size = inputStream.readByte(); for(int i = 0; i < size; i++){ flags.add(Packet.readItemStack(inputStream)); } }catch (Exception e){ e.printStackTrace(); } TileEntity te = ((EntityPlayer)player).worldObj.getBlockTileEntity(x,y,z); if(te != null && te instanceof TileEntityFlagPole){ ((TileEntityFlagPole) te).clearFlags(); for(ItemStack flag:flags){ ((TileEntityFlagPole)te).setFlag(flag); } } } }