package crazypants.enderio.machine.monitor; 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.Log; public class PacketPowerMonitor implements IMessage, IMessageHandler<PacketPowerMonitor, IMessage> { int x; int y; int z; boolean engineControlEnabled; float startLevel; float stopLevel; public PacketPowerMonitor() { } public PacketPowerMonitor(TilePowerMonitor pm) { x = pm.xCoord; y = pm.yCoord; z = pm.zCoord; engineControlEnabled = pm.engineControlEnabled; startLevel = pm.startLevel; stopLevel = pm.stopLevel; } @Override public void toBytes(ByteBuf buf) { buf.writeInt(x); buf.writeInt(y); buf.writeInt(z); buf.writeBoolean(engineControlEnabled); buf.writeFloat(startLevel); buf.writeFloat(stopLevel); } @Override public void fromBytes(ByteBuf buffer) { x = buffer.readInt(); y = buffer.readInt(); z = buffer.readInt(); engineControlEnabled = buffer.readBoolean(); startLevel = buffer.readFloat(); stopLevel = buffer.readFloat(); } @Override public IMessage onMessage(PacketPowerMonitor message, MessageContext ctx) { EntityPlayer player = ctx.getServerHandler().playerEntity; TileEntity te = player.worldObj.getTileEntity(message.x, message.y, message.z); if(!(te instanceof TilePowerMonitor)) { Log.warn("createPowerMonitotPacket: Could not handle packet as TileEntity was not a TilePowerMonitor."); return null; } TilePowerMonitor pm = (TilePowerMonitor) te; pm.engineControlEnabled = message.engineControlEnabled; pm.startLevel = message.startLevel; pm.stopLevel = message.stopLevel; player.worldObj.markBlockForUpdate(x, y, z); return null; } }