@Override public void toBytes(ByteBuf buffer) { buffer.writeInt(packetType.ordinal()); if (packetType == PortableTeleporterPacketType.DATA_REQUEST) { if (frequency != null) { buffer.writeBoolean(true); PacketHandler.writeString(buffer, frequency.name); buffer.writeBoolean(frequency.publicFreq); } else { buffer.writeBoolean(false); } } else if (packetType == PortableTeleporterPacketType.DATA_RESPONSE) { if (frequency != null) { buffer.writeBoolean(true); PacketHandler.writeString(buffer, frequency.name); buffer.writeBoolean(frequency.publicFreq); } else { buffer.writeBoolean(false); } buffer.writeByte(status); ArrayList data = new ArrayList(); data.add(publicCache.size()); for (Frequency freq : publicCache) { freq.write(data); } data.add(privateCache.size()); for (Frequency freq : privateCache) { freq.write(data); } PacketHandler.encode(data.toArray(), buffer); } else if (packetType == PortableTeleporterPacketType.SET_FREQ) { PacketHandler.writeString(buffer, frequency.name); buffer.writeBoolean(frequency.publicFreq); } else if (packetType == PortableTeleporterPacketType.DEL_FREQ) { PacketHandler.writeString(buffer, frequency.name); buffer.writeBoolean(frequency.publicFreq); } else if (packetType == PortableTeleporterPacketType.TELEPORT) { PacketHandler.writeString(buffer, frequency.name); buffer.writeBoolean(frequency.publicFreq); } }
@Override public void fromBytes(ByteBuf buffer) { packetType = PortableTeleporterPacketType.values()[buffer.readInt()]; if (packetType == PortableTeleporterPacketType.DATA_REQUEST) { if (buffer.readBoolean()) { frequency = new Frequency(PacketHandler.readString(buffer), null).setPublic(buffer.readBoolean()); } } else if (packetType == PortableTeleporterPacketType.DATA_RESPONSE) { if (buffer.readBoolean()) { frequency = new Frequency(PacketHandler.readString(buffer), null).setPublic(buffer.readBoolean()); } status = buffer.readByte(); int amount = buffer.readInt(); for (int i = 0; i < amount; i++) { publicCache.add(new Frequency(buffer)); } amount = buffer.readInt(); for (int i = 0; i < amount; i++) { privateCache.add(new Frequency(buffer)); } } else if (packetType == PortableTeleporterPacketType.SET_FREQ) { frequency = new Frequency(PacketHandler.readString(buffer), null).setPublic(buffer.readBoolean()); } else if (packetType == PortableTeleporterPacketType.DEL_FREQ) { frequency = new Frequency(PacketHandler.readString(buffer), null).setPublic(buffer.readBoolean()); } else if (packetType == PortableTeleporterPacketType.TELEPORT) { frequency = new Frequency(PacketHandler.readString(buffer), null).setPublic(buffer.readBoolean()); } }