@Override
 public void toBytes(ByteBuf buf) {
   buf.writeInt(pos.getX());
   buf.writeInt(pos.getY());
   buf.writeInt(pos.getZ());
   ByteBufUtils.writeItemStack(buf, activeItem);
   MagicAmounts.writeAmounts(buf, remaining);
 }
 @Override
 public void fromBytes(ByteBuf buf) {
   pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
   activeItem = ByteBufUtils.readItemStack(buf);
   remaining = MagicAmounts.readAmounts(buf);
 }
 public EssentializerTileUpdate(TileEssentializer essentializer) {
   this.pos = essentializer.getPos();
   this.activeItem = essentializer.getStackInSlot(0);
   this.remaining = MagicAmounts.copyOf(essentializer.remainingToConvert);
 }