package mcjty.rftools.blocks.monitor;
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 io.netty.buffer.ByteBuf;
import mcjty.lib.varia.Coordinate;
import mcjty.lib.varia.Logging;
import net.minecraft.tileentity.TileEntity;
public class PacketContentsMonitor implements IMessage, IMessageHandler<PacketContentsMonitor, IMessage> {
private int x;
private int y;
private int z;
private Coordinate monitor;
private int alarmLevel;
private RFMonitorMode alarmMode;
public PacketContentsMonitor() {
monitor = new Coordinate(-1, -1, -1);
alarmLevel = -1;
alarmMode = RFMonitorMode.MODE_OFF;
}
public PacketContentsMonitor(int x, int y, int z, Coordinate monitor) {
this();
this.x = x;
this.y = y;
this.z = z;
this.monitor = monitor;
}
public PacketContentsMonitor(int x, int y, int z, RFMonitorMode alarmMode, int alarmLevel) {
this();
this.x = x;
this.y = y;
this.z = z;
this.alarmLevel = alarmLevel;
this.alarmMode = alarmMode;
}
@Override
public void fromBytes(ByteBuf buf) {
x = buf.readInt();
y = buf.readInt();
z = buf.readInt();
monitor = new Coordinate(buf.readInt(), buf.readInt(), buf.readInt());
alarmLevel = buf.readByte();
alarmMode = RFMonitorMode.getModeFromIndex(buf.readByte());
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(x);
buf.writeInt(y);
buf.writeInt(z);
buf.writeInt(monitor.getX());
buf.writeInt(monitor.getY());
buf.writeInt(monitor.getZ());
buf.writeByte(alarmLevel);
buf.writeByte(alarmMode.getIndex());
}
@Override
public IMessage onMessage(PacketContentsMonitor message, MessageContext ctx) {
TileEntity te = ctx.getServerHandler().playerEntity.worldObj.getTileEntity(message.x, message.y, message.z);
if (te instanceof RFMonitorBlockTileEntity) {
RFMonitorBlockTileEntity monitorBlockTileEntity = (RFMonitorBlockTileEntity) te;
if (message.monitor.getY() != -1) {
monitorBlockTileEntity.setMonitor(message.monitor);
}
if (message.alarmLevel != -1) {
monitorBlockTileEntity.setAlarm(message.alarmMode, message.alarmLevel);
}
} else if (te instanceof LiquidMonitorBlockTileEntity) {
LiquidMonitorBlockTileEntity liquidMonitorBlockTileEntity = (LiquidMonitorBlockTileEntity) te;
if (message.monitor.getY() != -1) {
liquidMonitorBlockTileEntity.setMonitor(message.monitor);
}
if (message.alarmLevel != -1) {
liquidMonitorBlockTileEntity.setAlarm(message.alarmMode, message.alarmLevel);
}
} else {
Logging.log("TileEntity is not a RFMonitorBlockTileEntity!");
}
return null;
}
}