package crazypants.enderio.machine.vacuum;
import io.netty.buffer.ByteBuf;
import net.minecraft.item.ItemStack;
import com.enderio.core.common.network.MessageTileEntity;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
public class PacketVaccumChest extends MessageTileEntity<TileVacuumChest> implements IMessageHandler<PacketVaccumChest, IMessage> {
public static final int CMD_SET_RANGE = 0;
public static final int CMD_SET_SLOT = 1;
public static final int CMD_SET_BLACKLIST = 2;
public static final int CMD_SET_MATCHMETA = 3;
private int cmd;
private int value;
private ItemStack stack;
public PacketVaccumChest() {
}
private PacketVaccumChest(TileVacuumChest tile, int cmd) {
super(tile);
this.cmd = cmd;
}
public static PacketVaccumChest setRange(TileVacuumChest tile, int range) {
PacketVaccumChest msg = new PacketVaccumChest(tile, CMD_SET_RANGE);
msg.value = range;
tile.setRange(range);
return msg;
}
public static PacketVaccumChest setFilterSlot(TileVacuumChest tile, int slot, ItemStack stack) {
PacketVaccumChest msg = new PacketVaccumChest(tile, CMD_SET_SLOT);
msg.value = slot;
msg.stack = stack;
tile.setItemFilterSlot(slot, stack);
return msg;
}
public static PacketVaccumChest setFilterBlacklist(TileVacuumChest tile, boolean isBlacklist) {
PacketVaccumChest msg = new PacketVaccumChest(tile, CMD_SET_BLACKLIST);
msg.value = isBlacklist ? 1 : 0;
tile.setFilterBlacklist(isBlacklist);
return msg;
}
public static PacketVaccumChest setFilterMatchMeta(TileVacuumChest tile, boolean matchMeta) {
PacketVaccumChest msg = new PacketVaccumChest(tile, CMD_SET_MATCHMETA);
msg.value = matchMeta ? 1 : 0;
tile.setFilterMatchMeta(matchMeta);
return msg;
}
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
cmd = buf.readByte() & 255;
value = buf.readInt();
stack = ByteBufUtils.readItemStack(buf);
}
@Override
public void toBytes(ByteBuf buf) {
super.toBytes(buf);
buf.writeByte(cmd);
buf.writeInt(value);
ByteBufUtils.writeItemStack(buf, stack);
}
@Override
public IMessage onMessage(PacketVaccumChest msg, MessageContext ctx) {
TileVacuumChest te = msg.getTileEntity(ctx.getServerHandler().playerEntity.worldObj);
if (te != null) {
switch (msg.cmd) {
case CMD_SET_RANGE:
te.setRange(msg.value);
break;
case CMD_SET_SLOT:
te.setItemFilterSlot(msg.value, msg.stack);
break;
case CMD_SET_BLACKLIST:
te.setFilterBlacklist(msg.value != 0);
break;
case CMD_SET_MATCHMETA:
te.setFilterMatchMeta(msg.value != 0);
break;
}
}
return null;
}
}