@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); } }