package crazypants.enderio.machine.transceiver; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import com.enderio.core.common.network.MessageTileEntity; import com.enderio.core.common.network.NetworkUtil; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import crazypants.enderio.conduit.item.filter.ItemFilter; public class PacketItemFilter extends MessageTileEntity<TileTransceiver> implements IMessageHandler<PacketItemFilter, IMessage> { private boolean isSend; private ItemFilter filter; public PacketItemFilter() { } public PacketItemFilter(TileTransceiver te, boolean isSend) { super(te); this.isSend = isSend; if(isSend) { filter = te.getSendItemFilter(); } else { filter = te.getReceiveItemFilter(); } } @Override public void toBytes(ByteBuf buf) { super.toBytes(buf); buf.writeBoolean(isSend); NBTTagCompound tag = new NBTTagCompound(); filter.writeToNBT(tag); NetworkUtil.writeNBTTagCompound(tag, buf); } @Override public void fromBytes(ByteBuf buf) { super.fromBytes(buf); isSend = buf.readBoolean(); NBTTagCompound tag = NetworkUtil.readNBTTagCompound(buf); filter = new ItemFilter(); filter.readFromNBT(tag); } @Override public IMessage onMessage(PacketItemFilter message, MessageContext ctx) { EntityPlayer player = ctx.getServerHandler().playerEntity; TileTransceiver tile = message.getTileEntity(player.worldObj); boolean isSend = message.isSend; ItemFilter filter = message.filter; if(tile != null && filter != null) { if(isSend) { tile.setSendItemFilter(filter); } else { tile.setRecieveItemFilter(filter); } } return null; } }