package crazypants.enderio.machine.power;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
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.machine.RedstoneControlMode;
public class PacketClientState implements IMessage, IMessageHandler<PacketClientState, IMessage> {
private int x;
private int y;
private int z;
private RedstoneControlMode inputMode;
private RedstoneControlMode outputMode;
private int maxInput;
private int maxOutput;
public PacketClientState() {
}
public PacketClientState(TileCapacitorBank capBank) {
x = capBank.xCoord;
y = capBank.yCoord;
z = capBank.zCoord;
inputMode = capBank.getInputControlMode();
outputMode = capBank.getOutputControlMode();
maxInput = capBank.getMaxInput();
maxOutput = capBank.getMaxOutput();
}
@Override
public void toBytes(ByteBuf dos) {
dos.writeInt(x);
dos.writeInt(y);
dos.writeInt(z);
dos.writeShort((short) inputMode.ordinal());
dos.writeShort((short) outputMode.ordinal());
dos.writeInt(maxInput);
dos.writeInt(maxOutput);
}
@Override
public void fromBytes(ByteBuf data) {
x = data.readInt();
y = data.readInt();
z = data.readInt();
short inputOrdinal = data.readShort();
short outputOrdinal = data.readShort();
outputMode = RedstoneControlMode.values()[outputOrdinal];
inputMode = RedstoneControlMode.values()[inputOrdinal];
maxInput = data.readInt();
maxOutput = data.readInt();
}
@Override
public IMessage onMessage(PacketClientState message, MessageContext ctx) {
EntityPlayer player = ctx.getServerHandler().playerEntity;
TileEntity te = player.worldObj.getTileEntity(message.x, message.y, message.z);
if(te instanceof TileCapacitorBank) {
TileCapacitorBank cb = (TileCapacitorBank) te;
cb.setInputControlMode(message.inputMode);
cb.setOutputControlMode(message.outputMode);
cb.setMaxInput(message.maxInput);
cb.setMaxOutput(message.maxOutput);
}
return null;
}
}