package crazypants.enderio.conduit.gui;
import io.netty.buffer.ByteBuf;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
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;
import crazypants.enderio.conduit.liquid.EnderLiquidConduit;
import crazypants.enderio.conduit.liquid.FluidFilter;
import crazypants.enderio.conduit.liquid.ILiquidConduit;
import crazypants.enderio.conduit.packet.AbstractConduitPacket;
import crazypants.enderio.conduit.packet.ConTypeEnum;
public class PacketFluidFilter extends AbstractConduitPacket<ILiquidConduit> implements IMessageHandler<PacketFluidFilter, IMessage>{
private ForgeDirection dir;
private boolean isInput;
private FluidFilter filter;
public PacketFluidFilter() {
}
public PacketFluidFilter(EnderLiquidConduit eConduit, ForgeDirection dir, FluidFilter filter, boolean isInput) {
super(eConduit.getBundle().getEntity(), ConTypeEnum.FLUID);
this.dir = dir;
this.filter = filter;
this.isInput = isInput;
}
@Override
public void toBytes(ByteBuf buf) {
super.toBytes(buf);
buf.writeShort(dir.ordinal());
buf.writeBoolean(isInput);
NBTTagCompound tag = new NBTTagCompound();
filter.writeToNBT(tag);
ByteBufUtils.writeTag(buf, tag);
}
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirection.values()[buf.readShort()];
isInput = buf.readBoolean();
NBTTagCompound tag = ByteBufUtils.readTag(buf);
filter = new FluidFilter();
filter.readFromNBT(tag);
}
@Override
public IMessage onMessage(PacketFluidFilter message, MessageContext ctx) {
ILiquidConduit conduit = message.getTileCasted(ctx);
if(! (conduit instanceof EnderLiquidConduit)) {
return null;
}
EnderLiquidConduit eCon = (EnderLiquidConduit)conduit;
eCon.setFilter(message.dir, message.filter, message.isInput);
message.getWorld(ctx).markBlockForUpdate(message.x, message.y, message.z);
return null;
}
}