@Override
    public void toBytes(ByteBuf dataStream) {
      dataStream.writeInt(packetType.ordinal());

      dataStream.writeInt(coord4D.xCoord);
      dataStream.writeInt(coord4D.yCoord);
      dataStream.writeInt(coord4D.zCoord);

      dataStream.writeInt(coord4D.dimensionId);

      dataStream.writeInt(guiType);

      if (packetType == MinerGuiPacket.CLIENT || packetType == MinerGuiPacket.CLIENT_INDEX) {
        dataStream.writeInt(windowId);
      }

      if (packetType == MinerGuiPacket.SERVER_INDEX || packetType == MinerGuiPacket.CLIENT_INDEX) {
        dataStream.writeInt(index);
      }
    }
    @Override
    public void fromBytes(ByteBuf dataStream) {
      packetType = MinerGuiPacket.values()[dataStream.readInt()];

      coord4D =
          new Coord4D(
              dataStream.readInt(),
              dataStream.readInt(),
              dataStream.readInt(),
              dataStream.readInt());

      guiType = dataStream.readInt();

      if (packetType == MinerGuiPacket.CLIENT || packetType == MinerGuiPacket.CLIENT_INDEX) {
        windowId = dataStream.readInt();
      }

      if (packetType == MinerGuiPacket.SERVER_INDEX || packetType == MinerGuiPacket.CLIENT_INDEX) {
        index = dataStream.readInt();
      }
    }