package extracells.network.packet; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataOutput; import cpw.mods.fml.relauncher.Side; import extracells.network.AbstractPacket; import extracells.tileentity.TileEntityTerminalFluid; public class PacketTerminalFluid extends AbstractPacket { World world; int x, y, z; int fluidID, amount; byte type; public PacketTerminalFluid(World world, int x, int y, int z, FluidStack stack) { this.type = 0; this.world = world; this.x = x; this.y = y; this.z = z; fluidID = stack.fluidID; amount = stack.amount; } public PacketTerminalFluid(World world, int x, int y, int z, Fluid fluid) { this.type = 1; this.world = world; this.x = x; this.y = y; this.z = z; fluidID = fluid.getID(); } public PacketTerminalFluid() { } @Override public void write(ByteArrayDataOutput out) { out.writeByte(type); out.writeInt(world.provider.dimensionId); out.writeInt(x); out.writeInt(y); out.writeInt(z); out.writeInt(fluidID); out.writeInt(amount); } @Override public void read(ByteArrayDataInput in) throws ProtocolException { type = in.readByte(); world = DimensionManager.getWorld(in.readInt()); x = in.readInt(); y = in.readInt(); z = in.readInt(); fluidID = in.readInt(); amount = in.readInt(); } @Override public void execute(EntityPlayer player, Side side) throws ProtocolException { if (side.isServer()) { TileEntityTerminalFluid tile = (TileEntityTerminalFluid) world.getBlockTileEntity(x, y, z); switch (type) { case 0: tile.requestFluid(new FluidStack(fluidID, amount)); break; case 1: tile.setCurrentFluid(fluidID); break; default: break; } } } }