diff --git a/L2J_Mobius_C4_ScionsOfDestiny/.classpath b/L2J_Mobius_C4_ScionsOfDestiny/.classpath index 21e4730bad..36387954d8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/.classpath +++ b/L2J_Mobius_C4_ScionsOfDestiny/.classpath @@ -6,6 +6,7 @@ + diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/main/Server.ini b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/main/Server.ini index babee464c8..01c5d54dfd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/main/Server.ini +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/main/Server.ini @@ -130,6 +130,9 @@ ScheduledThreadPoolCount = 160 # Default: 120 InstantThreadPoolCount = 120 +# Default: 40 +UrgentPacketThreadCoreSize = 40 + # --------------------------------------------------------------------------- # Misc Player Settings diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Antharas.java b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Antharas.java index a175651d2f..37fd5637c9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Antharas.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Antharas.java @@ -46,7 +46,7 @@ import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.spawn.Spawn; import org.l2jmobius.gameserver.model.zone.type.BossZone; import org.l2jmobius.gameserver.network.serverpackets.Earthquake; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; @@ -560,7 +560,7 @@ public class Antharas extends Quest } } - protected void broadcastPacket(GameServerPacket mov) + protected void broadcastPacket(IClientOutgoingPacket mov) { if (_zone != null) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/libs/netty-all-4.1.50.Final-sources.jar b/L2J_Mobius_C4_ScionsOfDestiny/dist/libs/netty-all-4.1.50.Final-sources.jar new file mode 100644 index 0000000000..d40b0f6ac9 Binary files /dev/null and b/L2J_Mobius_C4_ScionsOfDestiny/dist/libs/netty-all-4.1.50.Final-sources.jar differ diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/libs/netty-all-4.1.50.Final.jar b/L2J_Mobius_C4_ScionsOfDestiny/dist/libs/netty-all-4.1.50.Final.jar new file mode 100644 index 0000000000..f8b1557478 Binary files /dev/null and b/L2J_Mobius_C4_ScionsOfDestiny/dist/libs/netty-all-4.1.50.Final.jar differ diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/Config.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/Config.java index 6fe237bee6..39c5ab92de 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/Config.java @@ -106,11 +106,9 @@ public class Config // others private static final String BANNED_IP_FILE = "./config/others/banned_ip.cfg"; public static final String SERVER_NAME_FILE = "./config/others/servername.xml"; - // legacy - private static final String LEGACY_BANNED_IP = "./config/banned_ip.cfg"; // -------------------------------------------------- - // Constants + // Variable Definitions // -------------------------------------------------- public static final String EOL = System.lineSeparator(); @@ -1129,6 +1127,7 @@ public class Config public static int MAX_PROTOCOL_REVISION; public static int SCHEDULED_THREAD_POOL_COUNT; public static int INSTANT_THREAD_POOL_COUNT; + public static int IO_PACKET_THREAD_CORE_SIZE; public static String CNAME_TEMPLATE; public static String PET_NAME_TEMPLATE; public static String CLAN_NAME_TEMPLATE; @@ -1159,18 +1158,6 @@ public class Config public static long SESSION_TTL; public static int MAX_LOGINSESSIONS; - /** MMO settings */ - public static final int MMO_SELECTOR_SLEEP_TIME = 20; // default 20 - public static final int MMO_MAX_SEND_PER_PASS = 80; // default 80 - public static final int MMO_MAX_READ_PER_PASS = 80; // default 80 - public static final int MMO_HELPER_BUFFER_COUNT = 20; // default 20 - - /** Client Packets Queue settings */ - public static final int CLIENT_PACKET_QUEUE_SIZE = 14; // default MMO_MAX_READ_PER_PASS + 2 - - /** Packet handler settings */ - public static final boolean PACKET_HANDLER_DEBUG = false; - public static void loadAccessConfig() { final PropertiesParser accessConfig = new PropertiesParser(ACCESS_CONFIG_FILE); @@ -1229,6 +1216,7 @@ public class Config } SCHEDULED_THREAD_POOL_COUNT = serverConfig.getInt("ScheduledThreadPoolCount", 40); INSTANT_THREAD_POOL_COUNT = serverConfig.getInt("InstantThreadPoolCount", 20); + IO_PACKET_THREAD_CORE_SIZE = serverConfig.getInt("UrgentPacketThreadCoreSize", 20); CNAME_TEMPLATE = serverConfig.getString("CnameTemplate", ".*"); PET_NAME_TEMPLATE = serverConfig.getString("PetNameTemplate", ".*"); CLAN_NAME_TEMPLATE = serverConfig.getString("ClanNameTemplate", ".*"); @@ -2962,12 +2950,6 @@ public class Config public static void loadBanFile() { File file = new File(BANNED_IP_FILE); - if (!file.exists()) - { - // old file position - file = new File(LEGACY_BANNED_IP); - } - if (file.exists() && file.isFile()) { FileInputStream fis = null; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/MMOClient.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/MMOClient.java deleted file mode 100644 index 331a9475f1..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/MMOClient.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.nio.ByteBuffer; - -/** - * @author KenM - * @param - */ -public abstract class MMOClient> -{ - private final T _con; - - public MMOClient(T con) - { - _con = con; - } - - public T getConnection() - { - return _con; - } - - public abstract boolean decrypt(ByteBuffer buf, int size); - - public abstract boolean encrypt(ByteBuffer buf, int size); - - protected abstract void onDisconnection(); - - protected abstract void onForcedDisconnection(); -} \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/MMOConnection.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/MMOConnection.java deleted file mode 100644 index 116f68d509..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/MMOConnection.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.Socket; -import java.nio.ByteBuffer; -import java.nio.channels.CancelledKeyException; -import java.nio.channels.ReadableByteChannel; -import java.nio.channels.SelectionKey; -import java.nio.channels.WritableByteChannel; - -/** - * @author KenM - * @param - */ -public class MMOConnection> -{ - private final SelectorThread _selectorThread; - - private final Socket _socket; - - private final InetAddress _address; - - private final ReadableByteChannel _readableByteChannel; - - private final WritableByteChannel _writableByteChannel; - - private final int _port; - - private final NioNetStackList> _sendQueue; - - private final SelectionKey _selectionKey; - - private ByteBuffer _readBuffer; - - private ByteBuffer _primaryWriteBuffer; - - private ByteBuffer _secondaryWriteBuffer; - - private volatile boolean _pendingClose; - - private T _client; - - public MMOConnection(SelectorThread selectorThread, Socket socket, SelectionKey key) - { - _selectorThread = selectorThread; - _socket = socket; - _address = socket.getInetAddress(); - _readableByteChannel = socket.getChannel(); - _writableByteChannel = socket.getChannel(); - _port = socket.getPort(); - _selectionKey = key; - _sendQueue = new NioNetStackList<>(); - } - - final void setClient(T client) - { - _client = client; - } - - public T getClient() - { - return _client; - } - - public void sendPacket(SendablePacket sp) - { - sp._client = _client; - if (_pendingClose) - { - return; - } - - synchronized (getSendQueue()) - { - _sendQueue.addLast(sp); - } - - if (!_sendQueue.isEmpty()) - { - try - { - _selectionKey.interestOps(_selectionKey.interestOps() | SelectionKey.OP_WRITE); - } - catch (CancelledKeyException e) - { - // ignore - } - } - } - - final SelectionKey getSelectionKey() - { - return _selectionKey; - } - - public InetAddress getInetAddress() - { - return _address; - } - - public int getPort() - { - return _port; - } - - final void close() throws IOException - { - _socket.close(); - } - - final int read(ByteBuffer buf) throws IOException - { - return _readableByteChannel.read(buf); - } - - final int write(ByteBuffer buf) throws IOException - { - return _writableByteChannel.write(buf); - } - - final void createWriteBuffer(ByteBuffer buf) - { - if (_primaryWriteBuffer == null) - { - _primaryWriteBuffer = _selectorThread.getPooledBuffer(); - _primaryWriteBuffer.put(buf); - } - else - { - final ByteBuffer temp = _selectorThread.getPooledBuffer(); - temp.put(buf); - - final int remaining = temp.remaining(); - _primaryWriteBuffer.flip(); - final int limit = _primaryWriteBuffer.limit(); - if (remaining >= _primaryWriteBuffer.remaining()) - { - temp.put(_primaryWriteBuffer); - _selectorThread.recycleBuffer(_primaryWriteBuffer); - _primaryWriteBuffer = temp; - } - else - { - _primaryWriteBuffer.limit(remaining); - temp.put(_primaryWriteBuffer); - _primaryWriteBuffer.limit(limit); - _primaryWriteBuffer.compact(); - _secondaryWriteBuffer = _primaryWriteBuffer; - } - _primaryWriteBuffer = temp; - } - } - - final boolean hasPendingWriteBuffer() - { - return _primaryWriteBuffer != null; - } - - final void movePendingWriteBufferTo(ByteBuffer dest) - { - _primaryWriteBuffer.flip(); - dest.put(_primaryWriteBuffer); - _selectorThread.recycleBuffer(_primaryWriteBuffer); - _primaryWriteBuffer = _secondaryWriteBuffer; - _secondaryWriteBuffer = null; - } - - final void setReadBuffer(ByteBuffer buf) - { - _readBuffer = buf; - } - - final ByteBuffer getReadBuffer() - { - return _readBuffer; - } - - public boolean isClosed() - { - return _pendingClose; - } - - final NioNetStackList> getSendQueue() - { - return _sendQueue; - } - - /* - * final SendablePacket getClosePacket() { return _closePacket; } - */ - - @SuppressWarnings("unchecked") - public void close(SendablePacket sp) - { - close(new SendablePacket[] - { - sp - }); - } - - public void close(SendablePacket[] closeList) - { - if (_pendingClose) - { - return; - } - - synchronized (getSendQueue()) - { - if (!_pendingClose) - { - _pendingClose = true; - _sendQueue.clear(); - for (SendablePacket sp : closeList) - { - _sendQueue.addLast(sp); - } - } - } - - try - { - _selectionKey.interestOps(_selectionKey.interestOps() & ~SelectionKey.OP_WRITE); - } - catch (CancelledKeyException e) - { - // ignore - } - - // _closePacket = sp; - _selectorThread.closeConnection(this); - } - - final void releaseBuffers() - { - if (_primaryWriteBuffer != null) - { - _selectorThread.recycleBuffer(_primaryWriteBuffer); - _primaryWriteBuffer = null; - if (_secondaryWriteBuffer != null) - { - _selectorThread.recycleBuffer(_secondaryWriteBuffer); - _secondaryWriteBuffer = null; - } - } - - if (_readBuffer != null) - { - _selectorThread.recycleBuffer(_readBuffer); - _readBuffer = null; - } - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/NioNetStackList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/NioNetStackList.java deleted file mode 100644 index a58719ca6b..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/NioNetStackList.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -/** - * @author Forsaiken - * @param - */ -public class NioNetStackList -{ - private final NioNetStackNode _start = new NioNetStackNode(); - - private final NioNetStackNodeBuf _buf = new NioNetStackNodeBuf(); - - private NioNetStackNode _end = new NioNetStackNode(); - - public NioNetStackList() - { - clear(); - } - - public void addLast(E elem) - { - final NioNetStackNode newEndNode = _buf.removeFirst(); - _end._value = elem; - _end._next = newEndNode; - _end = newEndNode; - } - - public E removeFirst() - { - final NioNetStackNode old = _start._next; - final E value = old._value; - _start._next = old._next; - _buf.addLast(old); - return value; - } - - public boolean isEmpty() - { - return _start._next == _end; - } - - public void clear() - { - _start._next = _end; - } - - protected final class NioNetStackNode - { - protected NioNetStackNode _next; - - protected E _value; - } - - private final class NioNetStackNodeBuf - { - private final NioNetStackNode _start = new NioNetStackNode(); - - private NioNetStackNode _end = new NioNetStackNode(); - - NioNetStackNodeBuf() - { - _start._next = _end; - } - - final void addLast(NioNetStackNode node) - { - node._next = null; - node._value = null; - _end._next = node; - _end = node; - } - - final NioNetStackNode removeFirst() - { - if (_start._next == _end) - { - return new NioNetStackNode(); - } - - final NioNetStackNode old = _start._next; - _start._next = old._next; - return old; - } - } -} \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/NioNetStringBuffer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/NioNetStringBuffer.java deleted file mode 100644 index 7bc2a638fa..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/NioNetStringBuffer.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.nio.BufferOverflowException; - -/** - * @author Forsaiken - */ -public class NioNetStringBuffer -{ - private final char[] _buf; - - private final int _size; - - private int _len; - - public NioNetStringBuffer(int size) - { - _buf = new char[size]; - _size = size; - _len = 0; - } - - public void clear() - { - _len = 0; - } - - public void append(char c) - { - if (_len < _size) - { - _buf[_len++] = c; - } - else - { - throw new BufferOverflowException(); - } - } - - @Override - public String toString() - { - return new String(_buf, 0, _len); - } -} \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/ReceivablePacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/ReceivablePacket.java deleted file mode 100644 index 37fed721b8..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/ReceivablePacket.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.nio.ByteBuffer; - -/** - * @author KenM - * @param - */ -public abstract class ReceivablePacket>extends AbstractPacket implements Runnable -{ - NioNetStringBuffer _sbuf; - - protected ReceivablePacket() - { - } - - protected abstract boolean read(); - - @Override - public abstract void run(); - - /** - * Reads byte[] from the buffer.
- * Reads as many bytes as the length of the array. - * @param dst : the byte array which will be filled with the data. - */ - protected final void readB(byte[] dst) - { - _buf.get(dst); - } - - /** - * Reads byte[] from the buffer.
- * Reads as many bytes as the given length (len). Starts to fill the byte array from the given offset to offset + len. - * @param dst : the byte array which will be filled with the data. - * @param offset : starts to fill the byte array from the given offset. - * @param len : the given length of bytes to be read. - */ - protected final void readB(byte[] dst, int offset, int len) - { - _buf.get(dst, offset, len); - } - - /** - * Reads byte from the buffer.
- * 8bit integer (00) - * @return - */ - protected final int readC() - { - return _buf.get() & 0xFF; - } - - /** - * Reads short from the buffer.
- * 16bit integer (00 00) - * @return - */ - protected final int readH() - { - return _buf.getShort() & 0xFFFF; - } - - /** - * Reads int from the buffer.
- * 32bit integer (00 00 00 00) - * @return - */ - protected final int readD() - { - return _buf.getInt(); - } - - /** - * Reads long from the buffer.
- * 64bit integer (00 00 00 00 00 00 00 00) - * @return - */ - protected final long readQ() - { - return _buf.getLong(); - } - - /** - * Reads double from the buffer.
- * 64bit double precision float (00 00 00 00 00 00 00 00) - * @return - */ - protected final double readF() - { - return _buf.getDouble(); - } - - /** - * Reads String from the buffer. - * @return - */ - protected final String readS() - { - _sbuf.clear(); - - char ch; - while ((ch = _buf.getChar()) != 0) - { - _sbuf.append(ch); - } - - return _sbuf.toString(); - } - - /** - * packet forge purpose - * @param data - * @param client - * @param sBuffer - */ - public void setBuffers(ByteBuffer data, T client, NioNetStringBuffer sBuffer) - { - _buf = data; - _client = client; - _sbuf = sBuffer; - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/SelectorConfig.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/SelectorConfig.java deleted file mode 100644 index d3df1533f8..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/SelectorConfig.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -/** - * @author KenM - */ -public class SelectorConfig -{ - public int READ_BUFFER_SIZE = 64 * 1024; - - public int WRITE_BUFFER_SIZE = 64 * 1024; - - public int HELPER_BUFFER_COUNT = 20; - - public int HELPER_BUFFER_SIZE = 64 * 1024; - - /** - * Server will try to send MAX_SEND_PER_PASS packets per socket write call
- * however it may send less if the write buffer was filled before achieving this value. - */ - public int MAX_SEND_PER_PASS = 10; - - /** - * Server will try to read MAX_READ_PER_PASS packets per socket read call
- * however it may read less if the read buffer was empty before achieving this value. - */ - public int MAX_READ_PER_PASS = 10; - - /** - * Defines how much time (in milis) should the selector sleep, an higher value increases throughput but also increases latency(to a max of the sleep value itself).
- * Also an extremely high value(usually > 100) will decrease throughput due to the server not doing enough sends per second (depends on max sends per pass).
- * Recommended values:
- * 1 for minimal latency.
- * 10-30 for an latency/troughput trade-off based on your needs. - */ - public int SLEEP_TIME = 10; -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/SelectorThread.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/SelectorThread.java deleted file mode 100644 index 55bdf2e9d6..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/SelectorThread.java +++ /dev/null @@ -1,692 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.ServerSocket; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.channels.SelectionKey; -import java.nio.channels.Selector; -import java.nio.channels.ServerSocketChannel; -import java.nio.channels.SocketChannel; -import java.util.Iterator; -import java.util.LinkedList; - -/** - * Parts of design based on network core from WoodenGil - * @param - * @author KenM - */ -public class SelectorThread>extends Thread -{ - // default BYTE_ORDER - private static final ByteOrder BYTE_ORDER = ByteOrder.LITTLE_ENDIAN; - // default HEADER_SIZE - private static final int HEADER_SIZE = 2; - // Selector - private final Selector _selector; - // Implementations - private final IPacketHandler _packetHandler; - private final IMMOExecutor _executor; - private final IClientFactory _clientFactory; - // Configurations - private final int HELPER_BUFFER_SIZE; - private final int HELPER_BUFFER_COUNT; - private final int MAX_SEND_PER_PASS; - private final int MAX_READ_PER_PASS; - private final long SLEEP_TIME; - // Main Buffers - private final ByteBuffer DIRECT_WRITE_BUFFER; - private final ByteBuffer WRITE_BUFFER; - private final ByteBuffer READ_BUFFER; - // String Buffer - private final NioNetStringBuffer STRING_BUFFER; - // ByteBuffers General Purpose Pool - private final LinkedList _bufferPool; - // Pending Close - private final NioNetStackList> _pendingClose; - - private boolean _shutdown; - - public SelectorThread(SelectorConfig sc, IMMOExecutor executor, IPacketHandler packetHandler, IClientFactory clientFactory) throws IOException - { - super.setName("SelectorThread-" + super.getId()); - - HELPER_BUFFER_SIZE = sc.HELPER_BUFFER_SIZE; - HELPER_BUFFER_COUNT = sc.HELPER_BUFFER_COUNT; - MAX_SEND_PER_PASS = sc.MAX_SEND_PER_PASS; - MAX_READ_PER_PASS = sc.MAX_READ_PER_PASS; - - SLEEP_TIME = sc.SLEEP_TIME; - - DIRECT_WRITE_BUFFER = ByteBuffer.allocateDirect(sc.WRITE_BUFFER_SIZE).order(BYTE_ORDER); - WRITE_BUFFER = ByteBuffer.wrap(new byte[sc.WRITE_BUFFER_SIZE]).order(BYTE_ORDER); - READ_BUFFER = ByteBuffer.wrap(new byte[sc.READ_BUFFER_SIZE]).order(BYTE_ORDER); - - STRING_BUFFER = new NioNetStringBuffer(64 * 1024); - - _pendingClose = new NioNetStackList<>(); - _bufferPool = new LinkedList<>(); - - for (int i = 0; i < HELPER_BUFFER_COUNT; i++) - { - _bufferPool.addLast(ByteBuffer.wrap(new byte[HELPER_BUFFER_SIZE]).order(BYTE_ORDER)); - } - - _packetHandler = packetHandler; - _clientFactory = clientFactory; - _executor = executor; - _selector = Selector.open(); - } - - public void openServerSocket(InetAddress address, int tcpPort) throws IOException - { - final ServerSocketChannel selectable = ServerSocketChannel.open(); - selectable.configureBlocking(false); - - final ServerSocket ss = selectable.socket(); - if (address != null) - { - ss.bind(new InetSocketAddress(address, tcpPort)); - } - else - { - ss.bind(new InetSocketAddress(tcpPort)); - } - - selectable.register(_selector, SelectionKey.OP_ACCEPT); - } - - protected ByteBuffer getPooledBuffer() - { - if (_bufferPool.isEmpty()) - { - return ByteBuffer.wrap(new byte[HELPER_BUFFER_SIZE]).order(BYTE_ORDER); - } - - return _bufferPool.removeFirst(); - } - - protected void recycleBuffer(ByteBuffer buf) - { - if (_bufferPool.size() < HELPER_BUFFER_COUNT) - { - buf.clear(); - _bufferPool.addLast(buf); - } - } - - @SuppressWarnings("unchecked") - @Override - public void run() - { - int selectedKeysCount = 0; - SelectionKey key; - MMOConnection con; - Iterator selectedKeys; - - while (!_shutdown) - { - try - { - selectedKeysCount = _selector.selectNow(); - } - catch (IOException e) - { - e.printStackTrace(); - } - - if (selectedKeysCount > 0) - { - selectedKeys = _selector.selectedKeys().iterator(); - - while (selectedKeys.hasNext()) - { - key = selectedKeys.next(); - selectedKeys.remove(); - - con = (MMOConnection) key.attachment(); - - switch (key.readyOps()) - { - case SelectionKey.OP_CONNECT: - { - finishConnection(key, con); - break; - } - case SelectionKey.OP_ACCEPT: - { - acceptConnection(key, con); - break; - } - case SelectionKey.OP_READ: - { - readPacket(key, con); - break; - } - case SelectionKey.OP_WRITE: - { - writePacket(key, con); - break; - } - case SelectionKey.OP_READ | SelectionKey.OP_WRITE: - { - writePacket(key, con); - if (key.isValid()) - { - readPacket(key, con); - } - break; - } - } - } - } - - synchronized (_pendingClose) - { - while (!_pendingClose.isEmpty()) - { - con = _pendingClose.removeFirst(); - writeClosePacket(con); - closeConnectionImpl(con.getSelectionKey(), con); - } - } - - try - { - Thread.sleep(SLEEP_TIME); - } - catch (InterruptedException e) - { - e.printStackTrace(); - } - } - closeSelectorThread(); - } - - private final void finishConnection(SelectionKey key, MMOConnection con) - { - try - { - ((SocketChannel) key.channel()).finishConnect(); - } - catch (IOException e) - { - con.getClient().onForcedDisconnection(); - closeConnectionImpl(key, con); - } - - // key might have been invalidated on finishConnect() - if (key.isValid()) - { - key.interestOps(key.interestOps() | SelectionKey.OP_READ); - key.interestOps(key.interestOps() & ~SelectionKey.OP_CONNECT); - } - } - - @SuppressWarnings("all") - private void acceptConnection(SelectionKey key, MMOConnection con) - { - final ServerSocketChannel ssc = (ServerSocketChannel) key.channel(); - SocketChannel sc = null; - - try - { - while ((sc = ssc.accept()) != null) - { - sc.configureBlocking(false); - final SelectionKey clientKey = sc.register(_selector, SelectionKey.OP_READ); - con = new MMOConnection<>(this, sc.socket(), clientKey); - con.setClient(_clientFactory.create(con)); - clientKey.attach(con); - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - private void readPacket(SelectionKey key, MMOConnection con) - { - if (con.isClosed()) - { - return; - } - - ByteBuffer buf = con.getReadBuffer(); - if (buf == null) - { - buf = READ_BUFFER; - } - - // if we try to to do a read with no space in the buffer it will read 0 bytes going into infinite loop - if (buf.position() == buf.limit()) - { - System.exit(0); - } - - int result = -2; - - try - { - result = con.read(buf); - } - catch (IOException e) - { - // error handling goes bellow - } - - if (result > 0) - { - buf.flip(); - - final T client = con.getClient(); - for (int i = 0; i < MAX_READ_PER_PASS; i++) - { - if (!tryReadPacket(key, client, buf, con)) - { - return; - } - } - - // only reachable if MAX_READ_PER_PASS has been reached - // check if there are some more bytes in buffer - // and allocate/compact to prevent content lose. - if (buf.remaining() > 0) - { - // did we use the READ_BUFFER ? - if (buf == READ_BUFFER) - { - // move the pending byte to the connections READ_BUFFER - allocateReadBuffer(con); - } - else - { - // move the first byte to the beginning :) - buf.compact(); - } - } - } - else - { - switch (result) - { - case 0: - case -1: - { - closeConnectionImpl(key, con); - break; - } - case -2: - { - con.getClient().onForcedDisconnection(); - closeConnectionImpl(key, con); - break; - } - } - } - } - - private boolean tryReadPacket(SelectionKey key, T client, ByteBuffer buf, MMOConnection con) - { - switch (buf.remaining()) - { - case 0: - { - // buffer is full nothing to read - return false; - } - case 1: - { - // we don't have enough data for header so we need to read - key.interestOps(key.interestOps() | SelectionKey.OP_READ); - - // did we use the READ_BUFFER ? - if (buf == READ_BUFFER) - { - // move the pending byte to the connections READ_BUFFER - allocateReadBuffer(con); - } - else - { - // move the first byte to the beginning :) - buf.compact(); - } - return false; - } - default: - { - // data size excluding header size :> - final int dataPending = (buf.getShort() & 0xFFFF) - HEADER_SIZE; - - // do we got enough bytes for the packet? - if (dataPending <= buf.remaining()) - { - // avoid parsing dummy packets (packets without body) - if (dataPending > 0) - { - final int pos = buf.position(); - parseClientPacket(pos, buf, dataPending, client); - buf.position(pos + dataPending); - } - - // if we are done with this buffer - if (!buf.hasRemaining()) - { - if (buf != READ_BUFFER) - { - con.setReadBuffer(null); - recycleBuffer(buf); - } - else - { - READ_BUFFER.clear(); - } - return false; - } - return true; - } - // we don't have enough bytes for the dataPacket so we need to read - key.interestOps(key.interestOps() | SelectionKey.OP_READ); - - // did we use the READ_BUFFER ? - if (buf == READ_BUFFER) - { - // move it's position - buf.position(buf.position() - HEADER_SIZE); - // move the pending byte to the connections READ_BUFFER - allocateReadBuffer(con); - } - else - { - buf.position(buf.position() - HEADER_SIZE); - buf.compact(); - } - return false; - } - } - } - - private void allocateReadBuffer(MMOConnection con) - { - con.setReadBuffer(getPooledBuffer().put(READ_BUFFER)); - READ_BUFFER.clear(); - } - - private final void parseClientPacket(int pos, ByteBuffer buf, int dataSize, T client) - { - final boolean ret = client.decrypt(buf, dataSize); - if (ret && buf.hasRemaining()) - { - // apply limit - final int limit = buf.limit(); - buf.limit(pos + dataSize); - final ReceivablePacket cp = _packetHandler.handlePacket(buf, client); - if (cp != null) - { - cp._buf = buf; - cp._sbuf = STRING_BUFFER; - cp._client = client; - if (cp.read()) - { - _executor.execute(cp); - } - - cp._buf = null; - cp._sbuf = null; - } - - buf.limit(limit); - } - } - - private void writeClosePacket(MMOConnection con) - { - SendablePacket sp; - synchronized (con.getSendQueue()) - { - if (con.getSendQueue().isEmpty()) - { - return; - } - - while ((sp = con.getSendQueue().removeFirst()) != null) - { - WRITE_BUFFER.clear(); - - putPacketIntoWriteBuffer(con.getClient(), sp); - - WRITE_BUFFER.flip(); - - try - { - con.write(WRITE_BUFFER); - } - catch (IOException e) - { - // error handling goes on the if bellow - } - } - } - } - - protected void writePacket(SelectionKey key, MMOConnection con) - { - if (!prepareWriteBuffer(con)) - { - key.interestOps(key.interestOps() & ~SelectionKey.OP_WRITE); - return; - } - - DIRECT_WRITE_BUFFER.flip(); - - final int size = DIRECT_WRITE_BUFFER.remaining(); - - int result = -1; - - try - { - result = con.write(DIRECT_WRITE_BUFFER); - } - catch (IOException e) - { - // error handling goes on the if bellow - } - - // check if no error happened - if (result >= 0) - { - // check if we written everything - if (result == size) - { - // complete write - synchronized (con.getSendQueue()) - { - if (con.getSendQueue().isEmpty() && !con.hasPendingWriteBuffer()) - { - key.interestOps(key.interestOps() & ~SelectionKey.OP_WRITE); - } - } - } - else - { - // incomplete write - con.createWriteBuffer(DIRECT_WRITE_BUFFER); - } - } - else - { - con.getClient().onForcedDisconnection(); - closeConnectionImpl(key, con); - } - } - - private boolean prepareWriteBuffer(MMOConnection con) - { - boolean hasPending = false; - DIRECT_WRITE_BUFFER.clear(); - - // if there is pending content add it - if (con.hasPendingWriteBuffer()) - { - con.movePendingWriteBufferTo(DIRECT_WRITE_BUFFER); - hasPending = true; - } - - if ((DIRECT_WRITE_BUFFER.remaining() > 1) && !con.hasPendingWriteBuffer()) - { - final NioNetStackList> sendQueue = con.getSendQueue(); - final T client = con.getClient(); - SendablePacket sp; - - for (int i = 0; i < MAX_SEND_PER_PASS; i++) - { - synchronized (con.getSendQueue()) - { - if (sendQueue.isEmpty()) - { - sp = null; - } - else - { - sp = sendQueue.removeFirst(); - } - } - - if (sp == null) - { - break; - } - - hasPending = true; - - // put into WriteBuffer - putPacketIntoWriteBuffer(client, sp); - - WRITE_BUFFER.flip(); - - if (DIRECT_WRITE_BUFFER.remaining() < WRITE_BUFFER.limit()) - { - con.createWriteBuffer(WRITE_BUFFER); - break; - } - DIRECT_WRITE_BUFFER.put(WRITE_BUFFER); - } - } - return hasPending; - } - - private void putPacketIntoWriteBuffer(T client, SendablePacket sp) - { - WRITE_BUFFER.clear(); - - // reserve space for the size - final int headerPos = WRITE_BUFFER.position(); - final int dataPos = headerPos + HEADER_SIZE; - WRITE_BUFFER.position(dataPos); - - // set the write buffer - sp._buf = WRITE_BUFFER; - // write content to buffer - sp.write(); - // delete the write buffer - sp._buf = null; - - // size (inclusive header) - int dataSize = WRITE_BUFFER.position() - dataPos; - WRITE_BUFFER.position(dataPos); - client.encrypt(WRITE_BUFFER, dataSize); - - // recalculate size after encryption - dataSize = WRITE_BUFFER.position() - dataPos; - - WRITE_BUFFER.position(headerPos); - // write header - WRITE_BUFFER.putShort((short) (dataSize + HEADER_SIZE)); - WRITE_BUFFER.position(dataPos + dataSize); - } - - protected void closeConnection(MMOConnection con) - { - synchronized (_pendingClose) - { - _pendingClose.addLast(con); - } - } - - private void closeConnectionImpl(SelectionKey key, MMOConnection con) - { - try - { - // notify connection - con.getClient().onDisconnection(); - } - finally - { - try - { - // close socket and the SocketChannel - con.close(); - } - catch (IOException e) - { - // ignore, we are closing anyway - } - finally - { - con.releaseBuffers(); - // clear attachment - key.attach(null); - // cancel key - key.cancel(); - } - } - } - - public void shutdown() - { - _shutdown = true; - } - - protected void closeSelectorThread() - { - for (SelectionKey key : _selector.keys()) - { - try - { - key.channel().close(); - } - catch (IOException e) - { - // ignore - } - } - - try - { - _selector.close(); - } - catch (IOException e) - { - // Ignore - } - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/SendablePacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/SendablePacket.java deleted file mode 100644 index d06f32e3a3..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/SendablePacket.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -/** - * @author KenM - * @param - */ -public abstract class SendablePacket>extends AbstractPacket -{ - protected final void putInt(int value) - { - _buf.putInt(value); - } - - protected final void putDouble(double value) - { - _buf.putDouble(value); - } - - protected final void putFloat(float value) - { - _buf.putFloat(value); - } - - /** - * Write byte to the buffer.
- * 8bit integer (00) - * @param data - */ - protected final void writeC(int data) - { - _buf.put((byte) data); - } - - /** - * Write double to the buffer.
- * 64bit double precision float (00 00 00 00 00 00 00 00) - * @param value - */ - protected final void writeF(double value) - { - _buf.putDouble(value); - } - - /** - * Write short to the buffer.
- * 16bit integer (00 00) - * @param value - */ - protected final void writeH(int value) - { - _buf.putShort((short) value); - } - - /** - * Write int to the buffer.
- * 32bit integer (00 00 00 00) - * @param value - */ - protected final void writeD(int value) - { - _buf.putInt(value); - } - - /** - * Write long to the buffer.
- * 64bit integer (00 00 00 00 00 00 00 00) - * @param value - */ - protected final void writeQ(long value) - { - // C4 adjustment. - // _buf.putLong(value); - _buf.putInt((int) value); - } - - /** - * Write byte[] to the buffer.
- * 8bit integer array (00 ...) - * @param data - */ - protected final void writeB(byte[] data) - { - _buf.put(data); - } - - /** - * Write String to the buffer. - * @param text - */ - protected final void writeS(String text) - { - if (text != null) - { - final int len = text.length(); - for (int i = 0; i < len; i++) - { - _buf.putChar(text.charAt(i)); - } - } - - _buf.putChar('\000'); - } - - protected abstract void write(); -} \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/ClientBasePacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/BaseRecievePacket.java similarity index 89% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/ClientBasePacket.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/BaseRecievePacket.java index 513b9bf564..322bb06bda 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/ClientBasePacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/BaseRecievePacket.java @@ -14,21 +14,20 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.loginserver.network.clientpackets; +package org.l2jmobius.commons.network; import org.l2jmobius.loginserver.LoginClient; /** - * This class ... * @version $Revision: 1.2.4.1 $ $Date: 2005/03/27 15:30:12 $ */ -public abstract class ClientBasePacket implements Runnable +public abstract class BaseRecievePacket implements Runnable { private final LoginClient _client; private final byte[] _decrypt; private int _off; - public ClientBasePacket(byte[] decrypt, LoginClient client) + public BaseRecievePacket(byte[] decrypt, LoginClient client) { _decrypt = decrypt; _off = 1; // skip packet type id diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerBasePacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/BaseSendablePacket.java similarity index 90% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerBasePacket.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/BaseSendablePacket.java index 866b96b71f..601ab98bb5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerBasePacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/BaseSendablePacket.java @@ -14,18 +14,17 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.loginserver.network.gameserverpackets; +package org.l2jmobius.commons.network; /** - * This class ... * @version $Revision: 1.2.4.1 $ $Date: 2005/03/27 15:30:12 $ */ -public abstract class GameServerBasePacket +public abstract class BaseSendablePacket { private final byte[] _decrypt; private int _off; - public GameServerBasePacket(byte[] decrypt) + public BaseSendablePacket(byte[] decrypt) { _decrypt = decrypt; _off = 1; // skip packet type id diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/ChannelInboundHandler.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/ChannelInboundHandler.java new file mode 100644 index 0000000000..ad99889198 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/ChannelInboundHandler.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network; + +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; + +/** + * @author Nos + * @param + */ +public abstract class ChannelInboundHandler>extends SimpleChannelInboundHandler> +{ + private Channel _channel; + + @Override + public void channelActive(ChannelHandlerContext ctx) + { + _channel = ctx.channel(); + } + + public void setConnectionState(IConnectionState connectionState) + { + _channel.attr(IConnectionState.ATTRIBUTE_KEY).set(connectionState); + } + + public IConnectionState getConnectionState() + { + return _channel != null ? _channel.attr(IConnectionState.ATTRIBUTE_KEY).get() : null; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOrcMove.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IConnectionState.java similarity index 74% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOrcMove.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IConnectionState.java index 9a6b31d044..bab6e67c43 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOrcMove.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IConnectionState.java @@ -14,18 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.serverpackets; +package org.l2jmobius.commons.network; + +import io.netty.util.AttributeKey; /** - * Format: (ch). - * @author -Wooden- + * @author Nos */ -public class ExOrcMove extends GameServerPacket +public interface IConnectionState { - @Override - protected void writeImpl() - { - writeC(0xfe); - writeH(0x44); - } + AttributeKey ATTRIBUTE_KEY = AttributeKey.valueOf(IConnectionState.class, ""); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IAcceptFilter.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/ICrypt.java similarity index 78% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IAcceptFilter.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/ICrypt.java index 802a32a0ae..2c3622e407 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IAcceptFilter.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/ICrypt.java @@ -14,14 +14,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.commons.mmocore; +package org.l2jmobius.commons.network; -import java.nio.channels.SocketChannel; +import io.netty.buffer.ByteBuf; /** - * @author KenM + * @author Nos */ -public interface IAcceptFilter +public interface ICrypt { - boolean accept(SocketChannel sc); -} \ No newline at end of file + void encrypt(ByteBuf buf); + + void decrypt(ByteBuf buf); +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IClientFactory.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IIncomingPacket.java similarity index 65% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IClientFactory.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IIncomingPacket.java index e2195692fa..61d305e740 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IClientFactory.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IIncomingPacket.java @@ -14,13 +14,21 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.commons.mmocore; +package org.l2jmobius.commons.network; /** - * @author KenM + * @author Nos * @param */ -public interface IClientFactory> +public interface IIncomingPacket { - T create(MMOConnection con); -} \ No newline at end of file + /** + * Reads a packet. + * @param client the client + * @param packet the packet reader + * @return {@code true} if packet was read successfully, {@code false} otherwise. + */ + boolean read(T client, PacketReader packet); + + void run(T client) throws Exception; +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/AbstractPacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IIncomingPackets.java similarity index 72% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/AbstractPacket.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IIncomingPackets.java index 0f2a305101..c98b94fae2 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/AbstractPacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IIncomingPackets.java @@ -14,22 +14,19 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.commons.mmocore; +package org.l2jmobius.commons.network; -import java.nio.ByteBuffer; +import java.util.Set; /** - * @author KenM + * @author Nos * @param */ -public abstract class AbstractPacket> +public interface IIncomingPacketsextends IConnectionState { - protected ByteBuffer _buf; + int getPacketId(); - T _client; + IIncomingPacket newIncomingPacket(); - public T getClient() - { - return _client; - } -} \ No newline at end of file + Set getConnectionStates(); +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginServerPacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IOutgoingPacket.java similarity index 71% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginServerPacket.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IOutgoingPacket.java index 751416eac7..1761f93804 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginServerPacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/IOutgoingPacket.java @@ -14,14 +14,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.loginserver.network.serverpackets; - -import org.l2jmobius.commons.mmocore.SendablePacket; -import org.l2jmobius.loginserver.LoginClient; +package org.l2jmobius.commons.network; /** - * @author KenM + * @author Nos */ -public abstract class LoginServerPacket extends SendablePacket +public interface IOutgoingPacket { + /** + * @param packet the packet writer + * @return {@code true} if packet was writen successfully, {@code false} otherwise. + */ + boolean write(PacketWriter packet); } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/NetworkManager.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/NetworkManager.java new file mode 100644 index 0000000000..13a390ce25 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/NetworkManager.java @@ -0,0 +1,76 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network; + +import java.util.logging.Logger; + +import io.netty.bootstrap.ServerBootstrap; +import io.netty.buffer.PooledByteBufAllocator; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; + +/** + * @author Nos + */ +public class NetworkManager +{ + private static final Logger LOGGER = Logger.getLogger(NetworkManager.class.getName()); + + private final ServerBootstrap _serverBootstrap; + private final String _host; + private final int _port; + + private ChannelFuture _channelFuture; + + public NetworkManager(EventLoopGroup bossGroup, EventLoopGroup workerGroup, ChannelInitializer clientInitializer, String host, int port) + { + // @formatter:off + _serverBootstrap = new ServerBootstrap() + .group(bossGroup, workerGroup) + .channel(NioServerSocketChannel.class) + .childHandler(clientInitializer) + .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT); + // @formatter:on + _host = host; + _port = port; + } + + public ChannelFuture getChannelFuture() + { + return _channelFuture; + } + + public void start() throws InterruptedException + { + if ((_channelFuture != null) && !_channelFuture.isDone()) + { + return; + } + + _channelFuture = _serverBootstrap.bind(_host.equals("*") ? "0.0.0.0" : _host, _port).sync(); + LOGGER.info(getClass().getSimpleName() + ": Listening on " + _host + ":" + _port); + } + + public void stop() throws InterruptedException + { + _channelFuture.channel().close().sync(); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/PacketReader.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/PacketReader.java new file mode 100644 index 0000000000..b216cc581a --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/PacketReader.java @@ -0,0 +1,163 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network; + +import io.netty.buffer.ByteBuf; + +/** + * @author Nos + */ +public class PacketReader +{ + private final ByteBuf _buf; + + public PacketReader(ByteBuf buf) + { + _buf = buf; + } + + /** + * Gets the readable bytes. + * @return the readable bytes + */ + public int getReadableBytes() + { + return _buf.readableBytes(); + } + + /** + * Reads an unsigned byte. + * @return the unsigned byte + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 1} + */ + public short readC() + { + return _buf.readUnsignedByte(); + } + + /** + * Reads an unsigned short. + * @return the unsigned short + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 2} + */ + public int readH() + { + return _buf.readUnsignedShortLE(); + } + + /** + * Reads an integer. + * @return the integer + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 4} + */ + public int readD() + { + return _buf.readIntLE(); + } + + /** + * Reads a long. + * @return the long + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 8} + */ + public long readQ() + { + return _buf.readLongLE(); + } + + /** + * Reads a float. + * @return the float + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 4} + */ + public float readE() + { + return Float.intBitsToFloat(_buf.readIntLE()); + } + + /** + * Reads a double. + * @return the double + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 8} + */ + public double readF() + { + return Double.longBitsToDouble(_buf.readLongLE()); + } + + /** + * Reads a string. + * @return the string + * @throws IndexOutOfBoundsException if string {@code null} terminator is not found within {@code readableBytes} + */ + public String readS() + { + final StringBuilder sb = new StringBuilder(); + char chr; + while ((chr = Character.reverseBytes(_buf.readChar())) != 0) + { + sb.append(chr); + } + return sb.toString(); + } + + /** + * Reads a fixed length string. + * @return the string + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 2 + String.length * 2} + */ + public String readString() + { + final StringBuilder sb = new StringBuilder(); + final int stringLength = _buf.readShortLE(); + if ((stringLength * 2) > _buf.readableBytes()) + { + throw new IndexOutOfBoundsException("readerIndex(" + _buf.readerIndex() + ") + length(" + (stringLength * 2) + ") exceeds writerIndex(" + _buf.writerIndex() + "): " + _buf); + } + + for (int i = 0; i < stringLength; i++) + { + sb.append(Character.reverseBytes(_buf.readChar())); + } + return sb.toString(); + } + + /** + * Reads a byte array. + * @param length the length + * @return the byte array + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code length} + */ + public byte[] readB(int length) + { + final byte[] result = new byte[length]; + _buf.readBytes(result); + return result; + } + + /** + * Reads a byte array. + * @param dst the destination + * @param dstIndex the destination index to start writing the bytes from + * @param length the length + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code length}, if the specified dstIndex is less than 0 or if {@code dstIndex + length} is greater than {@code dst.length} + */ + public void readB(byte[] dst, int dstIndex, int length) + { + _buf.readBytes(dst, dstIndex, length); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/PacketWriter.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/PacketWriter.java new file mode 100644 index 0000000000..bccc246395 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/PacketWriter.java @@ -0,0 +1,141 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network; + +import io.netty.buffer.ByteBuf; + +/** + * @author Nos + */ +public class PacketWriter +{ + private final ByteBuf _buf; + + public PacketWriter(ByteBuf buf) + { + _buf = buf; + } + + /** + * Gets the writable bytes. + * @return the writable bytes + */ + public int getWritableBytes() + { + return _buf.writableBytes(); + } + + /** + * Writes a byte. + * @param value the byte (The 24 high-order bits are ignored) + */ + public void writeC(int value) + { + _buf.writeByte(value); + } + + /** + * Writes a short. + * @param value the short (The 16 high-order bits are ignored) + */ + public void writeH(int value) + { + _buf.writeShortLE(value); + } + + /** + * Writes an integer. + * @param value the integer + */ + public void writeD(int value) + { + _buf.writeIntLE(value); + } + + /** + * Writes a long. + * @param value the long + */ + public void writeQ(long value) + { + _buf.writeLongLE(value); + } + + /** + * Writes a float. + * @param value the float + */ + public void writeE(float value) + { + _buf.writeIntLE(Float.floatToIntBits(value)); + } + + /** + * Writes a double. + * @param value the double + */ + public void writeF(double value) + { + _buf.writeLongLE(Double.doubleToLongBits(value)); + } + + /** + * Writes a string. + * @param value the string + */ + public void writeS(String value) + { + if (value != null) + { + for (int i = 0; i < value.length(); i++) + { + _buf.writeChar(Character.reverseBytes(value.charAt(i))); + } + } + + _buf.writeChar(0); + } + + /** + * Writes a string with fixed length specified as [short length, char[length] data]. + * @param value the string + */ + public void writeString(String value) + { + if (value != null) + { + _buf.writeShortLE(value.length()); + for (int i = 0; i < value.length(); i++) + { + _buf.writeChar(Character.reverseBytes(value.charAt(i))); + } + } + else + { + _buf.writeShort(0); + } + } + + /** + * Writes a byte array. + * @param bytes the byte array + */ + public void writeB(byte[] bytes) + { + _buf.writeBytes(bytes); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/CryptCodec.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/CryptCodec.java new file mode 100644 index 0000000000..fabd4d036f --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/CryptCodec.java @@ -0,0 +1,71 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network.codecs; + +import java.util.List; + +import org.l2jmobius.commons.network.ICrypt; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageCodec; + +/** + * @author Nos + */ +public class CryptCodec extends ByteToMessageCodec +{ + private final ICrypt _crypt; + + public CryptCodec(ICrypt crypt) + { + super(); + _crypt = crypt; + } + + /* + * (non-Javadoc) + * @see io.netty.handler.codec.ByteToMessageCodec#encode(io.netty.channel.ChannelHandlerContext, java.lang.Object, io.netty.buffer.ByteBuf) + */ + @Override + protected void encode(ChannelHandlerContext ctx, ByteBuf msg, ByteBuf out) + { + // Check if there are any data to encrypt. + if (!msg.isReadable()) + { + return; + } + + msg.resetReaderIndex(); + _crypt.encrypt(msg); + msg.resetReaderIndex(); + out.writeBytes(msg); + } + + /* + * (non-Javadoc) + * @see io.netty.handler.codec.ByteToMessageCodec#decode(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.util.List) + */ + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) + { + in.resetReaderIndex(); + _crypt.decrypt(in); + in.readerIndex(in.writerIndex()); + out.add(in.copy(0, in.writerIndex())); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/LoginClientPacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/LengthFieldBasedFrameEncoder.java similarity index 52% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/LoginClientPacket.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/LengthFieldBasedFrameEncoder.java index 2de303a227..5850d76b1e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/LoginClientPacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/LengthFieldBasedFrameEncoder.java @@ -14,33 +14,28 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.loginserver.network.clientpackets; +package org.l2jmobius.commons.network.codecs; -import java.util.logging.Logger; +import java.util.List; -import org.l2jmobius.commons.mmocore.ReceivablePacket; -import org.l2jmobius.loginserver.LoginClient; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandler.Sharable; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.MessageToMessageEncoder; /** - * @author KenM + * @author Nos */ -public abstract class LoginClientPacket extends ReceivablePacket +@Sharable +public class LengthFieldBasedFrameEncoder extends MessageToMessageEncoder { - private static final Logger LOGGER = Logger.getLogger(LoginClientPacket.class.getName()); - @Override - protected final boolean read() + protected void encode(ChannelHandlerContext ctx, ByteBuf msg, List out) { - try - { - return readImpl(); - } - catch (Exception e) - { - LOGGER.warning("ERROR READING: " + e); - return false; - } + final ByteBuf buf = ctx.alloc().buffer(2); + final short length = (short) (msg.readableBytes() + 2); + buf.writeShortLE(length); + out.add(buf); + out.add(msg.retain()); } - - protected abstract boolean readImpl(); } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/PacketDecoder.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/PacketDecoder.java new file mode 100644 index 0000000000..e12fb135ab --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/PacketDecoder.java @@ -0,0 +1,91 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network.codecs; + +import java.util.List; +import java.util.logging.Logger; + +import org.l2jmobius.commons.network.IConnectionState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IIncomingPackets; +import org.l2jmobius.commons.network.PacketReader; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageDecoder; + +/** + * @author Nos + * @param + */ +public class PacketDecoderextends ByteToMessageDecoder +{ + private static final Logger LOGGER = Logger.getLogger(PacketDecoder.class.getName()); + + private final IIncomingPackets[] _incomingPackets; + private final T _client; + + public PacketDecoder(IIncomingPackets[] incomingPackets, T client) + { + _incomingPackets = incomingPackets; + _client = client; + } + + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) + { + if ((in == null) || !in.isReadable()) + { + return; + } + + try + { + final short packetId = in.readUnsignedByte(); + if (packetId >= _incomingPackets.length) + { + LOGGER.finer("Unknown packet: " + Integer.toHexString(packetId)); + return; + } + + final IIncomingPackets incomingPacket = _incomingPackets[packetId]; + if (incomingPacket == null) + { + LOGGER.finer("Unknown packet: " + Integer.toHexString(packetId)); + return; + } + + final IConnectionState connectionState = ctx.channel().attr(IConnectionState.ATTRIBUTE_KEY).get(); + if ((connectionState == null) || !incomingPacket.getConnectionStates().contains(connectionState)) + { + // LOGGER.warning(incomingPacket + ": Connection at invalid state: " + connectionState + " Required States: " + incomingPacket.getConnectionStates()); + return; + } + + final IIncomingPacket packet = incomingPacket.newIncomingPacket(); + if ((packet != null) && packet.read(_client, new PacketReader(in))) + { + out.add(packet); + } + } + finally + { + // We always consider that we read whole packet. + in.readerIndex(in.writerIndex()); + } + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/PacketEncoder.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/PacketEncoder.java new file mode 100644 index 0000000000..fe9bbbb974 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/network/codecs/PacketEncoder.java @@ -0,0 +1,71 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network.codecs; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandler.Sharable; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.MessageToByteEncoder; + +/** + * @author Nos + */ +@Sharable +public class PacketEncoder extends MessageToByteEncoder +{ + private static final Logger LOGGER = Logger.getLogger(PacketEncoder.class.getName()); + + private final int _maxPacketSize; + + public PacketEncoder(int maxPacketSize) + { + super(); + _maxPacketSize = maxPacketSize; + } + + @Override + protected void encode(ChannelHandlerContext ctx, IOutgoingPacket packet, ByteBuf out) + { + try + { + if (packet.write(new PacketWriter(out))) + { + if (out.writerIndex() > _maxPacketSize) + { + throw new IllegalStateException("Packet (" + packet + ") size (" + out.writerIndex() + ") is bigger than the expected client limit (" + _maxPacketSize + ")"); + } + } + else + { + // Avoid sending the packet + out.clear(); + } + } + catch (Throwable e) + { + LOGGER.log(Level.WARNING, "Failed sending Packet(" + packet + ")", e); + // Avoid sending the packet if some exception happened + out.clear(); + } + } +} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/BlowfishEngine.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/BlowfishEngine.java similarity index 58% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/BlowfishEngine.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/BlowfishEngine.java index 608c7fe5b9..9304a3acb9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/BlowfishEngine.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/BlowfishEngine.java @@ -1,30 +1,24 @@ /* - * This file is part of the L2J Mobius project. + * This file is based on the Blowfish Engine that is part of the BouncyCastle JCE. + * Copyright (c) 2000 The Legion Of The Bouncy Castle (http://www.bouncycastle.org) + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * The above copyright notice and this permission notice shall be included in all copies + * or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE + * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package org.l2jmobius.commons.crypt; +package org.l2jmobius.commons.util.crypt; import java.io.IOException; -/** - * This file is based on the Blowfish Engine that is part of the BouncyCastle JCE Copyright (c) 2000 The Legion Of The Bouncy Castle (http://www.bouncycastle.org) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following - * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ public class BlowfishEngine { private static final int[] KP = @@ -1084,19 +1078,16 @@ public class BlowfishEngine 0x578FDFE3, 0x3AC372E6 }; - // ==================================== - // Useful constants - // ==================================== + private static final int ROUNDS = 16; private static final int BLOCK_SIZE = 8; // bytes = 64 bits private static final int SBOX_SK = 256; private static final int P_SZ = ROUNDS + 2; private final int[] S0; // the s-boxes - private final int[] S1; - private final int[] S2; - private final int[] S3; + private final int[] S1; // the s-boxes + private final int[] S2; // the s-boxes + private final int[] S3; // the s-boxes private final int[] P; // the p-array - private boolean encrypting = false; private byte[] workingKey = null; public BlowfishEngine() @@ -1110,13 +1101,10 @@ public class BlowfishEngine /** * Initialize a Blowfish cipher. - * @param pEncrypting whether or not we are for encryption. - * @param key the key used to set up the cipher. - * @exception IllegalArgumentException if the params argument is inappropriate. + * @param key the key used to set up the cipher */ - public void init(boolean pEncrypting, byte[] key) + public void init(byte[] key) { - encrypting = pEncrypting; workingKey = key; setKey(workingKey); } @@ -1126,50 +1114,14 @@ public class BlowfishEngine return "Blowfish"; } - public int processBlock(byte[] in, int inOff, byte[] out, int outOff) throws IOException - { - if (workingKey == null) - { - throw new IllegalStateException("Blowfish not initialised"); - } - - if ((inOff + BLOCK_SIZE) > in.length) - { - throw new IOException("input buffer too short"); - } - - if ((outOff + BLOCK_SIZE) > out.length) - { - throw new IOException("output buffer too short"); - } - - if (encrypting) - { - encryptBlock(in, inOff, out, outOff); - } - else - { - decryptBlock(in, inOff, out, outOff); - } - - return BLOCK_SIZE; - } - - public void reset() - { - } - public int getBlockSize() { return BLOCK_SIZE; } - // ================================== - // Private Implementation - // ================================== private int func(int x) { - return ((S0[(x >>> 24)] + S1[(x >>> 16) & 0xff]) ^ S2[(x >>> 8) & 0xff]) + S3[x & 0xff]; + return (((S0[(x >>> 24)] + S1[(x >>> 16) & 0xff]) ^ S2[(x >>> 8) & 0xff]) + S3[x & 0xff]); } /** @@ -1185,13 +1137,23 @@ public class BlowfishEngine for (int s = 0; s < size; s += 2) { xl ^= P[0]; - for (int i = 1; i < ROUNDS; i += 2) - { - xr ^= func(xl) ^ P[i]; - xl ^= func(xr) ^ P[i + 1]; - } - - xr ^= P[ROUNDS + 1]; + xr ^= func(xl) ^ P[1]; + xl ^= func(xr) ^ P[2]; + xr ^= func(xl) ^ P[3]; + xl ^= func(xr) ^ P[4]; + xr ^= func(xl) ^ P[5]; + xl ^= func(xr) ^ P[6]; + xr ^= func(xl) ^ P[7]; + xl ^= func(xr) ^ P[8]; + xr ^= func(xl) ^ P[9]; + xl ^= func(xr) ^ P[10]; + xr ^= func(xl) ^ P[11]; + xl ^= func(xr) ^ P[12]; + xr ^= func(xl) ^ P[13]; + xl ^= func(xr) ^ P[14]; + xr ^= func(xl) ^ P[15]; + xl ^= func(xr) ^ P[16]; + xr ^= P[17]; table[s] = xr; table[s + 1] = xl; xr = xl; // end of cycle swap @@ -1201,16 +1163,19 @@ public class BlowfishEngine private void setKey(byte[] key) { - /* - * - comments are from _Applied Crypto_, Schneier, p338 please be careful comparing the two, AC numbers the arrays from 1, the enclosed code from 0. (1) Initialise the S-boxes and the P-array, with a fixed string This string contains the hexadecimal digits of pi (3.141...) + /** + * - comments are from _Applied Crypto_, Schneier, p338.
+ * Please be careful comparing the two, AC numbers the arrays from 1, the enclosed code from 0.
+ * (1) Initialize the S-boxes and the P-array, with a fixed string This string contains the hexadecimal digits of pi (3.141...) */ System.arraycopy(KS0, 0, S0, 0, SBOX_SK); System.arraycopy(KS1, 0, S1, 0, SBOX_SK); System.arraycopy(KS2, 0, S2, 0, SBOX_SK); System.arraycopy(KS3, 0, S3, 0, SBOX_SK); System.arraycopy(KP, 0, P, 0, P_SZ); - /* - * (2) Now, XOR P[0] with the first 32 bits of the key, XOR P[1] with the second 32-bits of the key, and so on for all bits of the key (up to P[17]). Repeatedly cycle through the key bits until the entire P-array has been XOR-ed with the key bits + /** + * (2) Now, XOR P[0] with the first 32 bits of the key, XOR P[1] with the second 32-bits of the key, and so on for all bits of the key (up to P[17]).
+ * Repeatedly cycle through the key bits until the entire P-array has been XOR-ed with the key bits */ final int keyLength = key.length; int keyIndex = 0; @@ -1231,9 +1196,12 @@ public class BlowfishEngine // XOR the newly created 32 bit chunk onto the P-array P[i] ^= data; } - /* - * (3) Encrypt the all-zero string with the Blowfish algorithm, using the subkeys described in (1) and (2) (4) Replace P1 and P2 with the output of step (3) (5) Encrypt the output of step(3) using the Blowfish algorithm, with the modified subkeys. (6) Replace P3 and P4 with the output of - * step (5) (7) Continue the process, replacing all elements of the P-array and then all four S-boxes in order, with the output of the continuously changing Blowfish algorithm + /** + * (3) Encrypt the all-zero string with the Blowfish algorithm, using the subkeys described in (1) and (2)
+ * (4) Replace P1 and P2 with the output of step (3)
+ * (5) Encrypt the output of step(3) using the Blowfish algorithm, with the modified subkeys.
+ * (6) Replace P3 and P4 with the output of step (5)
+ * (7) Continue the process, replacing all elements of the P-array and then all four S-boxes in order, with the output of the continuously changing Blowfish algorithm */ processTable(0, 0, P); processTable(P[P_SZ - 2], P[P_SZ - 1], S0); @@ -1243,61 +1211,246 @@ public class BlowfishEngine } /** - * Encrypt the given input starting at the given offset and place the result in the provided buffer starting at the given offset. The input will be an exact multiple of our blocksize. - * @param src - * @param srcIndex - * @param dst - * @param dstIndex + * Method to encrypt the block at the given index.
+ * The encrypted block goes directly to the source array at the given index. + * @param src source array with the plain data + * @param srcIndex index where the block to encrypt is located + * @throws IllegalStateException The cipher was not yet initialized + * @throws IOException The source array is too small to hold a block at the given index */ - private void encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) + public void tryEncryptBlock(byte[] src, int srcIndex) throws IOException + { + if (workingKey == null) + { + throw new IllegalStateException("Blowfish not initialized"); + } + if ((srcIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("input buffer too short"); + } + encryptBlock(src, srcIndex); + } + + /** + * Method to encrypt the block at the given index.
+ * The encrypted block goes to the destination array at the given index. + * @param src source array with the plain data + * @param srcIndex index where the block to encrypt is located + * @param dst destination array the encryption will go to + * @param dstIndex index where the encrypted block is to be stored + * @throws IllegalStateException The cipher was not yet initialized + * @throws IOException The source or destination array is too small to hold a block at the given index + */ + public void tryEncryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) throws IOException + { + if (workingKey == null) + { + throw new IllegalStateException("Blowfish not initialized"); + } + if ((srcIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("input buffer too short"); + } + if ((dstIndex + BLOCK_SIZE) > dst.length) + { + throw new IOException("output buffer too short"); + } + encryptBlock(src, srcIndex, dst, dstIndex); + } + + /** + * Method to encrypt the block at the given index.
+ * The encrypted block goes directly to the source array at the given
+ * index.
+ *
+ * This method does not perform any error checking. This could be
+ * usefull when code calling this method performs size checks already or
+ * perfroming steps to ensure nothing can go wrong.
+ *
+ * If you want error checking use {@link #tryEncryptBlock(byte[], int)}. + * @param src source array with the plain data + * @param srcIndex index where the block to encrypt is located + */ + public void encryptBlock(byte[] src, int srcIndex) + { + encryptBlock(src, srcIndex, src, srcIndex); + } + + /** + * Method to encrypt the block at the given index.
+ * The encrypted block goes to the destination array at the given index.
+ *
+ * This method does not perform any error checking. This could be
+ * usefull when code calling this method performs size checks already or
+ * perfroming steps to ensure nothing can go wrong.
+ *
+ * If you want error checking use {@link #tryEncryptBlock(byte[], int, byte[], int)}. + * @param src source array with the plain data + * @param srcIndex index where the block to encrypt is located + * @param dst destination array the encryption will go to + * @param dstIndex index where the encrypted block is to be stored + */ + public void encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) { int xl = bytesTo32bits(src, srcIndex); int xr = bytesTo32bits(src, srcIndex + 4); xl ^= P[0]; - for (int i = 1; i < ROUNDS; i += 2) - { - xr ^= func(xl) ^ P[i]; - xl ^= func(xr) ^ P[i + 1]; - } - - xr ^= P[ROUNDS + 1]; + xr ^= func(xl) ^ P[1]; + xl ^= func(xr) ^ P[2]; + xr ^= func(xl) ^ P[3]; + xl ^= func(xr) ^ P[4]; + xr ^= func(xl) ^ P[5]; + xl ^= func(xr) ^ P[6]; + xr ^= func(xl) ^ P[7]; + xl ^= func(xr) ^ P[8]; + xr ^= func(xl) ^ P[9]; + xl ^= func(xr) ^ P[10]; + xr ^= func(xl) ^ P[11]; + xl ^= func(xr) ^ P[12]; + xr ^= func(xl) ^ P[13]; + xl ^= func(xr) ^ P[14]; + xr ^= func(xl) ^ P[15]; + xl ^= func(xr) ^ P[16]; + xr ^= P[17]; bits32ToBytes(xr, dst, dstIndex); bits32ToBytes(xl, dst, dstIndex + 4); } /** - * Decrypt the given input starting at the given offset and place the result in the provided buffer starting at the given offset. The input will be an exact multiple of our blocksize. - * @param src - * @param srcIndex - * @param dst - * @param dstIndex + * Method to decrypt the block at the given index.
+ * The decrypted block goes directly to the source array at the given
+ * index. + * @param src source array with the encrypted data + * @param srcIndex index where the block to decrypt is located + * @throws IllegalStateException The cipher was not yet initialized + * @throws IOException The source array is too small to hold a block at the given index */ - private void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) + public void tryDecryptBlock(byte[] src, int srcIndex) throws IOException + { + if (workingKey == null) + { + throw new IllegalStateException("Blowfish not initialized"); + } + if ((srcIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("input buffer too short"); + } + decryptBlock(src, srcIndex); + } + + /** + * Method to decrypt the block at the given index.
+ * The decrypted block goes to the destination array at the given index.
+ * @param src source array with the plain data + * @param srcIndex index where the block to decrypt is located + * @param dst destination array the decryption will go to + * @param dstIndex index where the decrypted block is to be stored + * @throws IllegalStateException The cipher was not yet initialized + * @throws IOException The source or destination array is too small to hold a block at the given index + */ + public void tryDecryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) throws IOException + { + if (workingKey == null) + { + throw new IllegalStateException("Blowfish not initialized"); + } + if ((srcIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("input buffer too short"); + } + if ((dstIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("output buffer too short"); + } + decryptBlock(src, srcIndex, dst, dstIndex); + } + + /** + * Method to decrypt the block at the given index.
+ * The decrypted block goes directly to the source array at the given
+ * index.
+ *
+ * This method does not perform any error checking. This could be
+ * usefull when code calling this method performs size checks already or
+ * perfroming steps to ensure nothing can go wrong.
+ *
+ * If you want error checking use {@link #tryDecryptBlock(byte[], int)}. + * @param src source array with the encrypted data + * @param srcIndex index where the block to decrypt is located + */ + public void decryptBlock(byte[] src, int srcIndex) + { + decryptBlock(src, srcIndex, src, srcIndex); + } + + /** + * Method to decrypt the block at the given index.
+ * The decrypted block goes to the destination array at the given index.
+ *
+ * This method does not perform any error checking. This could be
+ * usefull when code calling this method performs size checks already or
+ * perfroming steps to ensure nothing can go wrong.
+ *
+ * If you want error checking use {@link #tryDecryptBlock(byte[], int, byte[], int)}. + * @param src source array with the plain data + * @param srcIndex index where the block to decrypt is located + * @param dst destination array the decryption will go to + * @param dstIndex index where the decrypted block is to be stored + * @throws IllegalStateException The cipher was not yet initialized + */ + public void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) { int xl = bytesTo32bits(src, srcIndex); int xr = bytesTo32bits(src, srcIndex + 4); - xl ^= P[ROUNDS + 1]; - for (int i = ROUNDS; i > 0; i -= 2) - { - xr ^= func(xl) ^ P[i]; - xl ^= func(xr) ^ P[i - 1]; - } - + xl ^= P[17]; + xr ^= func(xl) ^ P[16]; + xl ^= func(xr) ^ P[15]; + xr ^= func(xl) ^ P[14]; + xl ^= func(xr) ^ P[13]; + xr ^= func(xl) ^ P[12]; + xl ^= func(xr) ^ P[11]; + xr ^= func(xl) ^ P[10]; + xl ^= func(xr) ^ P[9]; + xr ^= func(xl) ^ P[8]; + xl ^= func(xr) ^ P[7]; + xr ^= func(xl) ^ P[6]; + xl ^= func(xr) ^ P[5]; + xr ^= func(xl) ^ P[4]; + xl ^= func(xr) ^ P[3]; + xr ^= func(xl) ^ P[2]; + xl ^= func(xr) ^ P[1]; xr ^= P[0]; bits32ToBytes(xr, dst, dstIndex); bits32ToBytes(xl, dst, dstIndex + 4); } - private int bytesTo32bits(byte[] b, int i) + /** + * Method to construct an int from the source array.
+ * 4 bytes are used from the given index.
+ *
+ * This method does not do any error checking. + * @param src source array with the bytes + * @param srcIndex the index to extract the int from + * @return the extracted integer + */ + private int bytesTo32bits(byte[] src, int srcIndex) { - return ((b[i + 3] & 0xff) << 24) | ((b[i + 2] & 0xff) << 16) | ((b[i + 1] & 0xff) << 8) | (b[i] & 0xff); + return ((src[srcIndex + 3] & 0xff) << 24) | ((src[srcIndex + 2] & 0xff) << 16) | ((src[srcIndex + 1] & 0xff) << 8) | (src[srcIndex] & 0xff); } - private void bits32ToBytes(int in, byte[] b, int offset) + /** + * Method to decompose an int into a byte array.
+ *
+ * This method does not do any error checking. + * @param in the integer to decompose into bytes + * @param dst the destination array the decomposed int goes to + * @param dstIndex the index in the destination array the decomposed int will be stored at + */ + private void bits32ToBytes(int in, byte[] dst, int dstIndex) { - b[offset] = (byte) in; - b[offset + 1] = (byte) (in >> 8); - b[offset + 2] = (byte) (in >> 16); - b[offset + 3] = (byte) (in >> 24); + dst[dstIndex] = (byte) in; + dst[dstIndex + 1] = (byte) (in >> 8); + dst[dstIndex + 2] = (byte) (in >> 16); + dst[dstIndex + 3] = (byte) (in >> 24); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/LoginCrypt.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/LoginCrypt.java new file mode 100644 index 0000000000..c6e45d369d --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/LoginCrypt.java @@ -0,0 +1,148 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.util.crypt; + +import javax.crypto.SecretKey; + +import org.l2jmobius.commons.network.ICrypt; +import org.l2jmobius.commons.util.Rnd; + +import io.netty.buffer.ByteBuf; + +/** + * @author NosBit + */ +public class LoginCrypt implements ICrypt +{ + private static final byte[] STATIC_BLOWFISH_KEY = + { + (byte) 0x6b, + (byte) 0x60, + (byte) 0xcb, + (byte) 0x5b, + (byte) 0x82, + (byte) 0xce, + (byte) 0x90, + (byte) 0xb1, + (byte) 0xcc, + (byte) 0x2b, + (byte) 0x6c, + (byte) 0x55, + (byte) 0x6c, + (byte) 0x6c, + (byte) 0x6c, + (byte) 0x6c + }; + + private static final BlowfishEngine STATIC_BLOWFISH_ENGINE = new BlowfishEngine(); + static + { + STATIC_BLOWFISH_ENGINE.init(STATIC_BLOWFISH_KEY); + } + + private final BlowfishEngine _blowfishEngine = new BlowfishEngine(); + private boolean _static = true; + + public LoginCrypt(SecretKey blowfishKey) + { + _blowfishEngine.init(blowfishKey.getEncoded()); + } + + /* + * (non-Javadoc) + * @see com.l2jserver.commons.network.ICrypt#encrypt(io.netty.buffer.ByteBuf) + */ + @Override + public void encrypt(ByteBuf buf) + { + // Checksum & XOR Key or Checksum only + buf.writeZero(_static ? 16 : 12); + + // Padding + buf.writeZero(8 - (buf.readableBytes() % 8)); + + if (_static) + { + _static = false; + + int key = Rnd.nextInt(); + buf.skipBytes(4); // The first 4 bytes are ignored + while (buf.readerIndex() < (buf.writerIndex() - 8)) + { + int data = buf.readIntLE(); + key += data; + data ^= key; + buf.setIntLE(buf.readerIndex() - 4, data); + } + buf.setIntLE(buf.readerIndex(), key); + + buf.resetReaderIndex(); + + final byte[] block = new byte[8]; + while (buf.isReadable(8)) + { + buf.readBytes(block); + STATIC_BLOWFISH_ENGINE.encryptBlock(block, 0); + buf.setBytes(buf.readerIndex() - block.length, block); + } + } + else + { + int checksum = 0; + while (buf.isReadable(8)) + { + checksum ^= buf.readIntLE(); + } + buf.setIntLE(buf.readerIndex(), checksum); + + buf.resetReaderIndex(); + + final byte[] block = new byte[8]; + while (buf.isReadable(8)) + { + buf.readBytes(block); + _blowfishEngine.encryptBlock(block, 0); + buf.setBytes(buf.readerIndex() - block.length, block); + } + } + } + + /* + * (non-Javadoc) + * @see com.l2jserver.commons.network.ICrypt#decrypt(io.netty.buffer.ByteBuf) + */ + @Override + public void decrypt(ByteBuf buf) + { + // Packet size must be multiple of 8 + if ((buf.readableBytes() % 8) != 0) + { + buf.clear(); + return; + } + + final byte[] block = new byte[8]; + while (buf.isReadable(8)) + { + buf.readBytes(block); + _blowfishEngine.decryptBlock(block, 0); + buf.setBytes(buf.readerIndex() - block.length, block); + } + + // TODO: verify checksum also dont forget! + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/NewCrypt.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/NewCrypt.java similarity index 51% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/NewCrypt.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/NewCrypt.java index 1ed3a77e11..eac64a51ba 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/NewCrypt.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/NewCrypt.java @@ -14,29 +14,27 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.commons.crypt; - -import java.io.IOException; -import java.util.logging.Logger; +package org.l2jmobius.commons.util.crypt; /** - * @version $Revision: 1.3.4.1 $ $Date: 2005/03/27 15:30:09 $ + * Class to use a blowfish cipher with ECB processing.
+ * Static methods are present to append/check the checksum of
+ * packets exchanged between the following partners:
+ * Login Server <-> Game Client
+ * Login Server <-> Game Server
+ * Also a static method is provided for the initial xor encryption between Login Server <-> Game Client. */ public class NewCrypt { - protected static final Logger LOGGER = Logger.getLogger(NewCrypt.class.getName()); - BlowfishEngine _crypt; - BlowfishEngine _decrypt; + private final BlowfishEngine _cipher; /** * @param blowfishKey */ public NewCrypt(byte[] blowfishKey) { - _crypt = new BlowfishEngine(); - _crypt.init(true, blowfishKey); - _decrypt = new BlowfishEngine(); - _decrypt.init(false, blowfishKey); + _cipher = new BlowfishEngine(); + _cipher.init(blowfishKey); } public NewCrypt(String key) @@ -44,11 +42,24 @@ public class NewCrypt this(key.getBytes()); } + /** + * Equivalent to calling {@link #verifyChecksum(byte[], int, int)} with parameters (raw, 0, raw.length) + * @param raw data array to be verified + * @return true when the checksum of the data is valid, false otherwise + */ public static boolean verifyChecksum(byte[] raw) { return verifyChecksum(raw, 0, raw.length); } + /** + * Method to verify the checksum of a packet received by login server from game client.
+ * This is also used for game server <-> login server communication. + * @param raw data array to be verified + * @param offset at which offset to start verifying + * @param size number of bytes to verify + * @return true if the checksum of the data is valid, false otherwise + */ public static boolean verifyChecksum(byte[] raw, int offset, int size) { // check if size is multiple of 4 and if there is more then only the checksum @@ -80,11 +91,21 @@ public class NewCrypt return check == chksum; } + /** + * Equivalent to calling {@link #appendChecksum(byte[], int, int)} with parameters (raw, 0, raw.length) + * @param raw data array to compute the checksum from + */ public static void appendChecksum(byte[] raw) { appendChecksum(raw, 0, raw.length); } + /** + * Method to append packet checksum at the end of the packet. + * @param raw data array to compute the checksum from + * @param offset offset where to start in the data array + * @param size number of bytes to compute the checksum from + */ public static void appendChecksum(byte[] raw, int offset, int size) { long chksum = 0; @@ -114,7 +135,8 @@ public class NewCrypt } /** - * Packet is first XOR encoded with key Then, the last 4 bytes are overwritten with the the XOR "key". Thus this assume that there is enough room for the key to fit without overwriting data. + * Packet is first XOR encoded with key then, the last 4 bytes are overwritten with the the XOR "key".
+ * Thus this assume that there is enough room for the key to fit without overwriting data. * @param raw The raw bytes to be encrypted * @param key The 4 bytes (int) XOR key */ @@ -124,13 +146,14 @@ public class NewCrypt } /** - * Packet is first XOR encoded with key Then, the last 4 bytes are overwritten with the the XOR "key". Thus this assume that there is enough room for the key to fit without overwriting data. + * Packet is first XOR encoded with key then, the last 4 bytes are overwritten with the the XOR "key".
+ * Thus this assume that there is enough room for the key to fit without overwriting data. * @param raw The raw bytes to be encrypted - * @param offset The begining of the data to be encrypted + * @param offset The beginning of the data to be encrypted * @param size Length of the data to be encrypted * @param key The 4 bytes (int) XOR key */ - public static void encXORPass(byte[] raw, int offset, int size, int key) + static void encXORPass(byte[] raw, int offset, int size, int key) { final int stop = size - 8; int pos = 4 + offset; @@ -160,55 +183,36 @@ public class NewCrypt raw[pos++] = (byte) ((ecx >> 24) & 0xFF); } - public byte[] decrypt(byte[] raw) throws IOException + /** + * Method to decrypt using Blowfish-Blockcipher in ECB mode.
+ * The results will be directly placed inside {@code raw} array.
+ * This method does not do any error checking, since the calling code
+ * should ensure sizes. + * @param raw the data array to be decrypted + * @param offset the offset at which to start decrypting + * @param size the number of bytes to be decrypted + */ + public void decrypt(byte[] raw, int offset, int size) { - final byte[] result = new byte[raw.length]; - final int count = raw.length / 8; - - for (int i = 0; i < count; i++) + for (int i = offset; i < (offset + size); i += 8) { - _decrypt.processBlock(raw, i * 8, result, i * 8); + _cipher.decryptBlock(raw, i); } - - return result; } - public void decrypt(byte[] raw, int offset, int size) throws IOException + /** + * Method to encrypt using Blowfish-Blockcipher in ECB mode.
+ * The results will be directly placed inside {@code raw} array.
+ * This method does not do any error checking, since the calling code should ensure sizes. + * @param raw the data array to be decrypted + * @param offset the offset at which to start decrypting + * @param size the number of bytes to be decrypted + */ + public void crypt(byte[] raw, int offset, int size) { - final byte[] result = new byte[size]; - final int count = size / 8; - - for (int i = 0; i < count; i++) + for (int i = offset; i < (offset + size); i += 8) { - _decrypt.processBlock(raw, offset + (i * 8), result, i * 8); + _cipher.encryptBlock(raw, i); } - // TODO can the crypt and decrypt go direct to the array - System.arraycopy(result, 0, raw, offset, size); - } - - public byte[] crypt(byte[] raw) throws IOException - { - final int count = raw.length / 8; - final byte[] result = new byte[raw.length]; - - for (int i = 0; i < count; i++) - { - _crypt.processBlock(raw, i * 8, result, i * 8); - } - - return result; - } - - public void crypt(byte[] raw, int offset, int size) throws IOException - { - final int count = size / 8; - final byte[] result = new byte[size]; - - for (int i = 0; i < count; i++) - { - _crypt.processBlock(raw, offset + (i * 8), result, i * 8); - } - // TODO can the crypt and decrypt go direct to the array - System.arraycopy(result, 0, raw, offset, size); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/ScrambledKeyPair.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/ScrambledKeyPair.java similarity index 77% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/ScrambledKeyPair.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/ScrambledKeyPair.java index 1c91d7bd04..44a1c08b67 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/ScrambledKeyPair.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/util/crypt/ScrambledKeyPair.java @@ -14,16 +14,19 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.commons.crypt; +package org.l2jmobius.commons.util.crypt; import java.math.BigInteger; +import java.security.Key; import java.security.KeyPair; import java.security.interfaces.RSAPublicKey; +import java.util.logging.Logger; public class ScrambledKeyPair { - public KeyPair _pair; - public byte[] _scrambledModulus; + private static final Logger LOGGER = Logger.getLogger(ScrambledKeyPair.class.getName()); + private final KeyPair _pair; + private final byte[] _scrambledModulus; public ScrambledKeyPair(KeyPair pPair) { @@ -41,7 +44,6 @@ public class ScrambledKeyPair System.arraycopy(scrambledMod, 1, temp, 0, 0x80); scrambledMod = temp; } - // step 1 : 0x4d-0x50 <-> 0x00-0x04 for (int i = 0; i < 4; i++) { @@ -49,25 +51,38 @@ public class ScrambledKeyPair scrambledMod[0x00 + i] = scrambledMod[0x4d + i]; scrambledMod[0x4d + i] = temp; } - // step 2 : xor first 0x40 bytes with last 0x40 bytes for (int i = 0; i < 0x40; i++) { scrambledMod[i] = (byte) (scrambledMod[i] ^ scrambledMod[0x40 + i]); } - // step 3 : xor bytes 0x0d-0x10 with bytes 0x34-0x38 for (int i = 0; i < 4; i++) { scrambledMod[0x0d + i] = (byte) (scrambledMod[0x0d + i] ^ scrambledMod[0x34 + i]); } - // step 4 : xor last 0x40 bytes with first 0x40 bytes for (int i = 0; i < 0x40; i++) { scrambledMod[0x40 + i] = (byte) (scrambledMod[0x40 + i] ^ scrambledMod[i]); } + LOGGER.finer("Modulus was scrambled"); return scrambledMod; } + + public byte[] getScrambledModulus() + { + return _scrambledModulus; + } + + public Key getPrivateKey() + { + return _pair.getPrivate(); + } + + public Key getPublicKey() + { + return _pair.getPublic(); + } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/GameServer.java index 647943e42e..22971df475 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/GameServer.java @@ -17,12 +17,10 @@ package org.l2jmobius.gameserver; import java.awt.GraphicsEnvironment; +import java.awt.Toolkit; import java.io.File; import java.io.FileInputStream; -import java.io.IOException; import java.io.InputStream; -import java.net.InetAddress; -import java.net.UnknownHostException; import java.util.Calendar; import java.util.logging.LogManager; import java.util.logging.Logger; @@ -31,8 +29,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.enums.ServerMode; -import org.l2jmobius.commons.mmocore.SelectorConfig; -import org.l2jmobius.commons.mmocore.SelectorThread; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.DeadlockDetector; import org.l2jmobius.commons.util.Util; @@ -121,8 +117,8 @@ import org.l2jmobius.gameserver.model.siege.clanhalls.BanditStrongholdSiege; import org.l2jmobius.gameserver.model.siege.clanhalls.DevastatedCastle; import org.l2jmobius.gameserver.model.siege.clanhalls.FortressOfResistance; import org.l2jmobius.gameserver.model.spawn.AutoSpawn; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.GamePacketHandler; +import org.l2jmobius.gameserver.network.ClientNetworkManager; +import org.l2jmobius.gameserver.network.loginserver.LoginServerNetworkManager; import org.l2jmobius.gameserver.script.EventDroplist; import org.l2jmobius.gameserver.script.faenor.FaenorScriptEngine; import org.l2jmobius.gameserver.scripting.ScriptEngineManager; @@ -134,14 +130,16 @@ public class GameServer { private static final Logger LOGGER = Logger.getLogger(GameServer.class.getName()); - private static SelectorThread _selectorThread; - private static LoginServerThread _loginThread; - private static GamePacketHandler _gamePacketHandler; private static TelnetStatusThread _statusServer; private static GameServer INSTANCE; public static final Calendar dateTimeServerStarted = Calendar.getInstance(); + public long getUsedMemoryMB() + { + return (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1048576; + } + public GameServer() throws Exception { final long serverLoadStart = Chronos.currentTimeMillis(); @@ -476,17 +474,6 @@ public class GameServer { PrecautionaryRestartManager.getInstance(); } - - System.gc(); - - Util.printSection("Info"); - LOGGER.info("Maximum Numbers of Connected Players: " + Config.MAXIMUM_ONLINE_USERS); - LOGGER.info("GameServer Started, free memory " + (((Runtime.getRuntime().maxMemory() - Runtime.getRuntime().totalMemory()) + Runtime.getRuntime().freeMemory()) / 1048576) + " Mb of " + (Runtime.getRuntime().maxMemory() / 1048576) + " Mb"); - LOGGER.info("Used memory: " + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1048576) + " MB"); - - Util.printSection("Status"); - LOGGER.info("Server Loaded in " + ((Chronos.currentTimeMillis() - serverLoadStart) / 1000) + " seconds."); - // Load telnet status Util.printSection("Telnet"); if (Config.IS_TELNET_ENABLED) @@ -500,47 +487,24 @@ public class GameServer } Util.printSection("Login"); - _loginThread = LoginServerThread.getInstance(); - _loginThread.start(); + ClientNetworkManager.getInstance().start(); - final SelectorConfig sc = new SelectorConfig(); - sc.MAX_READ_PER_PASS = Config.MMO_MAX_READ_PER_PASS; - sc.MAX_SEND_PER_PASS = Config.MMO_MAX_SEND_PER_PASS; - sc.SLEEP_TIME = Config.MMO_SELECTOR_SLEEP_TIME; - sc.HELPER_BUFFER_COUNT = Config.MMO_HELPER_BUFFER_COUNT; - - _gamePacketHandler = new GamePacketHandler(); - - _selectorThread = new SelectorThread<>(sc, _gamePacketHandler, _gamePacketHandler, _gamePacketHandler); - - InetAddress bindAddress = null; - if (!Config.GAMESERVER_HOSTNAME.equals("*")) + if (Boolean.getBoolean("newLoginServer")) { - try - { - bindAddress = InetAddress.getByName(Config.GAMESERVER_HOSTNAME); - } - catch (UnknownHostException e1) - { - LOGGER.warning("The GameServer bind address is invalid, using all avaliable IPs. Reason: " + e1); - } + LoginServerNetworkManager.getInstance().connect(); + } + else + { + LoginServerThread.getInstance().start(); } - try - { - _selectorThread.openServerSocket(bindAddress, Config.PORT_GAME); - } - catch (IOException e) - { - LOGGER.severe("Failed to open server socket. Reason: " + e); - System.exit(1); - } - _selectorThread.start(); - } - - public static SelectorThread getSelectorThread() - { - return _selectorThread; + System.gc(); + final long totalMem = Runtime.getRuntime().maxMemory() / 1048576; + LOGGER.info(getClass().getSimpleName() + ": Started, using " + getUsedMemoryMB() + " of " + totalMem + " MB total memory."); + LOGGER.info(getClass().getSimpleName() + ": Maximum number of connected players is " + Config.MAXIMUM_ONLINE_USERS + "."); + LOGGER.info(getClass().getSimpleName() + ": Server loaded in " + ((Chronos.currentTimeMillis() - serverLoadStart) / 1000) + " seconds."); + + Toolkit.getDefaultToolkit().beep(); } public static void main(String[] args) throws Exception diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/LoginServerThread.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/LoginServerThread.java index b9d07cdba8..478b919b3a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/LoginServerThread.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/LoginServerThread.java @@ -42,19 +42,19 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.gameserverpackets.AuthRequest; -import org.l2jmobius.gameserver.network.gameserverpackets.BlowFishKey; -import org.l2jmobius.gameserver.network.gameserverpackets.ChangeAccessLevel; -import org.l2jmobius.gameserver.network.gameserverpackets.GameServerBasePacket; -import org.l2jmobius.gameserver.network.gameserverpackets.PlayerAuthRequest; -import org.l2jmobius.gameserver.network.gameserverpackets.PlayerInGame; -import org.l2jmobius.gameserver.network.gameserverpackets.PlayerLogout; -import org.l2jmobius.gameserver.network.gameserverpackets.ServerStatus; -import org.l2jmobius.gameserver.network.loginserverpackets.AuthResponse; -import org.l2jmobius.gameserver.network.loginserverpackets.InitLS; -import org.l2jmobius.gameserver.network.loginserverpackets.KickPlayer; -import org.l2jmobius.gameserver.network.loginserverpackets.LoginServerFail; -import org.l2jmobius.gameserver.network.loginserverpackets.PlayerAuthResponse; +import org.l2jmobius.gameserver.network.loginserverpackets.game.AuthRequest; +import org.l2jmobius.gameserver.network.loginserverpackets.game.BlowFishKey; +import org.l2jmobius.gameserver.network.loginserverpackets.game.ChangeAccessLevel; +import org.l2jmobius.gameserver.network.loginserverpackets.game.GameServerBasePacket; +import org.l2jmobius.gameserver.network.loginserverpackets.game.PlayerAuthRequest; +import org.l2jmobius.gameserver.network.loginserverpackets.game.PlayerInGame; +import org.l2jmobius.gameserver.network.loginserverpackets.game.PlayerLogout; +import org.l2jmobius.gameserver.network.loginserverpackets.game.ServerStatus; +import org.l2jmobius.gameserver.network.loginserverpackets.login.AuthResponse; +import org.l2jmobius.gameserver.network.loginserverpackets.login.InitLS; +import org.l2jmobius.gameserver.network.loginserverpackets.login.KickPlayer; +import org.l2jmobius.gameserver.network.loginserverpackets.login.LoginServerFail; +import org.l2jmobius.gameserver.network.loginserverpackets.login.PlayerAuthResponse; import org.l2jmobius.gameserver.network.serverpackets.AuthLoginFail; import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; @@ -296,10 +296,10 @@ public class LoginServerThread extends Thread { final PlayerInGame pig = new PlayerInGame(par.getAccount()); sendPacket(pig); - wcToRemove.gameClient.setState(ConnectionState.AUTHENTICATED); + wcToRemove.gameClient.setConnectionState(ConnectionState.AUTHENTICATED); wcToRemove.gameClient.setSessionId(wcToRemove.session); final CharSelectInfo cl = new CharSelectInfo(wcToRemove.account, wcToRemove.gameClient.getSessionId().playOkID1); - wcToRemove.gameClient.getConnection().sendPacket(cl); + wcToRemove.gameClient.sendPacket(cl); wcToRemove.gameClient.setCharSelection(cl.getCharInfo()); } else diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/Shutdown.java index 4d47a1e27f..064685d929 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/Shutdown.java @@ -37,8 +37,10 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; import org.l2jmobius.gameserver.model.sevensigns.SevenSignsFestival; +import org.l2jmobius.gameserver.network.ClientNetworkManager; +import org.l2jmobius.gameserver.network.EventLoopGroupManager; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.gameserverpackets.ServerStatus; +import org.l2jmobius.gameserver.network.loginserverpackets.game.ServerStatus; import org.l2jmobius.gameserver.network.serverpackets.ServerClose; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -320,13 +322,16 @@ public class Shutdown extends Thread { } + // saveData sends messages to exit players, so shutdown selector after it try { - // GameServer.getSelectorThread().setDaemon(true); - GameServer.getSelectorThread().shutdown(); + ClientNetworkManager.getInstance().stop(); + EventLoopGroupManager.getInstance().shutdown(); + LOGGER.info("Game Server: Selector thread has been shut down."); } catch (Throwable t) { + // ignore } // stop all threadpolls @@ -530,7 +535,7 @@ public class Shutdown extends Thread if (player.getClient() != null) { player.getClient().sendPacket(ServerClose.STATIC_PACKET); - player.getClient().close(0); + player.getClient().close(false); player.getClient().setPlayer(null); player.setClient(null); } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/OfflineTradeTable.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/OfflineTradeTable.java index f1ecd9589d..7bc8b2192c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/OfflineTradeTable.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/OfflineTradeTable.java @@ -201,11 +201,11 @@ public class OfflineTradeTable PlayerInstance player = null; try { - final GameClient client = new GameClient(null); + final GameClient client = new GameClient(); player = PlayerInstance.load(rs.getInt("charId")); client.setPlayer(player); client.setAccountName(player.getAccountName()); - client.setState(ConnectionState.IN_GAME); + client.setConnectionState(ConnectionState.IN_GAME); player.setClient(client); player.setOfflineMode(true); player.setOnlineStatus(false); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/xml/AdminData.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/xml/AdminData.java index 2a98320977..519d581764 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/xml/AdminData.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/data/xml/AdminData.java @@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** @@ -302,7 +302,7 @@ public class AdminData implements IXmlReader } } - public static void broadcastToGMs(GameServerPacket packet) + public static void broadcastToGMs(IClientOutgoingPacket packet) { for (PlayerInstance gm : getInstance().getAllGms(true)) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminDisconnect.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminDisconnect.java index b64b0691d8..378dcc949d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminDisconnect.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminDisconnect.java @@ -71,7 +71,7 @@ public class AdminDisconnect implements IAdminCommandHandler BuilderUtil.sendSysMessage(activeChar, "Character " + player.getName() + " disconnected from server."); // Logout Character - player.sendPacket(new LeaveWorld()); + player.sendPacket(LeaveWorld.STATIC_PACKET); player.closeNetConnection(); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEditChar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEditChar.java index 26f8d17284..d355993480 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEditChar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEditChar.java @@ -1195,12 +1195,12 @@ public class AdminEditChar implements IAdminCommandHandler final Map dualboxIPs = new HashMap<>(); for (PlayerInstance player : players) { - if ((player.getClient() == null) || (player.getClient().getConnection() == null) || (player.getClient().getConnection().getInetAddress() == null) || (player.getClient().getConnection().getInetAddress().getHostAddress() == null)) + if ((player.getClient() == null) || (player.getClient().getConnectionAddress() == null) || (player.getClient().getConnectionAddress() == null) || (player.getClient().getConnectionAddress().getHostAddress() == null)) { continue; } - ip = player.getClient().getConnection().getInetAddress().getHostAddress(); + ip = player.getClient().getConnectionAddress().getHostAddress(); if (ipMap.get(ip) == null) { ipMap.put(ip, new ArrayList()); @@ -1260,12 +1260,12 @@ public class AdminEditChar implements IAdminCommandHandler for (PlayerInstance player : players) { - if ((player.getClient() == null) || (player.getClient().getConnection() == null) || (player.getClient().getConnection().getInetAddress() == null) || (player.getClient().getConnection().getInetAddress().getHostAddress() == null)) + if ((player.getClient() == null) || (player.getClient().getConnectionAddress() == null) || (player.getClient().getConnectionAddress() == null) || (player.getClient().getConnectionAddress().getHostAddress() == null)) { continue; } - ip = player.getClient().getConnection().getInetAddress().getHostAddress(); + ip = player.getClient().getConnectionAddress().getHostAddress(); if (ip.equals(ipAdress)) { name = player.getName(); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEffects.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEffects.java index b14c662913..1ce07806af 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEffects.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEffects.java @@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.ExRedSky; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SignsSky; @@ -666,7 +666,7 @@ public class AdminEffects implements IAdminCommandHandler */ private void adminAtmosphere(String type, String state, PlayerInstance activeChar) { - GameServerPacket packet = null; + IClientOutgoingPacket packet = null; switch (type) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEnchant.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEnchant.java index 85cc055b7a..5853b4d205 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEnchant.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEnchant.java @@ -23,9 +23,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.CharInfo; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; -import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.util.BuilderUtil; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; @@ -219,8 +217,7 @@ public class AdminEnchant implements IAdminCommandHandler final InventoryUpdate iu = new InventoryUpdate(); iu.addModifiedItem(itemInstance); player.sendPacket(iu); - player.broadcastPacket(new CharInfo(player)); - player.sendPacket(new UserInfo(player)); + player.broadcastUserInfo(); // informations BuilderUtil.sendSysMessage(activeChar, "Changed enchantment of " + player.getName() + "'s " + itemInstance.getItem().getName() + " from " + curEnchant + " to " + ench + "."); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminLogin.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminLogin.java index e81537d93e..b6703f377c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminLogin.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminLogin.java @@ -22,7 +22,7 @@ import org.l2jmobius.Config; import org.l2jmobius.gameserver.LoginServerThread; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.gameserverpackets.ServerStatus; +import org.l2jmobius.gameserver.network.loginserverpackets.game.ServerStatus; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.util.BuilderUtil; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java index 870fb7700f..9fb6b3327f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java @@ -238,7 +238,7 @@ public class SummonFriend implements ISkillHandler final ConfirmDlg confirm = new ConfirmDlg(SystemMessageId.S1_WISHES_TO_SUMMON_YOU_FROM_S2_DO_YOU_ACCEPT.getId()); confirm.addString(activePlayer.getName()); confirm.addZoneName(activePlayer.getX(), activePlayer.getY(), activePlayer.getZ()); - confirm.addTime(30000); + confirm.addTime(30000, targetPlayer); confirm.addRequesterId(activePlayer.getObjectId()); targetPlayer.sendPacket(confirm); } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java index 89ab1331dc..7f4c0e7cc4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java @@ -31,7 +31,7 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -179,7 +179,7 @@ public class PetitionManager return _type.toString().replace("_", " "); } - public void sendPetitionerPacket(GameServerPacket responsePacket) + public void sendPetitionerPacket(IClientOutgoingPacket responsePacket) { if ((_petitioner == null) || !_petitioner.isOnline()) { @@ -189,7 +189,7 @@ public class PetitionManager _petitioner.sendPacket(responsePacket); } - public void sendResponderPacket(GameServerPacket responsePacket) + public void sendResponderPacket(IClientOutgoingPacket responsePacket) { if ((_responder == null) || !_responder.isOnline()) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/CommandChannel.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/CommandChannel.java index 2abca65655..d00bb045aa 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/CommandChannel.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/CommandChannel.java @@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.ExCloseMPCC; import org.l2jmobius.gameserver.network.serverpackets.ExOpenMPCC; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** @@ -147,7 +147,7 @@ public class CommandChannel * Broadcast packet to every channel member * @param gsp */ - public void broadcastToChannelMembers(GameServerPacket gsp) + public void broadcastToChannelMembers(IClientOutgoingPacket gsp) { if ((_parties != null) && !_parties.isEmpty()) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/MacroList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/MacroList.java index d8482c95e8..2aaf9c0f43 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/MacroList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/MacroList.java @@ -176,7 +176,7 @@ public class MacroList } catch (Exception e) { - LOGGER.info("Player: " + _owner.getName() + " IP:" + _owner.getClient().getConnection().getInetAddress().getHostAddress() + " try to use bug with macros"); + LOGGER.info("Player: " + _owner.getName() + " IP:" + _owner.getClient().getConnectionAddress().getHostAddress() + " trird to use bug with macros."); LOGGER.warning("could not store macro: " + e); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Party.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Party.java index 634a2c4fbd..c0cb3659ab 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Party.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Party.java @@ -41,7 +41,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.ExCloseMPCC; import org.l2jmobius.gameserver.network.serverpackets.ExOpenMPCC; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.PartyMemberPosition; import org.l2jmobius.gameserver.network.serverpackets.PartySmallWindowAdd; import org.l2jmobius.gameserver.network.serverpackets.PartySmallWindowAll; @@ -281,7 +281,7 @@ public class Party * Broadcasts packet to every party member * @param msg */ - public void broadcastToPartyMembers(GameServerPacket msg) + public void broadcastToPartyMembers(IClientOutgoingPacket msg) { for (PlayerInstance member : _members) { @@ -327,7 +327,7 @@ public class Party * @param player * @param msg */ - public void broadcastToPartyMembers(PlayerInstance player, GameServerPacket msg) + public void broadcastToPartyMembers(PlayerInstance player, IClientOutgoingPacket msg) { for (PlayerInstance member : _members) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Request.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Request.java index 3c8507a78f..77661c0744 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Request.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Request.java @@ -19,7 +19,7 @@ package org.l2jmobius.gameserver.model; import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.GameClientPacket; +import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** @@ -34,7 +34,7 @@ public class Request protected PlayerInstance _partner; protected boolean _isRequestor; protected boolean _isAnswerer; - protected GameClientPacket _requestPacket; + protected IClientIncomingPacket _requestPacket; public Request(PlayerInstance player) { @@ -70,7 +70,7 @@ public class Request * Set the packet incomed from requester. * @param packet */ - private synchronized void setRequestPacket(GameClientPacket packet) + private synchronized void setRequestPacket(IClientIncomingPacket packet) { _requestPacket = packet; } @@ -78,7 +78,7 @@ public class Request /** * @return the packet originally incomed from requester. */ - public GameClientPacket getRequestPacket() + public IClientIncomingPacket getRequestPacket() { return _requestPacket; } @@ -89,7 +89,7 @@ public class Request * @param packet * @return */ - public synchronized boolean setRequest(PlayerInstance partner, GameClientPacket packet) + public synchronized boolean setRequest(PlayerInstance partner, IClientIncomingPacket packet) { if (partner == null) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java index f81c311623..ac6306d552 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -113,7 +113,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ChangeMoveType; import org.l2jmobius.gameserver.network.serverpackets.ChangeWaitType; import org.l2jmobius.gameserver.network.serverpackets.CharMoveToLocation; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadSpelledInfo; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.MagicEffectIcons; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; @@ -366,7 +366,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder getAttackByList().add(creature); } - public void broadcastPacket(GameServerPacket mov) + public void broadcastPacket(IClientOutgoingPacket mov) { for (PlayerInstance player : getKnownList().getKnownPlayers().values()) { @@ -374,7 +374,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } } - public void broadcastPacket(GameServerPacket mov, int radius) + public void broadcastPacket(IClientOutgoingPacket mov, int radius) { for (PlayerInstance player : getKnownList().getKnownPlayers().values()) { @@ -507,7 +507,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder *
  • PlayerInstance

  • * @param mov the mov */ - public void sendPacket(GameServerPacket mov) + public void sendPacket(IClientOutgoingPacket mov) { // default implementation } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java index 00a0831a91..306b28b02c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java @@ -526,7 +526,7 @@ public class DoorInstance extends Creature // Send a Server->Client packet MyTargetSelected to the PlayerInstance player player.sendPacket(new MyTargetSelected(getObjectId(), 0)); - player.sendPacket(new DoorStatusUpdate(this)); + player.sendPacket(new DoorStatusUpdate(this, player)); // Send a Server->Client packet ValidateLocation to correct the NpcInstance position and heading on the client player.sendPacket(new ValidateLocation(this)); @@ -577,7 +577,7 @@ public class DoorInstance extends Creature player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel())); if (isAutoAttackable(player)) { - player.sendPacket(new DoorStatusUpdate(this)); + player.sendPacket(new DoorStatusUpdate(this, player)); } final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); final StringBuilder html1 = new StringBuilder("
    Door Information
    "); @@ -603,7 +603,7 @@ public class DoorInstance extends Creature player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel())); if (isAutoAttackable(player)) { - player.sendPacket(new DoorStatusUpdate(this)); + player.sendPacket(new DoorStatusUpdate(this, player)); } final NpcHtmlMessage reply = new NpcHtmlMessage(5); @@ -627,10 +627,9 @@ public class DoorInstance extends Creature return; } - final DoorStatusUpdate su = new DoorStatusUpdate(this); for (PlayerInstance player : knownPlayers) { - player.sendPacket(su); + player.sendPacket(new DoorStatusUpdate(this, player)); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 2a595140bd..f02e73a7bd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -183,8 +183,8 @@ import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadMode; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadUserInfo; import org.l2jmobius.gameserver.network.serverpackets.ExPCCafePointInfo; import org.l2jmobius.gameserver.network.serverpackets.FriendList; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; import org.l2jmobius.gameserver.network.serverpackets.HennaInfo; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld; @@ -644,7 +644,7 @@ public class PlayerInstance extends Playable @Override public void doAttack(Creature target) { - if (Creature.isInsidePeaceZone(PlayerInstance.this, target)) + if (isInsidePeaceZone(PlayerInstance.this, target)) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -2076,7 +2076,7 @@ public class PlayerInstance extends Playable setOverloaded(false); _curWeightPenalty = 0; super.removeSkill(getKnownSkill(4270)); - Broadcast.toKnownPlayers(this, new CharInfo(this)); + Broadcast.toKnownPlayers(this, new CharInfo(this, isGM() && getAppearance().isInvisible())); } else { @@ -2120,7 +2120,7 @@ public class PlayerInstance extends Playable sendSkillList(); // Fix visual bug } - Broadcast.toKnownPlayers(this, new CharInfo(this)); + Broadcast.toKnownPlayers(this, new CharInfo(this, isGM() && getAppearance().isInvisible())); } } } @@ -4873,7 +4873,36 @@ public class PlayerInstance extends Playable { // Send a Server->Client packet UserInfo to this PlayerInstance sendPacket(new UserInfo(this)); - Broadcast.toKnownPlayers(this, new CharInfo(this)); + + // Broadcast char info to known players + broadcastCharInfo(); + } + + public void broadcastCharInfo() + { + final CharInfo charInfo = new CharInfo(this, false); + for (PlayerInstance player : getKnownList().getKnownPlayers().values()) + { + if (player == null) + { + continue; + } + + try + { + if (player.isGM() && getAppearance().isInvisible()) + { + player.sendPacket(new CharInfo(this, true)); + } + else + { + player.sendPacket(charInfo); + } + } + catch (NullPointerException e) + { + } + } } /** @@ -4887,7 +4916,7 @@ public class PlayerInstance extends Playable } @Override - public void broadcastPacket(GameServerPacket mov) + public void broadcastPacket(IClientOutgoingPacket mov) { final boolean isCharInfo = mov instanceof CharInfo; if (!isCharInfo) @@ -4916,7 +4945,7 @@ public class PlayerInstance extends Playable } @Override - public void broadcastPacket(GameServerPacket mov, int radius) + public void broadcastPacket(IClientOutgoingPacket mov, int radius) { final boolean isCharInfo = mov instanceof CharInfo; if (!isCharInfo) @@ -6211,8 +6240,8 @@ public class PlayerInstance extends Playable // Anti FARM same IP if (Config.ANTI_FARM_IP_ENABLED && (_client != null) && (targetPlayer.getClient() != null)) { - final String ip1 = _client.getConnection().getInetAddress().getHostAddress(); - final String ip2 = targetPlayer.getClient().getConnection().getInetAddress().getHostAddress(); + final String ip1 = _client.getConnectionAddress().getHostAddress(); + final String ip2 = targetPlayer.getClient().getConnectionAddress().getHostAddress(); if (ip1.equals(ip2)) { sendMessage("Farm is punishable with Ban! GM informed."); @@ -6232,9 +6261,9 @@ public class PlayerInstance extends Playable private void addItemReward(PlayerInstance targetPlayer) { // IP check - if ((targetPlayer.getClient() != null) && (targetPlayer.getClient().getConnection() != null)) + if ((targetPlayer.getClient() != null) && (targetPlayer.getClient().getConnectionAddress() != null)) { - if (targetPlayer.getClient().getConnection().getInetAddress() != _client.getConnection().getInetAddress()) + if (targetPlayer.getClient().getConnectionAddress() != _client.getConnectionAddress()) { if ((targetPlayer.getKarma() > 0) || (targetPlayer.getPvpFlag() > 0)) // killing target pk or in pvp { @@ -11240,7 +11269,7 @@ public class PlayerInstance extends Playable * Send a Server->Client packet StatusUpdate to the PlayerInstance. */ @Override - public void sendPacket(GameServerPacket packet) + public void sendPacket(IClientOutgoingPacket packet) { if (_client != null) { @@ -14886,12 +14915,12 @@ public class PlayerInstance extends Playable boolean canMultiBox = true; int boxCount = 1; final List activeBoxes = new ArrayList<>(); - if ((_client != null) && (_client.getConnection() != null) && !_client.getConnection().isClosed() && (_client.getConnection().getInetAddress() != null)) + if ((_client != null) && (_client.getConnectionAddress() != null) && !_client.isDetached() && (_client.getConnectionAddress() != null)) { - final String playerIP = _client.getConnection().getInetAddress().getHostAddress(); + final String playerIP = _client.getConnectionAddress().getHostAddress(); for (PlayerInstance player : World.getInstance().getAllPlayers()) { - if ((player != null) && (player != this) && player.isOnline() && (player.getClient() != null) && (player.getClient().getConnection() != null) && !player.getClient().getConnection().isClosed() && (player.getClient().getConnection().getInetAddress() != null) && playerIP.equals(player.getClient().getConnection().getInetAddress().getHostAddress())) + if ((player != null) && (player != this) && player.isOnline() && (player.getClient() != null) && (player.getClient().getConnectionAddress() != null) && !player.getClient().isDetached() && (player.getClient().getConnectionAddress() != null) && playerIP.equals(player.getClient().getConnectionAddress().getHostAddress())) { boxCount++; activeBoxes.add(player.getName()); @@ -14923,12 +14952,12 @@ public class PlayerInstance extends Playable */ public void refreshOtherBoxes() { - if ((_client != null) && (_client.getConnection() != null) && !_client.getConnection().isClosed() && (_client.getConnection().getInetAddress() != null)) + if ((_client != null) && (_client.getConnectionAddress() != null) && !_client.isDetached() && (_client.getConnectionAddress() != null)) { - final String playerIP = _client.getConnection().getInetAddress().getHostAddress(); + final String playerIP = _client.getConnectionAddress().getHostAddress(); for (PlayerInstance player : World.getInstance().getAllPlayers()) { - if ((player != null) && (player != this) && player.isOnline() && (player.getClient() != null) && (player.getClient().getConnection() != null) && !player.getClient().getConnection().isClosed() && !player.getName().equals(getName()) && playerIP.equals(player.getClient().getConnection().getInetAddress().getHostAddress())) + if ((player != null) && (player != this) && player.isOnline() && (player.getClient() != null) && (player.getClient().getConnectionAddress() != null) && !player.getClient().isDetached() && !player.getName().equals(getName()) && playerIP.equals(player.getClient().getConnectionAddress().getHostAddress())) { player._activeBoxes = _activeBoxes; player._activeBoxCharacters = _activeBoxCharacters; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/knownlist/PlayerKnownList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/knownlist/PlayerKnownList.java index b7777c4fcb..0e3b7e0295 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/knownlist/PlayerKnownList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/knownlist/PlayerKnownList.java @@ -139,7 +139,7 @@ public class PlayerKnownList extends PlayableKnownList { activeChar.sendPacket(new DoorInfo((DoorInstance) object, false)); } - activeChar.sendPacket(new DoorStatusUpdate((DoorInstance) object)); + activeChar.sendPacket(new DoorStatusUpdate((DoorInstance) object, activeChar)); } else if (object.isBoat()) { @@ -180,7 +180,7 @@ public class PlayerKnownList extends PlayableKnownList if (otherPlayer.isInBoat()) { otherPlayer.getPosition().setWorldPosition(otherPlayer.getBoat().getLocation()); - activeChar.sendPacket(new CharInfo(otherPlayer)); + activeChar.sendPacket(new CharInfo(otherPlayer, activeChar.isGM() && otherPlayer.getAppearance().isInvisible())); final int relation = otherPlayer.getRelation(activeChar); if ((otherPlayer.getKnownList().getKnownRelations().get(activeChar.getObjectId()) != null) && (otherPlayer.getKnownList().getKnownRelations().get(activeChar.getObjectId()) != relation)) @@ -192,7 +192,7 @@ public class PlayerKnownList extends PlayableKnownList } else { - activeChar.sendPacket(new CharInfo(otherPlayer)); + activeChar.sendPacket(new CharInfo(otherPlayer, activeChar.isGM() && otherPlayer.getAppearance().isInvisible())); final int relation = otherPlayer.getRelation(activeChar); if ((otherPlayer.getKnownList().getKnownRelations().get(activeChar.getObjectId()) != null) && (otherPlayer.getKnownList().getKnownRelations().get(activeChar.getObjectId()) != relation)) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/clan/Clan.java index f93ab6df08..755f533146 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -46,7 +46,7 @@ import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveSubPledgeCreated; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowInfoUpdate; @@ -1125,7 +1125,7 @@ public class Clan } } - public void broadcastToOnlineAllyMembers(GameServerPacket packet) + public void broadcastToOnlineAllyMembers(IClientOutgoingPacket packet) { if (_allyId == 0) { @@ -1141,7 +1141,7 @@ public class Clan } } - public void broadcastToOnlineMembers(GameServerPacket packet) + public void broadcastToOnlineMembers(IClientOutgoingPacket packet) { for (ClanMember member : _members.values()) { @@ -1159,7 +1159,7 @@ public class Clan } } - public void broadcastToOtherOnlineMembers(GameServerPacket packet, PlayerInstance player) + public void broadcastToOtherOnlineMembers(IClientOutgoingPacket packet, PlayerInstance player) { for (ClanMember member : _members.values()) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index c96dc7ad07..53b01761fa 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -46,8 +46,8 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.FortressSiegeInfo; import org.l2jmobius.gameserver.network.serverpackets.RelationChanged; +import org.l2jmobius.gameserver.network.serverpackets.SiegeInfo; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; @@ -784,7 +784,7 @@ public class FortSiege */ public void listRegisterClan(PlayerInstance player) { - player.sendPacket(new FortressSiegeInfo(getFort())); + player.sendPacket(new SiegeInfo(getFort(), player)); } /** diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/siege/Siege.java index b7c51f006f..2dd0dd0e0b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -951,7 +951,7 @@ public class Siege */ public void listRegisterClan(PlayerInstance player) { - player.sendPacket(new SiegeInfo(getCastle())); + player.sendPacket(new SiegeInfo(getCastle(), player)); } /** diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 1d17bec46a..6142b5718e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -23,7 +23,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** * Abstract base class for any zone type Handles basic operations @@ -331,7 +331,7 @@ public abstract class ZoneType * Broadcasts packet to all players inside the zone * @param packet */ - public void broadcastPacket(GameServerPacket packet) + public void broadcastPacket(IClientOutgoingPacket packet) { if (_characterList.isEmpty()) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ClientInitializer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ClientInitializer.java new file mode 100644 index 0000000000..e2d2bb0920 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ClientInitializer.java @@ -0,0 +1,50 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import java.nio.ByteOrder; + +import org.l2jmobius.commons.network.codecs.CryptCodec; +import org.l2jmobius.commons.network.codecs.LengthFieldBasedFrameEncoder; +import org.l2jmobius.commons.network.codecs.PacketDecoder; +import org.l2jmobius.commons.network.codecs.PacketEncoder; + +import io.netty.channel.ChannelInitializer; +import io.netty.channel.socket.SocketChannel; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; + +/** + * @author Nos + */ +public class ClientInitializer extends ChannelInitializer +{ + private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); + private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2); + + @Override + protected void initChannel(SocketChannel ch) + { + final GameClient client = new GameClient(); + ch.pipeline().addLast("length-decoder", new LengthFieldBasedFrameDecoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2, 0, 2, -2, 2, false)); + ch.pipeline().addLast("length-encoder", LENGTH_ENCODER); + ch.pipeline().addLast("crypt-codec", new CryptCodec(client.getCrypt())); + // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); + ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, client)); + ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); + ch.pipeline().addLast(client); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ClientNetworkManager.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ClientNetworkManager.java new file mode 100644 index 0000000000..13f05429a0 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ClientNetworkManager.java @@ -0,0 +1,41 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.network.NetworkManager; + +/** + * @author Nos + */ +public class ClientNetworkManager extends NetworkManager +{ + protected ClientNetworkManager() + { + super(EventLoopGroupManager.getInstance().getBossGroup(), EventLoopGroupManager.getInstance().getWorkerGroup(), new ClientInitializer(), Config.GAMESERVER_HOSTNAME, Config.PORT_GAME); + } + + public static ClientNetworkManager getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final ClientNetworkManager INSTANCE = new ClientNetworkManager(); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ConnectionState.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ConnectionState.java index 6c7f08eb3c..b01874908a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ConnectionState.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ConnectionState.java @@ -16,13 +16,23 @@ */ package org.l2jmobius.gameserver.network; +import org.l2jmobius.commons.network.IConnectionState; + /** * @author KenM */ -public enum ConnectionState +public enum ConnectionState implements IConnectionState { CONNECTED, + DISCONNECTED, + CLOSING, AUTHENTICATED, ENTERING, - IN_GAME + IN_GAME; + + public static final ConnectionState[] ENTERING_AND_IN_GAME = new ConnectionState[] + { + ConnectionState.ENTERING, + ConnectionState.IN_GAME + }; } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/Crypt.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/Crypt.java new file mode 100644 index 0000000000..62e829f907 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/Crypt.java @@ -0,0 +1,117 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import org.l2jmobius.commons.network.ICrypt; + +import io.netty.buffer.ByteBuf; + +/** + * @author KenM + */ +public class Crypt implements ICrypt +{ + // private final GameClient _client; + private final byte[] _inKey = new byte[8]; + private final byte[] _outKey = new byte[8]; + private boolean _isEnabled; + + public Crypt(GameClient client) + { + // _client = client; + } + + public void setKey(byte[] key) + { + System.arraycopy(key, 0, _inKey, 0, 8); + System.arraycopy(key, 0, _outKey, 0, 8); + } + + @Override + public void encrypt(ByteBuf buf) + { + if (!_isEnabled) + { + _isEnabled = true; + onPacketSent(buf); + return; + } + + onPacketSent(buf); + + int a = 0; + while (buf.isReadable()) + { + final int b = buf.readByte() & 0xFF; + a = b ^ _outKey[(buf.readerIndex() - 1) & 7] ^ a; + buf.setByte(buf.readerIndex() - 1, a); + } + + shiftKey(_outKey, buf.writerIndex()); + } + + @Override + public void decrypt(ByteBuf buf) + { + if (!_isEnabled) + { + onPacketReceive(buf); + return; + } + + int a = 0; + while (buf.isReadable()) + { + final int b = buf.readByte() & 0xFF; + buf.setByte(buf.readerIndex() - 1, b ^ _inKey[(buf.readerIndex() - 1) & 7] ^ a); + a = b; + } + + shiftKey(_inKey, buf.writerIndex()); + + onPacketReceive(buf); + } + + private void onPacketSent(ByteBuf buf) + { + final byte[] data = new byte[buf.writerIndex()]; + buf.getBytes(0, data); + // EventDispatcher.getInstance().notifyEvent(new OnPacketSent(_client, data)); + } + + private void onPacketReceive(ByteBuf buf) + { + final byte[] data = new byte[buf.writerIndex()]; + buf.getBytes(0, data); + // EventDispatcher.getInstance().notifyEvent(new OnPacketReceived(_client, data)); + } + + private void shiftKey(byte[] key, int size) + { + int old = key[0] & 0xff; + old |= (key[1] << 8) & 0xff00; + old |= (key[2] << 0x10) & 0xff0000; + old |= (key[3] << 0x18) & 0xff000000; + + old += size; + + key[0] = (byte) (old & 0xff); + key[1] = (byte) ((old >> 0x08) & 0xff); + key[2] = (byte) ((old >> 0x10) & 0xff); + key[3] = (byte) ((old >> 0x18) & 0xff); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/EventLoopGroupManager.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/EventLoopGroupManager.java new file mode 100644 index 0000000000..087e6126cc --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/EventLoopGroupManager.java @@ -0,0 +1,56 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import org.l2jmobius.Config; + +import io.netty.channel.nio.NioEventLoopGroup; + +/** + * @author Nos + */ +public class EventLoopGroupManager +{ + private final NioEventLoopGroup _bossGroup = new NioEventLoopGroup(1); + private final NioEventLoopGroup _workerGroup = new NioEventLoopGroup(Config.IO_PACKET_THREAD_CORE_SIZE); + + public NioEventLoopGroup getBossGroup() + { + return _bossGroup; + } + + public NioEventLoopGroup getWorkerGroup() + { + return _workerGroup; + } + + public void shutdown() + { + _bossGroup.shutdownGracefully(); + _workerGroup.shutdownGracefully(); + } + + public static EventLoopGroupManager getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final EventLoopGroupManager INSTANCE = new EventLoopGroupManager(); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java new file mode 100644 index 0000000000..2ca0de8fb8 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -0,0 +1,146 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Supplier; + +import org.l2jmobius.commons.network.IConnectionState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IIncomingPackets; +import org.l2jmobius.gameserver.network.clientpackets.AnswerJoinPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestAskJoinPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestAutoSoulShot; +import org.l2jmobius.gameserver.network.clientpackets.RequestChangePartyLeader; +import org.l2jmobius.gameserver.network.clientpackets.RequestDismissPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestExAcceptJoinMPCC; +import org.l2jmobius.gameserver.network.clientpackets.RequestExAskJoinMPCC; +import org.l2jmobius.gameserver.network.clientpackets.RequestExEnchantSkill; +import org.l2jmobius.gameserver.network.clientpackets.RequestExEnchantSkillInfo; +import org.l2jmobius.gameserver.network.clientpackets.RequestExMPCCShowPartyMembersInfo; +import org.l2jmobius.gameserver.network.clientpackets.RequestExMagicSkillUseGround; +import org.l2jmobius.gameserver.network.clientpackets.RequestExOustFromMPCC; +import org.l2jmobius.gameserver.network.clientpackets.RequestExPledgeCrestLarge; +import org.l2jmobius.gameserver.network.clientpackets.RequestExSetPledgeCrestLarge; +import org.l2jmobius.gameserver.network.clientpackets.RequestExitPartyMatchingWaitingRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestGetBossRecord; +import org.l2jmobius.gameserver.network.clientpackets.RequestListPartyMatchingWaitingRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestManorList; +import org.l2jmobius.gameserver.network.clientpackets.RequestOlympiadMatchList; +import org.l2jmobius.gameserver.network.clientpackets.RequestOlympiadObserverEnd; +import org.l2jmobius.gameserver.network.clientpackets.RequestOustFromPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestPCCafeCouponUse; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeMemberInfo; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeMemberPowerInfo; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgePowerGradeList; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeReorganizeMember; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeSetAcademyMaster; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeSetMemberPowerGrade; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeWarList; +import org.l2jmobius.gameserver.network.clientpackets.RequestProcureCropList; +import org.l2jmobius.gameserver.network.clientpackets.RequestSetCrop; +import org.l2jmobius.gameserver.network.clientpackets.RequestSetSeed; +import org.l2jmobius.gameserver.network.clientpackets.RequestWithdrawPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestWriteHeroWords; + +/** + * @author Mobius + */ +public enum ExIncomingPackets implements IIncomingPackets +{ + REQUEST_OUST_FROM_PARTY_ROOM(0x01, RequestOustFromPartyRoom::new, ConnectionState.IN_GAME), + REQUEST_DISMISS_PARTY_ROOM(0x02, RequestDismissPartyRoom::new, ConnectionState.IN_GAME), + REQUEST_WITHDRAW_PARTY_ROOM(0x03, RequestWithdrawPartyRoom::new, ConnectionState.IN_GAME), + REQUEST_CHANGE_PARTY_LEADER(0x04, RequestChangePartyLeader::new, ConnectionState.IN_GAME), + REQUEST_AUTO_SOUL_SHOT(0x05, RequestAutoSoulShot::new, ConnectionState.IN_GAME), + REQUEST_EX_ENCHANT_SKILL_INFO(0x06, RequestExEnchantSkillInfo::new, ConnectionState.IN_GAME), + REQUEST_EX_ENCHANT_SKILL(0x07, RequestExEnchantSkill::new, ConnectionState.IN_GAME), + REQUEST_MANOR_LIST(0x08, RequestManorList::new, ConnectionState.IN_GAME), + REQUEST_PROCURE_CROP_LIST(0x09, RequestProcureCropList::new, ConnectionState.IN_GAME), + REQUEST_SET_SEED(0x0A, RequestSetSeed::new, ConnectionState.IN_GAME), + REQUEST_SET_CROP(0x0B, RequestSetCrop::new, ConnectionState.IN_GAME), + REQUEST_WRITE_HERO_WORDS(0x0C, RequestWriteHeroWords::new, ConnectionState.IN_GAME), + REQUEST_EX_ASK_JOIN_MPCC(0x0D, RequestExAskJoinMPCC::new, ConnectionState.IN_GAME), + REQUEST_EX_ACCEPT_JOIN_MPCC(0x0E, RequestExAcceptJoinMPCC::new, ConnectionState.IN_GAME), + REQUEST_EX_OUST_FROM_MPCC(0x0F, RequestExOustFromMPCC::new, ConnectionState.IN_GAME), + REQUEST_EX_PLEDGE_CREST_LARGE(0x10, RequestExPledgeCrestLarge::new, ConnectionState.IN_GAME), + REQUEST_EX_SET_PLEDGE_CREST_LARGE(0x11, RequestExSetPledgeCrestLarge::new, ConnectionState.IN_GAME), + REQUEST_OLYMPIAD_OBSERVER_END(0x12, RequestOlympiadObserverEnd::new, ConnectionState.IN_GAME), + REQUEST_OLYMPIAD_MATCH_LIST(0x13, RequestOlympiadMatchList::new, ConnectionState.IN_GAME), + REQUEST_ASK_JOIN_PARTY_ROOM(0x14, RequestAskJoinPartyRoom::new, ConnectionState.IN_GAME), + ANSWER_JOIN_PARTY_ROOM(0x15, AnswerJoinPartyRoom::new, ConnectionState.IN_GAME), + REQUEST_LIST_PARTY_MATCHING_WAITING_ROOM(0x16, RequestListPartyMatchingWaitingRoom::new, ConnectionState.IN_GAME), + REQUEST_EXIT_PARTY_MATCHING_WAITING_ROOM(0x17, RequestExitPartyMatchingWaitingRoom::new, ConnectionState.IN_GAME), + REQUEST_GET_BOSS_RECORD(0x18, RequestGetBossRecord::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_SET_ACADEMY_MASTER(0x19, RequestPledgeSetAcademyMaster::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_POWER_GRADE_LIST(0x1A, RequestPledgePowerGradeList::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_MEMBER_POWER_INFO(0x1B, RequestPledgeMemberPowerInfo::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_SET_MEMBER_POWER_GRADE(0x1C, RequestPledgeSetMemberPowerGrade::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_MEMBER_INFO(0x1D, RequestPledgeMemberInfo::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_WAR_LIST(0x1E, RequestPledgeWarList::new, ConnectionState.IN_GAME), + REQUEST_PC_CAFE_COUPON_USE(0x20, RequestPCCafeCouponUse::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_REORGANIZE_MEMBER(0x24, RequestPledgeReorganizeMember::new, ConnectionState.IN_GAME), + REQUEST_EX_MPCC_SHOW_PARTY_MEMBERS_INFO(0x25, RequestExMPCCShowPartyMembersInfo::new, ConnectionState.IN_GAME), + REQUEST_EX_MAGIC_SKILL_USE_GROUND(0x2F, RequestExMagicSkillUseGround::new, ConnectionState.IN_GAME); + + public static final ExIncomingPackets[] PACKET_ARRAY; + static + { + final short maxPacketId = (short) Arrays.stream(values()).mapToInt(IIncomingPackets::getPacketId).max().orElse(0); + PACKET_ARRAY = new ExIncomingPackets[maxPacketId + 1]; + for (ExIncomingPackets incomingPacket : values()) + { + PACKET_ARRAY[incomingPacket.getPacketId()] = incomingPacket; + } + } + + private int _packetId; + private Supplier> _incomingPacketFactory; + private Set _connectionStates; + + ExIncomingPackets(int packetId, Supplier> incomingPacketFactory, IConnectionState... connectionStates) + { + // packetId is an unsigned short + if (packetId > 0xFFFF) + { + throw new IllegalArgumentException("packetId must not be bigger than 0xFFFF"); + } + _packetId = packetId; + _incomingPacketFactory = incomingPacketFactory != null ? incomingPacketFactory : () -> null; + _connectionStates = new HashSet<>(Arrays.asList(connectionStates)); + } + + @Override + public int getPacketId() + { + return _packetId; + } + + @Override + public IIncomingPacket newIncomingPacket() + { + return _incomingPacketFactory.get(); + } + + @Override + public Set getConnectionStates() + { + return _connectionStates; + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameClient.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameClient.java index 7e094a1e6f..d352fc4a2b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameClient.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameClient.java @@ -17,25 +17,25 @@ package org.l2jmobius.gameserver.network; import java.net.InetAddress; -import java.nio.ByteBuffer; +import java.net.InetSocketAddress; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Future; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.locks.ReentrantLock; +import java.util.logging.Level; import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.mmocore.MMOClient; -import org.l2jmobius.commons.mmocore.MMOConnection; -import org.l2jmobius.commons.mmocore.ReceivablePacket; +import org.l2jmobius.commons.network.ChannelInboundHandler; +import org.l2jmobius.commons.network.ICrypt; +import org.l2jmobius.commons.network.IIncomingPacket; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.LoginServerThread; import org.l2jmobius.gameserver.LoginServerThread.SessionKey; @@ -53,15 +53,24 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; +import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld; import org.l2jmobius.gameserver.network.serverpackets.ServerClose; +import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.EventData; import org.l2jmobius.gameserver.util.FloodProtectors; -public class GameClient extends MMOClient> implements Runnable +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; + +/** + * Represents a client connected on Game Server. + * @author KenM + */ +public class GameClient extends ChannelInboundHandler { protected static final Logger LOGGER = Logger.getLogger(GameClient.class.getName()); + protected static final Logger LOGGER_ACCOUNTING = Logger.getLogger("accounting"); private final static byte[] CRYPT_KEY = { @@ -77,25 +86,104 @@ public class GameClient extends MMOClient> implements private final FloodProtectors _floodProtectors = new FloodProtectors(this); private final ReentrantLock _playerLock = new ReentrantLock(); - private final List _charSlotMapping = new ArrayList<>(); - private final ReentrantLock _queueLock = new ReentrantLock(); - private final ArrayBlockingQueue> _packetQueue; - private final GameCrypt _crypt; - private ConnectionState _state; + private final Crypt _crypt; + private InetAddress _addr; + private Channel _channel; private String _accountName; private SessionKey _sessionId; - private ScheduledFuture _cleanupTask = null; + private PlayerInstance _player; + private final List _charSlotMapping = new ArrayList<>(); private volatile boolean _isDetached = false; private boolean _isAuthedGG; private int _protocolVersion; - protected PlayerInstance _player; + private ScheduledFuture _cleanupTask = null; - public GameClient(MMOConnection con) + public GameClient() { - super(con); - _state = ConnectionState.CONNECTED; - _crypt = new GameCrypt(); - _packetQueue = new ArrayBlockingQueue<>(Config.CLIENT_PACKET_QUEUE_SIZE); + _crypt = new Crypt(this); + } + + @Override + public void channelActive(ChannelHandlerContext ctx) + { + super.channelActive(ctx); + + setConnectionState(ConnectionState.CONNECTED); + final InetSocketAddress address = (InetSocketAddress) ctx.channel().remoteAddress(); + _addr = address.getAddress(); + _channel = ctx.channel(); + LOGGER_ACCOUNTING.finer("Client Connected: " + ctx.channel()); + } + + @Override + public void channelInactive(ChannelHandlerContext ctx) + { + LOGGER_ACCOUNTING.finer("Client Disconnected: " + ctx.channel()); + LoginServerThread.getInstance().sendLogout(getAccountName()); + + if ((_player == null) || !_player.isInOfflineMode()) + { + // no long running tasks here, do it async + try + { + ThreadPool.execute(new DisconnectTask()); + } + catch (RejectedExecutionException e) + { + // server is closing + } + } + } + + @Override + protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket packet) + { + try + { + packet.run(this); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception for: " + toString() + " on packet.run: " + packet.getClass().getSimpleName(), e); + } + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) + { + } + + public void closeNow() + { + if (_channel != null) + { + _channel.close(); + } + + synchronized (this) + { + if (_cleanupTask != null) + { + cancelCleanup(); + } + _cleanupTask = ThreadPool.schedule(new CleanupTask(), 0); // delayed? + } + } + + public void close(IClientOutgoingPacket packet) + { + sendPacket(packet); + closeNow(); + } + + public void close(boolean toLoginScreen) + { + close(toLoginScreen ? ServerClose.STATIC_PACKET : LeaveWorld.STATIC_PACKET); + } + + public Channel getChannel() + { + return _channel; } public byte[] enableCrypt() @@ -104,33 +192,13 @@ public class GameClient extends MMOClient> implements return CRYPT_KEY; } - public ConnectionState getState() + /** + * For loaded offline traders returns localhost address. + * @return cached connection IP address, for checking detached clients. + */ + public InetAddress getConnectionAddress() { - return _state; - } - - public void setState(ConnectionState pState) - { - if (_state != pState) - { - _state = pState; - _packetQueue.clear(); - } - } - - @Override - public boolean decrypt(ByteBuffer buf, int size) - { - _crypt.decrypt(buf.array(), buf.position(), size); - return true; - } - - @Override - public boolean encrypt(ByteBuffer buf, int size) - { - _crypt.encrypt(buf.array(), buf.position(), size); - buf.position(buf.position() + size); - return true; + return _addr; } public PlayerInstance getPlayer() @@ -152,16 +220,16 @@ public class GameClient extends MMOClient> implements return _playerLock; } - public boolean isAuthedGG() - { - return _isAuthedGG; - } - public void setGameGuardOk(boolean value) { _isAuthedGG = value; } + public boolean isAuthedGG() + { + return _isAuthedGG; + } + public void setAccountName(String pAccountName) { _accountName = pAccountName; @@ -182,18 +250,26 @@ public class GameClient extends MMOClient> implements return _sessionId; } - public void sendPacket(GameServerPacket gsp) + public void sendPacket(IClientOutgoingPacket packet) { - if (_isDetached) + if (_isDetached || (packet == null)) { return; } - if (getConnection() != null) - { - getConnection().sendPacket(gsp); - gsp.runImpl(); - } + // Write into the channel. + _channel.writeAndFlush(packet); + + // Run packet implementation. + packet.runImpl(_player); + } + + /** + * @param smId + */ + public void sendPacket(SystemMessageId smId) + { + sendPacket(new SystemMessage(smId)); } public boolean isDetached() @@ -208,17 +284,17 @@ public class GameClient extends MMOClient> implements /** * Method to handle character deletion - * @param charslot + * @param characterSlot * @return a byte: *
  • -1: Error: No char was found for such charslot, caught exception, etc... *
  • 0: character is not member of any clan, proceed with deletion *
  • 1: character is member of a clan, but not clan leader *
  • 2: character is clan leader */ - public byte markToDeleteChar(int charslot) + public byte markToDeleteChar(int characterSlot) { - final int objid = getObjectIdForSlot(charslot); - if (objid < 0) + final int objectId = getObjectIdForSlot(characterSlot); + if (objectId < 0) { return -1; } @@ -228,7 +304,7 @@ public class GameClient extends MMOClient> implements try (Connection con = DatabaseFactory.getConnection()) { PreparedStatement statement = con.prepareStatement("SELECT clanId from characters WHERE charId=?"); - statement.setInt(1, objid); + statement.setInt(1, objectId); final ResultSet rs = statement.executeQuery(); rs.next(); @@ -241,7 +317,7 @@ public class GameClient extends MMOClient> implements { answer = 0; // jeezes! } - else if (clan.getLeaderId() == objid) + else if (clan.getLeaderId() == objectId) { answer = 2; } @@ -256,13 +332,13 @@ public class GameClient extends MMOClient> implements { if (Config.DELETE_DAYS == 0) { - deleteCharByObjId(objid); + deleteCharByObjId(objectId); } else { statement = con.prepareStatement("UPDATE characters SET deletetime=? WHERE charId=?"); statement.setLong(1, Chronos.currentTimeMillis() + (Config.DELETE_DAYS * 86400000)); // 24*60*60*1000 = 86400000 - statement.setInt(2, objid); + statement.setInt(2, objectId); statement.execute(); statement.close(); rs.close(); @@ -283,11 +359,11 @@ public class GameClient extends MMOClient> implements return answer; } - public void markRestoredChar(int charslot) + public void markRestoredChar(int characterSlot) { // have to make sure active character must be nulled - final int objid = getObjectIdForSlot(charslot); - if (objid < 0) + final int objectId = getObjectIdForSlot(characterSlot); + if (objectId < 0) { return; } @@ -295,7 +371,7 @@ public class GameClient extends MMOClient> implements try (Connection con = DatabaseFactory.getConnection()) { final PreparedStatement statement = con.prepareStatement("UPDATE characters SET deletetime=0 WHERE charId=?"); - statement.setInt(1, objid); + statement.setInt(1, objectId); statement.execute(); statement.close(); } @@ -305,97 +381,97 @@ public class GameClient extends MMOClient> implements } } - public static void deleteCharByObjId(int objid) + public static void deleteCharByObjId(int objectId) { - if (objid < 0) + if (objectId < 0) { return; } try (Connection con = DatabaseFactory.getConnection()) { - PreparedStatement statement; + PreparedStatement ps; - statement = con.prepareStatement("DELETE FROM character_friends WHERE char_id=? OR friend_id=?"); - statement.setInt(1, objid); - statement.setInt(2, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_friends WHERE char_id=? OR friend_id=?"); + ps.setInt(1, objectId); + ps.setInt(2, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_hennas WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_hennas WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_macroses WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_macroses WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_quests WHERE char_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_quests WHERE char_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_recipebook WHERE char_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_recipebook WHERE char_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_shortcuts WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_shortcuts WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_skills WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_skills WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_skills_save WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_skills_save WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_subclasses WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_subclasses WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM heroes WHERE charId=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM heroes WHERE charId=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM olympiad_nobles WHERE charId=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM olympiad_nobles WHERE charId=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM seven_signs WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM seven_signs WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM pets WHERE item_obj_id IN (SELECT object_id FROM items WHERE items.owner_id=?)"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM pets WHERE item_obj_id IN (SELECT object_id FROM items WHERE items.owner_id=?)"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM items WHERE owner_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM items WHERE owner_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM merchant_lease WHERE player_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM merchant_lease WHERE player_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM characters WHERE charId=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM characters WHERE charId=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); } catch (Exception e) { @@ -403,31 +479,31 @@ public class GameClient extends MMOClient> implements } } - public PlayerInstance loadCharFromDisk(int charslot) + public PlayerInstance loadCharFromDisk(int characterSlot) { - final int objId = getObjectIdForSlot(charslot); - if (objId < 0) + final int objectId = getObjectIdForSlot(characterSlot); + if (objectId < 0) { return null; } - PlayerInstance character = World.getInstance().getPlayer(objId); - if (character != null) + PlayerInstance player = World.getInstance().getPlayer(objectId); + if (player != null) { // exploit prevention, should not happens in normal way - LOGGER.warning("Attempt of double login: " + character.getName() + "(" + objId + ") " + _accountName); + LOGGER.warning("Attempt of double login: " + player.getName() + "(" + objectId + ") " + _accountName); - if (character.getClient() != null) + if (player.getClient() != null) { - character.getClient().closeNow(); + player.getClient().closeNow(); } else { - character.deleteMe(); + player.deleteMe(); try { - character.store(); + player.store(); } catch (Exception e2) { @@ -436,8 +512,8 @@ public class GameClient extends MMOClient> implements } } - character = PlayerInstance.load(objId); - return character; + player = PlayerInstance.load(objectId); + return player; } public void setCharSelection(CharSelectInfoPackage[] chars) @@ -451,14 +527,6 @@ public class GameClient extends MMOClient> implements } } - public void close(GameServerPacket gsp) - { - if (getConnection() != null) - { - getConnection().close(gsp); - } - } - private int getObjectIdForSlot(int charslot) { if ((charslot < 0) || (charslot >= _charSlotMapping.size())) @@ -471,55 +539,9 @@ public class GameClient extends MMOClient> implements return objectId.intValue(); } - @Override - public void onForcedDisconnection() - { - // the force operation will allow to not save client position to prevent again criticals and stuck - closeNow(); - } - - @Override - public void onDisconnection() - { - // no long running tasks here, do it async - try - { - ThreadPool.execute(new DisconnectTask()); - } - catch (RejectedExecutionException e) - { - // server is closing - } - } - - /** - * Close client connection with {@link ServerClose} packet - */ - public void closeNow() - { - close(0); - } - - /** - * Close client connection with {@link ServerClose} packet - * @param delay - */ - public void close(int delay) - { - close(ServerClose.STATIC_PACKET); - synchronized (this) - { - if (_cleanupTask != null) - { - cancelCleanup(); - } - _cleanupTask = ThreadPool.schedule(new CleanupTask(), delay); // delayed - } - } - public String getIpAddress() { - final InetAddress address = getConnection().getInetAddress(); + final InetAddress address = _addr; String ip; if (address == null) { @@ -540,20 +562,22 @@ public class GameClient extends MMOClient> implements { try { - switch (_state) + final InetAddress address = _addr; + final ConnectionState state = (ConnectionState) getConnectionState(); + switch (state) { case CONNECTED: { - return "[IP: " + getIpAddress() + "]"; + return "[IP: " + (address == null ? "disconnected" : address.getHostAddress()) + "]"; } case AUTHENTICATED: { - return "[Account: " + _accountName + " - IP: " + getIpAddress() + "]"; + return "[Account: " + _accountName + " - IP: " + (address == null ? "disconnected" : address.getHostAddress()) + "]"; } case ENTERING: case IN_GAME: { - return "[Character: " + (_player == null ? "disconnected" : _player.getName()) + " - Account: " + _accountName + " - IP: " + getIpAddress() + "]"; + return "[Character: " + (_player == null ? "disconnected" : _player.getName() + "[" + _player.getObjectId() + "]") + " - Account: " + _accountName + " - IP: " + (address == null ? "disconnected" : address.getHostAddress()) + "]"; } default: { @@ -777,72 +801,6 @@ public class GameClient extends MMOClient> implements return _isDetached; } - /** - * Add packet to the queue and start worker thread if needed - * @param packet - */ - public void execute(ReceivablePacket packet) - { - if (!_packetQueue.offer(packet)) - { - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - if (_queueLock.isLocked()) - { - return; - } - - try - { - ThreadPool.execute(this); - } - catch (RejectedExecutionException e) - { - } - } - - @Override - public void run() - { - if (!_queueLock.tryLock()) - { - return; - } - - try - { - while (true) - { - final ReceivablePacket packet = _packetQueue.poll(); - if (packet == null) - { - return; - } - - if (_isDetached) // clear queue immediately after detach - { - _packetQueue.clear(); - return; - } - - try - { - packet.run(); - } - catch (Exception e) - { - LOGGER.warning("Exception during execution " + packet.getClass().getSimpleName() + ", client: " + this + "," + e.getMessage()); - } - } - } - finally - { - _queueLock.unlock(); - } - } - public void setProtocolVersion(int version) { _protocolVersion = version; @@ -852,4 +810,9 @@ public class GameClient extends MMOClient> implements { return _protocolVersion; } + + public ICrypt getCrypt() + { + return _crypt; + } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameCrypt.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameCrypt.java deleted file mode 100644 index 81c5768152..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GameCrypt.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network; - -/** - * @author KenM - */ -public class GameCrypt -{ - private final byte[] _inKey = new byte[8]; - private final byte[] _outKey = new byte[8]; - private boolean _isEnabled; - - public void setKey(byte[] key) - { - System.arraycopy(key, 0, _inKey, 0, 8); - System.arraycopy(key, 0, _outKey, 0, 8); - } - - public void decrypt(byte[] raw, int offset, int size) - { - if (!_isEnabled) - { - return; - } - - int temp = 0; - for (int i = 0; i < size; i++) - { - final int temp2 = raw[offset + i] & 0xFF; - raw[offset + i] = (byte) (temp2 ^ _inKey[i & 7] ^ temp); - temp = temp2; - } - - int old = _inKey[0] & 0xff; - old |= (_inKey[1] << 8) & 0xff00; - old |= (_inKey[2] << 0x10) & 0xff0000; - old |= (_inKey[3] << 0x18) & 0xff000000; - - old += size; - - _inKey[0] = (byte) (old & 0xff); - _inKey[1] = (byte) ((old >> 0x08) & 0xff); - _inKey[2] = (byte) ((old >> 0x10) & 0xff); - _inKey[3] = (byte) ((old >> 0x18) & 0xff); - } - - public void encrypt(byte[] raw, int offset, int size) - { - if (!_isEnabled) - { - _isEnabled = true; - return; - } - - int temp = 0; - for (int i = 0; i < size; i++) - { - final int temp2 = raw[offset + i] & 0xFF; - temp = temp2 ^ _outKey[i & 7] ^ temp; - raw[offset + i] = (byte) temp; - } - - int old = _outKey[0] & 0xff; - old |= (_outKey[1] << 8) & 0xff00; - old |= (_outKey[2] << 0x10) & 0xff0000; - old |= (_outKey[3] << 0x18) & 0xff000000; - - old += size; - - _outKey[0] = (byte) (old & 0xff); - _outKey[1] = (byte) ((old >> 0x08) & 0xff); - _outKey[2] = (byte) ((old >> 0x10) & 0xff); - _outKey[3] = (byte) ((old >> 0x18) & 0xff); - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GamePacketHandler.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GamePacketHandler.java deleted file mode 100644 index 9c6f74cd2b..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/GamePacketHandler.java +++ /dev/null @@ -1,1358 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network; - -import java.nio.ByteBuffer; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.mmocore.IClientFactory; -import org.l2jmobius.commons.mmocore.IMMOExecutor; -import org.l2jmobius.commons.mmocore.IPacketHandler; -import org.l2jmobius.commons.mmocore.MMOConnection; -import org.l2jmobius.commons.mmocore.ReceivablePacket; -import org.l2jmobius.commons.util.Util; -import org.l2jmobius.gameserver.network.clientpackets.*; -import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; - -/** - * Stateful Packet Handler
    - * The Stateful approach prevents the server from handling inconsistent packets, examples:
    - *
  • Clients sends a MoveToLocation packet without having a character attached. (Potential errors handling the packet).
  • - *
  • Clients sends a RequestAuthLogin being already authed. (Potential exploit).

  • - *
    - * Note: If for a given exception a packet needs to be handled on more then one state, then it should be added to all these states. - */ -public class GamePacketHandler implements IPacketHandler, IClientFactory, IMMOExecutor -{ - private static final Logger LOGGER = Logger.getLogger(GamePacketHandler.class.getName()); - - @Override - public ReceivablePacket handlePacket(ByteBuffer buf, GameClient client) - { - if (client.dropPacket()) - { - client.sendPacket(ActionFailed.STATIC_PACKET); - return null; - } - - final int opcode = buf.get() & 0xFF; - - ReceivablePacket msg = null; - final ConnectionState state = client.getState(); - - switch (state) - { - case CONNECTED: - { - switch (opcode) - { - case 0x00: - { - msg = new ProtocolVersion(); - break; - } - case 0x08: - { - msg = new AuthLogin(); - break; - } - default: - { - printDebug(opcode, buf, state, client); - break; - } - } - break; - } - case AUTHENTICATED: - { - switch (opcode) - { - case 0x09: - { - msg = new Logout(); - break; - } - case 0x0b: - { - msg = new CharacterCreate(); - break; - } - case 0x0c: - { - msg = new CharacterDelete(); - break; - } - case 0x0d: - { - msg = new CharacterSelected(); - break; - } - case 0x0e: - { - msg = new NewCharacter(); - break; - } - case 0x62: - { - msg = new CharacterRestore(); - break; - } - case 0x68: - { - msg = new RequestPledgeCrest(); - break; - } - // single packet - default: - { - printDebug(opcode, buf, state, client); - break; - } - } - break; - } - case ENTERING: - { - switch (opcode) - { - case 0x03: - { - msg = new EnterWorld(); - break; - } - default: - { - printDebug(opcode, buf, state, client); - break; - } - } - break; - } - case IN_GAME: - { - switch (opcode) - { - case 0x01: - { - msg = new MoveBackwardToLocation(); - break; - } - // case 0x02: - // Say ... not used any more ?? - // break; - case 0x04: - { - msg = new Action(); - break; - } - case 0x09: - { - msg = new Logout(); - break; - } - case 0x0a: - { - msg = new AttackRequest(); - break; - } - case 0x0f: - { - msg = new RequestItemList(); - break; - } - case 0x10: - { - // RequestEquipItem ... not used any more, instead "useItem" - break; - } - case 0x11: - { - msg = new RequestUnEquipItem(); - break; - } - case 0x12: - { - msg = new RequestDropItem(); - break; - } - case 0x14: - { - msg = new UseItem(); - break; - } - case 0x15: - { - msg = new TradeRequest(); - break; - } - case 0x16: - { - msg = new AddTradeItem(); - break; - } - case 0x17: - { - msg = new TradeDone(); - break; - } - case 0x1a: - { - msg = new DummyPacket(); - break; - } - case 0x1b: - { - msg = new RequestSocialAction(); - break; - } - case 0x1c: - { - msg = new ChangeMoveType2(); - break; - } - case 0x1d: - { - msg = new ChangeWaitType2(); - break; - } - case 0x1e: - { - msg = new RequestSellItem(); - break; - } - case 0x1f: - { - msg = new RequestBuyItem(); - break; - } - case 0x20: - { - msg = new RequestLinkHtml(); - break; - } - case 0x21: - { - msg = new RequestBypassToServer(); - break; - } - case 0x22: - { - msg = new RequestBBSwrite(); - break; - } - case 0x23: - { - msg = new DummyPacket(); - break; - } - case 0x24: - { - msg = new RequestJoinPledge(); - break; - } - case 0x25: - { - msg = new RequestAnswerJoinPledge(); - break; - } - case 0x26: - { - msg = new RequestWithdrawalPledge(); - break; - } - case 0x27: - { - msg = new RequestOustPledgeMember(); - break; - } - case 0x28: - { - // RequestDismissPledge - break; - } - case 0x29: - { - msg = new RequestJoinParty(); - break; - } - case 0x2a: - { - msg = new RequestAnswerJoinParty(); - break; - } - case 0x2b: - { - msg = new RequestWithDrawalParty(); - break; - } - case 0x2c: - { - msg = new RequestOustPartyMember(); - break; - } - case 0x2d: - { - // RequestDismissParty - break; - } - case 0x2e: - { - msg = new DummyPacket(); - break; - } - case 0x2f: - { - msg = new RequestMagicSkillUse(); - break; - } - case 0x30: - { - msg = new Appearing(); // (after death) - break; - } - case 0x31: - { - if (Config.ALLOW_WAREHOUSE) - { - msg = new SendWareHouseDepositList(); - } - break; - } - case 0x32: - { - msg = new SendWareHouseWithDrawList(); - break; - } - case 0x33: - { - msg = new RequestShortCutReg(); - break; - } - case 0x34: - { - msg = new DummyPacket(); - break; - } - case 0x35: - { - msg = new RequestShortCutDel(); - break; - } - case 0x36: - { - msg = new CannotMoveAnymore(); - break; - } - case 0x37: - { - msg = new RequestTargetCanceld(); - break; - } - case 0x38: - { - msg = new Say2(); - break; - } - case 0x3c: - { - msg = new RequestPledgeMemberList(); - break; - } - case 0x3e: - { - msg = new DummyPacket(); - break; - } - case 0x3f: - { - msg = new RequestSkillList(); - break; - } - case 0x41: - { - msg = new MoveWithDelta(); - // MoveWithDelta ... unused ?? or only on ship ?? - break; - } - case 0x42: - { - msg = new RequestGetOnVehicle(); - break; - } - case 0x43: - { - msg = new RequestGetOffVehicle(); - break; - } - case 0x44: - { - msg = new AnswerTradeRequest(); - break; - } - case 0x45: - { - msg = new RequestActionUse(); - break; - } - case 0x46: - { - msg = new RequestRestart(); - break; - } - case 0x47: - { - msg = new RequestSiegeInfo(); - break; - } - case 0x48: - { - msg = new ValidatePosition(); - break; - } - case 0x49: - { - // RequestSEKCustom - break; - } - case 0x4a: - { - msg = new StartRotating(); - break; - } - case 0x4b: - { - msg = new FinishRotating(); - break; - } - case 0x4d: - { - msg = new RequestStartPledgeWar(); - break; - } - case 0x4e: - { - msg = new RequestReplyStartPledgeWar(); - break; - } - case 0x4f: - { - msg = new RequestStopPledgeWar(); - break; - } - case 0x50: - { - msg = new RequestReplyStopPledgeWar(); - break; - } - case 0x51: - { - msg = new RequestSurrenderPledgeWar(); - break; - } - case 0x52: - { - msg = new RequestReplySurrenderPledgeWar(); - break; - } - case 0x53: - { - msg = new RequestSetPledgeCrest(); - break; - } - case 0x55: - { - msg = new RequestGiveNickName(); - break; - } - case 0x57: - { - msg = new RequestShowBoard(); - break; - } - case 0x58: - { - msg = new RequestEnchantItem(); - break; - } - case 0x59: - { - msg = new RequestDestroyItem(); - break; - } - case 0x5b: - { - msg = new SendBypassBuildCmd(); - break; - } - case 0x5c: - { - msg = new RequestMoveToLocationInVehicle(); - break; - } - case 0x5d: - { - msg = new CannotMoveAnymoreInVehicle(); - break; - } - case 0x5e: - { - msg = new RequestFriendInvite(); - break; - } - case 0x5f: - { - msg = new RequestAnswerFriendInvite(); - break; - } - case 0x60: - { - msg = new RequestFriendList(); - break; - } - case 0x61: - { - msg = new RequestFriendDel(); - break; - } - case 0x63: - { - msg = new RequestQuestList(); - break; - } - case 0x64: - { - msg = new RequestQuestAbort(); - break; - } - case 0x66: - { - msg = new RequestPledgeInfo(); - break; - } - case 0x67: - { - msg = new RequestPledgeExtendedInfo(); - break; - } - case 0x68: - { - msg = new RequestPledgeCrest(); - break; - } - case 0x69: - { - msg = new RequestSurrenderPersonally(); - break; - } - case 0x6a: - { - // Ride - break; - } - case 0x6b: // send when talking to trainer npc, to show list of available skills - { - msg = new RequestAquireSkillInfo(); // --> [s] 0xa4; - break; - } - case 0x6c: // send when a skill to be learned is selected - { - msg = new RequestAquireSkill(); - break; - } - case 0x6d: - { - msg = new RequestRestartPoint(); - break; - } - case 0x6e: - { - msg = new RequestGMCommand(); - break; - } - case 0x6f: - { - msg = new RequestPartyMatchConfig(); - break; - } - case 0x70: - { - msg = new RequestPartyMatchList(); - break; - } - case 0x71: - { - msg = new RequestPartyMatchDetail(); - break; - } - case 0x72: - { - msg = new RequestCrystallizeItem(); - break; - } - case 0x73: - { - msg = new RequestPrivateStoreManageSell(); - break; - } - case 0x74: - { - msg = new SetPrivateStoreListSell(); - break; - } - case 0x75: - { - // msg = new RequestPrivateStoreManageCancel(data, _client); - break; - } - case 0x76: - { - msg = new RequestPrivateStoreQuitSell(); - break; - } - case 0x77: - { - msg = new SetPrivateStoreMsgSell(); - break; - } - case 0x78: - { - // RequestPrivateStoreList - break; - } - case 0x79: - { - msg = new RequestPrivateStoreBuy(); - break; - } - case 0x7a: - { - // ReviveReply - break; - } - case 0x7b: - { - msg = new RequestTutorialLinkHtml(); - break; - } - case 0x7c: - { - msg = new RequestTutorialPassCmdToServer(); - break; - } - case 0x7d: - { - msg = new RequestTutorialQuestionMark(); - break; - } - case 0x7e: - { - msg = new RequestTutorialClientEvent(); - break; - } - case 0x7f: - { - msg = new RequestPetition(); - break; - } - case 0x80: - { - msg = new RequestPetitionCancel(); - break; - } - case 0x81: - { - msg = new RequestGmList(); - break; - } - case 0x82: - { - msg = new RequestJoinAlly(); - break; - } - case 0x83: - { - msg = new RequestAnswerJoinAlly(); - break; - } - case 0x84: - { - msg = new AllyLeave(); - break; - } - case 0x85: - { - msg = new AllyDismiss(); - break; - } - case 0x86: - { - msg = new RequestDismissAlly(); - break; - } - case 0x87: - { - msg = new RequestSetAllyCrest(); - break; - } - case 0x88: - { - msg = new RequestAllyCrest(); - break; - } - case 0x89: - { - msg = new RequestChangePetName(); - break; - } - case 0x8a: - { - msg = new RequestPetUseItem(); - break; - } - case 0x8b: - { - msg = new RequestGiveItemToPet(); - break; - } - case 0x8c: - { - msg = new RequestGetItemFromPet(); - break; - } - case 0x8e: - { - msg = new RequestAllyInfo(); - break; - } - case 0x8f: - { - msg = new RequestPetGetItem(); - break; - } - case 0x90: - { - msg = new RequestPrivateStoreManageBuy(); - break; - } - case 0x91: - { - msg = new SetPrivateStoreListBuy(); - break; - } - case 0x92: - { - // RequestPrivateStoreBuyManageCancel - break; - } - case 0x93: - { - msg = new RequestPrivateStoreQuitBuy(); - break; - } - case 0x94: - { - msg = new SetPrivateStoreMsgBuy(); - break; - } - case 0x95: - { - // RequestPrivateStoreBuyList - break; - } - case 0x96: - { - msg = new RequestPrivateStoreSell(); - break; - } - case 0x97: - { - // SendTimeCheckPacket - break; - } - case 0x98: - { - // RequestStartAllianceWar - break; - } - case 0x99: - { - // ReplyStartAllianceWar - break; - } - case 0x9a: - { - // RequestStopAllianceWar - break; - } - case 0x9b: - { - // ReplyStopAllianceWar - break; - } - case 0x9c: - { - // RequestSurrenderAllianceWar - break; - } - case 0x9d: - { - // msg = new RequestSkillCoolTime(); - break; - } - case 0x9e: - { - msg = new RequestPackageSendableItemList(); - break; - } - case 0x9f: - { - msg = new RequestPackageSend(); - break; - } - case 0xa0: - { - msg = new RequestBlock(); - break; - } - case 0xa1: - { - // RequestCastleSiegeInfo - break; - } - case 0xa2: - { - msg = new RequestSiegeAttackerList(); - break; - } - case 0xa3: - { - msg = new RequestSiegeDefenderList(); - break; - } - case 0xa4: - { - msg = new RequestJoinSiege(); - break; - } - case 0xa5: - { - msg = new RequestConfirmSiegeWaitingList(); - break; - } - case 0xa6: - { - // RequestSetCastleSiegeTime - break; - } - case 0xa7: - { - msg = new MultiSellChoose(); - break; - } - case 0xa8: - { - // NetPing - break; - } - case 0xaa: - { - msg = new RequestUserCommand(); - break; - } - case 0xab: - { - msg = new SnoopQuit(); - break; - } - case 0xac: // we still need this packet to handle BACK button of craft dialog - { - msg = new RequestRecipeBookOpen(); - break; - } - case 0xad: - { - msg = new RequestRecipeBookDestroy(); - break; - } - case 0xae: - { - msg = new RequestRecipeItemMakeInfo(); - break; - } - case 0xaf: - { - msg = new RequestRecipeItemMakeSelf(); - break; - } - case 0xb0: - { - // msg = new RequestRecipeShopManageList(data, client); - break; - } - case 0xb1: - { - msg = new RequestRecipeShopMessageSet(); - break; - } - case 0xb2: - { - msg = new RequestRecipeShopListSet(); - break; - } - case 0xb3: - { - msg = new RequestRecipeShopManageQuit(); - break; - } - case 0xb4: - { - // msg = new SnoopQuit(); - break; - } - case 0xb5: - { - msg = new RequestRecipeShopMakeInfo(); - break; - } - case 0xb6: - { - msg = new RequestRecipeShopMakeItem(); - break; - } - case 0xb7: - { - msg = new RequestRecipeShopManagePrev(); - break; - } - case 0xb8: - { - msg = new ObserverReturn(); - break; - } - case 0xb9: - { - msg = new RequestEvaluate(); - break; - } - case 0xba: - { - msg = new RequestHennaList(); - break; - } - case 0xbb: - { - msg = new RequestHennaItemInfo(); - break; - } - case 0xbc: - { - msg = new RequestHennaEquip(); - break; - } - case 0xbd: - { - msg = new RequestHennaRemoveList(); - break; - } - case 0xbe: - { - msg = new RequestHennaItemRemoveInfo(); - break; - } - case 0xbf: - { - msg = new RequestHennaRemove(); - break; - } - case 0xc0: - { - // Clan Privileges - msg = new RequestPledgePower(); - break; - } - case 0xc1: - { - msg = new RequestMakeMacro(); - break; - } - case 0xc2: - { - msg = new RequestDeleteMacro(); - break; - } - // Manor - case 0xc3: - { - msg = new RequestBuyProcure(); - break; - } - case 0xc4: - { - msg = new RequestBuySeed(); - break; - } - case 0xc5: - { - msg = new DlgAnswer(); - break; - } - case 0xc6: - { - msg = new RequestWearItem(); - break; - } - case 0xc7: - { - msg = new RequestSSQStatus(); - break; - } - case 0xCA: - { - msg = new GameGuardReply(); - break; - } - case 0xcc: - { - msg = new RequestSendFriendMsg(); - break; - } - case 0xcd: - { - msg = new RequestShowMiniMap(); - break; - } - case 0xce: // MSN dialogs so that you dont see them in the console. - { - break; - } - case 0xcf: // record video - { - msg = new RequestRecordInfo(); - break; - } - case 0xd0: - { - int opcode2 = -1; - if (buf.remaining() >= 2) - { - opcode2 = buf.getShort() & 0xffff; - } - else - { - LOGGER.warning("Client: " + client.toString() + " sent a 0xd0 without the second opcode."); - break; - } - - switch (opcode2) - { - case 1: - { - msg = new RequestOustFromPartyRoom(); - break; - } - case 2: - { - msg = new RequestDismissPartyRoom(); - break; - } - case 3: - { - msg = new RequestWithdrawPartyRoom(); - break; - } - case 4: - { - msg = new RequestChangePartyLeader(); - break; - } - case 5: - { - msg = new RequestAutoSoulShot(); - break; - } - case 6: - { - msg = new RequestExEnchantSkillInfo(); - break; - } - case 7: - { - msg = new RequestExEnchantSkill(); - break; - } - case 8: - { - msg = new RequestManorList(); - break; - } - case 9: - { - msg = new RequestProcureCropList(); - break; - } - case 0x0a: - { - msg = new RequestSetSeed(); - break; - } - case 0x0b: - { - msg = new RequestSetCrop(); - break; - } - case 0x0c: - { - msg = new RequestWriteHeroWords(); - break; - } - case 0x0d: - { - msg = new RequestExAskJoinMPCC(); - break; - } - case 0x0e: - { - msg = new RequestExAcceptJoinMPCC(); - break; - } - case 0x0f: - { - msg = new RequestExOustFromMPCC(); - break; - } - case 0x10: - { - msg = new RequestExPledgeCrestLarge(); - break; - } - case 0x11: - { - msg = new RequestExSetPledgeCrestLarge(); - break; - } - case 0x12: - { - msg = new RequestOlympiadObserverEnd(); - break; - } - case 0x13: - { - msg = new RequestOlympiadMatchList(); - break; - } - case 0x14: - { - msg = new RequestAskJoinPartyRoom(); - break; - } - case 0x15: - { - msg = new AnswerJoinPartyRoom(); - break; - } - case 0x16: - { - msg = new RequestListPartyMatchingWaitingRoom(); - break; - } - case 0x17: - { - msg = new RequestExitPartyMatchingWaitingRoom(); - break; - } - case 0x18: - { - msg = new RequestGetBossRecord(); - break; - } - case 0x19: - { - msg = new RequestPledgeSetAcademyMaster(); - break; - } - case 0x1a: - { - msg = new RequestPledgePowerGradeList(); - break; - } - case 0x1b: - { - msg = new RequestPledgeMemberPowerInfo(); - break; - } - case 0x1c: - { - msg = new RequestPledgeSetMemberPowerGrade(); - break; - } - case 0x1d: - { - msg = new RequestPledgeMemberInfo(); - break; - } - case 0x1e: - { - msg = new RequestPledgeWarList(); - break; - } - case 0x1f: - { - // msg = new RequestExFishRanking(); - break; - } - case 0x20: - { - msg = new RequestPCCafeCouponUse(); - break; - } - // couldnt find it 0x21 :S - case 0x22: - { - // msg = new RequestCursedWeaponList(); - break; - } - case 0x23: - { - // msg = new RequestCursedWeaponLocation(); - break; - } - case 0x24: - { - msg = new RequestPledgeReorganizeMember(); - break; - } - // couldnt find it 0x25 :S - case 0x26: - { - msg = new RequestExMPCCShowPartyMembersInfo(); - break; - } - case 0x27: - { - // msg = new RequestDuelStart(); - break; - } - case 0x28: - { - // msg = new RequestDuelAnswerStart(); - break; - } - case 0x29: - { - // msg = new RequestConfirmTargetItem(); - break; - } - case 0x2a: - { - // msg = new RequestConfirmRefinerItem(); - break; - } - case 0x2b: - { - // msg = new RequestConfirmGemStone(); - break; - } - case 0x2c: - { - // msg = new RequestRefine(); - break; - } - case 0x2d: - { - // msg = new RequestConfirmCancelItem(); - break; - } - case 0x2e: - { - // msg = new RequestRefineCancel(); - break; - } - case 0x2f: - { - msg = new RequestExMagicSkillUseGround(); - break; - } - case 0x30: - { - // msg = new RequestDuelSurrender(); - break; - } - default: - { - printDebugDoubleOpcode(opcode, opcode2, buf, state, client); - break; - } - } - break; - } - default: - { - printDebugDoubleOpcode(opcode, 0, buf, state, client); - break; - } - } - break; - } - } - - return msg; - } - - private void printDebug(int opcode, ByteBuffer buf, ConnectionState state, GameClient client) - { - if (!Config.PACKET_HANDLER_DEBUG) - { - return; - } - - LOGGER.warning("Unknown Packet: " + Integer.toHexString(opcode) + " on State: " + state.name() + " Client: " + client); - - final int size = buf.remaining(); - final byte[] array = new byte[size]; - buf.get(array); - LOGGER.warning(Util.printData(array, size)); - } - - private void printDebugDoubleOpcode(int opcode, int id2, ByteBuffer buf, ConnectionState state, GameClient client) - { - if (!Config.PACKET_HANDLER_DEBUG) - { - return; - } - - LOGGER.warning("Unknown Packet: " + Integer.toHexString(opcode) + ":" + Integer.toHexString(id2) + " on State: " + state.name() + " Client: " + client); - - final int size = buf.remaining(); - final byte[] array = new byte[size]; - buf.get(array); - LOGGER.warning(Util.printData(array, size)); - } - - @Override - public GameClient create(MMOConnection con) - { - return new GameClient(con); - } - - @Override - public void execute(ReceivablePacket rp) - { - rp.getClient().execute(rp); - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/IncomingPackets.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/IncomingPackets.java new file mode 100644 index 0000000000..4f46e8292c --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/IncomingPackets.java @@ -0,0 +1,239 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Supplier; + +import org.l2jmobius.commons.network.IConnectionState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IIncomingPackets; +import org.l2jmobius.gameserver.network.clientpackets.*; + +/** + * @author Mobius + */ +public enum IncomingPackets implements IIncomingPackets +{ + PROTOCOL_VERSION(0x00, ProtocolVersion::new, ConnectionState.CONNECTED), + AUTH_LOGIN(0x08, AuthLogin::new, ConnectionState.CONNECTED), + LOGOUT(0x09, Logout::new, ConnectionState.AUTHENTICATED, ConnectionState.IN_GAME), + CHARACTER_CREATE(0x0B, CharacterCreate::new, ConnectionState.AUTHENTICATED), + CHARACTER_DELETE(0x0C, CharacterDelete::new, ConnectionState.AUTHENTICATED), + CHARACTER_SELECT(0x0D, CharacterSelected::new, ConnectionState.AUTHENTICATED), + NEW_CHARACTER(0x0E, NewCharacter::new, ConnectionState.AUTHENTICATED), + CHARACTER_RESTORE(0x62, CharacterRestore::new, ConnectionState.AUTHENTICATED), + REQUEST_PLEDGE_CREST(0x68, RequestPledgeCrest::new, ConnectionState.AUTHENTICATED, ConnectionState.IN_GAME), + ENTER_WORLD(0x03, EnterWorld::new, ConnectionState.ENTERING), + MOVE_BACKWARD_TO_LOCATION(0x01, MoveBackwardToLocation::new, ConnectionState.IN_GAME), + ACTION(0x04, Action::new, ConnectionState.IN_GAME), + ATTACK_REQUEST(0x0A, AttackRequest::new, ConnectionState.IN_GAME), + REQUEST_ITEM_LIST(0x0F, RequestItemList::new, ConnectionState.IN_GAME), + REQUEST_UN_EQUIP_ITEM(0x11, RequestUnEquipItem::new, ConnectionState.IN_GAME), + REQUEST_DROP_ITEM(0x12, RequestDropItem::new, ConnectionState.IN_GAME), + USE_ITEM(0x14, UseItem::new, ConnectionState.IN_GAME), + TRADE_REQUEST(0x15, TradeRequest::new, ConnectionState.IN_GAME), + ADD_TRADE_ITEM(0x16, AddTradeItem::new, ConnectionState.IN_GAME), + TRADE_DONE(0x17, TradeDone::new, ConnectionState.IN_GAME), + REQUEST_SOCIAL_ACTION(0x1B, RequestSocialAction::new, ConnectionState.IN_GAME), + CHANGE_MOVE_TYPE2(0x1C, ChangeMoveType2::new, ConnectionState.IN_GAME), + CHANGE_WAIT_TYPE2(0x1D, ChangeWaitType2::new, ConnectionState.IN_GAME), + REQUEST_SELL_ITEM(0x1E, RequestSellItem::new, ConnectionState.IN_GAME), + REQUEST_BUY_ITEM(0x1F, RequestBuyItem::new, ConnectionState.IN_GAME), + REQUEST_LINK_HTML(0x20, RequestLinkHtml::new, ConnectionState.IN_GAME), + REQUEST_BYPASS_TO_SERVER(0x21, RequestBypassToServer::new, ConnectionState.IN_GAME), + REQUEST_B_B_SWRITE(0x22, RequestBBSwrite::new, ConnectionState.IN_GAME), + REQUEST_JOIN_PLEDGE(0x24, RequestJoinPledge::new, ConnectionState.IN_GAME), + REQUEST_ANSWER_JOIN_PLEDGE(0x25, RequestAnswerJoinPledge::new, ConnectionState.IN_GAME), + REQUEST_WITHDRAWAL_PLEDGE(0x26, RequestWithdrawalPledge::new, ConnectionState.IN_GAME), + REQUEST_OUST_PLEDGE_MEMBER(0x27, RequestOustPledgeMember::new, ConnectionState.IN_GAME), + REQUEST_JOIN_PARTY(0x29, RequestJoinParty::new, ConnectionState.IN_GAME), + REQUEST_ANSWER_JOIN_PARTY(0x2A, RequestAnswerJoinParty::new, ConnectionState.IN_GAME), + REQUEST_WITH_DRAWAL_PARTY(0x2B, RequestWithDrawalParty::new, ConnectionState.IN_GAME), + REQUEST_OUST_PARTY_MEMBER(0x2C, RequestOustPartyMember::new, ConnectionState.IN_GAME), + REQUEST_MAGIC_SKILL_USE(0x2F, RequestMagicSkillUse::new, ConnectionState.IN_GAME), + APPEARING(0x30, Appearing::new, ConnectionState.IN_GAME), + SEND_WARE_HOUSE_DEPOSIT_LIST(0x31, SendWareHouseDepositList::new, ConnectionState.IN_GAME), + SEND_WARE_HOUSE_WITH_DRAW_LIST(0x32, SendWareHouseWithDrawList::new, ConnectionState.IN_GAME), + REQUEST_SHORT_CUT_REG(0x33, RequestShortCutReg::new, ConnectionState.IN_GAME), + REQUEST_SHORT_CUT_DEL(0x35, RequestShortCutDel::new, ConnectionState.IN_GAME), + CANNOT_MOVE_ANYMORE(0x36, CannotMoveAnymore::new, ConnectionState.IN_GAME), + REQUEST_TARGET_CANCELD(0x37, RequestTargetCanceld::new, ConnectionState.IN_GAME), + SAY2(0x38, Say2::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_MEMBER_LIST(0x3C, RequestPledgeMemberList::new, ConnectionState.IN_GAME), + REQUEST_SKILL_LIST(0x3F, RequestSkillList::new, ConnectionState.IN_GAME), + MOVE_WITH_DELTA(0x41, MoveWithDelta::new, ConnectionState.IN_GAME), + REQUEST_GET_ON_VEHICLE(0x42, RequestGetOnVehicle::new, ConnectionState.IN_GAME), + REQUEST_GET_OFF_VEHICLE(0x43, RequestGetOffVehicle::new, ConnectionState.IN_GAME), + ANSWER_TRADE_REQUEST(0x44, AnswerTradeRequest::new, ConnectionState.IN_GAME), + REQUEST_ACTION_USE(0x45, RequestActionUse::new, ConnectionState.IN_GAME), + REQUEST_RESTART(0x46, RequestRestart::new, ConnectionState.IN_GAME), + REQUEST_SIEGE_INFO(0x47, RequestSiegeInfo::new, ConnectionState.IN_GAME), + VALIDATE_POSITION(0x48, ValidatePosition::new, ConnectionState.IN_GAME), + START_ROTATING(0x4A, StartRotating::new, ConnectionState.IN_GAME), + FINISH_ROTATING(0x4B, FinishRotating::new, ConnectionState.IN_GAME), + REQUEST_START_PLEDGE_WAR(0x4D, RequestStartPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_REPLY_START_PLEDGE_WAR(0x4E, RequestReplyStartPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_STOP_PLEDGE_WAR(0x4F, RequestStopPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_REPLY_STOP_PLEDGE_WAR(0x50, RequestReplyStopPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_SURRENDER_PLEDGE_WAR(0x51, RequestSurrenderPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_REPLY_SURRENDER_PLEDGE_WAR(0x52, RequestReplySurrenderPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_SET_PLEDGE_CREST(0x53, RequestSetPledgeCrest::new, ConnectionState.IN_GAME), + REQUEST_GIVE_NICK_NAME(0x55, RequestGiveNickName::new, ConnectionState.IN_GAME), + REQUEST_SHOW_BOARD(0x57, RequestShowBoard::new, ConnectionState.IN_GAME), + REQUEST_ENCHANT_ITEM(0x58, RequestEnchantItem::new, ConnectionState.IN_GAME), + REQUEST_DESTROY_ITEM(0x59, RequestDestroyItem::new, ConnectionState.IN_GAME), + SEND_BYPASS_BUILD_CMD(0x5B, SendBypassBuildCmd::new, ConnectionState.IN_GAME), + REQUEST_MOVE_TO_LOCATION_IN_VEHICLE(0x5C, RequestMoveToLocationInVehicle::new, ConnectionState.IN_GAME), + CANNOT_MOVE_ANYMORE_IN_VEHICLE(0x5D, CannotMoveAnymoreInVehicle::new, ConnectionState.IN_GAME), + REQUEST_FRIEND_INVITE(0x5E, RequestFriendInvite::new, ConnectionState.IN_GAME), + REQUEST_ANSWER_FRIEND_INVITE(0x5F, RequestAnswerFriendInvite::new, ConnectionState.IN_GAME), + REQUEST_FRIEND_LIST(0x60, RequestFriendList::new, ConnectionState.IN_GAME), + REQUEST_FRIEND_DEL(0x61, RequestFriendDel::new, ConnectionState.IN_GAME), + REQUEST_QUEST_LIST(0x63, RequestQuestList::new, ConnectionState.IN_GAME), + REQUEST_QUEST_ABORT(0x64, RequestQuestAbort::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_INFO(0x66, RequestPledgeInfo::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_EXTENDED_INFO(0x67, RequestPledgeExtendedInfo::new, ConnectionState.IN_GAME), + REQUEST_SURRENDER_PERSONALLY(0x69, RequestSurrenderPersonally::new, ConnectionState.IN_GAME), + REQUEST_AQUIRE_SKILL_INFO(0x6B, RequestAquireSkillInfo::new, ConnectionState.IN_GAME), + REQUEST_AQUIRE_SKILL(0x6C, RequestAquireSkill::new, ConnectionState.IN_GAME), + REQUEST_RESTART_POINT(0x6D, RequestRestartPoint::new, ConnectionState.IN_GAME), + REQUEST_G_M_COMMAND(0x6E, RequestGMCommand::new, ConnectionState.IN_GAME), + REQUEST_PARTY_MATCH_CONFIG(0x6F, RequestPartyMatchConfig::new, ConnectionState.IN_GAME), + REQUEST_PARTY_MATCH_LIST(0x70, RequestPartyMatchList::new, ConnectionState.IN_GAME), + REQUEST_PARTY_MATCH_DETAIL(0x71, RequestPartyMatchDetail::new, ConnectionState.IN_GAME), + REQUEST_CRYSTALLIZE_ITEM(0x72, RequestCrystallizeItem::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_MANAGE_SELL(0x73, RequestPrivateStoreManageSell::new, ConnectionState.IN_GAME), + SET_PRIVATE_STORE_LIST_SELL(0x74, SetPrivateStoreListSell::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_QUIT_SELL(0x76, RequestPrivateStoreQuitSell::new, ConnectionState.IN_GAME), + SET_PRIVATE_STORE_MSG_SELL(0x77, SetPrivateStoreMsgSell::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_BUY(0x79, RequestPrivateStoreBuy::new, ConnectionState.IN_GAME), + REQUEST_TUTORIAL_LINK_HTML(0x7B, RequestTutorialLinkHtml::new, ConnectionState.IN_GAME), + REQUEST_TUTORIAL_PASS_CMD_TO_SERVER(0x7C, RequestTutorialPassCmdToServer::new, ConnectionState.IN_GAME), + REQUEST_TUTORIAL_QUESTION_MARK(0x7D, RequestTutorialQuestionMark::new, ConnectionState.IN_GAME), + REQUEST_TUTORIAL_CLIENT_EVENT(0x7E, RequestTutorialClientEvent::new, ConnectionState.IN_GAME), + REQUEST_PETITION(0x7F, RequestPetition::new, ConnectionState.IN_GAME), + REQUEST_PETITION_CANCEL(0x80, RequestPetitionCancel::new, ConnectionState.IN_GAME), + REQUEST_GM_LIST(0x81, RequestGmList::new, ConnectionState.IN_GAME), + REQUEST_JOIN_ALLY(0x82, RequestJoinAlly::new, ConnectionState.IN_GAME), + REQUEST_ANSWER_JOIN_ALLY(0x83, RequestAnswerJoinAlly::new, ConnectionState.IN_GAME), + ALLY_LEAVE(0x84, AllyLeave::new, ConnectionState.IN_GAME), + ALLY_DISMISS(0x85, AllyDismiss::new, ConnectionState.IN_GAME), + REQUEST_DISMISS_ALLY(0x86, RequestDismissAlly::new, ConnectionState.IN_GAME), + REQUEST_SET_ALLY_CREST(0x87, RequestSetAllyCrest::new, ConnectionState.IN_GAME), + REQUEST_ALLY_CREST(0x88, RequestAllyCrest::new, ConnectionState.IN_GAME), + REQUEST_CHANGE_PET_NAME(0x89, RequestChangePetName::new, ConnectionState.IN_GAME), + REQUEST_PET_USE_ITEM(0x8A, RequestPetUseItem::new, ConnectionState.IN_GAME), + REQUEST_GIVE_ITEM_TO_PET(0x8B, RequestGiveItemToPet::new, ConnectionState.IN_GAME), + REQUEST_GET_ITEM_FROM_PET(0x8C, RequestGetItemFromPet::new, ConnectionState.IN_GAME), + REQUEST_ALLY_INFO(0x8E, RequestAllyInfo::new, ConnectionState.IN_GAME), + REQUEST_PET_GET_ITEM(0x8F, RequestPetGetItem::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_MANAGE_BUY(0x90, RequestPrivateStoreManageBuy::new, ConnectionState.IN_GAME), + SET_PRIVATE_STORE_LIST_BUY(0x91, SetPrivateStoreListBuy::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_QUIT_BUY(0x93, RequestPrivateStoreQuitBuy::new, ConnectionState.IN_GAME), + SET_PRIVATE_STORE_MSG_BUY(0x94, SetPrivateStoreMsgBuy::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_SELL(0x96, RequestPrivateStoreSell::new, ConnectionState.IN_GAME), + REQUEST_PACKAGE_SENDABLE_ITEM_LIST(0x9E, RequestPackageSendableItemList::new, ConnectionState.IN_GAME), + REQUEST_PACKAGE_SEND(0x9F, RequestPackageSend::new, ConnectionState.IN_GAME), + REQUEST_BLOCK(0xA0, RequestBlock::new, ConnectionState.IN_GAME), + REQUEST_SIEGE_ATTACKER_LIST(0xA2, RequestSiegeAttackerList::new, ConnectionState.IN_GAME), + REQUEST_SIEGE_DEFENDER_LIST(0xA3, RequestSiegeDefenderList::new, ConnectionState.IN_GAME), + REQUEST_JOIN_SIEGE(0xA4, RequestJoinSiege::new, ConnectionState.IN_GAME), + REQUEST_CONFIRM_SIEGE_WAITING_LIST(0xA5, RequestConfirmSiegeWaitingList::new, ConnectionState.IN_GAME), + MULTI_SELL_CHOOSE(0xA7, MultiSellChoose::new, ConnectionState.IN_GAME), + REQUEST_USER_COMMAND(0xAA, RequestUserCommand::new, ConnectionState.IN_GAME), + SNOOP_QUIT(0xAB, SnoopQuit::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_BOOK_OPEN(0xAC, RequestRecipeBookOpen::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_BOOK_DESTROY(0xAD, RequestRecipeBookDestroy::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_ITEM_MAKE_INFO(0xAE, RequestRecipeItemMakeInfo::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_ITEM_MAKE_SELF(0xAF, RequestRecipeItemMakeSelf::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MESSAGE_SET(0xB1, RequestRecipeShopMessageSet::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_LIST_SET(0xB2, RequestRecipeShopListSet::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MANAGE_QUIT(0xB3, RequestRecipeShopManageQuit::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MAKE_INFO(0xB5, RequestRecipeShopMakeInfo::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MAKE_ITEM(0xB6, RequestRecipeShopMakeItem::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MANAGE_PREV(0xB7, RequestRecipeShopManagePrev::new, ConnectionState.IN_GAME), + OBSERVER_RETURN(0xB8, ObserverReturn::new, ConnectionState.IN_GAME), + REQUEST_EVALUATE(0xB9, RequestEvaluate::new, ConnectionState.IN_GAME), + REQUEST_HENNA_LIST(0xBA, RequestHennaList::new, ConnectionState.IN_GAME), + REQUEST_HENNA_ITEM_INFO(0xBB, RequestHennaItemInfo::new, ConnectionState.IN_GAME), + REQUEST_HENNA_EQUIP(0xBC, RequestHennaEquip::new, ConnectionState.IN_GAME), + REQUEST_HENNA_REMOVE_LIST(0xBD, RequestHennaRemoveList::new, ConnectionState.IN_GAME), + REQUEST_HENNA_ITEM_REMOVE_INFO(0xBE, RequestHennaItemRemoveInfo::new, ConnectionState.IN_GAME), + REQUEST_HENNA_REMOVE(0xBF, RequestHennaRemove::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_POWER(0xC0, RequestPledgePower::new, ConnectionState.IN_GAME), + REQUEST_MAKE_MACRO(0xC1, RequestMakeMacro::new, ConnectionState.IN_GAME), + REQUEST_DELETE_MACRO(0xC2, RequestDeleteMacro::new, ConnectionState.IN_GAME), + REQUEST_BUY_PROCURE(0xC3, RequestBuyProcure::new, ConnectionState.IN_GAME), + REQUEST_BUY_SEED(0xC4, RequestBuySeed::new, ConnectionState.IN_GAME), + DLG_ANSWER(0xC5, DlgAnswer::new, ConnectionState.IN_GAME), + REQUEST_WEAR_ITEM(0xC6, RequestWearItem::new, ConnectionState.IN_GAME), + REQUEST_S_S_Q_STATUS(0xC7, RequestSSQStatus::new, ConnectionState.IN_GAME), + GAME_GUARD_REPLY(0xCA, GameGuardReply::new, ConnectionState.IN_GAME), + REQUEST_SEND_FRIEND_MSG(0xCC, RequestSendFriendMsg::new, ConnectionState.IN_GAME), + REQUEST_SHOW_MINI_MAP(0xCD, RequestShowMiniMap::new, ConnectionState.IN_GAME), + REQUEST_RECORD_INFO(0xCF, RequestRecordInfo::new, ConnectionState.IN_GAME), + EX_PACKET(0xD0, ExPacket::new, ConnectionState.values()); // This packet has its own connection state checking so we allow all of them + + public static final IncomingPackets[] PACKET_ARRAY; + static + { + final short maxPacketId = (short) Arrays.stream(values()).mapToInt(IIncomingPackets::getPacketId).max().orElse(0); + PACKET_ARRAY = new IncomingPackets[maxPacketId + 1]; + for (IncomingPackets incomingPacket : values()) + { + PACKET_ARRAY[incomingPacket.getPacketId()] = incomingPacket; + } + } + + private short _packetId; + private Supplier> _incomingPacketFactory; + private Set _connectionStates; + + IncomingPackets(int packetId, Supplier> incomingPacketFactory, IConnectionState... connectionStates) + { + // packetId is an unsigned byte + if (packetId > 0xFF) + { + throw new IllegalArgumentException("packetId must not be bigger than 0xFF"); + } + + _packetId = (short) packetId; + _incomingPacketFactory = incomingPacketFactory != null ? incomingPacketFactory : () -> null; + _connectionStates = new HashSet<>(Arrays.asList(connectionStates)); + } + + @Override + public int getPacketId() + { + return _packetId; + } + + @Override + public IIncomingPacket newIncomingPacket() + { + return _incomingPacketFactory.get(); + } + + @Override + public Set getConnectionStates() + { + return _connectionStates; + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/OutgoingPackets.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/OutgoingPackets.java new file mode 100644 index 0000000000..2bb8aef9cd --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/OutgoingPackets.java @@ -0,0 +1,331 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import org.l2jmobius.commons.network.PacketWriter; + +/** + * @author Mobius + */ +public enum OutgoingPackets +{ + // Packets + KEY_PACKET(0x00), + CHAR_MOVE_TO_LOCATION(0x01), + CHAR_INFO(0x03), + USER_INFO(0x04), + ATTACK(0x05), + DIE(0x06), + REVIVE(0x07), + SPAWN_ITEM(0x0B), + DROP_ITEM(0x0C), + GET_ITEM(0x0D), + STATUS_UPDATE(0x0E), + NPC_HTML_MESSAGE(0x0F), + SELL_LIST(0x10), + BUY_LIST(0x11), + DELETE_OBJECT(0x12), + CHAR_SELECT_INFO(0x13), + AUTH_LOGIN_FAIL(0x14), + CHAR_SELECTED(0x15), + NPC_INFO(0x16), + CHAR_TEMPLATES(0x17), + CHAR_CREATE_OK(0x19), + CHAR_CREATE_FAIL(0x1A), + ITEM_LIST(0x1B), + SUN_RISE(0x1C), + SUN_SET(0x1D), + TRADE_START(0x1E), + TRADE_OWN_ADD(0x20), + TRADE_OTHER_ADD(0x21), + SEND_TRADE_DONE(0x22), + CHAR_DELETE_OK(0x23), + CHAR_DELETE_FAIL(0x24), + ACTION_FAILED(0x25), + SERVER_CLOSE(0x26), + INVENTORY_UPDATE(0x27), + TELEPORT_TO_LOCATION(0x28), + TARGET_SELECTED(0x29), + TARGET_UNSELECTED(0x2A), + AUTO_ATTACK_START(0x2B), + AUTO_ATTACK_STOP(0x2C), + SOCIAL_ACTION(0x2D), + CHANGE_MOVE_TYPE(0x2E), + CHANGE_WAIT_TYPE(0x2F), + MANAGE_PLEDGE_POWER(0x30), + ASK_JOIN_PLEDGE(0x32), + JOIN_PLEDGE(0x33), + ASK_JOIN_PARTY(0x39), + JOIN_PARTY(0x3A), + WARE_HOUSE_DEPOSIT_LIST(0x41), + WARE_HOUSE_WITHDRAWAL_LIST(0x42), + SHORT_CUT_REGISTER(0x44), + SHORT_CUT_INIT(0x45), + STOP_MOVE(0x47), + MAGIC_SKILL_USE(0x48), + MAGIC_SKILL_CANCELD(0x49), + CREATURE_SAY(0x4A), + EQUIP_UPDATE(0x4B), + DOOR_INFO(0x4C), + DOOR_STATUS_UPDATE(0x4D), + PARTY_SMALL_WINDOW_ALL(0x4E), + PARTY_SMALL_WINDOW_ADD(0x4F), + PARTY_SMALL_WINDOW_DELETE_ALL(0x50), + PARTY_SMALL_WINDOW_DELETE(0x51), + PARTY_SMALL_WINDOW_UPDATE(0x52), + PLEDGE_SHOW_MEMBER_LIST_ALL(0x53), + PLEDGE_SHOW_MEMBER_LIST_UPDATE(0x54), + PLEDGE_SHOW_MEMBER_LIST_ADD(0x55), + PLEDGE_SHOW_MEMBER_LIST_DELETE(0x56), + SKILL_LIST(0x58), + VEHICLE_INFO(0x59), + VEHICLE_DEPARTURE(0x5A), + ON_VEHICLE_CHECK_LOCATION(0x5B), + GET_ON_VEHICLE(0x5C), + GET_OFF_VEHICLE(0x5D), + SEND_TRADE_REQUEST(0x5E), + RESTART_RESPONSE(0x5F), + MOVE_TO_PAWN(0x60), + VALIDATE_LOCATION(0x61), + BEGIN_ROTATION(0x62), + STOP_ROTATION(0x63), + SYSTEM_MESSAGE(0x64), + START_PLEDGE_WAR(0x65), + STOP_PLEDGE_WAR(0x67), + SURRENDER_PLEDGE_WAR(0x69), + PLEDGE_CREST(0x6C), + SETUP_GAUGE(0x6D), + SHOW_BOARD(0x6E), + CHOOSE_INVENTORY_ITEM(0x6F), + MOVE_TO_LOCATION_IN_VEHICLE(0x71), + STOP_MOVE_IN_VEHICLE(0x72), + VALIDATE_LOCATION_IN_VEHICLE(0x73), + TRADE_UPDATE(0x74), + TRADE_PRESS_OWN_OK(0x75), + MAGIC_SKILL_LAUNCHED(0x76), + TRADE_PRESS_OTHER_OK(0x7C), + ASK_JOIN_FRIEND(0x7D), + LEAVE_WORLD(0x7E), + MAGIC_EFFECT_ICONS(0x7F), + QUEST_LIST(0x80), + ENCHANT_RESULT(0x81), + PLEDGE_SHOW_MEMBER_LIST_DELETE_ALL(0x82), + PLEDGE_INFO(0x83), + RIDE(0x86), + PLEDGE_SHOW_INFO_UPDATE(0x88), + AQUIRE_SKILL_LIST(0x8A), + AQUIRE_SKILL_INFO(0x8B), + GM_VIEW_CHARACTER_INFO(0x8F), + GM_VIEW_PLEDGE_INFO(0x90), + GM_VIEW_SKILL_INFO(0x91), + GM_VIEW_QUEST_LIST(0x93), + GM_VIEW_ITEM_LIST(0x94), + GM_VIEW_WAREHOUSE_WITHDRAW_LIST(0x95), + PARTY_MATCH_LIST(0x96), + PARTY_MATCH_DETAIL(0x97), + PLAY_SOUND(0x98), + STATIC_OBJECT(0x99), + PRIVATE_STORE_MANAGE_LIST_SELL(0x9A), + PRIVATE_STORE_LIST_SELL(0x9B), + PRIVATE_STORE_MSG_SELL(0x9C), + SHOW_MINI_MAP(0x9D), + TUTORIAL_SHOW_HTML(0xA0), + TUTORIAL_SHOW_QUESTION_MARK(0xA1), + TUTORIAL_ENABLE_CLIENT_EVENT(0xA2), + TUTORIAL_CLOSE_HTML(0xA3), + MY_TARGET_SELECTED(0xA6), + PARTY_MEMBER_POSITION(0xA7), + ASK_JOIN_ALLY(0xA8), + ALLY_CREST(0xAE), + PET_STATUS_SHOW(0xB0), + PET_INFO(0xB1), + PET_ITEM_LIST(0xB2), + PET_INVENTORY_UPDATE(0xB3), + PET_STATUS_UPDATE(0xB5), + PET_DELETE(0xB6), + PRIVATE_STORE_MANAGE_LIST_BUY(0xB7), + PRIVATE_STORE_LIST_BUY(0xB8), + PRIVATE_STORE_MSG_BUY(0xB9), + SKILL_COOL_TIME(0xC1), + PACKAGE_TO_LIST(0xC2), + PACKAGE_SENDABLE_LIST(0xC3), + EARTHQUAKE(0xC4), + SPECIAL_CAMERA(0xC7), + NORMAL_CAMERA(0xC8), + SIEGE_INFO(0xC9), + SIEGE_ATTACKER_LIST(0xCA), + SIEGE_DEFENDER_LIST(0xCB), + TITLE_UPDATE(0xCC), + PLEDGE_STATUS_CHANGED(0xCD), + RELATION_CHANGED(0xCE), + MULTI_SELL_LIST(0xD0), + SET_SUMMON_REMAIN_TIME(0xD1), + DICE(0xD4), + SNOOP(0xD5), + RECIPE_BOOK_ITEM_LIST(0xD6), + RECIPE_ITEM_MAKE_INFO(0xD7), + RECIPE_SHOP_MANAGE_LIST(0xD8), + RECIPE_SHOP_SELL_LIST(0xD9), + RECIPE_SHOP_ITEM_INFO(0xDA), + RECIPE_SHOP_MSG(0xDB), + SHOW_CALCULATOR(0xDC), + MON_RACE_INFO(0xDD), + SHOW_TOWN_MAP(0xDE), + OBSERVATION_MODE(0xDF), + OBSERVATION_RETURN(0xE0), + CHAIR_SIT(0xE1), + HENNA_EQUIP_LIST(0xE2), + HENNA_ITEM_INFO(0xE3), + HENNA_INFO(0xE4), + HENNA_REMOVE_LIST(0xE5), + HENNA_ITEM_REMOVE_INFO(0xE6), + SEND_MACRO_LIST(0xE7), + BUY_LIST_SEED(0xE8), + SELL_LIST_PROCURE(0xE9), + GM_VIEW_HENNA_INFO(0xEA), + RADAR_CONTROL(0xEB), + CLIENT_SET_TIME(0xEC), + CONFIRM_DLG(0xED), + PARTY_SPELLED(0xEE), + WEAR_LIST(0xEF), + CAMERA_MODE(0xF1), + SHOW_XMAS_SEAL(0xF2), + ETC_STATUS_UPDATE(0xF3), + SHORT_BUFF_STATUS_UPDATE(0xF4), + SSQ_STATUS(0xF5), + CLAN_HALL_DECORATION(0xF7), + SIGNS_SKY(0xF8), + GAME_GUARD_QUERY(0xF9), + FRIEND_LIST(0xFA), + FRIEND_RECV_MSG(0xFD), + // ExPackets + EX_COLOSSEUM_FENCE_INFO(0xFE, 0x09), + EX_PARTY_ROOM_MEMBER(0xFE, 0x0E), + EX_CLOSE_PARTY_ROOM(0xFE, 0x0F), + EX_MANAGE_PARTY_ROOM_MEMBER(0xFE, 0x10), + EX_AUTO_SOUL_SHOT(0xFE, 0x12), + EX_FISHING_START(0xFE, 0x13), + EX_FISHING_END(0xFE, 0x14), + EX_FISHING_START_COMBAT(0xFE, 0x15), + EX_FISHING_HP_REGEN(0xFE, 0x16), + EX_ENCHANT_SKILL_LIST(0xFE, 0x17), + EX_ENCHANT_SKILL_INFO(0xFE, 0x18), + EX_QUEST_INFO(0xFE, 0x19), + EX_SHOW_QUEST_MARK(0xFE, 0x1A), + EX_SEND_MANOR_LIST(0xFE, 0x1B), + EX_SHOW_SEED_INFO(0xFE, 0x1C), + EX_SHOW_CROP_INFO(0xFE, 0x1D), + EX_SHOW_MANOR_DEFAULT_INFO(0xFE, 0x1E), + EX_SHOW_SEED_SETTING(0xFE, 0x1F), + EX_SHOW_CROP_SETTING(0xFE, 0x20), + EX_SHOW_SELL_CROP_LIST(0xFE, 0x21), + EX_SHOW_PROCURE_CROP_DETAIL(0xFE, 0x22), + EX_HERO_LIST(0xFE, 0x23), + EX_SERVER_PRIMITIVE(0xFE, 0x24), + EX_OPEN_MPCC(0xFE, 0x25), + EX_CLOSE_MPCC(0xFE, 0x26), + EX_ASK_JOIN_MPCC(0xFE, 0x27), + EX_PLEDGE_CREST_LARGE(0xFE, 0x28), + EX_OLYMPIAD_USER_INFO(0xFE, 0x29), + EX_OLYMPIAD_SPELLED_INFO(0xFE, 0x2A), + EX_OLYMPIAD_MODE(0xFE, 0x2B), + EX_MAIL_ARRIVED(0xFE, 0x2D), + EX_STORAGE_MAX_COUNT(0xFE, 0x2E), + EX_MULTI_PARTY_COMMAND_CHANNEL_INFO(0xFE, 0x30), + EX_PC_CAFE_POINT_INFO(0xFE, 0x31), + EX_SET_COMPASS_ZONE_CODE(0xFE, 0x32), + EX_GET_BOSS_RECORD(0xFE, 0x33), + EX_ASK_JOIN_PARTY_ROOM(0xFE, 0x34), + EX_LIST_PARTY_MATCHING_WAITING_ROOM(0xFE, 0x35), + EX_SHOW_ADVENTURER_GUIDE_BOOK(0xFE, 0x37), + EX_SHOW_SCREEN_MESSAGE(0xFE, 0x38), + PLEDGE_SKILL_LIST(0xFE, 0x39), + PLEDGE_SKILL_LIST_ADD(0xFE, 0x3A), + PLEDGE_POWER_GRADE_LIST(0xFE, 0x3B), + PLEDGE_RECEIVE_POWER_INFO(0xFE, 0x3C), + PLEDGE_RECEIVE_MEMBER_INFO(0xFE, 0x3D), + PLEDGE_RECEIVE_WAR_LIST(0xFE, 0x3E), + PLEDGE_RECEIVE_SUB_PLEDGE_CREATED(0xFE, 0x3F), + EX_RED_SKY(0xFE, 0x40), + SHOW_PC_CAFE_COUPON_SHOW_UI(0xFE, 0x43), + EX_CAPTURE_ORC(0xFE, 0x44), + EX_CURSED_WEAPON_LIST(0xFE, 0x45), + EX_CURSED_WEAPON_LOCATION(0xFE, 0x46), + EX_RESTART_CLIENT(0xFE, 0x47), + EX_REQUEST_HACK_SHIELD(0xFE, 0x48), + EX_USE_SHARED_GROUP_ITEM(0xFE, 0x49), + EX_MPCC_SHOW_PARTY_MEMBER_INFO(0xFE, 0x4A), + EX_DUEL_ASK_START(0xFE, 0x4B), + EX_DUEL_READY(0xFE, 0x4C), + EX_DUEL_START(0xFE, 0x4D), + EX_DUEL_END(0xFE, 0x4E), + EX_DUEL_UPDATE_USER_INFO(0xFE, 0x4F), + EX_SHOW_VARIATION_MAKE_WINDOW(0xFE, 0x50), + EX_SHOW_VARIATION_CANCEL_WINDOW(0xFE, 0x51), + EX_CONFIRM_VARIATION_ITEM(0xFE, 0x52), + EX_CONFIRM_VARIATION_REFINER(0xFE, 0x53), + EX_CONFIRM_VARIATION_GEMSTONE(0xFE, 0x54), + EX_VARIATION_RESULT(0xFE, 0x55), + EX_CONFIRM_CANCEL_ITEM(0xFE, 0x56), + EX_VARIATION_CANCEL_RESULT(0xFE, 0x57), + EX_SHOW_SLIDESHOW_KAMAEL(0xFE, 0x5B); + + private final int _id1; + private final int _id2; + + OutgoingPackets(int id1) + { + this(id1, -1); + } + + OutgoingPackets(int id1, int id2) + { + _id1 = id1; + _id2 = id2; + } + + public int getId1() + { + return _id1; + } + + public int getId2() + { + return _id2; + } + + public void writeId(PacketWriter packet) + { + packet.writeC(_id1); + if (_id2 > 0) + { + packet.writeH(_id2); + } + } + + public static OutgoingPackets getPacket(int id1, int id2) + { + for (OutgoingPackets packet : values()) + { + if ((packet.getId1() == id1) && (packet.getId2() == id2)) + { + return packet; + } + } + return null; + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Action.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Action.java index d95bd554af..43a0ad4277 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Action.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Action.java @@ -18,38 +18,43 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -@SuppressWarnings("unused") -public class Action extends GameClientPacket +public class Action implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(Action.class.getName()); private int _objectId; + @SuppressWarnings("unused") private int _originX; + @SuppressWarnings("unused") private int _originY; + @SuppressWarnings("unused") private int _originZ; private int _actionId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); // Target object Identifier - _originX = readD(); - _originY = readD(); - _originZ = readD(); - _actionId = readC(); // Action identifier : 0-Simple click, 1-Shift click + _objectId = packet.readD(); // Target object Identifier + _originX = packet.readD(); + _originY = packet.readD(); + _originZ = packet.readD(); + _actionId = packet.readC(); // Action identifier : 0-Simple click, 1-Shift click + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // Get the current PlayerInstance of the player - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -76,21 +81,21 @@ public class Action extends GameClientPacket // pressing e.g. pickup many times quickly would get you here if (obj == null) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } // Players can't interact with objects in the other instances except from multiverse if ((obj.getInstanceId() != player.getInstanceId()) && (player.getInstanceId() != -1)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } // Only GMs can directly interact with invisible characters if ((obj instanceof PlayerInstance) && (((PlayerInstance) obj).getAppearance().isInvisible()) && !player.isGM()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -112,7 +117,7 @@ public class Action extends GameClientPacket } else { - obj.onActionShift(getClient()); + obj.onActionShift(client); } break; } @@ -120,14 +125,14 @@ public class Action extends GameClientPacket { // Invalid action detected (probably client cheating), LOGGER this LOGGER.warning("Character: " + player.getName() + " requested invalid action: " + _actionId); - getClient().sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); break; } } } else { - getClient().sendPacket(ActionFailed.STATIC_PACKET); // Actions prohibited when in trade + client.sendPacket(ActionFailed.STATIC_PACKET); // Actions prohibited when in trade } } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AddTradeItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AddTradeItem.java index a616e61ef3..6240756fa5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AddTradeItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AddTradeItem.java @@ -18,16 +18,18 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.TradeOtherAdd; import org.l2jmobius.gameserver.network.serverpackets.TradeOwnAdd; import org.l2jmobius.gameserver.network.serverpackets.TradeUpdate; -public class AddTradeItem extends GameClientPacket +public class AddTradeItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(AddTradeItem.class.getName()); private int _tradeId; @@ -35,17 +37,18 @@ public class AddTradeItem extends GameClientPacket private int _count; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _tradeId = readD(); - _objectId = readD(); - _count = readD(); + _tradeId = packet.readD(); + _objectId = packet.readD(); + _count = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AllyDismiss.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AllyDismiss.java index 47b6b4e9b2..97bdaf7202 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AllyDismiss.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AllyDismiss.java @@ -17,31 +17,34 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class AllyDismiss extends GameClientPacket +public class AllyDismiss implements IClientIncomingPacket { private String _clanName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _clanName = readS(); + _clanName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_clanName == null) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AllyLeave.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AllyLeave.java index c0348ff5b6..0fc2bb8b25 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AllyLeave.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AllyLeave.java @@ -17,22 +17,25 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class AllyLeave extends GameClientPacket +public class AllyLeave implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AnswerJoinPartyRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AnswerJoinPartyRoom.java index 6465f22088..36c11f07af 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AnswerJoinPartyRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AnswerJoinPartyRoom.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExManagePartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class AnswerJoinPartyRoom extends GameClientPacket +public class AnswerJoinPartyRoom implements IClientIncomingPacket { private int _answer; // 1 or 0 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _answer = readD(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AnswerTradeRequest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AnswerTradeRequest.java index 555da4fd0e..28f401373c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AnswerTradeRequest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AnswerTradeRequest.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SendTradeDone; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class AnswerTradeRequest extends GameClientPacket +public class AnswerTradeRequest implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Appearing.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Appearing.java index d85f29498e..b3c9a0cf45 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Appearing.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Appearing.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; /** * Appearing Packet Handler */ -public class Appearing extends GameClientPacket +public class Appearing implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || !player.isOnline()) { - sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -45,6 +48,6 @@ public class Appearing extends GameClientPacket player.onTeleported(); } - sendPacket(new UserInfo(player)); + client.sendPacket(new UserInfo(player)); } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java index 20af9703f5..fcfc95e327 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.instancemanager.events.CTF; import org.l2jmobius.gameserver.instancemanager.events.DM; @@ -24,10 +25,11 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @SuppressWarnings("unused") -public class AttackRequest extends GameClientPacket +public class AttackRequest implements IClientIncomingPacket { private int _objectId; private int _originX; @@ -36,19 +38,20 @@ public class AttackRequest extends GameClientPacket private int _attackId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _originX = readD(); - _originY = readD(); - _originZ = readD(); - _attackId = readC(); // 0 for simple click - 1 for shift-click + _objectId = packet.readD(); + _originX = packet.readD(); + _originY = packet.readD(); + _originZ = packet.readD(); + _attackId = packet.readC(); // 0 for simple click - 1 for shift-click + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -157,7 +160,7 @@ public class AttackRequest extends GameClientPacket } else { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); } } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AuthLogin.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AuthLogin.java index 16fdfb9d7b..a22cf29a2b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AuthLogin.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AuthLogin.java @@ -16,11 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.LoginServerThread; import org.l2jmobius.gameserver.LoginServerThread.SessionKey; import org.l2jmobius.gameserver.network.GameClient; -public class AuthLogin extends GameClientPacket +public class AuthLogin implements IClientIncomingPacket { // loginName + keys must match what the loginserver used. private String _loginName; @@ -30,20 +31,20 @@ public class AuthLogin extends GameClientPacket private int _loginKey2; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _loginName = readS().toLowerCase(); - _playKey2 = readD(); - _playKey1 = readD(); - _loginKey1 = readD(); - _loginKey2 = readD(); + _loginName = packet.readS().toLowerCase(); + _playKey2 = packet.readD(); + _playKey1 = packet.readD(); + _loginKey1 = packet.readD(); + _loginKey2 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final SessionKey key = new SessionKey(_loginKey1, _loginKey2, _playKey1, _playKey2); - final GameClient client = getClient(); // avoid potential exploits if (client.getAccountName() == null) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymore.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymore.java index af5805ac19..a511755bc0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymore.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymore.java @@ -16,11 +16,13 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlEvent; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class CannotMoveAnymore extends GameClientPacket +public class CannotMoveAnymore implements IClientIncomingPacket { private int _x; private int _y; @@ -28,18 +30,19 @@ public class CannotMoveAnymore extends GameClientPacket private int _heading; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _x = readD(); - _y = readD(); - _z = readD(); - _heading = readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + _heading = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java index bab941dec7..cdec5cf4d2 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.StopMoveInVehicle; /** * @author Maktakien */ -public class CannotMoveAnymoreInVehicle extends GameClientPacket +public class CannotMoveAnymoreInVehicle implements IClientIncomingPacket { private int _x; private int _y; @@ -32,19 +34,20 @@ public class CannotMoveAnymoreInVehicle extends GameClientPacket private int _boatId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _boatId = readD(); - _x = readD(); - _y = readD(); - _z = readD(); - _heading = readD(); + _boatId = packet.readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + _heading = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ChangeMoveType2.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ChangeMoveType2.java index b2442a24f6..cc429bc741 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ChangeMoveType2.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ChangeMoveType2.java @@ -16,22 +16,25 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class ChangeMoveType2 extends GameClientPacket +public class ChangeMoveType2 implements IClientIncomingPacket { private boolean _typeRun; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _typeRun = readD() == 1; + _typeRun = packet.readD() == 1; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ChangeWaitType2.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ChangeWaitType2.java index 4b0246b893..114bffa780 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ChangeWaitType2.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ChangeWaitType2.java @@ -16,62 +16,62 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ChairSit; -public class ChangeWaitType2 extends GameClientPacket +public class ChangeWaitType2 implements IClientIncomingPacket { private boolean _typeStand; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _typeStand = readD() == 1; + _typeStand = packet.readD() == 1; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } final WorldObject target = player.getTarget(); - if (getClient() != null) + if (player.isOutOfControl()) { - if (player.isOutOfControl()) - { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - if (player.getMountType() != 0) - { - return; - } - - if ((target != null) && !player.isSitting() && (target instanceof StaticObjectInstance) && (((StaticObjectInstance) target).getType() == 1) && (CastleManager.getInstance().getCastle(target) != null) && player.isInsideRadius2D(target, StaticObjectInstance.INTERACTION_DISTANCE)) - { - final ChairSit cs = new ChairSit(player, ((StaticObjectInstance) target).getStaticObjectId()); - player.sendPacket(cs); - player.sitDown(); - player.broadcastPacket(cs); - } - - if (_typeStand) - { - player.standUp(); - } - else - { - player.sitDown(); - } + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + + if (player.getMountType() != 0) + { + return; + } + + if ((target != null) && !player.isSitting() && (target instanceof StaticObjectInstance) && (((StaticObjectInstance) target).getType() == 1) && (CastleManager.getInstance().getCastle(target) != null) && player.isInsideRadius2D(target, StaticObjectInstance.INTERACTION_DISTANCE)) + { + final ChairSit cs = new ChairSit(player, ((StaticObjectInstance) target).getStaticObjectId()); + player.sendPacket(cs); + player.sitDown(); + player.broadcastPacket(cs); + } + + if (_typeStand) + { + player.standUp(); + } + else + { + player.sitDown(); } } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index f2404d9c2b..62c1bef8db 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -22,6 +22,7 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; @@ -46,7 +47,7 @@ import org.l2jmobius.gameserver.network.serverpackets.CharCreateOk; import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; import org.l2jmobius.gameserver.util.Util; -public class CharacterCreate extends GameClientPacket +public class CharacterCreate implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(CharacterCreate.class.getName()); @@ -72,29 +73,30 @@ public class CharacterCreate extends GameClientPacket private int _wit; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); - _race = readD(); - _sex = (byte) readD(); - _classId = readD(); - _int = readD(); - _str = readD(); - _con = readD(); - _men = readD(); - _dex = readD(); - _wit = readD(); - _hairStyle = (byte) readD(); - _hairColor = (byte) readD(); - _face = (byte) readD(); + _name = packet.readS(); + _race = packet.readD(); + _sex = (byte) packet.readD(); + _classId = packet.readD(); + _int = packet.readD(); + _str = packet.readD(); + _con = packet.readD(); + _men = packet.readD(); + _dex = packet.readD(); + _wit = packet.readD(); + _hairStyle = (byte) packet.readD(); + _hairColor = (byte) packet.readD(); + _face = (byte) packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if ((_name.length() < 3) || (_name.length() > 16) || !Util.isAlphaNumeric(_name) || !isValidName(_name)) { - sendPacket(new CharCreateFail(CharCreateFail.REASON_16_ENG_CHARS)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_16_ENG_CHARS)); return; } @@ -104,7 +106,7 @@ public class CharacterCreate extends GameClientPacket { if (_name.toLowerCase().contains(st.toLowerCase())) { - getClient().sendPacket(new CharCreateFail(CharCreateFail.REASON_INCORRECT_NAME)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_INCORRECT_NAME)); return; } } @@ -116,26 +118,26 @@ public class CharacterCreate extends GameClientPacket // Since checks for duplicate names are done using SQL, lock must be held until data is written to DB as well. synchronized (CharNameTable.getInstance()) { - if ((CharNameTable.getInstance().accountCharNumber(getClient().getAccountName()) >= Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT) && (Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT != 0)) + if ((CharNameTable.getInstance().accountCharNumber(client.getAccountName()) >= Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT) && (Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT != 0)) { - sendPacket(new CharCreateFail(CharCreateFail.REASON_TOO_MANY_CHARACTERS)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_TOO_MANY_CHARACTERS)); return; } else if (CharNameTable.getInstance().doesCharNameExist(_name)) { - sendPacket(new CharCreateFail(CharCreateFail.REASON_NAME_ALREADY_EXISTS)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_NAME_ALREADY_EXISTS)); return; } template = PlayerTemplateData.getInstance().getTemplate(_classId); if ((template == null) || (template.getClassBaseLevel() > 1)) { - sendPacket(new CharCreateFail(CharCreateFail.REASON_CREATION_FAILED)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_CREATION_FAILED)); return; } final int objectId = IdManager.getInstance().getNextId(); - newChar = PlayerInstance.create(objectId, template, getClient().getAccountName(), _name, _hairStyle, _hairColor, _face, _sex != 0); + newChar = PlayerInstance.create(objectId, template, client.getAccountName(), _name, _hairStyle, _hairColor, _face, _sex != 0); newChar.setCurrentHp(newChar.getMaxHp()); // L2Off like // newChar.setCurrentCp(template.baseCpMax); newChar.setCurrentCp(0); // L2Off like @@ -143,8 +145,8 @@ public class CharacterCreate extends GameClientPacket // newChar.setMaxLoad(template.baseLoad); // send acknowledgement - sendPacket(new CharCreateOk()); // Success - initNewChar(getClient(), newChar); + client.sendPacket(new CharCreateOk()); // Success + initNewChar(client, newChar); } } @@ -160,7 +162,7 @@ public class CharacterCreate extends GameClientPacket } catch (PatternSyntaxException e) // case of illegal pattern { - LOGGER.warning("ERROR " + getType() + ": Character name pattern of config is wrong!"); + LOGGER.warning("Character name pattern of config is wrong!"); pattern = Pattern.compile(".*"); } @@ -297,7 +299,7 @@ public class CharacterCreate extends GameClientPacket // Send char list final CharSelectInfo cl = new CharSelectInfo(client.getAccountName(), client.getSessionId().playOkID1); - client.getConnection().sendPacket(cl); + client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 94b9ae114e..d1ff9bd81f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -16,8 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import java.util.logging.Level; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharDeleteFail; import org.l2jmobius.gameserver.network.serverpackets.CharDeleteOk; import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; @@ -25,28 +28,29 @@ import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; /** * @author eX1steam */ -public class CharacterDelete extends GameClientPacket +public class CharacterDelete implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(CharacterDelete.class.getName()); private int _charSlot; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _charSlot = readD(); + _charSlot = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (!getClient().getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterDelete")) + if (!client.getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterDelete")) { return; } try { - final byte answer = getClient().markToDeleteChar(_charSlot); + final byte answer = client.markToDeleteChar(_charSlot); switch (answer) { default: @@ -56,28 +60,28 @@ public class CharacterDelete extends GameClientPacket } case 0: // Success! { - sendPacket(new CharDeleteOk()); + client.sendPacket(new CharDeleteOk()); break; } case 1: { - sendPacket(new CharDeleteFail(CharDeleteFail.REASON_YOU_MAY_NOT_DELETE_CLAN_MEMBER)); + client.sendPacket(new CharDeleteFail(CharDeleteFail.REASON_YOU_MAY_NOT_DELETE_CLAN_MEMBER)); break; } case 2: { - sendPacket(new CharDeleteFail(CharDeleteFail.REASON_CLAN_LEADERS_MAY_NOT_BE_DELETED)); + client.sendPacket(new CharDeleteFail(CharDeleteFail.REASON_CLAN_LEADERS_MAY_NOT_BE_DELETED)); break; } } } catch (Exception e) { - LOGGER.warning("ERROR " + getType() + ": " + e); + LOGGER.log(Level.SEVERE, "Error:", e); } - final CharSelectInfo cl = new CharSelectInfo(getClient().getAccountName(), getClient().getSessionId().playOkID1, 0); - sendPacket(cl); - getClient().setCharSelection(cl.getCharInfo()); + final CharSelectInfo cl = new CharSelectInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); + client.sendPacket(cl); + client.setCharSelection(cl.getCharInfo()); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 0c067f4886..434f4f724d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -16,36 +16,39 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; -public class CharacterRestore extends GameClientPacket +public class CharacterRestore implements IClientIncomingPacket { private int _charSlot; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _charSlot = readD(); + _charSlot = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (!getClient().getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterRestore")) + if (!client.getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterRestore")) { return; } try { - getClient().markRestoredChar(_charSlot); + client.markRestoredChar(_charSlot); } catch (Exception e) { } - final CharSelectInfo cl = new CharSelectInfo(getClient().getAccountName(), getClient().getSessionId().playOkID1, 0); - sendPacket(cl); - getClient().setCharSelection(cl.getCharInfo()); + final CharSelectInfo cl = new CharSelectInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); + client.sendPacket(cl); + client.setCharSelection(cl.getCharInfo()); } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelected.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelected.java index 35f06b3c8c..534374452f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelected.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelected.java @@ -18,13 +18,15 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.ConnectionState; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.CharSelected; @SuppressWarnings("unused") -public class CharacterSelected extends GameClientPacket +public class CharacterSelected implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(CharacterSelected.class.getName()); @@ -35,41 +37,42 @@ public class CharacterSelected extends GameClientPacket private int _unk4; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _charSlot = readD(); - _unk1 = readH(); - _unk2 = readD(); - _unk3 = readD(); - _unk4 = readD(); + _charSlot = packet.readD(); + _unk1 = packet.readH(); + _unk2 = packet.readD(); + _unk3 = packet.readD(); + _unk4 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // if there is a playback.dat file in the current directory, it will be sent to the client instead of any regular packets // to make this work, the first packet in the playback.dat has to be a [S]0x21 packet // after playback is done, the client will not work correct and need to exit // playLogFile(getConnection()); // try to play LOGGER file - if (!getClient().getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterSelect")) + if (!client.getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterSelect")) { return; } // we should always be abble to acquire the lock but if we cant lock then nothing should be done (ie repeated packet) - if (getClient().getPlayerLock().tryLock()) + if (client.getPlayerLock().tryLock()) { try { // should always be null but if not then this is repeated packet and nothing should be done here - if (getClient().getPlayer() == null) + if (client.getPlayer() == null) { // Load up character from disk - final PlayerInstance cha = getClient().loadCharFromDisk(_charSlot); + final PlayerInstance cha = client.loadCharFromDisk(_charSlot); if (cha == null) { - LOGGER.warning(getType() + ": Character could not be loaded (slot:" + _charSlot + ")"); - sendPacket(ActionFailed.STATIC_PACKET); + LOGGER.warning("Character could not be loaded (slot:" + _charSlot + ")"); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -79,10 +82,10 @@ public class CharacterSelected extends GameClientPacket return; } - cha.setClient(getClient()); - getClient().setPlayer(cha); - getClient().setState(ConnectionState.ENTERING); - sendPacket(new CharSelected(cha, getClient().getSessionId().playOkID1)); + cha.setClient(client); + client.setPlayer(cha); + client.setConnectionState(ConnectionState.ENTERING); + client.sendPacket(new CharSelected(cha, client.getSessionId().playOkID1)); } } catch (Exception e) @@ -91,7 +94,7 @@ public class CharacterSelected extends GameClientPacket } finally { - getClient().getPlayerLock().unlock(); + client.getPlayerLock().unlock(); } } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 6cdb375f0f..a1d40dee52 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -17,30 +17,33 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * @author Dezmond_snz - Packet Format: cddd */ -public class DlgAnswer extends GameClientPacket +public class DlgAnswer implements IClientIncomingPacket { private int _messageId; private int _answer; // private int _requesterId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _messageId = readD(); - _answer = readD(); - // _requesterId = readD(); + _messageId = packet.readD(); + _answer = packet.readD(); + // _requesterId = packet.readD(); + return true; } @Override - public void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 76d429f4b4..4c41717e16 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -26,6 +26,7 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.communitybbs.Manager.MailBBSManager; @@ -67,6 +68,7 @@ import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.ConnectionState; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ClientSetTime; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; @@ -96,7 +98,7 @@ import org.l2jmobius.gameserver.util.Util; /** * Enter World Packet Handler */ -public class EnterWorld extends GameClientPacket +public class EnterWorld implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(EnterWorld.class.getName()); @@ -104,23 +106,23 @@ public class EnterWorld extends GameClientPacket SimpleDateFormat df = new SimpleDateFormat("dd MM yyyy"); @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // this is just a trigger packet. it has no content + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { LOGGER.warning("EnterWorld failed! player is null..."); - getClient().closeNow(); + client.closeNow(); return; } - getClient().setState(ConnectionState.IN_GAME); + client.setConnectionState(ConnectionState.IN_GAME); // Set lock at login player.setLocked(true); @@ -130,7 +132,7 @@ public class EnterWorld extends GameClientPacket if (!player.isGM() && !player.isDonator() && Config.CHECK_NAME_ON_LOGIN && ((player.getName().length() < 3) || (player.getName().length() > 16) || !Util.isAlphaNumeric(player.getName()) || !isValidName(player.getName()))) { LOGGER.warning("Charname: " + player.getName() + " is invalid. EnterWorld failed."); - getClient().closeNow(); + client.closeNow(); return; } @@ -169,7 +171,7 @@ public class EnterWorld extends GameClientPacket html.setFile("data/html/clan_notice.htm"); html.replace("%clan_name%", player.getClan().getName()); html.replace("%notice_text%", player.getClan().getNotice().replaceAll("\r\n", "
    ").replaceAll("action", "").replace("bypass", "")); - sendPacket(html); + player.sendPacket(html); } } @@ -183,7 +185,7 @@ public class EnterWorld extends GameClientPacket // player.sendPacket(new StopRotation(player, player.getHeading(), 10000000)); if (SevenSigns.getInstance().isSealValidationPeriod()) { - sendPacket(new SignsSky()); + player.sendPacket(new SignsSky()); } // Buff and Status icons @@ -235,7 +237,7 @@ public class EnterWorld extends GameClientPacket player.sendMessage("[Server]: You have over enchanted items you will be kicked from server!"); player.sendMessage("[Server]: Respect our server rules."); // Message with screen - sendPacket(new ExShowScreenMessage(" You have an over enchanted item, you will be kicked from server! ", 6000)); + player.sendPacket(new ExShowScreenMessage(" You have an over enchanted item, you will be kicked from server! ", 6000)); // Punishment e LOGGER in audit Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " has Overenchanted item! Kicked! ", Config.DEFAULT_PUNISH); // Logger in console @@ -254,12 +256,12 @@ public class EnterWorld extends GameClientPacket player.getMacroses().sendUpdate(); // Send packets info - sendPacket(new ClientSetTime()); // SetClientTime - sendPacket(new UserInfo(player)); - sendPacket(new HennaInfo(player)); - sendPacket(new FriendList(player)); - sendPacket(new ItemList(player, false)); - sendPacket(new ShortCutInit(player)); + player.sendPacket(new ClientSetTime()); // SetClientTime + player.sendPacket(new UserInfo(player)); + player.sendPacket(new HennaInfo(player)); + player.sendPacket(new FriendList(player)); + player.sendPacket(new ItemList(player, false)); + player.sendPacket(new ShortCutInit(player)); // Reload inventory to give SA skill player.getInventory().reloadEquippedItems(); @@ -292,13 +294,13 @@ public class EnterWorld extends GameClientPacket // sendPacket(ui); if ((player.getClanId() != 0) && (player.getClan() != null)) { - sendPacket(new PledgeShowMemberListAll(player.getClan(), player)); - sendPacket(new PledgeStatusChanged(player.getClan())); + player.sendPacket(new PledgeShowMemberListAll(player.getClan(), player)); + player.sendPacket(new PledgeStatusChanged(player.getClan())); } if (player.isAlikeDead()) { - sendPacket(new Die(player)); // No broadcast needed since the player will already spawn dead to others + player.sendPacket(new Die(player)); // No broadcast needed since the player will already spawn dead to others } if (Config.ALLOW_WATER) @@ -466,13 +468,13 @@ public class EnterWorld extends GameClientPacket { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.IT_IS_NOW_MIDNIGHT_AND_THE_EFFECT_OF_S1_CAN_BE_FELT); sm.addSkillName(294); - sendPacket(sm); + player.sendPacket(sm); } else { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.IT_IS_DAWN_AND_THE_EFFECT_OF_S1_WILL_NOW_DISAPPEAR); sm.addSkillName(294); - sendPacket(sm); + player.sendPacket(sm); } } } @@ -499,7 +501,7 @@ public class EnterWorld extends GameClientPacket } catch (PatternSyntaxException e) // case of illegal pattern { - LOGGER.warning("ERROR " + getType() + ": Character name pattern of config is wrong!"); + LOGGER.warning("Character name pattern of config is wrong!"); pattern = Pattern.compile(".*"); } @@ -604,7 +606,7 @@ public class EnterWorld extends GameClientPacket final NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(Welcome_Path); html.replace("%name%", player.getName()); - sendPacket(html); + player.sendPacket(html); } } @@ -706,11 +708,11 @@ public class EnterWorld extends GameClientPacket player.updateNameTitleColor(); - sendPacket(new UserInfo(player)); - sendPacket(new HennaInfo(player)); - sendPacket(new FriendList(player)); - sendPacket(new ItemList(player, false)); - sendPacket(new ShortCutInit(player)); + player.sendPacket(new UserInfo(player)); + player.sendPacket(new HennaInfo(player)); + player.sendPacket(new FriendList(player)); + player.sendPacket(new ItemList(player, false)); + player.sendPacket(new ShortCutInit(player)); player.broadcastUserInfo(); } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ExPacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ExPacket.java new file mode 100644 index 0000000000..75c26ee8c9 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ExPacket.java @@ -0,0 +1,64 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.clientpackets; + +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.ExIncomingPackets; +import org.l2jmobius.gameserver.network.GameClient; + +/** + * @author Nos + */ +public class ExPacket implements IClientIncomingPacket +{ + // private static final Logger LOGGER = Logger.getLogger(ExPacket.class.getName()); + + private ExIncomingPackets _exIncomingPacket; + private IIncomingPacket _exPacket; + + @Override + public boolean read(GameClient client, PacketReader packet) + { + final int exPacketId = packet.readH() & 0xFFFF; + if ((exPacketId < 0) || (exPacketId >= ExIncomingPackets.PACKET_ARRAY.length)) + { + return false; + } + + _exIncomingPacket = ExIncomingPackets.PACKET_ARRAY[exPacketId]; + if (_exIncomingPacket == null) + { + // LOGGER.finer(getClass().getSimpleName() + ": Unknown packet: " + Integer.toHexString(exPacketId)); + return false; + } + + _exPacket = _exIncomingPacket.newIncomingPacket(); + return (_exPacket != null) && _exPacket.read(client, packet); + } + + @Override + public void run(GameClient client) throws Exception + { + if (!_exIncomingPacket.getConnectionStates().contains(client.getConnectionState())) + { + // LOGGER.finer(_exIncomingPacket + ": Connection at invalid state: " + client.getConnectionState() + " Required State: " + _exIncomingPacket.getConnectionStates()); + return; + } + _exPacket.run(client); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/FinishRotating.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/FinishRotating.java index 626110e7a0..2a938101ef 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/FinishRotating.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/FinishRotating.java @@ -17,31 +17,32 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.StopRotation; -@SuppressWarnings("unused") -public class FinishRotating extends GameClientPacket +public class FinishRotating implements IClientIncomingPacket { private int _degree; - private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _degree = readD(); - _unknown = readD(); + _degree = packet.readD(); + packet.readD(); // Unknown. + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (!Config.ENABLE_KEYBOARD_MOVEMENT) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/GameClientPacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/GameClientPacket.java deleted file mode 100644 index 66b4cfac6a..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/GameClientPacket.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets; - -import java.util.logging.Logger; - -import org.l2jmobius.commons.mmocore.ReceivablePacket; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; - -/** - * Packets received by the game server from clients - * @author KenM - */ -public abstract class GameClientPacket extends ReceivablePacket -{ - protected static final Logger LOGGER = Logger.getLogger(GameClientPacket.class.getName()); - - @Override - protected boolean read() - { - try - { - readImpl(); - return true; - } - catch (Exception e) - { - LOGGER.severe("Client: " + getClient() + " - Failed reading: " + getType() + " ; " + e.getMessage() + " " + e); - } - return false; - } - - protected abstract void readImpl(); - - @Override - public void run() - { - try - { - runImpl(); - if ((this instanceof MoveBackwardToLocation) || (this instanceof AttackRequest) || (this instanceof RequestMagicSkillUse)) - { - if (getClient().getPlayer() != null) - { - getClient().getPlayer().onActionRequest(); // Removes onSpawn Protection - } - } - } - catch (Throwable t) - { - LOGGER.severe("Client: " + getClient() + " - Failed reading: " + getType() + " ; " + t.getMessage() + " " + t); - if (this instanceof EnterWorld) - { - getClient().closeNow(); - } - } - } - - protected abstract void runImpl(); - - /** - * Sends a game server packet to the client. - * @param gsp the game server packet - */ - protected final void sendPacket(GameServerPacket gsp) - { - getClient().sendPacket(gsp); - } - - /** - * @return A String with this packet name for debuging purposes - */ - public String getType() - { - return "[C] " + getClass().getSimpleName(); - } -} \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/GameGuardReply.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/GameGuardReply.java index 77c91e8baa..4278481ccf 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/GameGuardReply.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/GameGuardReply.java @@ -16,25 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * @author zabbix Lets drink to code! Unknown Packet: ca 0000: 45 00 01 00 1e 37 a2 f5 00 00 00 00 00 00 00 00 E....7.......... */ -public class GameGuardReply extends GameClientPacket +public class GameGuardReply implements IClientIncomingPacket { private final int[] _reply = new int[4]; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _reply[0] = readD(); - _reply[1] = readD(); - _reply[2] = readD(); - _reply[3] = readD(); + _reply[0] = packet.readD(); + _reply[1] = packet.readD(); + _reply[2] = packet.readD(); + _reply[3] = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - getClient().setGameGuardOk(true); + client.setGameGuardOk(true); } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DummyPacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/IClientIncomingPacket.java similarity index 65% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DummyPacket.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/IClientIncomingPacket.java index 220410fcd5..2d588afffd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DummyPacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/IClientIncomingPacket.java @@ -16,18 +16,16 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import java.util.logging.Logger; + +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.gameserver.network.GameClient; + /** - * @author zabbix Lets drink to code! + * Packets received by the game serv@Override er from clients + * @author KenM */ -public class DummyPacket extends GameClientPacket +public interface IClientIncomingPacket extends IIncomingPacket { - @Override - protected void readImpl() - { - } - - @Override - public void runImpl() - { - } -} \ No newline at end of file + Logger LOGGER = Logger.getLogger(IClientIncomingPacket.class.getName()); +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index 3efa8ae109..452d6ee796 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.model.Party; @@ -25,23 +26,25 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.sevensigns.SevenSignsFestival; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; -public class Logout extends GameClientPacket +public class Logout implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // Do not allow leaving if player is fighting - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 783106861f..c1a7f3b8f9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -19,10 +19,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.nio.BufferUnderflowException; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.DoorData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.EnchantResult; @@ -30,7 +32,7 @@ import org.l2jmobius.gameserver.network.serverpackets.StopMove; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class MoveBackwardToLocation extends GameClientPacket +public class MoveBackwardToLocation implements IClientIncomingPacket { private int _targetX; private int _targetY; @@ -41,42 +43,44 @@ public class MoveBackwardToLocation extends GameClientPacket private int _movementMode; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetX = readD(); - _targetY = readD(); - _targetZ = readD(); - _originX = readD(); - _originY = readD(); - _originZ = readD(); + _targetX = packet.readD(); + _targetY = packet.readD(); + _targetZ = packet.readD(); + _originX = packet.readD(); + _originY = packet.readD(); + _originZ = packet.readD(); try { - _movementMode = readD(); // is 0 if cursor keys are used 1 if mouse is used + _movementMode = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used } catch (BufferUnderflowException e) { // Ignore for now if (Config.L2WALKER_PROTECTION) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); player.sendPacket(SystemMessageId.A_HACKING_TOOL_HAS_BEEN_DISCOVERED_PLEASE_TRY_PLAYING_AGAIN_AFTER_CLOSING_UNNECESSARY_PROGRAMS); Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " trying to use L2Walker!", IllegalPlayerAction.PUNISH_KICK); } } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } // Move flood protection - if (!getClient().getFloodProtectors().getMoveAction().tryPerformAction("MoveBackwardToLocation")) + if (!client.getFloodProtectors().getMoveAction().tryPerformAction("MoveBackwardToLocation")) { player.sendPacket(ActionFailed.STATIC_PACKET); return; @@ -85,7 +89,7 @@ public class MoveBackwardToLocation extends GameClientPacket // Like L2OFF movements prohibited when char is sitting if (player.isSitting()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MoveWithDelta.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MoveWithDelta.java index fcc2e78085..40ecd440d4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MoveWithDelta.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MoveWithDelta.java @@ -16,27 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format: (c) ddd d: dx d: dy d: dz * @author -Wooden- */ -@SuppressWarnings("unused") -public class MoveWithDelta extends GameClientPacket +public class MoveWithDelta implements IClientIncomingPacket { - private int _dx; - private int _dy; - private int _dz; - @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _dx = readD(); - _dy = readD(); - _dz = readD(); + packet.readD(); // dx + packet.readD(); // dy + packet.readD(); // dz + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java index 538ba12929..91c810b43b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.xml.MultisellData; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; @@ -33,6 +34,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.multisell.MultiSellEntry; import org.l2jmobius.gameserver.model.multisell.MultiSellIngredient; import org.l2jmobius.gameserver.model.multisell.MultiSellListContainer; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ItemList; @@ -43,7 +45,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * The Class MultiSellChoose. */ -public class MultiSellChoose extends GameClientPacket +public class MultiSellChoose implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(MultiSellChoose.class.getName()); private int _listId; @@ -53,27 +55,28 @@ public class MultiSellChoose extends GameClientPacket private int _transactionTax; // local handling of taxation @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _listId = readD(); - _entryId = readD(); - _amount = readD(); - // _enchantment = readH(); // Commented this line because it did NOT work! + _listId = packet.readD(); + _entryId = packet.readD(); + _amount = packet.readD(); + // _enchantment = packet.readH(); // Commented this line because it did NOT work! _enchantment = _entryId % 100000; _entryId = _entryId / 100000; _transactionTax = 0; // Initialize tax amount to 0... + return true; } @Override - public void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getMultiSell().tryPerformAction("multisell choose")) + if (!client.getFloodProtectors().getMultiSell().tryPerformAction("multisell choose")) { player.setMultiSellId(-1); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/NewCharacter.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/NewCharacter.java index e7999c56a8..90b46cda93 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/NewCharacter.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/NewCharacter.java @@ -16,20 +16,23 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.PlayerTemplateData; import org.l2jmobius.gameserver.enums.ClassId; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharTemplates; -public class NewCharacter extends GameClientPacket +public class NewCharacter implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final CharTemplates ct = new CharTemplates(); PlayerTemplate template = PlayerTemplateData.getInstance().getTemplate(0); @@ -63,6 +66,6 @@ public class NewCharacter extends GameClientPacket ct.addChar(template); // Finally - sendPacket(ct); + client.sendPacket(ct); } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ObserverReturn.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ObserverReturn.java index 9e5ecabb85..c45b66ad65 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ObserverReturn.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ObserverReturn.java @@ -16,19 +16,22 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class ObserverReturn extends GameClientPacket +public class ObserverReturn implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java index d610dc6d9f..e688f4d9d5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java @@ -19,37 +19,40 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.KeyPacket; -public class ProtocolVersion extends GameClientPacket +public class ProtocolVersion implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(ProtocolVersion.class.getName()); private int _version; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _version = readD(); + _version = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if ((_version == 65534) || (_version == -2)) // Ping { - getClient().close((GameServerPacket) null); + // this is just a ping attempt from the new C2 client + client.closeNow(); } else if ((_version < Config.MIN_PROTOCOL_REVISION) || (_version > Config.MAX_PROTOCOL_REVISION)) { - LOGGER.info("Client: " + getClient() + " -> Protocol Revision: " + _version + " is invalid. Minimum is " + Config.MIN_PROTOCOL_REVISION + " and Maximum is " + Config.MAX_PROTOCOL_REVISION + " are supported. Closing connection."); + LOGGER.info("Client: " + client + " -> Protocol Revision: " + _version + " is invalid. Minimum is " + Config.MIN_PROTOCOL_REVISION + " and Maximum is " + Config.MAX_PROTOCOL_REVISION + " are supported. Closing connection."); LOGGER.warning("Wrong Protocol Version " + _version); - getClient().close((GameServerPacket) null); + client.close(new KeyPacket(client.enableCrypt(), 0)); } else { - getClient().setProtocolVersion(_version); - getClient().sendPacket(new KeyPacket(getClient().enableCrypt())); + client.sendPacket(new KeyPacket(client.enableCrypt(), 1)); + client.setProtocolVersion(_version); } } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java index 5b4fc5994a..21f9ae5a0d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Map; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.SkillTable; @@ -39,6 +40,7 @@ import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ChairSit; @@ -46,7 +48,7 @@ import org.l2jmobius.gameserver.network.serverpackets.RecipeShopManageList; import org.l2jmobius.gameserver.network.serverpackets.Ride; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestActionUse extends GameClientPacket +public class RequestActionUse implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestActionUse.class.getName()); @@ -70,17 +72,18 @@ public class RequestActionUse extends GameClientPacket } @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _actionId = readD(); - _ctrlPressed = readD() == 1; - _shiftPressed = readC() == 1; + _actionId = packet.readD(); + _ctrlPressed = packet.readD() == 1; + _shiftPressed = packet.readC() == 1; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -89,14 +92,14 @@ public class RequestActionUse extends GameClientPacket // dont do anything if player is dead if ((_actionId != 0) && player.isAlikeDead()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // don't do anything if player is confused if (player.isOutOfControl()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -107,7 +110,7 @@ public class RequestActionUse extends GameClientPacket } else if (player.isCastingNow()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -332,31 +335,31 @@ public class RequestActionUse extends GameClientPacket } case 32: // Wild Hog Cannon - Mode Change { - useSkill(4230); + useSkill(client, 4230); break; } case 36: // Soulless - Toxic Smoke { - useSkill(4259); + useSkill(client, 4259); break; } case 37: { if (player.isAlikeDead()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open Manufacture when you are in private store if ((player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_BUY) || (player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_SELL)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open Manufacture when you are sitting if (player.isSitting() && (player.getPrivateStoreType() != PlayerInstance.STORE_PRIVATE_MANUFACTURE)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_MANUFACTURE) @@ -376,47 +379,47 @@ public class RequestActionUse extends GameClientPacket } case 39: // Soulless - Parasite Burst { - useSkill(4138); + useSkill(client, 4138); break; } case 41: // Wild Hog Cannon - Attack { - useSkill(4230); + useSkill(client, 4230); break; } case 42: // Kai the Cat - Self Damage Shield { - useSkill(4378, player); + useSkill(client, 4378, player); break; } case 43: // Unicorn Merrow - Hydro Screw { - useSkill(4137); + useSkill(client, 4137); break; } case 44: // Big Boom - Boom Attack { - useSkill(4139); + useSkill(client, 4139); break; } case 45: // Unicorn Boxer - Master Recharge { - useSkill(4025, player); + useSkill(client, 4025, player); break; } case 46: // Mew the Cat - Mega Storm Strike { - useSkill(4261); + useSkill(client, 4261); break; } case 47: // Silhouette - Steal Blood { - useSkill(4260); + useSkill(client, 4260); break; } case 48: // Mechanic Golem - Mech. Cannon { - useSkill(4068); + useSkill(client, 4068); break; } case 51: @@ -424,19 +427,19 @@ public class RequestActionUse extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open Manufacture when you are in private store if ((player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_BUY) || (player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_SELL)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open Manufacture when you are sitting if (player.isSitting() && (player.getPrivateStoreType() != PlayerInstance.STORE_PRIVATE_MANUFACTURE)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_MANUFACTURE) @@ -506,7 +509,7 @@ public class RequestActionUse extends GameClientPacket { if (target instanceof DoorInstance) { - useSkill(4079); + useSkill(client, 4079); } break; } @@ -516,124 +519,124 @@ public class RequestActionUse extends GameClientPacket } case 1003: // Wind Hatchling/Strider - Wild Stun { - useSkill(4710); // TODO use correct skill level based on pet level + useSkill(client, 4710); // TODO use correct skill level based on pet level break; } case 1004: // Wind Hatchling/Strider - Wild Defense { - useSkill(4711, player); // TODO use correct skill level based on pet level + useSkill(client, 4711, player); // TODO use correct skill level based on pet level break; } case 1005: // Star Hatchling/Strider - Bright Burst { - useSkill(4712); // TODO use correct skill level based on pet level + useSkill(client, 4712); // TODO use correct skill level based on pet level break; } case 1006: // Star Hatchling/Strider - Bright Heal { - useSkill(4713, player); // TODO use correct skill level based on pet level + useSkill(client, 4713, player); // TODO use correct skill level based on pet level break; } case 1007: // Cat Queen - Blessing of Queen { - useSkill(4699, player); + useSkill(client, 4699, player); break; } case 1008: // Cat Queen - Gift of Queen { - useSkill(4700, player); + useSkill(client, 4700, player); break; } case 1009: // Cat Queen - Cure of Queen { - useSkill(4701); + useSkill(client, 4701); break; } case 1010: // Unicorn Seraphim - Blessing of Seraphim { - useSkill(4702, player); + useSkill(client, 4702, player); break; } case 1011: // Unicorn Seraphim - Gift of Seraphim { - useSkill(4703, player); + useSkill(client, 4703, player); break; } case 1012: // Unicorn Seraphim - Cure of Seraphim { - useSkill(4704); + useSkill(client, 4704); break; } case 1013: // Nightshade - Curse of Shade { - useSkill(4705); + useSkill(client, 4705); break; } case 1014: // Nightshade - Mass Curse of Shade { - useSkill(4706, player); + useSkill(client, 4706, player); break; } case 1015: // Nightshade - Shade Sacrifice { - useSkill(4707); + useSkill(client, 4707); break; } case 1016: // Cursed Man - Cursed Blow { - useSkill(4709); + useSkill(client, 4709); break; } case 1017: // Cursed Man - Cursed Strike/Stun { - useSkill(4708); + useSkill(client, 4708); break; } case 1031: // Feline King - Slash { - useSkill(5135); + useSkill(client, 5135); break; } case 1032: // Feline King - Spinning Slash { - useSkill(5136); + useSkill(client, 5136); break; } case 1033: // Feline King - Grip of the Cat { - useSkill(5137); + useSkill(client, 5137); break; } case 1034: // Magnus the Unicorn - Whiplash { - useSkill(5138); + useSkill(client, 5138); break; } case 1035: // Magnus the Unicorn - Tridal Wave { - useSkill(5139); + useSkill(client, 5139); break; } case 1036: // Spectral Lord - Corpse Kaboom { - useSkill(5142); + useSkill(client, 5142); break; } case 1037: // Spectral Lord - Dicing Death { - useSkill(5141); + useSkill(client, 5141); break; } case 1038: // Spectral Lord - Force Curse { - useSkill(5140); + useSkill(client, 5140); break; } case 1039: // Swoop Cannon - Cannon Fodder { if (!(target instanceof DoorInstance)) { - useSkill(5110); + useSkill(client, 5110); } break; } @@ -641,7 +644,7 @@ public class RequestActionUse extends GameClientPacket { if (!(target instanceof DoorInstance)) { - useSkill(5111); + useSkill(client, 5111); } break; } @@ -655,9 +658,9 @@ public class RequestActionUse extends GameClientPacket /* * Cast a skill for active pet/servitor. Target is specified as a parameter but can be overwrited or ignored depending on skill type. */ - private void useSkill(int skillId, WorldObject target) + private void useSkill(GameClient client, int skillId, WorldObject target) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -700,14 +703,14 @@ public class RequestActionUse extends GameClientPacket /* * Cast a skill for active pet/servitor. Target is retrieved from owner' target, then validated by overloaded method useSkill(int, Creature). */ - private void useSkill(int skillId) + private void useSkill(GameClient client, int skillId) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - useSkill(skillId, player.getTarget()); + useSkill(client, skillId, player.getTarget()); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyCrest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyCrest.java index 97a3ba9760..1d7243bdb6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyCrest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyCrest.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.AllyCrest; -public class RequestAllyCrest extends GameClientPacket +public class RequestAllyCrest implements IClientIncomingPacket { private int _crestId; @@ -26,14 +28,15 @@ public class RequestAllyCrest extends GameClientPacket * packet type id 0x88 format: cd */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _crestId = readD(); + _crestId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - sendPacket(new AllyCrest(_crestId)); + client.sendPacket(new AllyCrest(_crestId)); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyInfo.java index ecfc18c2b3..d5ed83cf33 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyInfo.java @@ -16,18 +16,21 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.AllyInfo; -public class RequestAllyInfo extends GameClientPacket +public class RequestAllyInfo implements IClientIncomingPacket { @Override - public void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - sendPacket(new AllyInfo(getClient().getPlayer())); + client.sendPacket(new AllyInfo(client.getPlayer())); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerFriendInvite.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerFriendInvite.java index 9fa825ca19..8abc83e844 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerFriendInvite.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerFriendInvite.java @@ -21,7 +21,9 @@ import java.sql.PreparedStatement; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.FriendList; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -29,22 +31,23 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * sample 5F 01 00 00 00 format cdd */ -public class RequestAnswerFriendInvite extends GameClientPacket +public class RequestAnswerFriendInvite implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestAnswerFriendInvite.class.getName()); private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player != null) { final PlayerInstance requestor = player.getActiveRequester(); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinAlly.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinAlly.java index 851c706093..c635ac9e8a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinAlly.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinAlly.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * sample 5F 01 00 00 00 format cdd */ -public class RequestAnswerJoinAlly extends GameClientPacket +public class RequestAnswerJoinAlly implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinParty.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinParty.java index 88dc437de7..63aafdee4f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinParty.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinParty.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExManagePartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.JoinParty; @@ -27,20 +29,21 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * sample 2a 01 00 00 00 format cdd */ -public class RequestAnswerJoinParty extends GameClientPacket +public class RequestAnswerJoinParty implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinPledge.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinPledge.java index 551554cc42..6181abfdcd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinPledge.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinPledge.java @@ -16,8 +16,10 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.JoinPledge; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowInfoUpdate; @@ -25,20 +27,21 @@ import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAdd; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestAnswerJoinPledge extends GameClientPacket +public class RequestAnswerJoinPledge implements IClientIncomingPacket { private int _answer; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _answer = readD(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkill.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkill.java index a65f997010..c85f278ffb 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkill.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkill.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.SkillSpellbookTable; import org.l2jmobius.gameserver.data.sql.SkillTreeTable; @@ -32,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.VillageMasterInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExStorageMaxCount; import org.l2jmobius.gameserver.network.serverpackets.PledgeSkillList; @@ -41,7 +43,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestAquireSkill extends GameClientPacket +public class RequestAquireSkill implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestAquireSkill.class.getName()); @@ -52,17 +54,18 @@ public class RequestAquireSkill extends GameClientPacket private int _skillType; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); - _level = readD(); - _skillType = readD(); + _id = packet.readD(); + _level = packet.readD(); + _skillType = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -188,7 +191,7 @@ public class RequestAquireSkill extends GameClientPacket final SystemMessage sm = new SystemMessage(SystemMessageId.S2_S1_HAS_DISAPPEARED); sm.addNumber(costcount); sm.addItemName(costid); - sendPacket(sm); + player.sendPacket(sm); } else { @@ -243,7 +246,7 @@ public class RequestAquireSkill extends GameClientPacket final SystemMessage sm = new SystemMessage(SystemMessageId.S2_S1_HAS_DISAPPEARED); sm.addItemName(itemId); sm.addNumber(1); - sendPacket(sm); + player.sendPacket(sm); } } else @@ -289,7 +292,7 @@ public class RequestAquireSkill extends GameClientPacket final SystemMessage sp = new SystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1); sp.addNumber(requiredSp); - sendPacket(sp); + player.sendPacket(sp); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_2); sm.addSkillName(_id); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkillInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkillInfo.java index 6d84c33768..3fd71d004e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkillInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkillInfo.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.SkillSpellbookTable; import org.l2jmobius.gameserver.data.sql.SkillTreeTable; @@ -26,26 +27,28 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.AquireSkillInfo; -public class RequestAquireSkillInfo extends GameClientPacket +public class RequestAquireSkillInfo implements IClientIncomingPacket { private int _id; private int _level; private int _skillType; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); - _level = readD(); - _skillType = readD(); + _id = packet.readD(); + _level = packet.readD(); + _skillType = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -108,7 +111,7 @@ public class RequestAquireSkillInfo extends GameClientPacket asi.addRequirement(99, spbId, 1, 50); } - sendPacket(asi); + player.sendPacket(asi); } else if (_skillType == 2) { @@ -136,7 +139,7 @@ public class RequestAquireSkillInfo extends GameClientPacket { asi.addRequirement(1, itemId, 1, 0); } - sendPacket(asi); + player.sendPacket(asi); } else // Common Skills @@ -162,7 +165,7 @@ public class RequestAquireSkillInfo extends GameClientPacket final AquireSkillInfo asi = new AquireSkillInfo(skill.getId(), skill.getLevel(), spcost, 1); asi.addRequirement(4, costid, costcount, 0); - sendPacket(asi); + player.sendPacket(asi); } } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAskJoinPartyRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAskJoinPartyRoom.java index bcf1d764ef..18db0da103 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAskJoinPartyRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAskJoinPartyRoom.java @@ -16,8 +16,10 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskJoinPartyRoom; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -26,20 +28,21 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (ch) S * @author -Wooden- */ -public class RequestAskJoinPartyRoom extends GameClientPacket +public class RequestAskJoinPartyRoom implements IClientIncomingPacket { private static String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAutoSoulShot.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAutoSoulShot.java index 24b9e9cfbe..5e176387c3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAutoSoulShot.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestAutoSoulShot.java @@ -19,13 +19,15 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAutoSoulShot; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestAutoSoulShot extends GameClientPacket +public class RequestAutoSoulShot implements IClientIncomingPacket { // format cd private int _itemId; @@ -57,16 +59,17 @@ public class RequestAutoSoulShot extends GameClientPacket } @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _itemId = readD(); - _type = readD(); + _itemId = packet.readD(); + _type = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBBSwrite.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBBSwrite.java index c568277509..65aa0190bb 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBBSwrite.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBBSwrite.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.communitybbs.CommunityBoard; +import org.l2jmobius.gameserver.network.GameClient; /** * Format SSSSSS * @author -Wooden- */ -public class RequestBBSwrite extends GameClientPacket +public class RequestBBSwrite implements IClientIncomingPacket { private String _url; private String _arg1; @@ -32,19 +34,20 @@ public class RequestBBSwrite extends GameClientPacket private String _arg5; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _url = readS(); - _arg1 = readS(); - _arg2 = readS(); - _arg3 = readS(); - _arg4 = readS(); - _arg5 = readS(); + _url = packet.readS(); + _arg1 = packet.readS(); + _arg2 = packet.readS(); + _arg3 = packet.readS(); + _arg4 = packet.readS(); + _arg5 = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - CommunityBoard.getInstance().handleWriteCommands(getClient(), _url, _arg1, _arg2, _arg3, _arg4, _arg5); + CommunityBoard.getInstance().handleWriteCommands(client, _url, _arg1, _arg2, _arg3, _arg4, _arg5); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBlock.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBlock.java index 8b276d45dd..c13f13f56c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBlock.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBlock.java @@ -18,12 +18,14 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestBlock extends GameClientPacket +public class RequestBlock implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestBlock.class.getName()); @@ -37,19 +39,20 @@ public class RequestBlock extends GameClientPacket private int _type; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _type = readD(); // 0x00 - block, 0x01 - unblock, 0x03 - allblock, 0x04 - allunblock + _type = packet.readD(); // 0x00 - block, 0x01 - unblock, 0x03 - allblock, 0x04 - allunblock if ((_type == BLOCK) || (_type == UNBLOCK)) { - _name = readS(); + _name = packet.readS(); } + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyItem.java index 210ff0dd2c..c95386dae3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyItem.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.TradeController; import org.l2jmobius.gameserver.cache.HtmCache; import org.l2jmobius.gameserver.data.ItemTable; @@ -33,6 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.MerchantInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ItemList; @@ -44,7 +46,7 @@ import org.l2jmobius.gameserver.util.Util; /** * @version $Revision: 1.12.4.4 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestBuyItem extends GameClientPacket +public class RequestBuyItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestBuyItem.class.getName()); @@ -53,12 +55,12 @@ public class RequestBuyItem extends GameClientPacket private int[] _items; // count*2 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _listId = readD(); - _count = readD(); + _listId = packet.readD(); + _count = packet.readD(); // count*8 is the size of a for iteration of each item - if (((_count * 2) < 0) || (_count > Config.MAX_ITEM_IN_PACKET) || ((_count * 8) > _buf.remaining())) + if (((_count * 2) < 0) || (_count > Config.MAX_ITEM_IN_PACKET) || ((_count * 8) > packet.getReadableBytes())) { _count = 0; } @@ -66,40 +68,42 @@ public class RequestBuyItem extends GameClientPacket _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); if (itemId < 1) { _count = 0; - return; + return false; } _items[(i * 2) + 0] = itemId; - final int count = readD(); + final int count = packet.readD(); if ((count > Integer.MAX_VALUE) || (count < 1)) { _count = 0; - return; + return false; } if (count > 10000) // Count check. { - getClient().getPlayer().sendMessage("You cannot buy more than 10.000 items."); + client.getPlayer().sendMessage("You cannot buy more than 10.000 items."); _count = 0; - return; + return false; } _items[(i * 2) + 1] = count; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("buy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("buy")) { player.sendMessage("You buying too fast."); return; @@ -203,13 +207,13 @@ public class RequestBuyItem extends GameClientPacket _listId = list.getListId(); if ((_listId > 1000000) && (merchant != null) && (merchant.getTemplate().getNpcId() != (_listId - 1000000))) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (_count < 1) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -246,7 +250,7 @@ public class RequestBuyItem extends GameClientPacket if ((count > Integer.MAX_VALUE) || (!template.isStackable() && (count > 1))) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase invalid quantity of items at the same time.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } @@ -263,7 +267,7 @@ public class RequestBuyItem extends GameClientPacket if (price < 0) { LOGGER.warning("ERROR, no price found .. wrong buylist ??"); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -281,7 +285,7 @@ public class RequestBuyItem extends GameClientPacket if ((subTotal + tax) > Integer.MAX_VALUE) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " adena worth of goods.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } @@ -338,7 +342,7 @@ public class RequestBuyItem extends GameClientPacket if (list.countDecrease(itemId) && !list.decreaseCount(itemId, count)) { - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } // Add item to Inventory and adjust update packet diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java index cbe235d1e7..a14013f991 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; @@ -28,6 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.ManorManagerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -36,7 +38,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; @SuppressWarnings("unused") -public class RequestBuyProcure extends GameClientPacket +public class RequestBuyProcure implements IClientIncomingPacket { private int _listId; private int _count; @@ -44,49 +46,51 @@ public class RequestBuyProcure extends GameClientPacket private List _procureList = new ArrayList<>(); @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _listId = readD(); - _count = readD(); + _listId = packet.readD(); + _count = packet.readD(); if (_count > 500) // protect server { _count = 0; - return; + return false; } if (_count < 0) // protect server { _count = 0; - return; + return false; } _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final long servise = readD(); - final int itemId = readD(); + final long servise = packet.readD(); + final int itemId = packet.readD(); _items[(i * 2) + 0] = itemId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 1)) { _count = 0; - return; + return false; } _items[(i * 2) + 1] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getManor().tryPerformAction("BuyProcure")) + if (!client.getFloodProtectors().getManor().tryPerformAction("BuyProcure")) { return; } @@ -99,7 +103,7 @@ public class RequestBuyProcure extends GameClientPacket if (_count < 1) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -123,7 +127,7 @@ public class RequestBuyProcure extends GameClientPacket if (count > Integer.MAX_VALUE) { Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " items at the same time.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuySeed.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuySeed.java index 8b60c7ebfd..37dfe56d0b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuySeed.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuySeed.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; @@ -27,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -38,60 +40,62 @@ import org.l2jmobius.gameserver.util.Util; * Format: cdd[dd] c // id (0xC4) d // manor id d // seeds to buy [ d // seed id d // count ] * @author l3x */ -public class RequestBuySeed extends GameClientPacket +public class RequestBuySeed implements IClientIncomingPacket { private int _count; private int _manorId; private int[] _items; // size _count * 2 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _manorId = readD(); - _count = readD(); - if ((_count > 500) || ((_count * 8) < _buf.remaining()) || (_count < 1)) // check values + _manorId = packet.readD(); + _count = packet.readD(); + if ((_count > 500) || ((_count * 8) < packet.getReadableBytes()) || (_count < 1)) // check values { _count = 0; - return; + return false; } _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 2) + 0] = itemId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 1)) { _count = 0; - return; + return false; } _items[(i * 2) + 1] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { long totalPrice = 0; int slots = 0; int totalWeight = 0; - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getManor().tryPerformAction("BuySeed")) + if (!client.getFloodProtectors().getManor().tryPerformAction("BuySeed")) { return; } if (_count < 1) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index 260595177d..4cbb5d4f02 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.communitybbs.CommunityBoard; import org.l2jmobius.gameserver.data.xml.AdminData; @@ -38,11 +39,12 @@ import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SymbolMakerInstance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.util.GMAudit; -public class RequestBypassToServer extends GameClientPacket +public class RequestBypassToServer implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestBypassToServer.class.getName()); @@ -50,21 +52,22 @@ public class RequestBypassToServer extends GameClientPacket private String _command; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _command = readS(); + _command = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getServerBypass().tryPerformAction(_command)) + if (!client.getFloodProtectors().getServerBypass().tryPerformAction(_command)) { return; } @@ -299,7 +302,7 @@ public class RequestBypassToServer extends GameClientPacket } else if (_command.startsWith("bbs_") || _command.startsWith("_bbs") || _command.startsWith("_friend") || _command.startsWith("_mail") || _command.startsWith("_block")) { - CommunityBoard.getInstance().handleCommands(getClient(), _command); + CommunityBoard.getInstance().handleCommands(client, _command); } else if (_command.startsWith("Quest ")) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePartyLeader.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePartyLeader.java index e51704e5d0..07251cb62a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePartyLeader.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePartyLeader.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; /** * @version $Revision: 1.3.4.2 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestChangePartyLeader extends GameClientPacket +public class RequestChangePartyLeader implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePetName.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePetName.java index 70092aa7d9..140b02be2b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePetName.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePetName.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.PetNameTable; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.PetInfo; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestChangePetName extends GameClientPacket +public class RequestChangePetName implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmSiegeWaitingList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmSiegeWaitingList.java index 04aa4b0b6b..8c2715d290 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmSiegeWaitingList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmSiegeWaitingList.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SiegeDefenderList; -public class RequestConfirmSiegeWaitingList extends GameClientPacket +public class RequestConfirmSiegeWaitingList implements IClientIncomingPacket { private int _approved; private int _castleId; private int _clanId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _castleId = readD(); - _clanId = readD(); - _approved = readD(); + _castleId = packet.readD(); + _clanId = packet.readD(); + _approved = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestCrystallizeItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestCrystallizeItem.java index 326e8e7a28..f1509e9086 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestCrystallizeItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestCrystallizeItem.java @@ -19,12 +19,14 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.PlayerInventory; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -34,7 +36,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestCrystallizeItem extends GameClientPacket +public class RequestCrystallizeItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestCrystallizeItem.class.getName()); @@ -42,23 +44,24 @@ public class RequestCrystallizeItem extends GameClientPacket private int _count; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _count = readD(); + _objectId = packet.readD(); + _count = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { LOGGER.warning("RequestCrystalizeItem: activeChar was null"); return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("crystallize")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("crystallize")) { player.sendMessage("You crystallizing too fast."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDeleteMacro.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDeleteMacro.java index c3434ca67b..d1ea421abe 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDeleteMacro.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDeleteMacro.java @@ -16,30 +16,36 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -public class RequestDeleteMacro extends GameClientPacket +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; + +public class RequestDeleteMacro implements IClientIncomingPacket { private int _id; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); + _id = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (getClient().getPlayer() == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } // Macro exploit fix - if (!getClient().getFloodProtectors().getMacro().tryPerformAction("delete macro")) + if (!client.getFloodProtectors().getMacro().tryPerformAction("delete macro")) { return; } - getClient().getPlayer().deleteMacro(_id); + player.deleteMacro(_id); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDestroyItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDestroyItem.java index 6221af5d31..0be2afa0e5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDestroyItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDestroyItem.java @@ -22,16 +22,18 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.PetDataTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; import org.l2jmobius.gameserver.util.Util; -public class RequestDestroyItem extends GameClientPacket +public class RequestDestroyItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestDestroyItem.class.getName()); @@ -39,16 +41,17 @@ public class RequestDestroyItem extends GameClientPacket private int _count; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _count = readD(); + _objectId = packet.readD(); + _count = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -63,7 +66,7 @@ public class RequestDestroyItem extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("destroy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("destroy")) { player.sendMessage("You destroying items too fast."); return; @@ -167,7 +170,7 @@ public class RequestDestroyItem extends GameClientPacket } else { - sendPacket(new ItemList(player, true)); + player.sendPacket(new ItemList(player, true)); } final StatusUpdate su = new StatusUpdate(player.getObjectId()); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissAlly.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissAlly.java index 5cd01f842e..42a2df50d0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissAlly.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissAlly.java @@ -16,21 +16,23 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestDismissAlly extends GameClientPacket +public class RequestDismissAlly implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger packet + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissPartyRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissPartyRoom.java index 35f2f36cbb..f55ca1bac4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissPartyRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissPartyRoom.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) dd * @author -Wooden- */ -public class RequestDismissPartyRoom extends GameClientPacket +public class RequestDismissPartyRoom implements IClientIncomingPacket { private int _roomid; @SuppressWarnings("unused") private int _data2; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _roomid = readD(); - _data2 = readD(); + _roomid = packet.readD(); + _data2 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java index 69a977d803..faf962f5b5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java @@ -19,12 +19,14 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.holders.SkillUseHolder; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.EtcItemType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -33,7 +35,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestDropItem extends GameClientPacket +public class RequestDropItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestDropItem.class.getName()); @@ -44,19 +46,20 @@ public class RequestDropItem extends GameClientPacket private int _z; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _count = readD(); - _x = readD(); - _y = readD(); - _z = readD(); + _objectId = packet.readD(); + _count = packet.readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || player.isDead()) { return; @@ -64,19 +67,19 @@ public class RequestDropItem extends GameClientPacket if (player.isGM() && (player.getAccessLevel().getLevel() < 80)) { // just head GM and admin can drop items on the ground - sendPacket(SystemMessage.sendString("You have not right to discard anything from inventory.")); + player.sendPacket(SystemMessage.sendString("You have not right to discard anything from inventory.")); return; } // Fix against safe enchant exploit if (player.getActiveEnchantItem() != null) { - sendPacket(SystemMessage.sendString("You can't discard items during enchant.")); + player.sendPacket(SystemMessage.sendString("You can't discard items during enchant.")); return; } // Flood protect drop to avoid packet lag - if (!getClient().getFloodProtectors().getDropItem().tryPerformAction("drop item")) + if (!client.getFloodProtectors().getDropItem().tryPerformAction("drop item")) { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 0178fcc0a1..3b5c025f1c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.model.World; @@ -26,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.WeaponType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.EnchantResult; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -35,7 +37,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestEnchantItem extends GameClientPacket +public class RequestEnchantItem implements IClientIncomingPacket { protected static final Logger LOGGER = Logger.getLogger(RequestEnchantItem.class.getName()); @@ -110,15 +112,16 @@ public class RequestEnchantItem extends GameClientPacket private int _objectId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (_objectId == 0)) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestEvaluate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestEvaluate.java index 4f14c02370..6c82b17e5a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestEvaluate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestEvaluate.java @@ -17,27 +17,30 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; -public class RequestEvaluate extends GameClientPacket +public class RequestEvaluate implements IClientIncomingPacket { @SuppressWarnings("unused") private int _targetId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetId = readD(); + _targetId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { SystemMessage sm; - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAcceptJoinMPCC.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAcceptJoinMPCC.java index cd58d871f9..1e40c60b8f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAcceptJoinMPCC.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAcceptJoinMPCC.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CommandChannel; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * @author -Wooden- */ -public class RequestExAcceptJoinMPCC extends GameClientPacket +public class RequestExAcceptJoinMPCC implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAskJoinMPCC.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAskJoinMPCC.java index c8de53bda6..49e85ff1e9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAskJoinMPCC.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAskJoinMPCC.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskJoinMPCC; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -28,20 +30,21 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (ch) S * @author chris_00 D0 0D 00 5A 00 77 00 65 00 72 00 67 00 00 00 */ -public class RequestExAskJoinMPCC extends GameClientPacket +public class RequestExAskJoinMPCC implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkill.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkill.java index 0095037326..1c87f038b5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkill.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkill.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.SkillTreeTable; @@ -28,6 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; @@ -40,22 +42,23 @@ import org.l2jmobius.gameserver.util.Util; * Format chdd c: (id) 0xD0 h: (subid) 0x06 d: skill id d: skill level * @author -Wooden- */ -public class RequestExEnchantSkill extends GameClientPacket +public class RequestExEnchantSkill implements IClientIncomingPacket { private int _skillId; private int _skillLevel; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _skillId = readD(); - _skillLevel = readD(); + _skillId = packet.readD(); + _skillLevel = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -159,11 +162,11 @@ public class RequestExEnchantSkill extends GameClientPacket final SystemMessage ep = new SystemMessage(SystemMessageId.YOUR_EXPERIENCE_HAS_DECREASED_BY_S1); ep.addNumber(requiredExp); - sendPacket(ep); + player.sendPacket(ep); final SystemMessage sp = new SystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1); sp.addNumber(requiredSp); - sendPacket(sp); + player.sendPacket(sp); final SystemMessage sm = new SystemMessage(SystemMessageId.SKILL_ENCHANT_WAS_SUCCESSFUL_S1_HAS_BEEN_ENCHANTED); sm.addSkillName(_skillId); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkillInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkillInfo.java index aa3f8143d3..fd45fbd2a5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkillInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkillInfo.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.SkillTreeTable; import org.l2jmobius.gameserver.model.EnchantSkillLearn; @@ -24,33 +25,35 @@ import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExEnchantSkillInfo; /** * Format chdd c: (id) 0xD0 h: (subid) 0x06 d: skill id d: skill level * @author -Wooden- */ -public class RequestExEnchantSkillInfo extends GameClientPacket +public class RequestExEnchantSkillInfo implements IClientIncomingPacket { private int _skillId; private int _skillLevel; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _skillId = readD(); - _skillLevel = readD(); + _skillId = packet.readD(); + _skillLevel = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if ((_skillId <= 0) || (_skillLevel <= 0)) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -109,6 +112,6 @@ public class RequestExEnchantSkillInfo extends GameClientPacket final int spbId = 6622; asi.addRequirement(4, spbId, 1, 0); } - sendPacket(asi); + player.sendPacket(asi); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMPCCShowPartyMembersInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMPCCShowPartyMembersInfo.java index 644f7b89f2..d159eee05d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMPCCShowPartyMembersInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMPCCShowPartyMembersInfo.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExMPCCShowPartyMemberInfo; /** * Format:(ch) h * @author -Wooden- */ -public class RequestExMPCCShowPartyMembersInfo extends GameClientPacket +public class RequestExMPCCShowPartyMembersInfo implements IClientIncomingPacket { private int _partyLeaderId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _partyLeaderId = readD(); + _partyLeaderId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java index 8d75259ce2..b761f19215 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java @@ -16,17 +16,19 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; /** * Fromat:(ch) dddddc */ -public class RequestExMagicSkillUseGround extends GameClientPacket +public class RequestExMagicSkillUseGround implements IClientIncomingPacket { private int _x; private int _y; @@ -36,20 +38,21 @@ public class RequestExMagicSkillUseGround extends GameClientPacket private boolean _shiftPressed; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _x = readD(); - _y = readD(); - _z = readD(); - _skillId = readD(); - _ctrlPressed = readD() != 0; - _shiftPressed = readC() != 0; + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + _skillId = packet.readD(); + _ctrlPressed = packet.readD() != 0; + _shiftPressed = packet.readC() != 0; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -59,7 +62,7 @@ public class RequestExMagicSkillUseGround extends GameClientPacket final int level = player.getSkillLevel(_skillId); if (level <= 0) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -79,7 +82,7 @@ public class RequestExMagicSkillUseGround extends GameClientPacket } else { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); } } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExOustFromMPCC.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExOustFromMPCC.java index 83e8c86869..8a2d83581e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExOustFromMPCC.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExOustFromMPCC.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * @author -Wooden- D0 0F 00 5A 00 77 00 65 00 72 00 67 00 00 00 */ -public class RequestExOustFromMPCC extends GameClientPacket +public class RequestExOustFromMPCC implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final PlayerInstance target = World.getInstance().getPlayer(_name); - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((target != null) && target.isInParty() && player.isInParty() && player.getParty().isInCommandChannel() && target.getParty().isInCommandChannel() && player.getParty().getCommandChannel().getChannelLeader().equals(player)) { target.getParty().getCommandChannel().removeParty(target.getParty()); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExPledgeCrestLarge.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExPledgeCrestLarge.java index 00cd74cb6c..9c9c5ee1f6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExPledgeCrestLarge.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExPledgeCrestLarge.java @@ -16,30 +16,33 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.cache.CrestCache; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExPledgeCrestLarge; /** * Fomat : chd c: (id) 0xD0 h: (subid) 0x10 d: the crest id This is a trigger * @author -Wooden- */ -public class RequestExPledgeCrestLarge extends GameClientPacket +public class RequestExPledgeCrestLarge implements IClientIncomingPacket { private int _crestId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _crestId = readD(); + _crestId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final byte[] data = CrestCache.getInstance().getPledgeCrestLarge(_crestId); if (data != null) { - sendPacket(new ExPledgeCrestLarge(_crestId, data)); + client.sendPacket(new ExPledgeCrestLarge(_crestId, data)); } } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExSetPledgeCrestLarge.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExSetPledgeCrestLarge.java index 70d16b2268..51970365da 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExSetPledgeCrestLarge.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExSetPledgeCrestLarge.java @@ -22,42 +22,46 @@ import java.sql.SQLException; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.cache.CrestCache; import org.l2jmobius.gameserver.instancemanager.IdManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * Format : chdb c (id) 0xD0 h (subid) 0x11 d data size b raw data (picture i think ;) ) * @author -Wooden- */ -public class RequestExSetPledgeCrestLarge extends GameClientPacket +public class RequestExSetPledgeCrestLarge implements IClientIncomingPacket { - static Logger LOGGER = Logger.getLogger(RequestExSetPledgeCrestLarge.class.getName()); + private final static Logger LOGGER = Logger.getLogger(RequestExSetPledgeCrestLarge.class.getName()); + private int _size; private byte[] _data; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _size = readD(); + _size = packet.readD(); if (_size > 2176) { - return; + return false; } if (_size > 0) // client CAN send a RequestExSetPledgeCrestLarge with the size set to 0 then format is just chd { - _data = new byte[_size]; - readB(_data); + _data = packet.readB(_size); } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExitPartyMatchingWaitingRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExitPartyMatchingWaitingRoom.java index 691665d17b..7b55dab5d4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExitPartyMatchingWaitingRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestExitPartyMatchingWaitingRoom.java @@ -16,25 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) this is just a trigger : no data * @author -Wooden- */ -public class RequestExitPartyMatchingWaitingRoom extends GameClientPacket +public class RequestExitPartyMatchingWaitingRoom implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendDel.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendDel.java index 48b2233fad..36d107e4bc 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendDel.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendDel.java @@ -21,29 +21,32 @@ import java.sql.PreparedStatement; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.FriendList; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestFriendDel extends GameClientPacket +public class RequestFriendDel implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestFriendDel.class.getName()); private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendInvite.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendInvite.java index 0b8df2ee74..b533d964d0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendInvite.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendInvite.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.AskJoinFriend; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestFriendInvite extends GameClientPacket +public class RequestFriendInvite implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendList.java index 7833085b08..38b7eeb7d7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendList.java @@ -16,24 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestFriendList extends GameClientPacket +public class RequestFriendList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGMCommand.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGMCommand.java index 9bd053cc02..d924f190ab 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGMCommand.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGMCommand.java @@ -16,10 +16,10 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.GMViewCharacterInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewHennaInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewItemList; @@ -28,28 +28,27 @@ import org.l2jmobius.gameserver.network.serverpackets.GMViewQuestList; import org.l2jmobius.gameserver.network.serverpackets.GMViewSkillInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewWarehouseWithdrawList; -public class RequestGMCommand extends GameClientPacket +public class RequestGMCommand implements IClientIncomingPacket { - static Logger LOGGER = Logger.getLogger(RequestGMCommand.class.getName()); - private String _targetName; private int _command; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetName = readS(); - _command = readD(); - // _unknown = readD(); + _targetName = packet.readS(); + _command = packet.readD(); + // _unknown = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final PlayerInstance player = World.getInstance().getPlayer(_targetName); // prevent non GM or low level GMs from vieweing player stuff - if ((player == null) || !getClient().getPlayer().getAccessLevel().allowAltG()) + if ((player == null) || !player.getAccessLevel().allowAltG()) { return; } @@ -58,38 +57,38 @@ public class RequestGMCommand extends GameClientPacket { case 1: // player status { - sendPacket(new GMViewCharacterInfo(player)); - sendPacket(new GMViewHennaInfo(player)); + player.sendPacket(new GMViewCharacterInfo(player)); + player.sendPacket(new GMViewHennaInfo(player)); break; } case 2: // player clan { if (player.getClan() != null) { - sendPacket(new GMViewPledgeInfo(player.getClan(), player)); + player.sendPacket(new GMViewPledgeInfo(player.getClan(), player)); } break; } case 3: // player skills { - sendPacket(new GMViewSkillInfo(player)); + player.sendPacket(new GMViewSkillInfo(player)); break; } case 4: // player quests { - sendPacket(new GMViewQuestList(player)); + player.sendPacket(new GMViewQuestList(player)); break; } case 5: // player inventory { - sendPacket(new GMViewItemList(player)); - sendPacket(new GMViewHennaInfo(player)); + player.sendPacket(new GMViewItemList(player)); + player.sendPacket(new GMViewHennaInfo(player)); break; } case 6: // player warehouse { // GM warehouse view to be implemented - sendPacket(new GMViewWarehouseWithdrawList(player)); + player.sendPacket(new GMViewWarehouseWithdrawList(player)); break; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetBossRecord.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetBossRecord.java index 6bbd49940b..f79c29ab20 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetBossRecord.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetBossRecord.java @@ -16,8 +16,10 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.RaidBossPointsManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ExGetBossRecord; @@ -25,21 +27,22 @@ import org.l2jmobius.gameserver.network.serverpackets.ExGetBossRecord; * Format: (ch) d * @author -Wooden- */ -public class RequestGetBossRecord extends GameClientPacket +public class RequestGetBossRecord implements IClientIncomingPacket { @SuppressWarnings("unused") private int _bossId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _bossId = readD(); + _bossId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -50,6 +53,6 @@ public class RequestGetBossRecord extends GameClientPacket // trigger packet player.sendPacket(new ExGetBossRecord(ranking, points, RaidBossPointsManager.getList(player))); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java index ea0895553d..eb4c2036c7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java @@ -19,15 +19,17 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestGetItemFromPet extends GameClientPacket +public class RequestGetItemFromPet implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestGetItemFromPet.class.getName()); @@ -37,23 +39,24 @@ public class RequestGetItemFromPet extends GameClientPacket private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _amount = readD(); - _unknown = readD(); // = 0 for most trades + _objectId = packet.readD(); + _amount = packet.readD(); + _unknown = packet.readD(); // = 0 for most trades + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (player.getPet() == null) || !(player.getPet() instanceof PetInstance)) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("getfrompet")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("getfrompet")) { player.sendMessage("You get items from pet too fast."); return; @@ -80,7 +83,7 @@ public class RequestGetItemFromPet extends GameClientPacket if (player.calculateDistanceSq3D(pet) > 40000) // 200*200 { player.sendPacket(SystemMessageId.YOUR_TARGET_IS_OUT_OF_RANGE); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOffVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOffVehicle.java index 920066cd9d..7b91b46f3c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOffVehicle.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOffVehicle.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.GetOffVehicle; /** * @author Maktakien */ -public class RequestGetOffVehicle extends GameClientPacket +public class RequestGetOffVehicle implements IClientIncomingPacket { private int _boatId; private int _x; @@ -30,18 +32,19 @@ public class RequestGetOffVehicle extends GameClientPacket private int _z; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _boatId = readD(); - _x = readD(); - _y = readD(); - _z = readD(); + _boatId = packet.readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOnVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOnVehicle.java index facd5268fe..4f7c4a26c2 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOnVehicle.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOnVehicle.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.BoatData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.GetOnVehicle; -public class RequestGetOnVehicle extends GameClientPacket +public class RequestGetOnVehicle implements IClientIncomingPacket { private int _boatId; private int _x; @@ -30,18 +32,19 @@ public class RequestGetOnVehicle extends GameClientPacket private int _z; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _boatId = readD(); - _x = readD(); - _y = readD(); - _z = readD(); + _boatId = packet.readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveItemToPet.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveItemToPet.java index 2ce7823d80..c77034add1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveItemToPet.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveItemToPet.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestGiveItemToPet extends GameClientPacket +public class RequestGiveItemToPet implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestGiveItemToPet.class.getName()); @@ -34,22 +36,23 @@ public class RequestGiveItemToPet extends GameClientPacket private int _amount; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _amount = readD(); + _objectId = packet.readD(); + _amount = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || !(player.getPet() instanceof PetInstance)) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("giveitemtopet")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("giveitemtopet")) { player.sendMessage("You give items to pet too fast."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveNickName.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveNickName.java index 86d1c66133..05fd0ab47a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveNickName.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveNickName.java @@ -16,32 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestGiveNickName extends GameClientPacket +public class RequestGiveNickName implements IClientIncomingPacket { - static Logger LOGGER = Logger.getLogger(RequestGiveNickName.class.getName()); - private String _target; private String _title; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _target = readS(); - _title = readS(); + _target = packet.readS(); + _title = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java index e57eb5d094..ff23e58a86 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java @@ -16,26 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; /** * This class handles RequestGmLista packet triggered by /gmlist command */ -public class RequestGmList extends GameClientPacket +public class RequestGmList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (getClient().getPlayer() == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - AdminData.getInstance().sendListToPlayer(getClient().getPlayer()); + AdminData.getInstance().sendListToPlayer(player); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaEquip.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaEquip.java index f5ac5f50b6..e97d9c370d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaEquip.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaEquip.java @@ -16,26 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.HennaData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestHennaEquip extends GameClientPacket +public class RequestHennaEquip implements IClientIncomingPacket { private int _symbolId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _symbolId = readD(); + _symbolId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemInfo.java index d3f688ebbd..f050b71321 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemInfo.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.HennaData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.HennaItemInfo; -public class RequestHennaItemInfo extends GameClientPacket +public class RequestHennaItemInfo implements IClientIncomingPacket { private int _symbolId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _symbolId = readD(); + _symbolId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemRemoveInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemRemoveInfo.java index 71f5971e39..96f787d441 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemRemoveInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemRemoveInfo.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.HennaData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.HennaItemRemoveInfo; -public final class RequestHennaItemRemoveInfo extends GameClientPacket +public final class RequestHennaItemRemoveInfo implements IClientIncomingPacket { private int _symbolId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _symbolId = readD(); + _symbolId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaList.java index 4ec0127511..d1cbd2b8ca 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaList.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.HennaData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.HennaEquipList; -public class RequestHennaList extends GameClientPacket +public class RequestHennaList implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unknown = readD(); // ?? + _unknown = packet.readD(); // ?? + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemove.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemove.java index 6cb8aba529..acbd8e5a11 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemove.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemove.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * format cd */ -public final class RequestHennaRemove extends GameClientPacket +public final class RequestHennaRemove implements IClientIncomingPacket { private int _symbolId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _symbolId = readD(); + _symbolId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemoveList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemoveList.java index c6ca26edf9..1b1db92920 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemoveList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemoveList.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.HennaRemoveList; /** * @author Tempy */ -public final class RequestHennaRemoveList extends GameClientPacket +public final class RequestHennaRemoveList implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unknown = readD(); // ?? + _unknown = packet.readD(); // ?? + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestItemList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestItemList.java index ffdedc61fa..6a424b1f2e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestItemList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestItemList.java @@ -16,22 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ItemList; -public class RequestItemList extends GameClientPacket +public class RequestItemList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if ((getClient() != null) && (getClient().getPlayer() != null) && !getClient().getPlayer().isInvetoryDisabled()) + final PlayerInstance player = client.getPlayer(); + if (player == null) { - sendPacket(new ItemList(getClient().getPlayer(), true)); + return; + } + + if (!player.isInvetoryDisabled()) + { + player.sendPacket(new ItemList(player, true)); } } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinAlly.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinAlly.java index 10bc864ab7..a7bbaf71dd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinAlly.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinAlly.java @@ -16,33 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.AskJoinAlly; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestJoinAlly extends GameClientPacket +public class RequestJoinAlly implements IClientIncomingPacket { private int _id; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); + _id = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!(World.getInstance().findObject(_id) instanceof PlayerInstance)) + final PlayerInstance ob = World.getInstance().getPlayer(_id); + if (ob == null) { player.sendPacket(SystemMessageId.YOU_HAVE_INVITED_THE_WRONG_TARGET); return; @@ -54,13 +58,12 @@ public class RequestJoinAlly extends GameClientPacket return; } - final PlayerInstance target = (PlayerInstance) World.getInstance().findObject(_id); + final PlayerInstance target = ob; final Clan clan = player.getClan(); if (!clan.checkAllyJoinCondition(player, target)) { return; } - if (!player.getRequest().setRequest(target, this)) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 9977b3a510..c3201ef5ea 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.events.CTF; import org.l2jmobius.gameserver.instancemanager.events.DM; import org.l2jmobius.gameserver.instancemanager.events.TvT; @@ -23,33 +24,35 @@ import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.AskJoinParty; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestJoinParty extends GameClientPacket +public class RequestJoinParty implements IClientIncomingPacket { private String _name; private int _itemDistribution; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); - _itemDistribution = readD(); + _name = packet.readS(); + _itemDistribution = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance requestor = getClient().getPlayer(); + final PlayerInstance requestor = client.getPlayer(); final PlayerInstance target = World.getInstance().getPlayer(_name); if (requestor == null) { return; } - if (!getClient().getFloodProtectors().getPartyInvitation().tryPerformAction("PartyInvitation")) + if (!client.getFloodProtectors().getPartyInvitation().tryPerformAction("PartyInvitation")) { requestor.sendMessage("You Cannot Invite into Party So Fast!"); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinPledge.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinPledge.java index 3742e13586..2bbb92617c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinPledge.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinPledge.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.AskJoinPledge; -public class RequestJoinPledge extends GameClientPacket +public class RequestJoinPledge implements IClientIncomingPacket { private int _target; // private int _pledgeType; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _target = readD(); - // _pledgeType = readD(); + _target = packet.readD(); + // _pledgeType = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinSiege.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinSiege.java index b5cc782e11..c372edf26e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinSiege.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinSiege.java @@ -16,35 +16,38 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * @author KenM */ -public class RequestJoinSiege extends GameClientPacket +public class RequestJoinSiege implements IClientIncomingPacket { private int _castleId; private int _isAttacker; private int _isJoining; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _castleId = readD(); - _isAttacker = readD(); - _isJoining = readD(); + _castleId = packet.readD(); + _isAttacker = packet.readD(); + _isJoining = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestLinkHtml.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestLinkHtml.java index edd65f5bce..22ea0174b7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestLinkHtml.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestLinkHtml.java @@ -18,28 +18,32 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author zabbix Lets drink to code! */ -public class RequestLinkHtml extends GameClientPacket +public class RequestLinkHtml implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestLinkHtml.class.getName()); + private String _link; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _link = readS(); + _link = packet.readS(); + return true; } @Override - public void runImpl() + public void run(GameClient client) { - final PlayerInstance actor = getClient().getPlayer(); - if (actor == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } @@ -50,7 +54,7 @@ public class RequestLinkHtml extends GameClientPacket return; } - if (!actor.validateLink(_link)) + if (!player.validateLink(_link)) { return; } @@ -58,6 +62,6 @@ public class RequestLinkHtml extends GameClientPacket final NpcHtmlMessage msg = new NpcHtmlMessage(0); msg.setFile(_link); - sendPacket(msg); + player.sendPacket(msg); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestListPartyMatchingWaitingRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestListPartyMatchingWaitingRoom.java index 5927b28aae..d07e7ae1c0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestListPartyMatchingWaitingRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestListPartyMatchingWaitingRoom.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExListPartyMatchingWaitingRoom; /** * @author Gnacik */ -public class RequestListPartyMatchingWaitingRoom extends GameClientPacket +public class RequestListPartyMatchingWaitingRoom implements IClientIncomingPacket { private static int _page; private static int _minLevel; @@ -30,18 +32,19 @@ public class RequestListPartyMatchingWaitingRoom extends GameClientPacket private static int _mode; // 1 - waitlist 0 - room waitlist @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _page = readD(); - _minLevel = readD(); - _maxLevel = readD(); - _mode = readD(); + _page = packet.readD(); + _minLevel = packet.readD(); + _maxLevel = packet.readD(); + _mode = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMagicSkillUse.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMagicSkillUse.java index 2650d300ab..36473bffb6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMagicSkillUse.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMagicSkillUse.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.Skill.SkillType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; /** * @version $Revision: 1.7.2.1.2.3 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestMagicSkillUse extends GameClientPacket +public class RequestMagicSkillUse implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestMagicSkillUse.class.getName()); @@ -37,18 +39,19 @@ public class RequestMagicSkillUse extends GameClientPacket private boolean _shiftPressed; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _magicId = readD(); // Identifier of the used skill - _ctrlPressed = readD() != 0; // True if it's a ForceAttack : Ctrl pressed - _shiftPressed = readC() != 0; // True if Shift pressed + _magicId = packet.readD(); // Identifier of the used skill + _ctrlPressed = packet.readD() != 0; // True if it's a ForceAttack : Ctrl pressed + _shiftPressed = packet.readC() != 0; // True if Shift pressed + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // Get the current PlayerInstance of the player - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMakeMacro.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMakeMacro.java index aab48fa6a1..ba023870c4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMakeMacro.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMakeMacro.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Macro; import org.l2jmobius.gameserver.model.Macro.MacroCmd; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestMakeMacro extends GameClientPacket +public class RequestMakeMacro implements IClientIncomingPacket { private Macro _macro; private int _commandsLength = 0; @@ -31,17 +33,17 @@ public class RequestMakeMacro extends GameClientPacket * packet type id 0xc1 sample c1 d // id S // macro name S // unknown desc S // unknown acronym c // icon c // count c // entry c // type d // skill id c // shortcut id S // command name format: cdSSScc (ccdcS) */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - final int id = readD(); - final String name = readS(); - final String desc = readS(); - final String acronym = readS(); - final int icon = readC(); - int count = readC(); + final int id = packet.readD(); + final String name = packet.readS(); + final String desc = packet.readS(); + final String acronym = packet.readS(); + final int icon = packet.readC(); + int count = packet.readC(); if (count < 0) { - return; + return false; } if (count > MAX_MACRO_LENGTH) { @@ -51,28 +53,30 @@ public class RequestMakeMacro extends GameClientPacket final MacroCmd[] commands = new MacroCmd[count]; for (int i = 0; i < count; i++) { - final int entry = readC(); - final int type = readC(); // 1 = skill, 3 = action, 4 = shortcut - final int d1 = readD(); // skill or page number for shortcuts - final int d2 = readC(); - final String command = readS(); + final int entry = packet.readC(); + final int type = packet.readC(); // 1 = skill, 3 = action, 4 = shortcut + final int d1 = packet.readD(); // skill or page number for shortcuts + final int d2 = packet.readC(); + final String command = packet.readS(); _commandsLength += command.length() + 1; commands[i] = new MacroCmd(entry, type, d1, d2, command); } _macro = new Macro(id, icon, name, desc, acronym, commands); + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } // Macro exploit fix - if (!getClient().getFloodProtectors().getMacro().tryPerformAction("make macro")) + if (!client.getFloodProtectors().getMacro().tryPerformAction("make macro")) { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestManorList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestManorList.java index e82e797016..6ac4d6a0b3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestManorList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestManorList.java @@ -19,24 +19,27 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExSendManorList; /** * Format: ch c (id) 0xD0 h (subid) 0x08 * @author l3x */ -public class RequestManorList extends GameClientPacket +public class RequestManorList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java index eada49c7db..fe7d4836c4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java @@ -16,32 +16,35 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.BoatData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.type.WeaponType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -public class RequestMoveToLocationInVehicle extends GameClientPacket +public class RequestMoveToLocationInVehicle implements IClientIncomingPacket { private int _boatId; private Location _targetPos; private Location _originPos; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _boatId = readD(); // objectId of boat - _targetPos = new Location(readD(), readD(), readD()); - _originPos = new Location(readD(), readD(), readD()); + _boatId = packet.readD(); // objectId of boat + _targetPos = new Location(packet.readD(), packet.readD(), packet.readD()); + _originPos = new Location(packet.readD(), packet.readD(), packet.readD()); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadMatchList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadMatchList.java index 010f078ce0..8c15c6eee4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadMatchList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadMatchList.java @@ -16,29 +16,32 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; +import org.l2jmobius.gameserver.network.GameClient; /** * format ch c: (id) 0xD0 h: (subid) 0x13 * @author -Wooden- */ -public class RequestOlympiadMatchList extends GameClientPacket +public class RequestOlympiadMatchList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger packet + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } + if (player.inObserverMode()) { Olympiad.sendMatchList(player); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadObserverEnd.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadObserverEnd.java index dd262ac0cf..75a0d00abe 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadObserverEnd.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadObserverEnd.java @@ -16,24 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; /** * format ch c: (id) 0xD0 h: (subid) 0x12 * @author -Wooden- */ -public class RequestOlympiadObserverEnd extends GameClientPacket +public class RequestOlympiadObserverEnd implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustFromPartyRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustFromPartyRoom.java index 34d1a0fcf1..18525efee3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustFromPartyRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustFromPartyRoom.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExClosePartyRoom; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchList; @@ -30,20 +32,21 @@ import org.l2jmobius.gameserver.network.serverpackets.PartyMatchList; * format (ch) d * @author -Wooden- */ -public class RequestOustFromPartyRoom extends GameClientPacket +public class RequestOustFromPartyRoom implements IClientIncomingPacket { private int _charid; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _charid = readD(); + _charid = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPartyMember.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPartyMember.java index 4dbe208097..ddd7083b7f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPartyMember.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPartyMember.java @@ -16,22 +16,25 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestOustPartyMember extends GameClientPacket +public class RequestOustPartyMember implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPledgeMember.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPledgeMember.java index 827c185d99..7d5ae5fa49 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPledgeMember.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPledgeMember.java @@ -19,30 +19,33 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListDelete; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestOustPledgeMember extends GameClientPacket +public class RequestOustPledgeMember implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(RequestOustPledgeMember.class.getName()); private String _target; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _target = readS(); + _target = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPCCafeCouponUse.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPCCafeCouponUse.java index ae3b96f3f9..4dc717e309 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPCCafeCouponUse.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPCCafeCouponUse.java @@ -18,25 +18,28 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format: (ch) S * @author -Wooden- */ -public class RequestPCCafeCouponUse extends GameClientPacket +public class RequestPCCafeCouponUse implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPCCafeCouponUse.class.getName()); private String _str; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _str = readS(); + _str = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - // TODO LOGGER.info("C5: RequestPCCafeCouponUse: S: " + _str); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSend.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSend.java index 72405080fd..de3aa83312 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSend.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSend.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; @@ -29,6 +30,7 @@ import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; import org.l2jmobius.gameserver.model.itemcontainer.PlayerFreight; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.EtcItemType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -38,7 +40,7 @@ import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; /** * @author -Wooden- */ -public class RequestPackageSend extends GameClientPacket +public class RequestPackageSend implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPackageSend.class.getName()); private final List _items = new ArrayList<>(); @@ -46,33 +48,35 @@ public class RequestPackageSend extends GameClientPacket private int _count; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectID = readD(); - _count = readD(); + _objectID = packet.readD(); + _count = packet.readD(); if ((_count < 0) || (_count > 500)) { _count = -1; - return; + return false; } for (int i = 0; i < _count; i++) { - final int id = readD(); // this is some id sent in PackageSendableList - final int count = readD(); + final int id = packet.readD(); // this is some id sent in PackageSendableList + final int count = packet.readD(); _items.add(new Item(id, count)); } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if ((_count == -1) || (_items == null)) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -98,7 +102,7 @@ public class RequestPackageSend extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("deposit")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("deposit")) { player.sendMessage("You depositing items too fast."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSendableItemList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSendableItemList.java index 8e4347e6d2..32898da858 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSendableItemList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSendableItemList.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PackageSendableList; /** * Format: (c)d d: char object id (?) * @author -Wooden- */ -public class RequestPackageSendableItemList extends GameClientPacket +public class RequestPackageSendableItemList implements IClientIncomingPacket { private int _objectID; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectID = readD(); + _objectID = packet.readD(); + return true; } @Override - public void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -48,17 +51,13 @@ public class RequestPackageSendableItemList extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("deposit")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("deposit")) { player.sendMessage("You depositing items too fast."); return; } - /* - * PlayerInstance target = (PlayerInstance) World.getInstance().findObject(_objectID); if(target == null) return; - */ - final ItemInstance[] items = getClient().getPlayer().getInventory().getAvailableItems(true); - // build list... - sendPacket(new PackageSendableList(items, _objectID)); + final ItemInstance[] items = player.getInventory().getAvailableItems(true); + player.sendPacket(new PackageSendableList(items, _objectID, player.getAdena())); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchConfig.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchConfig.java index 4f6ddbe44e..d4c4f8ecf8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchConfig.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchConfig.java @@ -16,34 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchList; -public class RequestPartyMatchConfig extends GameClientPacket +public class RequestPartyMatchConfig implements IClientIncomingPacket { private int _auto; private int _loc; private int _level; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _auto = readD(); - _loc = readD(); - _level = readD(); + _auto = packet.readD(); + _loc = packet.readD(); + _level = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchDetail.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchDetail.java index 0813c36b12..c97ee435b7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchDetail.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchDetail.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExManagePartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; @@ -30,7 +32,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * @author Gnacik */ -public class RequestPartyMatchDetail extends GameClientPacket +public class RequestPartyMatchDetail implements IClientIncomingPacket { private int _roomid; @@ -42,21 +44,21 @@ public class RequestPartyMatchDetail extends GameClientPacket private int _unk3; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _roomid = readD(); - /* - * IF player click on Room all unk are 0 IF player click AutoJoin values are -1 1 1 - */ - _unk1 = readD(); - _unk2 = readD(); - _unk3 = readD(); + _roomid = packet.readD(); + // If player click on Room all unk are 0 + // If player click AutoJoin values are -1 1 1 + _unk1 = packet.readD(); + _unk2 = packet.readD(); + _unk3 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchList.java index 7cb237a803..8d969e8b0a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchList.java @@ -18,10 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; @@ -29,7 +31,7 @@ import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; /** * author: Gnacik Packetformat Rev650 cdddddS */ -public class RequestPartyMatchList extends GameClientPacket +public class RequestPartyMatchList implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPartyMatchList.class.getName()); @@ -41,20 +43,21 @@ public class RequestPartyMatchList extends GameClientPacket private String _roomtitle; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _roomid = readD(); - _membersmax = readD(); - _minLevel = readD(); - _maxLevel = readD(); - _loot = readD(); - _roomtitle = readS(); + _roomid = packet.readD(); + _membersmax = packet.readD(); + _minLevel = packet.readD(); + _maxLevel = packet.readD(); + _loot = packet.readD(); + _roomtitle = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetGetItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetGetItem.java index f71f3d3ee7..412af6c9dd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetGetItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetGetItem.java @@ -16,43 +16,52 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -public class RequestPetGetItem extends GameClientPacket +public class RequestPetGetItem implements IClientIncomingPacket { private int _objectId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final World world = World.getInstance(); - final ItemInstance item = (ItemInstance) world.findObject(_objectId); - if ((item == null) || (getClient().getPlayer() == null)) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - if (getClient().getPlayer().getPet() instanceof SummonInstance) + if (player.getPet() instanceof SummonInstance) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } - final PetInstance pet = (PetInstance) getClient().getPlayer().getPet(); + final PetInstance pet = (PetInstance) player.getPet(); if ((pet == null) || pet.isDead() || pet.isOutOfControl()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + + final ItemInstance item = (ItemInstance) World.getInstance().findObject(_objectId); + if (item == null) + { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetUseItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetUseItem.java index 63340f5a6e..c9c4655b2b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetUseItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetUseItem.java @@ -18,38 +18,41 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.PetDataTable; import org.l2jmobius.gameserver.handler.IItemHandler; import org.l2jmobius.gameserver.handler.ItemHandler; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetInfo; import org.l2jmobius.gameserver.network.serverpackets.PetItemList; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestPetUseItem extends GameClientPacket +public class RequestPetUseItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPetUseItem.class.getName()); private int _objectId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getUseItem().tryPerformAction("pet use item")) + if (!client.getFloodProtectors().getUseItem().tryPerformAction("pet use item")) { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java index 1847eb96c5..1decbb0d66 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java @@ -17,9 +17,11 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -27,22 +29,23 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (c) Sd (S: content - d: type) * @author -Wooden-, TempyIncursion */ -public class RequestPetition extends GameClientPacket +public class RequestPetition implements IClientIncomingPacket { private String _content; private int _type; // 1 = on : 0 = off; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _content = readS(); - _type = readD(); + _content = packet.readS(); + _type = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java index 1e8623816a..c12c3515b7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java @@ -17,10 +17,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -29,19 +31,20 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (c) d * @author -Wooden-, TempyIncursion */ -public class RequestPetitionCancel extends GameClientPacket +public class RequestPetitionCancel implements IClientIncomingPacket { // private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // _unknown = readD(); This is pretty much a trigger packet. + // _unknown = packet.readD(); This is pretty much a trigger packet. + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeCrest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeCrest.java index caf272385c..4719fb2dc8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeCrest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeCrest.java @@ -16,21 +16,24 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeCrest; -public class RequestPledgeCrest extends GameClientPacket +public class RequestPledgeCrest implements IClientIncomingPacket { private int _crestId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _crestId = readD(); + _crestId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - sendPacket(new PledgeCrest(_crestId)); + client.sendPacket(new PledgeCrest(_crestId)); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeExtendedInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeExtendedInfo.java index 44058e5d98..e30f6f8adc 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeExtendedInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeExtendedInfo.java @@ -16,22 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * @author -Wooden- */ -public class RequestPledgeExtendedInfo extends GameClientPacket +public class RequestPledgeExtendedInfo implements IClientIncomingPacket { @SuppressWarnings("unused") private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeInfo.java index e760b36550..9a9992da66 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeInfo.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeInfo; -public class RequestPledgeInfo extends GameClientPacket +public class RequestPledgeInfo implements IClientIncomingPacket { private int clanId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - clanId = readD(); + clanId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final Clan clan = ClanTable.getInstance().getClan(clanId); if (player == null) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberInfo.java index 4e46f8e64f..108ba68e9d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberInfo.java @@ -16,34 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveMemberInfo; /** * Format: (ch) dS * @author -Wooden- */ -public class RequestPledgeMemberInfo extends GameClientPacket +public class RequestPledgeMemberInfo implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; private String _player; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unk1 = readD(); - _player = readS(); + _unk1 = packet.readD(); + _player = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // LOGGER.info("C5: RequestPledgeMemberInfo d:"+_unk1); // LOGGER.info("C5: RequestPledgeMemberInfo S:"+_player); - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -59,6 +62,6 @@ public class RequestPledgeMemberInfo extends GameClientPacket { return; } - player.sendPacket(new PledgeReceiveMemberInfo(member)); + player.sendPacket(new PledgeReceiveMemberInfo(member, player)); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberList.java index 246e0cac03..709ad251ad 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberList.java @@ -16,22 +16,24 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll; -public class RequestPledgeMemberList extends GameClientPacket +public class RequestPledgeMemberList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberPowerInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberPowerInfo.java index 30c9f56868..850c940116 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberPowerInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberPowerInfo.java @@ -16,34 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeReceivePowerInfo; /** * Format: (ch) dS * @author -Wooden- */ -public class RequestPledgeMemberPowerInfo extends GameClientPacket +public class RequestPledgeMemberPowerInfo implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; private String _player; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unk1 = readD(); - _player = readS(); + _unk1 = packet.readD(); + _player = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // LOGGER.info("C5: RequestPledgeMemberPowerInfo d:"+_unk1); // LOGGER.info("C5: RequestPledgeMemberPowerInfo S:"+_player); - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePower.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePower.java index b75cb1bd75..072ee6070b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePower.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePower.java @@ -16,35 +16,38 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ManagePledgePower; -public class RequestPledgePower extends GameClientPacket +public class RequestPledgePower implements IClientIncomingPacket { private int _clanMemberId; private int _action; private int _privs; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _clanMemberId = readD(); - _action = readD(); + _clanMemberId = packet.readD(); + _action = packet.readD(); if (_action == 3) { - _privs = readD(); + _privs = packet.readD(); } else { _privs = 0; } + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePowerGradeList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePowerGradeList.java index a65b33bd37..df9777b11d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePowerGradeList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePowerGradeList.java @@ -16,27 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan.RankPrivs; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgePowerGradeList; /** * Format: (ch) * @author -Wooden- */ -public class RequestPledgePowerGradeList extends GameClientPacket +public class RequestPledgePowerGradeList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final Clan clan = player.getClan(); if (clan != null) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeReorganizeMember.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeReorganizeMember.java index 21568d5e04..957aa8370d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeReorganizeMember.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeReorganizeMember.java @@ -16,16 +16,18 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListUpdate; /** * Format: (ch) dSdS * @author -Wooden- */ -public class RequestPledgeReorganizeMember extends GameClientPacket +public class RequestPledgeReorganizeMember implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; @@ -36,18 +38,19 @@ public class RequestPledgeReorganizeMember extends GameClientPacket private String _unk2; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unk1 = readD(); - _memberName = readS(); - _newPledgeType = readD(); - _unk2 = readS(); + _unk1 = packet.readD(); + _memberName = packet.readS(); + _newPledgeType = packet.readD(); + _unk2 = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetAcademyMaster.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetAcademyMaster.java index 806bded246..71b5c49044 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetAcademyMaster.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetAcademyMaster.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -26,24 +28,25 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (ch) dSS * @author -Wooden- */ -public class RequestPledgeSetAcademyMaster extends GameClientPacket +public class RequestPledgeSetAcademyMaster implements IClientIncomingPacket { private String _currPlayerName; private int _set; // 1 set, 0 delete private String _targetPlayerName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _set = readD(); - _currPlayerName = readS(); - _targetPlayerName = readS(); + _set = packet.readD(); + _currPlayerName = packet.readS(); + _targetPlayerName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final Clan clan = player.getClan(); if (clan == null) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetMemberPowerGrade.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetMemberPowerGrade.java index d701a6dc12..d5fb48801f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetMemberPowerGrade.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetMemberPowerGrade.java @@ -16,30 +16,33 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) Sd * @author -Wooden- */ -public class RequestPledgeSetMemberPowerGrade extends GameClientPacket +public class RequestPledgeSetMemberPowerGrade implements IClientIncomingPacket { private int _powerGrade; private String _member; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _member = readS(); - _powerGrade = readD(); + _member = packet.readS(); + _powerGrade = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeWarList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeWarList.java index fc70757d0e..28303b11c8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeWarList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeWarList.java @@ -16,32 +16,35 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveWarList; /** * Format: (ch) dd * @author -Wooden- */ -public class RequestPledgeWarList extends GameClientPacket +public class RequestPledgeWarList implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; private int _tab; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unk1 = readD(); - _tab = readD(); + _unk1 = packet.readD(); + _tab = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // LOGGER.info("C5: RequestPledgeWarList d:"+_unk1); // LOGGER.info("C5: RequestPledgeWarList d:"+_tab); - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 561c8c034e..353aa5328d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.TradeList.TradeItem; @@ -26,12 +27,13 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class RequestPrivateStoreBuy extends GameClientPacket +public class RequestPrivateStoreBuy implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPrivateStoreBuy.class.getName()); @@ -40,13 +42,13 @@ public class RequestPrivateStoreBuy extends GameClientPacket private ItemRequest[] _items; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _storePlayerId = readD(); - _count = readD(); + _storePlayerId = packet.readD(); + _count = packet.readD(); // count*12 is the size of a for iteration of each item - if ((_count < 0) || ((_count * 12) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + if ((_count < 0) || ((_count * 12) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; } @@ -54,27 +56,29 @@ public class RequestPrivateStoreBuy extends GameClientPacket _items = new ItemRequest[_count]; for (int i = 0; i < _count; i++) { - final int objectId = readD(); - long count = readD(); + final int objectId = packet.readD(); + long count = packet.readD(); if (count > Integer.MAX_VALUE) { count = Integer.MAX_VALUE; } - final int price = readD(); + final int price = packet.readD(); _items[i] = new ItemRequest(objectId, (int) count, price); } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("privatestorebuy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("privatestorebuy")) { player.sendMessage("You buying items too fast."); return; @@ -118,23 +122,23 @@ public class RequestPrivateStoreBuy extends GameClientPacket { if ((ir.getCount() > Integer.MAX_VALUE) || (ir.getCount() < 0)) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried an overflow exploit, ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried an overflow exploit, ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } final TradeItem sellersItem = storeList.getItem(ir.getObjectId()); if (sellersItem == null) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried to buy an item not sold in a private store (buy), ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried to buy an item not sold in a private store (buy), ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } if (ir.getPrice() != sellersItem.getPrice()) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried to change the seller's price in a private store (buy), ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried to change the seller's price in a private store (buy), ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } @@ -156,8 +160,8 @@ public class RequestPrivateStoreBuy extends GameClientPacket // FIXME: this check should be (and most probably is) done in the TradeList mechanics if ((priceTotal < 0) || (priceTotal > Integer.MAX_VALUE)) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried an overflow exploit, ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried an overflow exploit, ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } @@ -165,28 +169,28 @@ public class RequestPrivateStoreBuy extends GameClientPacket { if (player.getItemCount(Config.SELL_ITEM, -1) < priceTotal) { - sendPacket(SystemMessage.sendString("You do not have needed items to buy")); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(SystemMessage.sendString("You do not have needed items to buy")); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } } else if (player.getAdena() < priceTotal) { player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ADENA); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if ((storePlayer.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_PACKAGE_SELL) && (storeList.getItemCount() > _count)) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried to buy less items then sold by package-sell, ban this player for bot-usage!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried to buy less items then sold by package-sell, ban this player for bot-usage!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } if (!storeList.PrivateStoreBuy(player, _items, (int) priceTotal)) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); // Punishment e LOGGER in audit Util.handleIllegalPlayerAction(storePlayer, "PrivateStore buy has failed due to invalid list or request. Player: " + player.getName(), Config.DEFAULT_PUNISH); LOGGER.warning("PrivateStore buy has failed due to invalid list or request. Player: " + player.getName() + ", Private store of: " + storePlayer.getName()); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageBuy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageBuy.java index 175b4cf421..9105668460 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageBuy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageBuy.java @@ -16,29 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreManageListBuy; import org.l2jmobius.gameserver.util.Util; -public class RequestPrivateStoreManageBuy extends GameClientPacket +public class RequestPrivateStoreManageBuy implements IClientIncomingPacket { - private static final Logger LOGGER = Logger.getLogger(RequestPrivateStoreManageBuy.class.getName()); - @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -70,20 +69,20 @@ public class RequestPrivateStoreManageBuy extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (player.isInOlympiadMode()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open buy/sell when you are sitting if (player.isSitting() && (player.getPrivateStoreType() == 0)) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageSell.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageSell.java index 7faa9cf5a1..3fd0583299 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageSell.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageSell.java @@ -16,29 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreManageListSell; import org.l2jmobius.gameserver.util.Util; -public class RequestPrivateStoreManageSell extends GameClientPacket +public class RequestPrivateStoreManageSell implements IClientIncomingPacket { - private static final Logger LOGGER = Logger.getLogger(RequestPrivateStoreManageSell.class.getName()); - @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -70,20 +69,20 @@ public class RequestPrivateStoreManageSell extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (player.isInOlympiadMode()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open buy/sell when you are sitting if (player.isSitting() && (player.getPrivateStoreType() == 0)) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitBuy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitBuy.java index 758840c4eb..ccf0b158b1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitBuy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitBuy.java @@ -16,20 +16,22 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestPrivateStoreQuitBuy extends GameClientPacket +public class RequestPrivateStoreQuitBuy implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitSell.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitSell.java index b6d4a14e42..235425dff0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitSell.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitSell.java @@ -16,20 +16,22 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestPrivateStoreQuitSell extends GameClientPacket +public class RequestPrivateStoreQuitSell implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 528172194f..cd17e0c9b4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class RequestPrivateStoreSell extends GameClientPacket +public class RequestPrivateStoreSell implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPrivateStoreSell.class.getName()); @@ -38,12 +40,12 @@ public class RequestPrivateStoreSell extends GameClientPacket private ItemRequest[] _items; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _storePlayerId = readD(); - _count = readD(); + _storePlayerId = packet.readD(); + _count = packet.readD(); // count*20 is the size of a for iteration of each item - if ((_count < 0) || ((_count * 20) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + if ((_count < 0) || ((_count * 20) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; } @@ -51,18 +53,18 @@ public class RequestPrivateStoreSell extends GameClientPacket long priceTotal = 0; for (int i = 0; i < _count; i++) { - final int objectId = readD(); - final int itemId = readD(); - final int enchant = readH(); - readH(); // TODO analyse this - final long count = readD(); - final int price = readD(); + final int objectId = packet.readD(); + final int itemId = packet.readD(); + final int enchant = packet.readH(); + packet.readH(); // TODO analyse this + final long count = packet.readD(); + final int price = packet.readD(); if ((count > Integer.MAX_VALUE) || (count < 0)) { - final String msgErr = "[RequestPrivateStoreSell] player " + getClient().getPlayer().getName() + " tried an overflow exploit, ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreSell] player " + client.getPlayer().getName() + " tried an overflow exploit, ban this player!"; + Util.handleIllegalPlayerAction(client.getPlayer(), msgErr, Config.DEFAULT_PUNISH); _count = 0; - return; + return false; } _items[i] = new ItemRequest(objectId, itemId, enchant, (int) count, price); priceTotal += price * count; @@ -70,25 +72,27 @@ public class RequestPrivateStoreSell extends GameClientPacket if ((priceTotal < 0) || (priceTotal > Integer.MAX_VALUE)) { - final String msgErr = "[RequestPrivateStoreSell] player " + getClient().getPlayer().getName() + " tried an overflow exploit, ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreSell] player " + client.getPlayer().getName() + " tried an overflow exploit, ban this player!"; + Util.handleIllegalPlayerAction(client.getPlayer(), msgErr, Config.DEFAULT_PUNISH); _count = 0; - return; + return false; } _price = (int) priceTotal; + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("privatestoresell")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("privatestoresell")) { player.sendMessage("You selling items too fast"); return; @@ -137,8 +141,8 @@ public class RequestPrivateStoreSell extends GameClientPacket { if (storePlayer.getItemCount(Config.SELL_ITEM, -1) < _price) { - sendPacket(ActionFailed.STATIC_PACKET); - sendPacket(SystemMessage.sendString("You have not enough items to buy, canceling PrivateBuy")); + player.sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(SystemMessage.sendString("You have not enough items to buy, canceling PrivateBuy")); storePlayer.setPrivateStoreType(PlayerInstance.STORE_PRIVATE_NONE); storePlayer.broadcastUserInfo(); return; @@ -146,7 +150,7 @@ public class RequestPrivateStoreSell extends GameClientPacket } else if (storePlayer.getAdena() < _price) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); storePlayer.sendMessage("You have not enough adena, canceling PrivateBuy."); storePlayer.setPrivateStoreType(PlayerInstance.STORE_PRIVATE_NONE); storePlayer.broadcastUserInfo(); @@ -155,8 +159,8 @@ public class RequestPrivateStoreSell extends GameClientPacket if (!storeList.PrivateStoreSell(player, _items, _price)) { - sendPacket(ActionFailed.STATIC_PACKET); - Util.handleIllegalPlayerAction(getClient().getPlayer(), "Player " + getClient().getPlayer().getName() + " provided invalid list or request! ", Config.DEFAULT_PUNISH); + player.sendPacket(ActionFailed.STATIC_PACKET); + Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " provided invalid list or request! ", Config.DEFAULT_PUNISH); LOGGER.warning("PrivateStore sell has failed due to invalid list or request. Player: " + player.getName() + ", Private store of: " + storePlayer.getName()); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java index 03d4322799..c77d5e42c1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; @@ -28,6 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -39,44 +41,44 @@ import org.l2jmobius.gameserver.util.Util; * Format: (ch) d [dddd] d: size [ d obj id d item id d manor id d count ] * @author l3x */ -public class RequestProcureCropList extends GameClientPacket +public class RequestProcureCropList implements IClientIncomingPacket { private int _size; private int[] _items; // count*4 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _size = readD(); - if (((_size * 16) > _buf.remaining()) || (_size > 500) || (_size < 1)) + _size = packet.readD(); + if (((_size * 16) > packet.getReadableBytes()) || (_size > 500) || (_size < 1)) { _size = 0; - return; + return false; } _items = new int[_size * 4]; for (int i = 0; i < _size; i++) { - final int objId = readD(); + final int objId = packet.readD(); _items[(i * 4) + 0] = objId; - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 4) + 1] = itemId; - final int manorId = readD(); + final int manorId = packet.readD(); _items[(i * 4) + 2] = manorId; - long count = readD(); + long count = packet.readD(); if (count > Integer.MAX_VALUE) { count = Integer.MAX_VALUE; } - _items[(i * 4) + 3] = (int) count; } + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -95,7 +97,7 @@ public class RequestProcureCropList extends GameClientPacket if (_size < 1) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -123,7 +125,7 @@ public class RequestProcureCropList extends GameClientPacket if (count > Integer.MAX_VALUE) { Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " items at the same time.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 1183402ef5..fa6ec3a7d4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -17,26 +17,29 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.QuestList; -public class RequestQuestAbort extends GameClientPacket +public class RequestQuestAbort implements IClientIncomingPacket { private int _questId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _questId = readD(); + _questId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestList.java index 17ffdec6b2..aa6070f296 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestList.java @@ -16,20 +16,23 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.QuestList; -public class RequestQuestList extends GameClientPacket +public class RequestQuestList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookDestroy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookDestroy.java index cf88c9d044..87d63aa6d3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookDestroy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookDestroy.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.RecipeBookItemList; -public class RequestRecipeBookDestroy extends GameClientPacket +public class RequestRecipeBookDestroy implements IClientIncomingPacket { private int _recipeID; @@ -29,18 +31,19 @@ public class RequestRecipeBookDestroy extends GameClientPacket * Unknown Packet:ad 0000: ad 02 00 00 00 */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _recipeID = readD(); + _recipeID = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player != null) { - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("RecipeDestroy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("RecipeDestroy")) { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookOpen.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookOpen.java index d2da4bcb21..cfe76a8cf6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookOpen.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookOpen.java @@ -16,32 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.RecipeController; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestRecipeBookOpen extends GameClientPacket +public class RequestRecipeBookOpen implements IClientIncomingPacket { private boolean _isDwarvenCraft; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _isDwarvenCraft = readD() == 0; + _isDwarvenCraft = packet.readD() == 0; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (getClient().getPlayer() == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - if (getClient().getPlayer().getPrivateStoreType() != 0) + if (player.getPrivateStoreType() != 0) { - getClient().getPlayer().sendMessage("Cannot use recipe book while trading."); + player.sendMessage("Cannot use recipe book while trading."); return; } - RecipeController.getInstance().requestBookOpen(getClient().getPlayer(), _isDwarvenCraft); + RecipeController.getInstance().requestBookOpen(player, _isDwarvenCraft); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeInfo.java index 6e91931963..615117380f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeInfo.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.RecipeItemMakeInfo; -public class RequestRecipeItemMakeInfo extends GameClientPacket +public class RequestRecipeItemMakeInfo implements IClientIncomingPacket { private int _id; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); + _id = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeSelf.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeSelf.java index 074c33faaa..2a5199adec 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeSelf.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeSelf.java @@ -16,29 +16,32 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestRecipeItemMakeSelf extends GameClientPacket +public class RequestRecipeItemMakeSelf implements IClientIncomingPacket { private int _id; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); + _id = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getManufacture().tryPerformAction("RecipeMakeSelf")) + if (!client.getFloodProtectors().getManufacture().tryPerformAction("RecipeMakeSelf")) { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopListSet.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopListSet.java index 909f195052..77587a7a62 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopListSet.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopListSet.java @@ -17,23 +17,25 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.ManufactureList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.RecipeShopMsg; -public class RequestRecipeShopListSet extends GameClientPacket +public class RequestRecipeShopListSet implements IClientIncomingPacket { private int _count; private int[] _items; // count*2 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _count = readD(); - if ((_count < 0) || ((_count * 8) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _count = packet.readD(); + if ((_count < 0) || ((_count * 8) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; } @@ -41,17 +43,19 @@ public class RequestRecipeShopListSet extends GameClientPacket _items = new int[_count * 2]; for (int x = 0; x < _count; x++) { - final int recipeID = readD(); + final int recipeID = packet.readD(); _items[(x * 2) + 0] = recipeID; - final int cost = readD(); + final int cost = packet.readD(); _items[(x * 2) + 1] = cost; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeInfo.java index a27de1a64c..ae80060e12 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeInfo.java @@ -16,26 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.RecipeShopItemInfo; -public class RequestRecipeShopMakeInfo extends GameClientPacket +public class RequestRecipeShopMakeInfo implements IClientIncomingPacket { private int _playerObjectId; private int _recipeId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _playerObjectId = readD(); - _recipeId = readD(); + _playerObjectId = packet.readD(); + _recipeId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeItem.java index 8282f2c4b1..d93d57555a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeItem.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.util.Util; -public class RequestRecipeShopMakeItem extends GameClientPacket +public class RequestRecipeShopMakeItem implements IClientIncomingPacket { private int _id; private int _recipeId; @@ -29,23 +31,24 @@ public class RequestRecipeShopMakeItem extends GameClientPacket private int _unknow; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); - _recipeId = readD(); - _unknow = readD(); + _id = packet.readD(); + _recipeId = packet.readD(); + _unknow = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getManufacture().tryPerformAction("RecipeShopMake")) + if (!client.getFloodProtectors().getManufacture().tryPerformAction("RecipeShopMake")) { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageList.java index eb56592b43..a79737b1ca 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageList.java @@ -16,23 +16,25 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ManufactureList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.RecipeShopManageList; -public class RequestRecipeShopManageList extends GameClientPacket +public class RequestRecipeShopManageList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -41,7 +43,7 @@ public class RequestRecipeShopManageList extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManagePrev.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManagePrev.java index 31c49c789b..b2a2618d0e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManagePrev.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManagePrev.java @@ -16,22 +16,24 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.RecipeShopSellList; -public class RequestRecipeShopManagePrev extends GameClientPacket +public class RequestRecipeShopManagePrev implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (player.getTarget() == null)) { return; @@ -40,7 +42,7 @@ public class RequestRecipeShopManagePrev extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageQuit.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageQuit.java index 39d7a3e354..6c9deb2795 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageQuit.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageQuit.java @@ -16,20 +16,22 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestRecipeShopManageQuit extends GameClientPacket +public class RequestRecipeShopManageQuit implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMessageSet.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMessageSet.java index 1b88e5c289..9fe2e07bb2 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMessageSet.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMessageSet.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestRecipeShopMessageSet extends GameClientPacket +public class RequestRecipeShopMessageSet implements IClientIncomingPacket { private static final int MAX_MSG_LENGTH = 29; private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecordInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecordInfo.java index 5cb20ba4a0..fe11ee9b85 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecordInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecordInfo.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; @@ -26,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharInfo; import org.l2jmobius.gameserver.network.serverpackets.DoorInfo; import org.l2jmobius.gameserver.network.serverpackets.DoorStatusUpdate; @@ -39,18 +41,18 @@ import org.l2jmobius.gameserver.network.serverpackets.StaticObject; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.VehicleInfo; -public class RequestRecordInfo extends GameClientPacket +public class RequestRecordInfo implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -79,7 +81,7 @@ public class RequestRecordInfo extends GameClientPacket { player.sendPacket(new DoorInfo((DoorInstance) object, false)); } - player.sendPacket(new DoorStatusUpdate((DoorInstance) object)); + player.sendPacket(new DoorStatusUpdate((DoorInstance) object, player)); } else if (object instanceof BoatInstance) { @@ -124,7 +126,7 @@ public class RequestRecordInfo extends GameClientPacket if (otherPlayer.isInBoat()) { otherPlayer.getPosition().setWorldPosition(otherPlayer.getBoat().getLocation()); - player.sendPacket(new CharInfo(otherPlayer)); + player.sendPacket(new CharInfo(otherPlayer, player.isGM() && otherPlayer.getAppearance().isInvisible())); final int relation = otherPlayer.getRelation(player); if ((otherPlayer.getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (otherPlayer.getKnownList().getKnownRelations().get(player.getObjectId()) != relation)) { @@ -134,7 +136,7 @@ public class RequestRecordInfo extends GameClientPacket } else { - player.sendPacket(new CharInfo(otherPlayer)); + player.sendPacket(new CharInfo(otherPlayer, player.isGM() && otherPlayer.getAppearance().isInvisible())); final int relation = otherPlayer.getRelation(player); if ((otherPlayer.getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (otherPlayer.getKnownList().getKnownRelations().get(player.getObjectId()) != relation)) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStartPledgeWar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStartPledgeWar.java index 476a487978..c23a07f6b5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStartPledgeWar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStartPledgeWar.java @@ -16,26 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestReplyStartPledgeWar extends GameClientPacket +public class RequestReplyStartPledgeWar implements IClientIncomingPacket { private int _answer; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { @SuppressWarnings("unused") - final String reqName = readS(); - _answer = readD(); + final String reqName = packet.readS(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStopPledgeWar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStopPledgeWar.java index 731bf160ab..a939746c30 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStopPledgeWar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStopPledgeWar.java @@ -16,26 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestReplyStopPledgeWar extends GameClientPacket +public class RequestReplyStopPledgeWar implements IClientIncomingPacket { private int _answer; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { @SuppressWarnings("unused") - final String reqName = readS(); - _answer = readD(); + final String reqName = packet.readS(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplySurrenderPledgeWar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplySurrenderPledgeWar.java index 5340c0629e..2576ee18f4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplySurrenderPledgeWar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplySurrenderPledgeWar.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestReplySurrenderPledgeWar extends GameClientPacket +public class RequestReplySurrenderPledgeWar implements IClientIncomingPacket { private int _answer; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { @SuppressWarnings("unused") - final String reqName = readS(); - _answer = readD(); + final String reqName = packet.readS(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 41b9fea5f0..2400677268 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -34,20 +35,20 @@ import org.l2jmobius.gameserver.network.serverpackets.RestartResponse; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; -public class RequestRestart extends GameClientPacket +public class RequestRestart implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestRestart.class.getName()); @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -56,14 +57,14 @@ public class RequestRestart extends GameClientPacket // Check if player is enchanting if (player.getActiveEnchantItem() != null) { - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } if (player.isInsideZone(ZoneId.NO_RESTART)) { player.sendPacket(SystemMessageId.YOU_MAY_NOT_RESTART_IN_THIS_LOCATION); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -71,7 +72,7 @@ public class RequestRestart extends GameClientPacket if (player.isLocked()) { LOGGER.warning("Player " + player.getName() + " tried to restart during class change."); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -79,7 +80,7 @@ public class RequestRestart extends GameClientPacket if (player.getPrivateStoreType() != 0) { player.sendMessage("Cannot restart while trading."); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -87,7 +88,7 @@ public class RequestRestart extends GameClientPacket if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player) && (!player.isGM() || !Config.GM_RESTART_FIGHTING)) { player.sendPacket(SystemMessageId.YOU_CANNOT_RESTART_WHILE_IN_COMBAT); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -95,7 +96,7 @@ public class RequestRestart extends GameClientPacket if ((player.getOlympiadGameId() > 0) || player.isInOlympiadMode() || Olympiad.getInstance().isRegistered(player)) { player.sendMessage("You can't restart while in Olympiad."); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -108,7 +109,7 @@ public class RequestRestart extends GameClientPacket { player.sendPacket(SystemMessage.sendString("You cannot restart while you are a participant in a festival.")); player.sendPacket(ActionFailed.STATIC_PACKET); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -123,7 +124,7 @@ public class RequestRestart extends GameClientPacket if (player._inEventCTF || player._inEventDM || player._inEventTvT || player._inEventVIP) { player.sendMessage("You can't restart during Event."); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -162,8 +163,6 @@ public class RequestRestart extends GameClientPacket player.decreaseBoxes(); } - final GameClient client = getClient(); - // detach the client from the char so that the connection isnt closed in the deleteMe player.setClient(null); @@ -171,17 +170,17 @@ public class RequestRestart extends GameClientPacket player.deleteMe(); player.store(); - getClient().setPlayer(null); + client.setPlayer(null); // return the client to the authed status - client.setState(ConnectionState.AUTHENTICATED); + client.setConnectionState(ConnectionState.AUTHENTICATED); // Restart true - sendPacket(RestartResponse.valueOf(true)); + client.sendPacket(RestartResponse.valueOf(true)); // send char list final CharSelectInfo cl = new CharSelectInfo(client.getAccountName(), client.getSessionId().playOkID1); - sendPacket(cl); + client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 61bd9ee56c..2deb0ba167 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -16,10 +16,9 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.enums.TeleportWhereType; import org.l2jmobius.gameserver.instancemanager.CastleManager; @@ -34,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.residences.ClanHall; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.Revive; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; @@ -41,23 +41,22 @@ import org.l2jmobius.gameserver.util.Util; /** * @version $Revision: 1.7.2.3.2.6 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestRestartPoint extends GameClientPacket +public class RequestRestartPoint implements IClientIncomingPacket { - protected static final Logger LOGGER = Logger.getLogger(RequestRestartPoint.class.getName()); - protected int _requestedPointType; protected boolean _continuation; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _requestedPointType = readD(); + _requestedPointType = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSSQStatus.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSSQStatus.java index e1998813e4..c9aa40abf1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSSQStatus.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSSQStatus.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SSQStatus; /** * Seven Signs Record Update Request packet type id 0xc7 format: cc * @author Tempy */ -public class RequestSSQStatus extends GameClientPacket +public class RequestSSQStatus implements IClientIncomingPacket { private int _page; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _page = readC(); + _page = packet.readC(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSellItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSellItem.java index 6df3957fdf..b4dda744e6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSellItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSellItem.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.cache.HtmCache; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance; @@ -24,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.instance.MerchantInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ItemList; @@ -31,7 +33,7 @@ import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestSellItem extends GameClientPacket +public class RequestSellItem implements IClientIncomingPacket { private int _listId; private int _count; @@ -41,43 +43,45 @@ public class RequestSellItem extends GameClientPacket * packet type id 0x1e sample 1e 00 00 00 00 // list id 02 00 00 00 // number of items 71 72 00 10 // object id ea 05 00 00 // item id 01 00 00 00 // item count 76 4b 00 10 // object id 2e 0a 00 00 // item id 01 00 00 00 // item count format: cdd (ddd) */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _listId = readD(); - _count = readD(); - if ((_count <= 0) || ((_count * 12) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _listId = packet.readD(); + _count = packet.readD(); + if ((_count <= 0) || ((_count * 12) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; - return; + return false; } _items = new int[_count * 3]; for (int i = 0; i < _count; i++) { - final int objectId = readD(); + final int objectId = packet.readD(); _items[(i * 3) + 0] = objectId; - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 3) + 1] = itemId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt <= 0)) { _count = 0; - return; + return false; } _items[(i * 3) + 2] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("buy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("buy")) { player.sendMessage("You buying too fast."); return; @@ -116,7 +120,7 @@ public class RequestSellItem extends GameClientPacket if ((_listId > 1000000) && (merchant.getTemplate().getNpcId() != (_listId - 1000000))) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -131,7 +135,7 @@ public class RequestSellItem extends GameClientPacket if ((count <= 0) || (count > Integer.MAX_VALUE)) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " items at the same time.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } @@ -150,7 +154,7 @@ public class RequestSellItem extends GameClientPacket if (((Integer.MAX_VALUE / count) < price) || (totalPrice > Integer.MAX_VALUE)) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + MAX_ADENA + " adena worth of goods.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } @@ -158,7 +162,7 @@ public class RequestSellItem extends GameClientPacket if (totalPrice <= 0) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " adena worth of goods.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSendFriendMsg.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSendFriendMsg.java index 0a4445606c..3190ba9e60 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSendFriendMsg.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSendFriendMsg.java @@ -20,15 +20,17 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.FriendRecvMsg; /** * Recieve Private (Friend) Message - 0xCC Format: c SS S: Message S: Receiving Player */ -public class RequestSendFriendMsg extends GameClientPacket +public class RequestSendFriendMsg implements IClientIncomingPacket { private static java.util.logging.Logger _logChat = java.util.logging.Logger.getLogger("chat"); @@ -36,16 +38,18 @@ public class RequestSendFriendMsg extends GameClientPacket private String _reciever; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _message = readS(); - _reciever = readS(); + _message = packet.readS(); + _reciever = packet.readS(); + return true; + } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetAllyCrest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetAllyCrest.java index cef33457c0..36728e4d1e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetAllyCrest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetAllyCrest.java @@ -22,13 +22,15 @@ import java.sql.SQLException; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.cache.CrestCache; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.instancemanager.IdManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestSetAllyCrest extends GameClientPacket +public class RequestSetAllyCrest implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(RequestSetAllyCrest.class.getName()); @@ -36,22 +38,22 @@ public class RequestSetAllyCrest extends GameClientPacket private byte[] _data; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _length = readD(); + _length = packet.readD(); if ((_length < 0) || (_length > 192)) { - return; + return false; } - _data = new byte[_length]; - readB(_data); + _data = packet.readB(_length); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetCrop.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetCrop.java index 6e09498c49..1d7160d64f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetCrop.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetCrop.java @@ -20,47 +20,51 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) dd [dddc] d - manor id d - size [ d - crop id d - sales d - price c - reward type ] * @author l3x */ -public class RequestSetCrop extends GameClientPacket +public class RequestSetCrop implements IClientIncomingPacket { private int _size; private int _manorId; private int[] _items; // _size*4 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _manorId = readD(); - _size = readD(); - if (((_size * 13) > _buf.remaining()) || (_size > 500) || (_size < 1)) + _manorId = packet.readD(); + _size = packet.readD(); + if (((_size * 13) > packet.getReadableBytes()) || (_size > 500) || (_size < 1)) { _size = 0; - return; + return false; } _items = new int[_size * 4]; for (int i = 0; i < _size; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 4) + 0] = itemId; - final int sales = readD(); + final int sales = packet.readD(); _items[(i * 4) + 1] = sales; - final int price = readD(); + final int price = packet.readD(); _items[(i * 4) + 2] = price; - final int type = readC(); + final int type = packet.readC(); _items[(i * 4) + 3] = type; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_size < 1) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetPledgeCrest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetPledgeCrest.java index 40231519ff..8a26c11b4b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetPledgeCrest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetPledgeCrest.java @@ -22,14 +22,16 @@ import java.sql.SQLException; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.cache.CrestCache; import org.l2jmobius.gameserver.instancemanager.IdManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestSetPledgeCrest extends GameClientPacket +public class RequestSetPledgeCrest implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(RequestSetPledgeCrest.class.getName()); @@ -37,22 +39,22 @@ public class RequestSetPledgeCrest extends GameClientPacket private byte[] _data; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _length = readD(); + _length = packet.readD(); if ((_length < 0) || (_length > 256)) { - return; + return false; } - _data = new byte[_length]; - readB(_data); + _data = packet.readB(_length); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetSeed.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetSeed.java index 40847b8f46..32c2935369 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetSeed.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetSeed.java @@ -20,45 +20,49 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.SeedProduction; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) dd [ddd] d - manor id d - size [ d - seed id d - sales d - price ] * @author l3x */ -public class RequestSetSeed extends GameClientPacket +public class RequestSetSeed implements IClientIncomingPacket { private int _size; private int _manorId; private int[] _items; // _size*3 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _manorId = readD(); - _size = readD(); - if (((_size * 12) > _buf.remaining()) || (_size > 500) || (_size < 1)) + _manorId = packet.readD(); + _size = packet.readD(); + if (((_size * 12) > packet.getReadableBytes()) || (_size > 500) || (_size < 1)) { _size = 0; - return; + return false; } _items = new int[_size * 3]; for (int i = 0; i < _size; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 3) + 0] = itemId; - final int sales = readD(); + final int sales = packet.readD(); _items[(i * 3) + 1] = sales; - final int price = readD(); + final int price = packet.readD(); _items[(i * 3) + 2] = price; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_size < 1) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutDel.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutDel.java index a6481ae4b7..38cae8f5ff 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutDel.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutDel.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestShortCutDel extends GameClientPacket +public class RequestShortCutDel implements IClientIncomingPacket { private int _slot; private int _page; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - final int id = readD(); + final int id = packet.readD(); _slot = id % 12; _page = id / 12; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index 7f97b456fe..8ac772aa12 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -16,11 +16,13 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ShortCut; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; -public class RequestShortCutReg extends GameClientPacket +public class RequestShortCutReg implements IClientIncomingPacket { private int _type; private int _id; @@ -30,20 +32,21 @@ public class RequestShortCutReg extends GameClientPacket private int _unk; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _type = readD(); - final int slot = readD(); - _id = readD(); - _unk = readD(); + _type = packet.readD(); + final int slot = packet.readD(); + _id = packet.readD(); + _unk = packet.readD(); _slot = slot % 12; _page = slot / 12; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -57,7 +60,7 @@ public class RequestShortCutReg extends GameClientPacket case 0x05: // recipe { final ShortCut sc = new ShortCut(_slot, _page, _type, _id, -1); - sendPacket(new ShortCutRegister(sc)); + player.sendPacket(new ShortCutRegister(sc)); player.registerShortCut(sc); break; } @@ -67,7 +70,7 @@ public class RequestShortCutReg extends GameClientPacket if (level > 0) { final ShortCut sc = new ShortCut(_slot, _page, _type, _id, level); - sendPacket(new ShortCutRegister(sc)); + player.sendPacket(new ShortCutRegister(sc)); player.registerShortCut(sc); } break; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowBoard.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowBoard.java index cb71e1a90e..fe4f506ce7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowBoard.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowBoard.java @@ -17,9 +17,11 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.communitybbs.CommunityBoard; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestShowBoard extends GameClientPacket +public class RequestShowBoard implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unknown; @@ -28,14 +30,15 @@ public class RequestShowBoard extends GameClientPacket * packet type id 0x57 sample 57 01 00 00 00 // unknown (always 1?) format: cd */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unknown = readD(); + _unknown = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - CommunityBoard.getInstance().handleCommands(getClient(), Config.BBS_DEFAULT); + CommunityBoard.getInstance().handleCommands(client, Config.BBS_DEFAULT); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowMiniMap.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowMiniMap.java index a6ffe2f23f..54d1df4ae9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowMiniMap.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowMiniMap.java @@ -16,25 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShowMiniMap; /** * sample format d * @version $Revision: 1 $ $Date: 2005/04/10 00:17:44 $ */ -public class RequestShowMiniMap extends GameClientPacket +public class RequestShowMiniMap implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected final void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeAttackerList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeAttackerList.java index 4d4469935e..b5e259a520 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeAttackerList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeAttackerList.java @@ -16,28 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; -import org.l2jmobius.gameserver.network.serverpackets.FortSiegeAttackerList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SiegeAttackerList; /** * @version $Revision: 1.3.4.2 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestSiegeAttackerList extends GameClientPacket +public class RequestSiegeAttackerList implements IClientIncomingPacket { private int _castleId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _castleId = readD(); + _castleId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_castleId < 100) { @@ -47,7 +49,7 @@ public class RequestSiegeAttackerList extends GameClientPacket return; } - sendPacket(new SiegeAttackerList(castle)); + client.sendPacket(new SiegeAttackerList(castle)); } else { @@ -57,7 +59,7 @@ public class RequestSiegeAttackerList extends GameClientPacket return; } - sendPacket(new FortSiegeAttackerList(fort)); + client.sendPacket(new SiegeAttackerList(fort)); } } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeDefenderList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeDefenderList.java index 5bc068043e..121c954ccd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeDefenderList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeDefenderList.java @@ -16,28 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; -import org.l2jmobius.gameserver.network.serverpackets.FortSiegeDefenderList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SiegeDefenderList; /** * @version $Revision: 1.3.4.2 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestSiegeDefenderList extends GameClientPacket +public class RequestSiegeDefenderList implements IClientIncomingPacket { private int _castleId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _castleId = readD(); + _castleId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_castleId < 100) { @@ -47,7 +49,7 @@ public class RequestSiegeDefenderList extends GameClientPacket return; } - sendPacket(new SiegeDefenderList(castle)); + client.sendPacket(new SiegeDefenderList(castle)); } else { @@ -57,7 +59,7 @@ public class RequestSiegeDefenderList extends GameClientPacket return; } - sendPacket(new FortSiegeDefenderList(fort)); + client.sendPacket(new SiegeDefenderList(fort)); } } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeInfo.java index c7268477e3..b3bb49d642 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeInfo.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -public class RequestSiegeInfo extends GameClientPacket +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + +public class RequestSiegeInfo implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // TODO this } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillList.java index 265490d3b7..fae0defef6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillList.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestSkillList extends GameClientPacket +public class RequestSkillList implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; @@ -30,20 +32,20 @@ public class RequestSkillList extends GameClientPacket private int _unk3; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // this is just a trigger packet. it has no content + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance cha = getClient().getPlayer(); - if (cha == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - cha.sendSkillList(); + player.sendSkillList(); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSocialAction.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSocialAction.java index f7b9c93b6b..076647da1a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSocialAction.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSocialAction.java @@ -17,27 +17,30 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class RequestSocialAction extends GameClientPacket +public class RequestSocialAction implements IClientIncomingPacket { private int _actionId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _actionId = readD(); + _actionId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestStartPledgeWar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestStartPledgeWar.java index 55f9317181..5365ed4925 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestStartPledgeWar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestStartPledgeWar.java @@ -17,28 +17,31 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestStartPledgeWar extends GameClientPacket +public class RequestStartPledgeWar implements IClientIncomingPacket { private String _pledgeName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _pledgeName = readS(); + _pledgeName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestStopPledgeWar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestStopPledgeWar.java index f0cbeafd69..26d68af603 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestStopPledgeWar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestStopPledgeWar.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -public class RequestStopPledgeWar extends GameClientPacket +public class RequestStopPledgeWar implements IClientIncomingPacket { private String _pledgeName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _pledgeName = readS(); + _pledgeName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPersonally.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPersonally.java index 784094110e..2fad1297c6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPersonally.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPersonally.java @@ -18,36 +18,39 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestSurrenderPersonally extends GameClientPacket +public class RequestSurrenderPersonally implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestSurrenderPersonally.class.getName()); private String _pledgeName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _pledgeName = readS(); + _pledgeName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - LOGGER.info("RequestSurrenderPersonally by " + getClient().getPlayer().getName() + " with " + _pledgeName); - final Clan playerClan = getClient().getPlayer().getClan(); + LOGGER.info("RequestSurrenderPersonally by " + player.getName() + " with " + _pledgeName); + final Clan playerClan = player.getClan(); final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName); if (playerClan == null) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPledgeWar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPledgeWar.java index 936b718295..0c3a500aa5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPledgeWar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPledgeWar.java @@ -18,29 +18,32 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestSurrenderPledgeWar extends GameClientPacket +public class RequestSurrenderPledgeWar implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestSurrenderPledgeWar.class.getName()); private String _pledgeName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _pledgeName = readS(); + _pledgeName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -60,7 +63,7 @@ public class RequestSurrenderPledgeWar extends GameClientPacket return; } - LOGGER.info("RequestSurrenderPledgeWar by " + getClient().getPlayer().getClan().getName() + " with " + _pledgeName); + LOGGER.info("RequestSurrenderPledgeWar by " + player.getClan().getName() + " with " + _pledgeName); if (!playerclan.isAtWarWith(clan.getClanId())) { player.sendMessage("You aren't at war with this clan."); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 2a9abaf730..cd0040e656 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -16,22 +16,25 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTargetCanceld extends GameClientPacket +public class RequestTargetCanceld implements IClientIncomingPacket { private int _unselect; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unselect = readH(); + _unselect = packet.readH(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player != null) { if (_unselect == 0) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialClientEvent.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialClientEvent.java index 06d079251c..212d0038ae 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialClientEvent.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialClientEvent.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTutorialClientEvent extends GameClientPacket +public class RequestTutorialClientEvent implements IClientIncomingPacket { int eventId = 0; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - eventId = readD(); + eventId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialLinkHtml.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialLinkHtml.java index 2d33993bdc..a2dbb78acf 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialLinkHtml.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialLinkHtml.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTutorialLinkHtml extends GameClientPacket +public class RequestTutorialLinkHtml implements IClientIncomingPacket { private String _bypass; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _bypass = readS(); + _bypass = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index de767f1276..0836e3dc5a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTutorialPassCmdToServer extends GameClientPacket +public class RequestTutorialPassCmdToServer implements IClientIncomingPacket { private String _bypass = null; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _bypass = readS(); + _bypass = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index 65ebe08eba..c9db48290e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTutorialQuestionMark extends GameClientPacket +public class RequestTutorialQuestionMark implements IClientIncomingPacket { int _number = 0; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _number = readD(); + _number = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestUnEquipItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestUnEquipItem.java index 9aa61f8f97..d3f82795ec 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestUnEquipItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestUnEquipItem.java @@ -16,16 +16,18 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestUnEquipItem extends GameClientPacket +public class RequestUnEquipItem implements IClientIncomingPacket { private int _slot; @@ -33,15 +35,16 @@ public class RequestUnEquipItem extends GameClientPacket * packet type id 0x11 format: cd */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _slot = readD(); + _slot = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestUserCommand.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestUserCommand.java index cee83dccf3..a3b1bf636b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestUserCommand.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestUserCommand.java @@ -18,26 +18,29 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.handler.IUserCommandHandler; import org.l2jmobius.gameserver.handler.UserCommandHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestUserCommand extends GameClientPacket +public class RequestUserCommand implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(RequestUserCommand.class.getName()); private int _command; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _command = readD(); + _command = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -46,7 +49,7 @@ public class RequestUserCommand extends GameClientPacket final IUserCommandHandler handler = UserCommandHandler.getInstance().getUserCommandHandler(_command); if (handler != null) { - handler.useUserCommand(_command, getClient().getPlayer()); + handler.useUserCommand(_command, player); } } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWearItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWearItem.java index c7625915dc..c5d8a461a3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWearItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWearItem.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.TradeController; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.model.StoreTradeList; @@ -32,13 +33,14 @@ import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; import org.l2jmobius.gameserver.util.Util; -public class RequestWearItem extends GameClientPacket +public class RequestWearItem implements IClientIncomingPacket { protected static final Logger LOGGER = Logger.getLogger(RequestWearItem.class.getName()); @@ -79,13 +81,13 @@ public class RequestWearItem extends GameClientPacket * Decrypt the RequestWearItem Client->Server Packet and Create _items table containing all ItemID to Wear. */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { // Read and Decrypt the RequestWearItem Client->Server Packet - _player = getClient().getPlayer(); - _unknow = readD(); - _listId = readD(); // List of ItemID to Wear - _count = readD(); // Number of Item to Wear + _player = client.getPlayer(); + _unknow = packet.readD(); + _listId = packet.readD(); // List of ItemID to Wear + _count = packet.readD(); // Number of Item to Wear if (_count < 0) { _count = 0; @@ -102,19 +104,21 @@ public class RequestWearItem extends GameClientPacket // Fill _items table with all ItemID to Wear for (int i = 0; i < _count; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[i] = itemId; } + + return true; } /** * Launch Wear action. */ @Override - protected void runImpl() + public void run(GameClient client) { // Get the current player and return if null - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -177,7 +181,7 @@ public class RequestWearItem extends GameClientPacket // Check if the quantity of Item to Wear if ((_count < 1) || (_listId >= 1000000)) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithDrawalParty.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithDrawalParty.java index d081f3e27f..b95084f0f0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithDrawalParty.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithDrawalParty.java @@ -16,26 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExClosePartyRoom; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; -public class RequestWithDrawalParty extends GameClientPacket +public class RequestWithDrawalParty implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawPartyRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawPartyRoom.java index c7f8426e96..bfb469a5f7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawPartyRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawPartyRoom.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExClosePartyRoom; @@ -26,23 +28,24 @@ import org.l2jmobius.gameserver.network.serverpackets.ExClosePartyRoom; * Format (ch) dd * @author -Wooden- */ -public class RequestWithdrawPartyRoom extends GameClientPacket +public class RequestWithdrawPartyRoom implements IClientIncomingPacket { private int _roomid; @SuppressWarnings("unused") private int _unk1; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _roomid = readD(); - _unk1 = readD(); + _roomid = packet.readD(); + _unk1 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawalPledge.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawalPledge.java index d479ecb3ae..2aa3925d29 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawalPledge.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawalPledge.java @@ -17,25 +17,27 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListDelete; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestWithdrawalPledge extends GameClientPacket +public class RequestWithdrawalPledge implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWriteHeroWords.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWriteHeroWords.java index 8586b33a2e..0f79647f18 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWriteHeroWords.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestWriteHeroWords.java @@ -16,23 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format chS c (id) 0xD0 h (subid) 0x0C S the hero's words :) * @author -Wooden- */ -public class RequestWriteHeroWords extends GameClientPacket +public class RequestWriteHeroWords implements IClientIncomingPacket { @SuppressWarnings("unused") private String _heroWords; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _heroWords = readS(); + _heroWords = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 19a73c2d3b..3ceddc238f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -21,6 +21,7 @@ import java.util.StringTokenizer; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; @@ -31,12 +32,13 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance.PunishLevel; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class Say2 extends GameClientPacket +public class Say2 implements IClientIncomingPacket { private static final Logger LOGGER_CHAT = Logger.getLogger("chat"); @@ -85,17 +87,18 @@ public class Say2 extends GameClientPacket private String _target; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _text = readS(); - _type = readD(); - _target = _type == ChatType.WHISPER.getClientId() ? readS() : null; + _text = packet.readS(); + _type = packet.readD(); + _target = _type == ChatType.WHISPER.getClientId() ? packet.readS() : null; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { LOGGER.warning("[Say2.java] Active Character is null."); @@ -121,7 +124,7 @@ public class Say2 extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getSayAction().tryPerformAction("Say2")) + if (!client.getFloodProtectors().getSayAction().tryPerformAction("Say2")) { player.sendMessage("You cannot speak too fast."); return; @@ -234,7 +237,7 @@ public class Say2 extends GameClientPacket case SHOUT: { // Flood protect Say - if (!getClient().getFloodProtectors().getGlobalChat().tryPerformAction("global chat")) + if (!client.getFloodProtectors().getGlobalChat().tryPerformAction("global chat")) { return; } @@ -506,7 +509,7 @@ public class Say2 extends GameClientPacket else if (player.isHero()) { // Flood protect Hero Voice - if (!getClient().getFloodProtectors().getHeroVoice().tryPerformAction("hero voice")) + if (!client.getFloodProtectors().getHeroVoice().tryPerformAction("hero voice")) { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java index 131417731c..7ec2b23fbf 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.util.GMAudit; /** * This class handles all GM commands triggered by //command */ -public class SendBypassBuildCmd extends GameClientPacket +public class SendBypassBuildCmd implements IClientIncomingPacket { protected static final Logger LOGGER = Logger.getLogger(SendBypassBuildCmd.class.getName()); public static final int GM_MESSAGE = 9; @@ -37,15 +39,16 @@ public class SendBypassBuildCmd extends GameClientPacket private String _command; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _command = "admin_" + readS().trim(); + _command = "admin_" + packet.readS().trim(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || !player.isGM()) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseDepositList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseDepositList.java index 4ecb5222d9..234a50fd8a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseDepositList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseDepositList.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -26,6 +27,7 @@ import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.EtcItemType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.EnchantResult; @@ -33,7 +35,7 @@ import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; -public class SendWareHouseDepositList extends GameClientPacket +public class SendWareHouseDepositList implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(SendWareHouseDepositList.class.getName()); @@ -41,12 +43,17 @@ public class SendWareHouseDepositList extends GameClientPacket private int[] _items; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _count = readD(); + if (!Config.ALLOW_WAREHOUSE) + { + return false; + } + + _count = packet.readD(); // check packet list size - if ((_count < 0) || ((_count * 8) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + if ((_count < 0) || ((_count * 8) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; } @@ -54,28 +61,30 @@ public class SendWareHouseDepositList extends GameClientPacket _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final int objectId = readD(); + final int objectId = packet.readD(); _items[(i * 2) + 0] = objectId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 0)) { _count = 0; - return; + return false; } _items[(i * 2) + 1] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_items == null) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -93,7 +102,7 @@ public class SendWareHouseDepositList extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("deposit")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("deposit")) { player.sendMessage("You depositing items too fast."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseWithDrawList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseWithDrawList.java index ecd4acda8a..970a75eb9d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseWithDrawList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseWithDrawList.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -26,6 +27,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.EnchantResult; @@ -33,7 +35,7 @@ import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; -public class SendWareHouseWithDrawList extends GameClientPacket +public class SendWareHouseWithDrawList implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(SendWareHouseWithDrawList.class.getName()); @@ -41,41 +43,43 @@ public class SendWareHouseWithDrawList extends GameClientPacket private int[] _items; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _count = readD(); - if ((_count < 0) || ((_count * 8) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _count = packet.readD(); + if ((_count < 0) || ((_count * 8) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; - return; + return false; } _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final int objectId = readD(); + final int objectId = packet.readD(); _items[(i * 2) + 0] = objectId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 0)) { _count = 0; - return; + return false; } _items[(i * 2) + 1] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("withdraw")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("withdraw")) { player.sendMessage("You withdrawing items too fast."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java index 24b2915858..bb6910ae58 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java @@ -17,54 +17,58 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreManageListBuy; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreMsgBuy; -public class SetPrivateStoreListBuy extends GameClientPacket +public class SetPrivateStoreListBuy implements IClientIncomingPacket { private int _count; private int[] _items; // count * 3 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _count = readD(); - if ((_count <= 0) || ((_count * 12) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _count = packet.readD(); + if ((_count <= 0) || ((_count * 12) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; - return; + return false; } _items = new int[_count * 4]; for (int x = 0; x < _count; x++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[(x * 4) + 0] = itemId; - _items[((x * 4) + 3)] = readH(); - // readH(); // it's the enchant value, but the interlude client has a bug, so it dnt send back the correct enchant value - readH(); // TODO analyse this - final long cnt = readD(); + _items[((x * 4) + 3)] = packet.readH(); + // packet.readH(); // it's the enchant value, but the interlude client has a bug, so it did not send back the correct enchant value + packet.readH(); // TODO analyse this + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 0)) { _count = 0; - return; + return false; } _items[(x * 4) + 1] = (int) cnt; - final int price = readD(); + final int price = packet.readD(); _items[(x * 4) + 2] = price; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListSell.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListSell.java index 4f0bfe967c..e39ff79ec9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListSell.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListSell.java @@ -17,54 +17,58 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreManageListSell; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreMsgSell; import org.l2jmobius.gameserver.util.Util; -public class SetPrivateStoreListSell extends GameClientPacket +public class SetPrivateStoreListSell implements IClientIncomingPacket { private int _count; private boolean _packageSale; private int[] _items; // count * 3 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _packageSale = readD() == 1; - _count = readD(); - if ((_count <= 0) || ((_count * 12) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _packageSale = packet.readD() == 1; + _count = packet.readD(); + if ((_count <= 0) || ((_count * 12) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; - return; + return false; } _items = new int[_count * 3]; for (int x = 0; x < _count; x++) { - final int objectId = readD(); + final int objectId = packet.readD(); _items[(x * 3) + 0] = objectId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 0)) { _count = 0; - return; + return false; } _items[(x * 3) + 1] = (int) cnt; - final int price = readD(); + final int price = packet.readD(); _items[(x * 3) + 2] = price; } + + return false; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -113,8 +117,8 @@ public class SetPrivateStoreListSell extends GameClientPacket final int price = _items[(i * 3) + 2]; if (price <= 0) { - final String msgErr = "[SetPrivateStoreListSell] player " + getClient().getPlayer().getName() + " tried an overflow exploit (use PHX), ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[SetPrivateStoreListSell] player " + player.getName() + " tried an overflow exploit (use PHX), ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); _count = 0; return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgBuy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgBuy.java index 0049ec254b..9dbb628c86 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgBuy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgBuy.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreMsgBuy; -public class SetPrivateStoreMsgBuy extends GameClientPacket +public class SetPrivateStoreMsgBuy implements IClientIncomingPacket { private String _storeMsg; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _storeMsg = readS(); + _storeMsg = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (player.getBuyList() == null)) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgSell.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgSell.java index bdf6e5341c..e6c827ab17 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgSell.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgSell.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreMsgSell; -public class SetPrivateStoreMsgSell extends GameClientPacket +public class SetPrivateStoreMsgSell implements IClientIncomingPacket { private String _storeMsg; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _storeMsg = readS(); + _storeMsg = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (player.getSellList() == null)) { return; @@ -41,7 +44,7 @@ public class SetPrivateStoreMsgSell extends GameClientPacket if (_storeMsg.length() < 30) { player.getSellList().setTitle(_storeMsg); - sendPacket(new PrivateStoreMsgSell(player)); + player.sendPacket(new PrivateStoreMsgSell(player)); } } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SnoopQuit.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SnoopQuit.java index 9930e066ee..78bccc8b08 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SnoopQuit.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SnoopQuit.java @@ -16,33 +16,36 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; /** * @author -Wooden- */ -public class SnoopQuit extends GameClientPacket +public class SnoopQuit implements IClientIncomingPacket { private int _snoopID; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _snoopID = readD(); + _snoopID = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance target = (PlayerInstance) World.getInstance().findObject(_snoopID); - if (target == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - final PlayerInstance player = getClient().getPlayer(); - if (player == null) + final PlayerInstance target = (PlayerInstance) World.getInstance().findObject(_snoopID); + if (target == null) { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/StartRotating.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/StartRotating.java index fdd561838d..d36c3cf925 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/StartRotating.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/StartRotating.java @@ -17,33 +17,38 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.BeginRotation; -public class StartRotating extends GameClientPacket +public class StartRotating implements IClientIncomingPacket { private int _degree; private int _side; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _degree = readD(); - _side = readD(); + _degree = packet.readD(); + _side = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (!Config.ENABLE_KEYBOARD_MOVEMENT) { return; } - if (getClient().getPlayer() == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - getClient().getPlayer().broadcastPacket(new BeginRotation(getClient().getPlayer(), _degree, _side, 0)); + player.broadcastPacket(new BeginRotation(player, _degree, _side, 0)); } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdCharacterInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdCharacterInfo.java index 51592f5b3a..67fc51f1ed 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdCharacterInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdCharacterInfo.java @@ -16,23 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format chS c: (id) 0x39 h: (subid) 0x00 S: the character name (or maybe cmd string ?) * @author -Wooden- */ -public class SuperCmdCharacterInfo extends GameClientPacket +public class SuperCmdCharacterInfo implements IClientIncomingPacket { @SuppressWarnings("unused") private String _characterName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _characterName = readS(); + _characterName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdServerStatus.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdServerStatus.java index e2b9b65625..a836ccc02d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdServerStatus.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdServerStatus.java @@ -16,20 +16,23 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format ch c: (id) 0x39 h: (subid) 0x02 * @author -Wooden- */ -public class SuperCmdServerStatus extends GameClientPacket +public class SuperCmdServerStatus implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger packet + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdSummonCmd.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdSummonCmd.java index 7ebc8a41fa..7efd315087 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdSummonCmd.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdSummonCmd.java @@ -16,23 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format chS c: (id) 0x39 h: (subid) 0x01 S: the summon name (or maybe cmd string ?) * @author -Wooden- */ -public class SuperCmdSummonCmd extends GameClientPacket +public class SuperCmdSummonCmd implements IClientIncomingPacket { @SuppressWarnings("unused") private String _summonName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _summonName = readS(); + _summonName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeDone.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeDone.java index 9e9e38d106..a8fe9a38f1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeDone.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeDone.java @@ -16,33 +16,36 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class TradeDone extends GameClientPacket +public class TradeDone implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("trade")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("trade")) { player.sendMessage("You are trading too fast."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java index 91391bf5a7..03d0278f1a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java @@ -17,29 +17,32 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SendTradeRequest; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class TradeRequest extends GameClientPacket +public class TradeRequest implements IClientIncomingPacket { private int _objectId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 34409756e2..07531e44b1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.handler.IItemHandler; @@ -36,6 +37,7 @@ import org.l2jmobius.gameserver.model.items.Weapon; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.WeaponType; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -45,7 +47,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.util.Util; -public class UseItem extends GameClientPacket +public class UseItem implements IClientIncomingPacket { private int _objectId; @@ -75,15 +77,16 @@ public class UseItem extends GameClientPacket } @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -107,12 +110,12 @@ public class UseItem extends GameClientPacket // Flood protect UseItem if (item.isPotion()) { - if (!getClient().getFloodProtectors().getUsePotion().tryPerformAction("use potion")) + if (!client.getFloodProtectors().getUsePotion().tryPerformAction("use potion")) { return; } } - else if (!getClient().getFloodProtectors().getUseItem().tryPerformAction("use item")) + else if (!client.getFloodProtectors().getUseItem().tryPerformAction("use item")) { return; } @@ -190,7 +193,7 @@ public class UseItem extends GameClientPacket if (player.isFishing() && ((itemId < 6535) || (itemId > 6540))) { // You cannot do anything else while fishing - getClient().getPlayer().sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_DO_THAT_WHILE_FISHING_3)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_DO_THAT_WHILE_FISHING_3)); return; } @@ -273,7 +276,7 @@ public class UseItem extends GameClientPacket { final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS); sm.addItemName(itemId); - getClient().getPlayer().sendPacket(sm); + player.sendPacket(sm); return; } @@ -282,7 +285,7 @@ public class UseItem extends GameClientPacket { final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_MAY_NOT_EQUIP_A_PET_ITEM); // You cannot equip a pet item. sm.addItemName(itemId); - getClient().getPlayer().sendPacket(sm); + player.sendPacket(sm); return; } @@ -613,7 +616,7 @@ public class UseItem extends GameClientPacket player.getInventory().setPaperdollItem(Inventory.PAPERDOLL_LHAND, item); player.broadcastUserInfo(); // Send a Server->Client packet ItemList to this PlayerInstance to update left hand equipement - sendPacket(new ItemList(player, false)); + player.sendPacket(new ItemList(player, false)); } else { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ValidatePosition.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ValidatePosition.java index 26911af582..9e8efd4ca7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ValidatePosition.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/ValidatePosition.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.DoorData; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation; -public class ValidatePosition extends GameClientPacket +public class ValidatePosition implements IClientIncomingPacket { private int _x; private int _y; @@ -30,19 +32,20 @@ public class ValidatePosition extends GameClientPacket private int _heading; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _x = readD(); - _y = readD(); - _z = readD(); - _heading = readD(); - readD(); // vehicle id + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + _heading = packet.readD(); + packet.readD(); // vehicle id + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || player.isTeleporting() || player.inObserverMode()) { return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/IncomingPackets.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/IncomingPackets.java new file mode 100644 index 0000000000..fce8fd7deb --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/IncomingPackets.java @@ -0,0 +1,81 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.loginserver; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Supplier; + +import org.l2jmobius.commons.network.IConnectionState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IIncomingPackets; + +/** + * @author NosBit + */ +enum IncomingPackets implements IIncomingPackets +{ + NONE(0, null); + + public static final IncomingPackets[] PACKET_ARRAY; + + static + { + final short maxPacketId = (short) Arrays.stream(values()).mapToInt(IIncomingPackets::getPacketId).max().orElse(0); + PACKET_ARRAY = new IncomingPackets[maxPacketId + 1]; + for (IncomingPackets incomingPacket : values()) + { + PACKET_ARRAY[incomingPacket.getPacketId()] = incomingPacket; + } + } + + private short _packetId; + private Supplier> _incomingPacketFactory; + private Set _connectionStates; + + IncomingPackets(int packetId, Supplier> incomingPacketFactory, IConnectionState... connectionStates) + { + // packetId is an unsigned byte + if (packetId > 0xFF) + { + throw new IllegalArgumentException("packetId must not be bigger than 0xFF"); + } + + _packetId = (short) packetId; + _incomingPacketFactory = incomingPacketFactory != null ? incomingPacketFactory : () -> null; + _connectionStates = new HashSet<>(Arrays.asList(connectionStates)); + } + + @Override + public int getPacketId() + { + return _packetId; + } + + @Override + public IIncomingPacket newIncomingPacket() + { + return _incomingPacketFactory.get(); + } + + @Override + public Set getConnectionStates() + { + return _connectionStates; + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/LoginServerHandler.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/LoginServerHandler.java new file mode 100644 index 0000000000..5eb5d384a9 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/LoginServerHandler.java @@ -0,0 +1,34 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.loginserver; + +import org.l2jmobius.commons.network.ChannelInboundHandler; +import org.l2jmobius.commons.network.IIncomingPacket; + +import io.netty.channel.ChannelHandlerContext; + +/** + * @author NosBit + */ +public class LoginServerHandler extends ChannelInboundHandler +{ + @Override + protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket msg) throws Exception + { + msg.run(this); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/LoginServerInitializer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/LoginServerInitializer.java new file mode 100644 index 0000000000..42f5df97f2 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/LoginServerInitializer.java @@ -0,0 +1,48 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.loginserver; + +import java.nio.ByteOrder; + +import org.l2jmobius.commons.network.codecs.LengthFieldBasedFrameEncoder; +import org.l2jmobius.commons.network.codecs.PacketDecoder; +import org.l2jmobius.commons.network.codecs.PacketEncoder; + +import io.netty.channel.ChannelInitializer; +import io.netty.channel.socket.SocketChannel; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; + +/** + * @author NosBit + */ +public class LoginServerInitializer extends ChannelInitializer +{ + private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); + private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2); + + @Override + protected void initChannel(SocketChannel ch) + { + final LoginServerHandler loginServerHandler = new LoginServerHandler(); + ch.pipeline().addLast("length-decoder", new LengthFieldBasedFrameDecoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2, 0, 2, -2, 2, false)); + ch.pipeline().addLast("length-encoder", LENGTH_ENCODER); + // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); + ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, loginServerHandler)); + ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); + ch.pipeline().addLast(loginServerHandler); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/LoginServerNetworkManager.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/LoginServerNetworkManager.java new file mode 100644 index 0000000000..d6dd35de81 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserver/LoginServerNetworkManager.java @@ -0,0 +1,80 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.loginserver; + +import java.util.logging.Logger; + +import org.l2jmobius.Config; +import org.l2jmobius.gameserver.network.EventLoopGroupManager; + +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelOption; +import io.netty.channel.socket.nio.NioSocketChannel; + +/** + * @author NosBit + */ +public class LoginServerNetworkManager +{ + private static final Logger LOGGER = Logger.getLogger(LoginServerNetworkManager.class.getName()); + + private final Bootstrap _bootstrap; + + private ChannelFuture _channelFuture; + + public LoginServerNetworkManager() + { + //@formatter:off + _bootstrap = new Bootstrap() + .group(EventLoopGroupManager.getInstance().getWorkerGroup()) + .channel(NioSocketChannel.class) + .option(ChannelOption.SO_KEEPALIVE, true) + .handler(new LoginServerInitializer()); + //@formatter:on + } + + public ChannelFuture getChannelFuture() + { + return _channelFuture; + } + + public void connect() throws InterruptedException + { + if ((_channelFuture != null) && _channelFuture.isSuccess()) + { + return; + } + _channelFuture = _bootstrap.connect(Config.GAME_SERVER_LOGIN_HOST, Config.GAME_SERVER_LOGIN_PORT).sync(); + LOGGER.info("Connected to " + Config.GAME_SERVER_LOGIN_HOST + ":" + Config.GAME_SERVER_LOGIN_PORT); + } + + public void disconnect() throws InterruptedException + { + _channelFuture.channel().close().sync(); + } + + public static LoginServerNetworkManager getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final LoginServerNetworkManager INSTANCE = new LoginServerNetworkManager(); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerBasePacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerBasePacket.java deleted file mode 100644 index 5d3fa59048..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerBasePacket.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.loginserverpackets; - -/** - * @author -Wooden- - */ -public abstract class LoginServerBasePacket -{ - private final byte[] _decrypt; - private int _off; - - public LoginServerBasePacket(byte[] decrypt) - { - _decrypt = decrypt; - _off = 1; // skip packet type id - } - - public int readD() - { - int result = _decrypt[_off++] & 0xff; - result |= (_decrypt[_off++] << 8) & 0xff00; - result |= (_decrypt[_off++] << 0x10) & 0xff0000; - result |= (_decrypt[_off++] << 0x18) & 0xff000000; - return result; - } - - public int readC() - { - final int result = _decrypt[_off++] & 0xff; - return result; - } - - public int readH() - { - int result = _decrypt[_off++] & 0xff; - result |= (_decrypt[_off++] << 8) & 0xff00; - return result; - } - - public double readF() - { - long result = _decrypt[_off++] & 0xff; - result |= (_decrypt[_off++] << 8) & 0xff00; - result |= (_decrypt[_off++] << 0x10) & 0xff0000; - result |= (_decrypt[_off++] << 0x18) & 0xff000000; - result |= (_decrypt[_off++] << 0x20) & 0xff00000000L; - result |= (_decrypt[_off++] << 0x28) & 0xff0000000000L; - result |= (_decrypt[_off++] << 0x30) & 0xff000000000000L; - result |= (_decrypt[_off++] << 0x38) & 0xff00000000000000L; - return Double.longBitsToDouble(result); - } - - public String readS() - { - String result = null; - try - { - result = new String(_decrypt, _off, _decrypt.length - _off, "UTF-16LE"); - result = result.substring(0, result.indexOf(0x00)); - _off += (result.length() * 2) + 2; - } - catch (Exception e) - { - e.printStackTrace(); - } - return result; - } - - public byte[] readB(int length) - { - final byte[] result = new byte[length]; - for (int i = 0; i < length; i++) - { - result[i] = _decrypt[_off + i]; - } - _off += length; - return result; - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/AuthRequest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/AuthRequest.java similarity index 92% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/AuthRequest.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/AuthRequest.java index 83d1785144..79f17f26ee 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/AuthRequest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/AuthRequest.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; public class AuthRequest extends GameServerBasePacket { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/BlowFishKey.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/BlowFishKey.java similarity index 92% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/BlowFishKey.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/BlowFishKey.java index 15028c42cc..0f2562b219 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/BlowFishKey.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/BlowFishKey.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; import java.security.GeneralSecurityException; import java.security.interfaces.RSAPublicKey; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/ChangeAccessLevel.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ChangeAccessLevel.java similarity index 91% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/ChangeAccessLevel.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ChangeAccessLevel.java index 1d84b4be62..3643417d19 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/ChangeAccessLevel.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ChangeAccessLevel.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; /** * @author -Wooden- diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/GameServerBasePacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/GameServerBasePacket.java similarity index 93% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/GameServerBasePacket.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/GameServerBasePacket.java index 4ea4ec1ff8..507c45113c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/GameServerBasePacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/GameServerBasePacket.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerAuthRequest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerAuthRequest.java similarity index 91% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerAuthRequest.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerAuthRequest.java index 4bec61dd8a..9b920fb91f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerAuthRequest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerAuthRequest.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; import org.l2jmobius.gameserver.LoginServerThread.SessionKey; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerInGame.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerInGame.java similarity index 91% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerInGame.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerInGame.java index c6123dc150..d292e0210c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerInGame.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerInGame.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; import java.util.List; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerLogout.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerLogout.java similarity index 90% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerLogout.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerLogout.java index 197862130b..8f67ee2516 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerLogout.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerLogout.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; /** * @author -Wooden- diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/ServerStatus.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ServerStatus.java similarity index 93% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/ServerStatus.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ServerStatus.java index 7178274d8c..a435291897 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/ServerStatus.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ServerStatus.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; import java.util.ArrayList; import java.util.List; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/AuthResponse.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/AuthResponse.java similarity index 91% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/AuthResponse.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/AuthResponse.java index b7c66673e5..8dadd9adb2 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/AuthResponse.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/AuthResponse.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; /** * @author -Wooden- diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/InitLS.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/InitLS.java similarity index 90% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/InitLS.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/InitLS.java index 70d983faa7..36b48e75eb 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/InitLS.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/InitLS.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; public class InitLS extends LoginServerBasePacket { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/KickPlayer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/KickPlayer.java similarity index 90% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/KickPlayer.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/KickPlayer.java index e0a811d7f3..f751849361 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/KickPlayer.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/KickPlayer.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; public class KickPlayer extends LoginServerBasePacket { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerBasePacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/LoginServerBasePacket.java similarity index 93% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerBasePacket.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/LoginServerBasePacket.java index 5d3fa59048..5ab36e2ed2 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerBasePacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/LoginServerBasePacket.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; /** * @author -Wooden- diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerFail.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/LoginServerFail.java similarity index 91% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerFail.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/LoginServerFail.java index 32f9ad3abd..c7a6ed21ff 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerFail.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/LoginServerFail.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; public class LoginServerFail extends LoginServerBasePacket { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/PlayerAuthResponse.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/PlayerAuthResponse.java similarity index 90% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/PlayerAuthResponse.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/PlayerAuthResponse.java index 010ff5ff2c..02b46339ba 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/PlayerAuthResponse.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/login/PlayerAuthResponse.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; /** * @author -Wooden- diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AbstractServerBasePacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AbstractServerBasePacket.java deleted file mode 100644 index 92b3559246..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AbstractServerBasePacket.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -/** - * This class makes runImpl() and writeImpl() abstract for custom classes outside of this package - * @version $Revision: $ $Date: $ - * @author galun - */ -public abstract class AbstractServerBasePacket extends GameServerPacket -{ - @Override - public abstract void runImpl(); - - @Override - protected abstract void writeImpl(); -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ActionFailed.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ActionFailed.java index b9933e121d..a13e762e15 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ActionFailed.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ActionFailed.java @@ -16,16 +16,20 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ActionFailed extends GameServerPacket +public class ActionFailed implements IClientOutgoingPacket { public static final ActionFailed STATIC_PACKET = new ActionFailed(); @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x25); + OutgoingPackets.ACTION_FAILED.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AdminForgePacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AdminForgePacket.java index a2df9ca0c3..90f26af779 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AdminForgePacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AdminForgePacket.java @@ -20,11 +20,13 @@ import java.math.BigInteger; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; + /** * This class is made to create packets with any format * @author Maktakien */ -public class AdminForgePacket extends GameServerPacket +public class AdminForgePacket implements IClientOutgoingPacket { private final List _parts = new ArrayList<>(); @@ -41,49 +43,45 @@ public class AdminForgePacket extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { for (Part p : _parts) { - generate(p.b, p.str); + generate(packet, p.b, p.str); } + return true; } - /** - * @param b - * @param string - * @return - */ - public boolean generate(byte b, String string) + public boolean generate(PacketWriter packet, byte b, String string) { if ((b == 'C') || (b == 'c')) { - writeC(Integer.decode(string)); + packet.writeC(Integer.decode(string)); return true; } else if ((b == 'D') || (b == 'd')) { - writeD(Integer.decode(string)); + packet.writeD(Integer.decode(string)); return true; } else if ((b == 'H') || (b == 'h')) { - writeH(Integer.decode(string)); + packet.writeH(Integer.decode(string)); return true; } else if ((b == 'F') || (b == 'f')) { - writeF(Double.parseDouble(string)); + packet.writeF(Double.parseDouble(string)); return true; } else if ((b == 'S') || (b == 's')) { - writeS(string); + packet.writeS(string); return true; } else if ((b == 'B') || (b == 'b') || (b == 'X') || (b == 'x')) { - writeB(new BigInteger(string).toByteArray()); + packet.writeB(new BigInteger(string).toByteArray()); return true; } return false; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AllyCrest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AllyCrest.java index dda935d5bb..05156dff5c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AllyCrest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AllyCrest.java @@ -16,7 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.cache.CrestCache; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @@ -29,7 +31,7 @@ import org.l2jmobius.gameserver.cache.CrestCache; * format dd x...x * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class AllyCrest extends GameServerPacket +public class AllyCrest implements IClientOutgoingPacket { private final int _crestId; private final byte[] _data; @@ -41,18 +43,19 @@ public class AllyCrest extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xae); - writeD(_crestId); + OutgoingPackets.ALLY_CREST.writeId(packet); + packet.writeD(_crestId); if (_data != null) { - writeD(_data.length); - writeB(_data); + packet.writeD(_data.length); + packet.writeB(_data); } else { - writeD(0); + packet.writeD(0); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AllyInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AllyInfo.java index e05157eab9..be55dec350 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AllyInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AllyInfo.java @@ -16,12 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.network.SystemMessageId; -public class AllyInfo extends GameServerPacket +public class AllyInfo implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -31,18 +32,12 @@ public class AllyInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - final PlayerInstance player = getClient().getPlayer(); - if (player == null) - { - return; - } - - if (player.getAllyId() == 0) + if (_player.getAllyId() == 0) { _player.sendPacket(SystemMessageId.YOU_ARE_NOT_CURRENTLY_ALLIED_WITH_ANY_CLANS); - return; + return false; } // ============ @@ -105,5 +100,6 @@ public class AllyInfo extends GameServerPacket // ========================= sm = new SystemMessage(SystemMessageId.EMPTY_5); _player.sendPacket(sm); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillInfo.java index dc448a696f..50af6e3468 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillInfo.java @@ -19,6 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * * sample @@ -30,7 +33,7 @@ import java.util.List; * format ddd d (dddd) * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class AquireSkillInfo extends GameServerPacket +public class AquireSkillInfo implements IClientOutgoingPacket { private final List _reqs; private final int _id; @@ -69,22 +72,21 @@ public class AquireSkillInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x8b); - writeD(_id); - writeD(_level); - writeD(_spCost); - writeD(_mode); // c4 - - writeD(_reqs.size()); - + OutgoingPackets.AQUIRE_SKILL_INFO.writeId(packet); + packet.writeD(_id); + packet.writeD(_level); + packet.writeD(_spCost); + packet.writeD(_mode); // c4 + packet.writeD(_reqs.size()); for (Req temp : _reqs) { - writeD(temp.type); - writeD(temp.itemId); - writeD(temp.count); - writeD(temp.unk); + packet.writeD(temp.type); + packet.writeD(temp.itemId); + packet.writeD(temp.count); + packet.writeD(temp.unk); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillList.java index 825070c5d1..1fd9ea4a01 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillList.java @@ -19,13 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample a3 05000000 03000000 03000000 06000000 3c000000 00000000 power strike 10000000 02000000 06000000 3c000000 00000000 mortal blow 38000000 04000000 06000000 36010000 00000000 power shot 4d000000 01000000 01000000 98030000 01000000 ATTACK aura 920sp 8e000000 03000000 03000000 cc010000 00000000 * Armor Mastery format d (ddddd) skillid, level, maxlevel?, C4 format changes: 0000: [8a] [00 00 00 00] [35 00 00 00] 92 00 00 00 01 00 00 .....5.......... ^^^^^^^^^^^^^ 0010: 00 2d 00 00 00 04 01 00 00 00 00 00 00 a4 00 00 .-.............. 0020: 00 01 00 00 00 03 00 00 00 e4 0c 00 00 00 00 00 * ................ 0030: 00 d4 00 00 00 01 00 00 00 06 00 00 00 08 52 00 ..............R. * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/27 15:29:57 $ */ -public class AquireSkillList extends GameServerPacket +public class AquireSkillList implements IClientOutgoingPacket { public enum skillType { @@ -67,19 +70,19 @@ public class AquireSkillList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x8a); - writeD(_fishingSkills.ordinal()); // c4 : C5 : 0: usuall 1: fishing 2: clans - writeD(_skills.size()); - + OutgoingPackets.AQUIRE_SKILL_LIST.writeId(packet); + packet.writeD(_fishingSkills.ordinal()); // c4 : C5 : 0: usual 1: fishing 2: clans + packet.writeD(_skills.size()); for (Skill temp : _skills) { - writeD(temp.id); - writeD(temp.nextLevel); - writeD(temp.maxLevel); - writeD(temp.spCost); - writeD(temp.requirements); + packet.writeD(temp.id); + packet.writeD(temp.nextLevel); + packet.writeD(temp.maxLevel); + packet.writeD(temp.spCost); + packet.writeD(temp.requirements); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinAlly.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinAlly.java index fd0295f17f..71d3d8dcd8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinAlly.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinAlly.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample *

    @@ -24,7 +27,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * format cdd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AskJoinAlly extends GameServerPacket +public class AskJoinAlly implements IClientOutgoingPacket { private final int _requestorId; private final String _requestorName; @@ -38,12 +41,13 @@ public class AskJoinAlly extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa8); - writeD(_requestorId); - writeS(_requestorName); - writeS(""); - writeS(_requestorAllyName); + OutgoingPackets.ASK_JOIN_ALLY.writeId(packet); + packet.writeD(_requestorId); + packet.writeS(_requestorName); + packet.writeS(""); + packet.writeS(_requestorAllyName); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinFriend.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinFriend.java index f433270153..4b22887647 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinFriend.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinFriend.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample *

    @@ -24,7 +27,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * format cdd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AskJoinFriend extends GameServerPacket +public class AskJoinFriend implements IClientOutgoingPacket { private final String _requestorName; @@ -38,10 +41,11 @@ public class AskJoinFriend extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x7d); - writeS(_requestorName); - writeD(0); + OutgoingPackets.ASK_JOIN_FRIEND.writeId(packet); + packet.writeS(_requestorName); + packet.writeD(0); + return false; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinParty.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinParty.java index 1967078efa..6c4d98d8fd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinParty.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinParty.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample *

    @@ -24,7 +27,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * format cdd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AskJoinParty extends GameServerPacket +public class AskJoinParty implements IClientOutgoingPacket { private final String _requestorName; private final int _itemDistribution; @@ -40,10 +43,11 @@ public class AskJoinParty extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x39); - writeS(_requestorName); - writeD(_itemDistribution); + OutgoingPackets.ASK_JOIN_PARTY.writeId(packet); + packet.writeS(_requestorName); + packet.writeD(_itemDistribution); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinPledge.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinPledge.java index 7bdb006b9f..31a426f386 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinPledge.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinPledge.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class AskJoinPledge extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class AskJoinPledge implements IClientOutgoingPacket { private final int _requestorObjId; private final String _pledgeName; @@ -28,10 +31,11 @@ public class AskJoinPledge extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x32); - writeD(_requestorObjId); - writeS(_pledgeName); + OutgoingPackets.ASK_JOIN_PLEDGE.writeId(packet); + packet.writeD(_requestorObjId); + packet.writeS(_pledgeName); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Attack.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Attack.java index ccb7590d2d..0347dc2bc2 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Attack.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Attack.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 06 8f19904b 2522d04b 00000000 80 950c0000 4af50000 08f2ffff 0000 - 0 damage (missed 0x80) 06 85071048 bc0e504b 32000000 10 fc41ffff fd240200 a6f5ffff 0100 bc0e504b 33000000 10 3.... format dddc dddh (ddc) * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class Attack extends GameServerPacket +public class Attack implements IClientOutgoingPacket { private class Hit { @@ -110,23 +112,23 @@ public class Attack extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x05); - - writeD(_attackerObjId); - writeD(_hits[0]._targetId); - writeD(_hits[0]._damage); - writeC(_hits[0]._flags); - writeD(_x); - writeD(_y); - writeD(_z); - writeH(_hits.length - 1); + OutgoingPackets.ATTACK.writeId(packet); + packet.writeD(_attackerObjId); + packet.writeD(_hits[0]._targetId); + packet.writeD(_hits[0]._damage); + packet.writeC(_hits[0]._flags); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeH(_hits.length - 1); for (int i = 1; i < _hits.length; i++) { - writeD(_hits[i]._targetId); - writeD(_hits[i]._damage); - writeC(_hits[i]._flags); + packet.writeD(_hits[i]._targetId); + packet.writeD(_hits[i]._damage); + packet.writeC(_hits[i]._flags); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AuthLoginFail.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AuthLoginFail.java index c51cae6ac7..95eb85a868 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AuthLoginFail.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AuthLoginFail.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * format d * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class AuthLoginFail extends GameServerPacket +public class AuthLoginFail implements IClientOutgoingPacket { public static final int NO_TEXT = 0; public static final int SYSTEM_ERROR_LOGIN_LATER = 1; @@ -45,9 +48,10 @@ public class AuthLoginFail extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x14); - writeD(_reason); + OutgoingPackets.AUTH_LOGIN_FAIL.writeId(packet); + packet.writeD(_reason); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStart.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStart.java index fc83e16f88..ddb2b83055 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStart.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStart.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AutoAttackStart extends GameServerPacket +public class AutoAttackStart implements IClientOutgoingPacket { private final int _targetObjId; @@ -32,9 +35,10 @@ public class AutoAttackStart extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2b); - writeD(_targetObjId); + OutgoingPackets.AUTO_ATTACK_START.writeId(packet); + packet.writeD(_targetObjId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStop.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStop.java index e4d1d79690..65845675a7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStop.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStop.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AutoAttackStop extends GameServerPacket +public class AutoAttackStop implements IClientOutgoingPacket { private final int _targetObjId; @@ -32,9 +35,10 @@ public class AutoAttackStop extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2c); - writeD(_targetObjId); + OutgoingPackets.AUTO_ATTACK_STOP.writeId(packet); + packet.writeD(_targetObjId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BeginRotation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BeginRotation.java index e4e3137f6c..04f2ec6912 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BeginRotation.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BeginRotation.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class BeginRotation extends GameServerPacket +public class BeginRotation implements IClientOutgoingPacket { private final int _objectId; private final int _degree; @@ -34,15 +36,16 @@ public class BeginRotation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x62); - writeD(_objectId); - writeD(_degree); - writeD(_side); + OutgoingPackets.BEGIN_ROTATION.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_degree); + packet.writeD(_side); if (_speed != 0) { - writeD(_speed); + packet.writeD(_speed); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BuyList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BuyList.java index 83569db37a..2435e5258d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BuyList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BuyList.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StoreTradeList; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 1d 1e 00 00 00 // ?? 5c 4a a0 7c // buy list id 02 00 // item count 04 00 // itemType1 0-weapon/ring/earring/necklace 1-armor/shield 4-item/questitem/adena 00 00 00 00 // objectid 32 04 00 00 // itemid 00 00 00 00 // count 05 00 // itemType2 0-weapon 1-shield/armor 2-ring/earring/necklace * 3-questitem 4-adena 5-item 00 00 60 09 00 00 // price 00 00 00 00 00 00 b6 00 00 00 00 00 00 00 00 00 00 00 80 00 // body slot these 4 values are only used if itemtype1 = 0 or 1 00 00 // 00 00 // 00 00 // 50 c6 0c 00 format dd h (h dddhh hhhh d) revision 377 format dd h (h dddhh dhhh d) * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class BuyList extends GameServerPacket +public class BuyList implements IClientOutgoingPacket { private final int _listId; private final ItemInstance[] _list; @@ -60,56 +62,57 @@ public class BuyList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x11); - writeD(_money); // current money - writeD(_listId); + OutgoingPackets.BUY_LIST.writeId(packet); + packet.writeD(_money); // current money + packet.writeD(_listId); - writeH(_list.length); + packet.writeH(_list.length); for (ItemInstance item : _list) { if ((item.getCount() > 0) || (item.getCount() == -1)) { - writeH(item.getItem().getType1()); // item type1 - writeD(item.getObjectId()); - writeD(item.getItemId()); + packet.writeH(item.getItem().getType1()); // item type1 + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); if (item.getCount() < 0) { - writeD(0x00); // max amount of items that a player can buy at a time (with this itemid) + packet.writeD(0x00); // max amount of items that a player can buy at a time (with this itemid) } else { - writeD(item.getCount()); + packet.writeD(item.getCount()); } - writeH(item.getItem().getType2()); // item type2 - writeH(0x00); // ? + packet.writeH(item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? if (item.getItem().getType1() != Item.TYPE1_ITEM_QUESTITEM_ADENA) { - writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(item.getEnchantLevel()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getEnchantLevel()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); } else { - writeD(0x00); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(0x00); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(0x00); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(0x00); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); } if ((item.getItemId() >= 3960) && (item.getItemId() <= 4026)) { - writeD((int) (item.getPriceToSell() * Config.RATE_SIEGE_GUARDS_PRICE * (1 + _taxRate))); + packet.writeD((int) (item.getPriceToSell() * Config.RATE_SIEGE_GUARDS_PRICE * (1 + _taxRate))); } else { - writeD((int) (item.getPriceToSell() * (1 + _taxRate))); + packet.writeD((int) (item.getPriceToSell() * (1 + _taxRate))); } } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BuyListSeed.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BuyListSeed.java index fe2b0ccbd9..abb3a8f266 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BuyListSeed.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/BuyListSeed.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StoreTradeList; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: c ddh[hdddhhd] c - id (0xE8) d - money d - manor id h - size [ h - item type 1 d - object id d - item id d - count h - item type 2 h d - price ] * @author l3x */ -public class BuyListSeed extends GameServerPacket +public class BuyListSeed implements IClientOutgoingPacket { private final int _manorId; private List _list = new ArrayList<>(); @@ -40,24 +42,22 @@ public class BuyListSeed extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xE8); - - writeD(_money); // current money - writeD(_manorId); // manor id - - writeH(_list.size()); // list length - + OutgoingPackets.BUY_LIST_SEED.writeId(packet); + packet.writeD(_money); // current money + packet.writeD(_manorId); // manor id + packet.writeH(_list.size()); // list length for (ItemInstance item : _list) { - writeH(0x04); // item->type1 - writeD(0x00); // objectId - writeD(item.getItemId()); // item id - writeD(item.getCount()); // item count - writeH(0x04); // item->type2 - writeH(0x00); // unknown :) - writeD(item.getPriceToSell()); // price + packet.writeH(0x04); // item->type1 + packet.writeD(0x00); // objectId + packet.writeD(item.getItemId()); // item id + packet.writeD(item.getCount()); // item count + packet.writeH(0x04); // item->type2 + packet.writeH(0x00); // unknown :) + packet.writeD(item.getPriceToSell()); // price } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CameraMode.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CameraMode.java index b08b1f6f50..b18dac4cc3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CameraMode.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CameraMode.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class CameraMode extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class CameraMode implements IClientOutgoingPacket { private final int _mode; @@ -30,9 +33,10 @@ public class CameraMode extends GameServerPacket } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xf1); - writeD(_mode); + OutgoingPackets.CAMERA_MODE.writeId(packet); + packet.writeD(_mode); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChairSit.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChairSit.java index b9dd443658..6ca22d6870 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChairSit.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChairSit.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ChairSit extends GameServerPacket +public class ChairSit implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _staticObjectId; @@ -38,10 +40,11 @@ public class ChairSit extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe1); - writeD(_player.getObjectId()); - writeD(_staticObjectId); + OutgoingPackets.CHAIR_SIT.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_staticObjectId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChangeMoveType.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChangeMoveType.java index 40285f4b0d..db63fdbe5b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChangeMoveType.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChangeMoveType.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 3e 2a 89 00 4c 01 00 00 00 .|... format dd * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class ChangeMoveType extends GameServerPacket +public class ChangeMoveType implements IClientOutgoingPacket { public static final int WALK = 0; public static final int RUN = 1; @@ -37,11 +39,12 @@ public class ChangeMoveType extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2e); - writeD(_objectId); - writeD(_running ? RUN : WALK); - writeD(0); // c2 + OutgoingPackets.CHANGE_MOVE_TYPE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_running ? RUN : WALK); + packet.writeD(0); // c2 + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChangeWaitType.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChangeWaitType.java index ef8c803c9e..7d792654d8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChangeWaitType.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChangeWaitType.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 3f 2a 89 00 4c 01 00 00 00 0a 15 00 00 66 fe 00 ?*..L........f.. 0010: 00 7c f1 ff ff .|... format dd ddd * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class ChangeWaitType extends GameServerPacket +public class ChangeWaitType implements IClientOutgoingPacket { private final int _objectId; private final int _moveType; @@ -45,13 +47,14 @@ public class ChangeWaitType extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2f); - writeD(_objectId); - writeD(_moveType); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.CHANGE_WAIT_TYPE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_moveType); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateFail.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateFail.java index 95392879ac..cdb6a948d9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateFail.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateFail.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharCreateFail extends GameServerPacket +public class CharCreateFail implements IClientOutgoingPacket { public static final int REASON_CREATION_FAILED = 0x00; public static final int REASON_TOO_MANY_CHARACTERS = 0x01; @@ -35,9 +38,10 @@ public class CharCreateFail extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x1a); - writeD(_error); + OutgoingPackets.CHAR_CREATE_FAIL.writeId(packet); + packet.writeD(_error); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateOk.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateOk.java index 7be1186359..4f5aa889c4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateOk.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateOk.java @@ -16,15 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharCreateOk extends GameServerPacket +public class CharCreateOk implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x19); - writeD(0x01); + OutgoingPackets.CHAR_CREATE_OK.writeId(packet); + packet.writeD(0x01); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteFail.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteFail.java index 0070ba239c..7b22f12774 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteFail.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteFail.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharDeleteFail extends GameServerPacket +public class CharDeleteFail implements IClientOutgoingPacket { public static final int REASON_DELETION_FAILED = 0x01; public static final int REASON_YOU_MAY_NOT_DELETE_CLAN_MEMBER = 0x02; @@ -33,9 +36,10 @@ public class CharDeleteFail extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x24); - writeD(_error); + OutgoingPackets.CHAR_DELETE_FAIL.writeId(packet); + packet.writeD(_error); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteOk.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteOk.java index 364e20b2c8..33e8fdd881 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteOk.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteOk.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class CharDeleteOk extends GameServerPacket +public class CharDeleteOk implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x23); + OutgoingPackets.CHAR_DELETE_OK.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 49c1233d82..946b9a3068 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -17,11 +17,13 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class CharInfo extends GameServerPacket +public class CharInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Inventory _inventory; @@ -30,8 +32,9 @@ public class CharInfo extends GameServerPacket private final int _flyRunSpd; private final int _flyWalkSpd; private final float _moveMultiplier; + private final boolean _gmSeeInvis; - public CharInfo(PlayerInstance player) + public CharInfo(PlayerInstance player, boolean gmSeeInvis) { _player = player; _inventory = player.getInventory(); @@ -40,158 +43,129 @@ public class CharInfo extends GameServerPacket _walkSpd = Math.round(player.getWalkSpeed() / _moveMultiplier); _flyRunSpd = player.isFlying() ? _runSpd : 0; _flyWalkSpd = player.isFlying() ? _walkSpd : 0; + _gmSeeInvis = gmSeeInvis; } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - boolean isGM = false; - final PlayerInstance tmp = getClient().getPlayer(); - if ((tmp != null) && tmp.isGM()) - { - isGM = true; - } - if (!isGM && _player.getAppearance().isInvisible()) - { - return; - } - - writeC(0x03); - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); - writeD(_player.getBoat() != null ? _player.getBoat().getObjectId() : 0); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getRace().ordinal()); - writeD(_player.getAppearance().isFemale() ? 1 : 0); + OutgoingPackets.CHAR_INFO.writeId(packet); + packet.writeD(_player.getX()); + packet.writeD(_player.getY()); + packet.writeD(_player.getZ()); + packet.writeD(_player.getBoat() != null ? _player.getBoat().getObjectId() : 0); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getRace().ordinal()); + packet.writeD(_player.getAppearance().isFemale() ? 1 : 0); if (_player.getClassIndex() == 0) { - writeD(_player.getClassId().getId()); + packet.writeD(_player.getClassId().getId()); } else { - writeD(_player.getBaseClass()); + packet.writeD(_player.getBaseClass()); } - writeD(0x00); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(0x00); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); - writeD(_player.getPvpFlag()); - writeD(_player.getKarma()); + packet.writeD(_player.getPvpFlag()); + packet.writeD(_player.getKarma()); - writeD(_player.getMAtkSpd()); - writeD(_player.getPAtkSpd()); + packet.writeD(_player.getMAtkSpd()); + packet.writeD(_player.getPAtkSpd()); - writeD(_player.getPvpFlag()); - writeD(_player.getKarma()); + packet.writeD(_player.getPvpFlag()); + packet.writeD(_player.getKarma()); - writeD(_runSpd); // base run speed - writeD(_walkSpd); // base walk speed - writeD(_runSpd); // swim run speed (calculated by getter) - writeD(_walkSpd); // swim walk speed (calculated by getter) - writeD(_flyRunSpd); // fly run speed ? - writeD(_flyWalkSpd); // fly walk speed ? - writeD(_flyRunSpd); - writeD(_flyWalkSpd); - writeF(_moveMultiplier); - writeF(_player.getAttackSpeedMultiplier()); - writeF(_player.getCollisionRadius()); - writeF(_player.getCollisionHeight()); - writeD(_player.getAppearance().getHairStyle()); - writeD(_player.getAppearance().getHairColor()); - writeD(_player.getAppearance().getFace()); + packet.writeD(_runSpd); // base run speed + packet.writeD(_walkSpd); // base walk speed + packet.writeD(_runSpd); // swim run speed (calculated by getter) + packet.writeD(_walkSpd); // swim walk speed (calculated by getter) + packet.writeD(_flyRunSpd); // fly run speed ? + packet.writeD(_flyWalkSpd); // fly walk speed ? + packet.writeD(_flyRunSpd); + packet.writeD(_flyWalkSpd); + packet.writeF(_moveMultiplier); + packet.writeF(_player.getAttackSpeedMultiplier()); + packet.writeF(_player.getCollisionRadius()); + packet.writeF(_player.getCollisionHeight()); + packet.writeD(_player.getAppearance().getHairStyle()); + packet.writeD(_player.getAppearance().getHairColor()); + packet.writeD(_player.getAppearance().getFace()); - if (_player.getAppearance().isInvisible()) - { - writeS("[Invisible]"); - } - else - { - writeS(_player.getTitle()); - } + packet.writeS(_gmSeeInvis ? "Invisible" : _player.getTitle()); - writeD(_player.getClanId()); - writeD(_player.getClanCrestId()); - writeD(_player.getAllyId()); - writeD(_player.getAllyCrestId()); + packet.writeD(_player.getClanId()); + packet.writeD(_player.getClanCrestId()); + packet.writeD(_player.getAllyId()); + packet.writeD(_player.getAllyCrestId()); // In UserInfo leader rights and siege flags, but here found nothing?? // Therefore RelationChanged packet with that info is required - writeD(0x00); + packet.writeD(0x00); - writeC(_player.isSitting() ? 0 : 1); // standing = 1 sitting = 0 - writeC(_player.isRunning() ? 1 : 0); // running = 1 walking = 0 - writeC(_player.isInCombat() ? 1 : 0); - writeC(_player.isAlikeDead() ? 1 : 0); + packet.writeC(_player.isSitting() ? 0 : 1); // standing = 1 sitting = 0 + packet.writeC(_player.isRunning() ? 1 : 0); // running = 1 walking = 0 + packet.writeC(_player.isInCombat() ? 1 : 0); + packet.writeC(_player.isAlikeDead() ? 1 : 0); - // if(gmSeeInvis) - // { - writeC(0x00); // if the charinfo is written means receiver can see the char - // } - // else - // { - // writeC(_activeChar.getAppearance().getInvisible() ? 1 : 0); // invisible = 1 visible =0 - // } - writeC(_player.getMountType()); // 1 on strider 2 on wyvern 0 no mount - writeC(_player.getPrivateStoreType()); // 1 - sellshop + packet.writeC(!_gmSeeInvis && _player.getAppearance().isInvisible() ? 1 : 0); // invisible = 1 visible = 0 - writeH(_player.getCubics().size()); + packet.writeC(_player.getMountType()); // 1 on strider 2 on wyvern 0 no mount + packet.writeC(_player.getPrivateStoreType()); // 1 - sellshop + + packet.writeH(_player.getCubics().size()); for (int cubicId : _player.getCubics().keySet()) { - writeH(cubicId); + packet.writeH(cubicId); } - writeC(_player.isInPartyMatchRoom() ? 1 : 0); + packet.writeC(_player.isInPartyMatchRoom() ? 1 : 0); - if (_player.getAppearance().isInvisible()) - { - writeD((_player.getAbnormalEffect() | Creature.ABNORMAL_EFFECT_STEALTH)); - } - else - { - writeD(_player.getAbnormalEffect()); - } + packet.writeD(_gmSeeInvis ? (_player.getAbnormalEffect() | Creature.ABNORMAL_EFFECT_STEALTH) : _player.getAbnormalEffect()); - writeC(_player.getRecomLeft()); - writeH(_player.getRecomHave()); // Blue value for name (0 = white, 255 = pure blue) - writeD(_player.getClassId().getId()); + packet.writeC(_player.getRecomLeft()); + packet.writeH(_player.getRecomHave()); // Blue value for name (0 = white, 255 = pure blue) + packet.writeD(_player.getClassId().getId()); - writeD(_player.getMaxCp()); - writeD((int) _player.getCurrentCp()); - writeC(_player.isMounted() ? 0 : _player.getEnchantEffect()); + packet.writeD(_player.getMaxCp()); + packet.writeD((int) _player.getCurrentCp()); + packet.writeC(_player.isMounted() ? 0 : _player.getEnchantEffect()); if (_player.getTeam() == 1) { - writeC(0x01); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x01); // team circle around feet 1 = Blue, 2 = red } else if (_player.getTeam() == 2) { - writeC(0x02); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x02); // team circle around feet 1 = Blue, 2 = red } else { - writeC(0x00); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x00); // team circle around feet 1 = Blue, 2 = red } - writeD(_player.getClanCrestLargeId()); - writeC(_player.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I - writeC((_player.isHero() || (_player.isGM() && Config.GM_HERO_AURA) || _player.isPVPHero()) ? 1 : 0); // Hero Aura + packet.writeD(_player.getClanCrestLargeId()); + packet.writeC(_player.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I + packet.writeC((_player.isHero() || (_player.isGM() && Config.GM_HERO_AURA) || _player.isPVPHero()) ? 1 : 0); // Hero Aura - writeC(_player.isFishing() ? 1 : 0); // 0x01: Fishing Mode (Cant be undone by setting back to 0) - writeD(_player.getFishX()); - writeD(_player.getFishY()); - writeD(_player.getFishZ()); + packet.writeC(_player.isFishing() ? 1 : 0); // 0x01: Fishing Mode (Cant be undone by setting back to 0) + packet.writeD(_player.getFishX()); + packet.writeD(_player.getFishY()); + packet.writeD(_player.getFishZ()); - writeD(_player.getAppearance().getNameColor()); + packet.writeD(_player.getAppearance().getNameColor()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharMoveToLocation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharMoveToLocation.java index dbeb3a2119..2818d38e74 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharMoveToLocation.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharMoveToLocation.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 0000: 01 7a 73 10 4c b2 0b 00 00 a3 fc 00 00 e8 f1 ff .zs.L........... 0010: ff bd 0b 00 00 b3 fc 00 00 e8 f1 ff ff ............. ddddddd * @version $Revision: 1.3.4.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class CharMoveToLocation extends GameServerPacket +public class CharMoveToLocation implements IClientOutgoingPacket { private final int _objectId; private final int _x; @@ -44,18 +46,19 @@ public class CharMoveToLocation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x01); + OutgoingPackets.CHAR_MOVE_TO_LOCATION.writeId(packet); - writeD(_objectId); + packet.writeD(_objectId); - writeD(_xDst); - writeD(_yDst); - writeD(_zDst); + packet.writeD(_xDst); + packet.writeD(_yDst); + packet.writeD(_zDst); - writeD(_x); - writeD(_y); - writeD(_z); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharSelectInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharSelectInfo.java index ba0ee79a26..b25b07bb25 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharSelectInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharSelectInfo.java @@ -24,17 +24,19 @@ import java.util.List; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.network.GameClient; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.8.2.4.2.6 $ $Date: 2005/04/06 16:13:46 $ */ -public class CharSelectInfo extends GameServerPacket +public class CharSelectInfo implements IClientOutgoingPacket { private static final Logger LOGGER = Logger.getLogger(CharSelectInfo.class.getName()); @@ -72,11 +74,11 @@ public class CharSelectInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final int size = _characterPackages.length; - writeC(0x13); - writeD(size); + OutgoingPackets.CHAR_SELECT_INFO.writeId(packet); + packet.writeD(size); long lastAccess = 0; if (_activeId == -1) @@ -94,89 +96,89 @@ public class CharSelectInfo extends GameServerPacket for (int i = 0; i < size; i++) { final CharSelectInfoPackage charInfoPackage = _characterPackages[i]; - writeS(charInfoPackage.getName()); - writeD(charInfoPackage.getCharId()); - writeS(_loginName); - writeD(_sessionId); - writeD(charInfoPackage.getClanId()); - writeD(0x00); // ?? + packet.writeS(charInfoPackage.getName()); + packet.writeD(charInfoPackage.getCharId()); + packet.writeS(_loginName); + packet.writeD(_sessionId); + packet.writeD(charInfoPackage.getClanId()); + packet.writeD(0x00); // ?? - writeD(charInfoPackage.getSex()); - writeD(charInfoPackage.getRace()); + packet.writeD(charInfoPackage.getSex()); + packet.writeD(charInfoPackage.getRace()); if (charInfoPackage.getClassId() == charInfoPackage.getBaseClassId()) { - writeD(charInfoPackage.getClassId()); + packet.writeD(charInfoPackage.getClassId()); } else { - writeD(charInfoPackage.getBaseClassId()); + packet.writeD(charInfoPackage.getBaseClassId()); } - writeD(0x01); // active ?? + packet.writeD(0x01); // active ?? - writeD(0x00); // x - writeD(0x00); // y - writeD(0x00); // z + packet.writeD(0x00); // x + packet.writeD(0x00); // y + packet.writeD(0x00); // z - writeF(charInfoPackage.getCurrentHp()); // hp cur - writeF(charInfoPackage.getCurrentMp()); // mp cur + packet.writeF(charInfoPackage.getCurrentHp()); // hp cur + packet.writeF(charInfoPackage.getCurrentMp()); // mp cur - writeD(charInfoPackage.getSp()); - writeQ(charInfoPackage.getExp()); - writeD(charInfoPackage.getLevel()); + packet.writeD(charInfoPackage.getSp()); + packet.writeD((int) charInfoPackage.getExp()); + packet.writeD(charInfoPackage.getLevel()); - writeD(charInfoPackage.getKarma()); // karma - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); + packet.writeD(charInfoPackage.getKarma()); // karma + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_UNDER)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_UNDER)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_UNDER)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_REAR)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_NECK)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_UNDER)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_REAR)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_NECK)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); - writeD(charInfoPackage.getHairStyle()); - writeD(charInfoPackage.getHairColor()); - writeD(charInfoPackage.getFace()); + packet.writeD(charInfoPackage.getHairStyle()); + packet.writeD(charInfoPackage.getHairColor()); + packet.writeD(charInfoPackage.getFace()); - writeF(charInfoPackage.getMaxHp()); // hp max - writeF(charInfoPackage.getMaxMp()); // mp max + packet.writeF(charInfoPackage.getMaxHp()); // hp max + packet.writeF(charInfoPackage.getMaxMp()); // mp max final long deleteTime = charInfoPackage.getDeleteTimer(); final int accesslevels = charInfoPackage.getAccessLevel(); @@ -190,22 +192,23 @@ public class CharSelectInfo extends GameServerPacket deletedays = -1; // like L2OFF player looks dead if he is banned. } - writeD(deletedays); // days left before + packet.writeD(deletedays); // days left before // delete .. if != 0 // then char is inactive - writeD(charInfoPackage.getClassId()); + packet.writeD(charInfoPackage.getClassId()); if (i == _activeId) { - writeD(0x01); + packet.writeD(0x01); } else { - writeD(0x00); // c3 auto-select char + packet.writeD(0x00); // c3 auto-select char } - writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect()); + packet.writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect()); } + return true; } private CharSelectInfoPackage[] loadCharacterSelectInfo() diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharSelected.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharSelected.java index 14f313ed1b..027750c585 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharSelected.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharSelected.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.5.2.6 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharSelected extends GameServerPacket +public class CharSelected implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _sessionId; @@ -38,66 +40,67 @@ public class CharSelected extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x15); + OutgoingPackets.CHAR_SELECTED.writeId(packet); - writeS(_player.getName()); - writeD(_player.getObjectId()); // ?? - writeS(_player.getTitle()); - writeD(_sessionId); - writeD(_player.getClanId()); - writeD(0x00); // ?? - writeD(_player.getAppearance().isFemale() ? 1 : 0); - writeD(_player.getRace().ordinal()); - writeD(_player.getClassId().getId()); - writeD(0x01); // active ?? - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); + packet.writeS(_player.getName()); + packet.writeD(_player.getObjectId()); // ?? + packet.writeS(_player.getTitle()); + packet.writeD(_sessionId); + packet.writeD(_player.getClanId()); + packet.writeD(0x00); // ?? + packet.writeD(_player.getAppearance().isFemale() ? 1 : 0); + packet.writeD(_player.getRace().ordinal()); + packet.writeD(_player.getClassId().getId()); + packet.writeD(0x01); // active ?? + packet.writeD(_player.getX()); + packet.writeD(_player.getY()); + packet.writeD(_player.getZ()); - writeF(_player.getCurrentHp()); - writeF(_player.getCurrentMp()); - writeD(_player.getSp()); - writeQ(_player.getExp()); - writeD(_player.getLevel()); - writeD(_player.getKarma()); // thx evill33t - writeD(0x0); // ? - writeD(_player.getINT()); - writeD(_player.getSTR()); - writeD(_player.getCON()); - writeD(_player.getMEN()); - writeD(_player.getDEX()); - writeD(_player.getWIT()); + packet.writeF(_player.getCurrentHp()); + packet.writeF(_player.getCurrentMp()); + packet.writeD(_player.getSp()); + packet.writeD((int) _player.getExp()); + packet.writeD(_player.getLevel()); + packet.writeD(_player.getKarma()); // thx evill33t + packet.writeD(0x0); // ? + packet.writeD(_player.getINT()); + packet.writeD(_player.getSTR()); + packet.writeD(_player.getCON()); + packet.writeD(_player.getMEN()); + packet.writeD(_player.getDEX()); + packet.writeD(_player.getWIT()); for (int i = 0; i < 30; i++) { - writeD(0x00); + packet.writeD(0x00); } - // writeD(0); //c3 - // writeD(0); //c3 - // writeD(0); //c3 - writeD(0x00); // c3 work - writeD(0x00); // c3 work + // packet.writeD(0); //c3 + // packet.writeD(0); //c3 + // packet.writeD(0); //c3 + packet.writeD(0x00); // c3 work + packet.writeD(0x00); // c3 work // extra info - writeD(GameTimeController.getInstance().getGameTime()); // in-game time + packet.writeD(GameTimeController.getInstance().getGameTime()); // in-game time - writeD(0x00); // + packet.writeD(0x00); // - writeD(0x00); // c3 + packet.writeD(0x00); // c3 - writeD(0x00); // c3 InspectorBin - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 + packet.writeD(0x00); // c3 InspectorBin + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 - writeD(0x00); // c3 InspectorBin for 528 client - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 + packet.writeD(0x00); // c3 InspectorBin for 528 client + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharTemplates.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharTemplates.java index 80a128d1f4..39c3f6639d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharTemplates.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CharTemplates.java @@ -19,12 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.7 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharTemplates extends GameServerPacket +public class CharTemplates implements IClientOutgoingPacket { private final List _chars = new ArrayList<>(); @@ -34,33 +36,34 @@ public class CharTemplates extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x17); - writeD(_chars.size()); + OutgoingPackets.CHAR_TEMPLATES.writeId(packet); + packet.writeD(_chars.size()); for (PlayerTemplate temp : _chars) { - writeD(temp.getRace().ordinal()); - writeD(temp.getClassId().getId()); - writeD(0x46); - writeD(temp.getBaseSTR()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseDEX()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseCON()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseINT()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseWIT()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseMEN()); - writeD(0x0a); + packet.writeD(temp.getRace().ordinal()); + packet.writeD(temp.getClassId().getId()); + packet.writeD(0x46); + packet.writeD(temp.getBaseSTR()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseDEX()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseCON()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseINT()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseWIT()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseMEN()); + packet.writeD(0x0a); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChooseInventoryItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChooseInventoryItem.java index ade86f4831..d59df7911a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChooseInventoryItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ChooseInventoryItem.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class ChooseInventoryItem extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class ChooseInventoryItem implements IClientOutgoingPacket { private final int _itemId; @@ -26,9 +29,10 @@ public class ChooseInventoryItem extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x6f); - writeD(_itemId); + OutgoingPackets.CHOOSE_INVENTORY_ITEM.writeId(packet); + packet.writeD(_itemId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ClanHallDecoration.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ClanHallDecoration.java index 8c8c109650..060ae560f6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ClanHallDecoration.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ClanHallDecoration.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.residences.ClanHall; import org.l2jmobius.gameserver.model.residences.ClanHall.ClanHallFunction; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Steuf */ -public class ClanHallDecoration extends GameServerPacket +public class ClanHallDecoration implements IClientOutgoingPacket { private final ClanHall _clanHall; @@ -32,150 +34,151 @@ public class ClanHallDecoration extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xf7); - writeD(_clanHall.getId()); // clanhall id + OutgoingPackets.CLAN_HALL_DECORATION.writeId(packet); + packet.writeD(_clanHall.getId()); // clanhall id // FUNC_RESTORE_HP ClanHallFunction function = _clanHall.getFunction(ClanHall.FUNC_RESTORE_HP); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 220)) || ((_clanHall.getGrade() == 1) && (function.getLvl() < 160)) || ((_clanHall.getGrade() == 2) && (function.getLvl() < 260)) || ((_clanHall.getGrade() == 3) && (function.getLvl() < 300))) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_RESTORE_MP function = _clanHall.getFunction(ClanHall.FUNC_RESTORE_MP); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); - writeC(0); + packet.writeC(0); + packet.writeC(0); } else if ((((_clanHall.getGrade() == 0) || (_clanHall.getGrade() == 1)) && (function.getLvl() < 25)) || ((_clanHall.getGrade() == 2) && (function.getLvl() < 30)) || ((_clanHall.getGrade() == 3) && (function.getLvl() < 40))) { - writeC(1); - writeC(1); + packet.writeC(1); + packet.writeC(1); } else { - writeC(2); - writeC(2); + packet.writeC(2); + packet.writeC(2); } // FUNC_RESTORE_EXP function = _clanHall.getFunction(ClanHall.FUNC_RESTORE_EXP); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 25)) || ((_clanHall.getGrade() == 1) && (function.getLvl() < 30)) || ((_clanHall.getGrade() == 2) && (function.getLvl() < 40)) || ((_clanHall.getGrade() == 3) && (function.getLvl() < 50))) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_TELEPORT function = _clanHall.getFunction(ClanHall.FUNC_TELEPORT); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (function.getLvl() < 2) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } - writeC(0); + packet.writeC(0); // CURTAINS function = _clanHall.getFunction(ClanHall.FUNC_DECO_CURTAINS); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (function.getLvl() <= 1) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_ITEM_CREATE function = _clanHall.getFunction(ClanHall.FUNC_ITEM_CREATE); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 2)) || (function.getLvl() < 3)) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_SUPPORT function = _clanHall.getFunction(ClanHall.FUNC_SUPPORT); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); - writeC(0); + packet.writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 2)) || ((_clanHall.getGrade() == 1) && (function.getLvl() < 4)) || ((_clanHall.getGrade() == 2) && (function.getLvl() < 5)) || ((_clanHall.getGrade() == 3) && (function.getLvl() < 8))) { - writeC(1); - writeC(1); + packet.writeC(1); + packet.writeC(1); } else { - writeC(2); - writeC(2); + packet.writeC(2); + packet.writeC(2); } // Front Plateform function = _clanHall.getFunction(ClanHall.FUNC_DECO_FRONTPLATEFORM); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (function.getLvl() <= 1) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_ITEM_CREATE function = _clanHall.getFunction(ClanHall.FUNC_ITEM_CREATE); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 2)) || (function.getLvl() < 3)) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } - writeD(0); - writeD(0); + packet.writeD(0); + packet.writeD(0); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ClientSetTime.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ClientSetTime.java index 5ce56d88c6..d83c69028a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ClientSetTime.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ClientSetTime.java @@ -16,15 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.GameTimeController; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class ClientSetTime extends GameServerPacket +public class ClientSetTime implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xEC); - writeD(GameTimeController.getInstance().getGameTime()); // time in client minutes - writeD(6); // constant to match the server time( this determines the speed of the client clock) + OutgoingPackets.CLIENT_SET_TIME.writeId(packet); + packet.writeD(GameTimeController.getInstance().getGameTime()); // time in client minutes + packet.writeD(6); // constant to match the server time( this determines the speed of the client clock) + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ConfirmDlg.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ConfirmDlg.java index aee6077a58..0595966836 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ConfirmDlg.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ConfirmDlg.java @@ -19,10 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author kombat Format: cd d[d s/d/dd/ddd] */ -public class ConfirmDlg extends GameServerPacket +public class ConfirmDlg implements IClientOutgoingPacket { private final int _messageId; private int _skillLevel = 1; @@ -36,6 +40,7 @@ public class ConfirmDlg extends GameServerPacket private final List _values = new ArrayList<>(); private int _time = 0; private int _requesterId = 0; + private PlayerInstance _targetPlayer = null; public ConfirmDlg(int messageId) { @@ -96,9 +101,10 @@ public class ConfirmDlg extends GameServerPacket return this; } - public ConfirmDlg addTime(int time) + public ConfirmDlg addTime(int time, PlayerInstance targetPlayer) { _time = time; + _targetPlayer = targetPlayer; return this; } @@ -109,22 +115,22 @@ public class ConfirmDlg extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xed); - writeD(_messageId); + OutgoingPackets.CONFIRM_DLG.writeId(packet); + packet.writeD(_messageId); if (!_types.isEmpty()) { - writeD(_types.size()); + packet.writeD(_types.size()); for (int i = 0; i < _types.size(); i++) { final int t = _types.get(i).intValue(); - writeD(t); + packet.writeD(t); switch (t) { case TYPE_TEXT: { - writeS((String) _values.get(i)); + packet.writeS((String) _values.get(i)); break; } case TYPE_NUMBER: @@ -132,14 +138,14 @@ public class ConfirmDlg extends GameServerPacket case TYPE_ITEM_NAME: { final int t1 = ((Integer) _values.get(i)).intValue(); - writeD(t1); + packet.writeD(t1); break; } case TYPE_SKILL_NAME: { final int t1 = ((Integer) _values.get(i)).intValue(); - writeD(t1); // Skill Id - writeD(_skillLevel); // Skill level + packet.writeD(t1); // Skill Id + packet.writeD(_skillLevel); // Skill level break; } case TYPE_ZONE_NAME: @@ -147,9 +153,9 @@ public class ConfirmDlg extends GameServerPacket final int t1 = ((int[]) _values.get(i))[0]; final int t2 = ((int[]) _values.get(i))[1]; final int t3 = ((int[]) _values.get(i))[2]; - writeD(t1); - writeD(t2); - writeD(t3); + packet.writeD(t1); + packet.writeD(t2); + packet.writeD(t3); break; } } @@ -157,23 +163,24 @@ public class ConfirmDlg extends GameServerPacket // timed dialog (Summon Friend skill request) if (_time != 0) { - writeD(_time); + packet.writeD(_time); } if (_requesterId != 0) { - writeD(_requesterId); + packet.writeD(_requesterId); } - if (_time > 0) + if ((_time > 0) && (_targetPlayer != null)) { - getClient().getPlayer().addConfirmDlgRequestTime(_requesterId, _time); + _targetPlayer.addConfirmDlgRequestTime(_requesterId, _time); } } else { - writeD(0x00); - writeD(0x00); - writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CreatureSay.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CreatureSay.java index fbb6c3fafc..0062cae9aa 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CreatureSay.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/CreatureSay.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class CreatureSay extends GameServerPacket +public class CreatureSay implements IClientOutgoingPacket { private final int _objectId; private final ChatType _chatType; @@ -44,18 +46,22 @@ public class CreatureSay extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) + { + OutgoingPackets.CREATURE_SAY.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_chatType.getClientId()); + packet.writeS(_charName); + packet.writeS(_text); + return true; + } + + @Override + public void runImpl(PlayerInstance player) { - writeC(0x4a); - writeD(_objectId); - writeD(_chatType.getClientId()); - writeS(_charName); - writeS(_text); - - final PlayerInstance player = getClient().getPlayer(); if (player != null) { player.broadcastSnoop(_chatType, _charName, _text, this); } } -} \ No newline at end of file +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DeleteObject.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DeleteObject.java index 4f65d22da4..a6b57ce622 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DeleteObject.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DeleteObject.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 1e 9b da 12 40 ....@ format d * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class DeleteObject extends GameServerPacket +public class DeleteObject implements IClientOutgoingPacket { private final int _objectId; @@ -37,10 +39,11 @@ public class DeleteObject extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x12); - writeD(_objectId); - writeD(0x00); // c2 + OutgoingPackets.DELETE_OBJECT.writeId(packet); + packet.writeD(_objectId); + packet.writeD(0x00); // c2 + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Dice.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Dice.java index 4de84a4dab..498a1ef493 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Dice.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Dice.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.1.4.2 $ $Date: 2005/03/27 15:29:40 $ */ -public class Dice extends GameServerPacket +public class Dice implements IClientOutgoingPacket { private final int _objectId; private final int _itemId; @@ -48,14 +51,15 @@ public class Dice extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xD4); - writeD(_objectId); // object id of player - writeD(_itemId); // item id of dice (spade) 4625,4626,4627,4628 - writeD(_number); // number rolled - writeD(_x); // x - writeD(_y); // y - writeD(_z); // z + OutgoingPackets.DICE.writeId(packet); + packet.writeD(_objectId); // object id of player + packet.writeD(_itemId); // item id of dice (spade) 4625,4626,4627,4628 + packet.writeD(_number); // number rolled + packet.writeD(_x); // x + packet.writeD(_y); // y + packet.writeD(_z); // z + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Die.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Die.java index b803f33b59..f80fab7d58 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Die.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Die.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.instancemanager.events.CTF; @@ -28,8 +29,9 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class Die extends GameServerPacket +public class Die implements IClientOutgoingPacket { private final int _objectId; private final boolean _fake; @@ -58,15 +60,15 @@ public class Die extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_fake) { - return; + return false; } - writeC(0x06); - writeD(_objectId); + OutgoingPackets.DIE.writeId(packet); + packet.writeD(_objectId); // NOTE: // 6d 00 00 00 00 - to nearest village @@ -75,7 +77,7 @@ public class Die extends GameServerPacket // 6d 03 00 00 00 - to siege HQ // sweepable // 6d 04 00 00 00 - FIXED - writeD(_canTeleport ? 0x01 : 0); // 6d 00 00 00 00 - to nearest village + packet.writeD(_canTeleport ? 0x01 : 0); // 6d 00 00 00 00 - to nearest village if (_canTeleport && (_clan != null)) { @@ -102,18 +104,19 @@ public class Die extends GameServerPacket } } - writeD(_clan.getHideoutId() > 0 ? 0x01 : 0x00); // 6d 01 00 00 00 - to hide away - writeD((_clan.getCastleId() > 0) || (_clan.getFortId() > 0) || isInDefense ? 0x01 : 0x00); // 6d 02 00 00 00 - to castle - writeD((siegeClan != null) && !isInDefense && !siegeClan.getFlag().isEmpty() ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ + packet.writeD(_clan.getHideoutId() > 0 ? 0x01 : 0x00); // 6d 01 00 00 00 - to hide away + packet.writeD((_clan.getCastleId() > 0) || (_clan.getFortId() > 0) || isInDefense ? 0x01 : 0x00); // 6d 02 00 00 00 - to castle + packet.writeD((siegeClan != null) && !isInDefense && !siegeClan.getFlag().isEmpty() ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ } else { - writeD(0x00); // 6d 01 00 00 00 - to hide away - writeD(0x00); // 6d 02 00 00 00 - to castle - writeD(0x00); // 6d 03 00 00 00 - to siege HQ + packet.writeD(0x00); // 6d 01 00 00 00 - to hide away + packet.writeD(0x00); // 6d 02 00 00 00 - to castle + packet.writeD(0x00); // 6d 03 00 00 00 - to siege HQ } - writeD(_sweepable ? 0x01 : 0x00); // sweepable (blue glow) - writeD(_allowFixedRes ? 0x01 : 0x00); // 6d 04 00 00 00 - to FIXED + packet.writeD(_sweepable ? 0x01 : 0x00); // sweepable (blue glow) + packet.writeD(_allowFixedRes ? 0x01 : 0x00); // 6d 04 00 00 00 - to FIXED + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DoorInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DoorInfo.java index f3ca030c9b..5666c8f829 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DoorInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DoorInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 60 d6 6d c0 4b door id 8f 14 00 00 x b7 f1 00 00 y 60 f2 ff ff z 00 00 00 00 ?? format dddd rev 377 ID:%d X:%d Y:%d Z:%d ddddd rev 419 * @version $Revision: 1.3.2.2.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class DoorInfo extends GameServerPacket +public class DoorInfo implements IClientOutgoingPacket { private final DoorInstance _door; private final boolean _showHp; @@ -34,11 +36,12 @@ public class DoorInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x4c); - writeD(_door.getObjectId()); - writeD(_door.getDoorId()); - writeD(_showHp ? 0x01 : 0x00); + OutgoingPackets.DOOR_INFO.writeId(packet); + packet.writeD(_door.getObjectId()); + packet.writeD(_door.getDoorId()); + packet.writeD(_showHp ? 0x01 : 0x00); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DoorStatusUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DoorStatusUpdate.java index 2e9f8c882a..6f1f796374 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DoorStatusUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DoorStatusUpdate.java @@ -16,31 +16,37 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 61 d6 6d c0 4b door id 8f 14 00 00 x b7 f1 00 00 y 60 f2 ff ff z 00 00 00 00 ?? format dddd rev 377 ID:%d X:%d Y:%d Z:%d ddddd rev 419 * @version $Revision: 1.3.2.2.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class DoorStatusUpdate extends GameServerPacket +public class DoorStatusUpdate implements IClientOutgoingPacket { private final DoorInstance _door; + private final PlayerInstance _player; - public DoorStatusUpdate(DoorInstance door) + public DoorStatusUpdate(DoorInstance door, PlayerInstance player) { _door = door; + _player = player; } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x4d); - writeD(_door.getObjectId()); - writeD(_door.isOpen() ? 0 : 1); - writeD(_door.getDamage()); - writeD(_door.isEnemyOf(getClient().getPlayer()) ? 1 : 0); - writeD(_door.getDoorId()); - writeD(_door.getMaxHp()); - writeD((int) _door.getCurrentHp()); + OutgoingPackets.DOOR_STATUS_UPDATE.writeId(packet); + packet.writeD(_door.getObjectId()); + packet.writeD(_door.isOpen() ? 0 : 1); + packet.writeD(_door.getDamage()); + packet.writeD(_door.isEnemyOf(_player) ? 1 : 0); + packet.writeD(_door.getDoorId()); + packet.writeD(_door.getMaxHp()); + packet.writeD((int) _door.getCurrentHp()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DropItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DropItem.java index 9514731736..59c81289d7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DropItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/DropItem.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 16 d6 6d c0 4b player id who dropped it ee cc 11 43 object id 39 00 00 00 item id 8f 14 00 00 x b7 f1 00 00 y 60 f2 ff ff z 01 00 00 00 show item-count 1=yes 7a 00 00 00 count . format dddddddd rev 377 ddddddddd rev 417 * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class DropItem extends GameServerPacket +public class DropItem implements IClientOutgoingPacket { private final ItemInstance _item; private final int _objectId; @@ -39,27 +41,28 @@ public class DropItem extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x0c); - writeD(_objectId); - writeD(_item.getObjectId()); - writeD(_item.getItemId()); + OutgoingPackets.DROP_ITEM.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_item.getObjectId()); + packet.writeD(_item.getItemId()); - writeD(_item.getX()); - writeD(_item.getY()); - writeD(_item.getZ()); + packet.writeD(_item.getX()); + packet.writeD(_item.getY()); + packet.writeD(_item.getZ()); // only show item count if it is a stackable item if (_item.isStackable()) { - writeD(0x01); + packet.writeD(0x01); } else { - writeD(0x00); + packet.writeD(0x00); } - writeD(_item.getCount()); + packet.writeD(_item.getCount()); - writeD(1); // unknown + packet.writeD(1); // unknown + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Earthquake.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Earthquake.java index 430c8627b5..fc78d506ae 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Earthquake.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Earthquake.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * format dddddd */ -public class Earthquake extends GameServerPacket +public class Earthquake implements IClientOutgoingPacket { private final int _x; private final int _y; @@ -44,14 +47,15 @@ public class Earthquake extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xc4); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_intensity); - writeD(_duration); - writeD(0x00); // Unknown + OutgoingPackets.EARTHQUAKE.writeId(packet); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_intensity); + packet.writeD(_duration); + packet.writeD(0x00); // Unknown + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/EnchantResult.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/EnchantResult.java index 5ed2c3fb12..ef8494e2ce 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/EnchantResult.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/EnchantResult.java @@ -16,19 +16,23 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class EnchantResult extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class EnchantResult implements IClientOutgoingPacket { - private final int _unknown; + private final int _result; - public EnchantResult(int unknown) + public EnchantResult(int result) { - _unknown = unknown; + _result = result; } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x81); - writeD(_unknown); + OutgoingPackets.ENCHANT_RESULT.writeId(packet); + packet.writeD(_result); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/EquipUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/EquipUpdate.java index 7e62c4be59..a0f1b629a3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/EquipUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/EquipUpdate.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 5e 01 00 00 00 01 - added ? 02 - modified 7b 86 73 42 object id 08 00 00 00 body slot body slot 0000 ?? underwear 0001 ear 0002 ear 0003 neck 0004 finger (magic ring) 0005 finger (magic ring) 0006 head (l.cap) 0007 r.hand (dagger) 0008 l.hand (arrows) 0009 hands (short gloves) 000a chest (squire * shirt) 000b legs (squire pants) 000c feet 000d ?? back 000e lr.hand (bow) format ddd * @version $Revision: 1.4.2.1.2.4 $ $Date: 2005/03/27 15:29:40 $ */ -public class EquipUpdate extends GameServerPacket +public class EquipUpdate implements IClientOutgoingPacket { private final ItemInstance _item; private final int _change; @@ -36,12 +38,12 @@ public class EquipUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { int bodypart = 0; - writeC(0x4b); - writeD(_change); - writeD(_item.getObjectId()); + OutgoingPackets.EQUIP_UPDATE.writeId(packet); + packet.writeD(_change); + packet.writeD(_item.getObjectId()); switch (_item.getItem().getBodyPart()) { case Item.SLOT_L_EAR: @@ -121,6 +123,7 @@ public class EquipUpdate extends GameServerPacket } } - writeD(bodypart); + packet.writeD(bodypart); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinMPCC.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinMPCC.java index 51d2040533..b83d011f3c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinMPCC.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinMPCC.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author chris_00 Asks the player to join a CC */ -public class ExAskJoinMPCC extends GameServerPacket +public class ExAskJoinMPCC implements IClientOutgoingPacket { private final String _requestorName; @@ -29,10 +32,10 @@ public class ExAskJoinMPCC extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x27); - writeS(_requestorName); + OutgoingPackets.EX_ASK_JOIN_MPCC.writeId(packet); + packet.writeS(_requestorName); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinPartyRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinPartyRoom.java index bd41104ef0..2d063dbe83 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinPartyRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinPartyRoom.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch S * @author KenM */ -public class ExAskJoinPartyRoom extends GameServerPacket +public class ExAskJoinPartyRoom implements IClientOutgoingPacket { private final String _charName; @@ -30,10 +33,10 @@ public class ExAskJoinPartyRoom extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x34); - writeS(_charName); + OutgoingPackets.EX_ASK_JOIN_PARTY_ROOM.writeId(packet); + packet.writeS(_charName); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAutoSoulShot.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAutoSoulShot.java index c928a1d4f8..9017ad6c67 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAutoSoulShot.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExAutoSoulShot.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ExAutoSoulShot extends GameServerPacket +public class ExAutoSoulShot implements IClientOutgoingPacket { private final int _itemId; private final int _type; @@ -36,11 +39,11 @@ public class ExAutoSoulShot extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x12); // sub id - writeD(_itemId); - writeD(_type); + OutgoingPackets.EX_AUTO_SOUL_SHOT.writeId(packet); + packet.writeD(_itemId); + packet.writeD(_type); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCaptureOrc.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCaptureOrc.java index 98a9627140..a052512523 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCaptureOrc.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCaptureOrc.java @@ -16,91 +16,38 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author KenM */ -public class ExCaptureOrc extends GameServerPacket +public class ExCaptureOrc implements IClientOutgoingPacket { private static final byte[] _test; static { + // TODO: Verify the data + //@formatter:off _test = new byte[] { - (byte) 0xE4, - (byte) 0xAB, - (byte) 0x8E, - (byte) 0xC5, - (byte) 0xE9, - (byte) 0xF9, - (byte) 0x86, - (byte) 0x7B, - (byte) 0x9E, - (byte) 0x5D, - (byte) 0x83, - (byte) 0x14, - (byte) 0x05, - (byte) 0xD4, - (byte) 0x48, - (byte) 0x01, - (byte) 0xCD, - (byte) 0xA2, - (byte) 0x8D, - (byte) 0x90, - (byte) 0x62, - (byte) 0x8C, - (byte) 0xDA, - (byte) 0x32, - (byte) 0x7B, - (byte) 0x1B, - (byte) 0x87, - (byte) 0x6D, - (byte) 0x08, - (byte) 0xC4, - (byte) 0xE1, - (byte) 0x56, - (byte) 0x9B, - (byte) 0x3B, - (byte) 0xC3, - (byte) 0x40, - (byte) 0xDF, - (byte) 0xE8, - (byte) 0xD7, - (byte) 0xE1, - (byte) 0x98, - (byte) 0x38, - (byte) 0x1C, - (byte) 0xA5, - (byte) 0x8E, - (byte) 0x45, - (byte) 0x3F, - (byte) 0xF2, - (byte) 0x5E, - (byte) 0x1C, - (byte) 0x59, - (byte) 0x8E, - (byte) 0x74, - (byte) 0x01, - (byte) 0x9E, - (byte) 0xC2, - (byte) 0x00, - (byte) 0x95, - (byte) 0xB0, - (byte) 0x1D, - (byte) 0x87, - (byte) 0xED, - (byte) 0x9C, - (byte) 0x8A + (byte) 0xE4 ,(byte) 0xAB ,(byte) 0x8E ,(byte) 0xC5 ,(byte) 0xE9 ,(byte) 0xF9 ,(byte) 0x86 ,(byte) 0x7B, + (byte) 0x9E ,(byte) 0x5D ,(byte) 0x83 ,(byte) 0x14 ,(byte) 0x05 ,(byte) 0xD4 ,(byte) 0x48 ,(byte) 0x01, + (byte) 0xCD ,(byte) 0xA2 ,(byte) 0x8D ,(byte) 0x90 ,(byte) 0x62 ,(byte) 0x8C ,(byte) 0xDA ,(byte) 0x32, + (byte) 0x7B ,(byte) 0x1B ,(byte) 0x87 ,(byte) 0x6D ,(byte) 0x08 ,(byte) 0xC4 ,(byte) 0xE1 ,(byte) 0x56, + (byte) 0x9B ,(byte) 0x3B ,(byte) 0xC3 ,(byte) 0x40 ,(byte) 0xDF ,(byte) 0xE8 ,(byte) 0xD7 ,(byte) 0xE1, + (byte) 0x98 ,(byte) 0x38 ,(byte) 0x1C ,(byte) 0xA5 ,(byte) 0x8E ,(byte) 0x45 ,(byte) 0x3F ,(byte) 0xF2, + (byte) 0x5E ,(byte) 0x1C ,(byte) 0x59 ,(byte) 0x8E ,(byte) 0x74 ,(byte) 0x01 ,(byte) 0x9E ,(byte) 0xC2, + (byte) 0x00 ,(byte) 0x95 ,(byte) 0xB0 ,(byte) 0x1D ,(byte) 0x87 ,(byte) 0xED ,(byte) 0x9C ,(byte) 0x8A }; + //@formatter:on } - /** - * @see org.l2jmobius.gameserver.network.serverpackets.GameServerPacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x44); - writeB(_test); + OutgoingPackets.EX_CAPTURE_ORC.writeId(packet); + packet.writeB(_test); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCloseMPCC.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCloseMPCC.java index cf848ad107..e238fec229 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCloseMPCC.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCloseMPCC.java @@ -16,15 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author chris_00 close the CommandChannel Information window */ -public class ExCloseMPCC extends GameServerPacket +public class ExCloseMPCC implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x26); + OutgoingPackets.EX_CLOSE_MPCC.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExClosePartyRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExClosePartyRoom.java index cfed7886ec..11da236f70 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExClosePartyRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExClosePartyRoom.java @@ -16,15 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Gnacik */ -public class ExClosePartyRoom extends GameServerPacket +public class ExClosePartyRoom implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x0f); + OutgoingPackets.EX_CLOSE_PARTY_ROOM.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java index 4ac0614d94..bd22ef1408 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.FenceState; import org.l2jmobius.gameserver.model.actor.instance.FenceInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author HoridoJoho / FBIagent */ -public class ExColosseumFenceInfo extends GameServerPacket +public class ExColosseumFenceInfo implements IClientOutgoingPacket { private final int _objId; private final int _x; @@ -49,16 +51,16 @@ public class ExColosseumFenceInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x09); - writeD(_objId); - writeD(_clientState); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_width); - writeD(_length); + OutgoingPackets.EX_COLOSSEUM_FENCE_INFO.writeId(packet); + packet.writeD(_objId); + packet.writeD(_clientState); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_width); + packet.writeD(_length); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmCancelItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmCancelItem.java index bd2967b5f7..edd9e9f5e6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmCancelItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmCancelItem.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddd */ -public class ExConfirmCancelItem extends GameServerPacket +public class ExConfirmCancelItem implements IClientOutgoingPacket { private final int _itemObjId; private final int _price; @@ -31,15 +34,15 @@ public class ExConfirmCancelItem extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x56); - writeD(0x40A97712); - writeD(_itemObjId); - writeD(0x27); - writeD(0x2006); - writeQ(_price); - writeD(0x01); + OutgoingPackets.EX_CONFIRM_CANCEL_ITEM.writeId(packet); + packet.writeD(0x40A97712); + packet.writeD(_itemObjId); + packet.writeD(0x27); + packet.writeD(0x2006); + packet.writeD(_price); + packet.writeD(0x01); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationGemstone.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationGemstone.java index 39c01c28d9..4ac44e4519 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationGemstone.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationGemstone.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddddd */ -public class ExConfirmVariationGemstone extends GameServerPacket +public class ExConfirmVariationGemstone implements IClientOutgoingPacket { private final int _gemstoneObjId; private final int _unk1; @@ -37,14 +40,14 @@ public class ExConfirmVariationGemstone extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x54); - writeD(_gemstoneObjId); - writeD(_unk1); - writeD(_gemstoneCount); - writeD(_unk2); - writeD(_unk3); + OutgoingPackets.EX_CONFIRM_VARIATION_GEMSTONE.writeId(packet); + packet.writeD(_gemstoneObjId); + packet.writeD(_unk1); + packet.writeD(_gemstoneCount); + packet.writeD(_unk2); + packet.writeD(_unk3); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationItem.java index 7f9c976adf..b5a8c32918 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationItem.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddd */ -public class ExConfirmVariationItem extends GameServerPacket +public class ExConfirmVariationItem implements IClientOutgoingPacket { private final int _itemObjId; private final int _unk1; @@ -33,12 +36,12 @@ public class ExConfirmVariationItem extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x52); - writeD(_itemObjId); - writeD(_unk1); - writeD(_unk2); + OutgoingPackets.EX_CONFIRM_VARIATION_ITEM.writeId(packet); + packet.writeD(_itemObjId); + packet.writeD(_unk1); + packet.writeD(_unk2); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationRefiner.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationRefiner.java index e05d3f3583..8bc8949bbf 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationRefiner.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationRefiner.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddddd */ -public class ExConfirmVariationRefiner extends GameServerPacket +public class ExConfirmVariationRefiner implements IClientOutgoingPacket { private final int _refinerItemObjId; private final int _lifestoneItemId; @@ -37,14 +40,14 @@ public class ExConfirmVariationRefiner extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x53); - writeD(_refinerItemObjId); - writeD(_lifestoneItemId); - writeD(_gemstoneItemId); - writeD(_gemstoneCount); - writeD(_unk2); + OutgoingPackets.EX_CONFIRM_VARIATION_REFINER.writeId(packet); + packet.writeD(_refinerItemObjId); + packet.writeD(_lifestoneItemId); + packet.writeD(_gemstoneItemId); + packet.writeD(_gemstoneCount); + packet.writeD(_unk2); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponList.java index 72a64d9628..98e988abe7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponList.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -import java.util.List; +import java.util.Set; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) d[d] * @author -Wooden- */ -public class ExCursedWeaponList extends GameServerPacket +public class ExCursedWeaponList implements IClientOutgoingPacket { - private final List _cursedWeaponIds; + private final Set _cursedWeaponIds; - public ExCursedWeaponList(List cursedWeaponIds) + public ExCursedWeaponList(Set cursedWeaponIds) { _cursedWeaponIds = cursedWeaponIds; } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x45); + OutgoingPackets.EX_CURSED_WEAPON_LIST.writeId(packet); - writeD(_cursedWeaponIds.size()); + packet.writeD(_cursedWeaponIds.size()); for (Integer i : _cursedWeaponIds) { - writeD(i.intValue()); + packet.writeD(i.intValue()); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponLocation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponLocation.java index a633c10dfa..b8a3226daa 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponLocation.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponLocation.java @@ -18,13 +18,15 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Location; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) d[ddddd]. * @author -Wooden- */ -public class ExCursedWeaponLocation extends GameServerPacket +public class ExCursedWeaponLocation implements IClientOutgoingPacket { private final List _cursedWeaponInfo; @@ -38,29 +40,29 @@ public class ExCursedWeaponLocation extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x46); + OutgoingPackets.EX_CURSED_WEAPON_LOCATION.writeId(packet); if (!_cursedWeaponInfo.isEmpty()) { - writeD(_cursedWeaponInfo.size()); + packet.writeD(_cursedWeaponInfo.size()); for (CursedWeaponInfo w : _cursedWeaponInfo) { - writeD(w.id); - writeD(w.activated); + packet.writeD(w.id); + packet.writeD(w.activated); - writeD(w.loc.getX()); - writeD(w.loc.getY()); - writeD(w.loc.getZ()); + packet.writeD(w.loc.getX()); + packet.writeD(w.loc.getY()); + packet.writeD(w.loc.getZ()); } } else { - writeD(0); - writeD(0); + packet.writeD(0); + packet.writeD(0); } + return true; } /** diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfo.java index 68c438841e..c61bf29aa0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfo.java @@ -19,7 +19,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; -public class ExEnchantSkillInfo extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class ExEnchantSkillInfo implements IClientOutgoingPacket { private final List _reqs; private final int _id; @@ -59,30 +62,26 @@ public class ExEnchantSkillInfo extends GameServerPacket _reqs.add(new Req(type, id, count, unk)); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x18); + OutgoingPackets.EX_ENCHANT_SKILL_INFO.writeId(packet); - writeD(_id); - writeD(_level); - writeD(_spCost); - writeQ(_xpCost); - writeD(_rate); + packet.writeD(_id); + packet.writeD(_level); + packet.writeD(_spCost); + packet.writeD(_xpCost); + packet.writeD(_rate); - writeD(_reqs.size()); + packet.writeD(_reqs.size()); for (Req temp : _reqs) { - writeD(temp.type); - writeD(temp.id); - writeD(temp.count); - writeD(temp.unk); + packet.writeD(temp.type); + packet.writeD(temp.id); + packet.writeD(temp.count); + packet.writeD(temp.unk); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillList.java index bebca14042..ee556c9bfc 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillList.java @@ -19,7 +19,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; -public class ExEnchantSkillList extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class ExEnchantSkillList implements IClientOutgoingPacket { private final List _skills; @@ -49,23 +52,19 @@ public class ExEnchantSkillList extends GameServerPacket _skills = new ArrayList<>(); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x17); + OutgoingPackets.EX_ENCHANT_SKILL_LIST.writeId(packet); - writeD(_skills.size()); + packet.writeD(_skills.size()); for (Skill sk : _skills) { - writeD(sk.id); - writeD(sk.nextLevel); - writeD(sk.sp); - writeQ(sk.exp); + packet.writeD(sk.id); + packet.writeD(sk.nextLevel); + packet.writeD(sk.sp); + packet.writeD(sk.exp); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingEnd.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingEnd.java index a1dda08cb6..d74a516915 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingEnd.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingEnd.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) dc d: character object id c: 1 if won 0 if failed * @author -Wooden- */ -public class ExFishingEnd extends GameServerPacket +public class ExFishingEnd implements IClientOutgoingPacket { private final boolean _win; Creature _creature; @@ -34,16 +36,12 @@ public class ExFishingEnd extends GameServerPacket _creature = character; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x14); - writeD(_creature.getObjectId()); - writeC(_win ? 1 : 0); + OutgoingPackets.EX_FISHING_END.writeId(packet); + packet.writeD(_creature.getObjectId()); + packet.writeC(_win ? 1 : 0); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingHpRegen.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingHpRegen.java index f90a5fa431..dc0a8f17c3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingHpRegen.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingHpRegen.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format (ch)dddcccd d: cahacter oid d: time left d: fish hp c: c: c: 00 if fish gets damage 02 if fish regens d: * @author -Wooden- */ -public class ExFishingHpRegen extends GameServerPacket +public class ExFishingHpRegen implements IClientOutgoingPacket { private final Creature _creature; private final int _time; @@ -45,23 +47,19 @@ public class ExFishingHpRegen extends GameServerPacket _hpBarColor = hpBarColor; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x16); + OutgoingPackets.EX_FISHING_HP_REGEN.writeId(packet); - writeD(_creature.getObjectId()); - writeD(_time); - writeD(_fishHP); - writeC(_hpMode); // 0 = HP stop, 1 = HP raise - writeC(_goodUse); // 0 = none, 1 = success, 2 = failed - writeC(_anim); // Anim: 0 = none, 1 = reeling, 2 = pumping - writeD(_penalty); // Penalty - writeC(_hpBarColor); // 0 = normal hp bar, 1 = purple hp bar + packet.writeD(_creature.getObjectId()); + packet.writeD(_time); + packet.writeD(_fishHP); + packet.writeC(_hpMode); // 0 = HP stop, 1 = HP raise + packet.writeC(_goodUse); // 0 = none, 1 = success, 2 = failed + packet.writeC(_anim); // Anim: 0 = none, 1 = reeling, 2 = pumping + packet.writeD(_penalty); // Penalty + packet.writeC(_hpBarColor); // 0 = normal hp bar, 1 = purple hp bar + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStart.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStart.java index 0e27dd0071..b37e997902 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStart.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStart.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format (ch)ddddd * @author -Wooden- */ -public class ExFishingStart extends GameServerPacket +public class ExFishingStart implements IClientOutgoingPacket { private final Creature _creature; private final int _x; @@ -42,23 +44,19 @@ public class ExFishingStart extends GameServerPacket _isNightLure = isNightLure; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x13); - writeD(_creature.getObjectId()); - writeD(_fishType); // fish type - writeD(_x); // x poisson - writeD(_y); // y poisson - writeD(_z); // z poisson - writeC(0x00); // night lure - writeC(0x00); // ?? - writeC((_fishType >= 7) && (_fishType <= 9) ? 0x01 : 0x00); // 0 = day lure 1 = night lure - writeC(0x00); + OutgoingPackets.EX_FISHING_START.writeId(packet); + packet.writeD(_creature.getObjectId()); + packet.writeD(_fishType); // fish type + packet.writeD(_x); // x poisson + packet.writeD(_y); // y poisson + packet.writeD(_z); // z poisson + packet.writeC(0x00); // night lure + packet.writeC(0x00); // ?? + packet.writeC((_fishType >= 7) && (_fishType <= 9) ? 0x01 : 0x00); // 0 = day lure 1 = night lure + packet.writeC(0x00); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStartCombat.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStartCombat.java index 243c87417c..bf91a478d8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStartCombat.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStartCombat.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format (ch)dddcc * @author -Wooden- */ -public class ExFishingStartCombat extends GameServerPacket +public class ExFishingStartCombat implements IClientOutgoingPacket { private final Creature _creature; private final int _time; @@ -41,21 +43,17 @@ public class ExFishingStartCombat extends GameServerPacket _deceptiveMode = deceptiveMode; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x15); + OutgoingPackets.EX_FISHING_START_COMBAT.writeId(packet); - writeD(_creature.getObjectId()); - writeD(_time); - writeD(_hp); - writeC(_mode); // mode: 0 = resting, 1 = fighting - writeC(_lureType); // 0 = newbie lure, 1 = normal lure, 2 = night lure - writeC(_deceptiveMode); // Fish Deceptive Mode: 0 = no, 1 = yes + packet.writeD(_creature.getObjectId()); + packet.writeD(_time); + packet.writeD(_hp); + packet.writeC(_mode); // mode: 0 = resting, 1 = fighting + packet.writeC(_lureType); // 0 = newbie lure, 1 = normal lure, 2 = night lure + packet.writeC(_deceptiveMode); // Fish Deceptive Mode: 0 = no, 1 = yes + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExGetBossRecord.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExGetBossRecord.java index b3905148e7..e7ae194a59 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExGetBossRecord.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExGetBossRecord.java @@ -19,11 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Map; import java.util.Map.Entry; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch ddd [ddd]. * @author KenM */ -public class ExGetBossRecord extends GameServerPacket +public class ExGetBossRecord implements IClientOutgoingPacket { /** The _boss record info. */ private final Map _bossRecordInfo; @@ -48,28 +51,28 @@ public class ExGetBossRecord extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x33); - writeD(_ranking); - writeD(_totalPoints); + OutgoingPackets.EX_GET_BOSS_RECORD.writeId(packet); + packet.writeD(_ranking); + packet.writeD(_totalPoints); if (_bossRecordInfo == null) { - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); } else { - writeD(_bossRecordInfo.size()); + packet.writeD(_bossRecordInfo.size()); for (Entry entry : _bossRecordInfo.entrySet()) { - writeD(entry.getKey()); - writeD(entry.getValue()); - writeD(0x00); // ?? + packet.writeD(entry.getKey()); + packet.writeD(entry.getValue()); + packet.writeD(0x00); // ?? } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java index 36270e85d2..7a5339cbdf 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java @@ -18,15 +18,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Map; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.olympiad.Hero; import org.l2jmobius.gameserver.model.olympiad.Olympiad; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) d [SdSdSdd] d: size [ S: hero name d: hero class ID S: hero clan name d: hero clan crest id S: hero ally name d: hero Ally id d: count ] * @author -Wooden- Format from KenM Re-written by godson */ -public class ExHeroList extends GameServerPacket +public class ExHeroList implements IClientOutgoingPacket { private final Map _heroList; @@ -36,21 +38,21 @@ public class ExHeroList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x23); - writeD(_heroList.size()); + OutgoingPackets.EX_HERO_LIST.writeId(packet); + packet.writeD(_heroList.size()); for (StatSet hero : _heroList.values()) { - writeS(hero.getString(Olympiad.CHAR_NAME)); - writeD(hero.getInt(Olympiad.CLASS_ID)); - writeS(hero.getString(Hero.CLAN_NAME, "")); - writeD(hero.getInt(Hero.CLAN_CREST, 0)); - writeS(hero.getString(Hero.ALLY_NAME, "")); - writeD(hero.getInt(Hero.ALLY_CREST, 0)); - writeD(hero.getInt(Hero.COUNT)); + packet.writeS(hero.getString(Olympiad.CHAR_NAME)); + packet.writeD(hero.getInt(Olympiad.CLASS_ID)); + packet.writeS(hero.getString(Hero.CLAN_NAME, "")); + packet.writeD(hero.getInt(Hero.CLAN_CREST, 0)); + packet.writeS(hero.getString(Hero.ALLY_NAME, "")); + packet.writeD(hero.getInt(Hero.ALLY_CREST, 0)); + packet.writeD(hero.getInt(Hero.COUNT)); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExListPartyMatchingWaitingRoom.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExListPartyMatchingWaitingRoom.java index 24176ad4a3..4bf76188d4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExListPartyMatchingWaitingRoom.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExListPartyMatchingWaitingRoom.java @@ -19,15 +19,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Gnacik */ -public class ExListPartyMatchingWaitingRoom extends GameServerPacket +public class ExListPartyMatchingWaitingRoom implements IClientOutgoingPacket { private final PlayerInstance _player; @SuppressWarnings("unused") @@ -48,10 +50,9 @@ public class ExListPartyMatchingWaitingRoom extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x35); + OutgoingPackets.EX_LIST_PARTY_MATCHING_WAITING_ROOM.writeId(packet); // If the mode is 0 and the activeChar isn't the PartyRoom leader, return an empty list. if (_mode == 0) @@ -60,9 +61,9 @@ public class ExListPartyMatchingWaitingRoom extends GameServerPacket final PartyMatchRoom room = PartyMatchRoomList.getInstance().getRoom(_player.getPartyRoom()); if ((room != null) && (room.getOwner() != null) && !room.getOwner().equals(_player)) { - writeD(0); - writeD(0); - return; + packet.writeD(0); + packet.writeD(0); + return true; } } @@ -90,14 +91,15 @@ public class ExListPartyMatchingWaitingRoom extends GameServerPacket int count = 0; final int size = _members.size(); - writeD(1); - writeD(size); + packet.writeD(1); + packet.writeD(size); while (size > count) { - writeS(_members.get(count).getName()); - writeD(_members.get(count).getActiveClass()); - writeD(_members.get(count).getLevel()); + packet.writeS(_members.get(count).getName()); + packet.writeD(_members.get(count).getActiveClass()); + packet.writeD(_members.get(count).getLevel()); count++; } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMPCCShowPartyMemberInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMPCCShowPartyMemberInfo.java index 69a63e9d21..09d7a367cc 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMPCCShowPartyMemberInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMPCCShowPartyMemberInfo.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: ch d[Sdd] * @author KenM */ -public class ExMPCCShowPartyMemberInfo extends GameServerPacket +public class ExMPCCShowPartyMemberInfo implements IClientOutgoingPacket { private final Party _party; @@ -33,17 +35,17 @@ public class ExMPCCShowPartyMemberInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x4a); + OutgoingPackets.EX_MPCC_SHOW_PARTY_MEMBER_INFO.writeId(packet); - writeD(_party.getMemberCount()); + packet.writeD(_party.getMemberCount()); for (PlayerInstance pc : _party.getPartyMembers()) { - writeS(pc.getName()); - writeD(pc.getObjectId()); - writeD(pc.getClassId().getId()); + packet.writeS(pc.getName()); + packet.writeD(pc.getObjectId()); + packet.writeD(pc.getClassId().getId()); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMailArrived.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMailArrived.java index 8b9a564dd0..7184c63000 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMailArrived.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMailArrived.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Fromat: (ch) (just a trigger) * @author -Wooden- */ -public class ExMailArrived extends GameServerPacket +public class ExMailArrived implements IClientOutgoingPacket { public static final ExMailArrived STATIC_PACKET = new ExMailArrived(); @@ -29,9 +32,9 @@ public class ExMailArrived extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x2d); + OutgoingPackets.EX_MAIL_ARRIVED.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExManagePartyRoomMember.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExManagePartyRoomMember.java index 7f314c1dc5..f4302c96b4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExManagePartyRoomMember.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExManagePartyRoomMember.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Gnacik Mode : 0 - add 1 - modify 2 - quit */ -public class ExManagePartyRoomMember extends GameServerPacket +public class ExManagePartyRoomMember implements IClientOutgoingPacket { private final PlayerInstance _player; private final PartyMatchRoom _room; @@ -37,27 +39,27 @@ public class ExManagePartyRoomMember extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x10); - writeD(_mode); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getActiveClass()); - writeD(_player.getLevel()); - writeD(MapRegionData.getInstance().getClosestLocation(_player.getX(), _player.getY())); + OutgoingPackets.EX_MANAGE_PARTY_ROOM_MEMBER.writeId(packet); + packet.writeD(_mode); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getActiveClass()); + packet.writeD(_player.getLevel()); + packet.writeD(MapRegionData.getInstance().getClosestLocation(_player.getX(), _player.getY())); if (_room.getOwner().equals(_player)) { - writeD(1); + packet.writeD(1); } else if ((_room.getOwner().isInParty() && _player.isInParty()) && (_room.getOwner().getParty().getPartyLeaderOID() == _player.getParty().getPartyLeaderOID())) { - writeD(2); + packet.writeD(2); } else { - writeD(0); + packet.writeD(0); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMultiPartyCommandChannelInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMultiPartyCommandChannelInfo.java index f87d6d227c..88bc3c383e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMultiPartyCommandChannelInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExMultiPartyCommandChannelInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.CommandChannel; import org.l2jmobius.gameserver.model.Party; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author chris_00 ch sdd d[sdd] */ -public class ExMultiPartyCommandChannelInfo extends GameServerPacket +public class ExMultiPartyCommandChannelInfo implements IClientOutgoingPacket { private final CommandChannel _channel; @@ -32,26 +34,26 @@ public class ExMultiPartyCommandChannelInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { if (_channel == null) { - return; + return false; } - writeC(0xfe); - writeH(0x30); + OutgoingPackets.EX_MULTI_PARTY_COMMAND_CHANNEL_INFO.writeId(packet); - writeS(_channel.getChannelLeader().getName()); - // writeD(0); // Channel loot - writeD(_channel.getMemberCount()); + packet.writeS(_channel.getChannelLeader().getName()); + // packet.writeD(0); // Channel loot + packet.writeD(_channel.getMemberCount()); - writeD(_channel.getParties().size()); + packet.writeD(_channel.getParties().size()); for (Party p : _channel.getParties()) { - writeS(p.getLeader().getName()); - // writeD(p.getPartyLeaderOID()); - writeD(p.getMemberCount()); + packet.writeS(p.getLeader().getName()); + // packet.writeD(p.getPartyLeaderOID()); + packet.writeD(p.getMemberCount()); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadMode.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadMode.java index 2334aec372..a83eaa02e0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadMode.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadMode.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ * @author godson */ -public class ExOlympiadMode extends GameServerPacket +public class ExOlympiadMode implements IClientOutgoingPacket { private static int _mode; private final PlayerInstance _player; @@ -38,11 +40,11 @@ public class ExOlympiadMode extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_player == null) { - return; + return false; } if (_mode == 3) @@ -50,8 +52,8 @@ public class ExOlympiadMode extends GameServerPacket _player.setObserverMode(true); } - writeC(0xfe); - writeH(0x2b); - writeC(_mode); + OutgoingPackets.EX_OLYMPIAD_MODE.writeId(packet); + packet.writeC(_mode); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadSpelledInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadSpelledInfo.java index 20b5c6795f..1bae7884ef 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadSpelledInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadSpelledInfo.java @@ -19,13 +19,15 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ * @author godson */ -public class ExOlympiadSpelledInfo extends GameServerPacket +public class ExOlympiadSpelledInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final List _effects; @@ -56,21 +58,21 @@ public class ExOlympiadSpelledInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_player == null) { - return; + return false; } - writeC(0xfe); - writeH(0x2a); - writeD(_player.getObjectId()); - writeD(_effects.size()); + OutgoingPackets.EX_OLYMPIAD_SPELLED_INFO.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_effects.size()); for (Effect temp : _effects) { - writeD(temp._skillId); - writeH(temp._level); - writeD(temp._duration / 1000); + packet.writeD(temp._skillId); + packet.writeH(temp._level); + packet.writeD(temp._duration / 1000); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadUserInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadUserInfo.java index ce275ff71e..d032b583f8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadUserInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadUserInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ * @author godson */ -public class ExOlympiadUserInfo extends GameServerPacket +public class ExOlympiadUserInfo implements IClientOutgoingPacket { private final int _side; private final PlayerInstance _player; @@ -38,21 +40,21 @@ public class ExOlympiadUserInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_player == null) { - return; + return false; } - writeC(0xfe); - writeH(0x29); - writeC(_side); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getClassId().getId()); - writeD((int) _player.getCurrentHp()); - writeD(_player.getMaxHp()); - writeD((int) _player.getCurrentCp()); - writeD(_player.getMaxCp()); + OutgoingPackets.EX_OLYMPIAD_USER_INFO.writeId(packet); + packet.writeC(_side); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getClassId().getId()); + packet.writeD((int) _player.getCurrentHp()); + packet.writeD(_player.getMaxHp()); + packet.writeD((int) _player.getCurrentCp()); + packet.writeD(_player.getMaxCp()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOpenMPCC.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOpenMPCC.java index 4b8a22cb33..80afb96478 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOpenMPCC.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOpenMPCC.java @@ -16,15 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author chris_00 opens the CommandChannel Information window */ -public class ExOpenMPCC extends GameServerPacket +public class ExOpenMPCC implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x25); + OutgoingPackets.EX_OPEN_MPCC.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPCCafePointInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPCCafePointInfo.java index 680cfa09c2..e8630b707b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPCCafePointInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPCCafePointInfo.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author KenM */ -public class ExPCCafePointInfo extends GameServerPacket +public class ExPCCafePointInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _addPoint; @@ -61,14 +63,14 @@ public class ExPCCafePointInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x31); - writeD(_player.getPcBangScore()); - writeD(_addPoint); - writeC(_periodType); - writeD(_remainTime); - writeC(_pointType); + OutgoingPackets.EX_PC_CAFE_POINT_INFO.writeId(packet); + packet.writeD(_player.getPcBangScore()); + packet.writeD(_addPoint); + packet.writeC(_periodType); + packet.writeD(_remainTime); + packet.writeC(_pointType); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPartyRoomMember.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPartyRoomMember.java index 96b9c12710..6ca484f5e3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPartyRoomMember.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPartyRoomMember.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Gnacik */ -public class ExPartyRoomMember extends GameServerPacket +public class ExPartyRoomMember implements IClientOutgoingPacket { private final PartyMatchRoom _room; private final int _mode; @@ -35,31 +37,31 @@ public class ExPartyRoomMember extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x0e); - writeD(_mode); - writeD(_room.getMembers()); + OutgoingPackets.EX_PARTY_ROOM_MEMBER.writeId(packet); + packet.writeD(_mode); + packet.writeD(_room.getMembers()); for (PlayerInstance member : _room.getPartyMembers()) { - writeD(member.getObjectId()); - writeS(member.getName()); - writeD(member.getActiveClass()); - writeD(member.getLevel()); - writeD(MapRegionData.getInstance().getClosestLocation(member.getX(), member.getY())); + packet.writeD(member.getObjectId()); + packet.writeS(member.getName()); + packet.writeD(member.getActiveClass()); + packet.writeD(member.getLevel()); + packet.writeD(MapRegionData.getInstance().getClosestLocation(member.getX(), member.getY())); if (_room.getOwner().equals(member)) { - writeD(1); + packet.writeD(1); } else if ((_room.getOwner().isInParty() && member.isInParty()) && (_room.getOwner().getParty().getPartyLeaderOID() == member.getParty().getPartyLeaderOID())) { - writeD(2); + packet.writeD(2); } else { - writeD(0); + packet.writeD(0); } } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPledgeCrestLarge.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPledgeCrestLarge.java index 864a16a781..691633f5d7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPledgeCrestLarge.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExPledgeCrestLarge.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch) ddd b d: ? d: crest ID d: crest size b: raw data * @author -Wooden- */ -public class ExPledgeCrestLarge extends GameServerPacket +public class ExPledgeCrestLarge implements IClientOutgoingPacket { private final int _crestId; private final byte[] _data; @@ -31,20 +34,16 @@ public class ExPledgeCrestLarge extends GameServerPacket _data = data; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x28); + OutgoingPackets.EX_PLEDGE_CREST_LARGE.writeId(packet); - writeD(0x00); // ??? - writeD(_crestId); - writeD(_data.length); + packet.writeD(0x00); // ??? + packet.writeD(_crestId); + packet.writeD(_data.length); - writeB(_data); + packet.writeB(_data); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExQuestInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExQuestInfo.java index 4e3a3bbb63..de584fae71 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExQuestInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExQuestInfo.java @@ -16,20 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: $ $Date: $ * @author Luca Baldi */ -public class ExQuestInfo extends GameServerPacket +public class ExQuestInfo implements IClientOutgoingPacket { - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x19); + OutgoingPackets.EX_QUEST_INFO.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRedSky.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRedSky.java index a83e5a0b22..77c5c20e43 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRedSky.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRedSky.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch d. * @author KenM */ -public class ExRedSky extends GameServerPacket +public class ExRedSky implements IClientOutgoingPacket { /** The _duration. */ private final int _duration; @@ -35,10 +38,10 @@ public class ExRedSky extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x40); - writeD(_duration); + OutgoingPackets.EX_RED_SKY.writeId(packet); + packet.writeD(_duration); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRequestHackShield.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRequestHackShield.java index a920cedbc6..242c8fd935 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRequestHackShield.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRequestHackShield.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch Trigger packet. * @author KenM */ -public class ExRequestHackShield extends GameServerPacket +public class ExRequestHackShield implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x48); + OutgoingPackets.EX_REQUEST_HACK_SHIELD.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRestartClient.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRestartClient.java index fb4ec98d42..b4eedf52c9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRestartClient.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExRestartClient.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch). * @author -Wooden- */ -public class ExRestartClient extends GameServerPacket +public class ExRestartClient implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x47); + OutgoingPackets.EX_RESTART_CLIENT.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExSendManorList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExSendManorList.java index 801ca722f2..84dcdd3f94 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExSendManorList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExSendManorList.java @@ -18,11 +18,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format : (h) d [dS] h sub id d: number of manors [ d: id S: manor name ] * @author l3x */ -public class ExSendManorList extends GameServerPacket +public class ExSendManorList implements IClientOutgoingPacket { private final List _manors; @@ -32,16 +35,16 @@ public class ExSendManorList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x1B); - writeD(_manors.size()); + OutgoingPackets.EX_SEND_MANOR_LIST.writeId(packet); + packet.writeD(_manors.size()); for (int i = 0; i < _manors.size(); i++) { final int j = i + 1; - writeD(j); - writeS(_manors.get(i)); + packet.writeD(j); + packet.writeS(_manors.get(i)); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExServerPrimitive.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExServerPrimitive.java index 7452958054..7044264a80 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExServerPrimitive.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExServerPrimitive.java @@ -20,12 +20,15 @@ import java.awt.Color; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * A packet used to draw points and lines on client.
    * Note: Names in points and lines are bugged they will appear even when not looking at them. * @author NosBit */ -public class ExServerPrimitive extends GameServerPacket +public class ExServerPrimitive implements IClientOutgoingPacket { private final String _name; private final int _x; @@ -165,49 +168,49 @@ public class ExServerPrimitive extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x24); // Changed at Kamael to 11 - writeS(_name); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(65535); // has to do something with display range and angle - writeD(65535); // has to do something with display range and angle + OutgoingPackets.EX_SERVER_PRIMITIVE.writeId(packet); + packet.writeS(_name); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(65535); // has to do something with display range and angle + packet.writeD(65535); // has to do something with display range and angle - writeD(_points.size() + _lines.size()); + packet.writeD(_points.size() + _lines.size()); for (Point point : _points) { - writeC(1); // Its the type in this case Point - writeS(point.getName()); + packet.writeC(1); // Its the type in this case Point + packet.writeS(point.getName()); final int color = point.getColor(); - writeD((color >> 16) & 0xFF); // R - writeD((color >> 8) & 0xFF); // G - writeD(color & 0xFF); // B - writeD(point.isNameColored() ? 1 : 0); - writeD(point.getX()); - writeD(point.getY()); - writeD(point.getZ()); + packet.writeD((color >> 16) & 0xFF); // R + packet.writeD((color >> 8) & 0xFF); // G + packet.writeD(color & 0xFF); // B + packet.writeD(point.isNameColored() ? 1 : 0); + packet.writeD(point.getX()); + packet.writeD(point.getY()); + packet.writeD(point.getZ()); } for (Line line : _lines) { - writeC(2); // Its the type in this case Line - writeS(line.getName()); + packet.writeC(2); // Its the type in this case Line + packet.writeS(line.getName()); final int color = line.getColor(); - writeD((color >> 16) & 0xFF); // R - writeD((color >> 8) & 0xFF); // G - writeD(color & 0xFF); // B - writeD(line.isNameColored() ? 1 : 0); - writeD(line.getX()); - writeD(line.getY()); - writeD(line.getZ()); - writeD(line.getX2()); - writeD(line.getY2()); - writeD(line.getZ2()); + packet.writeD((color >> 16) & 0xFF); // R + packet.writeD((color >> 8) & 0xFF); // G + packet.writeD(color & 0xFF); // B + packet.writeD(line.isNameColored() ? 1 : 0); + packet.writeD(line.getX()); + packet.writeD(line.getY()); + packet.writeD(line.getZ()); + packet.writeD(line.getX2()); + packet.writeD(line.getY2()); + packet.writeD(line.getZ2()); } + return true; } private static class Point diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowAdventurerGuideBook.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowAdventurerGuideBook.java index 52417a39fa..a155f10008 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowAdventurerGuideBook.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowAdventurerGuideBook.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch (trigger). * @author KenM */ -public class ExShowAdventurerGuideBook extends GameServerPacket +public class ExShowAdventurerGuideBook implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x37); + OutgoingPackets.EX_SHOW_ADVENTURER_GUIDE_BOOK.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java index a6c2a9b3cc..0b71f2c32b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java @@ -19,15 +19,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: ch cddd[ddddcdcdcd] c - id (0xFE) h - sub id (0x1D) c d - manor id d d - size [ d - crop id d - residual buy d - start buy d - buy price c - reward type d - seed level c - reward 1 items d - reward 1 item id c - reward 2 items d - reward 2 item id ] * @author l3x */ -public class ExShowCropInfo extends GameServerPacket +public class ExShowCropInfo implements IClientOutgoingPacket { private List _crops; private final int _manorId; @@ -43,26 +45,26 @@ public class ExShowCropInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); // Id - writeH(0x1D); // SubId - writeC(0); - writeD(_manorId); // Manor ID - writeD(0); - writeD(_crops.size()); + OutgoingPackets.EX_SHOW_CROP_INFO.writeId(packet); + packet.writeC(0); + packet.writeD(_manorId); // Manor ID + packet.writeD(0); + packet.writeD(_crops.size()); for (CropProcure crop : _crops) { - writeD(crop.getId()); // Crop id - writeD(crop.getAmount()); // Buy residual - writeD(crop.getStartAmount()); // Buy - writeD(crop.getPrice()); // Buy price - writeC(crop.getReward()); // Reward - writeD(ManorSeedData.getInstance().getSeedLevelByCrop(crop.getId())); // Seed Level - writeC(1); // reward 1 Type - writeD(ManorSeedData.getInstance().getRewardItem(crop.getId(), 1)); // Reward 1 Type Item Id - writeC(1); // reward 2 Type - writeD(ManorSeedData.getInstance().getRewardItem(crop.getId(), 2)); // Reward 2 Type Item Id + packet.writeD(crop.getId()); // Crop id + packet.writeD(crop.getAmount()); // Buy residual + packet.writeD(crop.getStartAmount()); // Buy + packet.writeD(crop.getPrice()); // Buy price + packet.writeC(crop.getReward()); // Reward + packet.writeD(ManorSeedData.getInstance().getSeedLevelByCrop(crop.getId())); // Seed Level + packet.writeC(1); // reward 1 Type + packet.writeD(ManorSeedData.getInstance().getRewardItem(crop.getId(), 1)); // Reward 1 Type Item Id + packet.writeC(1); // reward 2 Type + packet.writeD(ManorSeedData.getInstance().getRewardItem(crop.getId(), 2)); // Reward 2 Type Item Id } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java index 6fb9f5c5fa..bc6ef6f7ee 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java @@ -18,28 +18,25 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch dd [ddcdcdddddddcddc] c - id h - sub id d - manor id d - size [ d - crop id d - seed level c d - reward 1 id c d - reward 2 id d - next sale limit d d - min crop price d - max crop price d - today buy d - today price c - today reward d - next buy d - next price c - next * reward ] * @author l3x */ -public class ExShowCropSetting extends GameServerPacket +public class ExShowCropSetting implements IClientOutgoingPacket { private final int _manorId; private final int _count; private final int[] _cropData; // data to send, size:_count*14 - @Override - public void runImpl() - { - } - public ExShowCropSetting(int manorId) { _manorId = manorId; @@ -89,35 +86,35 @@ public class ExShowCropSetting extends GameServerPacket } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); // Id - writeH(0x20); // SubId + OutgoingPackets.EX_SHOW_CROP_SETTING.writeId(packet); - writeD(_manorId); // manor id - writeD(_count); // size + packet.writeD(_manorId); // manor id + packet.writeD(_count); // size for (int i = 0; i < _count; i++) { - writeD(_cropData[(i * 14) + 0]); // crop id - writeD(_cropData[(i * 14) + 1]); // seed level - writeC(1); - writeD(_cropData[(i * 14) + 2]); // reward 1 id - writeC(1); - writeD(_cropData[(i * 14) + 3]); // reward 2 id + packet.writeD(_cropData[(i * 14) + 0]); // crop id + packet.writeD(_cropData[(i * 14) + 1]); // seed level + packet.writeC(1); + packet.writeD(_cropData[(i * 14) + 2]); // reward 1 id + packet.writeC(1); + packet.writeD(_cropData[(i * 14) + 3]); // reward 2 id - writeD(_cropData[(i * 14) + 4]); // next sale limit - writeD(_cropData[(i * 14) + 5]); // ??? - writeD(_cropData[(i * 14) + 6]); // min crop price - writeD(_cropData[(i * 14) + 7]); // max crop price + packet.writeD(_cropData[(i * 14) + 4]); // next sale limit + packet.writeD(_cropData[(i * 14) + 5]); // ??? + packet.writeD(_cropData[(i * 14) + 6]); // min crop price + packet.writeD(_cropData[(i * 14) + 7]); // max crop price - writeD(_cropData[(i * 14) + 8]); // today buy - writeD(_cropData[(i * 14) + 9]); // today price - writeC(_cropData[(i * 14) + 10]); // today reward + packet.writeD(_cropData[(i * 14) + 8]); // today buy + packet.writeD(_cropData[(i * 14) + 9]); // today price + packet.writeC(_cropData[(i * 14) + 10]); // today reward - writeD(_cropData[(i * 14) + 11]); // next buy - writeD(_cropData[(i * 14) + 12]); // next price - writeC(_cropData[(i * 14) + 13]); // next reward + packet.writeD(_cropData[(i * 14) + 11]); // next buy + packet.writeD(_cropData[(i * 14) + 12]); // next price + packet.writeC(_cropData[(i * 14) + 13]); // next reward } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java index 640476d75d..c6d13727ac 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java @@ -18,13 +18,15 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch cd [ddddcdcd] c - id h - sub id c d - size [ d - level d - seed price d - seed level d - crop price c d - reward 1 id c d - reward 2 id ] * @author l3x */ -public class ExShowManorDefaultInfo extends GameServerPacket +public class ExShowManorDefaultInfo implements IClientOutgoingPacket { private List _crops = null; @@ -34,22 +36,22 @@ public class ExShowManorDefaultInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x1E); - writeC(0); - writeD(_crops.size()); + OutgoingPackets.EX_SHOW_MANOR_DEFAULT_INFO.writeId(packet); + packet.writeC(0); + packet.writeD(_crops.size()); for (int cropId : _crops) { - writeD(cropId); // crop Id - writeD(ManorSeedData.getInstance().getSeedLevelByCrop(cropId)); // level - writeD(ManorSeedData.getInstance().getSeedBasicPriceByCrop(cropId)); // seed price - writeD(ManorSeedData.getInstance().getCropBasicPrice(cropId)); // crop price - writeC(1); // reward 1 Type - writeD(ManorSeedData.getInstance().getRewardItem(cropId, 1)); // Reward 1 Type Item Id - writeC(1); // reward 2 Type - writeD(ManorSeedData.getInstance().getRewardItem(cropId, 2)); // Reward 2 Type Item Id + packet.writeD(cropId); // crop Id + packet.writeD(ManorSeedData.getInstance().getSeedLevelByCrop(cropId)); // level + packet.writeD(ManorSeedData.getInstance().getSeedBasicPriceByCrop(cropId)); // seed price + packet.writeD(ManorSeedData.getInstance().getCropBasicPrice(cropId)); // crop price + packet.writeC(1); // reward 1 Type + packet.writeD(ManorSeedData.getInstance().getRewardItem(cropId, 1)); // Reward 1 Type Item Id + packet.writeC(1); // reward 2 Type + packet.writeD(ManorSeedData.getInstance().getRewardItem(cropId, 2)); // Reward 2 Type Item Id } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowProcureCropDetail.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowProcureCropDetail.java index 636edb9f45..047367b3cb 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowProcureCropDetail.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowProcureCropDetail.java @@ -20,16 +20,18 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch dd [dddc] c - id h - sub id d - crop id d - size [ d - manor name d - buy residual d - buy price c - reward type ] * @author l3x */ -public class ExShowProcureCropDetail extends GameServerPacket +public class ExShowProcureCropDetail implements IClientOutgoingPacket { private final int _cropId; private final Map _castleCrops; @@ -49,26 +51,21 @@ public class ExShowProcureCropDetail extends GameServerPacket } @Override - public void runImpl() + public boolean write(PacketWriter packet) { - } - - @Override - public void writeImpl() - { - writeC(0xFE); - writeH(0x22); + OutgoingPackets.EX_SHOW_PROCURE_CROP_DETAIL.writeId(packet); - writeD(_cropId); // crop id - writeD(_castleCrops.size()); // size + packet.writeD(_cropId); // crop id + packet.writeD(_castleCrops.size()); // size for (Entry entry : _castleCrops.entrySet()) { final CropProcure crop = entry.getValue(); - writeD(entry.getKey()); // manor name - writeD(crop.getAmount()); // buy residual - writeD(crop.getPrice()); // buy price - writeC(crop.getReward()); // reward type + packet.writeD(entry.getKey()); // manor name + packet.writeD(crop.getAmount()); // buy residual + packet.writeD(crop.getPrice()); // buy price + packet.writeC(crop.getReward()); // reward type } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowQuestMark.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowQuestMark.java index 5af2acdea1..93eebbf908 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowQuestMark.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowQuestMark.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Luca Baldi */ -public class ExShowQuestMark extends GameServerPacket +public class ExShowQuestMark implements IClientOutgoingPacket { private final int _questId; @@ -28,15 +31,11 @@ public class ExShowQuestMark extends GameServerPacket _questId = questId; } - /** - * @see org.l2jmobius.gameserver.network.serverpackets.GameServerPacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - // TODO Auto-generated method stub - writeC(0xfe); - writeH(0x1a); - writeD(_questId); + OutgoingPackets.EX_SHOW_QUEST_MARK.writeId(packet); + packet.writeD(_questId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowScreenMessage.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowScreenMessage.java index 8f34bb863f..5c5791e742 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowScreenMessage.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowScreenMessage.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Kerberos */ -public class ExShowScreenMessage extends GameServerPacket +public class ExShowScreenMessage implements IClientOutgoingPacket { private final int _type; private final int _sysMessageId; @@ -64,20 +67,20 @@ public class ExShowScreenMessage extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x38); - writeD(_type); // 0 - system messages, 1 - your defined text - writeD(_sysMessageId); // system message id (_type must be 0 otherwise no effect) - writeD(_position); // message position - writeD(_unk1); // ? - writeD(_size); // font size 0 - normal, 1 - small - writeD(_unk2); // ? - writeD(_unk3); // ? - writeD(_effect ? 1 : 0); // upper effect (0 - disabled, 1 enabled) - _position must be 2 (center) otherwise no effect - writeD(_time); // time - writeD(_unk4); // ? - writeS(_text); // your text (_type must be 1, otherwise no effect) + OutgoingPackets.EX_SHOW_SCREEN_MESSAGE.writeId(packet); + packet.writeD(_type); // 0 - system messages, 1 - your defined text + packet.writeD(_sysMessageId); // system message id (_type must be 0 otherwise no effect) + packet.writeD(_position); // message position + packet.writeD(_unk1); // ? + packet.writeD(_size); // font size 0 - normal, 1 - small + packet.writeD(_unk2); // ? + packet.writeD(_unk3); // ? + packet.writeD(_effect ? 1 : 0); // upper effect (0 - disabled, 1 enabled) - _position must be 2 (center) otherwise no effect + packet.writeD(_time); // time + packet.writeD(_unk4); // ? + packet.writeS(_text); // your text (_type must be 1, otherwise no effect) + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java index 0532dc5815..7d90b0e3b8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.SeedProduction; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch ddd [dddddcdcd] c - id h - sub id d - manor id d d - size [ d - seed id d - left to buy d - started amount d - sell price d - seed level c d - reward 1 id c d - reward 2 id ] * @author l3x */ -public class ExShowSeedInfo extends GameServerPacket +public class ExShowSeedInfo implements IClientOutgoingPacket { private List _seeds; private final int _manorId; @@ -42,25 +44,25 @@ public class ExShowSeedInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); // Id - writeH(0x1C); // SubId - writeC(0); - writeD(_manorId); // Manor ID - writeD(0); - writeD(_seeds.size()); + OutgoingPackets.EX_SHOW_SEED_INFO.writeId(packet); + packet.writeC(0); + packet.writeD(_manorId); // Manor ID + packet.writeD(0); + packet.writeD(_seeds.size()); for (SeedProduction seed : _seeds) { - writeD(seed.getId()); // Seed id - writeD(seed.getCanProduce()); // Left to buy - writeD(seed.getStartProduce()); // Started amount - writeD(seed.getPrice()); // Sell Price - writeD(ManorSeedData.getInstance().getSeedLevel(seed.getId())); // Seed Level - writeC(1); // reward 1 Type - writeD(ManorSeedData.getInstance().getRewardItemBySeed(seed.getId(), 1)); // Reward 1 Type Item Id - writeC(1); // reward 2 Type - writeD(ManorSeedData.getInstance().getRewardItemBySeed(seed.getId(), 2)); // Reward 2 Type Item Id + packet.writeD(seed.getId()); // Seed id + packet.writeD(seed.getCanProduce()); // Left to buy + packet.writeD(seed.getStartProduce()); // Started amount + packet.writeD(seed.getPrice()); // Sell Price + packet.writeD(ManorSeedData.getInstance().getSeedLevel(seed.getId())); // Seed Level + packet.writeC(1); // reward 1 Type + packet.writeD(ManorSeedData.getInstance().getRewardItemBySeed(seed.getId(), 1)); // Reward 1 Type Item Id + packet.writeC(1); // reward 2 Type + packet.writeD(ManorSeedData.getInstance().getRewardItemBySeed(seed.getId(), 2)); // Reward 2 Type Item Id } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java index 140ee01f0c..cf42f8ae05 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java @@ -18,27 +18,24 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.SeedProduction; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch dd [ddcdcdddddddd] c - id h - sub id d - manor id d - size [ d - seed id d - level c d - reward 1 id c d - reward 2 id d - next sale limit d - price for castle to produce 1 d - min seed price d - max seed price d - today sales d - today price d - next sales d - next price ] * @author l3x */ -public class ExShowSeedSetting extends GameServerPacket +public class ExShowSeedSetting implements IClientOutgoingPacket { private final int _manorId; private final int _count; private final int[] _seedData; // data to send, size:_count*12 - @Override - public void runImpl() - { - } - public ExShowSeedSetting(int manorId) { _manorId = manorId; @@ -84,32 +81,32 @@ public class ExShowSeedSetting extends GameServerPacket } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); // Id - writeH(0x1F); // SubId + OutgoingPackets.EX_SHOW_SEED_SETTING.writeId(packet); - writeD(_manorId); // manor id - writeD(_count); // size + packet.writeD(_manorId); // manor id + packet.writeD(_count); // size for (int i = 0; i < _count; i++) { - writeD(_seedData[(i * 12) + 0]); // seed id - writeD(_seedData[(i * 12) + 1]); // level - writeC(1); - writeD(_seedData[(i * 12) + 2]); // reward 1 id - writeC(1); - writeD(_seedData[(i * 12) + 3]); // reward 2 id + packet.writeD(_seedData[(i * 12) + 0]); // seed id + packet.writeD(_seedData[(i * 12) + 1]); // level + packet.writeC(1); + packet.writeD(_seedData[(i * 12) + 2]); // reward 1 id + packet.writeC(1); + packet.writeD(_seedData[(i * 12) + 3]); // reward 2 id - writeD(_seedData[(i * 12) + 4]); // next sale limit - writeD(_seedData[(i * 12) + 5]); // price for castle to produce 1 - writeD(_seedData[(i * 12) + 6]); // min seed price - writeD(_seedData[(i * 12) + 7]); // max seed price + packet.writeD(_seedData[(i * 12) + 4]); // next sale limit + packet.writeD(_seedData[(i * 12) + 5]); // price for castle to produce 1 + packet.writeD(_seedData[(i * 12) + 6]); // min seed price + packet.writeD(_seedData[(i * 12) + 7]); // max seed price - writeD(_seedData[(i * 12) + 8]); // today sales - writeD(_seedData[(i * 12) + 9]); // today price - writeD(_seedData[(i * 12) + 10]); // next sales - writeD(_seedData[(i * 12) + 11]); // next price + packet.writeD(_seedData[(i * 12) + 8]); // today sales + packet.writeD(_seedData[(i * 12) + 9]); // today price + packet.writeD(_seedData[(i * 12) + 10]); // next sales + packet.writeD(_seedData[(i * 12) + 11]); // next price } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java index e02d1ae4e0..d961017809 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java @@ -20,17 +20,19 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch dd [ddddcdcdddc] c - id h - sub id d - manor id d - size [ d - Object id d - crop id d - seed level c d - reward 1 id c d - reward 2 id d - manor d - buy residual d - buy price d - reward ] * @author l3x */ -public class ExShowSellCropList extends GameServerPacket +public class ExShowSellCropList implements IClientOutgoingPacket { private int _manorId = 1; private final Map _cropsItems; @@ -62,46 +64,40 @@ public class ExShowSellCropList extends GameServerPacket } @Override - public void runImpl() + public boolean write(PacketWriter packet) { - // no long running - } - - @Override - public void writeImpl() - { - writeC(0xFE); - writeH(0x21); + OutgoingPackets.EX_SHOW_SELL_CROP_LIST.writeId(packet); - writeD(_manorId); // manor id - writeD(_cropsItems.size()); // size + packet.writeD(_manorId); // manor id + packet.writeD(_cropsItems.size()); // size for (ItemInstance item : _cropsItems.values()) { - writeD(item.getObjectId()); // Object id - writeD(item.getItemId()); // crop id - writeD(ManorSeedData.getInstance().getSeedLevelByCrop(item.getItemId())); // seed level - writeC(1); - writeD(ManorSeedData.getInstance().getRewardItem(item.getItemId(), 1)); // reward 1 id - writeC(1); - writeD(ManorSeedData.getInstance().getRewardItem(item.getItemId(), 2)); // reward 2 id + packet.writeD(item.getObjectId()); // Object id + packet.writeD(item.getItemId()); // crop id + packet.writeD(ManorSeedData.getInstance().getSeedLevelByCrop(item.getItemId())); // seed level + packet.writeC(1); + packet.writeD(ManorSeedData.getInstance().getRewardItem(item.getItemId(), 1)); // reward 1 id + packet.writeC(1); + packet.writeD(ManorSeedData.getInstance().getRewardItem(item.getItemId(), 2)); // reward 2 id if (_castleCrops.containsKey(item.getItemId())) { final CropProcure crop = _castleCrops.get(item.getItemId()); - writeD(_manorId); // manor - writeD(crop.getAmount()); // buy residual - writeD(crop.getPrice()); // buy price - writeC(crop.getReward()); // reward + packet.writeD(_manorId); // manor + packet.writeD(crop.getAmount()); // buy residual + packet.writeD(crop.getPrice()); // buy price + packet.writeC(crop.getReward()); // reward } else { - writeD(0xFFFFFFFF); // manor - writeD(0); // buy residual - writeD(0); // buy price - writeC(0); // reward + packet.writeD(0xFFFFFFFF); // manor + packet.writeD(0); // buy residual + packet.writeD(0); // buy price + packet.writeC(0); // reward } - writeD(item.getCount()); // my crops + packet.writeD(item.getCount()); // my crops } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSlideshowKamael.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSlideshowKamael.java index e464f3a92b..41f52ce6d7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSlideshowKamael.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSlideshowKamael.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch * @author devScarlet & mrTJO */ -public class ExShowSlideshowKamael extends GameServerPacket +public class ExShowSlideshowKamael implements IClientOutgoingPacket { public static final ExShowSlideshowKamael STATIC_PACKET = new ExShowSlideshowKamael(); @@ -29,9 +32,9 @@ public class ExShowSlideshowKamael extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x5b); + OutgoingPackets.EX_SHOW_SLIDESHOW_KAMAEL.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationCancelWindow.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationCancelWindow.java index 22a68e7a3c..046557e371 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationCancelWindow.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationCancelWindow.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch Trigger packet. * @author KenM */ -public class ExShowVariationCancelWindow extends GameServerPacket +public class ExShowVariationCancelWindow implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x51); + OutgoingPackets.EX_SHOW_VARIATION_CANCEL_WINDOW.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationMakeWindow.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationMakeWindow.java index 721c890624..cd6d60b482 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationMakeWindow.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationMakeWindow.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch Trigger packet. * @author KenM */ -public class ExShowVariationMakeWindow extends GameServerPacket +public class ExShowVariationMakeWindow implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x50); + OutgoingPackets.EX_SHOW_VARIATION_MAKE_WINDOW.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExStorageMaxCount.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExStorageMaxCount.java index 3e9eb52e36..12ab975e64 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExStorageMaxCount.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExStorageMaxCount.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch)ddddddd d: Number of Inventory Slots d: Number of Warehouse Slots d: Number of Freight Slots (unconfirmed) (200 for a low level dwarf) d: Private Sell Store Slots (unconfirmed) (4 for a low level dwarf) d: Private Buy Store Slots (unconfirmed) (5 for a low level dwarf) d: Dwarven * Recipe Book Slots d: Normal Recipe Book Slots * @author -Wooden- format from KenM */ -public class ExStorageMaxCount extends GameServerPacket +public class ExStorageMaxCount implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _inventory; @@ -46,22 +48,18 @@ public class ExStorageMaxCount extends GameServerPacket _recipe = _player.getCommonRecipeLimit(); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x2e); + OutgoingPackets.EX_STORAGE_MAX_COUNT.writeId(packet); - writeD(_inventory); - writeD(_warehouse); - writeD(_freight); - writeD(_privateSell); - writeD(_privateBuy); - writeD(_receipeD); - writeD(_recipe); + packet.writeD(_inventory); + packet.writeD(_warehouse); + packet.writeD(_freight); + packet.writeD(_privateSell); + packet.writeD(_privateBuy); + packet.writeD(_receipeD); + packet.writeD(_recipe); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationCancelResult.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationCancelResult.java index 691c0cded8..f9fd99f0ea 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationCancelResult.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationCancelResult.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddd. */ -public class ExVariationCancelResult extends GameServerPacket +public class ExVariationCancelResult implements IClientOutgoingPacket { /** The _close window. */ private final int _closeWindow; @@ -38,11 +41,11 @@ public class ExVariationCancelResult extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x57); - writeD(_closeWindow); - writeD(_unk1); + OutgoingPackets.EX_VARIATION_CANCEL_RESULT.writeId(packet); + packet.writeD(_closeWindow); + packet.writeD(_unk1); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationResult.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationResult.java index 2cbb06745e..6e8bd5de5f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationResult.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationResult.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddd. */ -public class ExVariationResult extends GameServerPacket +public class ExVariationResult implements IClientOutgoingPacket { /** The _stat12. */ private final int _stat12; @@ -44,12 +47,12 @@ public class ExVariationResult extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x55); - writeD(_stat12); - writeD(_stat34); - writeD(_unk3); + OutgoingPackets.EX_VARIATION_RESULT.writeId(packet); + packet.writeD(_stat12); + packet.writeD(_stat34); + packet.writeD(_unk3); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FakePlayerInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FakePlayerInfo.java index dffb3339f6..223896fc0c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FakePlayerInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FakePlayerInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.PlayerTemplateData; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class FakePlayerInfo extends GameServerPacket +public class FakePlayerInfo implements IClientOutgoingPacket { private final NpcInstance _activeChar; @@ -32,81 +34,83 @@ public class FakePlayerInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x03); - writeD(_activeChar.getX()); - writeD(_activeChar.getY()); - writeD(_activeChar.getZ()); - writeD(_activeChar.getHeading()); - writeD(_activeChar.getObjectId()); - writeS(_activeChar.getFakePlayerInstance().getName()); - writeD(_activeChar.getFakePlayerInstance().getRace()); - writeD(_activeChar.getFakePlayerInstance().isFemaleSex() ? 1 : 0); - writeD(_activeChar.getFakePlayerInstance().getClassId()); - writeD(0); - writeD(0); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_RHAND()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_LHAND()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_GLOVES()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_CHEST()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_LEGS()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_FEET()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_RHAND()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); + OutgoingPackets.CHAR_INFO.writeId(packet); - writeD(_activeChar.getFakePlayerInstance().getPvpFlag() ? 1 : 0); - writeD(_activeChar.getFakePlayerInstance().getKarma()); - writeD(_activeChar.getMAtkSpd()); - writeD(_activeChar.getPAtkSpd()); - writeD(_activeChar.getFakePlayerInstance().getPvpFlag() ? 1 : 0); - writeD(_activeChar.getFakePlayerInstance().getKarma()); - writeD(_activeChar.getRunSpeed()); - writeD(_activeChar.getRunSpeed() / 2); - writeD(_activeChar.getRunSpeed() / 3); - writeD(_activeChar.getRunSpeed() / 3); - writeD(_activeChar.getRunSpeed()); - writeD(_activeChar.getRunSpeed()); - writeD(_activeChar.getRunSpeed()); - writeD(_activeChar.getRunSpeed()); - writeF(_activeChar.getStat().getMovementSpeedMultiplier()); - writeF(_activeChar.getStat().getAttackSpeedMultiplier()); - writeF(PlayerTemplateData.getInstance().getTemplate(_activeChar.getFakePlayerInstance().getClassId()).getCollisionRadius()); - writeF(PlayerTemplateData.getInstance().getTemplate(_activeChar.getFakePlayerInstance().getClassId()).getCollisionHeight()); - writeD(_activeChar.getFakePlayerInstance().getHairStyle()); - writeD(_activeChar.getFakePlayerInstance().getHairColor()); - writeD(_activeChar.getFakePlayerInstance().getFace()); - writeS(_activeChar.getFakePlayerInstance().getTitle()); - writeD(_activeChar.getFakePlayerInstance().getClanId()); - writeD(_activeChar.getFakePlayerInstance().getClanCrestId()); - writeD(_activeChar.getFakePlayerInstance().getAllyId()); - writeD(_activeChar.getFakePlayerInstance().getAllyCrestId()); - writeD(0); - writeC(1); - writeC(_activeChar.isRunning() ? 1 : 0); - writeC(_activeChar.isInCombat() ? 1 : 0); - writeC(_activeChar.isAlikeDead() ? 1 : 0); - writeC(0); - writeC(0); - writeC(0); - writeH(0); - writeC(0); - writeD(_activeChar.getAbnormalEffect()); - writeC(0); - writeH(0); - writeD(_activeChar.getFakePlayerInstance().getClassId()); - writeD(_activeChar.getMaxCp()); - writeD((int) _activeChar.getStatus().getCurrentCp()); - writeC(_activeChar.getFakePlayerInstance().getEnchantWeapon()); - writeC(0); - writeD(0); // clan crest - writeC(_activeChar.getFakePlayerInstance().isNoble() ? 1 : 0); - writeC(_activeChar.getFakePlayerInstance().isHero() ? 1 : 0); - writeC(0); - writeD(0); - writeD(0); - writeD(0); - writeD(_activeChar.getFakePlayerInstance().nameColor()); + packet.writeD(_activeChar.getX()); + packet.writeD(_activeChar.getY()); + packet.writeD(_activeChar.getZ()); + packet.writeD(_activeChar.getHeading()); + packet.writeD(_activeChar.getObjectId()); + packet.writeS(_activeChar.getFakePlayerInstance().getName()); + packet.writeD(_activeChar.getFakePlayerInstance().getRace()); + packet.writeD(_activeChar.getFakePlayerInstance().isFemaleSex() ? 1 : 0); + packet.writeD(_activeChar.getFakePlayerInstance().getClassId()); + packet.writeD(0); + packet.writeD(0); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_RHAND()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_LHAND()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_GLOVES()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_CHEST()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_LEGS()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_FEET()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_RHAND()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); + + packet.writeD(_activeChar.getFakePlayerInstance().getPvpFlag() ? 1 : 0); + packet.writeD(_activeChar.getFakePlayerInstance().getKarma()); + packet.writeD(_activeChar.getMAtkSpd()); + packet.writeD(_activeChar.getPAtkSpd()); + packet.writeD(_activeChar.getFakePlayerInstance().getPvpFlag() ? 1 : 0); + packet.writeD(_activeChar.getFakePlayerInstance().getKarma()); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeD(_activeChar.getRunSpeed() / 2); + packet.writeD(_activeChar.getRunSpeed() / 3); + packet.writeD(_activeChar.getRunSpeed() / 3); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeF(_activeChar.getStat().getMovementSpeedMultiplier()); + packet.writeF(_activeChar.getStat().getAttackSpeedMultiplier()); + packet.writeF(PlayerTemplateData.getInstance().getTemplate(_activeChar.getFakePlayerInstance().getClassId()).getCollisionRadius()); + packet.writeF(PlayerTemplateData.getInstance().getTemplate(_activeChar.getFakePlayerInstance().getClassId()).getCollisionHeight()); + packet.writeD(_activeChar.getFakePlayerInstance().getHairStyle()); + packet.writeD(_activeChar.getFakePlayerInstance().getHairColor()); + packet.writeD(_activeChar.getFakePlayerInstance().getFace()); + packet.writeS(_activeChar.getFakePlayerInstance().getTitle()); + packet.writeD(_activeChar.getFakePlayerInstance().getClanId()); + packet.writeD(_activeChar.getFakePlayerInstance().getClanCrestId()); + packet.writeD(_activeChar.getFakePlayerInstance().getAllyId()); + packet.writeD(_activeChar.getFakePlayerInstance().getAllyCrestId()); + packet.writeD(0); + packet.writeC(1); + packet.writeC(_activeChar.isRunning() ? 1 : 0); + packet.writeC(_activeChar.isInCombat() ? 1 : 0); + packet.writeC(_activeChar.isAlikeDead() ? 1 : 0); + packet.writeC(0); + packet.writeC(0); + packet.writeC(0); + packet.writeH(0); + packet.writeC(0); + packet.writeD(_activeChar.getAbnormalEffect()); + packet.writeC(0); + packet.writeH(0); + packet.writeD(_activeChar.getFakePlayerInstance().getClassId()); + packet.writeD(_activeChar.getMaxCp()); + packet.writeD((int) _activeChar.getStatus().getCurrentCp()); + packet.writeC(_activeChar.getFakePlayerInstance().getEnchantWeapon()); + packet.writeC(0); + packet.writeD(0); // clan crest + packet.writeC(_activeChar.getFakePlayerInstance().isNoble() ? 1 : 0); + packet.writeC(_activeChar.getFakePlayerInstance().isHero() ? 1 : 0); + packet.writeC(0); + packet.writeD(0); + packet.writeD(0); + packet.writeD(0); + packet.writeD(_activeChar.getFakePlayerInstance().nameColor()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FinishRotation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FinishRotation.java deleted file mode 100644 index ba3e3de40e..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FinishRotation.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.model.actor.Creature; - -/** - * format dd - * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ - */ -public class FinishRotation extends GameServerPacket -{ - private final int _heading; - private final int _objectId; - - public FinishRotation(Creature creature) - { - _objectId = creature.getObjectId(); - _heading = creature.getHeading(); - } - - @Override - protected final void writeImpl() - { - writeC(0x63); - writeD(_objectId); - writeD(_heading); - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeAttackerList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeAttackerList.java deleted file mode 100644 index 74a4da89d2..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeAttackerList.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.SiegeClan; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.siege.Fort; - -/** - * Populates the Siege Attacker List in the SiegeInfo Window
    - *
    - * packet type id 0xca
    - * format: cddddddd + dSSdddSSd
    - *
    - * c = ca
    - * d = FortID
    - * d = unknow (0x00)
    - * d = unknow (0x01)
    - * d = unknow (0x00)
    - * d = Number of Attackers Clans?
    - * d = Number of Attackers Clans
    - * { //repeats
    - * d = ClanID
    - * S = ClanName
    - * S = ClanLeaderName
    - * d = ClanCrestID
    - * d = signed time (seconds)
    - * d = AllyID
    - * S = AllyName
    - * S = AllyLeaderName
    - * d = AllyCrestID
    - * @author programmos, scoria dev - */ -public class FortSiegeAttackerList extends GameServerPacket -{ - private final Fort _fort; - - public FortSiegeAttackerList(Fort fort) - { - _fort = fort; - } - - @Override - protected final void writeImpl() - { - writeC(0xca); - writeD(_fort.getFortId()); - writeD(0x00); // 0 - writeD(0x01); // 1 - writeD(0x00); // 0 - final int size = _fort.getSiege().getAttackerClans().size(); - if (size > 0) - { - Clan clan; - writeD(size); - writeD(size); - for (SiegeClan siegeclan : _fort.getSiege().getAttackerClans()) - { - clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); - if (clan == null) - { - continue; - } - - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); - } - } - else - { - writeD(0x00); - writeD(0x00); - } - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeDefenderList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeDefenderList.java deleted file mode 100644 index 6f1d084250..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeDefenderList.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.SiegeClan; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.siege.Fort; - -/** - * Populates the Siege Defender List in the SiegeInfo Window
    - *
    - * packet type id 0xcb
    - * format: cddddddd + dSSdddSSd
    - *
    - * c = 0xcb
    - * d = FortID
    - * d = unknow (0x00)
    - * d = unknow (0x01)
    - * d = unknow (0x00)
    - * d = Number of Defending Clans?
    - * d = Number of Defending Clans
    - * { //repeats
    - * d = ClanID
    - * S = ClanName
    - * S = ClanLeaderName
    - * d = ClanCrestID
    - * d = signed time (seconds)
    - * d = Type -> Owner = 0x01 || Waiting = 0x02 || Accepted = 0x03
    - * d = AllyID
    - * S = AllyName
    - * S = AllyLeaderName
    - * d = AllyCrestID
    - * @author programmos - */ -public class FortSiegeDefenderList extends GameServerPacket -{ - private final Fort _fort; - - public FortSiegeDefenderList(Fort fort) - { - _fort = fort; - } - - @Override - protected final void writeImpl() - { - writeC(0xcb); - writeD(_fort.getFortId()); - writeD(0x00); // 0 - writeD(0x01); // 1 - writeD(0x00); // 0 - final int size = _fort.getSiege().getDefenderClans().size() + _fort.getSiege().getDefenderWaitingClans().size(); - if (size > 0) - { - Clan clan; - writeD(size); - writeD(size); - // Listing the Lord and the approved clans - for (SiegeClan siegeclan : _fort.getSiege().getDefenderClans()) - { - clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); - if (clan == null) - { - continue; - } - - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - switch (siegeclan.getType()) - { - case OWNER: - { - writeD(0x01); // owner - break; - } - case DEFENDER_PENDING: - { - writeD(0x02); // approved - break; - } - case DEFENDER: - { - writeD(0x03); // waiting approved - break; - } - default: - { - writeD(0x00); - break; - } - } - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); - } - for (SiegeClan siegeclan : _fort.getSiege().getDefenderWaitingClans()) - { - clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - writeD(0x02); // waiting approval - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); - } - } - else - { - writeD(0x00); - writeD(0x00); - } - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FortressSiegeInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FortressSiegeInfo.java deleted file mode 100644 index e4c48810bd..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FortressSiegeInfo.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import java.util.Calendar; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.siege.Fort; - -/** - * Shows the Siege Info
    - *
    - * packet type id 0xc9
    - * format: cdddSSdSdd
    - *
    - * c = c9
    - * d = FortID
    - * d = Show Owner Controls (0x00 default || >=0x02(mask?) owner)
    - * d = Owner ClanID
    - * S = Owner ClanName
    - * S = Owner Clan LeaderName
    - * d = Owner AllyID
    - * S = Owner AllyName
    - * d = current time (seconds)
    - * d = Siege time (seconds) (0 for selectable)
    - * d = (UNKNOW) Siege Time Select Related? - * @author programmos - */ -public class FortressSiegeInfo extends GameServerPacket -{ - private static final Logger LOGGER = Logger.getLogger(FortressSiegeInfo.class.getName()); - private final Fort _fort; - - public FortressSiegeInfo(Fort fort) - { - _fort = fort; - } - - @Override - protected final void writeImpl() - { - final PlayerInstance player = getClient().getPlayer(); - if (player == null) - { - return; - } - - writeC(0xc9); - writeD(_fort.getFortId()); - writeD((_fort.getOwnerId() == player.getClanId()) && player.isClanLeader() ? 0x01 : 0x00); - writeD(_fort.getOwnerId()); - if (_fort.getOwnerId() > 0) - { - final Clan owner = ClanTable.getInstance().getClan(_fort.getOwnerId()); - if (owner != null) - { - writeS(owner.getName()); // Clan Name - writeS(owner.getLeaderName()); // Clan Leader Name - writeD(owner.getAllyId()); // Ally ID - writeS(owner.getAllyName()); // Ally Name - } - else - { - LOGGER.warning("Null owner for fort: " + _fort.getName()); - } - } - else - { - writeS("NPC"); // Clan Name - writeS(""); // Clan Leader Name - writeD(0); // Ally ID - writeS(""); // Ally Name - } - - writeD((int) (Calendar.getInstance().getTimeInMillis() / 1000)); - writeD((int) (_fort.getSiege().getSiegeDate().getTimeInMillis() / 1000)); - writeD(0x00); // number of choices? - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FriendList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FriendList.java index df0fad4328..8c61bedcfd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FriendList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FriendList.java @@ -19,15 +19,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Support for "Chat with Friends" dialog. * @author Tempy */ -public class FriendList extends GameServerPacket +public class FriendList implements IClientOutgoingPacket { private final List _info; @@ -57,20 +59,21 @@ public class FriendList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfa); + OutgoingPackets.FRIEND_LIST.writeId(packet); if (_info.size() > 0) { - writeH(_info.size()); + packet.writeH(_info.size()); for (FriendInfo friend : _info) { - writeH(0); // ?? - writeD(friend._objId); - writeS(friend._name); - writeD(friend._online ? 0x01 : 0x00); - writeH(0); // ?? + packet.writeH(0); // ?? + packet.writeD(friend._objId); + packet.writeS(friend._name); + packet.writeD(friend._online ? 0x01 : 0x00); + packet.writeH(0); // ?? } } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FriendRecvMsg.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FriendRecvMsg.java index 0e951e11e1..d8a5f97055 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FriendRecvMsg.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/FriendRecvMsg.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Send Private (Friend) Message Format: c dSSS d: Unknown S: Sending Player S: Receiving Player S: Message * @author Tempy */ -public class FriendRecvMsg extends GameServerPacket +public class FriendRecvMsg implements IClientOutgoingPacket { private final String _sender; private final String _receiver; @@ -34,13 +37,13 @@ public class FriendRecvMsg extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfd); - - writeD(0); // ?? - writeS(_receiver); - writeS(_sender); - writeS(_message); + OutgoingPackets.FRIEND_RECV_MSG.writeId(packet); + packet.writeD(0); // ?? + packet.writeS(_receiver); + packet.writeS(_sender); + packet.writeS(_message); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewCharacterInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewCharacterInfo.java index 69366f4d90..755de752f8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewCharacterInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewCharacterInfo.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * TODO Add support for Eval. Score dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSddd rev420 dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddcccddhh rev478 * dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddcccddhhddd rev551 * @version $Revision: 1.2.2.2.2.8 $ $Date: 2005/03/27 15:29:39 $ */ -public class GMViewCharacterInfo extends GameServerPacket +public class GMViewCharacterInfo implements IClientOutgoingPacket { /** The _active char. */ private final PlayerInstance _player; @@ -38,138 +40,137 @@ public class GMViewCharacterInfo extends GameServerPacket _player = player; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final float moveMultiplier = _player.getMovementSpeedMultiplier(); - final int _runSpd = (int) (_player.getRunSpeed() / moveMultiplier); - final int _walkSpd = (int) (_player.getWalkSpeed() / moveMultiplier); - writeC(0x8f); + final int runSpd = (int) (_player.getRunSpeed() / moveMultiplier); + final int walkSpd = (int) (_player.getWalkSpeed() / moveMultiplier); - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); - writeD(_player.getHeading()); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getRace().ordinal()); - writeD(_player.getAppearance().isFemale() ? 1 : 0); - writeD(_player.getClassId().getId()); - writeD(_player.getLevel()); - writeQ(_player.getExp()); - writeD(_player.getSTR()); - writeD(_player.getDEX()); - writeD(_player.getCON()); - writeD(_player.getINT()); - writeD(_player.getWIT()); - writeD(_player.getMEN()); - writeD(_player.getMaxHp()); - writeD((int) _player.getCurrentHp()); - writeD(_player.getMaxMp()); - writeD((int) _player.getCurrentMp()); - writeD(_player.getSp()); - writeD(_player.getCurrentLoad()); - writeD(_player.getMaxLoad()); - writeD(0x28); // unknown + OutgoingPackets.GM_VIEW_CHARACTER_INFO.writeId(packet); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_UNDER)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_player.getX()); + packet.writeD(_player.getY()); + packet.writeD(_player.getZ()); + packet.writeD(_player.getHeading()); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getRace().ordinal()); + packet.writeD(_player.getAppearance().isFemale() ? 1 : 0); + packet.writeD(_player.getClassId().getId()); + packet.writeD(_player.getLevel()); + packet.writeD((int) _player.getExp()); + packet.writeD(_player.getSTR()); + packet.writeD(_player.getDEX()); + packet.writeD(_player.getCON()); + packet.writeD(_player.getINT()); + packet.writeD(_player.getWIT()); + packet.writeD(_player.getMEN()); + packet.writeD(_player.getMaxHp()); + packet.writeD((int) _player.getCurrentHp()); + packet.writeD(_player.getMaxMp()); + packet.writeD((int) _player.getCurrentMp()); + packet.writeD(_player.getSp()); + packet.writeD(_player.getCurrentLoad()); + packet.writeD(_player.getMaxLoad()); + packet.writeD(0x28); // unknown - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_UNDER)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_UNDER)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); - writeD(_player.getPAtk(null)); - writeD(_player.getPAtkSpd()); - writeD(_player.getPDef(null)); - writeD(_player.getEvasionRate(null)); - writeD(_player.getAccuracy()); - writeD(_player.getCriticalHit(null, null)); - writeD(_player.getMAtk(null, null)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_UNDER)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE)); - writeD(_player.getMAtkSpd()); - writeD(_player.getPAtkSpd()); + packet.writeD(_player.getPAtk(null)); + packet.writeD(_player.getPAtkSpd()); + packet.writeD(_player.getPDef(null)); + packet.writeD(_player.getEvasionRate(null)); + packet.writeD(_player.getAccuracy()); + packet.writeD(_player.getCriticalHit(null, null)); + packet.writeD(_player.getMAtk(null, null)); - writeD(_player.getMDef(null, null)); + packet.writeD(_player.getMAtkSpd()); + packet.writeD(_player.getPAtkSpd()); - writeD(_player.getPvpFlag()); // 0-non-pvp 1-pvp = violett name - writeD(_player.getKarma()); + packet.writeD(_player.getMDef(null, null)); - writeD(_runSpd); - writeD(_walkSpd); - writeD(_runSpd); // swimspeed - writeD(_walkSpd); // swimspeed - writeD(_runSpd); - writeD(_walkSpd); - writeD(_runSpd); - writeD(_walkSpd); - writeF(moveMultiplier); - writeF(_player.getAttackSpeedMultiplier()); // 2.9); // - writeF(_player.getTemplate().getCollisionRadius()); // scale - writeF(_player.getTemplate().getCollisionHeight()); // y offset ??!? fem dwarf 4033 - writeD(_player.getAppearance().getHairStyle()); - writeD(_player.getAppearance().getHairColor()); - writeD(_player.getAppearance().getFace()); - writeD(_player.isGM() ? 0x01 : 0x00); // builder level + packet.writeD(_player.getPvpFlag()); // 0-non-pvp 1-pvp = violett name + packet.writeD(_player.getKarma()); - writeS(_player.getTitle()); - writeD(_player.getClanId()); // pledge id - writeD(_player.getClanCrestId()); // pledge crest id - writeD(_player.getAllyId()); // ally id - writeC(_player.getMountType()); // mount type - writeC(_player.getPrivateStoreType()); - writeC(_player.hasDwarvenCraft() ? 1 : 0); - writeD(_player.getPkKills()); - writeD(_player.getPvpKills()); + packet.writeD(runSpd); + packet.writeD(walkSpd); + packet.writeD(runSpd); // swimspeed + packet.writeD(walkSpd); // swimspeed + packet.writeD(runSpd); + packet.writeD(walkSpd); + packet.writeD(runSpd); + packet.writeD(walkSpd); + packet.writeF(moveMultiplier); + packet.writeF(_player.getAttackSpeedMultiplier()); // 2.9); // + packet.writeF(_player.getTemplate().getCollisionRadius()); // scale + packet.writeF(_player.getTemplate().getCollisionHeight()); // y offset ??!? fem dwarf 4033 + packet.writeD(_player.getAppearance().getHairStyle()); + packet.writeD(_player.getAppearance().getHairColor()); + packet.writeD(_player.getAppearance().getFace()); + packet.writeD(_player.isGM() ? 0x01 : 0x00); // builder level - writeH(_player.getRecomLeft()); - writeH(_player.getRecomHave()); // Blue value for name (0 = white, 255 = pure blue) - writeD(_player.getClassId().getId()); - // writeD(0x00); // special effects? circles around player... - writeD(_player.getMaxCp()); - writeD((int) _player.getCurrentCp()); + packet.writeS(_player.getTitle()); + packet.writeD(_player.getClanId()); // pledge id + packet.writeD(_player.getClanCrestId()); // pledge crest id + packet.writeD(_player.getAllyId()); // ally id + packet.writeC(_player.getMountType()); // mount type + packet.writeC(_player.getPrivateStoreType()); + packet.writeC(_player.hasDwarvenCraft() ? 1 : 0); + packet.writeD(_player.getPkKills()); + packet.writeD(_player.getPvpKills()); - // writeC(_player.isRunning() ? 0x01 : 0x00); // changes the Speed display on Status Window + packet.writeH(_player.getRecomLeft()); + packet.writeH(_player.getRecomHave()); // Blue value for name (0 = white, 255 = pure blue) + packet.writeD(_player.getClassId().getId()); + // packet.writeD(0x00); // special effects? circles around player... + packet.writeD(_player.getMaxCp()); + packet.writeD((int) _player.getCurrentCp()); - // writeC(321); + // packet.writeC(_player.isRunning() ? 0x01 : 0x00); // changes the Speed display on Status Window - // writeD(_player.getPledgeClass()); // changes the text above CP on Status Window + // packet.writeC(321); - // writeC(_player.isNoble() ? 0x01 : 0x00); - // writeC(_player.isHero() ? 0x01 : 0x00); + // packet.writeD(_player.getPledgeClass()); // changes the text above CP on Status Window - // writeD(_player.getAppearance().getNameColor()); - // writeD(_player.getAppearance().getTitleColor()); + // packet.writeC(_player.isNoble() ? 0x01 : 0x00); + // packet.writeC(_player.isHero() ? 0x01 : 0x00); + + // packet.writeD(_player.getAppearance().getNameColor()); + // packet.writeD(_player.getAppearance().getTitleColor()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewHennaInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewHennaInfo.java index 8fb8b40bdc..09160b488b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewHennaInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewHennaInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class GMViewHennaInfo extends GameServerPacket +public class GMViewHennaInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Henna[] _hennas = new Henna[3]; @@ -40,24 +42,25 @@ public class GMViewHennaInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xea); + OutgoingPackets.GM_VIEW_HENNA_INFO.writeId(packet); - writeC(_player.getHennaStatINT()); - writeC(_player.getHennaStatSTR()); - writeC(_player.getHennaStatCON()); - writeC(_player.getHennaStatMEN()); - writeC(_player.getHennaStatDEX()); - writeC(_player.getHennaStatWIT()); + packet.writeC(_player.getHennaStatINT()); + packet.writeC(_player.getHennaStatSTR()); + packet.writeC(_player.getHennaStatCON()); + packet.writeC(_player.getHennaStatMEN()); + packet.writeC(_player.getHennaStatDEX()); + packet.writeC(_player.getHennaStatWIT()); - writeD(3); // slots? + packet.writeD(3); // slots? - writeD(_count); // size + packet.writeD(_count); // size for (int i = 0; i < _count; i++) { - writeD(_hennas[i].getSymbolId()); - writeD(_hennas[i].canBeUsedBy(_player) ? _hennas[i].getSymbolId() : 0); + packet.writeD(_hennas[i].getSymbolId()); + packet.writeD(_hennas[i].canBeUsedBy(_player) ? _hennas[i].getSymbolId() : 0); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewItemList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewItemList.java index 0a1e573bc7..675d7f9de3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewItemList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewItemList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class GMViewItemList extends GameServerPacket +public class GMViewItemList implements IClientOutgoingPacket { private final ItemInstance[] _items; private final PlayerInstance _player; @@ -36,13 +38,13 @@ public class GMViewItemList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x94); - writeS(_playerName); - writeD(_player.getInventoryLimit()); // inventory limit - writeH(0x01); // show window ?? - writeH(_items.length); + OutgoingPackets.GM_VIEW_ITEM_LIST.writeId(packet); + packet.writeS(_playerName); + packet.writeD(_player.getInventoryLimit()); // inventory limit + packet.writeH(0x01); // show window ?? + packet.writeH(_items.length); for (ItemInstance temp : _items) { @@ -51,16 +53,17 @@ public class GMViewItemList extends GameServerPacket continue; } - writeH(temp.getItem().getType1()); - writeD(temp.getObjectId()); - writeD(temp.getItemId()); - writeD(temp.getCount()); - writeH(temp.getItem().getType2()); - writeH(temp.getCustomType1()); - writeH(temp.isEquipped() ? 0x01 : 0x00); - writeD(temp.getItem().getBodyPart()); - writeH(temp.getEnchantLevel()); - writeH(temp.getCustomType2()); + packet.writeH(temp.getItem().getType1()); + packet.writeD(temp.getObjectId()); + packet.writeD(temp.getItemId()); + packet.writeD(temp.getCount()); + packet.writeH(temp.getItem().getType2()); + packet.writeH(temp.getCustomType1()); + packet.writeH(temp.isEquipped() ? 0x01 : 0x00); + packet.writeD(temp.getItem().getBodyPart()); + packet.writeH(temp.getEnchantLevel()); + packet.writeH(temp.getCustomType2()); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewPledgeInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewPledgeInfo.java index e431e60735..cd6d528001 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewPledgeInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewPledgeInfo.java @@ -16,16 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format SdSS dddddddd d (Sddddd) * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class GMViewPledgeInfo extends GameServerPacket +public class GMViewPledgeInfo implements IClientOutgoingPacket { private final Clan _clan; private final PlayerInstance _player; @@ -37,38 +39,39 @@ public class GMViewPledgeInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x90); - writeS(_player.getName()); - writeD(_clan.getClanId()); - writeS(_clan.getName()); - writeS(_clan.getLeaderName()); - writeD(_clan.getCrestId()); // -> no, it's no longer used (nuocnam) fix by game - writeD(_clan.getLevel()); - writeD(_clan.getCastleId()); - writeD(_clan.getHideoutId()); - writeD(0); - writeD(_player.getLevel()); - writeD(_clan.getDissolvingExpiryTime() > Chronos.currentTimeMillis() ? 3 : 0); - writeD(0); + OutgoingPackets.GM_VIEW_PLEDGE_INFO.writeId(packet); + packet.writeS(_player.getName()); + packet.writeD(_clan.getClanId()); + packet.writeS(_clan.getName()); + packet.writeS(_clan.getLeaderName()); + packet.writeD(_clan.getCrestId()); // -> no, it's no longer used (nuocnam) fix by game + packet.writeD(_clan.getLevel()); + packet.writeD(_clan.getCastleId()); + packet.writeD(_clan.getHideoutId()); + packet.writeD(0); + packet.writeD(_player.getLevel()); + packet.writeD(_clan.getDissolvingExpiryTime() > Chronos.currentTimeMillis() ? 3 : 0); + packet.writeD(0); - writeD(_clan.getAllyId()); // c2 - writeS(_clan.getAllyName()); // c2 - writeD(_clan.getAllyCrestId()); // c2 - writeD(_clan.isAtWar()); // c3 + packet.writeD(_clan.getAllyId()); // c2 + packet.writeS(_clan.getAllyName()); // c2 + packet.writeD(_clan.getAllyCrestId()); // c2 + packet.writeD(_clan.isAtWar()); // c3 - ClanMember[] members = _clan.getMembers(); - writeD(members.length); + final ClanMember[] members = _clan.getMembers(); + packet.writeD(members.length); - for (ClanMember m : members) + for (ClanMember member : members) { - writeS(m.getName()); - writeD(m.getLevel()); - writeD(m.getClassId()); - writeD(0); - writeD(1); - writeD(m.isOnline() ? m.getObjectId() : 0); + packet.writeS(member.getName()); + packet.writeD(member.getLevel()); + packet.writeD(member.getClassId()); + packet.writeD(0); + packet.writeD(1); + packet.writeD(member.isOnline() ? member.getObjectId() : 0); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewQuestList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewQuestList.java index 397baeb0b9..c90c3135d6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewQuestList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewQuestList.java @@ -18,15 +18,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Sh (dd) h (dddd) * @author Tempy */ -public class GMViewQuestList extends GameServerPacket +public class GMViewQuestList implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -36,24 +38,25 @@ public class GMViewQuestList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x93); - writeS(_player.getName()); + OutgoingPackets.GM_VIEW_QUEST_LIST.writeId(packet); + packet.writeS(_player.getName()); final List questList = _player.getAllActiveQuests(); - writeH(questList.size()); // quest count + packet.writeH(questList.size()); // quest count for (Quest q : questList) { - writeD(q.getQuestId()); + packet.writeD(q.getQuestId()); final QuestState qs = _player.getQuestState(q.getName()); if (qs == null) { - writeD(0); + packet.writeD(0); continue; } - writeD(qs.getInt("cond")); // stage of quest progress + packet.writeD(qs.getInt("cond")); // stage of quest progress } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java index c5edbae1db..653904bf9d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class GMViewSkillInfo extends GameServerPacket +public class GMViewSkillInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private Skill[] _skills; @@ -35,18 +37,19 @@ public class GMViewSkillInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x91); - writeS(_player.getName()); - writeD(_skills.length); + OutgoingPackets.GM_VIEW_SKILL_INFO.writeId(packet); + packet.writeS(_player.getName()); + packet.writeD(_skills.length); for (Skill skill : _skills) { - writeD(skill.isPassive() ? 1 : 0); - writeD(skill.getLevel()); - writeD(skill.getId()); - // writeC(0x00); // c5 + packet.writeD(skill.isPassive() ? 1 : 0); + packet.writeD(skill.getLevel()); + packet.writeD(skill.getId()); + // packet.writeC(0x00); // c5 } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java index f31fe6ac28..da00578baf 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java @@ -16,16 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.Weapon; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Sdh(h dddhh [dhhh] d) Sdh ddddd ddddd ddddd ddddd * @version $Revision: 1.1.2.1.2.5 $ $Date: 2007/11/26 16:10:05 $ */ -public class GMViewWarehouseWithdrawList extends GameServerPacket +public class GMViewWarehouseWithdrawList implements IClientOutgoingPacket { private final ItemInstance[] _items; private final String _playerName; @@ -41,31 +43,31 @@ public class GMViewWarehouseWithdrawList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x95); - writeS(_playerName); - writeD(_money); - writeH(_items.length); + OutgoingPackets.GM_VIEW_WAREHOUSE_WITHDRAW_LIST.writeId(packet); + packet.writeS(_playerName); + packet.writeD(_money); + packet.writeH(_items.length); for (ItemInstance item : _items) { - writeH(item.getItem().getType1()); + packet.writeH(item.getItem().getType1()); - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); - writeH(item.getCustomType1()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); + packet.writeH(item.getCustomType1()); switch (item.getItem().getType2()) { case Item.TYPE2_WEAPON: { - writeD(item.getItem().getBodyPart()); - writeH(item.getEnchantLevel()); - writeH(((Weapon) item.getItem()).getSoulShotCount()); - writeH(((Weapon) item.getItem()).getSpiritShotCount()); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getEnchantLevel()); + packet.writeH(((Weapon) item.getItem()).getSoulShotCount()); + packet.writeH(((Weapon) item.getItem()).getSpiritShotCount()); break; } case Item.TYPE2_SHIELD_ARMOR: @@ -75,15 +77,16 @@ public class GMViewWarehouseWithdrawList extends GameServerPacket case Item.TYPE2_PET_STRIDER: case Item.TYPE2_PET_BABY: { - writeD(item.getItem().getBodyPart()); - writeH(item.getEnchantLevel()); - writeH(0x00); - writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getEnchantLevel()); + packet.writeH(0x00); + packet.writeH(0x00); break; } } - writeD(item.getObjectId()); + packet.writeD(item.getObjectId()); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GameGuardQuery.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GameGuardQuery.java index 6d20504352..9be73da7e3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GameGuardQuery.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GameGuardQuery.java @@ -16,22 +16,26 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.GameClient; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author zabbix Lets drink to code! */ -public class GameGuardQuery extends GameServerPacket +public class GameGuardQuery implements IClientOutgoingPacket { - @Override - public void runImpl() + public GameGuardQuery(GameClient client) { // Lets make user as gg-unauthorized // We will set him as ggOK after reply from client or kick - getClient().setGameGuardOk(false); + client.setGameGuardOk(false); } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xf9); + OutgoingPackets.GAME_GUARD_QUERY.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetItem.java index ca51987391..f9aa69a72a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetItem.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 17 1a 95 20 48 9b da 12 40 44 17 02 00 03 f0 fc ff 98 f1 ff ff ..... format ddddd * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class GetItem extends GameServerPacket +public class GetItem implements IClientOutgoingPacket { private final ItemInstance _item; private final int _playerId; @@ -34,14 +36,15 @@ public class GetItem extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x0d); - writeD(_playerId); - writeD(_item.getObjectId()); + OutgoingPackets.GET_ITEM.writeId(packet); + packet.writeD(_playerId); + packet.writeD(_item.getObjectId()); - writeD(_item.getX()); - writeD(_item.getY()); - writeD(_item.getZ()); + packet.writeD(_item.getX()); + packet.writeD(_item.getY()); + packet.writeD(_item.getZ()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetOffVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetOffVehicle.java index 3fde6b4169..743f08ddfd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetOffVehicle.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetOffVehicle.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class GetOffVehicle extends GameServerPacket +public class GetOffVehicle implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _boatId; @@ -40,13 +42,14 @@ public class GetOffVehicle extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5d); - writeD(_player.getObjectId()); - writeD(_boatId); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.GET_OFF_VEHICLE.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_boatId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetOnVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetOnVehicle.java index 90027cf64d..a87c15cdb4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetOnVehicle.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GetOnVehicle.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class GetOnVehicle extends GameServerPacket +public class GetOnVehicle implements IClientOutgoingPacket { private final int _x; private final int _y; @@ -41,13 +43,14 @@ public class GetOnVehicle extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5c); - writeD(_player.getObjectId()); - writeD(_boat.getObjectId()); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.GET_ON_VEHICLE.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_boat.getObjectId()); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaEquipList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaEquipList.java index 967d5232cd..96e3b39702 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaEquipList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaEquipList.java @@ -18,10 +18,12 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaEquipList extends GameServerPacket +public class HennaEquipList implements IClientOutgoingPacket { private final PlayerInstance _player; private final List _hennaEquipList; @@ -33,24 +35,25 @@ public class HennaEquipList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe2); - writeD(_player.getAdena()); - writeD(3); - writeD(_hennaEquipList.size()); + OutgoingPackets.HENNA_EQUIP_LIST.writeId(packet); + packet.writeD(_player.getAdena()); + packet.writeD(3); + packet.writeD(_hennaEquipList.size()); for (Henna temp : _hennaEquipList) { // Player must have at least one dye in inventory to be able to see the henna that can be applied with it. if ((_player.getInventory().getItemByItemId(temp.getDyeId())) != null) { - writeD(temp.getSymbolId()); // symbolid - writeD(temp.getDyeId()); // itemid of dye - writeD(Henna.getRequiredDyeAmount()); // amount of dyes required - writeD(temp.getPrice()); // amount of adenas required - writeD(1); // meet the requirement or not + packet.writeD(temp.getSymbolId()); // symbolid + packet.writeD(temp.getDyeId()); // itemid of dye + packet.writeD(Henna.getRequiredDyeAmount()); // amount of dyes required + packet.writeD(temp.getPrice()); // amount of adenas required + packet.writeD(1); // meet the requirement or not } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java index c5ba38420c..3752822c19 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaInfo extends GameServerPacket +public class HennaInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Henna[] _hennas = new Henna[3]; @@ -40,37 +42,38 @@ public class HennaInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe4); + OutgoingPackets.HENNA_INFO.writeId(packet); - writeC(_player.getHennaStatINT()); // equip INT - writeC(_player.getHennaStatSTR()); // equip STR - writeC(_player.getHennaStatCON()); // equip CON - writeC(_player.getHennaStatMEN()); // equip MEM - writeC(_player.getHennaStatDEX()); // equip DEX - writeC(_player.getHennaStatWIT()); // equip WIT + packet.writeC(_player.getHennaStatINT()); // equip INT + packet.writeC(_player.getHennaStatSTR()); // equip STR + packet.writeC(_player.getHennaStatCON()); // equip CON + packet.writeC(_player.getHennaStatMEN()); // equip MEM + packet.writeC(_player.getHennaStatDEX()); // equip DEX + packet.writeC(_player.getHennaStatWIT()); // equip WIT // Henna slots int classId = _player.getClassId().level(); if (classId == 1) { - writeD(2); + packet.writeD(2); } else if (classId > 1) { - writeD(3); + packet.writeD(3); } else { - writeD(0); + packet.writeD(0); } - writeD(_count); // size + packet.writeD(_count); // size for (int i = 0; i < _count; i++) { - writeD(_hennas[i].getSymbolId()); - writeD(_hennas[i].canBeUsedBy(_player) ? _hennas[i].getSymbolId() : 0); + packet.writeD(_hennas[i].getSymbolId()); + packet.writeD(_hennas[i].canBeUsedBy(_player) ? _hennas[i].getSymbolId() : 0); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemInfo.java index 1f2969d117..c2dedc1ca1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaItemInfo extends GameServerPacket +public class HennaItemInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Henna _henna; @@ -31,27 +33,28 @@ public class HennaItemInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe3); - writeD(_henna.getSymbolId()); // symbol Id - writeD(_henna.getDyeId()); // item id of dye - writeD(Henna.getRequiredDyeAmount()); // total amount of dye required - writeD(_henna.getPrice()); // total amount of adenas required to draw symbol - writeD(1); // able to draw or not 0 is false and 1 is true - writeD(_player.getAdena()); + OutgoingPackets.HENNA_ITEM_INFO.writeId(packet); + packet.writeD(_henna.getSymbolId()); // symbol Id + packet.writeD(_henna.getDyeId()); // item id of dye + packet.writeD(Henna.getRequiredDyeAmount()); // total amount of dye required + packet.writeD(_henna.getPrice()); // total amount of adenas required to draw symbol + packet.writeD(1); // able to draw or not 0 is false and 1 is true + packet.writeD(_player.getAdena()); - writeD(_player.getINT()); // current INT - writeC(_player.getINT() + _henna.getINT()); // equip INT - writeD(_player.getSTR()); // current STR - writeC(_player.getSTR() + _henna.getSTR()); // equip STR - writeD(_player.getCON()); // current CON - writeC(_player.getCON() + _henna.getCON()); // equip CON - writeD(_player.getMEN()); // current MEM - writeC(_player.getMEN() + _henna.getMEN()); // equip MEM - writeD(_player.getDEX()); // current DEX - writeC(_player.getDEX() + _henna.getDEX()); // equip DEX - writeD(_player.getWIT()); // current WIT - writeC(_player.getWIT() + _henna.getWIT()); // equip WIT + packet.writeD(_player.getINT()); // current INT + packet.writeC(_player.getINT() + _henna.getINT()); // equip INT + packet.writeD(_player.getSTR()); // current STR + packet.writeC(_player.getSTR() + _henna.getSTR()); // equip STR + packet.writeD(_player.getCON()); // current CON + packet.writeC(_player.getCON() + _henna.getCON()); // equip CON + packet.writeD(_player.getMEN()); // current MEM + packet.writeC(_player.getMEN() + _henna.getMEN()); // equip MEM + packet.writeD(_player.getDEX()); // current DEX + packet.writeC(_player.getDEX() + _henna.getDEX()); // equip DEX + packet.writeD(_player.getWIT()); // current WIT + packet.writeC(_player.getWIT() + _henna.getWIT()); // equip WIT + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemRemoveInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemRemoveInfo.java index a51877ec59..3332a99db5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemRemoveInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemRemoveInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaItemRemoveInfo extends GameServerPacket +public class HennaItemRemoveInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Henna _henna; @@ -31,27 +33,28 @@ public class HennaItemRemoveInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe6); - writeD(_henna.getSymbolId()); // symbol Id - writeD(_henna.getDyeId()); // item id of dye - writeD(Henna.getRequiredDyeAmount() / 2); // amount of given dyes - writeD(_henna.getPrice() / 5); // amount of required adenas - writeD(1); // able to remove or not 0 is false and 1 is true - writeD(_player.getAdena()); + OutgoingPackets.HENNA_ITEM_REMOVE_INFO.writeId(packet); + packet.writeD(_henna.getSymbolId()); // symbol Id + packet.writeD(_henna.getDyeId()); // item id of dye + packet.writeD(Henna.getRequiredDyeAmount() / 2); // amount of given dyes + packet.writeD(_henna.getPrice() / 5); // amount of required adenas + packet.writeD(1); // able to remove or not 0 is false and 1 is true + packet.writeD(_player.getAdena()); - writeD(_player.getINT()); // current INT - writeC(_player.getINT() - _henna.getINT()); // equip INT - writeD(_player.getSTR()); // current STR - writeC(_player.getSTR() - _henna.getSTR()); // equip STR - writeD(_player.getCON()); // current CON - writeC(_player.getCON() - _henna.getCON()); // equip CON - writeD(_player.getMEN()); // current MEM - writeC(_player.getMEN() - _henna.getMEN()); // equip MEM - writeD(_player.getDEX()); // current DEX - writeC(_player.getDEX() - _henna.getDEX()); // equip DEX - writeD(_player.getWIT()); // current WIT - writeC(_player.getWIT() - _henna.getWIT()); // equip WIT + packet.writeD(_player.getINT()); // current INT + packet.writeC(_player.getINT() - _henna.getINT()); // equip INT + packet.writeD(_player.getSTR()); // current STR + packet.writeC(_player.getSTR() - _henna.getSTR()); // equip STR + packet.writeD(_player.getCON()); // current CON + packet.writeC(_player.getCON() - _henna.getCON()); // equip CON + packet.writeD(_player.getMEN()); // current MEM + packet.writeC(_player.getMEN() - _henna.getMEN()); // equip MEM + packet.writeD(_player.getDEX()); // current DEX + packet.writeC(_player.getDEX() - _henna.getDEX()); // equip DEX + packet.writeD(_player.getWIT()); // current WIT + packet.writeC(_player.getWIT() - _henna.getWIT()); // equip WIT + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaRemoveList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaRemoveList.java index 3fc2c3d249..162e10ffde 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaRemoveList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/HennaRemoveList.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaRemoveList extends GameServerPacket +public class HennaRemoveList implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -29,24 +31,25 @@ public class HennaRemoveList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe5); - writeD(_player.getAdena()); - writeD(_player.getHennaEmptySlots()); - writeD(Math.abs(_player.getHennaEmptySlots() - 3)); + OutgoingPackets.HENNA_REMOVE_LIST.writeId(packet); + packet.writeD(_player.getAdena()); + packet.writeD(_player.getHennaEmptySlots()); + packet.writeD(Math.abs(_player.getHennaEmptySlots() - 3)); for (int i = 1; i <= 3; i++) { final Henna henna = _player.getHenna(i); if (henna != null) { - writeD(henna.getSymbolId()); - writeD(henna.getDyeId()); - writeD(Henna.getRequiredDyeAmount() / 2); - writeD(henna.getPrice() / 5); - writeD(0x01); + packet.writeD(henna.getSymbolId()); + packet.writeD(henna.getDyeId()); + packet.writeD(Henna.getRequiredDyeAmount() / 2); + packet.writeD(henna.getPrice() / 5); + packet.writeD(0x01); } } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GameServerPacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/IClientOutgoingPacket.java similarity index 50% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GameServerPacket.java rename to L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/IClientOutgoingPacket.java index b16b241807..dd31d93be2 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GameServerPacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/IClientOutgoingPacket.java @@ -18,37 +18,41 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.logging.Logger; -import org.l2jmobius.commons.mmocore.SendablePacket; -import org.l2jmobius.gameserver.network.GameClient; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; /** * @author KenM */ -public abstract class GameServerPacket extends SendablePacket +public interface IClientOutgoingPacket extends IOutgoingPacket { - protected static final Logger LOGGER = Logger.getLogger(GameServerPacket.class.getName()); + Logger LOGGER = Logger.getLogger(IClientOutgoingPacket.class.getName()); - @Override - protected void write() + /** + * Sends this packet to the target player, useful for lambda operations like
    + * {@code World.getInstance().getPlayers().forEach(packet::sendTo)} + * @param player + */ + default void sendTo(PlayerInstance player) { - try - { - writeImpl(); - } - catch (Exception e) - { - LOGGER.severe("Client: " + getClient() + " - Failed writing: " + getType() + " ; " + e.getMessage() + " " + e); - } + player.sendPacket(this); } - public void runImpl() + default void runImpl(PlayerInstance player) { } - protected abstract void writeImpl(); - - public String getType() + default void writeOptionalD(PacketWriter packet, int value) { - return "[S] " + getClass().getSimpleName(); + if (value >= Short.MAX_VALUE) + { + packet.writeH(Short.MAX_VALUE); + packet.writeD(value); + } + else + { + packet.writeH(value); + } } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/InventoryUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/InventoryUpdate.java index 06becbe3db..7d6c329f7d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/InventoryUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/InventoryUpdate.java @@ -19,8 +19,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ItemInfo; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 37 // Packet Identifier
    @@ -44,7 +46,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance; *
    * @version $Revision: 1.3.2.2.2.4 $ $Date: 2005/03/27 15:29:39 $ Rebuild 23.2.2006 by Advi */ -public class InventoryUpdate extends GameServerPacket +public class InventoryUpdate implements IClientOutgoingPacket { private final List _items; @@ -105,37 +107,38 @@ public class InventoryUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x27); - writeH(_items.size()); + OutgoingPackets.INVENTORY_UPDATE.writeId(packet); + packet.writeH(_items.size()); for (ItemInfo item : _items) { - writeH(item.getChange()); // Update type : 01-add, 02-modify, + packet.writeH(item.getChange()); // Update type : 01-add, 02-modify, // 03-remove - writeH(item.getItem().getType1()); // Item Type 1 : + packet.writeH(item.getItem().getType1()); // Item Type 1 : // 00-weapon/ring/earring/necklace, // 01-armor/shield, // 04-item/questitem/adena - writeD(item.getObjectId()); // ObjectId - writeD(item.getItem().getItemId()); // ItemId - writeD(item.getCount()); // Quantity - writeH(item.getItem().getType2()); // Item Type 2 : 00-weapon, + packet.writeD(item.getObjectId()); // ObjectId + packet.writeD(item.getItem().getItemId()); // ItemId + packet.writeD(item.getCount()); // Quantity + packet.writeH(item.getItem().getType2()); // Item Type 2 : 00-weapon, // 01-shield/armor, // 02-ring/earring/necklace, // 03-questitem, 04-adena, // 05-item - writeH(item.getCustomType1()); // Filler (always 0) - writeH(item.getEquipped()); // Equipped : 00-No, 01-yes - writeD(item.getItem().getBodyPart()); // Slot : 0006-lr.ear, + packet.writeH(item.getCustomType1()); // Filler (always 0) + packet.writeH(item.getEquipped()); // Equipped : 00-No, 01-yes + packet.writeD(item.getItem().getBodyPart()); // Slot : 0006-lr.ear, // 0008-neck, // 0030-lr.finger, // 0040-head, 0100-l.hand, // 0200-gloves, 0400-chest, // 0800-pants, 1000-feet, // 4000-r.hand, 8000-r.hand - writeH(item.getEnchant()); // Enchant level (pet level shown in control item) - writeH(item.getCustomType2()); // Pet name exists or not shown in control item + packet.writeH(item.getEnchant()); // Enchant level (pet level shown in control item) + packet.writeH(item.getCustomType2()); // Pet name exists or not shown in control item } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ItemList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ItemList.java index c8ccecce86..217e07b552 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ItemList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ItemList.java @@ -16,8 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 27 00 00 01 00 // item count 04 00 // itemType1 0-weapon/ring/earring/necklace 1-armor/shield 4-item/questitem/adena c6 37 50 40 // objectId cd 09 00 00 // itemId 05 00 00 00 // count 05 00 // itemType2 0-weapon 1-shield/armor 2-ring/earring/necklace 3-questitem 4-adena 5-item 00 00 // @@ -25,7 +27,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance; * revision 415 * @version $Revision: 1.4.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class ItemList extends GameServerPacket +public class ItemList implements IClientOutgoingPacket { private final ItemInstance[] _items; private final boolean _showWindow; @@ -43,27 +45,29 @@ public class ItemList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x1b); - writeH(_showWindow ? 0x01 : 0x00); - writeH(_items.length); + OutgoingPackets.ITEM_LIST.writeId(packet); + packet.writeH(_showWindow ? 0x01 : 0x00); + packet.writeH(_items.length); for (ItemInstance temp : _items) { if ((temp == null) || (temp.getItem() == null)) { continue; } - writeH(temp.getItem().getType1()); - writeD(temp.getObjectId()); - writeD(temp.getItemId()); - writeD(temp.getCount()); - writeH(temp.getItem().getType2()); - writeH(temp.getCustomType1()); - writeH(temp.isEquipped() ? 0x01 : 0x00); - writeD(temp.getItem().getBodyPart()); - writeH(temp.getEnchantLevel()); - writeH(temp.getCustomType2()); + packet.writeH(temp.getItem().getType1()); + packet.writeD(temp.getObjectId()); + packet.writeD(temp.getItemId()); + packet.writeD(temp.getCount()); + packet.writeH(temp.getItem().getType2()); + packet.writeH(temp.getCustomType1()); + packet.writeH(temp.isEquipped() ? 0x01 : 0x00); + packet.writeD(temp.getItem().getBodyPart()); + packet.writeH(temp.getEnchantLevel()); + // race tickets + packet.writeH(temp.getCustomType2()); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/JoinParty.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/JoinParty.java index 389f8113a6..e4adce2daa 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/JoinParty.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/JoinParty.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample *

    @@ -24,7 +27,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * format cd. * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class JoinParty extends GameServerPacket +public class JoinParty implements IClientOutgoingPacket { /** The _response. */ private final int _response; @@ -38,15 +41,12 @@ public class JoinParty extends GameServerPacket _response = response; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x3a); + OutgoingPackets.JOIN_PARTY.writeId(packet); - writeD(_response); + packet.writeD(_response); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/JoinPledge.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/JoinPledge.java index f202f79eb5..4e2f2127ec 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/JoinPledge.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/JoinPledge.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class JoinPledge extends GameServerPacket +public class JoinPledge implements IClientOutgoingPacket { private final int _pledgeId; @@ -29,10 +32,11 @@ public class JoinPledge extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x33); + OutgoingPackets.JOIN_PLEDGE.writeId(packet); - writeD(_pledgeId); + packet.writeD(_pledgeId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/KeyPacket.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/KeyPacket.java index b17f7d041b..38d6af6dec 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/KeyPacket.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/KeyPacket.java @@ -16,25 +16,29 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -/** - * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ - */ -public class KeyPacket extends GameServerPacket +import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class KeyPacket implements IClientOutgoingPacket { private final byte[] _key; + private final int _result; - public KeyPacket(byte[] key) + public KeyPacket(byte[] key, int result) { _key = key; + _result = result; } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x00); - writeC(0x01); - writeB(_key); - writeD(0x01); - writeD(0x01); + OutgoingPackets.KEY_PACKET.writeId(packet); + packet.writeC(_result); // 0 - wrong protocol, 1 - protocol ok + packet.writeB(_key); + packet.writeD(Config.SERVER_ID); // server id + packet.writeD(0x01); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/LeaveWorld.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/LeaveWorld.java index c3fff66235..9290d12f23 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/LeaveWorld.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/LeaveWorld.java @@ -16,19 +16,24 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.3 $ $Date: 2009/05/12 19:06:39 $ */ -public class LeaveWorld extends GameServerPacket +public class LeaveWorld implements IClientOutgoingPacket { public static final LeaveWorld STATIC_PACKET = new LeaveWorld(); - /* - * private LeaveWorld() { //null } - */ - @Override - protected final void writeImpl() + public LeaveWorld() { - writeC(0x7e); + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.LEAVE_WORLD.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicEffectIcons.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicEffectIcons.java index 7394a6f681..773ab3a68f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicEffectIcons.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicEffectIcons.java @@ -19,11 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * MagicEffectIcons format h (dhd) * @version $Revision: 1.3.2.1.2.6 $ $Date: 2005/04/05 19:41:08 $ */ -public class MagicEffectIcons extends GameServerPacket +public class MagicEffectIcons implements IClientOutgoingPacket { private final List _effects; private final List _debuffs; @@ -66,40 +69,42 @@ public class MagicEffectIcons extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x7f); + OutgoingPackets.MAGIC_EFFECT_ICONS.writeId(packet); - writeH(_effects.size() + _debuffs.size()); + packet.writeH(_effects.size() + _debuffs.size()); for (Effect temp : _effects) { - writeD(temp._skillId); - writeH(temp._level); + packet.writeD(temp._skillId); + packet.writeH(temp._level); if (temp._duration == -1) { - writeD(-1); + packet.writeD(-1); } else { - writeD(temp._duration / 1000); + packet.writeD(temp._duration / 1000); } } for (Effect temp : _debuffs) { - writeD(temp._skillId); - writeH(temp._level); + packet.writeD(temp._skillId); + packet.writeH(temp._level); if (temp._duration == -1) { - writeD(-1); + packet.writeD(-1); } else { - writeD(temp._duration / 1000); + packet.writeD(temp._duration / 1000); } } + + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillCanceld.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillCanceld.java index c0a0305997..388adb927a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillCanceld.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillCanceld.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class MagicSkillCanceld extends GameServerPacket +public class MagicSkillCanceld implements IClientOutgoingPacket { private final int _objectId; @@ -29,9 +32,10 @@ public class MagicSkillCanceld extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x49); - writeD(_objectId); + OutgoingPackets.MAGIC_SKILL_CANCELD.writeId(packet); + packet.writeD(_objectId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillLaunched.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillLaunched.java index fa73c11ef9..fce15a399f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillLaunched.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillLaunched.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 8e d8 a8 10 48 10 04 00 00 01 00 00 00 01 00 00 ....H........... 0010: 00 d8 a8 10 48 ....H format ddddd d * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class MagicSkillLaunched extends GameServerPacket +public class MagicSkillLaunched implements IClientOutgoingPacket { private final int _objectId; private final int _skillId; @@ -66,16 +68,16 @@ public class MagicSkillLaunched extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x76); - writeD(_objectId); - writeD(_skillId); - writeD(_skillLevel); - writeD(_numberOfTargets); // also failed or not? + OutgoingPackets.MAGIC_SKILL_LAUNCHED.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_skillId); + packet.writeD(_skillLevel); + packet.writeD(_numberOfTargets); // also failed or not? if ((_singleTargetId != 0) || (_numberOfTargets == 0)) { - writeD(_singleTargetId); + packet.writeD(_singleTargetId); } else { @@ -83,13 +85,14 @@ public class MagicSkillLaunched extends GameServerPacket { try { - writeD(target.getObjectId()); + packet.writeD(target.getObjectId()); } catch (NullPointerException e) { - writeD(0); // untested + packet.writeD(0); // untested } } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillUse.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillUse.java index ba0dd74421..20c0ebe96d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillUse.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillUse.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class MagicSkillUse extends GameServerPacket +public class MagicSkillUse implements IClientOutgoingPacket { private final int _objectId; private final int _x; @@ -60,18 +62,18 @@ public class MagicSkillUse extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x48); - writeD(_objectId); - writeD(_targetId); - writeD(_skillId); - writeD(_skillLevel); - writeD(_hitTime); - writeD(_reuseDelay); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.MAGIC_SKILL_USE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_targetId); + packet.writeD(_skillId); + packet.writeD(_skillLevel); + packet.writeD(_hitTime); + packet.writeD(_reuseDelay); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); // if (_critical) // ? // { // writeD(0x01); @@ -79,10 +81,11 @@ public class MagicSkillUse extends GameServerPacket // } // else // { - writeD(0x00); + packet.writeD(0x00); // } - writeD(_targetx); - writeD(_targety); - writeD(_targetz); + packet.writeD(_targetx); + packet.writeD(_targety); + packet.writeD(_targetz); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ManagePledgePower.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ManagePledgePower.java index cacd4954c2..c5b66049f9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ManagePledgePower.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ManagePledgePower.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class ManagePledgePower extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class ManagePledgePower implements IClientOutgoingPacket { private final int _privs; @@ -26,11 +29,12 @@ public class ManagePledgePower extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x30); - writeD(0); - writeD(0); - writeD(_privs); + OutgoingPackets.MANAGE_PLEDGE_POWER.writeId(packet); + packet.writeD(0); + packet.writeD(0); + packet.writeD(_privs); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MonRaceInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MonRaceInfo.java index 658bd7536a..40321a5967 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MonRaceInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MonRaceInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 06 8f19904b 2522d04b 00000000 80 950c0000 4af50000 08f2ffff 0000 - 0 damage (missed 0x80) 06 85071048 bc0e504b 32000000 10 fc41ffff fd240200 a6f5ffff 0100 bc0e504b 33000000 10 3.... format dddc dddh (ddc) * @version $Revision: 1.1.6.2 $ $Date: 2005/03/27 15:29:39 $ */ -public class MonRaceInfo extends GameServerPacket +public class MonRaceInfo implements IClientOutgoingPacket { private final int _unknown1; private final int _unknown2; @@ -41,39 +43,41 @@ public class MonRaceInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xdd); + OutgoingPackets.MON_RACE_INFO.writeId(packet); - writeD(_unknown1); - writeD(_unknown2); - writeD(8); + packet.writeD(_unknown1); + packet.writeD(_unknown2); + packet.writeD(8); for (int i = 0; i < 8; i++) { - writeD(_monsters[i].getObjectId()); // npcObjectID - writeD(_monsters[i].getTemplate().getDisplayId() + 1000000); // npcID - writeD(14107); // origin X - writeD(181875 + (58 * (7 - i))); // origin Y - writeD(-3566); // origin Z - writeD(12080); // end X - writeD(181875 + (58 * (7 - i))); // end Y - writeD(-3566); // end Z - writeF(_monsters[i].getTemplate().getCollisionHeight()); // coll. height - writeF(_monsters[i].getTemplate().getCollisionRadius()); // coll. radius - writeD(120); // ?? unknown + packet.writeD(_monsters[i].getObjectId()); // npcObjectID + packet.writeD(_monsters[i].getTemplate().getDisplayId() + 1000000); // npcID + packet.writeD(14107); // origin X + packet.writeD(181875 + (58 * (7 - i))); // origin Y + packet.writeD(-3566); // origin Z + packet.writeD(12080); // end X + packet.writeD(181875 + (58 * (7 - i))); // end Y + packet.writeD(-3566); // end Z + packet.writeF(_monsters[i].getTemplate().getCollisionHeight()); // coll. height + packet.writeF(_monsters[i].getTemplate().getCollisionRadius()); // coll. radius + packet.writeD(120); // ?? unknown for (int j = 0; j < 20; j++) { if (_unknown1 == 0) { - writeC(_speeds[i][j]); + packet.writeC(_speeds[i][j]); } else { - writeC(0); + packet.writeC(0); } } - writeD(0); + packet.writeD(0); } + + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveOnVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveOnVehicle.java deleted file mode 100644 index f6fdb03ec0..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveOnVehicle.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * 0000: 76 7a 07 80 49 ea 01 00 00 c1 37 fe uz..Ic'.J.....7. - *

    - * 0010: ff 9e c3 03 00 8f f3 ff ff ......... - *

    - *

    - * format dddddd (player id, target id, distance, startx, starty, startz) - *

    - * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ - */ -public class MoveOnVehicle extends GameServerPacket -{ - private final int _id; - private final int _x; - private final int _y; - private final int _z; - private final PlayerInstance _player; - - public MoveOnVehicle(int vehicleID, PlayerInstance player, int x, int y, int z) - { - _id = vehicleID; - _player = player; - _x = x; - _y = y; - _z = z; - } - - @Override - protected final void writeImpl() - { - writeC(0x71); - - writeD(_player.getObjectId()); - writeD(_id); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveToLocationInVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveToLocationInVehicle.java index d4311d9d3a..f01ddf0f4e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveToLocationInVehicle.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveToLocationInVehicle.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class MoveToLocationInVehicle extends GameServerPacket +public class MoveToLocationInVehicle implements IClientOutgoingPacket { private int _objectId; private int _boatId; @@ -50,16 +52,17 @@ public class MoveToLocationInVehicle extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x71); - writeD(_objectId); - writeD(_boatId); - writeD(_destination.getX()); - writeD(_destination.getY()); - writeD(_destination.getZ()); - writeD(_origin.getX()); - writeD(_origin.getY()); - writeD(_origin.getZ()); + OutgoingPackets.MOVE_TO_LOCATION_IN_VEHICLE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_boatId); + packet.writeD(_destination.getX()); + packet.writeD(_destination.getY()); + packet.writeD(_destination.getZ()); + packet.writeD(_origin.getX()); + packet.writeD(_origin.getY()); + packet.writeD(_origin.getZ()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveToPawn.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveToPawn.java index 6e4eaf74a4..831d8a357b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveToPawn.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MoveToPawn.java @@ -16,7 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 0000: 75 7a 07 80 49 63 27 00 4a ea 01 00 00 c1 37 fe uz..Ic'.J.....7. @@ -28,7 +30,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; *

    * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/04/06 16:13:46 $ */ -public class MoveToPawn extends GameServerPacket +public class MoveToPawn implements IClientOutgoingPacket { private final int _objectId; private final int _targetId; @@ -54,19 +56,20 @@ public class MoveToPawn extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x60); + OutgoingPackets.MOVE_TO_PAWN.writeId(packet); - writeD(_objectId); - writeD(_targetId); - writeD(_distance); + packet.writeD(_objectId); + packet.writeD(_targetId); + packet.writeD(_distance); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_tx); - writeD(_ty); - writeD(_tz); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_tx); + packet.writeD(_ty); + packet.writeD(_tz); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MultiSellList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MultiSellList.java index 958826f613..2ea4bfe8ed 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MultiSellList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MultiSellList.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.model.multisell.MultiSellEntry; import org.l2jmobius.gameserver.model.multisell.MultiSellIngredient; import org.l2jmobius.gameserver.model.multisell.MultiSellListContainer; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2 $ $Date: 2004/06/27 08:12:59 $ */ -public class MultiSellList extends GameServerPacket +public class MultiSellList implements IClientOutgoingPacket { protected int _listId; protected int _page; @@ -40,32 +42,32 @@ public class MultiSellList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { // [ddddd] [dchh] [hdhdh] [hhdh] - writeC(0xd0); - writeD(_listId); // list id - writeD(_page); // page - writeD(_finished); // finished - writeD(0x28); // size of pages - writeD(_list == null ? 0 : _list.getEntries().size()); // list length + OutgoingPackets.MULTI_SELL_LIST.writeId(packet); + packet.writeD(_listId); // list id + packet.writeD(_page); // page + packet.writeD(_finished); // finished + packet.writeD(0x28); // size of pages + packet.writeD(_list == null ? 0 : _list.getEntries().size()); // list length if (_list != null) { for (MultiSellEntry ent : _list.getEntries()) { - writeD(ent.getEntryId()); - writeC(1); - writeH(ent.getProducts().size()); - writeH(ent.getIngredients().size()); + packet.writeD(ent.getEntryId()); + packet.writeC(1); + packet.writeH(ent.getProducts().size()); + packet.writeH(ent.getIngredients().size()); for (MultiSellIngredient i : ent.getProducts()) { - writeH(i.getItemId()); - writeD(ItemTable.getInstance().getTemplate(i.getItemId()).getBodyPart()); - writeH(ItemTable.getInstance().getTemplate(i.getItemId()).getType2()); - writeD(i.getItemCount()); - writeH(i.getEnchantmentLevel()); // enchtant level + packet.writeH(i.getItemId()); + packet.writeD(ItemTable.getInstance().getTemplate(i.getItemId()).getBodyPart()); + packet.writeH(ItemTable.getInstance().getTemplate(i.getItemId()).getType2()); + packet.writeD(i.getItemCount()); + packet.writeH(i.getEnchantmentLevel()); // enchtant level } for (MultiSellIngredient i : ent.getIngredients()) @@ -76,12 +78,13 @@ public class MultiSellList extends GameServerPacket { typeE = ItemTable.getInstance().getTemplate(i.getItemId()).getType2(); } - writeH(items); // ID - writeH(typeE); - writeD(i.getItemCount()); // Count - writeH(i.getEnchantmentLevel()); // Enchant Level + packet.writeH(items); // ID + packet.writeH(typeE); + packet.writeD(i.getItemCount()); // Count + packet.writeH(i.getEnchantmentLevel()); // Enchant Level } } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MyTargetSelected.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MyTargetSelected.java index 150df514b2..b9c3d1b6f1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MyTargetSelected.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/MyTargetSelected.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** *

    * sample bf 73 5d 30 49 01 00 @@ -40,7 +43,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * usually the color equals the level difference to the selected target. * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class MyTargetSelected extends GameServerPacket +public class MyTargetSelected implements IClientOutgoingPacket { /** The _object id. */ private final int _objectId; @@ -59,15 +62,12 @@ public class MyTargetSelected extends GameServerPacket _color = color; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa6); - writeD(_objectId); - writeH(_color); + OutgoingPackets.MY_TARGET_SELECTED.writeId(packet); + packet.writeD(_objectId); + packet.writeH(_color); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NormalCamera.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NormalCamera.java index e5503a04a8..f8b6cd883a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NormalCamera.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NormalCamera.java @@ -16,11 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class NormalCamera extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class NormalCamera implements IClientOutgoingPacket { @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xc8); + OutgoingPackets.NORMAL_CAMERA.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NpcHtmlMessage.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NpcHtmlMessage.java index ee936db5ca..82570713c4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NpcHtmlMessage.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NpcHtmlMessage.java @@ -19,8 +19,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.cache.HtmCache; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.util.BuilderUtil; /** @@ -124,7 +126,7 @@ import org.l2jmobius.gameserver.util.BuilderUtil; * . * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class NpcHtmlMessage extends GameServerPacket +public class NpcHtmlMessage implements IClientOutgoingPacket { /** The LOGGER. */ private static final Logger LOGGER = Logger.getLogger(NpcHtmlMessage.class.getName()); @@ -161,17 +163,18 @@ public class NpcHtmlMessage extends GameServerPacket _npcObjId = npcObjId; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#runImpl() - */ @Override - public void runImpl() + public void runImpl(PlayerInstance player) { if (Config.BYPASS_VALIDATION && _validate) { - buildBypassCache(getClient().getPlayer()); - buildLinksCache(getClient().getPlayer()); + buildBypassCache(player); + buildLinksCache(player); + } + + if ((_file != null) && player.isGM() && Config.GM_DEBUG_HTML_PATHS) + { + BuilderUtil.sendHtmlMessage(player, _file.substring(10)); } } @@ -312,23 +315,14 @@ public class NpcHtmlMessage extends GameServerPacket } } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - final PlayerInstance player = getClient().getPlayer(); - if ((_file != null) && player.isGM() && Config.GM_DEBUG_HTML_PATHS) - { - BuilderUtil.sendHtmlMessage(player, _file.substring(10)); - } - - writeC(0x0f); - writeD(_npcObjId); - writeS(_html); - writeD(0x00); + OutgoingPackets.NPC_HTML_MESSAGE.writeId(packet); + packet.writeD(_npcObjId); + packet.writeS(_html); + packet.writeD(0x00); + return true; } /** diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java index 71e56b4598..038526eee1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; @@ -31,11 +32,12 @@ import org.l2jmobius.gameserver.model.actor.instance.SiegeNpcInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.7.2.4.2.9 $ $Date: 2005/04/11 10:05:54 $ */ -public class NpcInfo extends GameServerPacket +public class NpcInfo implements IClientOutgoingPacket { private Creature _creature; private int _x; @@ -76,7 +78,7 @@ public class NpcInfo extends GameServerPacket if (cha.getFakePlayerInstance() != null) { attacker.sendPacket(new FakePlayerInfo(cha)); - attacker.broadcastPacket(new FinishRotation(cha)); + attacker.broadcastPacket(new StopRotation(cha, cha.getHeading(), 0)); return; } @@ -194,89 +196,86 @@ public class NpcInfo extends GameServerPacket _swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_creature == null) { - return; + return false; } if ((_creature instanceof Summon) && (((Summon) _creature).getOwner() != null) && ((Summon) _creature).getOwner().getAppearance().isInvisible()) { - return; + return false; } - writeC(0x16); - writeD(_creature.getObjectId()); - writeD(_displayId + 1000000); // npctype id - writeD(_isAttackable ? 1 : 0); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); - writeD(0x00); - writeD(_mAtkSpd); - writeD(_pAtkSpd); - writeD(_runSpd); - writeD(_walkSpd); - writeD(_swimRunSpd/* 0x32 */); // swimspeed - writeD(_swimWalkSpd/* 0x32 */); // swimspeed - writeD(_flRunSpd); - writeD(_flWalkSpd); - writeD(_flyRunSpd); - writeD(_flyWalkSpd); - writeF(1.1/* _activeChar.getProperMultiplier() */); + OutgoingPackets.NPC_INFO.writeId(packet); + packet.writeD(_creature.getObjectId()); + packet.writeD(_displayId + 1000000); // npctype id + packet.writeD(_isAttackable ? 1 : 0); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + packet.writeD(0x00); + packet.writeD(_mAtkSpd); + packet.writeD(_pAtkSpd); + packet.writeD(_runSpd); + packet.writeD(_walkSpd); + packet.writeD(_swimRunSpd/* 0x32 */); // swimspeed + packet.writeD(_swimWalkSpd/* 0x32 */); // swimspeed + packet.writeD(_flRunSpd); + packet.writeD(_flWalkSpd); + packet.writeD(_flyRunSpd); + packet.writeD(_flyWalkSpd); + packet.writeF(1.1/* _activeChar.getProperMultiplier() */); // writeF(1/*_activeChar.getAttackSpeedMultiplier()*/); - writeF(_pAtkSpd / 277.478340719); - writeF(_collisionRadius); - writeF(_collisionHeight); - writeD(_rhand); // right hand weapon - writeD(0); - writeD(_lhand); // left hand weapon - writeC(1); // name above char 1=true ... ?? - writeC(_creature.isRunning() ? 1 : 0); - writeC(_creature.isInCombat() ? 1 : 0); - writeC(_creature.isAlikeDead() ? 1 : 0); - writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation) - writeS(_name); - writeS(_title); + packet.writeF(_pAtkSpd / 277.478340719); + packet.writeF(_collisionRadius); + packet.writeF(_collisionHeight); + packet.writeD(_rhand); // right hand weapon + packet.writeD(0); + packet.writeD(_lhand); // left hand weapon + packet.writeC(1); // name above char 1=true ... ?? + packet.writeC(_creature.isRunning() ? 1 : 0); + packet.writeC(_creature.isInCombat() ? 1 : 0); + packet.writeC(_creature.isAlikeDead() ? 1 : 0); + packet.writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation) + packet.writeS(_name); + packet.writeS(_title); if (_creature instanceof Summon) { - writeD(0x01); // Title color 0=client default - writeD(((Summon) _creature).getPvpFlag()); - writeD(((Summon) _creature).getKarma()); + packet.writeD(0x01); // Title color 0=client default + packet.writeD(((Summon) _creature).getPvpFlag()); + packet.writeD(((Summon) _creature).getKarma()); } else { - writeD(0); - writeD(0); - writeD(0); + packet.writeD(0); + packet.writeD(0); + packet.writeD(0); } - writeD(_creature.getAbnormalEffect()); // C2 - writeD(_clanId); // C2 - writeD(_clanCrest); // C2 - writeD(_allyId); // C2 - writeD(_allyCrest); // C2 - writeC(0x00); // C2 + packet.writeD(_creature.getAbnormalEffect()); // C2 + packet.writeD(_clanId); // C2 + packet.writeD(_clanCrest); // C2 + packet.writeD(_allyId); // C2 + packet.writeD(_allyCrest); // C2 + packet.writeC(0x00); // C2 if (Config.CHAMPION_ENABLE) { - writeC(_creature.isChampion() ? Config.CHAMPION_AURA : 0); + packet.writeC(_creature.isChampion() ? Config.CHAMPION_AURA : 0); } else { - writeC(0x00); // C3 team circle 1-blue, 2-red + packet.writeC(0x00); // C3 team circle 1-blue, 2-red } - writeF(_collisionRadius); - writeF(_collisionHeight); - writeD(0x00); // C4 + packet.writeF(_collisionRadius); + packet.writeF(_collisionHeight); + packet.writeD(0x00); // C4 + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ObservationMode.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ObservationMode.java index d652513c6f..7f07473ff4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ObservationMode.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ObservationMode.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class ObservationMode extends GameServerPacket +public class ObservationMode implements IClientOutgoingPacket { private final int _x; private final int _y; @@ -38,14 +41,15 @@ public class ObservationMode extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xdf); - writeD(_x); - writeD(_y); - writeD(_z); - writeC(0x00); - writeC(0xc0); - writeC(0x00); + OutgoingPackets.OBSERVATION_MODE.writeId(packet); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeC(0x00); + packet.writeC(0xc0); + packet.writeC(0x00); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ObservationReturn.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ObservationReturn.java index 4f46058a4f..ed6233ab0c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ObservationReturn.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ObservationReturn.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class ObservationReturn extends GameServerPacket +public class ObservationReturn implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -34,11 +36,12 @@ public class ObservationReturn extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe0); - writeD(_player.getObsX()); - writeD(_player.getObsY()); - writeD(_player.getObsZ()); + OutgoingPackets.OBSERVATION_RETURN.writeId(packet); + packet.writeD(_player.getObsX()); + packet.writeD(_player.getObsY()); + packet.writeD(_player.getObsZ()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/OnVehicleCheckLocation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/OnVehicleCheckLocation.java index 67a64f59f5..04e4c681e4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/OnVehicleCheckLocation.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/OnVehicleCheckLocation.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class OnVehicleCheckLocation extends GameServerPacket +public class OnVehicleCheckLocation implements IClientOutgoingPacket { private final BoatInstance _boat; private final int _x; @@ -42,18 +44,15 @@ public class OnVehicleCheckLocation extends GameServerPacket _z = z; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5b); - writeD(_boat.getObjectId()); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_boat.getPosition().getHeading()); + OutgoingPackets.ON_VEHICLE_CHECK_LOCATION.writeId(packet); + packet.writeD(_boat.getObjectId()); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_boat.getPosition().getHeading()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PackageSendableList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PackageSendableList.java index 65c0517088..ec72d8c4cc 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PackageSendableList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PackageSendableList.java @@ -16,43 +16,48 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PackageSendableList extends GameServerPacket +public class PackageSendableList implements IClientOutgoingPacket { private final ItemInstance[] _items; private final int _playerObjId; + private final int _adena; - public PackageSendableList(ItemInstance[] items, int playerObjId) + public PackageSendableList(ItemInstance[] items, int playerObjId, int adena) { _items = items; _playerObjId = playerObjId; + _adena = adena; } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xC3); + OutgoingPackets.PACKAGE_SENDABLE_LIST.writeId(packet); - writeD(_playerObjId); - writeD(getClient().getPlayer().getAdena()); - writeD(_items.length); + packet.writeD(_playerObjId); + packet.writeD(_adena); + packet.writeD(_items.length); for (ItemInstance item : _items) // format inside the for taken from SellList part use should be about the same { - writeH(item.getItem().getType1()); - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeH(item.getEnchantLevel()); - writeH(0x00); - writeH(0x00); - writeD(item.getObjectId()); // some item identifier later used by client to answer (see RequestPackageSend) not item id nor object id maybe some freight system id?? + packet.writeH(item.getItem().getType1()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getEnchantLevel()); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeD(item.getObjectId()); // some item identifier later used by client to answer (see RequestPackageSend) not item id nor object id maybe some freight system id?? } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PackageToList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PackageToList.java index c3cfea0b7a..1deb2cd4aa 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PackageToList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PackageToList.java @@ -19,11 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Map; import java.util.Map.Entry; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (c) d[dS] d: list size [ d: char ID S: char Name ] * @author -Wooden- */ -public class PackageToList extends GameServerPacket +public class PackageToList implements IClientOutgoingPacket { private final Map _players; @@ -34,14 +37,15 @@ public class PackageToList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xC2); - writeD(_players.size()); + OutgoingPackets.PACKAGE_TO_LIST.writeId(packet); + packet.writeD(_players.size()); for (Entry entry : _players.entrySet()) { - writeD(entry.getKey()); // you told me char id, i guess this was object id? - writeS(entry.getValue()); + packet.writeD(entry.getKey()); // you told me char id, i guess this was object id? + packet.writeS(entry.getValue()); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchDetail.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchDetail.java index db162f1e80..117fd58d3d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchDetail.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchDetail.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Gnacik */ -public class PartyMatchDetail extends GameServerPacket +public class PartyMatchDetail implements IClientOutgoingPacket { private final PartyMatchRoom _room; @@ -34,15 +36,16 @@ public class PartyMatchDetail extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x97); - writeD(_room.getId()); // Room ID - writeD(_room.getMaxMembers()); // Max Members - writeD(_room.getMinLevel()); // Level Min - writeD(_room.getMaxLevel()); // Level Max - writeD(_room.getLootType()); // Loot Type - writeD(_room.getLocation()); // Room Location - writeS(_room.getTitle()); // Room title + OutgoingPackets.PARTY_MATCH_DETAIL.writeId(packet); + packet.writeD(_room.getId()); // Room ID + packet.writeD(_room.getMaxMembers()); // Max Members + packet.writeD(_room.getMinLevel()); // Level Min + packet.writeD(_room.getMaxLevel()); // Level Max + packet.writeD(_room.getLootType()); // Loot Type + packet.writeD(_room.getLocation()); // Room Location + packet.writeS(_room.getTitle()); // Room title + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchList.java index 14ad8ecd71..71ed0f2003 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchList.java @@ -19,11 +19,13 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class PartyMatchList extends GameServerPacket +public class PartyMatchList implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _loc; @@ -39,13 +41,8 @@ public class PartyMatchList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - if (getClient().getPlayer() == null) - { - return; - } - for (PartyMatchRoom room : PartyMatchRoomList.getInstance().getRooms()) { if ((room.getMembers() < 1) || (room.getOwner() == null) || !room.getOwner().isOnline() || (room.getOwner().getPartyRoom() != room.getId())) @@ -69,28 +66,29 @@ public class PartyMatchList extends GameServerPacket int count = 0; final int size = _rooms.size(); - writeC(0x96); + OutgoingPackets.PARTY_MATCH_LIST.writeId(packet); if (size > 0) { - writeD(1); + packet.writeD(1); } else { - writeD(0); + packet.writeD(0); } - writeD(_rooms.size()); + packet.writeD(_rooms.size()); while (size > count) { - writeD(_rooms.get(count).getId()); - writeS(_rooms.get(count).getTitle()); - writeD(_rooms.get(count).getLocation()); - writeD(_rooms.get(count).getMinLevel()); - writeD(_rooms.get(count).getMaxLevel()); - writeD(_rooms.get(count).getMembers()); - writeD(_rooms.get(count).getMaxMembers()); - writeS(_rooms.get(count).getOwner().getName()); + packet.writeD(_rooms.get(count).getId()); + packet.writeS(_rooms.get(count).getTitle()); + packet.writeD(_rooms.get(count).getLocation()); + packet.writeD(_rooms.get(count).getMinLevel()); + packet.writeD(_rooms.get(count).getMaxLevel()); + packet.writeD(_rooms.get(count).getMembers()); + packet.writeD(_rooms.get(count).getMaxMembers()); + packet.writeS(_rooms.get(count).getOwner().getName()); count++; } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMemberPosition.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMemberPosition.java index 42174b5885..f68ea52b31 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMemberPosition.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartyMemberPosition.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.HashMap; import java.util.Map; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author zabbix */ -public class PartyMemberPosition extends GameServerPacket +public class PartyMemberPosition implements IClientOutgoingPacket { - Map locations = new HashMap<>(); + Map _locations = new HashMap<>(); public PartyMemberPosition(Party party) { @@ -37,30 +39,31 @@ public class PartyMemberPosition extends GameServerPacket public void reuse(Party party) { - locations.clear(); + _locations.clear(); for (PlayerInstance member : party.getPartyMembers()) { if (member == null) { continue; } - locations.put(member.getObjectId(), new Location(member)); + _locations.put(member.getObjectId(), new Location(member)); } } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa7); - writeD(locations.size()); + OutgoingPackets.PARTY_MEMBER_POSITION.writeId(packet); + packet.writeD(_locations.size()); - for (Map.Entry entry : locations.entrySet()) + for (Map.Entry entry : _locations.entrySet()) { final Location loc = entry.getValue(); - writeD(entry.getKey()); - writeD(loc.getX()); - writeD(loc.getY()); - writeD(loc.getZ()); + packet.writeD(entry.getKey()); + packet.writeD(loc.getX()); + packet.writeD(loc.getY()); + packet.writeD(loc.getZ()); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAdd.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAdd.java index ee364c8d61..fcdef8000b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAdd.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAdd.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.5 $ $Date: 2005/03/27 15:29:57 $ */ -public class PartySmallWindowAdd extends GameServerPacket +public class PartySmallWindowAdd implements IClientOutgoingPacket { private final PlayerInstance _member; private final int _leaderId; @@ -36,24 +38,25 @@ public class PartySmallWindowAdd extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x4f); - writeD(_leaderId); // c3 - writeD(_distribution); // c3 - writeD(_member.getObjectId()); - writeS(_member.getName()); + OutgoingPackets.PARTY_SMALL_WINDOW_ADD.writeId(packet); + packet.writeD(_leaderId); // c3 + packet.writeD(_distribution); // c3 + packet.writeD(_member.getObjectId()); + packet.writeS(_member.getName()); - writeD((int) _member.getCurrentCp()); // c4 - writeD(_member.getMaxCp()); // c4 + packet.writeD((int) _member.getCurrentCp()); // c4 + packet.writeD(_member.getMaxCp()); // c4 - writeD((int) _member.getCurrentHp()); - writeD(_member.getMaxHp()); - writeD((int) _member.getCurrentMp()); - writeD(_member.getMaxMp()); - writeD(_member.getLevel()); - writeD(_member.getClassId().getId()); - writeD(0); // writeD(0x01); ?? - writeD(0); + packet.writeD((int) _member.getCurrentHp()); + packet.writeD(_member.getMaxHp()); + packet.writeD((int) _member.getCurrentMp()); + packet.writeD(_member.getMaxMp()); + packet.writeD(_member.getLevel()); + packet.writeD(_member.getClassId().getId()); + packet.writeD(0); // writeD(0x01); ?? + packet.writeD(0); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAll.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAll.java index cc2db44f26..6e9f4a4372 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAll.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAll.java @@ -16,55 +16,59 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 63 01 00 00 00 count c1 b2 e0 4a object id 54 00 75 00 65 00 73 00 64 00 61 00 79 00 00 00 name 5a 01 00 00 hp 5a 01 00 00 hp max 89 00 00 00 mp 89 00 00 00 mp max 0e 00 00 00 level 12 00 00 00 class 00 00 00 00 01 00 00 00 format d (dSdddddddd) * @version $Revision: 1.6.2.1.2.5 $ $Date: 2005/03/27 15:29:57 $ */ -public class PartySmallWindowAll extends GameServerPacket +public class PartySmallWindowAll implements IClientOutgoingPacket { private final Party _party; private final PlayerInstance _exclude; private final int _dist; - private final int _LeaderOID; + private final int _leaderObjId; public PartySmallWindowAll(PlayerInstance exclude, Party party) { _exclude = exclude; _party = party; - _LeaderOID = _party.getPartyLeaderOID(); + _leaderObjId = _party.getPartyLeaderOID(); _dist = _party.getLootDistribution(); } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x4e); - writeD(_LeaderOID); - writeD(_dist); - writeD(_party.getMemberCount() - 1); + OutgoingPackets.PARTY_SMALL_WINDOW_ALL.writeId(packet); + + packet.writeD(_leaderObjId); + packet.writeD(_dist); + packet.writeD(_party.getMemberCount() - 1); for (PlayerInstance member : _party.getPartyMembers()) { if ((member != null) && (member != _exclude)) { - writeD(member.getObjectId()); - writeS(member.getName()); + packet.writeD(member.getObjectId()); + packet.writeS(member.getName()); - writeD((int) member.getCurrentCp()); // c4 - writeD(member.getMaxCp()); // c4 + packet.writeD((int) member.getCurrentCp()); // c4 + packet.writeD(member.getMaxCp()); // c4 - writeD((int) member.getCurrentHp()); - writeD(member.getMaxHp()); - writeD((int) member.getCurrentMp()); - writeD(member.getMaxMp()); - writeD(member.getLevel()); - writeD(member.getClassId().getId()); - writeD(0); // writeD(0x01); ?? - writeD(member.getRace().ordinal()); + packet.writeD((int) member.getCurrentHp()); + packet.writeD(member.getMaxHp()); + packet.writeD((int) member.getCurrentMp()); + packet.writeD(member.getMaxMp()); + packet.writeD(member.getLevel()); + packet.writeD(member.getClassId().getId()); + packet.writeD(0); // writeD(0x01); ?? + packet.writeD(member.getRace().ordinal()); } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDelete.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDelete.java index 5cbf8c2adc..a195980c3c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDelete.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDelete.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PartySmallWindowDelete extends GameServerPacket +public class PartySmallWindowDelete implements IClientOutgoingPacket { private final PlayerInstance _member; @@ -31,10 +33,11 @@ public class PartySmallWindowDelete extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x51); - writeD(_member.getObjectId()); - writeS(_member.getName()); + OutgoingPackets.PARTY_SMALL_WINDOW_DELETE.writeId(packet); + packet.writeD(_member.getObjectId()); + packet.writeS(_member.getName()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDeleteAll.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDeleteAll.java index 6591705c78..b141cf1b61 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDeleteAll.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDeleteAll.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PartySmallWindowDeleteAll extends GameServerPacket +public class PartySmallWindowDeleteAll implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x50); + OutgoingPackets.PARTY_SMALL_WINDOW_DELETE_ALL.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowUpdate.java index 67a49b0dea..d2f8a45c6e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowUpdate.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.5 $ $Date: 2005/03/27 15:29:39 $ */ -public class PartySmallWindowUpdate extends GameServerPacket +public class PartySmallWindowUpdate implements IClientOutgoingPacket { private final PlayerInstance _member; @@ -31,20 +33,21 @@ public class PartySmallWindowUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x52); - writeD(_member.getObjectId()); - writeS(_member.getName()); + OutgoingPackets.PARTY_SMALL_WINDOW_UPDATE.writeId(packet); + packet.writeD(_member.getObjectId()); + packet.writeS(_member.getName()); - writeD((int) _member.getCurrentCp()); // c4 - writeD(_member.getMaxCp()); // c4 + packet.writeD((int) _member.getCurrentCp()); // c4 + packet.writeD(_member.getMaxCp()); // c4 - writeD((int) _member.getCurrentHp()); - writeD(_member.getMaxHp()); - writeD((int) _member.getCurrentMp()); - writeD(_member.getMaxMp()); - writeD(_member.getLevel()); - writeD(_member.getClassId().getId()); + packet.writeD((int) _member.getCurrentHp()); + packet.writeD(_member.getMaxHp()); + packet.writeD((int) _member.getCurrentMp()); + packet.writeD(_member.getMaxMp()); + packet.writeD(_member.getLevel()); + packet.writeD(_member.getClassId().getId()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySpelled.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySpelled.java index a9360115cb..b5f67134fb 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySpelled.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PartySpelled.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PartySpelled extends GameServerPacket +public class PartySpelled implements IClientOutgoingPacket { private final List _effects; private final Creature _creature; @@ -52,15 +54,15 @@ public class PartySpelled extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_creature == null) { - return; + return false; } - writeC(0xee); - writeD(_creature instanceof SummonInstance ? 2 : _creature instanceof PetInstance ? 1 : 0); - writeD(_creature.getObjectId()); + OutgoingPackets.PARTY_SPELLED.writeId(packet); + packet.writeD(_creature instanceof SummonInstance ? 2 : _creature instanceof PetInstance ? 1 : 0); + packet.writeD(_creature.getObjectId()); // C4 does not support more than 20 effects in party window, so limiting them makes no difference. // This check ignores first effects, so there is space for last effects to be viewable by party members. @@ -68,12 +70,12 @@ public class PartySpelled extends GameServerPacket int size = 0; if (_effects.size() > 20) { - writeD(20); + packet.writeD(20); size = _effects.size() - 20; } else { - writeD(_effects.size()); + packet.writeD(_effects.size()); } for (; size < _effects.size(); size++) @@ -84,10 +86,11 @@ public class PartySpelled extends GameServerPacket continue; } - writeD(temp._skillId); - writeH(temp._dat); - writeD(temp._duration / 1000); + packet.writeD(temp._skillId); + packet.writeH(temp._dat); + packet.writeD(temp._duration / 1000); } + return true; } public void addPartySpelledEffect(int skillId, int dat, int duration) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetDelete.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetDelete.java index 4f3f8ee399..467831c73d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetDelete.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetDelete.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class PetDelete extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class PetDelete implements IClientOutgoingPacket { private final int _petId; private final int _petObjId; @@ -28,10 +31,11 @@ public class PetDelete extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb6); - writeD(_petId); // dont really know what these two are since i never needed them - writeD(_petObjId); // objectId + OutgoingPackets.PET_DELETE.writeId(packet); + packet.writeD(_petId); // dont really know what these two are since i never needed them + packet.writeD(_petObjId); // objectId + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetInfo.java index 7f2f3c9ee0..d776a88577 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetInfo.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.6.2.5.2.12 $ $Date: 2005/03/31 09:19:16 $ */ -public class PetInfo extends GameServerPacket +public class PetInfo implements IClientOutgoingPacket { private final Summon _summon; private final int _x; @@ -81,88 +83,89 @@ public class PetInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb1); - writeD(_summon.getSummonType()); - writeD(_summon.getObjectId()); - writeD(_summon.getTemplate().getDisplayId() + 1000000); - writeD(0); // 1=attackable + OutgoingPackets.PET_INFO.writeId(packet); + packet.writeD(_summon.getSummonType()); + packet.writeD(_summon.getObjectId()); + packet.writeD(_summon.getTemplate().getDisplayId() + 1000000); + packet.writeD(0); // 1=attackable - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); - writeD(0); - writeD(_mAtkSpd); - writeD(_pAtkSpd); - writeD(_runSpd); - writeD(_walkSpd); - writeD(_swimRunSpd); - writeD(_swimWalkSpd); - writeD(_flRunSpd); - writeD(_flWalkSpd); - writeD(_flyRunSpd); - writeD(_flyWalkSpd); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + packet.writeD(0); + packet.writeD(_mAtkSpd); + packet.writeD(_pAtkSpd); + packet.writeD(_runSpd); + packet.writeD(_walkSpd); + packet.writeD(_swimRunSpd); + packet.writeD(_swimWalkSpd); + packet.writeD(_flRunSpd); + packet.writeD(_flWalkSpd); + packet.writeD(_flyRunSpd); + packet.writeD(_flyWalkSpd); - writeF(1/* _cha.getProperMultiplier() */); - writeF(1/* _cha.getAttackSpeedMultiplier() */); - writeF(_summon.getTemplate().getFCollisionRadius()); - writeF(_summon.getTemplate().getFCollisionHeight()); - writeD(0); // right hand weapon - writeD(0); - writeD(0); // left hand weapon - writeC(1); // name above char 1=true ... ?? - writeC(_summon.isRunning() ? 1 : 0); // running=1 - writeC(_summon.isInCombat() ? 1 : 0); // attacking 1=true - writeC(_summon.isAlikeDead() ? 1 : 0); // dead 1=true - writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation) - writeS(_summon.getName()); - writeS(_summon.getTitle()); - writeD(1); - writeD(_summon.getOwner() != null ? _summon.getOwner().getPvpFlag() : 0); // 0 = white,2= purpleblink, if its greater then karma = purple - writeD(_summon.getOwner() != null ? _summon.getOwner().getKarma() : 0); // karma - writeD(_curFed); // how fed it is - writeD(_maxFed); // max fed it can be - writeD((int) _summon.getCurrentHp()); // current hp - writeD(_maxHp); // max hp - writeD((int) _summon.getCurrentMp()); // current mp - writeD(_maxMp); // max mp - writeD(_summon.getStat().getSp()); // sp - writeD(_summon.getLevel()); // level - writeQ(_summon.getStat().getExp()); - writeQ(_summon.getExpForThisLevel()); // 0% absolute value - writeQ(_summon.getExpForNextLevel()); // 100% absoulte value - writeD(_summon instanceof PetInstance ? _summon.getInventory().getTotalWeight() : 0); // weight - writeD(_summon.getMaxLoad()); // max weight it can carry - writeD(_summon.getPAtk(null)); // patk - writeD(_summon.getPDef(null)); // pdef - writeD(_summon.getMAtk(null, null)); // matk - writeD(_summon.getMDef(null, null)); // mdef - writeD(_summon.getAccuracy()); // accuracy - writeD(_summon.getEvasionRate(null)); // evasion - writeD(_summon.getCriticalHit(null, null)); // critical - writeD(_runSpd); // speed - writeD(_summon.getPAtkSpd()); // atkspeed - writeD(_summon.getMAtkSpd()); // casting speed + packet.writeF(1/* _cha.getProperMultiplier() */); + packet.writeF(1/* _cha.getAttackSpeedMultiplier() */); + packet.writeF(_summon.getTemplate().getFCollisionRadius()); + packet.writeF(_summon.getTemplate().getFCollisionHeight()); + packet.writeD(0); // right hand weapon + packet.writeD(0); + packet.writeD(0); // left hand weapon + packet.writeC(1); // name above char 1=true ... ?? + packet.writeC(_summon.isRunning() ? 1 : 0); // running=1 + packet.writeC(_summon.isInCombat() ? 1 : 0); // attacking 1=true + packet.writeC(_summon.isAlikeDead() ? 1 : 0); // dead 1=true + packet.writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation) + packet.writeS(_summon.getName()); + packet.writeS(_summon.getTitle()); + packet.writeD(1); + packet.writeD(_summon.getOwner() != null ? _summon.getOwner().getPvpFlag() : 0); // 0 = white,2= purpleblink, if its greater then karma = purple + packet.writeD(_summon.getOwner() != null ? _summon.getOwner().getKarma() : 0); // karma + packet.writeD(_curFed); // how fed it is + packet.writeD(_maxFed); // max fed it can be + packet.writeD((int) _summon.getCurrentHp()); // current hp + packet.writeD(_maxHp); // max hp + packet.writeD((int) _summon.getCurrentMp()); // current mp + packet.writeD(_maxMp); // max mp + packet.writeD(_summon.getStat().getSp()); // sp + packet.writeD(_summon.getLevel()); // level + packet.writeD((int) _summon.getStat().getExp()); + packet.writeD((int) _summon.getExpForThisLevel()); // 0% absolute value + packet.writeD((int) _summon.getExpForNextLevel()); // 100% absoulte value + packet.writeD(_summon instanceof PetInstance ? _summon.getInventory().getTotalWeight() : 0); // weight + packet.writeD(_summon.getMaxLoad()); // max weight it can carry + packet.writeD(_summon.getPAtk(null)); // patk + packet.writeD(_summon.getPDef(null)); // pdef + packet.writeD(_summon.getMAtk(null, null)); // matk + packet.writeD(_summon.getMDef(null, null)); // mdef + packet.writeD(_summon.getAccuracy()); // accuracy + packet.writeD(_summon.getEvasionRate(null)); // evasion + packet.writeD(_summon.getCriticalHit(null, null)); // critical + packet.writeD(_runSpd); // speed + packet.writeD(_summon.getPAtkSpd()); // atkspeed + packet.writeD(_summon.getMAtkSpd()); // casting speed - writeD(0); // c2 abnormal visual effect... bleed=1; poison=2; poison & bleed=3; flame=4; + packet.writeD(0); // c2 abnormal visual effect... bleed=1; poison=2; poison & bleed=3; flame=4; final int npcId = _summon.getTemplate().getNpcId(); if ((npcId >= 12526) && (npcId <= 12528)) { - writeH(1); // c2 ride button + packet.writeH(1); // c2 ride button } else { - writeH(0); + packet.writeH(0); } - writeC(0); // c2 + packet.writeC(0); // c2 // Following all added in C4. - writeH(0); // ?? - writeC(0); // team aura (1 = blue, 2 = red) - writeD(_summon.getSoulShotsPerHit()); // How many soulshots this servitor uses per hit - writeD(_summon.getSpiritShotsPerHit()); // How many spiritshots this servitor uses per hit + packet.writeH(0); // ?? + packet.writeC(0); // team aura (1 = blue, 2 = red) + packet.writeD(_summon.getSoulShotsPerHit()); // How many soulshots this servitor uses per hit + packet.writeD(_summon.getSpiritShotsPerHit()); // How many spiritshots this servitor uses per hit + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetInventoryUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetInventoryUpdate.java index eec8bb4a5a..51d7dd6f5c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetInventoryUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetInventoryUpdate.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ItemInfo; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Yme * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/27 15:29:57 $ Rebuild 23.2.2006 by Advi */ -public class PetInventoryUpdate extends GameServerPacket +public class PetInventoryUpdate implements IClientOutgoingPacket { private final List _items; @@ -72,25 +74,26 @@ public class PetInventoryUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb3); + OutgoingPackets.PET_INVENTORY_UPDATE.writeId(packet); final int count = _items.size(); - writeH(count); + packet.writeH(count); for (ItemInfo item : _items) { - writeH(item.getChange()); - writeH(item.getItem().getType1()); // item type1 - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); // item type2 - writeH(0x00); // ? - writeH(item.getEquipped()); + packet.writeH(item.getChange()); + packet.writeH(item.getItem().getType1()); // item type1 + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? + packet.writeH(item.getEquipped()); // writeH(temp.getItem().getBodyPart()); // rev 377 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(item.getEnchant()); // enchant level - writeH(0x00); // ? + packet.writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getEnchant()); // enchant level + packet.writeH(0x00); // ? } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetItemList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetItemList.java index a70ad53099..1692cbe819 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetItemList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetItemList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class PetItemList extends GameServerPacket +public class PetItemList implements IClientOutgoingPacket { private final PetInstance _activeChar; @@ -32,34 +34,35 @@ public class PetItemList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xB2); + OutgoingPackets.PET_ITEM_LIST.writeId(packet); final ItemInstance[] items = _activeChar.getInventory().getItems(); final int count = items.length; - writeH(count); + packet.writeH(count); for (ItemInstance temp : items) { - writeH(temp.getItem().getType1()); // item type1 - writeD(temp.getObjectId()); - writeD(temp.getItemId()); - writeD(temp.getCount()); - writeH(temp.getItem().getType2()); // item type2 - writeH(0xff); // ? + packet.writeH(temp.getItem().getType1()); // item type1 + packet.writeD(temp.getObjectId()); + packet.writeD(temp.getItemId()); + packet.writeD(temp.getCount()); + packet.writeH(temp.getItem().getType2()); // item type2 + packet.writeH(0xff); // ? if (temp.isEquipped()) { - writeH(0x01); + packet.writeH(0x01); } else { - writeH(0x00); + packet.writeH(0x00); } - writeD(temp.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeD(temp.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand // writeH(temp.getItem().getBodyPart()); // rev 377 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(temp.getEnchantLevel()); // enchant level - writeH(0x00); // ? + packet.writeH(temp.getEnchantLevel()); // enchant level + packet.writeH(0x00); // ? } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusShow.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusShow.java index db1a4bc738..2e6c5c1535 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusShow.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusShow.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Summon; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Yme * @version $Revision: 1.3.2.2.2.4 $ $Date: 2005/03/29 23:15:10 $ */ -public class PetStatusShow extends GameServerPacket +public class PetStatusShow implements IClientOutgoingPacket { private final int _summonType; @@ -32,9 +34,10 @@ public class PetStatusShow extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xB0); - writeD(_summonType); + OutgoingPackets.PET_STATUS_SHOW.writeId(packet); + packet.writeD(_summonType); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusUpdate.java index 4262540bfa..4889d1d30c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusUpdate.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.5.2.3.2.5 $ $Date: 2005/03/29 23:15:10 $ */ -public class PetStatusUpdate extends GameServerPacket +public class PetStatusUpdate implements IClientOutgoingPacket { private final Summon _summon; private final int _maxHp; @@ -51,24 +53,25 @@ public class PetStatusUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb5); - writeD(_summon.getSummonType()); - writeD(_summon.getObjectId()); - writeD(_summon.getX()); - writeD(_summon.getY()); - writeD(_summon.getZ()); - writeS(_summon.getOwner().getName()); - writeD(_curFed); - writeD(_maxFed); - writeD((int) _summon.getCurrentHp()); - writeD(_maxHp); - writeD((int) _summon.getCurrentMp()); - writeD(_maxMp); - writeD(_summon.getLevel()); - writeQ(_summon.getStat().getExp()); - writeQ(_summon.getExpForThisLevel()); // 0% absolute value - writeQ(_summon.getExpForNextLevel()); // 100% absolute value + OutgoingPackets.PET_STATUS_UPDATE.writeId(packet); + packet.writeD(_summon.getSummonType()); + packet.writeD(_summon.getObjectId()); + packet.writeD(_summon.getX()); + packet.writeD(_summon.getY()); + packet.writeD(_summon.getZ()); + packet.writeS(_summon.getOwner().getName()); + packet.writeD(_curFed); + packet.writeD(_maxFed); + packet.writeD((int) _summon.getCurrentHp()); + packet.writeD(_maxHp); + packet.writeD((int) _summon.getCurrentMp()); + packet.writeD(_maxMp); + packet.writeD(_summon.getLevel()); + packet.writeD((int) _summon.getStat().getExp()); + packet.writeD((int) _summon.getExpForThisLevel()); // 0% absolute value + packet.writeD((int) _summon.getExpForNextLevel()); // 100% absolute value + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PlaySound.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PlaySound.java index 151eb4e54b..afd859edf9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PlaySound.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PlaySound.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class PlaySound extends GameServerPacket +public class PlaySound implements IClientOutgoingPacket { private final int _unknown; private final String _soundFile; @@ -93,16 +95,17 @@ public class PlaySound extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x98); - writeD(_unknown); - writeS(_soundFile); - writeD(_isObject ? 1 : 0); - writeD(_objectId); - writeD(_loc.getX()); - writeD(_loc.getY()); - writeD(_loc.getZ()); - writeD(_duration); + OutgoingPackets.PLAY_SOUND.writeId(packet); + packet.writeD(_unknown); + packet.writeS(_soundFile); + packet.writeD(_isObject ? 1 : 0); + packet.writeD(_objectId); + packet.writeD(_loc.getX()); + packet.writeD(_loc.getY()); + packet.writeD(_loc.getZ()); + packet.writeD(_duration); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeCrest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeCrest.java index 86f996b228..b761558b68 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeCrest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeCrest.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.cache.CrestCache; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 84 6d 06 00 00 36 05 00 00 42 4d 36 05 00 00 00 .m...6...BM6.... 0010: 00 00 00 36 04 00 00 28 00 00 00 10 00 00 00 10 ...6...(........ 0020: 00 00 00 01 00 08 00 00 00 00 00 00 01 00 00 c4 ................ 0030: ... 0530: 10 91 00 00 00 60 9b d1 01 e4 6e ee 52 97 dd .....`....n.R.. * format dd x...x * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgeCrest extends GameServerPacket +public class PledgeCrest implements IClientOutgoingPacket { private final int _crestId; private final byte[] _data; @@ -35,18 +37,19 @@ public class PledgeCrest extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x6c); - writeD(_crestId); + OutgoingPackets.PLEDGE_CREST.writeId(packet); + packet.writeD(_crestId); if (_data != null) { - writeD(_data.length); - writeB(_data); + packet.writeD(_data.length); + packet.writeB(_data); } else { - writeD(0); + packet.writeD(0); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeInfo.java index 395ae2be9e..6198fed193 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 9c c10c0000 48 00 61 00 6d 00 62 00 75 00 72 .....H.a.m.b.u.r 0010: 00 67 00 00 00 00000000 00000000 00000000 00000000 00000000 00000000 00 00 00000000 ... format dSddddddSd * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgeInfo extends GameServerPacket +public class PledgeInfo implements IClientOutgoingPacket { private final Clan _clan; @@ -32,11 +34,12 @@ public class PledgeInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x83); - writeD(_clan.getClanId()); - writeS(_clan.getName()); - writeS(_clan.getAllyName()); + OutgoingPackets.PLEDGE_INFO.writeId(packet); + packet.writeD(_clan.getClanId()); + packet.writeS(_clan.getName()); + packet.writeS(_clan.getAllyName()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgePowerGradeList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgePowerGradeList.java index 35be352baa..4384723291 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgePowerGradeList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgePowerGradeList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.Clan.RankPrivs; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 9c c10c0000 48 00 61 00 6d 00 62 00 75 00 72 .....H.a.m.b.u.r 0010: 00 67 00 00 00 00000000 00000000 00000000 00000000 00000000 00000000 00 00 00000000 ... format dd ?? * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgePowerGradeList extends GameServerPacket +public class PledgePowerGradeList implements IClientOutgoingPacket { private final RankPrivs[] _privs; @@ -32,16 +34,15 @@ public class PledgePowerGradeList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x3b); - writeD(_privs.length); + OutgoingPackets.PLEDGE_POWER_GRADE_LIST.writeId(packet); + packet.writeD(_privs.length); for (RankPrivs priv : _privs) { - writeD(priv.getRank()); - writeD(priv.getParty()); - // LOGGER.warning("rank: "+_privs[i].getRank()+" party: "+_privs[i].getParty()); + packet.writeD(priv.getRank()); + packet.writeD(priv.getParty()); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveMemberInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveMemberInfo.java index 7b46699018..44f08813db 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveMemberInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveMemberInfo.java @@ -16,61 +16,64 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.util.Chronos; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PledgeReceiveMemberInfo extends GameServerPacket +public class PledgeReceiveMemberInfo implements IClientOutgoingPacket { private final ClanMember _member; + private final PlayerInstance _player; - /** - * @param member - */ - public PledgeReceiveMemberInfo(ClanMember member) + public PledgeReceiveMemberInfo(ClanMember member, PlayerInstance player) { _member = member; + _player = player; } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x53); - writeD(_member.getClan().getClanId()); - writeS(_member.getClan().getName()); - writeS(_member.getClan().getLeaderName()); - writeD(_member.getClan().getCrestId()); // crest id .. is used again - writeD(_member.getClan().getLevel()); - writeD(_member.getClan().getCastleId()); - writeD(_member.getClan().getHideoutId()); - writeD(0); - writeD(getClient().getPlayer().getLevel()); // ?? - writeD(_member.getClan().getDissolvingExpiryTime() > Chronos.currentTimeMillis() ? 3 : 0); - writeD(0); + OutgoingPackets.PLEDGE_RECEIVE_MEMBER_INFO.writeId(packet); + packet.writeD(_member.getClan().getClanId()); + packet.writeS(_member.getClan().getName()); + packet.writeS(_member.getClan().getLeaderName()); + packet.writeD(_member.getClan().getCrestId()); // crest id .. is used again + packet.writeD(_member.getClan().getLevel()); + packet.writeD(_member.getClan().getCastleId()); + packet.writeD(_member.getClan().getHideoutId()); + packet.writeD(0); + packet.writeD(_player.getLevel()); // ?? + packet.writeD(_member.getClan().getDissolvingExpiryTime() > Chronos.currentTimeMillis() ? 3 : 0); + packet.writeD(0); - writeD(_member.getClan().getAllyId()); - writeS(_member.getClan().getAllyName()); - writeD(_member.getClan().getAllyCrestId()); + packet.writeD(_member.getClan().getAllyId()); + packet.writeS(_member.getClan().getAllyName()); + packet.writeD(_member.getClan().getAllyCrestId()); - writeD(_member.getClan().isAtWar());// new c3 + packet.writeD(_member.getClan().isAtWar());// new c3 - writeD(_member.getClan().getMembers().length - 1); + packet.writeD(_member.getClan().getMembers().length - 1); for (ClanMember m : _member.getClan().getMembers()) { // TODO is this c4? - if (m.getObjectId() == getClient().getPlayer().getObjectId()) + if (m.getObjectId() == _player.getObjectId()) { continue; } - writeS(m.getName()); - writeD(m.getLevel()); - writeD(m.getClassId()); - writeD(0); - writeD(1); - writeD(m.isOnline() ? m.getObjectId() : 0); // 1=online 0=offline + packet.writeS(m.getName()); + packet.writeD(m.getLevel()); + packet.writeD(m.getClassId()); + packet.writeD(0); + packet.writeD(1); + packet.writeD(m.isOnline() ? m.getObjectId() : 0); // 1=online 0=offline } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceivePowerInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceivePowerInfo.java index dc2efb5777..1dc7b80cea 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceivePowerInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceivePowerInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format : (ch) dSd * @author -Wooden- */ -public class PledgeReceivePowerInfo extends GameServerPacket +public class PledgeReceivePowerInfo implements IClientOutgoingPacket { private final ClanMember _member; @@ -35,13 +37,13 @@ public class PledgeReceivePowerInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x3c); + OutgoingPackets.PLEDGE_RECEIVE_POWER_INFO.writeId(packet); - writeD(_member.getPowerGrade()); // power grade - writeS(_member.getName()); - writeD(_member.getClan().getRankPrivs(_member.getPowerGrade())); // privileges + packet.writeD(_member.getPowerGrade()); // power grade + packet.writeS(_member.getName()); + packet.writeD(_member.getClan().getRankPrivs(_member.getPowerGrade())); // privileges + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveSubPledgeCreated.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveSubPledgeCreated.java index e2e74ccdba..2c3c8ae04b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveSubPledgeCreated.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveSubPledgeCreated.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.Clan.SubPledge; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PledgeReceiveSubPledgeCreated extends GameServerPacket +public class PledgeReceiveSubPledgeCreated implements IClientOutgoingPacket { private final SubPledge _subPledge; @@ -34,14 +36,13 @@ public class PledgeReceiveSubPledgeCreated extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x3f); - - writeD(0x01); - writeD(_subPledge.getId()); - writeS(_subPledge.getName()); - writeS(_subPledge.getLeaderName()); + OutgoingPackets.PLEDGE_RECEIVE_SUB_PLEDGE_CREATED.writeId(packet); + packet.writeD(0x01); + packet.writeD(_subPledge.getId()); + packet.writeS(_subPledge.getName()); + packet.writeS(_subPledge.getLeaderName()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveWarList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveWarList.java index bf3b652f92..e12e4b02c5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveWarList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveWarList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PledgeReceiveWarList extends GameServerPacket +public class PledgeReceiveWarList implements IClientOutgoingPacket { private final Clan _clan; private final int _tab; @@ -34,14 +36,12 @@ public class PledgeReceiveWarList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x3e); - - writeD(_tab); // type : 0 = Declared, 1 = Under Attack - writeD(0x00); // page - writeD(_tab == 0 ? _clan.getWarList().size() : _clan.getAttackerList().size()); + OutgoingPackets.PLEDGE_RECEIVE_WAR_LIST.writeId(packet); + packet.writeD(_tab); // type : 0 = Declared, 1 = Under Attack + packet.writeD(0x00); // page + packet.writeD(_tab == 0 ? _clan.getWarList().size() : _clan.getAttackerList().size()); for (Integer i : _tab == 0 ? _clan.getWarList() : _clan.getAttackerList()) { final Clan clan = ClanTable.getInstance().getClan(i); @@ -50,9 +50,10 @@ public class PledgeReceiveWarList extends GameServerPacket continue; } - writeS(clan.getName()); - writeD(_tab); // ?? - writeD(_tab); // ?? + packet.writeS(clan.getName()); + packet.writeD(_tab); // ?? + packet.writeD(_tab); // ?? } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowInfoUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowInfoUpdate.java index 8ba719a44a..06cfb6e1c8 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowInfoUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowInfoUpdate.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PledgeShowInfoUpdate extends GameServerPacket +public class PledgeShowInfoUpdate implements IClientOutgoingPacket { private final Clan _clan; @@ -32,24 +34,25 @@ public class PledgeShowInfoUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final int TOP = ClanTable.getInstance().getTopRate(_clan.getClanId()); // ddddddddddSdd - writeC(0x88); + OutgoingPackets.PLEDGE_SHOW_INFO_UPDATE.writeId(packet); // sending empty data so client will ask all the info in response ;) - writeD(_clan.getClanId()); - writeD(_clan.getCrestId()); - writeD(_clan.getLevel()); // clan level - writeD(_clan.getFortId() != 0 ? _clan.getFortId() : _clan.getCastleId()); - writeD(_clan.getHideoutId()); - writeD(TOP); - writeD(_clan.getReputationScore()); // clan reputation score - writeD(0); - writeD(0); - writeD(_clan.getAllyId()); - writeS(_clan.getAllyName()); - writeD(_clan.getAllyCrestId()); - writeD(_clan.isAtWar()); + packet.writeD(_clan.getClanId()); + packet.writeD(_clan.getCrestId()); + packet.writeD(_clan.getLevel()); // clan level + packet.writeD(_clan.getFortId() != 0 ? _clan.getFortId() : _clan.getCastleId()); + packet.writeD(_clan.getHideoutId()); + packet.writeD(TOP); + packet.writeD(_clan.getReputationScore()); // clan reputation score + packet.writeD(0); + packet.writeD(0); + packet.writeD(_clan.getAllyId()); + packet.writeS(_clan.getAllyName()); + packet.writeD(_clan.getAllyCrestId()); + packet.writeD(_clan.isAtWar()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAdd.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAdd.java index deb559c974..2457615063 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAdd.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAdd.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class PledgeShowMemberListAdd extends GameServerPacket +public class PledgeShowMemberListAdd implements IClientOutgoingPacket { private String _name; private int _level; @@ -55,15 +57,16 @@ public class PledgeShowMemberListAdd extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x55); - writeS(_name); - writeD(_level); - writeD(_classId); - writeD(0); - writeD(1); - writeD(_objectId); // 1=online 0=offline? - writeD(_pledgeType); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_ADD.writeId(packet); + packet.writeS(_name); + packet.writeD(_level); + packet.writeD(_classId); + packet.writeD(0); + packet.writeD(1); + packet.writeD(_objectId); // 1=online 0=offline? + packet.writeD(_pledgeType); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAll.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAll.java index de6c60f00f..13248daf8a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAll.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAll.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; // /** @@ -28,52 +30,55 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; * (Sddddd) dddSS dddddddddSdd d (Sdddddd) * @version $Revision: 1.6.2.2.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgeShowMemberListAll extends GameServerPacket +public class PledgeShowMemberListAll implements IClientOutgoingPacket { private final Clan _clan; + private final PlayerInstance _player; public PledgeShowMemberListAll(Clan clan, PlayerInstance player) { _clan = clan; + _player = player; } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x53); - writeD(_clan.getClanId()); - writeS(_clan.getName()); - writeS(_clan.getLeaderName()); - writeD(_clan.getCrestId()); // crest id .. is used again - writeD(_clan.getLevel()); - writeD(_clan.getCastleId()); - writeD(_clan.getHideoutId()); - writeD(0); - writeD(getClient().getPlayer().getLevel()); // ?? - writeD(_clan.getDissolvingExpiryTime() > Chronos.currentTimeMillis() ? 3 : 0); - writeD(0); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_ALL.writeId(packet); + packet.writeD(_clan.getClanId()); + packet.writeS(_clan.getName()); + packet.writeS(_clan.getLeaderName()); + packet.writeD(_clan.getCrestId()); // crest id .. is used again + packet.writeD(_clan.getLevel()); + packet.writeD(_clan.getCastleId()); + packet.writeD(_clan.getHideoutId()); + packet.writeD(0); + packet.writeD(_player.getLevel()); // ?? + packet.writeD(_clan.getDissolvingExpiryTime() > Chronos.currentTimeMillis() ? 3 : 0); + packet.writeD(0); - writeD(_clan.getAllyId()); - writeS(_clan.getAllyName()); - writeD(_clan.getAllyCrestId()); + packet.writeD(_clan.getAllyId()); + packet.writeS(_clan.getAllyName()); + packet.writeD(_clan.getAllyCrestId()); - writeD(_clan.isAtWar());// new c3 + packet.writeD(_clan.isAtWar());// new c3 - writeD(_clan.getMembers().length - 1); + packet.writeD(_clan.getMembers().length - 1); for (ClanMember m : _clan.getMembers()) { // TODO is this c4? - if (m.getObjectId() == getClient().getPlayer().getObjectId()) + if (m.getObjectId() == _player.getObjectId()) { continue; } - writeS(m.getName()); - writeD(m.getLevel()); - writeD(m.getClassId()); - writeD(0); - writeD(1); - writeD(m.isOnline() ? m.getObjectId() : 0); // 1=online 0=offline + packet.writeS(m.getName()); + packet.writeD(m.getLevel()); + packet.writeD(m.getClassId()); + packet.writeD(0); + packet.writeD(1); + packet.writeD(m.isOnline() ? m.getObjectId() : 0); // 1=online 0=offline } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDelete.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDelete.java index 4109330892..de65425183 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDelete.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDelete.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PledgeShowMemberListDelete extends GameServerPacket +public class PledgeShowMemberListDelete implements IClientOutgoingPacket { private final String _player; @@ -29,9 +32,10 @@ public class PledgeShowMemberListDelete extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x56); - writeS(_player); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_DELETE.writeId(packet); + packet.writeS(_player); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDeleteAll.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDeleteAll.java index 982ca488ea..ddaeeffb27 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDeleteAll.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDeleteAll.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgeShowMemberListDeleteAll extends GameServerPacket +public class PledgeShowMemberListDeleteAll implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x82); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_DELETE_ALL.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListUpdate.java index 39906f8486..1261172e09 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListUpdate.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PledgeShowMemberListUpdate extends GameServerPacket +public class PledgeShowMemberListUpdate implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _pledgeType; @@ -81,16 +83,17 @@ public class PledgeShowMemberListUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x54); - writeS(_name); - writeD(_level); - writeD(_classId); - writeD(0); - writeD(_objectId); - writeD(_isOnline ? 1 : 0); // 1=online 0=offline - writeD(_pledgeType); - writeD(_hasSponsor); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_UPDATE.writeId(packet); + packet.writeS(_name); + packet.writeD(_level); + packet.writeD(_classId); + packet.writeD(0); + packet.writeD(_objectId); + packet.writeD(_isOnline ? 1 : 0); // 1=online 0=offline + packet.writeD(_pledgeType); + packet.writeD(_hasSponsor); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillList.java index fe6a46d124..9f64f17ad7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillList.java @@ -16,17 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) d [dd]. * @author -Wooden- */ -public class PledgeSkillList extends GameServerPacket +public class PledgeSkillList implements IClientOutgoingPacket { - /** The _clan. */ - private final Clan _clan; + private final Skill[] _skills; /** * Instantiates a new pledge skill list. @@ -34,20 +35,19 @@ public class PledgeSkillList extends GameServerPacket */ public PledgeSkillList(Clan clan) { - _clan = clan; + _skills = clan.getAllSkills(); } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - final Skill[] skills = _clan.getAllSkills(); - writeC(0xfe); - writeH(0x39); - writeD(skills.length); - for (Skill sk : skills) + OutgoingPackets.PLEDGE_SKILL_LIST.writeId(packet); + packet.writeD(_skills.length); + for (Skill sk : _skills) { - writeD(sk.getId()); - writeD(sk.getLevel()); + packet.writeD(sk.getId()); + packet.writeD(sk.getLevel()); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillListAdd.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillListAdd.java index 3104dfc0b1..67d23eeddc 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillListAdd.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillListAdd.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch) dd * @author -Wooden- */ -public class PledgeSkillListAdd extends GameServerPacket +public class PledgeSkillListAdd implements IClientOutgoingPacket { private final int _id; private final int _level; @@ -32,12 +35,11 @@ public class PledgeSkillListAdd extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x3a); - - writeD(_id); - writeD(_level); + OutgoingPackets.PLEDGE_SKILL_LIST_ADD.writeId(packet); + packet.writeD(_id); + packet.writeD(_level); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeStatusChanged.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeStatusChanged.java index 052f30e175..aad22fdfd6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeStatusChanged.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PledgeStatusChanged.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: cd b0 98 a0 48 1e 01 00 00 00 00 00 00 00 00 00 ....H........... 0010: 00 00 00 00 00 ..... format ddddd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PledgeStatusChanged extends GameServerPacket +public class PledgeStatusChanged implements IClientOutgoingPacket { private final Clan _clan; @@ -32,13 +34,14 @@ public class PledgeStatusChanged extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xcd); - writeD(_clan.getLeaderId()); - writeD(_clan.getClanId()); - writeD(0); - writeD(_clan.getLevel()); - writeD(0); + OutgoingPackets.PLEDGE_STATUS_CHANGED.writeId(packet); + packet.writeD(_clan.getLeaderId()); + packet.writeD(_clan.getClanId()); + packet.writeD(0); + packet.writeD(_clan.getLevel()); + packet.writeD(0); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListBuy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListBuy.java index c577f4e539..48c6135e3e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListBuy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListBuy.java @@ -17,14 +17,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.7.2.2.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PrivateStoreListBuy extends GameServerPacket +public class PrivateStoreListBuy implements IClientOutgoingPacket { private final PlayerInstance _storePlayer; private final PlayerInstance _player; @@ -51,30 +53,31 @@ public class PrivateStoreListBuy extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb8); - writeD(_storePlayer.getObjectId()); - writeD(_playerAdena); + OutgoingPackets.PRIVATE_STORE_LIST_BUY.writeId(packet); + packet.writeD(_storePlayer.getObjectId()); + packet.writeD(_playerAdena); - writeD(_items.length); + packet.writeD(_items.length); for (TradeList.TradeItem item : _items) { - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeH(item.getEnchant()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeH(item.getEnchant()); // writeD(item.getCount()); //give max possible sell amount - writeD(item.getCurCount()); + packet.writeD(item.getCurCount()); - writeD(item.getItem().getReferencePrice()); - writeH(0); + packet.writeD(item.getItem().getReferencePrice()); + packet.writeH(0); - writeD(item.getItem().getBodyPart()); - writeH(item.getItem().getType2()); - writeD(item.getPrice()); // buyers price + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getItem().getType2()); + packet.writeD(item.getPrice()); // buyers price - writeD(item.getCount()); // maximum possible tradecount + packet.writeD(item.getCount()); // maximum possible tradecount } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListSell.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListSell.java index ba013aaa58..293b536b41 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListSell.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListSell.java @@ -17,14 +17,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.3.2.6 $ $Date: 2005/03/27 15:29:57 $ */ -public class PrivateStoreListSell extends GameServerPacket +public class PrivateStoreListSell implements IClientOutgoingPacket { private final PlayerInstance _storePlayer; private final PlayerInstance _player; @@ -53,26 +55,27 @@ public class PrivateStoreListSell extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x9b); - writeD(_storePlayer.getObjectId()); - writeD(_packageSale ? 1 : 0); - writeD(_playerAdena); + OutgoingPackets.PRIVATE_STORE_LIST_SELL.writeId(packet); + packet.writeD(_storePlayer.getObjectId()); + packet.writeD(_packageSale ? 1 : 0); + packet.writeD(_playerAdena); - writeD(_items.length); + packet.writeD(_items.length); for (TradeList.TradeItem item : _items) { - writeD(item.getItem().getType2()); - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(item.getCount()); - writeH(0x00); - writeH(item.getEnchant()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeD(item.getPrice()); // your price - writeD(item.getItem().getReferencePrice()); // store price + packet.writeD(item.getItem().getType2()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(item.getCount()); + packet.writeH(0x00); + packet.writeH(item.getEnchant()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeD(item.getPrice()); // your price + packet.writeD(item.getItem().getReferencePrice()); // store price } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListBuy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListBuy.java index 3190b15760..fbc790529d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListBuy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListBuy.java @@ -17,14 +17,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:40 $ */ -public class PrivateStoreManageListBuy extends GameServerPacket +public class PrivateStoreManageListBuy implements IClientOutgoingPacket { private final PlayerInstance _player; private int _playerAdena; @@ -48,39 +50,40 @@ public class PrivateStoreManageListBuy extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb7); + OutgoingPackets.PRIVATE_STORE_MANAGE_LIST_BUY.writeId(packet); // section 1 - writeD(_player.getObjectId()); - writeD(_playerAdena); + packet.writeD(_player.getObjectId()); + packet.writeD(_playerAdena); // section2 - writeD(_itemList.length); // inventory items for potential buy + packet.writeD(_itemList.length); // inventory items for potential buy for (ItemInstance item : _itemList) { - writeD(item.getItemId()); - writeH(item.getEnchantLevel()); // show enchant level, but you can't buy enchanted weapons because of L2 Interlude Client bug - writeD(item.getCount()); - writeD(item.getReferencePrice()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeH(item.getItem().getType2()); + packet.writeD(item.getItemId()); + packet.writeH(item.getEnchantLevel()); // show enchant level, but you can't buy enchanted weapons because of L2 Interlude Client bug + packet.writeD(item.getCount()); + packet.writeD(item.getReferencePrice()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getItem().getType2()); } // section 3 - writeD(_buyList.length); // count for all items already added for buy + packet.writeD(_buyList.length); // count for all items already added for buy for (TradeList.TradeItem item : _buyList) { - writeD(item.getItem().getItemId()); - writeH(item.getEnchant()); - writeD(item.getCount()); - writeD(item.getItem().getReferencePrice()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeH(item.getItem().getType2()); - writeD(item.getPrice()); // your price - writeD(item.getItem().getReferencePrice()); // fixed store price + packet.writeD(item.getItem().getItemId()); + packet.writeH(item.getEnchant()); + packet.writeD(item.getCount()); + packet.writeD(item.getItem().getReferencePrice()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getItem().getType2()); + packet.writeD(item.getPrice()); // your price + packet.writeD(item.getItem().getReferencePrice()); // fixed store price } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListSell.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListSell.java index a75d468c82..3b1aafa480 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListSell.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListSell.java @@ -17,8 +17,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList.TradeItem; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 3 section to this packet 1)playerinfo which is always sent dd 2)list of items which can be added to sell d(hhddddhhhd) 3)list of items which have already been setup for sell in previous sell private store sell manageent d(hhddddhhhdd) * @@ -28,7 +30,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; /* * In memory of our friend Vadim 03/11/2014 */ -public class PrivateStoreManageListSell extends GameServerPacket +public class PrivateStoreManageListSell implements IClientOutgoingPacket { private final PlayerInstance _player; private int _playerAdena; @@ -58,43 +60,44 @@ public class PrivateStoreManageListSell extends GameServerPacket * During store set no packets will be received from client just when store definition is finished. */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x9a); + OutgoingPackets.PRIVATE_STORE_MANAGE_LIST_SELL.writeId(packet); // section 1 - writeD(_player.getObjectId()); - writeD(_packageSale ? 1 : 0); // Package sell - writeD(_playerAdena); + packet.writeD(_player.getObjectId()); + packet.writeD(_packageSale ? 1 : 0); // Package sell + packet.writeD(_playerAdena); // section2 - writeD(_itemList.length); // for potential sells + packet.writeD(_itemList.length); // for potential sells for (TradeItem item : _itemList) { - writeD(item.getItem().getType2()); - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(item.getCount()); - writeH(0); - writeH(item.getEnchant()); // enchant level - writeH(0); - writeD(item.getItem().getBodyPart()); - writeD(item.getPrice()); // store price + packet.writeD(item.getItem().getType2()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(item.getCount()); + packet.writeH(0); + packet.writeH(item.getEnchant()); // enchant level + packet.writeH(0); + packet.writeD(item.getItem().getBodyPart()); + packet.writeD(item.getPrice()); // store price } // section 3 - writeD(_sellList.length); // count for any items already added for sell + packet.writeD(_sellList.length); // count for any items already added for sell for (TradeItem item : _sellList) { - writeD(item.getItem().getType2()); - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(item.getCount()); - writeH(0); - writeH(item.getEnchant()); // enchant level - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeD(item.getPrice()); // your price - writeD(item.getItem().getReferencePrice()); // store price + packet.writeD(item.getItem().getType2()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(item.getCount()); + packet.writeH(0); + packet.writeH(item.getEnchant()); // enchant level + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeD(item.getPrice()); // your price + packet.writeD(item.getItem().getReferencePrice()); // store price } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgBuy.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgBuy.java index b3e9618ad0..8361b1bbfe 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgBuy.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgBuy.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PrivateStoreMsgBuy extends GameServerPacket +public class PrivateStoreMsgBuy implements IClientOutgoingPacket { private final PlayerInstance _player; private String _storeMsg; @@ -36,10 +38,11 @@ public class PrivateStoreMsgBuy extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb9); - writeD(_player.getObjectId()); - writeS(_storeMsg); + OutgoingPackets.PRIVATE_STORE_MSG_BUY.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeS(_storeMsg); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgSell.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgSell.java index 55adea55da..ed171d4bfe 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgSell.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgSell.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PrivateStoreMsgSell extends GameServerPacket +public class PrivateStoreMsgSell implements IClientOutgoingPacket { private final PlayerInstance _player; private String _storeMsg; @@ -36,10 +38,11 @@ public class PrivateStoreMsgSell extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x9c); - writeD(_player.getObjectId()); - writeS(_storeMsg); + OutgoingPackets.PRIVATE_STORE_MSG_SELL.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeS(_storeMsg); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/QuestList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/QuestList.java index 27efc8246f..1c662efed9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/QuestList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/QuestList.java @@ -18,10 +18,12 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Collection; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class QuestList extends GameServerPacket +public class QuestList implements IClientOutgoingPacket { private final Collection _questStates; @@ -31,23 +33,24 @@ public class QuestList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x80); - writeH(_questStates.size()); + OutgoingPackets.QUEST_LIST.writeId(packet); + packet.writeH(_questStates.size()); for (QuestState qs : _questStates) { - writeD(qs.getQuest().getQuestId()); + packet.writeD(qs.getQuest().getQuestId()); final int states = qs.getInt("__compltdStateFlags"); if (states != 0) { - writeD(states); + packet.writeD(states); } else { - writeD(qs.getInt("cond")); + packet.writeD(qs.getInt("cond")); } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RadarControl.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RadarControl.java index 0512856b9d..199c005aea 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RadarControl.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RadarControl.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class RadarControl extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class RadarControl implements IClientOutgoingPacket { private final int _showRadar; private final int _type; @@ -42,13 +45,14 @@ public class RadarControl extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xEB); - writeD(_showRadar); - writeD(_type); // maybe type - writeD(_x); // x - writeD(_y); // y - writeD(_z); // z + OutgoingPackets.RADAR_CONTROL.writeId(packet); + packet.writeD(_showRadar); + packet.writeD(_type); // maybe type + packet.writeD(_x); // x + packet.writeD(_y); // y + packet.writeD(_z); // z + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeBookItemList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeBookItemList.java index a297c7524e..843a20d9a0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeBookItemList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeBookItemList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.RecipeList; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format d d(dd) * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class RecipeBookItemList extends GameServerPacket +public class RecipeBookItemList implements IClientOutgoingPacket { private RecipeList[] _recipes; private final boolean _isDwarvenCraft; @@ -40,26 +42,27 @@ public class RecipeBookItemList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xD6); + OutgoingPackets.RECIPE_BOOK_ITEM_LIST.writeId(packet); - writeD(_isDwarvenCraft ? 0x00 : 0x01); // 0 = Dwarven - 1 = Common - writeD(_maxMp); + packet.writeD(_isDwarvenCraft ? 0x00 : 0x01); // 0 = Dwarven - 1 = Common + packet.writeD(_maxMp); if (_recipes == null) { - writeD(0); + packet.writeD(0); } else { - writeD(_recipes.length); // number of items in recipe book + packet.writeD(_recipes.length); // number of items in recipe book for (int i = 0; i < _recipes.length; i++) { - writeD(_recipes[i].getId()); - writeD(i + 1); + packet.writeD(_recipes[i].getId()); + packet.writeD(i + 1); } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index f6fd5e05be..0b59b9af0a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format dddd */ -public class RecipeItemMakeInfo extends GameServerPacket +public class RecipeItemMakeInfo implements IClientOutgoingPacket { private final int _id; private final PlayerInstance _player; @@ -44,18 +46,19 @@ public class RecipeItemMakeInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final RecipeList recipe = RecipeData.getInstance().getRecipe(_id); if (recipe != null) { - writeC(0xD7); + OutgoingPackets.RECIPE_ITEM_MAKE_INFO.writeId(packet); - writeD(_id); - writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common - writeD((int) _player.getCurrentMp()); - writeD(_player.getMaxMp()); - writeD(_success ? 1 : 0); // item creation success/failed + packet.writeD(_id); + packet.writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common + packet.writeD((int) _player.getCurrentMp()); + packet.writeD(_player.getMaxMp()); + packet.writeD(_success ? 1 : 0); // item creation success/failed } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index 834856755c..7a9b98a3b0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * ddddd */ -public class RecipeShopItemInfo extends GameServerPacket +public class RecipeShopItemInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _recipeId; @@ -33,13 +35,14 @@ public class RecipeShopItemInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xda); - writeD(_player.getObjectId()); - writeD(_recipeId); - writeD((int) _player.getCurrentMp()); - writeD(_player.getMaxMp()); - writeD(0xffffffff); + OutgoingPackets.RECIPE_SHOP_ITEM_INFO.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_recipeId); + packet.writeD((int) _player.getCurrentMp()); + packet.writeD(_player.getMaxMp()); + packet.writeD(0xffffffff); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopManageList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopManageList.java index 624a89cf57..e801a4db93 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopManageList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopManageList.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.ManufactureList; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * dd d(dd) d(ddd) */ -public class RecipeShopManageList extends GameServerPacket +public class RecipeShopManageList implements IClientOutgoingPacket { private final PlayerInstance _seller; private final boolean _isDwarven; @@ -58,43 +60,44 @@ public class RecipeShopManageList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xd8); - writeD(_seller.getObjectId()); - writeD(_seller.getAdena()); - writeD(_isDwarven ? 0x00 : 0x01); + OutgoingPackets.RECIPE_SHOP_MANAGE_LIST.writeId(packet); + packet.writeD(_seller.getObjectId()); + packet.writeD(_seller.getAdena()); + packet.writeD(_isDwarven ? 0x00 : 0x01); if (_recipes == null) { - writeD(0); + packet.writeD(0); } else { - writeD(_recipes.length); // number of items in recipe book + packet.writeD(_recipes.length); // number of items in recipe book for (int i = 0; i < _recipes.length; i++) { - writeD(_recipes[i].getId()); - writeD(i + 1); + packet.writeD(_recipes[i].getId()); + packet.writeD(i + 1); } } if (_seller.getCreateList() == null) { - writeD(0); + packet.writeD(0); } else { final ManufactureList list = _seller.getCreateList(); - writeD(list.size()); + packet.writeD(list.size()); for (ManufactureItem item : list.getList()) { - writeD(item.getRecipeId()); - writeD(0x00); - writeD(item.getCost()); + packet.writeD(item.getRecipeId()); + packet.writeD(0x00); + packet.writeD(item.getCost()); } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopMsg.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopMsg.java index 2a5d3fba9f..7057535e42 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopMsg.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopMsg.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class RecipeShopMsg extends GameServerPacket +public class RecipeShopMsg implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -28,10 +30,11 @@ public class RecipeShopMsg extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xdb); - writeD(_player.getObjectId()); - writeS(_player.getCreateList().getStoreName()); + OutgoingPackets.RECIPE_SHOP_MSG.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getCreateList().getStoreName()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index bbb848dcb9..dec04bd8c3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -16,11 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.ManufactureList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class RecipeShopSellList extends GameServerPacket +public class RecipeShopSellList implements IClientOutgoingPacket { private final PlayerInstance _buyer; private final PlayerInstance _player; @@ -32,24 +34,25 @@ public class RecipeShopSellList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final ManufactureList createList = _player.getCreateList(); if (createList != null) { - writeC(0xd9); - writeD(_player.getObjectId()); - writeD((int) _player.getCurrentMp()); // Creator's MP - writeD(_player.getMaxMp()); // Creator's MP - writeD(_buyer.getAdena()); // Buyer Adena - writeD(createList.size()); + OutgoingPackets.RECIPE_SHOP_SELL_LIST.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD((int) _player.getCurrentMp()); // Creator's MP + packet.writeD(_player.getMaxMp()); // Creator's MP + packet.writeD(_buyer.getAdena()); // Buyer Adena + packet.writeD(createList.size()); for (ManufactureItem item : createList.getList()) { - writeD(item.getRecipeId()); - writeD(0x00); // unknown - writeD(item.getCost()); + packet.writeD(item.getRecipeId()); + packet.writeD(0x00); // unknown + packet.writeD(item.getCost()); } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RelationChanged.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RelationChanged.java index 405f106dbd..a744be6a28 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RelationChanged.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RelationChanged.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Luca Baldi */ -public class RelationChanged extends GameServerPacket +public class RelationChanged implements IClientOutgoingPacket { public static final int RELATION_PVP_FLAG = 0x00002; // pvp ??? public static final int RELATION_HAS_KARMA = 0x00004; // karma ??? @@ -59,13 +61,14 @@ public class RelationChanged extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xce); - writeD(_objId); - writeD(_relation); - writeD(_autoAttackable); - writeD(_karma); - writeD(_pvpFlag); + OutgoingPackets.RELATION_CHANGED.writeId(packet); + packet.writeD(_objId); + packet.writeD(_relation); + packet.writeD(_autoAttackable); + packet.writeD(_karma); + packet.writeD(_pvpFlag); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RestartResponse.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RestartResponse.java index 52fba6d0e5..755950cdc0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RestartResponse.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/RestartResponse.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class RestartResponse extends GameServerPacket +public class RestartResponse implements IClientOutgoingPacket { private static final RestartResponse STATIC_PACKET_TRUE = new RestartResponse(true); private static final RestartResponse STATIC_PACKET_FALSE = new RestartResponse(false); @@ -38,10 +41,11 @@ public class RestartResponse extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5f); - writeD(_result ? 1 : 0); - writeS(_message); + OutgoingPackets.RESTART_RESPONSE.writeId(packet); + packet.writeD(_result ? 1 : 0); + packet.writeS(_message); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Revive.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Revive.java index f7ad1ae2c4..a0487f1cde 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Revive.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Revive.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 0c 9b da 12 40 ....@ format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:40 $ */ -public class Revive extends GameServerPacket +public class Revive implements IClientOutgoingPacket { private final int _objectId; @@ -32,9 +34,10 @@ public class Revive extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x07); - writeD(_objectId); + OutgoingPackets.REVIVE.writeId(packet); + packet.writeD(_objectId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Ride.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Ride.java index 2e0728d87d..5004a5a2f3 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Ride.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Ride.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class Ride extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class Ride implements IClientOutgoingPacket { public static final int ACTION_MOUNT = 1; public static final int ACTION_DISMOUNT = 0; @@ -42,23 +45,19 @@ public class Ride extends GameServerPacket } } - @Override - public void runImpl() - { - } - public int getMountType() { return _rideType; } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x86); - writeD(_id); - writeD(_bRide); - writeD(_rideType); - writeD(_rideClassID); + OutgoingPackets.RIDE.writeId(packet); + packet.writeD(_id); + packet.writeD(_bRide); + packet.writeD(_rideType); + packet.writeD(_rideClassID); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java index 2f650bd463..9f794c1d1f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java @@ -16,17 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; import org.l2jmobius.gameserver.model.sevensigns.SevenSignsFestival; +import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.SystemMessageId; /** * Seven Signs Record Update packet type id 0xf5 format: c cc (Page Num = 1 -> 4, period) 1: [ddd cc dd ddd c ddd c] 2: [hc [cd (dc (S))] 3: [ccc (cccc)] 4: [(cchh)] * @author Tempy */ -public class SSQStatus extends GameServerPacket +public class SSQStatus implements IClientOutgoingPacket { private final PlayerInstance _activevChar; private final int _page; @@ -38,15 +40,15 @@ public class SSQStatus extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final int winningCabal = SevenSigns.getInstance().getCabalHighestScore(); final int totalDawnMembers = SevenSigns.getInstance().getTotalMembers(SevenSigns.CABAL_DAWN); final int totalDuskMembers = SevenSigns.getInstance().getTotalMembers(SevenSigns.CABAL_DUSK); - writeC(0xf5); + OutgoingPackets.SSQ_STATUS.writeId(packet); - writeC(_page); - writeC(SevenSigns.getInstance().getCurrentPeriod()); // current period? + packet.writeC(_page); + packet.writeC(SevenSigns.getInstance().getCurrentPeriod()); // current period? int dawnPercent = 0; int duskPercent = 0; @@ -56,28 +58,28 @@ public class SSQStatus extends GameServerPacket case 1: { // [ddd cc dd ddd c ddd c] - writeD(SevenSigns.getInstance().getCurrentCycle()); + packet.writeD(SevenSigns.getInstance().getCurrentCycle()); final int currentPeriod = SevenSigns.getInstance().getCurrentPeriod(); switch (currentPeriod) { case SevenSigns.PERIOD_COMP_RECRUITING: { - writeD(SystemMessageId.THIS_IS_THE_INITIAL_PERIOD.getId()); + packet.writeD(SystemMessageId.THIS_IS_THE_INITIAL_PERIOD.getId()); break; } case SevenSigns.PERIOD_COMPETITION: { - writeD(SystemMessageId.THIS_IS_A_QUEST_EVENT_PERIOD.getId()); + packet.writeD(SystemMessageId.THIS_IS_A_QUEST_EVENT_PERIOD.getId()); break; } case SevenSigns.PERIOD_COMP_RESULTS: { - writeD(SystemMessageId.THIS_IS_A_PERIOD_OF_CALCULATING_STATISTICS_IN_THE_SERVER.getId()); + packet.writeD(SystemMessageId.THIS_IS_A_PERIOD_OF_CALCULATING_STATISTICS_IN_THE_SERVER.getId()); break; } case SevenSigns.PERIOD_SEAL_VALIDATION: { - writeD(SystemMessageId.THIS_IS_THE_SEAL_VALIDATION_PERIOD.getId()); + packet.writeD(SystemMessageId.THIS_IS_THE_SEAL_VALIDATION_PERIOD.getId()); break; } } @@ -87,22 +89,22 @@ public class SSQStatus extends GameServerPacket case SevenSigns.PERIOD_COMP_RECRUITING: case SevenSigns.PERIOD_COMP_RESULTS: { - writeD(SystemMessageId.UNTIL_TODAY_AT_6_00_P_M.getId()); + packet.writeD(SystemMessageId.UNTIL_TODAY_AT_6_00_P_M.getId()); break; } case SevenSigns.PERIOD_COMPETITION: case SevenSigns.PERIOD_SEAL_VALIDATION: { - writeD(SystemMessageId.UNTIL_NEXT_MONDAY_AT_6_00_P_M.getId()); + packet.writeD(SystemMessageId.UNTIL_NEXT_MONDAY_AT_6_00_P_M.getId()); break; } } - writeC(SevenSigns.getInstance().getPlayerCabal(_activevChar)); - writeC(SevenSigns.getInstance().getPlayerSeal(_activevChar)); + packet.writeC(SevenSigns.getInstance().getPlayerCabal(_activevChar)); + packet.writeC(SevenSigns.getInstance().getPlayerSeal(_activevChar)); - writeD(SevenSigns.getInstance().getPlayerStoneContrib(_activevChar)); // Seal Stones Turned-In - writeD(SevenSigns.getInstance().getPlayerAdenaCollect(_activevChar)); // Ancient Adena to Collect + packet.writeD(SevenSigns.getInstance().getPlayerStoneContrib(_activevChar)); // Seal Stones Turned-In + packet.writeD(SevenSigns.getInstance().getPlayerAdenaCollect(_activevChar)); // Ancient Adena to Collect final double dawnStoneScore = SevenSigns.getInstance().getCurrentStoneScore(SevenSigns.CABAL_DAWN); final int dawnFestivalScore = SevenSigns.getInstance().getCurrentFestivalScore(SevenSigns.CABAL_DAWN); @@ -131,62 +133,62 @@ public class SSQStatus extends GameServerPacket } /* DUSK */ - writeD(duskStoneScoreProp); // Seal Stone Score - writeD(duskFestivalScore); // Festival Score - writeD(duskTotalScore); // Total Score + packet.writeD(duskStoneScoreProp); // Seal Stone Score + packet.writeD(duskFestivalScore); // Festival Score + packet.writeD(duskTotalScore); // Total Score - writeC(duskPercent); // Dusk % + packet.writeC(duskPercent); // Dusk % /* DAWN */ - writeD(dawnStoneScoreProp); // Seal Stone Score - writeD(dawnFestivalScore); // Festival Score - writeD(dawnTotalScore); // Total Score + packet.writeD(dawnStoneScoreProp); // Seal Stone Score + packet.writeD(dawnFestivalScore); // Festival Score + packet.writeD(dawnTotalScore); // Total Score - writeC(dawnPercent); // Dawn % + packet.writeC(dawnPercent); // Dawn % break; } case 2: { // c cc hc [cd (dc (S))] - writeH(1); - writeC(5); // Total number of festivals + packet.writeH(1); + packet.writeC(5); // Total number of festivals for (int i = 0; i < 5; i++) { - writeC(i + 1); // Current client-side festival ID - writeD(SevenSignsFestival.FESTIVAL_LEVEL_SCORES[i]); + packet.writeC(i + 1); // Current client-side festival ID + packet.writeD(SevenSignsFestival.FESTIVAL_LEVEL_SCORES[i]); final int duskScore = SevenSignsFestival.getInstance().getHighestScore(SevenSigns.CABAL_DUSK, i); final int dawnScore = SevenSignsFestival.getInstance().getHighestScore(SevenSigns.CABAL_DAWN, i); // Dusk Score \\ - writeD(duskScore); + packet.writeD(duskScore); StatSet highScoreData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DUSK, i); String[] partyMembers = highScoreData.getString("members").split(","); if (partyMembers != null) { - writeC(partyMembers.length); + packet.writeC(partyMembers.length); for (String partyMember : partyMembers) { - writeS(partyMember); + packet.writeS(partyMember); } } else { - writeC(0); + packet.writeC(0); } // Dawn Score \\ - writeD(dawnScore); + packet.writeD(dawnScore); highScoreData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DAWN, i); partyMembers = highScoreData.getString("members").split(","); if (partyMembers != null) { - writeC(partyMembers.length); + packet.writeC(partyMembers.length); for (String partyMember : partyMembers) { - writeS(partyMember); + packet.writeS(partyMember); } } else { - writeC(0); + packet.writeC(0); } } break; @@ -194,37 +196,37 @@ public class SSQStatus extends GameServerPacket case 3: { // c cc [ccc (cccc)] - writeC(10); // Minimum limit for winning cabal to retain their seal - writeC(35); // Minimum limit for winning cabal to claim a seal - writeC(3); // Total number of seals + packet.writeC(10); // Minimum limit for winning cabal to retain their seal + packet.writeC(35); // Minimum limit for winning cabal to claim a seal + packet.writeC(3); // Total number of seals for (int i = 1; i < 4; i++) { final int dawnProportion = SevenSigns.getInstance().getSealProportion(i, SevenSigns.CABAL_DAWN); final int duskProportion = SevenSigns.getInstance().getSealProportion(i, SevenSigns.CABAL_DUSK); - writeC(i); - writeC(SevenSigns.getInstance().getSealOwner(i)); + packet.writeC(i); + packet.writeC(SevenSigns.getInstance().getSealOwner(i)); if (totalDuskMembers == 0) { if (totalDawnMembers == 0) { - writeC(0); - writeC(0); + packet.writeC(0); + packet.writeC(0); } else { - writeC(0); - writeC(Math.round(((float) dawnProportion / totalDawnMembers) * 100)); + packet.writeC(0); + packet.writeC(Math.round(((float) dawnProportion / totalDawnMembers) * 100)); } } else if (totalDawnMembers == 0) { - writeC(Math.round(((float) duskProportion / totalDuskMembers) * 100)); - writeC(0); + packet.writeC(Math.round(((float) duskProportion / totalDuskMembers) * 100)); + packet.writeC(0); } else { - writeC(Math.round(((float) duskProportion / totalDuskMembers) * 100)); - writeC(Math.round(((float) dawnProportion / totalDawnMembers) * 100)); + packet.writeC(Math.round(((float) duskProportion / totalDuskMembers) * 100)); + packet.writeC(Math.round(((float) dawnProportion / totalDawnMembers) * 100)); } } break; @@ -232,8 +234,8 @@ public class SSQStatus extends GameServerPacket case 4: { // c cc [cc (cchh)] - writeC(winningCabal); // Overall predicted winner - writeC(3); // Total number of seals + packet.writeC(winningCabal); // Overall predicted winner + packet.writeC(3); // Total number of seals for (int i = 1; i < 4; i++) { final int dawnProportion = SevenSigns.getInstance().getSealProportion(i, SevenSigns.CABAL_DAWN); @@ -241,7 +243,7 @@ public class SSQStatus extends GameServerPacket dawnPercent = Math.round((dawnProportion / (totalDawnMembers == 0 ? 1 : (float) totalDawnMembers)) * 100); duskPercent = Math.round((duskProportion / (totalDuskMembers == 0 ? 1 : (float) totalDuskMembers)) * 100); final int sealOwner = SevenSigns.getInstance().getSealOwner(i); - writeC(i); + packet.writeC(i); switch (sealOwner) { case SevenSigns.CABAL_NULL: @@ -250,21 +252,21 @@ public class SSQStatus extends GameServerPacket { case SevenSigns.CABAL_NULL: { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); break; } case SevenSigns.CABAL_DAWN: { if (dawnPercent >= 35) { - writeC(SevenSigns.CABAL_DAWN); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DAWN); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_NOT_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_SINCE_LESS_THAN_35_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_NOT_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_SINCE_LESS_THAN_35_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -272,13 +274,13 @@ public class SSQStatus extends GameServerPacket { if (duskPercent >= 35) { - writeC(SevenSigns.CABAL_DUSK); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DUSK); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_NOT_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_SINCE_LESS_THAN_35_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_NOT_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_SINCE_LESS_THAN_35_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -293,25 +295,25 @@ public class SSQStatus extends GameServerPacket { if (dawnPercent >= 10) { - writeC(SevenSigns.CABAL_DAWN); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DAWN); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); break; } - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); break; } case SevenSigns.CABAL_DAWN: { if (dawnPercent >= 10) { - writeC(sealOwner); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(sealOwner); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -319,18 +321,18 @@ public class SSQStatus extends GameServerPacket { if (duskPercent >= 35) { - writeC(SevenSigns.CABAL_DUSK); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DUSK); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else if (dawnPercent >= 10) { - writeC(SevenSigns.CABAL_DAWN); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DAWN); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -345,30 +347,30 @@ public class SSQStatus extends GameServerPacket { if (duskPercent >= 10) { - writeC(SevenSigns.CABAL_DUSK); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DUSK); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); break; } - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); break; } case SevenSigns.CABAL_DAWN: { if (dawnPercent >= 35) { - writeC(SevenSigns.CABAL_DAWN); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DAWN); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else if (duskPercent >= 10) { - writeC(sealOwner); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(sealOwner); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -376,13 +378,13 @@ public class SSQStatus extends GameServerPacket { if (duskPercent >= 10) { - writeC(sealOwner); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(sealOwner); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -390,10 +392,11 @@ public class SSQStatus extends GameServerPacket break; } } - writeH(0); + packet.writeH(0); } break; } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SellList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SellList.java index 396ff14f37..f2d63bdd80 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SellList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SellList.java @@ -20,13 +20,15 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.3.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class SellList extends GameServerPacket +public class SellList implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _money; @@ -50,27 +52,28 @@ public class SellList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x10); - writeD(_money); - writeD(0x00); + OutgoingPackets.SELL_LIST.writeId(packet); + packet.writeD(_money); + packet.writeD(0x00); - writeH(_selllist.size()); + packet.writeH(_selllist.size()); for (ItemInstance item : _selllist) { - writeH(item.getItem().getType1()); - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeH(item.getEnchantLevel()); - writeH(0x00); - writeH(0x00); - writeD(Config.MERCHANT_ZERO_SELL_PRICE ? 0 : item.getItem().getReferencePrice() / 2); + packet.writeH(item.getItem().getType1()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getEnchantLevel()); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeD(Config.MERCHANT_ZERO_SELL_PRICE ? 0 : item.getItem().getReferencePrice() / 2); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SellListProcure.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SellListProcure.java index 620ee35bfe..bad65a4721 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SellListProcure.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SellListProcure.java @@ -22,12 +22,14 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class SellListProcure extends GameServerPacket +public class SellListProcure implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _money; @@ -52,23 +54,24 @@ public class SellListProcure extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xE9); - writeD(_money); // money - writeD(0x00); // lease ? - writeH(_sellList.size()); // list size + OutgoingPackets.SELL_LIST_PROCURE.writeId(packet); + packet.writeD(_money); // money + packet.writeD(0x00); // lease ? + packet.writeH(_sellList.size()); // list size for (Entry entry : _sellList.entrySet()) { final ItemInstance item = entry.getKey(); - writeH(item.getItem().getType1()); - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(entry.getValue()); // count - writeH(item.getItem().getType2()); - writeH(0); // unknown - writeD(0); // price, u shouldnt get any adena for crops, only raw materials + packet.writeH(item.getItem().getType1()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(entry.getValue()); // count + packet.writeH(item.getItem().getType2()); + packet.writeH(0); // unknown + packet.writeD(0); // price, u shouldnt get any adena for crops, only raw materials } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendMacroList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendMacroList.java index 782b94aa3f..42d04e3f28 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendMacroList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendMacroList.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Macro; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * packet type id 0xe7 sample e7 d // unknown change of Macro edit,add,delete c // unknown c //count of Macros c // unknown d // id S // macro name S // desc S // acronym c // icon c // count c // entry c // type d // skill id c // shortcut id S // command name format: cdhcdSSScc (ccdcS) */ -public class SendMacroList extends GameServerPacket +public class SendMacroList implements IClientOutgoingPacket { private final int _rev; private final int _count; @@ -35,58 +37,59 @@ public class SendMacroList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xE7); + OutgoingPackets.SEND_MACRO_LIST.writeId(packet); - writeD(_rev); // macro change revision (changes after each macro edition) - writeC(0); // unknown - writeC(_count); // count of Macros - writeC(_macro != null ? 1 : 0); // unknown + packet.writeD(_rev); // macro change revision (changes after each macro edition) + packet.writeC(0); // unknown + packet.writeC(_count); // count of Macros + packet.writeC(_macro != null ? 1 : 0); // unknown if (_macro != null) { - writeD(_macro.id); // Macro ID - writeS(_macro.name); // Macro Name - writeS(_macro.descr); // Desc - writeS(_macro.acronym); // acronym - writeC(_macro.icon); // icon + packet.writeD(_macro.id); // Macro ID + packet.writeS(_macro.name); // Macro Name + packet.writeS(_macro.descr); // Desc + packet.writeS(_macro.acronym); // acronym + packet.writeC(_macro.icon); // icon - writeC(_macro.commands.length); // count + packet.writeC(_macro.commands.length); // count for (int i = 0; i < _macro.commands.length; i++) { final Macro.MacroCmd cmd = _macro.commands[i]; - writeC(i + 1); // i of count - writeC(cmd.type); // type 1 = skill, 3 = action, 4 = shortcut - writeD(cmd.d1); // skill id - writeC(cmd.d2); // shortcut id - writeS(cmd.cmd); // command name + packet.writeC(i + 1); // i of count + packet.writeC(cmd.type); // type 1 = skill, 3 = action, 4 = shortcut + packet.writeD(cmd.d1); // skill id + packet.writeC(cmd.d2); // shortcut id + packet.writeS(cmd.cmd); // command name } } // writeD(1); //unknown change of Macro edit,add,delete - // writeC(0); //unknown - // writeC(1); //count of Macros - // writeC(1); //unknown + // packet.writeC(0); //unknown + // packet.writeC(1); //count of Macros + // packet.writeC(1); //unknown // // writeD(1430); //Macro ID // writeS("Admin"); //Macro Name // writeS("Admin Command"); //Desc // writeS("ADM"); //acronym - // writeC(0); //icon - // writeC(2); //count + // packet.writeC(0); //icon + // packet.writeC(2); //count // - // writeC(1); //i of count - // writeC(3); //type 1 = skill, 3 = action, 4 = shortcut + // packet.writeC(1); //i of count + // packet.writeC(3); //type 1 = skill, 3 = action, 4 = shortcut // writeD(0); // skill id - // writeC(0); // shortcut id + // packet.writeC(0); // shortcut id // writeS("/loc"); // command name // - // writeC(2); //i of count - // writeC(3); //type 1 = skill, 3 = action, 4 = shortcut + // packet.writeC(2); //i of count + // packet.writeC(3); //type 1 = skill, 3 = action, 4 = shortcut // writeD(0); // skill id - // writeC(0); // shortcut id + // packet.writeC(0); // shortcut id // writeS("//admin"); // command name + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeDone.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeDone.java index f6db039d42..31f922d34e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeDone.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeDone.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class SendTradeDone extends GameServerPacket +public class SendTradeDone implements IClientOutgoingPacket { private final int _num; @@ -29,9 +32,10 @@ public class SendTradeDone extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x22); - writeD(_num); + OutgoingPackets.SEND_TRADE_DONE.writeId(packet); + packet.writeD(_num); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeRequest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeRequest.java index 981de69197..b889148eae 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeRequest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeRequest.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:40 $ */ -public class SendTradeRequest extends GameServerPacket +public class SendTradeRequest implements IClientOutgoingPacket { private final int _senderID; @@ -29,9 +32,10 @@ public class SendTradeRequest extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5e); - writeD(_senderID); + OutgoingPackets.SEND_TRADE_REQUEST.writeId(packet); + packet.writeD(_senderID); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ServerClose.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ServerClose.java index 2e75c7574e..e914eb0da5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ServerClose.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ServerClose.java @@ -16,19 +16,20 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author devScarlet & mrTJO */ -public class ServerClose extends GameServerPacket +public class ServerClose implements IClientOutgoingPacket { public static final ServerClose STATIC_PACKET = new ServerClose(); - /** - * @see org.l2jmobius.gameserver.network.serverpackets.GameServerPacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x26); + OutgoingPackets.SERVER_CLOSE.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetSummonRemainTime.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetSummonRemainTime.java index 68d23e105a..db12dfc8ae 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetSummonRemainTime.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetSummonRemainTime.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * format (c) dd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:40 $ */ -public class SetSummonRemainTime extends GameServerPacket +public class SetSummonRemainTime implements IClientOutgoingPacket { private final int _maxTime; private final int _remainingTime; @@ -32,10 +35,11 @@ public class SetSummonRemainTime extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xd1); - writeD(_maxTime); - writeD(_remainingTime); + OutgoingPackets.SET_SUMMON_REMAIN_TIME.writeId(packet); + packet.writeD(_maxTime); + packet.writeD(_remainingTime); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetToLocation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetToLocation.java deleted file mode 100644 index 5edd8683a5..0000000000 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetToLocation.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.model.actor.Creature; - -/** - * 0000: 76 7a 07 80 49 ea 01 00 00 c1 37 fe uz..Ic'.J.....7. - *

    - * 0010: ff 9e c3 03 00 8f f3 ff ff ......... - *

    - *

    - * format dddddd (player id, target id, distance, startx, starty, startz) - *

    - * @version $Revision: 1.3.4.3 $ $Date: 2005/03/27 15:29:57 $ - */ -public class SetToLocation extends GameServerPacket -{ - private final int _objectId; - private final int _x; - private final int _y; - private final int _z; - private final int _heading; - - public SetToLocation(Creature creature) - { - _objectId = creature.getObjectId(); - _x = creature.getX(); - _y = creature.getY(); - _z = creature.getZ(); - _heading = creature.getHeading(); - } - - @Override - protected final void writeImpl() - { - writeC(0x76); - - writeD(_objectId); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); - } -} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetupGauge.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetupGauge.java index 9af3f92fd6..b252d90ded 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetupGauge.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SetupGauge.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample 0000: 85 00 00 00 00 f0 1a 00 00 * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class SetupGauge extends GameServerPacket +public class SetupGauge implements IClientOutgoingPacket { public static final int BLUE = 0; public static final int RED = 1; @@ -36,12 +39,12 @@ public class SetupGauge extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x6d); - writeD(_dat1); - writeD(_time); - - writeD(_time); // c2 + OutgoingPackets.SETUP_GAUGE.writeId(packet); + packet.writeD(_dat1); + packet.writeD(_time); + packet.writeD(_time); // c2 + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutInit.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutInit.java index 56015586b4..b973120b9a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutInit.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutInit.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ShortCut; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * ShortCutInit format d *(1dddd)/(2ddddd)/(3dddd) * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShortCutInit extends GameServerPacket +public class ShortCutInit implements IClientOutgoingPacket { private ShortCut[] _shortCuts; private PlayerInstance _player; @@ -40,20 +42,22 @@ public class ShortCutInit extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x45); - writeD(_shortCuts.length); + OutgoingPackets.SHORT_CUT_INIT.writeId(packet); + packet.writeD(_shortCuts.length); + for (ShortCut sc : _shortCuts) { - writeD(sc.getType()); - writeD(sc.getSlot() + (sc.getPage() * 12)); - writeD(sc.getId()); + packet.writeD(sc.getType()); + packet.writeD(sc.getSlot() + (sc.getPage() * 12)); + packet.writeD(sc.getId()); if (sc.getLevel() > -1) { - writeD(_player.getSkillLevel(sc.getId())); + packet.writeD(_player.getSkillLevel(sc.getId())); } - writeD(1); + packet.writeD(1); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutRegister.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutRegister.java index a2d87a8689..1a5d161862 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutRegister.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutRegister.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ShortCut; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 56 01000000 04000000 dd9fb640 01000000 56 02000000 07000000 38000000 03000000 01000000 56 03000000 00000000 02000000 01000000 format dd d/dd/d d * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShortCutRegister extends GameServerPacket +public class ShortCutRegister implements IClientOutgoingPacket { private final ShortCut _shortcut; @@ -36,47 +38,48 @@ public class ShortCutRegister extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x44); + OutgoingPackets.SHORT_CUT_REGISTER.writeId(packet); - writeD(_shortcut.getType()); - writeD(_shortcut.getSlot() + (_shortcut.getPage() * 12)); // C4 Client + packet.writeD(_shortcut.getType()); + packet.writeD(_shortcut.getSlot() + (_shortcut.getPage() * 12)); // C4 Client switch (_shortcut.getType()) { case ShortCut.TYPE_ITEM: // 1 { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); break; } case ShortCut.TYPE_SKILL: // 2 { - writeD(_shortcut.getId()); - writeD(_shortcut.getLevel()); - writeC(0x00); // C5 + packet.writeD(_shortcut.getId()); + packet.writeD(_shortcut.getLevel()); + packet.writeC(0x00); // C5 break; } case ShortCut.TYPE_ACTION: // 3 { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); break; } case ShortCut.TYPE_MACRO: // 4 { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); break; } case ShortCut.TYPE_RECIPE: // 5 { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); break; } default: { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); } } - writeD(1); // ?? + packet.writeD(1); // ?? + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowBoard.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowBoard.java index 3791ae5ff0..b130e5a297 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowBoard.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowBoard.java @@ -18,9 +18,11 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.util.StringUtil; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class ShowBoard extends GameServerPacket +public class ShowBoard implements IClientOutgoingPacket { public static final ShowBoard STATIC_SHOWBOARD_102 = new ShowBoard(null, "102"); public static final ShowBoard STATIC_SHOWBOARD_103 = new ShowBoard(null, "103"); @@ -51,18 +53,19 @@ public class ShowBoard extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x6e); - writeC(0x01); // 1 to show, 0 to hide - writeS(TOP); - writeS(FAV); - writeS(REGION); - writeS(CLAN); - writeS(MEMO); - writeS(MAIL); - writeS(FRIENDS); - writeS(ADDFAV); - writeS(_htmlCode.toString()); + OutgoingPackets.SHOW_BOARD.writeId(packet); + packet.writeC(0x01); // 1 to show, 0 to hide + packet.writeS(TOP); + packet.writeS(FAV); + packet.writeS(REGION); + packet.writeS(CLAN); + packet.writeS(MEMO); + packet.writeS(MAIL); + packet.writeS(FRIENDS); + packet.writeS(ADDFAV); + packet.writeS(_htmlCode.toString()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowCalculator.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowCalculator.java index a7cedeeea2..b93ad1825a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowCalculator.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowCalculator.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShowCalculator extends GameServerPacket +public class ShowCalculator implements IClientOutgoingPacket { private final int _calculatorId; @@ -33,9 +36,10 @@ public class ShowCalculator extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xdc); - writeD(_calculatorId); + OutgoingPackets.SHOW_CALCULATOR.writeId(packet); + packet.writeD(_calculatorId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowMiniMap.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowMiniMap.java index 533763b2fe..9abed31a61 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowMiniMap.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowMiniMap.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShowMiniMap extends GameServerPacket +public class ShowMiniMap implements IClientOutgoingPacket { private final int _mapId; @@ -35,10 +37,11 @@ public class ShowMiniMap extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x9d); - writeD(_mapId); - writeD(SevenSigns.getInstance().getCurrentPeriod()); + OutgoingPackets.SHOW_MINI_MAP.writeId(packet); + packet.writeD(_mapId); + packet.writeD(SevenSigns.getInstance().getCurrentPeriod()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowPCCafeCouponShowUI.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowPCCafeCouponShowUI.java index 75b7bcb5d4..5b4e7eab78 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowPCCafeCouponShowUI.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowPCCafeCouponShowUI.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch) * @author -Wooden- */ -public class ShowPCCafeCouponShowUI extends GameServerPacket +public class ShowPCCafeCouponShowUI implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x43); + OutgoingPackets.SHOW_PC_CAFE_COUPON_SHOW_UI.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowTownMap.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowTownMap.java index af8b9eadc6..0d6c3178c9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowTownMap.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowTownMap.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShowTownMap extends GameServerPacket +public class ShowTownMap implements IClientOutgoingPacket { private final String _texture; private final int _x; @@ -39,11 +42,12 @@ public class ShowTownMap extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xde); - writeS(_texture); - writeD(_x); - writeD(_y); + OutgoingPackets.SHOW_TOWN_MAP.writeId(packet); + packet.writeS(_texture); + packet.writeD(_x); + packet.writeD(_y); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowXMasSeal.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowXMasSeal.java index f40ffaddc5..49e00c6988 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowXMasSeal.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ShowXMasSeal.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author devScarlet & mrTJO */ -public class ShowXMasSeal extends GameServerPacket +public class ShowXMasSeal implements IClientOutgoingPacket { private final int _item; @@ -29,9 +32,10 @@ public class ShowXMasSeal extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xF2); - writeD(_item); + OutgoingPackets.SHOW_XMAS_SEAL.writeId(packet); + packet.writeD(_item); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeAttackerList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeAttackerList.java index d4769a7450..59f75b1206 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeAttackerList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeAttackerList.java @@ -16,10 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import java.util.Collection; + +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.SiegeClan; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Populates the Siege Attacker List in the SiegeInfo Window
    @@ -46,30 +51,38 @@ import org.l2jmobius.gameserver.model.siege.Castle; * d = AllyCrestID
    * @author KenM */ -public class SiegeAttackerList extends GameServerPacket +public class SiegeAttackerList implements IClientOutgoingPacket { - private final Castle _castle; + private final int _residenceId; + private final Collection _attackers; public SiegeAttackerList(Castle castle) { - _castle = castle; + _residenceId = castle.getCastleId(); + _attackers = castle.getSiege().getAttackerClans(); + } + + public SiegeAttackerList(Fort fort) + { + _residenceId = fort.getFortId(); + _attackers = fort.getSiege().getAttackerClans(); } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xca); - writeD(_castle.getCastleId()); - writeD(0x00); // 0 - writeD(0x01); // 1 - writeD(0x00); // 0 - final int size = _castle.getSiege().getAttackerClans().size(); + OutgoingPackets.SIEGE_ATTACKER_LIST.writeId(packet); + packet.writeD(_residenceId); + packet.writeD(0x00); // 0 + packet.writeD(0x01); // 1 + packet.writeD(0x00); // 0 + final int size = _attackers.size(); if (size > 0) { Clan clan; - writeD(size); - writeD(size); - for (SiegeClan siegeclan : _castle.getSiege().getAttackerClans()) + packet.writeD(size); + packet.writeD(size); + for (SiegeClan siegeclan : _attackers) { clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); if (clan == null) @@ -77,21 +90,22 @@ public class SiegeAttackerList extends GameServerPacket continue; } - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); + packet.writeD(clan.getClanId()); + packet.writeS(clan.getName()); + packet.writeS(clan.getLeaderName()); + packet.writeD(clan.getCrestId()); + packet.writeD(0x00); // signed time (seconds) (not storated by L2J) + packet.writeD(clan.getAllyId()); + packet.writeS(clan.getAllyName()); + packet.writeS(""); // AllyLeaderName + packet.writeD(clan.getAllyCrestId()); } } else { - writeD(0x00); - writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeDefenderList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeDefenderList.java index d857d970d0..b8223d2bb4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeDefenderList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeDefenderList.java @@ -16,10 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import java.util.Collection; + +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.SiegeClan; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Populates the Siege Defender List in the SiegeInfo Window
    @@ -47,31 +52,42 @@ import org.l2jmobius.gameserver.model.siege.Castle; * d = AllyCrestID
    * @author KenM */ -public class SiegeDefenderList extends GameServerPacket +public class SiegeDefenderList implements IClientOutgoingPacket { - private final Castle _castle; + private final int _residenceId; + private final Collection _defenders; + private final Collection _waiting; public SiegeDefenderList(Castle castle) { - _castle = castle; + _residenceId = castle.getCastleId(); + _defenders = castle.getSiege().getDefenderClans(); + _waiting = castle.getSiege().getDefenderWaitingClans(); + } + + public SiegeDefenderList(Fort fort) + { + _residenceId = fort.getFortId(); + _defenders = fort.getSiege().getDefenderClans(); + _waiting = fort.getSiege().getDefenderWaitingClans(); } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xcb); - writeD(_castle.getCastleId()); - writeD(0x00); // 0 - writeD(0x01); // 1 - writeD(0x00); // 0 - final int size = _castle.getSiege().getDefenderClans().size() + _castle.getSiege().getDefenderWaitingClans().size(); + OutgoingPackets.SIEGE_DEFENDER_LIST.writeId(packet); + packet.writeD(_residenceId); + packet.writeD(0x00); // 0 + packet.writeD(0x01); // 1 + packet.writeD(0x00); // 0 + final int size = _defenders.size() + _waiting.size(); if (size > 0) { Clan clan; - writeD(size); - writeD(size); + packet.writeD(size); + packet.writeD(size); // Listing the Lord and the approved clans - for (SiegeClan siegeclan : _castle.getSiege().getDefenderClans()) + for (SiegeClan siegeclan : _defenders) { clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); if (clan == null) @@ -79,58 +95,59 @@ public class SiegeDefenderList extends GameServerPacket continue; } - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) + packet.writeD(clan.getClanId()); + packet.writeS(clan.getName()); + packet.writeS(clan.getLeaderName()); + packet.writeD(clan.getCrestId()); + packet.writeD(0x00); // signed time (seconds) (not storated by L2J) switch (siegeclan.getType()) { case OWNER: { - writeD(0x01); // owner + packet.writeD(0x01); // owner break; } case DEFENDER_PENDING: { - writeD(0x02); // approved + packet.writeD(0x02); // approved break; } case DEFENDER: { - writeD(0x03); // waiting approved + packet.writeD(0x03); // waiting approved break; } default: { - writeD(0x00); + packet.writeD(0x00); break; } } - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); + packet.writeD(clan.getAllyId()); + packet.writeS(clan.getAllyName()); + packet.writeS(""); // AllyLeaderName + packet.writeD(clan.getAllyCrestId()); } - for (SiegeClan siegeclan : _castle.getSiege().getDefenderWaitingClans()) + for (SiegeClan siegeclan : _waiting) { clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - writeD(0x02); // waiting approval - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); + packet.writeD(clan.getClanId()); + packet.writeS(clan.getName()); + packet.writeS(clan.getLeaderName()); + packet.writeD(clan.getCrestId()); + packet.writeD(0x00); // signed time (seconds) (not storated by L2J) + packet.writeD(0x02); // waiting approval + packet.writeD(clan.getAllyId()); + packet.writeS(clan.getAllyName()); + packet.writeS(""); // AllyLeaderName + packet.writeD(clan.getAllyCrestId()); } } else { - writeD(0x00); - writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeInfo.java index e7e79369a4..d73a8eb8b4 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SiegeInfo.java @@ -17,12 +17,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Calendar; -import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Shows the Siege Info
    @@ -43,54 +45,65 @@ import org.l2jmobius.gameserver.model.siege.Castle; * d = (UNKNOW) Siege Time Select Related? * @author KenM */ -public class SiegeInfo extends GameServerPacket +public class SiegeInfo implements IClientOutgoingPacket { - private static final Logger LOGGER = Logger.getLogger(SiegeInfo.class.getName()); - private final Castle _castle; + private final PlayerInstance _player; + private final int _residenceId; + private final int _ownerId; + private final long _siegeDate; + private final String _name; - public SiegeInfo(Castle castle) + public SiegeInfo(Castle castle, PlayerInstance player) { - _castle = castle; + _player = player; + _residenceId = castle.getCastleId(); + _ownerId = castle.getOwnerId(); + _siegeDate = castle.getSiege().getSiegeDate().getTimeInMillis() / 1000; + _name = castle.getName(); + } + + public SiegeInfo(Fort fort, PlayerInstance player) + { + _player = player; + _residenceId = fort.getFortId(); + _ownerId = fort.getOwnerId(); + _siegeDate = fort.getSiege().getSiegeDate().getTimeInMillis() / 1000; + _name = fort.getName(); } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - final PlayerInstance player = getClient().getPlayer(); - if (player == null) + OutgoingPackets.SIEGE_INFO.writeId(packet); + packet.writeD(_residenceId); + packet.writeD((_ownerId == _player.getClanId()) && _player.isClanLeader() ? 0x01 : 0x00); + packet.writeD(_ownerId); + if (_ownerId > 0) { - return; - } - - writeC(0xc9); - writeD(_castle.getCastleId()); - writeD((_castle.getOwnerId() == player.getClanId()) && player.isClanLeader() ? 0x01 : 0x00); - writeD(_castle.getOwnerId()); - if (_castle.getOwnerId() > 0) - { - final Clan owner = ClanTable.getInstance().getClan(_castle.getOwnerId()); + final Clan owner = ClanTable.getInstance().getClan(_ownerId); if (owner != null) { - writeS(owner.getName()); // Clan Name - writeS(owner.getLeaderName()); // Clan Leader Name - writeD(owner.getAllyId()); // Ally ID - writeS(owner.getAllyName()); // Ally Name + packet.writeS(owner.getName()); // Clan Name + packet.writeS(owner.getLeaderName()); // Clan Leader Name + packet.writeD(owner.getAllyId()); // Ally ID + packet.writeS(owner.getAllyName()); // Ally Name } else { - LOGGER.warning("Null owner for castle: " + _castle.getName()); + LOGGER.warning("Null owner for castle: " + _name); } } else { - writeS("NPC"); // Clan Name - writeS(""); // Clan Leader Name - writeD(0); // Ally ID - writeS(""); // Ally Name + packet.writeS("NPC"); // Clan Name + packet.writeS(""); // Clan Leader Name + packet.writeD(0); // Ally ID + packet.writeS(""); // Ally Name } - writeD((int) (Calendar.getInstance().getTimeInMillis() / 1000)); - writeD((int) (_castle.getSiege().getSiegeDate().getTimeInMillis() / 1000)); - writeD(0x00); // number of choices? + packet.writeD((int) (Calendar.getInstance().getTimeInMillis() / 1000)); + packet.writeD((int) _siegeDate); + packet.writeD(0x00); // number of choices? + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SignsSky.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SignsSky.java index 21e950b53c..216b329277 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SignsSky.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SignsSky.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Changes the sky color depending on the outcome of the Seven Signs competition. packet type id 0xf8 format: c h * @author Tempy */ -public class SignsSky extends GameServerPacket +public class SignsSky implements IClientOutgoingPacket { private int _state = 0; @@ -48,19 +50,20 @@ public class SignsSky extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xf8); + OutgoingPackets.SIGNS_SKY.writeId(packet); if (_state == 2) { - writeH(258); + packet.writeH(258); } else if (_state == 1) { - writeH(257); + packet.writeH(257); // else // writeH(256); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SkillList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SkillList.java index 0b09635557..b62952920f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SkillList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SkillList.java @@ -16,13 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample 0000: 6d 0c 00 00 00 00 00 00 00 03 00 00 00 f3 03 00 m............... 0010: 00 00 00 00 00 01 00 00 00 f4 03 00 00 00 00 00 ................ 0020: 00 01 00 00 00 10 04 00 00 00 00 00 00 01 00 00 ................ 0030: 00 2c 04 00 00 00 00 00 00 03 00 00 00 99 04 00 .,.............. 0040: * 00 00 00 00 00 02 00 00 00 a0 04 00 00 00 00 00 ................ 0050: 00 01 00 00 00 c0 04 00 00 01 00 00 00 01 00 00 ................ 0060: 00 76 00 00 00 01 00 00 00 01 00 00 00 a3 00 00 .v.............. 0070: 00 01 00 00 00 01 00 00 00 c2 00 00 00 01 00 00 ................ 0080: 00 01 00 00 * 00 d6 00 00 00 01 00 00 00 01 00 00 ................ 0090: 00 f4 00 00 00 format d (ddd) * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/27 15:29:39 $ */ -public class SkillList extends GameServerPacket +public class SkillList implements IClientOutgoingPacket { private Skill[] _skills; @@ -86,16 +89,17 @@ public class SkillList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x58); - writeD(_skills.length); + OutgoingPackets.SKILL_LIST.writeId(packet); + packet.writeD(_skills.length); for (Skill temp : _skills) { - writeD(temp.passive ? 1 : 0); - writeD(temp.level); - writeD(temp.id); + packet.writeD(temp.passive ? 1 : 0); + packet.writeD(temp.level); + packet.writeD(temp.id); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Snoop.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Snoop.java index 36b25c6d18..4a084b01be 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Snoop.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/Snoop.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * CDSDDSS -> (0xd5)(objId)(name)(0x00)(type)(speaker)(name) */ -public class Snoop extends GameServerPacket +public class Snoop implements IClientOutgoingPacket { private final PlayerInstance _snooped; private final ChatType _type; @@ -38,14 +40,15 @@ public class Snoop extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xd5); - writeD(_snooped.getObjectId()); - writeS(_snooped.getName()); - writeD(0); // ?? - writeD(_type.getClientId()); - writeS(_speaker); - writeS(_msg); + OutgoingPackets.SNOOP.writeId(packet); + packet.writeD(_snooped.getObjectId()); + packet.writeS(_snooped.getName()); + packet.writeD(0); // ?? + packet.writeD(_type.getClientId()); + packet.writeS(_speaker); + packet.writeS(_msg); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SocialAction.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SocialAction.java index c03794c919..fbba8424c5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SocialAction.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SocialAction.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class SocialAction extends GameServerPacket +public class SocialAction implements IClientOutgoingPacket { private final int _objectId; private final int _actionId; @@ -36,10 +39,11 @@ public class SocialAction extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2d); - writeD(_objectId); - writeD(_actionId); + OutgoingPackets.SOCIAL_ACTION.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_actionId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SpawnItem.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SpawnItem.java index b37d17d0fd..2b0d226cab 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SpawnItem.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SpawnItem.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 15 ee cc 11 43 object id 39 00 00 00 item id 8f 14 00 00 x b7 f1 00 00 y 60 f2 ff ff z 01 00 00 00 show item count 7a 00 00 00 count . format dddddddd * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class SpawnItem extends GameServerPacket +public class SpawnItem implements IClientOutgoingPacket { private final int _objectId; private final int _itemId; @@ -44,18 +46,19 @@ public class SpawnItem extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x0b); - writeD(_objectId); - writeD(_itemId); + OutgoingPackets.SPAWN_ITEM.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_itemId); - writeD(_x); - writeD(_y); - writeD(_z); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); // only show item count if it is a stackable item - writeD(_stackable); - writeD(_count); - writeD(0x00); // c2 + packet.writeD(_stackable); + packet.writeD(_count); + packet.writeD(0x00); // c2 + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SpecialCamera.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SpecialCamera.java index f38174310d..d2483b4a58 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SpecialCamera.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SpecialCamera.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class SpecialCamera extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class SpecialCamera implements IClientOutgoingPacket { private final int _id; private final int _dist; @@ -58,18 +61,19 @@ public class SpecialCamera extends GameServerPacket } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xc7); - writeD(_id); - writeD(_dist); - writeD(_yaw); - writeD(_pitch); - writeD(_time); - writeD(_duration); - writeD(_turn); - writeD(_rise); - writeD(_widescreen); - writeD(_unknown); + OutgoingPackets.SPECIAL_CAMERA.writeId(packet); + packet.writeD(_id); + packet.writeD(_dist); + packet.writeD(_yaw); + packet.writeD(_pitch); + packet.writeD(_time); + packet.writeD(_duration); + packet.writeD(_turn); + packet.writeD(_rise); + packet.writeD(_widescreen); + packet.writeD(_unknown); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StartPledgeWar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StartPledgeWar.java index c179472beb..9efe1c7030 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StartPledgeWar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StartPledgeWar.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class StartPledgeWar extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class StartPledgeWar implements IClientOutgoingPacket { private final String _pledgeName; private final String _playerName; @@ -28,10 +31,11 @@ public class StartPledgeWar extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x65); - writeS(_playerName); - writeS(_pledgeName); + OutgoingPackets.START_PLEDGE_WAR.writeId(packet); + packet.writeS(_playerName); + packet.writeS(_pledgeName); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StaticObject.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StaticObject.java index b71a76ffbc..6f8560a321 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StaticObject.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StaticObject.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class StaticObject extends GameServerPacket +public class StaticObject implements IClientOutgoingPacket { private final StaticObjectInstance _staticObject; @@ -32,10 +34,11 @@ public class StaticObject extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x99); - writeD(_staticObject.getStaticObjectId()); // staticObjectId - writeD(_staticObject.getObjectId()); // objectId + OutgoingPackets.STATIC_OBJECT.writeId(packet); + packet.writeD(_staticObject.getStaticObjectId()); // staticObjectId + packet.writeD(_staticObject.getObjectId()); // objectId + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StatusUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StatusUpdate.java index f45a6a2019..75c28e6dca 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StatusUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StatusUpdate.java @@ -19,7 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 01 // Packet Identifier
    @@ -32,7 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; * format d d(dd) * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/27 15:29:39 $ */ -public class StatusUpdate extends GameServerPacket +public class StatusUpdate implements IClientOutgoingPacket { public static final int LEVEL = 0x01; public static final int EXP = 0x02; @@ -102,86 +104,87 @@ public class StatusUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x0e); + OutgoingPackets.STATUS_UPDATE.writeId(packet); if (_actor != null) { - writeD(_actor.getObjectId()); - writeD(28); // all the attributes + packet.writeD(_actor.getObjectId()); + packet.writeD(28); // all the attributes - writeD(LEVEL); - writeD(_actor.getLevel()); - writeD(EXP); - writeD((int) _actor.getExp()); - writeD(STR); - writeD(_actor.getSTR()); - writeD(DEX); - writeD(_actor.getDEX()); - writeD(CON); - writeD(_actor.getCON()); - writeD(INT); - writeD(_actor.getINT()); - writeD(WIT); - writeD(_actor.getWIT()); - writeD(MEN); - writeD(_actor.getMEN()); + packet.writeD(LEVEL); + packet.writeD(_actor.getLevel()); + packet.writeD(EXP); + packet.writeD((int) _actor.getExp()); + packet.writeD(STR); + packet.writeD(_actor.getSTR()); + packet.writeD(DEX); + packet.writeD(_actor.getDEX()); + packet.writeD(CON); + packet.writeD(_actor.getCON()); + packet.writeD(INT); + packet.writeD(_actor.getINT()); + packet.writeD(WIT); + packet.writeD(_actor.getWIT()); + packet.writeD(MEN); + packet.writeD(_actor.getMEN()); - writeD(CUR_HP); - writeD((int) _actor.getCurrentHp()); - writeD(MAX_HP); - writeD(_actor.getMaxHp()); - writeD(CUR_MP); - writeD((int) _actor.getCurrentMp()); - writeD(MAX_MP); - writeD(_actor.getMaxMp()); - writeD(SP); - writeD(_actor.getSp()); - writeD(CUR_LOAD); - writeD(_actor.getCurrentLoad()); - writeD(MAX_LOAD); - writeD(_actor.getMaxLoad()); + packet.writeD(CUR_HP); + packet.writeD((int) _actor.getCurrentHp()); + packet.writeD(MAX_HP); + packet.writeD(_actor.getMaxHp()); + packet.writeD(CUR_MP); + packet.writeD((int) _actor.getCurrentMp()); + packet.writeD(MAX_MP); + packet.writeD(_actor.getMaxMp()); + packet.writeD(SP); + packet.writeD(_actor.getSp()); + packet.writeD(CUR_LOAD); + packet.writeD(_actor.getCurrentLoad()); + packet.writeD(MAX_LOAD); + packet.writeD(_actor.getMaxLoad()); - writeD(P_ATK); - writeD(_actor.getPAtk(null)); - writeD(ATK_SPD); - writeD(_actor.getPAtkSpd()); - writeD(P_DEF); - writeD(_actor.getPDef(null)); - writeD(EVASION); - writeD(_actor.getEvasionRate(null)); - writeD(ACCURACY); - writeD(_actor.getAccuracy()); - writeD(CRITICAL); - writeD(_actor.getCriticalHit(null, null)); - writeD(M_ATK); - writeD(_actor.getMAtk(null, null)); + packet.writeD(P_ATK); + packet.writeD(_actor.getPAtk(null)); + packet.writeD(ATK_SPD); + packet.writeD(_actor.getPAtkSpd()); + packet.writeD(P_DEF); + packet.writeD(_actor.getPDef(null)); + packet.writeD(EVASION); + packet.writeD(_actor.getEvasionRate(null)); + packet.writeD(ACCURACY); + packet.writeD(_actor.getAccuracy()); + packet.writeD(CRITICAL); + packet.writeD(_actor.getCriticalHit(null, null)); + packet.writeD(M_ATK); + packet.writeD(_actor.getMAtk(null, null)); - writeD(CAST_SPD); - writeD(_actor.getMAtkSpd()); - writeD(M_DEF); - writeD(_actor.getMDef(null, null)); - writeD(PVP_FLAG); - writeD(_actor.getPvpFlag()); - writeD(KARMA); - writeD(_actor.getKarma()); - writeD(CUR_CP); - writeD((int) _actor.getCurrentCp()); - writeD(MAX_CP); - writeD(_actor.getMaxCp()); + packet.writeD(CAST_SPD); + packet.writeD(_actor.getMAtkSpd()); + packet.writeD(M_DEF); + packet.writeD(_actor.getMDef(null, null)); + packet.writeD(PVP_FLAG); + packet.writeD(_actor.getPvpFlag()); + packet.writeD(KARMA); + packet.writeD(_actor.getKarma()); + packet.writeD(CUR_CP); + packet.writeD((int) _actor.getCurrentCp()); + packet.writeD(MAX_CP); + packet.writeD(_actor.getMaxCp()); } else { - writeD(_objectId); - writeD(_attributes.size()); + packet.writeD(_objectId); + packet.writeD(_attributes.size()); for (int i = 0; i < _attributes.size(); i++) { final Attribute temp = _attributes.get(i); - writeD(temp.id); - writeD(temp.value); + packet.writeD(temp.id); + packet.writeD(temp.value); } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopMove.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopMove.java index 8f48075757..4f41ac021b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopMove.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopMove.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format ddddd sample 0000: 59 1a 95 20 48 44 17 02 00 03 f0 fc ff 98 f1 ff Y.. HD.......... 0010: ff c1 1a 00 00 ..... * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class StopMove extends GameServerPacket +public class StopMove implements IClientOutgoingPacket { private final int _objectId; private final int _x; @@ -52,13 +54,14 @@ public class StopMove extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x47); - writeD(_objectId); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); + OutgoingPackets.STOP_MOVE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopMoveInVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopMoveInVehicle.java index 1473966b0e..f47fc3486c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopMoveInVehicle.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopMoveInVehicle.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class StopMoveInVehicle extends GameServerPacket +public class StopMoveInVehicle implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _boatId; @@ -36,19 +38,16 @@ public class StopMoveInVehicle extends GameServerPacket _boatId = boatid; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x72); - writeD(_player.getObjectId()); - writeD(_boatId); - writeD(_player.getBoatPosition().getX()); - writeD(_player.getBoatPosition().getY()); - writeD(_player.getBoatPosition().getZ()); - writeD(_player.getPosition().getHeading()); + OutgoingPackets.STOP_MOVE_IN_VEHICLE.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_boatId); + packet.writeD(_player.getBoatPosition().getX()); + packet.writeD(_player.getBoatPosition().getY()); + packet.writeD(_player.getBoatPosition().getZ()); + packet.writeD(_player.getPosition().getHeading()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopPledgeWar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopPledgeWar.java index baaed1bfba..99d8a76b25 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopPledgeWar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopPledgeWar.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class StopPledgeWar extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class StopPledgeWar implements IClientOutgoingPacket { private final String _pledgeName; private final String _playerName; @@ -28,10 +31,11 @@ public class StopPledgeWar extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x67); - writeS(_pledgeName); - writeS(_playerName); + OutgoingPackets.STOP_PLEDGE_WAR.writeId(packet); + packet.writeS(_pledgeName); + packet.writeS(_playerName); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopRotation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopRotation.java index 82e27407cf..3e3a06cbc0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopRotation.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/StopRotation.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class StopRotation extends GameServerPacket +public class StopRotation implements IClientOutgoingPacket { private final int _objectId; private final int _degree; @@ -35,12 +37,13 @@ public class StopRotation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x63); - writeD(_objectId); - writeD(_degree); - writeD(_speed); - writeC(0); // ? + OutgoingPackets.STOP_ROTATION.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_degree); + packet.writeD(_speed); + packet.writeC(0); // ? + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SunRise.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SunRise.java index 927ba57f2d..181cf2fa5a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SunRise.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SunRise.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class SunRise extends GameServerPacket +public class SunRise implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x1c); + OutgoingPackets.SUN_RISE.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SunSet.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SunSet.java index de7f7dee94..5c1a238533 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SunSet.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SunSet.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class SunSet extends GameServerPacket +public class SunSet implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x1d); + OutgoingPackets.SUN_SET.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SurrenderPledgeWar.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SurrenderPledgeWar.java index 1801826259..6cb6d7f2e1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SurrenderPledgeWar.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SurrenderPledgeWar.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class SurrenderPledgeWar extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class SurrenderPledgeWar implements IClientOutgoingPacket { private final String _pledgeName; private final String _playerName; @@ -28,10 +31,11 @@ public class SurrenderPledgeWar extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x69); - writeS(_pledgeName); - writeS(_playerName); + OutgoingPackets.SURRENDER_PLEDGE_WAR.writeId(packet); + packet.writeS(_pledgeName); + packet.writeS(_playerName); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SystemMessage.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SystemMessage.java index 229cbaed6f..9481217acc 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SystemMessage.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/SystemMessage.java @@ -19,10 +19,12 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.SystemMessageId; -public class SystemMessage extends GameServerPacket +public class SystemMessage implements IClientOutgoingPacket { // Packets d d (d S/d d/d dd) -> 0 - String 1-number 2-textref npcname (1000000-1002655) 3-textref itemname 4-textref skills 5-?? private static final int TYPE_ZONE_NAME = 7; @@ -117,23 +119,23 @@ public class SystemMessage extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x64); + OutgoingPackets.SYSTEM_MESSAGE.writeId(packet); - writeD(_messageId); - writeD(_types.size()); + packet.writeD(_messageId); + packet.writeD(_types.size()); for (int i = 0; i < _types.size(); i++) { final int t = _types.get(i).intValue(); - writeD(t); + packet.writeD(t); switch (t) { case TYPE_TEXT: { - writeS((String) _values.get(i)); + packet.writeS((String) _values.get(i)); break; } case TYPE_NUMBER: @@ -141,14 +143,14 @@ public class SystemMessage extends GameServerPacket case TYPE_ITEM_NAME: { final int t1 = ((Integer) _values.get(i)).intValue(); - writeD(t1); + packet.writeD(t1); break; } case TYPE_SKILL_NAME: { final int t1 = ((Integer) _values.get(i)).intValue(); - writeD(t1); // Skill Id - writeD(_skillLevel); // Skill lvl + packet.writeD(t1); // Skill Id + packet.writeD(_skillLevel); // Skill lvl break; } case TYPE_ZONE_NAME: @@ -156,13 +158,14 @@ public class SystemMessage extends GameServerPacket final int t1 = ((int[]) _values.get(i))[0]; final int t2 = ((int[]) _values.get(i))[1]; final int t3 = ((int[]) _values.get(i))[2]; - writeD(t1); - writeD(t2); - writeD(t3); + packet.writeD(t1); + packet.writeD(t2); + packet.writeD(t3); break; } } } + return true; } public int getMessageID() diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TargetSelected.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TargetSelected.java index 7880ace438..e2914fe218 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TargetSelected.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TargetSelected.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * format ddddd sample 0000: 39 0b 07 10 48 3e 31 10 48 3a f6 00 00 91 5b 00 9...H>1.H:....[. 0010: 00 4c f1 ff ff .L... * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class TargetSelected extends GameServerPacket +public class TargetSelected implements IClientOutgoingPacket { private final int _objectId; private final int _targetObjId; @@ -45,13 +48,14 @@ public class TargetSelected extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x29); - writeD(_objectId); - writeD(_targetObjId); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.TARGET_SELECTED.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_targetObjId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TargetUnselected.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TargetUnselected.java index 69e13a5e01..839a551a93 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TargetUnselected.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TargetUnselected.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format dddd sample 0000: 3a 69 08 10 48 02 c1 00 00 f7 56 00 00 89 ea ff :i..H.....V..... 0010: ff 0c b2 d8 61 ....a * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class TargetUnselected extends GameServerPacket +public class TargetUnselected implements IClientOutgoingPacket { private final int _targetObjId; private final int _x; @@ -41,13 +43,14 @@ public class TargetUnselected extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2a); - writeD(_targetObjId); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.TARGET_UNSELECTED.writeId(packet); + packet.writeD(_targetObjId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); // writeD(_target.getTargetId()); //?? probably not used in client + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TeleportToLocation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TeleportToLocation.java index 87f54fcb89..5e31d80225 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TeleportToLocation.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TeleportToLocation.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class TeleportToLocation extends GameServerPacket +public class TeleportToLocation implements IClientOutgoingPacket { private final int _targetObjId; private final int _x; @@ -36,14 +38,15 @@ public class TeleportToLocation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x28); - writeD(_targetObjId); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(0x00); // Fade 0, Instant 1. - writeD(_heading); + OutgoingPackets.TELEPORT_TO_LOCATION.writeId(packet); + packet.writeD(_targetObjId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(0x00); // Fade 0, Instant 1. + packet.writeD(_heading); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TitleUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TitleUpdate.java index bc1f710ba1..2b6e830a06 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TitleUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TitleUpdate.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class TitleUpdate extends GameServerPacket +public class TitleUpdate implements IClientOutgoingPacket { private final String _title; private final int _objectId; @@ -29,14 +31,12 @@ public class TitleUpdate extends GameServerPacket _title = player.getTitle(); } - /** - * @see org.l2jmobius.gameserver.network.serverpackets.GameServerPacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xcc); - writeD(_objectId); - writeS(_title); + OutgoingPackets.TITLE_UPDATE.writeId(packet); + packet.writeD(_objectId); + packet.writeS(_title); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeOtherAdd.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeOtherAdd.java index 781bceb9b4..1235f0fb56 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeOtherAdd.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeOtherAdd.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Yme * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class TradeOtherAdd extends GameServerPacket +public class TradeOtherAdd implements IClientOutgoingPacket { private final TradeList.TradeItem _item; @@ -32,22 +34,23 @@ public class TradeOtherAdd extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x21); + OutgoingPackets.TRADE_OTHER_ADD.writeId(packet); - writeH(1); // item count + packet.writeH(1); // item count - writeH(_item.getItem().getType1()); // item type1 - writeD(_item.getObjectId()); - writeD(_item.getItem().getItemId()); - writeD(_item.getCount()); - writeH(_item.getItem().getType2()); // item type2 - writeH(0x00); // ? + packet.writeH(_item.getItem().getType1()); // item type1 + packet.writeD(_item.getObjectId()); + packet.writeD(_item.getItem().getItemId()); + packet.writeD(_item.getCount()); + packet.writeH(_item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? - writeD(_item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(_item.getEnchant()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(_item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(_item.getEnchant()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeOwnAdd.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeOwnAdd.java index cfcfb96065..4b586ebfe6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeOwnAdd.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeOwnAdd.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Yme * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class TradeOwnAdd extends GameServerPacket +public class TradeOwnAdd implements IClientOutgoingPacket { private final TradeList.TradeItem _item; @@ -32,22 +34,23 @@ public class TradeOwnAdd extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x20); + OutgoingPackets.TRADE_OWN_ADD.writeId(packet); - writeH(1); // item count + packet.writeH(1); // item count - writeH(_item.getItem().getType1()); // item type1 - writeD(_item.getObjectId()); - writeD(_item.getItem().getItemId()); - writeD(_item.getCount()); - writeH(_item.getItem().getType2()); // item type2 - writeH(0x00); // ? + packet.writeH(_item.getItem().getType1()); // item type1 + packet.writeD(_item.getObjectId()); + packet.writeD(_item.getItem().getItemId()); + packet.writeD(_item.getCount()); + packet.writeH(_item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? - writeD(_item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(_item.getEnchant()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(_item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(_item.getEnchant()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOtherOk.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOtherOk.java index 0ed0a5605f..833d3b0a98 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOtherOk.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOtherOk.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Beetle */ -public class TradePressOtherOk extends GameServerPacket +public class TradePressOtherOk implements IClientOutgoingPacket { public static final TradePressOtherOk STATIC_PACKET = new TradePressOtherOk(); @@ -28,8 +31,9 @@ public class TradePressOtherOk extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x7c); + OutgoingPackets.TRADE_PRESS_OTHER_OK.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOwnOk.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOwnOk.java index 94314ad292..07ac0aa0cb 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOwnOk.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOwnOk.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Beetle */ -public class TradePressOwnOk extends GameServerPacket +public class TradePressOwnOk implements IClientOutgoingPacket { public static final TradePressOwnOk STATIC_PACKET = new TradePressOwnOk(); @@ -28,8 +31,9 @@ public class TradePressOwnOk extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x75); + OutgoingPackets.TRADE_PRESS_OWN_OK.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeStart.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeStart.java index 4c5af56fc3..63b05ed971 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeStart.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeStart.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class TradeStart extends GameServerPacket +public class TradeStart implements IClientOutgoingPacket { private final PlayerInstance _player; private final ItemInstance[] _itemList; @@ -34,30 +36,32 @@ public class TradeStart extends GameServerPacket } @Override - protected final void writeImpl() - {// 0x2e TradeStart d h (h dddhh dhhh) + public boolean write(PacketWriter packet) + { + // 0x2e TradeStart d h (h dddhh dhhh) if ((_player.getActiveTradeList() == null) || (_player.getActiveTradeList().getPartner() == null)) { - return; + return false; } - writeC(0x1E); - writeD(_player.getActiveTradeList().getPartner().getObjectId()); + OutgoingPackets.TRADE_START.writeId(packet); + packet.writeD(_player.getActiveTradeList().getPartner().getObjectId()); // writeD((_activeChar != null || _activeChar.getTransactionRequester() != null)? _activeChar.getTransactionRequester().getObjectId() : 0); - writeH(_itemList.length); + packet.writeH(_itemList.length); for (ItemInstance item : _itemList)// int i = 0; i < count; i++) { - writeH(item.getItem().getType1()); // item type1 - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); // item type2 - writeH(0x00); // ? + packet.writeH(item.getItem().getType1()); // item type1 + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? - writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(item.getEnchantLevel()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getEnchantLevel()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeUpdate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeUpdate.java index dc6bc7f0e8..262a0c3fc9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeUpdate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TradeUpdate.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.TradeList.TradeItem; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Beetle */ -public class TradeUpdate extends GameServerPacket +public class TradeUpdate implements IClientOutgoingPacket { private final ItemInstance[] _items; private final TradeItem[] _tradeItems; @@ -48,11 +50,11 @@ public class TradeUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x74); + OutgoingPackets.TRADE_UPDATE.writeId(packet); - writeH(_tradeItems.length); + packet.writeH(_tradeItems.length); for (TradeItem item : _tradeItems) { int aveCount = getItemCount(item.getObjectId()) - item.getCount(); @@ -62,17 +64,18 @@ public class TradeUpdate extends GameServerPacket aveCount = 1; stackable = false; } - writeH(stackable ? 3 : 2); - writeH(item.getItem().getType1()); // item type1 - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(aveCount); - writeH(item.getItem().getType2()); // item type2 - writeH(0x00); // ? - writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(item.getEnchant()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeH(stackable ? 3 : 2); + packet.writeH(item.getItem().getType1()); // item type1 + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(aveCount); + packet.writeH(item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? + packet.writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getEnchant()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialCloseHtml.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialCloseHtml.java index d6b69fe32a..c39eb0e606 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialCloseHtml.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialCloseHtml.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class TutorialCloseHtml extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class TutorialCloseHtml implements IClientOutgoingPacket { public static final TutorialCloseHtml STATIC_PACKET = new TutorialCloseHtml(); @@ -25,8 +28,9 @@ public class TutorialCloseHtml extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa3); + OutgoingPackets.TUTORIAL_CLOSE_HTML.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialEnableClientEvent.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialEnableClientEvent.java index d7050a4d6a..728020c0b1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialEnableClientEvent.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialEnableClientEvent.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class TutorialEnableClientEvent extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class TutorialEnableClientEvent implements IClientOutgoingPacket { private int _eventId = 0; @@ -26,9 +29,10 @@ public class TutorialEnableClientEvent extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa2); - writeD(_eventId); + OutgoingPackets.TUTORIAL_ENABLE_CLIENT_EVENT.writeId(packet); + packet.writeD(_eventId); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowHtml.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowHtml.java index 08ef872d30..396bbd7779 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowHtml.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowHtml.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class TutorialShowHtml extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class TutorialShowHtml implements IClientOutgoingPacket { private final String _html; @@ -25,14 +28,11 @@ public class TutorialShowHtml extends GameServerPacket _html = html; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa0); - writeS(_html); + OutgoingPackets.TUTORIAL_SHOW_HTML.writeId(packet); + packet.writeS(_html); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java index f7daeb4139..8745e5cd27 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class TutorialShowQuestionMark extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class TutorialShowQuestionMark implements IClientOutgoingPacket { private final int _blink; @@ -25,14 +28,11 @@ public class TutorialShowQuestionMark extends GameServerPacket _blink = blink; // this influences the blinking frequancy :S } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa1); - writeD(_blink); + OutgoingPackets.TUTORIAL_SHOW_QUESTION_MARK.writeId(packet); + packet.writeD(_blink); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/UserInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/UserInfo.java index bdd7632551..66b71e9c6a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/UserInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/UserInfo.java @@ -17,11 +17,13 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class UserInfo extends GameServerPacket +public class UserInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Inventory _inventory; @@ -53,199 +55,200 @@ public class UserInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x04); + OutgoingPackets.USER_INFO.writeId(packet); - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); - writeD(_player.getBoat() != null ? _player.getBoat().getObjectId() : 0); + packet.writeD(_player.getX()); + packet.writeD(_player.getY()); + packet.writeD(_player.getZ()); + packet.writeD(_player.getBoat() != null ? _player.getBoat().getObjectId() : 0); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getRace().ordinal()); - writeD(_player.getAppearance().isFemale() ? 1 : 0); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getRace().ordinal()); + packet.writeD(_player.getAppearance().isFemale() ? 1 : 0); if (_player.getClassIndex() == 0) { - writeD(_player.getClassId().getId()); + packet.writeD(_player.getClassId().getId()); } else { - writeD(_player.getBaseClass()); + packet.writeD(_player.getBaseClass()); } - writeD(_player.getLevel()); - writeQ(_player.getExp()); - writeD(_player.getSTR()); - writeD(_player.getDEX()); - writeD(_player.getCON()); - writeD(_player.getINT()); - writeD(_player.getWIT()); - writeD(_player.getMEN()); - writeD(_player.getMaxHp()); - writeD((int) _player.getCurrentHp()); - writeD(_player.getMaxMp()); - writeD((int) _player.getCurrentMp()); - writeD(_player.getSp()); - writeD(_player.getCurrentLoad()); - writeD(_player.getMaxLoad()); + packet.writeD(_player.getLevel()); + packet.writeD((int) _player.getExp()); + packet.writeD(_player.getSTR()); + packet.writeD(_player.getDEX()); + packet.writeD(_player.getCON()); + packet.writeD(_player.getINT()); + packet.writeD(_player.getWIT()); + packet.writeD(_player.getMEN()); + packet.writeD(_player.getMaxHp()); + packet.writeD((int) _player.getCurrentHp()); + packet.writeD(_player.getMaxMp()); + packet.writeD((int) _player.getCurrentMp()); + packet.writeD(_player.getSp()); + packet.writeD(_player.getCurrentLoad()); + packet.writeD(_player.getMaxLoad()); - writeD(_player.getActiveWeaponItem() != null ? 40 : 20); // 20 no weapon, 40 weapon equipped + packet.writeD(_player.getActiveWeaponItem() != null ? 40 : 20); // 20 no weapon, 40 weapon equipped - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_UNDER)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_UNDER)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_UNDER)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_REAR)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_NECK)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_UNDER)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_REAR)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_NECK)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); - writeD(_player.getPAtk(null)); - writeD(_player.getPAtkSpd()); - writeD(_player.getPDef(null)); - writeD(_player.getEvasionRate(null)); - writeD(_player.getAccuracy()); - writeD(_player.getCriticalHit(null, null)); - writeD(_player.getMAtk(null, null)); + packet.writeD(_player.getPAtk(null)); + packet.writeD(_player.getPAtkSpd()); + packet.writeD(_player.getPDef(null)); + packet.writeD(_player.getEvasionRate(null)); + packet.writeD(_player.getAccuracy()); + packet.writeD(_player.getCriticalHit(null, null)); + packet.writeD(_player.getMAtk(null, null)); - writeD(_player.getMAtkSpd()); - writeD(_player.getPAtkSpd()); + packet.writeD(_player.getMAtkSpd()); + packet.writeD(_player.getPAtkSpd()); - writeD(_player.getMDef(null, null)); + packet.writeD(_player.getMDef(null, null)); - writeD(_player.getPvpFlag()); // 0-non-pvp 1-pvp = violett name - writeD(_player.getKarma()); + packet.writeD(_player.getPvpFlag()); // 0-non-pvp 1-pvp = violett name + packet.writeD(_player.getKarma()); - writeD(_runSpd); // base run speed - writeD(_walkSpd); // base walk speed - writeD(_runSpd); // swim run speed (calculated by getter) - writeD(_walkSpd); // swim walk speed (calculated by getter) - writeD(0); - writeD(0); - writeD(_flyRunSpd); - writeD(_flyWalkSpd); - writeF(_player.getMovementSpeedMultiplier()); // run speed multiplier - writeF(_player.getAttackSpeedMultiplier()); // attack speed multiplier - writeF(_player.getCollisionRadius()); - writeF(_player.getCollisionHeight()); - writeD(_player.getAppearance().getHairStyle()); - writeD(_player.getAppearance().getHairColor()); - writeD(_player.getAppearance().getFace()); - writeD(_player.isGM() ? 1 : 0); // builder level + packet.writeD(_runSpd); // base run speed + packet.writeD(_walkSpd); // base walk speed + packet.writeD(_runSpd); // swim run speed (calculated by getter) + packet.writeD(_walkSpd); // swim walk speed (calculated by getter) + packet.writeD(0); + packet.writeD(0); + packet.writeD(_flyRunSpd); + packet.writeD(_flyWalkSpd); + packet.writeF(_player.getMovementSpeedMultiplier()); // run speed multiplier + packet.writeF(_player.getAttackSpeedMultiplier()); // attack speed multiplier + packet.writeF(_player.getCollisionRadius()); + packet.writeF(_player.getCollisionHeight()); + packet.writeD(_player.getAppearance().getHairStyle()); + packet.writeD(_player.getAppearance().getHairColor()); + packet.writeD(_player.getAppearance().getFace()); + packet.writeD(_player.isGM() ? 1 : 0); // builder level String title = _player.getTitle(); if (_player.getAppearance().isInvisible() && _player.isGM()) { title = "[Invisible]"; } - writeS(title); + packet.writeS(title); - writeD(_player.getClanId()); - writeD(_player.getClanCrestId()); - writeD(_player.getAllyId()); - writeD(_player.getAllyCrestId()); // ally crest id + packet.writeD(_player.getClanId()); + packet.writeD(_player.getClanCrestId()); + packet.writeD(_player.getAllyId()); + packet.writeD(_player.getAllyCrestId()); // ally crest id // 0x40 leader rights // siege flags: attacker - 0x180 sword over name, defender - 0x80 shield, 0xC0 crown (|leader), 0x1C0 flag (|leader) - writeD(_relation); - writeC(_player.getMountType()); // mount type - writeC(_player.getPrivateStoreType()); - writeC(_player.hasDwarvenCraft() ? 1 : 0); - writeD(_player.getPkKills()); - writeD(_player.getPvpKills()); + packet.writeD(_relation); + packet.writeC(_player.getMountType()); // mount type + packet.writeC(_player.getPrivateStoreType()); + packet.writeC(_player.hasDwarvenCraft() ? 1 : 0); + packet.writeD(_player.getPkKills()); + packet.writeD(_player.getPvpKills()); - writeH(_player.getCubics().size()); + packet.writeH(_player.getCubics().size()); for (int cubicId : _player.getCubics().keySet()) { - writeH(cubicId); + packet.writeH(cubicId); } - writeC(_player.isInPartyMatchRoom() ? 1 : 0); + packet.writeC(_player.isInPartyMatchRoom() ? 1 : 0); if (_player.getAppearance().isInvisible()) { - writeD((_player.getAbnormalEffect() | Creature.ABNORMAL_EFFECT_STEALTH)); + packet.writeD((_player.getAbnormalEffect() | Creature.ABNORMAL_EFFECT_STEALTH)); } else { - writeD(_player.getAbnormalEffect()); // C2 + packet.writeD(_player.getAbnormalEffect()); // C2 } - writeC(0x00); + packet.writeC(0x00); - writeD(_player.getClanPrivileges()); + packet.writeD(_player.getClanPrivileges()); // C4 addition - writeD(0x00); // swim? - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); + packet.writeD(0x00); // swim? + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); // C4 addition end - writeH(_player.getRecomLeft()); // c2 recommendations remaining - writeH(_player.getRecomHave()); // c2 recommendations received - writeD(0x00); // _player.getMountNpcId() > 0 ? _player.getMountNpcId() + 1000000 : 0 - writeH(_player.getInventoryLimit()); + packet.writeH(_player.getRecomLeft()); // c2 recommendations remaining + packet.writeH(_player.getRecomHave()); // c2 recommendations received + packet.writeD(0x00); // _player.getMountNpcId() > 0 ? _player.getMountNpcId() + 1000000 : 0 + packet.writeH(_player.getInventoryLimit()); - writeD(_player.getClassId().getId()); - writeD(0x00); // special effects? circles around player... - writeD(_player.getMaxCp()); - writeD((int) _player.getCurrentCp()); - writeC(_player.isMounted() ? 0 : _player.getEnchantEffect()); + packet.writeD(_player.getClassId().getId()); + packet.writeD(0x00); // special effects? circles around player... + packet.writeD(_player.getMaxCp()); + packet.writeD((int) _player.getCurrentCp()); + packet.writeC(_player.isMounted() ? 0 : _player.getEnchantEffect()); if (_player.getTeam() == 1) { - writeC(0x01); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x01); // team circle around feet 1= Blue, 2 = red } else if (_player.getTeam() == 2) { - writeC(0x02); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x02); // team circle around feet 1= Blue, 2 = red } else { - writeC(0x00); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x00); // team circle around feet 1= Blue, 2 = red } - writeD(_player.getClanCrestLargeId()); - writeC(_player.isNoble() ? 1 : 0); // 0x01: symbol on char menu ctrl+I - writeC((_player.isHero() || (_player.isGM() && Config.GM_HERO_AURA) || _player.isPVPHero()) ? 1 : 0); // 0x01: Hero Aura + packet.writeD(_player.getClanCrestLargeId()); + packet.writeC(_player.isNoble() ? 1 : 0); // 0x01: symbol on char menu ctrl+I + packet.writeC((_player.isHero() || (_player.isGM() && Config.GM_HERO_AURA) || _player.isPVPHero()) ? 1 : 0); // 0x01: Hero Aura - writeC(_player.isFishing() ? 1 : 0); // Fishing Mode - writeD(_player.getFishX()); // fishing x - writeD(_player.getFishY()); // fishing y - writeD(_player.getFishZ()); // fishing z - writeD(_player.getAppearance().getNameColor()); + packet.writeC(_player.isFishing() ? 1 : 0); // Fishing Mode + packet.writeD(_player.getFishX()); // fishing x + packet.writeD(_player.getFishY()); // fishing y + packet.writeD(_player.getFishZ()); // fishing z + packet.writeD(_player.getAppearance().getNameColor()); // Add heading? + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocation.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocation.java index b1075f8646..7b3c4154db 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocation.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocation.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class ValidateLocation extends GameServerPacket +public class ValidateLocation implements IClientOutgoingPacket { private final int _objectId; private final int _x; @@ -36,14 +38,15 @@ public class ValidateLocation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x61); + OutgoingPackets.VALIDATE_LOCATION.writeId(packet); - writeD(_objectId); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); + packet.writeD(_objectId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocationInVehicle.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocationInVehicle.java index d28993cdba..efa7f29cc0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocationInVehicle.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocationInVehicle.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class ValidateLocationInVehicle extends GameServerPacket +public class ValidateLocationInVehicle implements IClientOutgoingPacket { private int _boat = 1343225858; private final int _x; @@ -39,14 +41,15 @@ public class ValidateLocationInVehicle extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x73); - writeD(_playerObj); - writeD(_boat); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); + OutgoingPackets.VALIDATE_LOCATION_IN_VEHICLE.writeId(packet); + packet.writeD(_playerObj); + packet.writeD(_boat); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/VehicleDeparture.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/VehicleDeparture.java index 8dcb26feeb..54b4297156 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/VehicleDeparture.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/VehicleDeparture.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class VehicleDeparture extends GameServerPacket +public class VehicleDeparture implements IClientOutgoingPacket { private final BoatInstance _boat; private final int _speed1; @@ -49,14 +51,15 @@ public class VehicleDeparture extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5a); - writeD(_boat.getObjectId()); - writeD(_speed1); - writeD(_speed2); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.VEHICLE_DEPARTURE.writeId(packet); + packet.writeD(_boat.getObjectId()); + packet.writeD(_speed1); + packet.writeD(_speed2); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/VehicleInfo.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/VehicleInfo.java index 9fca1f48b6..51d7099470 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/VehicleInfo.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/VehicleInfo.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class VehicleInfo extends GameServerPacket +public class VehicleInfo implements IClientOutgoingPacket { private final BoatInstance _boat; @@ -34,13 +36,14 @@ public class VehicleInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x59); - writeD(_boat.getObjectId()); - writeD(_boat.getX()); - writeD(_boat.getY()); - writeD(_boat.getZ()); - writeD(_boat.getPosition().getHeading()); + OutgoingPackets.VEHICLE_INFO.writeId(packet); + packet.writeD(_boat.getObjectId()); + packet.writeD(_boat.getX()); + packet.writeD(_boat.getY()); + packet.writeD(_boat.getZ()); + packet.writeD(_boat.getPosition().getHeading()); + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseDepositList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseDepositList.java index 9c5be31fe7..8328acc382 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseDepositList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseDepositList.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 0x53 WareHouseDepositList dh (h dddhh dhhh d) * @version $Revision: 1.4.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class WareHouseDepositList extends GameServerPacket +public class WareHouseDepositList implements IClientOutgoingPacket { public static final int PRIVATE = 1; public static final int CLAN = 2; @@ -63,29 +65,30 @@ public class WareHouseDepositList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x41); + OutgoingPackets.WARE_HOUSE_DEPOSIT_LIST.writeId(packet); /* * 0x01-Private Warehouse 0x02-Clan Warehouse 0x03-Castle Warehouse 0x04-Warehouse */ - writeH(_whType); - writeD(_playerAdena); - writeH(_items.size()); + packet.writeH(_whType); + packet.writeD(_playerAdena); + packet.writeH(_items.size()); for (ItemInstance item : _items) { - writeH(item.getItem().getType1()); // item type1 //unconfirmed, works - writeD(item.getObjectId()); // unconfirmed, works - writeD(item.getItemId()); // unconfirmed, works - writeD(item.getCount()); // unconfirmed, works - writeH(item.getItem().getType2()); // item type2 //unconfirmed, works - writeH(0x00); // ? 100 - writeD(item.getItem().getBodyPart()); // ? - writeH(item.getEnchantLevel()); // enchant level -confirmed - writeH(0x00); // ? 300 - writeH(0x00); // ? 200 - writeD(item.getObjectId()); // item id - confirmed + packet.writeH(item.getItem().getType1()); // item type1 //unconfirmed, works + packet.writeD(item.getObjectId()); // unconfirmed, works + packet.writeD(item.getItemId()); // unconfirmed, works + packet.writeD(item.getCount()); // unconfirmed, works + packet.writeH(item.getItem().getType2()); // item type2 //unconfirmed, works + packet.writeH(0x00); // ? 100 + packet.writeD(item.getItem().getBodyPart()); // ? + packet.writeH(item.getEnchantLevel()); // enchant level -confirmed + packet.writeH(0x00); // ? 300 + packet.writeH(0x00); // ? 200 + packet.writeD(item.getObjectId()); // item id - confimed } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseWithdrawalList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseWithdrawalList.java index 1b96da6d01..9bf74a67d9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseWithdrawalList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseWithdrawalList.java @@ -18,14 +18,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 0x42 WarehouseWithdrawalList dh (h dddhh dhhh d) * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/29 23:15:10 $ */ -public class WareHouseWithdrawalList extends GameServerPacket +public class WareHouseWithdrawalList implements IClientOutgoingPacket { private static final Logger LOGGER = Logger.getLogger(WareHouseWithdrawalList.class.getName()); @@ -54,29 +56,30 @@ public class WareHouseWithdrawalList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x42); + OutgoingPackets.WARE_HOUSE_WITHDRAWAL_LIST.writeId(packet); /* * 0x01-Private Warehouse 0x02-Clan Warehouse 0x03-Castle Warehouse 0x04-Warehouse */ - writeH(_whType); - writeD(_playerAdena); - writeH(_items.length); + packet.writeH(_whType); + packet.writeD(_playerAdena); + packet.writeH(_items.length); for (ItemInstance item : _items) { - writeH(item.getItem().getType1()); // item type1 //unconfirmed, works - writeD(0x00); // unconfirmed, works - writeD(item.getItemId()); // unconfirmed, works - writeD(item.getCount()); // unconfirmed, works - writeH(item.getItem().getType2()); // item type2 //unconfirmed, works - writeH(0x00); // ? - writeD(item.getItem().getBodyPart()); // ? - writeH(item.getEnchantLevel()); // enchant level -confirmed - writeH(0x00); // ? - writeH(0x00); // ? - writeD(item.getObjectId()); // item id - confimed + packet.writeH(item.getItem().getType1()); // item type1 //unconfirmed, works + packet.writeD(0x00); // unconfirmed, works + packet.writeD(item.getItemId()); // unconfirmed, works + packet.writeD(item.getCount()); // unconfirmed, works + packet.writeH(item.getItem().getType2()); // item type2 //unconfirmed, works + packet.writeH(0x00); // ? + packet.writeD(item.getItem().getBodyPart()); // ? + packet.writeH(item.getEnchantLevel()); // enchant level -confirmed + packet.writeH(0x00); // ? + packet.writeH(0x00); // ? + packet.writeD(item.getObjectId()); // item id - confimed } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WearList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WearList.java index 9575a0804c..1894283ae6 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WearList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/WearList.java @@ -19,11 +19,13 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StoreTradeList; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class WearList extends GameServerPacket +public class WearList implements IClientOutgoingPacket { private final int _listId; private final ItemInstance[] _list; @@ -47,15 +49,15 @@ public class WearList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xef); - writeC(0xc0); // ? - writeC(0x13); // ? - writeC(0x00); // ? - writeC(0x00); // ? - writeD(_money); // current money - writeD(_listId); + OutgoingPackets.WEAR_LIST.writeId(packet); + packet.writeC(0xc0); // ? + packet.writeC(0x13); // ? + packet.writeC(0x00); // ? + packet.writeC(0x00); // ? + packet.writeD(_money); // current money + packet.writeD(_listId); int newlength = 0; for (ItemInstance item : _list) @@ -65,26 +67,27 @@ public class WearList extends GameServerPacket newlength++; } } - writeH(newlength); + packet.writeH(newlength); for (ItemInstance item : _list) { if ((item.getItem().getCrystalType() <= _expertise) && item.isEquipable()) { - writeD(item.getItemId()); - writeH(item.getItem().getType2()); // item type2 + packet.writeD(item.getItemId()); + packet.writeH(item.getItem().getType2()); // item type2 if (item.getItem().getType1() != Item.TYPE1_ITEM_QUESTITEM_ADENA) { - writeH(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand } else { - writeH(0x00); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(0x00); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand } - writeD(Config.WEAR_PRICE); + packet.writeD(Config.WEAR_PRICE); } } + return true; } } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java index 825577bab2..1b173b5c7f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java @@ -22,7 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.CharInfo; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.RelationChanged; public class Broadcast @@ -38,7 +38,7 @@ public class Broadcast * @param creature * @param mov */ - public static void toPlayersTargettingMyself(Creature creature, GameServerPacket mov) + public static void toPlayersTargettingMyself(Creature creature, IClientOutgoingPacket mov) { for (PlayerInstance player : creature.getKnownList().getKnownPlayers().values()) { @@ -62,7 +62,7 @@ public class Broadcast * @param creature * @param mov */ - public static void toKnownPlayers(Creature creature, GameServerPacket mov) + public static void toKnownPlayers(Creature creature, IClientOutgoingPacket mov) { for (PlayerInstance player : creature.getKnownList().getKnownPlayers().values()) { @@ -107,7 +107,7 @@ public class Broadcast * @param mov * @param radiusValue */ - public static void toKnownPlayersInRadius(Creature creature, GameServerPacket mov, int radiusValue) + public static void toKnownPlayersInRadius(Creature creature, IClientOutgoingPacket mov, int radiusValue) { int radius = radiusValue; if (radius < 0) @@ -139,7 +139,7 @@ public class Broadcast * @param creature * @param mov */ - public static void toSelfAndKnownPlayers(Creature creature, GameServerPacket mov) + public static void toSelfAndKnownPlayers(Creature creature, IClientOutgoingPacket mov) { if (creature instanceof PlayerInstance) { @@ -150,7 +150,7 @@ public class Broadcast } // To improve performance we are comparing values of radius^2 instead of calculating sqrt all the time - public static void toSelfAndKnownPlayersInRadius(Creature creature, GameServerPacket mov, long radiusSqValue) + public static void toSelfAndKnownPlayersInRadius(Creature creature, IClientOutgoingPacket mov, long radiusSqValue) { long radiusSq = radiusSqValue; if (radiusSq < 0) @@ -181,7 +181,7 @@ public class Broadcast * Caution: This method DOESN'T SEND Server->Client packet to this Creature (to do this use method toSelfAndKnownPlayers) * @param packet */ - public static void toAllOnlinePlayers(GameServerPacket packet) + public static void toAllOnlinePlayers(IClientOutgoingPacket packet) { for (PlayerInstance onlinePlayer : World.getInstance().getAllPlayers()) { @@ -200,7 +200,7 @@ public class Broadcast * @param zoneType : The zone type to send packets. * @param packets : The packets to send. */ - public static void toAllPlayersInZoneType(Class zoneType, GameServerPacket... packets) + public static void toAllPlayersInZoneType(Class zoneType, IClientOutgoingPacket... packets) { for (ZoneType zone : ZoneData.getInstance().getAllZones(zoneType)) { @@ -211,7 +211,7 @@ public class Broadcast continue; } - for (GameServerPacket packet : packets) + for (IClientOutgoingPacket packet : packets) { creature.sendPacket(packet); } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/FloodProtectorAction.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/FloodProtectorAction.java index ffa96dfe5a..e12568b976 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/FloodProtectorAction.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/FloodProtectorAction.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.util.StringUtil; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance.PunishLevel; +import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.GameClient; /** @@ -304,14 +305,16 @@ public class FloodProtectorAction { if (!client.isDetached()) { - address = client.getConnection().getInetAddress().getHostAddress(); + address = client.getConnectionAddress().getHostAddress(); } } catch (Exception e) { + // Ignore. } - switch (client.getState()) + final ConnectionState state = (ConnectionState) client.getConnectionState(); + switch (state) { case ENTERING: case IN_GAME: diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/log/formatter/AccountingFormatter.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/log/formatter/AccountingFormatter.java new file mode 100644 index 0000000000..2647110243 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/log/formatter/AccountingFormatter.java @@ -0,0 +1,117 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.log.formatter; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.logging.Formatter; +import java.util.logging.LogRecord; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.util.StringUtil; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.ConnectionState; +import org.l2jmobius.gameserver.network.GameClient; + +public class AccountingFormatter extends Formatter +{ + private final SimpleDateFormat dateFmt = new SimpleDateFormat("dd MMM H:mm:ss"); + + @Override + public String format(LogRecord record) + { + final Object[] params = record.getParameters(); + final StringBuilder output = StringUtil.startAppend(30 + record.getMessage().length() + (params == null ? 0 : params.length * 10), "[", dateFmt.format(new Date(record.getMillis())), "] ", record.getMessage()); + + if (params != null) + { + for (Object p : params) + { + if (p == null) + { + continue; + } + + StringUtil.append(output, ", "); + + if (p instanceof GameClient) + { + final GameClient client = (GameClient) p; + String address = null; + try + { + if (!client.isDetached()) + { + address = client.getConnectionAddress().getHostAddress(); + } + } + catch (Exception e) + { + // Ignore. + } + + switch ((ConnectionState) client.getConnectionState()) + { + case ENTERING: + case IN_GAME: + { + if (client.getPlayer() != null) + { + StringUtil.append(output, client.getPlayer().getName()); + StringUtil.append(output, "(", String.valueOf(client.getPlayer().getObjectId()), ") "); + } + break; + } + case AUTHENTICATED: + { + if (client.getAccountName() != null) + { + StringUtil.append(output, client.getAccountName(), " "); + } + break; + } + case CONNECTED: + { + if (address != null) + { + StringUtil.append(output, address); + } + break; + } + default: + { + throw new IllegalStateException("Missing state on switch"); + } + } + } + else if (p instanceof PlayerInstance) + { + final PlayerInstance player = (PlayerInstance) p; + StringUtil.append(output, player.getName()); + StringUtil.append(output, "(", String.valueOf(player.getObjectId()), ")"); + } + else + { + StringUtil.append(output, p.toString()); + } + } + } + + output.append(Config.EOL); + return output.toString(); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/log/handler/AccountingLogHandler.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/log/handler/AccountingLogHandler.java new file mode 100644 index 0000000000..ebde983750 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/log/handler/AccountingLogHandler.java @@ -0,0 +1,28 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.log.handler; + +import java.io.IOException; +import java.util.logging.FileHandler; + +public class AccountingLogHandler extends FileHandler +{ + public AccountingLogHandler() throws IOException + { + super(); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginClient.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginClient.java index 37e8384550..afecd1d249 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginClient.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginClient.java @@ -28,9 +28,9 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.crypt.NewCrypt; +import org.l2jmobius.commons.network.BaseRecievePacket; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.loginserver.LoginController.ScrambledKeyPair; -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; import org.l2jmobius.loginserver.network.serverpackets.Init; import org.l2jmobius.loginserver.network.serverpackets.ServerBasePacket; @@ -157,7 +157,7 @@ public class LoginClient extends Thread } // Execute client packet. - final ClientBasePacket packet = LoginPacketHandler.handlePacket(decrypt, this); + final BaseRecievePacket packet = LoginPacketHandler.handlePacket(decrypt, this); if (packet != null) { LoginServer.getInstance().execute(packet); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginPacketHandler.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginPacketHandler.java index 115eb12b86..e97c8fea57 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginPacketHandler.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginPacketHandler.java @@ -18,8 +18,8 @@ package org.l2jmobius.loginserver; import java.util.logging.Logger; +import org.l2jmobius.commons.network.BaseRecievePacket; import org.l2jmobius.loginserver.LoginClient.LoginClientState; -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; import org.l2jmobius.loginserver.network.clientpackets.RequestAuthGG; import org.l2jmobius.loginserver.network.clientpackets.RequestAuthLogin; import org.l2jmobius.loginserver.network.clientpackets.RequestServerList; @@ -33,10 +33,10 @@ public class LoginPacketHandler { private static final Logger LOGGER = Logger.getLogger(LoginPacketHandler.class.getName()); - public static ClientBasePacket handlePacket(byte[] data, LoginClient client) + public static BaseRecievePacket handlePacket(byte[] data, LoginClient client) { final int opcode = data[0] & 0xFF; - ClientBasePacket packet = null; + BaseRecievePacket packet = null; final LoginClientState state = client.getClientState(); switch (state) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginServer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginServer.java index 812db3d15e..ae666329ee 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginServer.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/LoginServer.java @@ -38,7 +38,7 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseBackup; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.enums.ServerMode; -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; +import org.l2jmobius.commons.network.BaseRecievePacket; import org.l2jmobius.loginserver.ui.Gui; import org.l2jmobius.telnet.TelnetStatusThread; @@ -282,7 +282,7 @@ public class LoginServer extends FloodProtectedListener public long lastConnection; } - public void execute(ClientBasePacket packet) + public void execute(BaseRecievePacket packet) { try { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthGG.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthGG.java index 5d1440a20c..564869e020 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthGG.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthGG.java @@ -16,12 +16,13 @@ */ package org.l2jmobius.loginserver.network.clientpackets; +import org.l2jmobius.commons.network.BaseRecievePacket; import org.l2jmobius.loginserver.LoginClient; import org.l2jmobius.loginserver.LoginClient.LoginClientState; import org.l2jmobius.loginserver.network.serverpackets.GGAuth; import org.l2jmobius.loginserver.network.serverpackets.LoginFail; -public class RequestAuthGG extends ClientBasePacket +public class RequestAuthGG extends BaseRecievePacket { private int _sessionId = 0; private final int _data1; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java index ba958f615b..0dc127268b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java @@ -23,6 +23,7 @@ import java.util.logging.Logger; import javax.crypto.Cipher; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.BaseRecievePacket; import org.l2jmobius.loginserver.GameServerTable; import org.l2jmobius.loginserver.GameServerThread; import org.l2jmobius.loginserver.LoginClient; @@ -36,7 +37,7 @@ import org.l2jmobius.loginserver.network.serverpackets.LoginOk; /** * Format: x 0 (a leading null) x: the rsa encrypted block with the login an password */ -public class RequestAuthLogin extends ClientBasePacket +public class RequestAuthLogin extends BaseRecievePacket { private final static Logger LOGGER = Logger.getLogger(RequestAuthLogin.class.getName()); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerList.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerList.java index 2b7d8a910e..bf72c462dd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerList.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerList.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.loginserver.network.clientpackets; +import org.l2jmobius.commons.network.BaseRecievePacket; import org.l2jmobius.loginserver.GameServerTable; import org.l2jmobius.loginserver.LoginClient; import org.l2jmobius.loginserver.network.serverpackets.LoginFail; @@ -23,7 +24,7 @@ import org.l2jmobius.loginserver.network.serverpackets.LoginFail; /** * Format: ddc d: fist part of session id d: second part of session id c: ? (session ID is sent in LoginOk packet and fixed to 0x55555555 0x44444444) */ -public class RequestServerList extends ClientBasePacket +public class RequestServerList extends BaseRecievePacket { private final int _key1; private final int _key2; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerLogin.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerLogin.java index d63a3e6c86..279866fb39 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerLogin.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerLogin.java @@ -19,6 +19,7 @@ package org.l2jmobius.loginserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.BaseRecievePacket; import org.l2jmobius.loginserver.GameServerTable; import org.l2jmobius.loginserver.LoginClient; import org.l2jmobius.loginserver.LoginController; @@ -30,7 +31,7 @@ import org.l2jmobius.loginserver.network.serverpackets.PlayOk; /** * Fromat is ddc d: first part of session id d: second part of session id c: server ID (session ID is sent in LoginOk packet and fixed to 0x55555555 0x44444444) */ -public class RequestServerLogin extends ClientBasePacket +public class RequestServerLogin extends BaseRecievePacket { private final static Logger LOGGER = Logger.getLogger(RequestServerLogin.class.getName()); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/BlowFishKey.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/BlowFishKey.java index 75335062b6..ce8c5130df 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/BlowFishKey.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/BlowFishKey.java @@ -22,10 +22,12 @@ import java.util.logging.Logger; import javax.crypto.Cipher; +import org.l2jmobius.commons.network.BaseSendablePacket; + /** * @author -Wooden- */ -public class BlowFishKey extends GameServerBasePacket +public class BlowFishKey extends BaseSendablePacket { byte[] _key; protected static final Logger LOGGER = Logger.getLogger(BlowFishKey.class.getName()); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/ChangeAccessLevel.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/ChangeAccessLevel.java index d295ecd780..3829720b42 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/ChangeAccessLevel.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/ChangeAccessLevel.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.loginserver.network.gameserverpackets; +import org.l2jmobius.commons.network.BaseSendablePacket; + /** * @author -Wooden- */ -public class ChangeAccessLevel extends GameServerBasePacket +public class ChangeAccessLevel extends BaseSendablePacket { private final int _level; private final String _account; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerAuth.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerAuth.java index b8920b5983..25266d412f 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerAuth.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerAuth.java @@ -18,11 +18,13 @@ package org.l2jmobius.loginserver.network.gameserverpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.BaseSendablePacket; + /** * Format: cccddb c desired ID c accept alternative ID c reserve Host s ExternalHostName s InetranlHostName d max players d hexid size b hexid * @author -Wooden- */ -public class GameServerAuth extends GameServerBasePacket +public class GameServerAuth extends BaseSendablePacket { protected static final Logger LOGGER = Logger.getLogger(GameServerAuth.class.getName()); private final byte[] _hexId; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerAuthRequest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerAuthRequest.java index 6bcb1a046f..a1abe5ec36 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerAuthRequest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerAuthRequest.java @@ -16,12 +16,13 @@ */ package org.l2jmobius.loginserver.network.gameserverpackets; +import org.l2jmobius.commons.network.BaseSendablePacket; import org.l2jmobius.loginserver.SessionKey; /** * @author -Wooden- */ -public class PlayerAuthRequest extends GameServerBasePacket +public class PlayerAuthRequest extends BaseSendablePacket { private final String _account; private final SessionKey _sessionKey; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerInGame.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerInGame.java index 04b7d879cf..a2106371fd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerInGame.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerInGame.java @@ -19,10 +19,12 @@ package org.l2jmobius.loginserver.network.gameserverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.BaseSendablePacket; + /** * @author -Wooden- */ -public class PlayerInGame extends GameServerBasePacket +public class PlayerInGame extends BaseSendablePacket { private final List _accounts; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerLogout.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerLogout.java index e0928500e6..f6e1d5600b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerLogout.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerLogout.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.loginserver.network.gameserverpackets; +import org.l2jmobius.commons.network.BaseSendablePacket; + /** * @author -Wooden- */ -public class PlayerLogout extends GameServerBasePacket +public class PlayerLogout extends BaseSendablePacket { private final String _account; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/ServerStatus.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/ServerStatus.java index fd1fa975c2..af1cbbdce1 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/ServerStatus.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/gameserverpackets/ServerStatus.java @@ -18,12 +18,13 @@ package org.l2jmobius.loginserver.network.gameserverpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.BaseSendablePacket; import org.l2jmobius.loginserver.GameServerTable; /** * @author -Wooden- */ -public class ServerStatus extends GameServerBasePacket +public class ServerStatus extends BaseSendablePacket { protected static final Logger LOGGER = Logger.getLogger(ServerStatus.class.getName()); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/KickPlayer.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/KickPlayer.java index 4ed5d3c5c8..a209056994 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/KickPlayer.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/KickPlayer.java @@ -29,10 +29,6 @@ public class KickPlayer extends ServerBasePacket writeS(account); } - /* - * (non-Javadoc) - * @see org.l2jmobius.loginserver.serverpackets.ServerBasePacket#getContent() - */ @Override public byte[] getContent() { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/LoginServerFail.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/LoginServerFail.java index 7ce9ed3b44..320a1d7fea 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/LoginServerFail.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/LoginServerFail.java @@ -23,6 +23,14 @@ import org.l2jmobius.loginserver.network.serverpackets.ServerBasePacket; */ public class LoginServerFail extends ServerBasePacket { + public static final int REASON_IP_BANNED = 1; + public static final int REASON_IP_RESERVED = 2; + public static final int REASON_WRONG_HEXID = 3; + public static final int REASON_ID_RESERVED = 4; + public static final int REASON_NO_FREE_ID = 5; + public static final int NOT_AUTHED = 6; + public static final int REASON_ALREADY_LOGGED8IN = 7; + /** * @param reason */ @@ -37,12 +45,4 @@ public class LoginServerFail extends ServerBasePacket { return getBytes(); } - - public static final int REASON_IP_BANNED = 1; - public static final int REASON_IP_RESERVED = 2; - public static final int REASON_WRONG_HEXID = 3; - public static final int REASON_ID_RESERVED = 4; - public static final int REASON_NO_FREE_ID = 5; - public static final int NOT_AUTHED = 6; - public static final int REASON_ALREADY_LOGGED8IN = 7; } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/PlayerAuthResponse.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/PlayerAuthResponse.java index 272b86c0fe..ae0be911e9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/PlayerAuthResponse.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/loginserver/network/loginserverpackets/PlayerAuthResponse.java @@ -30,10 +30,6 @@ public class PlayerAuthResponse extends ServerBasePacket writeC(response ? 1 : 0); } - /* - * (non-Javadoc) - * @see org.l2jmobius.loginserver.serverpackets.ServerBasePacket#getContent() - */ @Override public byte[] getContent() { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/telnet/GameStatusThread.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/telnet/GameStatusThread.java index bc8d9c2a86..539ad5e065 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/telnet/GameStatusThread.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/telnet/GameStatusThread.java @@ -77,11 +77,9 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.CharInfo; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.taskmanager.DecayTaskManager; import org.l2jmobius.gameserver.util.GMAudit; @@ -877,9 +875,7 @@ public class GameStatusThread extends Thread final InventoryUpdate iu = new InventoryUpdate(); iu.addModifiedItem(itemInstance); player.sendPacket(iu); - player.broadcastPacket(new CharInfo(player)); - player.sendPacket(new UserInfo(player)); - // player.broadcastPacket(new ExBrExtraUserInfo(player)); + player.broadcastUserInfo(); // informations player.sendMessage("Changed enchantment of " + player.getName() + "'s " + itemInstance.getItem().getName() + " from " + curEnchant + " to " + ench + "."); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/readme.txt b/L2J_Mobius_C4_ScionsOfDestiny/readme.txt index 65dc4a5730..8fe3b39178 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/readme.txt +++ b/L2J_Mobius_C4_ScionsOfDestiny/readme.txt @@ -90,4 +90,3 @@ Removed - Herb item drops. https://lineage.pmfun.com/list/c5c6 TODO: Drop knownlists -> Use World. -Drop MmoCore -> Use Netty. diff --git a/L2J_Mobius_C6_Interlude/.classpath b/L2J_Mobius_C6_Interlude/.classpath index 21e4730bad..36387954d8 100644 --- a/L2J_Mobius_C6_Interlude/.classpath +++ b/L2J_Mobius_C6_Interlude/.classpath @@ -6,6 +6,7 @@ + diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/default-ipconfig.xml b/L2J_Mobius_C6_Interlude/dist/game/config/default-ipconfig.xml new file mode 100644 index 0000000000..9e13cf7b8d --- /dev/null +++ b/L2J_Mobius_C6_Interlude/dist/game/config/default-ipconfig.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/main/Server.ini b/L2J_Mobius_C6_Interlude/dist/game/config/main/Server.ini index 87aeff88ba..48509a7f02 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/config/main/Server.ini +++ b/L2J_Mobius_C6_Interlude/dist/game/config/main/Server.ini @@ -8,32 +8,28 @@ # WAN (WIDE area network) - typically consists of computers OUTSIDE of your router (ie. the internet). # x.x.x.x - Format of an IP address. Do not include the x'es into settings. Must be real numbers. - # --------------------------------------------------------------------------- # Networking # --------------------------------------------------------------------------- -# This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname -# Common settings... -# 127.0.0.1 - If you are playing alone on a test server -# 192.168.x.x - This is if you are on a 192.168.x.x type network (behind a standard consumer router) and want other computers from JUST the internal network to be able to connect -# x.x.x.x - WAN IP obtained from http://www.whatismyip.com/. This is if you want people outside your internal network to be able to connect to your server. -# If this IP is resolvable by the Login Server, just leave *. -# --------------------------------------------------------------------------- -# Enter here (ip) address of your game server, or use the symbol * -GameserverHostname = * -GameserverPort = 7777 - -# Configure your external ip -ExternalHostname = 127.0.0.1 - -# Configure your internal ip -InternalHostname = 127.0.0.1 +# Where's the Login server this gameserver should connect to +# WARNING: Please don't change default IPs here if you don't know what are you doing! +# WARNING: External/Internal IPs are now inside "ipconfig.xml" file. +# Default: 127.0.0.1 +LoginHost = 127.0.0.1 # TCP port the login server listen to for gameserver connection requests # Default: 9014 LoginPort = 9014 -LoginHost = 127.0.0.1 + +# Bind address for gameserver. You should not need to change it in most cases. +# WARNING: Please don't change default IPs here if you don't know what are you doing! +# WARNING: External/Internal IPs are now inside "ipconfig.xml" file. +# Default: * (0.0.0.0) +GameserverHostname = 0.0.0.0 + +# Default: 7777 +GameserverPort = 7777 # --------------------------------------------------------------------------- @@ -130,6 +126,9 @@ ScheduledThreadPoolCount = 160 # Default: 120 InstantThreadPoolCount = 120 +# Default: 40 +UrgentPacketThreadCoreSize = 40 + # --------------------------------------------------------------------------- # Misc Player Settings diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Antharas.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Antharas.java index a175651d2f..37fd5637c9 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Antharas.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Antharas.java @@ -46,7 +46,7 @@ import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.spawn.Spawn; import org.l2jmobius.gameserver.model.zone.type.BossZone; import org.l2jmobius.gameserver.network.serverpackets.Earthquake; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; @@ -560,7 +560,7 @@ public class Antharas extends Quest } } - protected void broadcastPacket(GameServerPacket mov) + protected void broadcastPacket(IClientOutgoingPacket mov) { if (_zone != null) { diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/xsd/ipconfig.xsd b/L2J_Mobius_C6_Interlude/dist/game/data/xsd/ipconfig.xsd new file mode 100644 index 0000000000..44dd05e6bc --- /dev/null +++ b/L2J_Mobius_C6_Interlude/dist/game/data/xsd/ipconfig.xsd @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/dist/libs/netty-all-4.1.50.Final-sources.jar b/L2J_Mobius_C6_Interlude/dist/libs/netty-all-4.1.50.Final-sources.jar new file mode 100644 index 0000000000..d40b0f6ac9 Binary files /dev/null and b/L2J_Mobius_C6_Interlude/dist/libs/netty-all-4.1.50.Final-sources.jar differ diff --git a/L2J_Mobius_C6_Interlude/dist/libs/netty-all-4.1.50.Final.jar b/L2J_Mobius_C6_Interlude/dist/libs/netty-all-4.1.50.Final.jar new file mode 100644 index 0000000000..f8b1557478 Binary files /dev/null and b/L2J_Mobius_C6_Interlude/dist/libs/netty-all-4.1.50.Final.jar differ diff --git a/L2J_Mobius_C6_Interlude/dist/login/config/others/banned_ip.cfg b/L2J_Mobius_C6_Interlude/dist/login/banned_ip.cfg similarity index 100% rename from L2J_Mobius_C6_Interlude/dist/login/config/others/banned_ip.cfg rename to L2J_Mobius_C6_Interlude/dist/login/banned_ip.cfg diff --git a/L2J_Mobius_C6_Interlude/dist/login/config/LoginServer.ini b/L2J_Mobius_C6_Interlude/dist/login/config/LoginServer.ini new file mode 100644 index 0000000000..eddcfed49a --- /dev/null +++ b/L2J_Mobius_C6_Interlude/dist/login/config/LoginServer.ini @@ -0,0 +1,133 @@ +# --------------------------------------------------------------------------- +# Login Server Settings +# --------------------------------------------------------------------------- +# This is the server configuration file. Here you can set up the connection information for your server. +# This was written with the assumption that you are behind a router. +# Dumbed Down Definitions... +# LAN (LOCAL area network) - typically consists of computers connected to the same router as you. +# WAN (WIDE area network) - typically consists of computers OUTSIDE of your router (ie. the internet). +# x.x.x.x - Format of an IP address. Do not include the x'es into settings. Must be real numbers. + +# --------------------------------------------------------------------------- +# Networking +# --------------------------------------------------------------------------- + +# Bind ip of the LoginServer, use 0.0.0.0 to bind on all available IPs +# WARNING: Please don't change default IPs here if you don't know what are you doing! +# WARNING: External/Internal IPs are now inside "ipconfig.xml" file. +# Default: 0.0.0.0 +LoginserverHostname = 0.0.0.0 + +# Default: 2106 +LoginserverPort = 2106 + +# The address on which login will listen for GameServers, use * to bind on all available IPs +# WARNING: Please don't change default IPs here if you don't know what are you doing! +# WARNING: External/Internal IPs are now inside "ipconfig.xml" file. +# Default: 127.0.0.1 +LoginHostname = 127.0.0.1 + +# The port on which login will listen for GameServers +# Default: 9014 +LoginPort = 9014 + + +# --------------------------------------------------------------------------- +# Database +# --------------------------------------------------------------------------- + +# Specify the appropriate driver and url for your database. +# Default: org.mariadb.jdbc.Driver +Driver = org.mariadb.jdbc.Driver + +# Database URL +# Default: jdbc:mariadb://localhost/l2jmobiusc6?useUnicode=true&characterEncoding=utf-8&useSSL=false +URL = jdbc:mariadb://localhost/l2jmobiusc6?useUnicode=true&characterEncoding=utf-8&useSSL=false + +# Database user info (default is "root" but it's not recommended) +Login = root + +# Database connection password +Password = + +# Default: 5 +MaximumDbConnections = 5 + + +# --------------------------------------------------------------------------- +# Automatic Database Backup Settings +# --------------------------------------------------------------------------- +# Generate database backups when server restarts or shuts down. +BackupDatabase = False + +# Path to MySQL bin folder. Only necessary on Windows. +MySqlBinLocation = C:/xampp/mysql/bin/ + +# Path where MySQL backups are stored. +BackupPath = ../backup/ + +# Maximum number of days that backups will be kept. +# Old backups will be deleted. +# Set to 0 to disable. +BackupDays = 30 + + +# --------------------------------------------------------------------------- +# Security +# --------------------------------------------------------------------------- + +# How many times you can provide an invalid account/pass before the IP gets banned. +# Default: 5 +LoginTryBeforeBan = 5 + +# Time you won't be able to login back again after LoginTryBeforeBan tries to login. +# Default: 900 (15 minutes) +LoginBlockAfterBan = 900 + +# If set to True any GameServer can register on your login's free slots +# Default: True +AcceptNewGameServer = True + +# Flood Protection. All values are in milliseconds. +# Default: True +EnableFloodProtection = True + +# Default: 15 +FastConnectionLimit = 15 + +# Default: 700 +NormalConnectionTime = 700 + +# Default: 350 +FastConnectionTime = 350 + +# Default: 50 +MaxConnectionPerIP = 50 + + +# --------------------------------------------------------------------------- +# Misc Login Settings +# --------------------------------------------------------------------------- + +# If False, the license (after the login) will not be shown. +# Default: True +ShowLicence = True + +# Default: True +AutoCreateAccounts = True + +# Datapack root directory. +# Defaults to current directory from which the server is started. +DatapackRoot = . + + +# --------------------------------------------------------------------------- +# Scheduled Login Restart +# --------------------------------------------------------------------------- + +# Enable disable scheduled login restart. +# Default: False +LoginRestartSchedule = False +# Time in hours. +# Default: 24 +LoginRestartTime = 24 diff --git a/L2J_Mobius_C6_Interlude/dist/login/config/main/LoginServer.ini b/L2J_Mobius_C6_Interlude/dist/login/config/main/LoginServer.ini deleted file mode 100644 index 401980f99f..0000000000 --- a/L2J_Mobius_C6_Interlude/dist/login/config/main/LoginServer.ini +++ /dev/null @@ -1,146 +0,0 @@ -# This is the server configuration file. Here you can set up the connection for your server. -# Usually you have to change the ExternalHostname option to -# - 127.0.0.1 (if you want to play alone / testing purpose) -# - LAN IP* (if you want to play from another computer in the network) -# - WAN IP** (if you want to play with friends over internet) -# - Questions? => http://l2jmobius.org -# -# * = If you want to get your LAN IP, simply choose "Start" => "Run..." then type "cmd" => "ipconfig" -# **= If you want to get you WAN IP, visit http://www.whatismyip.com -# =================================================================================================== - -# ================================================================ -# General server setting !!! REQUIRED to configure to everyone !!! -# ================================================================ - -# This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname -ExternalHostname = 127.0.0.1 - -# This is transmitted to the client from the same network, so it has to be a local IP or resolvable hostname -InternalHostname = 127.0.0.1 - -# Bind ip of the loginServer, use * to bind on all available IPs -LoginserverHostname = * -LoginserverPort = 2106 - -# How many times you can provide an invalid account/pass before the IP gets banned -LoginTryBeforeBan = 20 - -# Time you won't be able to login back again after LoginTryBeforeBan tries to login. Provide a value in seconds. Default 10min. (600) -LoginBlockAfterBan = 600 -GMMinLevel = 100 - -# The address on which login will listen for GameServers, use * to bind on all available IPs -LoginHostname = 127.0.0.1 - -# The port on which login will listen for GameServers -LoginPort = 9014 - -# If set to True any GameServer can register on your login's free slots -AcceptNewGameServer = False - -# If False, the licence (after the login) will not be shown -# It is highly recomended for Account Seciurity to leave this option as defalut (True) -ShowLicence = True - -# Specify the appropriate driver and url for your database. -# Default: org.mariadb.jdbc.Driver -Driver = org.mariadb.jdbc.Driver - -# Database URL -# Default: jdbc:mariadb://localhost/l2jmobiusc6?useUnicode=true&characterEncoding=utf-8&useSSL=false -URL = jdbc:mariadb://localhost/l2jmobiusc6?useUnicode=true&characterEncoding=utf-8&useSSL=false - -# Parameters Databases - MYSQL -# Login - Mysql user -Login = root -# Password - Mysql Password -Password = -# maximum number of simultaneous connecting to the database -MaximumDbConnections = 10 - - -# --------------------------------------------------------------------------- -# Automatic Database Backup Settings -# --------------------------------------------------------------------------- -# Generate database backups when server restarts or shuts down. -BackupDatabase = False - -# Path to MySQL bin folder. Only necessary on Windows. -MySqlBinLocation = C:/xampp/mysql/bin/ - -# Path where MySQL backups are stored. -BackupPath = ../backup/ - -# Maximum number of days that backups will be kept. -# Old backups will be deleted. -# Set to 0 to disable. -BackupDays = 30 - - -# Limit fast connections (input username / password) -FastConnectionLimit = 15 -# Time of the normal connection (in ms) -NormalConnectionTime = 700 -# Time fast connection (in ms) -FastConnectionTime = 350 -# Maximum connections with the 1st IP -MaxConnectionPerIP = 50 - -# The lifetime of the session with the login server. -SessionTTL = 25000 -MaxSessions = 100 - -# Choose the option: "true", to create an account when logging in automatically -AutoCreateAccounts = True - -# Time to renew the IP address of the server in minutes (for dynamic IP) -IpUpdateTime = 0 - -# The configuration of the local subnet -# Example : 192.168 -# Ppimer : 10.1 -NetworkList = 192.168.;10.0. - - -# --------------------------------------------------------------------------- -# Test server configuration, not to switch on the game server! -# --------------------------------------------------------------------------- -# Use the GG client authentication -# Login server access let the client without GameGuard -ForceGGAuth = False - -# Including protection from flood -# IMPORTANT: Put True for server security. -EnableFloodProtection = True - - -# --------------------------------------------------------------------------- -# Anti Bruteforce protection. (credits RT-Interlude) -# --------------------------------------------------------------------------- -# Count of trying connection to server, after which will be made checking IP address -# for a possible BrutForce -# Reducing this value will increase the likelihood of false positives -# Increasing this value will reduce the effectiveness of security (more chance find passwords for large accounts) -BrutLogonAttempts = 15 - -# The average time (in seconds) between attempts to connect to the server -# Reducing this value will increase the likelihood of false positives -# Increasing this value will reduce the effectiveness of security (more chance find passwords for large accounts) -BrutAvgTime = 30 - -# Number of second, for ban IP address, who time BrutAvgTime less specified -# 900 second = 15 minute -BrutBanIpTime = 900 - - -# --------------------------------------------------------------------------- -# Scheduled Login Restart -# --------------------------------------------------------------------------- -# Enable disable scheduled login restart. -# Default: False -LoginRestartSchedule = False - -# Time in hours. -# Default: 24 -LoginRestartTime = 24 diff --git a/L2J_Mobius_C6_Interlude/dist/login/config/others/servername.xsd b/L2J_Mobius_C6_Interlude/dist/login/config/others/servername.xsd deleted file mode 100644 index 1a1ca24033..0000000000 --- a/L2J_Mobius_C6_Interlude/dist/login/config/others/servername.xsd +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/dist/login/config/protected/MmoCore.ini b/L2J_Mobius_C6_Interlude/dist/login/config/protected/MmoCore.ini deleted file mode 100644 index 505afde297..0000000000 --- a/L2J_Mobius_C6_Interlude/dist/login/config/protected/MmoCore.ini +++ /dev/null @@ -1,128 +0,0 @@ -#=========================================# -# MMOCore Connection Settings # -#=========================================# - -# ---------------------------- # -# Debug and Develop logging # -# ---------------------------- # -EnableMMOCoreDebug = False -EnableMMOCoreDevelop = False -EnableMMOCoreExceptions = False -PacketHandlerDebug = False - -# ---------------------------- -# Config BackLog -# ---------------------------- -# Maximum length of request. -# The maximum length for incoming requests (connection request). -# Maximum number of requests, after which the requests -# Will not be accepted. -# The default is 50 -# Must be equal to the estimated number of players. -# Example: Players in the game 1000 +, NetworkBackLog = 1000 -# NetworkBackLog = 50 - -# ---------------- -# Set TOS -# ---------------- -# Set the traffic going to a particular socket. -# Can be ignored JAVA-machine. -# Range: 0 <= tc <= 255 or a ban happens. -# Note: -# To TCP4 should be set high priority and should be RFC 1349. -# You can also create a type priorities bit, example: -# IPTOS_LOWCOST (0x02) -# IPTOS_RELIABILITY (0x04) -# IPTOS_THROUGHPUT (0x08) -# IPTOS_LOWDELAY (0x10) -# The lowest bit is ignored (0). -# Set bits in the priority may cause the collapse of the server. -# depends on the service and platform. -# Note: -# Applications can not change GameServer after connecting. -# To TCP6 value can be found in the header sin6_flowinfo. -# NetworkIpTOS = 0 - -# --------------------------------------- -# Setting TCP_NODELAY -# --------------------------------------- -# On / Off TCP_NODELAY -#NetworkTcpNoDelay = False - -# ------------------------------- -# Setting KeepAlive -# ------------------------------- -# On / Off SO_KEEPALIVE -#NetworkKeepAlive = False - -# ------------------------ -# Set a timeout -# ------------------------ -# Set a timeout in milliseconds. -# If set to 0, the timeout will be standard. -# Timeout must be greater than 0. -# Zero timeout is defined as an infinite timeout. -#NetworkSoTimeOut = 0 - -# --------------------------------------------------- -# Configure repetitions Adresses -# --------------------------------------------------- -# On / Off option. -# If the connection is closed, then turn timeout. -#NetworkSoReuseAddr = True - -# -------------------------------------- -# Set buffer compounds -# -------------------------------------- -# Buffer size in kbit (kilobits) -# By default (Windows) - 64KBits -# Default (* nix) - 128KBits -#NetworkReadBufferSize = 64 -#NetworkWriteBufferSize = 64 -#NetworkHelperBufferSize = 64 - -# The size of the auxiliary buffer -#NetworkHelperBufferCount = 20 - -# -------------------------- -# Client Queue Configuration -# -------------------------- -# Queue size, do not set it too low ! -# Default: 14 -ClientPacketQueueSize = 14 -# Maximum number of packets in burst. -# Execution will be aborted and thread released if more packets executed in raw. -# Default: 50 -ClientPacketQueueMaxBurstSize = 50 -# Maximum number of packets per second. -# Flood detector will be triggered if more packets received. -# After triggering all incoming packets will be dropped until flooding stopped. -# Default: 80 -ClientPacketQueueMaxPacketsPerSecond = 80 -# Average number of packets per second calculated during this interval. -# Using larger value decrease number of false kicks, but slower reaction to flood. -# Avoid using too low or too high values, recommended between 3 and 10. -# Default: 5 -ClientPacketQueueMeasureInterval = 5 -# Maximum average number of packets per second during measure interval. -# Flood detector will be triggered if more packets received. -# After triggering all incoming packets will be dropped until flooding stopped. -# Default: 40 -ClientPacketQueueMaxAveragePacketsPerSecond = 40 -# Maximum number of flood triggers per minute. -# Client will be kicked if more floods detected. -# Default: 2 -ClientPacketQueueMaxFloodPerMin = 6 -# Maximum number of queue overflows per minute. -# After overflow all incoming packets from client are dropped until queue is flushed. -# Client will be kicked if more queue overflows detected. -# Default: 50 -ClientPacketQueueOverflowsPerMin = 50 -# Maximum number of buffer underflows per minute. -# Client will be kicked if more underflow exceptions detected. -# Default: 1 -ClientPacketQueueUnderflowsPerMin = 1 -# Maximum number of unknown packets per minute. -# Client will be kicked if more unknown packets received. -# Default: 5 -ClientPacketQueueUnknownPerMin = 5 diff --git a/L2J_Mobius_C6_Interlude/dist/login/config/others/servername.xml b/L2J_Mobius_C6_Interlude/dist/login/data/servername.xml similarity index 96% rename from L2J_Mobius_C6_Interlude/dist/login/config/others/servername.xml rename to L2J_Mobius_C6_Interlude/dist/login/data/servername.xml index 2006704401..6cae663f9f 100644 --- a/L2J_Mobius_C6_Interlude/dist/login/config/others/servername.xml +++ b/L2J_Mobius_C6_Interlude/dist/login/data/servername.xml @@ -1,4 +1,4 @@ - + diff --git a/L2J_Mobius_C6_Interlude/dist/login/data/servername.xsd b/L2J_Mobius_C6_Interlude/dist/login/data/servername.xsd new file mode 100644 index 0000000000..319fdb59fb --- /dev/null +++ b/L2J_Mobius_C6_Interlude/dist/login/data/servername.xsd @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java index a68d54d1c3..f5e1c4f291 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java @@ -18,8 +18,6 @@ package org.l2jmobius; import java.io.BufferedReader; import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; @@ -27,26 +25,37 @@ import java.io.InputStreamReader; import java.io.LineNumberReader; import java.io.OutputStream; import java.math.BigInteger; -import java.net.UnknownHostException; +import java.net.Inet6Address; +import java.net.InterfaceAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.IntStream; + +import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; import org.l2jmobius.commons.enums.ServerMode; import org.l2jmobius.commons.util.ClassMasterSettings; +import org.l2jmobius.commons.util.IXmlReader; import org.l2jmobius.commons.util.PropertiesParser; import org.l2jmobius.commons.util.StringUtil; import org.l2jmobius.gameserver.enums.GeoType; import org.l2jmobius.gameserver.model.olympiad.OlympiadPeriod; import org.l2jmobius.gameserver.util.FloodProtectorConfig; import org.l2jmobius.gameserver.util.Util; -import org.l2jmobius.loginserver.LoginController; public class Config { @@ -59,6 +68,7 @@ public class Config // standard private static final String FILTER_FILE = "./config/chatfilter.txt"; private static final String HEXID_FILE = "./config/hexid.txt"; + private static final String IPCONFIG_FILE = "./config/ipconfig.xml"; // main private static final String ACCESS_CONFIG_FILE = "./config/main/Access.ini"; private static final String CHARACTER_CONFIG_FILE = "./config/main/Character.ini"; @@ -103,15 +113,10 @@ public class Config private static final String EVENT_REBIRTH_CONFIG_FILE = "./config/custom/Rebirth.ini"; private static final String EVENT_WEDDING_CONFIG_FILE = "./config/custom/Wedding.ini"; // login - private static final String LOGIN_CONFIG_FILE = "./config/main/LoginServer.ini"; - // others - private static final String BANNED_IP_FILE = "./config/others/banned_ip.cfg"; - public static final String SERVER_NAME_FILE = "./config/others/servername.xml"; - // legacy - private static final String LEGACY_BANNED_IP = "./config/banned_ip.cfg"; + private static final String LOGIN_CONFIG_FILE = "./config/LoginServer.ini"; // -------------------------------------------------- - // Constants + // Variable Definitions // -------------------------------------------------- public static final String EOL = System.lineSeparator(); @@ -137,9 +142,6 @@ public class Config public static int TRADE_PVP_AMOUNT; public static boolean GLOBAL_CHAT_WITH_PVP; public static int GLOBAL_PVP_AMOUNT; - public static int BRUT_AVG_TIME; - public static int BRUT_LOGON_ATTEMPTS; - public static int BRUT_BAN_IP_TIME; public static boolean LOGIN_SERVER_SCHEDULE_RESTART; public static long LOGIN_SERVER_SCHEDULE_RESTART_TIME; public static int MAX_CHAT_LENGTH; @@ -204,8 +206,6 @@ public class Config public static boolean HIGH_RATE_SERVER_DROPS; public static boolean FORCE_COMPLETE_STATUS_UPDATE; - public static int PORT_GAME; - public static String GAMESERVER_HOSTNAME; public static String DATABASE_DRIVER; public static String DATABASE_URL; public static String DATABASE_LOGIN; @@ -1149,10 +1149,12 @@ public class Config public static String LOGIN_BIND_ADDRESS; public static int LOGIN_TRY_BEFORE_BAN; public static int LOGIN_BLOCK_AFTER_BAN; + public static String GAMESERVER_HOSTNAME; + public static int PORT_GAME; public static int GAME_SERVER_LOGIN_PORT; public static String GAME_SERVER_LOGIN_HOST; - public static String INTERNAL_HOSTNAME; - public static String EXTERNAL_HOSTNAME; + public static List GAME_SERVER_SUBNETS; + public static List GAME_SERVER_HOSTS; public static int REQUEST_ID; public static boolean ACCEPT_ALTERNATE_ID; public static File DATAPACK_ROOT; @@ -1164,6 +1166,7 @@ public class Config public static int MAX_PROTOCOL_REVISION; public static int SCHEDULED_THREAD_POOL_COUNT; public static int INSTANT_THREAD_POOL_COUNT; + public static int IO_PACKET_THREAD_CORE_SIZE; public static String CNAME_TEMPLATE; public static String PET_NAME_TEMPLATE; public static String CLAN_NAME_TEMPLATE; @@ -1180,9 +1183,7 @@ public class Config public static int PRECAUTIONARY_RESTART_PERCENTAGE; public static int PRECAUTIONARY_RESTART_DELAY; - public static int IP_UPDATE_TIME; public static boolean SHOW_LICENCE; - public static boolean FORCE_GGAUTH; public static boolean FLOOD_PROTECTION; public static int FAST_CONNECTION_LIMIT; public static int NORMAL_CONNECTION_TIME; @@ -1190,21 +1191,6 @@ public class Config public static int MAX_CONNECTION_PER_IP; public static boolean ACCEPT_NEW_GAMESERVER; public static boolean AUTO_CREATE_ACCOUNTS; - public static String NETWORK_IP_LIST; - public static long SESSION_TTL; - public static int MAX_LOGINSESSIONS; - - /** MMO settings */ - public static final int MMO_SELECTOR_SLEEP_TIME = 20; // default 20 - public static final int MMO_MAX_SEND_PER_PASS = 80; // default 80 - public static final int MMO_MAX_READ_PER_PASS = 80; // default 80 - public static final int MMO_HELPER_BUFFER_COUNT = 20; // default 20 - - /** Client Packets Queue settings */ - public static final int CLIENT_PACKET_QUEUE_SIZE = 14; // default MMO_MAX_READ_PER_PASS + 2 - - /** Packet handler settings */ - public static final boolean PACKET_HANDLER_DEBUG = false; public static void loadAccessConfig() { @@ -1227,12 +1213,11 @@ public class Config public static void loadServerConfig() { final PropertiesParser serverConfig = new PropertiesParser(SERVER_CONFIG_FILE); - GAMESERVER_HOSTNAME = serverConfig.getString("GameserverHostname", ""); + GAMESERVER_HOSTNAME = serverConfig.getString("GameserverHostname", "0.0.0.0"); PORT_GAME = serverConfig.getInt("GameserverPort", 7777); - EXTERNAL_HOSTNAME = serverConfig.getString("ExternalHostname", "*"); - INTERNAL_HOSTNAME = serverConfig.getString("InternalHostname", "*"); GAME_SERVER_LOGIN_PORT = serverConfig.getInt("LoginPort", 9014); GAME_SERVER_LOGIN_HOST = serverConfig.getString("LoginHost", "127.0.0.1"); + DATABASE_DRIVER = serverConfig.getString("Driver", "org.mariadb.jdbc.Driver"); DATABASE_URL = serverConfig.getString("URL", "jdbc:mariadb://localhost/"); DATABASE_LOGIN = serverConfig.getString("Login", "root"); @@ -1264,6 +1249,7 @@ public class Config } SCHEDULED_THREAD_POOL_COUNT = serverConfig.getInt("ScheduledThreadPoolCount", 40); INSTANT_THREAD_POOL_COUNT = serverConfig.getInt("InstantThreadPoolCount", 20); + IO_PACKET_THREAD_CORE_SIZE = serverConfig.getInt("UrgentPacketThreadCoreSize", 20); CNAME_TEMPLATE = serverConfig.getString("CnameTemplate", ".*"); PET_NAME_TEMPLATE = serverConfig.getString("PetNameTemplate", ".*"); CLAN_NAME_TEMPLATE = serverConfig.getString("ClanNameTemplate", ".*"); @@ -2991,15 +2977,24 @@ public class Config public static void loadLoginStartConfig() { final PropertiesParser serverSettings = new PropertiesParser(LOGIN_CONFIG_FILE); - GAME_SERVER_LOGIN_HOST = serverSettings.getString("LoginHostname", "*"); + GAME_SERVER_LOGIN_HOST = serverSettings.getString("LoginHostname", "127.0.0.1"); GAME_SERVER_LOGIN_PORT = serverSettings.getInt("LoginPort", 9013); - LOGIN_BIND_ADDRESS = serverSettings.getString("LoginserverHostname", "*"); + LOGIN_BIND_ADDRESS = serverSettings.getString("LoginserverHostname", "0.0.0.0"); PORT_LOGIN = serverSettings.getInt("LoginserverPort", 2106); + try + { + DATAPACK_ROOT = new File(serverSettings.getString("DatapackRoot", ".").replaceAll("\\\\", "/")).getCanonicalFile(); + } + catch (IOException e) + { + LOGGER.log(Level.WARNING, "Error setting datapack root!", e); + DATAPACK_ROOT = new File("."); + } ACCEPT_NEW_GAMESERVER = serverSettings.getBoolean("AcceptNewGameServer", true); LOGIN_TRY_BEFORE_BAN = serverSettings.getInt("LoginTryBeforeBan", 10); LOGIN_BLOCK_AFTER_BAN = serverSettings.getInt("LoginBlockAfterBan", 600); - INTERNAL_HOSTNAME = serverSettings.getString("InternalHostname", "localhost"); - EXTERNAL_HOSTNAME = serverSettings.getString("ExternalHostname", "localhost"); + LOGIN_SERVER_SCHEDULE_RESTART = serverSettings.getBoolean("LoginRestartSchedule", false); + LOGIN_SERVER_SCHEDULE_RESTART_TIME = serverSettings.getLong("LoginRestartTime", 24); DATABASE_DRIVER = serverSettings.getString("Driver", "org.mariadb.jdbc.Driver"); DATABASE_URL = serverSettings.getString("URL", "jdbc:mariadb://localhost/l2jdb"); DATABASE_LOGIN = serverSettings.getString("Login", "root"); @@ -3009,115 +3004,13 @@ public class Config MYSQL_BIN_PATH = serverSettings.getString("MySqlBinLocation", "C:/xampp/mysql/bin/"); BACKUP_PATH = serverSettings.getString("BackupPath", "../backup/"); BACKUP_DAYS = serverSettings.getInt("BackupDays", 30); - BRUT_AVG_TIME = serverSettings.getInt("BrutAvgTime", 30); // in Seconds - BRUT_LOGON_ATTEMPTS = serverSettings.getInt("BrutLogonAttempts", 15); - BRUT_BAN_IP_TIME = serverSettings.getInt("BrutBanIpTime", 900); // in Seconds - LOGIN_SERVER_SCHEDULE_RESTART = serverSettings.getBoolean("LoginRestartSchedule", false); - LOGIN_SERVER_SCHEDULE_RESTART_TIME = serverSettings.getLong("LoginRestartTime", 24); SHOW_LICENCE = serverSettings.getBoolean("ShowLicence", false); - IP_UPDATE_TIME = serverSettings.getInt("IpUpdateTime", 15); - FORCE_GGAUTH = serverSettings.getBoolean("ForceGGAuth", false); AUTO_CREATE_ACCOUNTS = serverSettings.getBoolean("AutoCreateAccounts", true); FLOOD_PROTECTION = serverSettings.getBoolean("EnableFloodProtection", true); FAST_CONNECTION_LIMIT = serverSettings.getInt("FastConnectionLimit", 15); NORMAL_CONNECTION_TIME = serverSettings.getInt("NormalConnectionTime", 700); FAST_CONNECTION_TIME = serverSettings.getInt("FastConnectionTime", 350); MAX_CONNECTION_PER_IP = serverSettings.getInt("MaxConnectionPerIP", 50); - NETWORK_IP_LIST = serverSettings.getString("NetworkList", ""); - SESSION_TTL = serverSettings.getLong("SessionTTL", 25000); - MAX_LOGINSESSIONS = serverSettings.getInt("MaxSessions", 200); - } - - public static void loadBanFile() - { - File file = new File(BANNED_IP_FILE); - if (!file.exists()) - { - // old file position - file = new File(LEGACY_BANNED_IP); - } - - if (file.exists() && file.isFile()) - { - FileInputStream fis = null; - try - { - fis = new FileInputStream(file); - LineNumberReader reader = null; - String line; - String[] parts; - try - { - reader = new LineNumberReader(new InputStreamReader(fis)); - while ((line = reader.readLine()) != null) - { - line = line.trim(); - // check if this line isnt a comment line - if ((line.length() > 0) && (line.charAt(0) != '#')) - { - // split comments if any - parts = line.split("#", 2); - - // discard comments in the line, if any - line = parts[0]; - parts = line.split(" "); - - final String address = parts[0]; - long duration = 0; - if (parts.length > 1) - { - try - { - duration = Long.parseLong(parts[1]); - } - catch (NumberFormatException e) - { - LOGGER.warning("Skipped: Incorrect ban duration (" + parts[1] + ") on (" + file.getName() + "). Line: " + reader.getLineNumber()); - continue; - } - } - - try - { - LoginController.getInstance().addBanForAddress(address, duration); - } - catch (UnknownHostException e) - { - LOGGER.warning("Skipped: Invalid address (" + parts[0] + ") on (" + file.getName() + "). Line: " + reader.getLineNumber()); - } - } - } - } - catch (IOException e) - { - LOGGER.warning("Error while reading the bans file (" + file.getName() + "). Details: " + e); - } - - LOGGER.info("Loaded " + LoginController.getInstance().getBannedIps().size() + " IP Bans."); - } - catch (FileNotFoundException e) - { - LOGGER.warning("Failed to load banned IPs file (" + file.getName() + ") for reading. Reason: " + e); - } - finally - { - if (fis != null) - { - try - { - fis.close(); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - } - } - else - { - LOGGER.info("IP Bans file (" + file.getName() + ") is missing or is a directory, skipped."); - } } public static void saveHexid(int serverId, String string) @@ -3248,6 +3141,11 @@ public class Config loadFilter(); } + // Hosts and Subnets + final IPConfigData ipcd = new IPConfigData(); + GAME_SERVER_SUBNETS = ipcd.getSubnets(); + GAME_SERVER_HOSTS = ipcd.getHosts(); + loadTelnetConfig(); } else if (SERVER_MODE == ServerMode.LOGIN) @@ -3261,4 +3159,155 @@ public class Config LOGGER.severe("Could not Load Config: server mode was not set."); } } + + private static class IPConfigData implements IXmlReader + { + private static final List _subnets = new ArrayList<>(5); + private static final List _hosts = new ArrayList<>(5); + + public IPConfigData() + { + load(); + } + + @Override + public void load() + { + final File f = new File(IPCONFIG_FILE); + if (f.exists()) + { + LOGGER.info("Network Config: ipconfig.xml exists using manual configuration..."); + parseFile(new File(IPCONFIG_FILE)); + } + else // Auto configuration... + { + LOGGER.info("Network Config: ipconfig.xml doesn't exists using automatic configuration..."); + autoIpConfig(); + } + } + + @Override + public void parseDocument(Document doc, File f) + { + NamedNodeMap attrs; + for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling()) + { + if ("gameserver".equalsIgnoreCase(n.getNodeName())) + { + for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + { + if ("define".equalsIgnoreCase(d.getNodeName())) + { + attrs = d.getAttributes(); + _subnets.add(attrs.getNamedItem("subnet").getNodeValue()); + _hosts.add(attrs.getNamedItem("address").getNodeValue()); + + if (_hosts.size() != _subnets.size()) + { + LOGGER.warning("Failed to Load " + IPCONFIG_FILE + " File - subnets does not match server addresses."); + } + } + } + + final Node att = n.getAttributes().getNamedItem("address"); + if (att == null) + { + LOGGER.warning("Failed to load " + IPCONFIG_FILE + " file - default server address is missing."); + _hosts.add("127.0.0.1"); + } + else + { + _hosts.add(att.getNodeValue()); + } + _subnets.add("0.0.0.0/0"); + } + } + } + + protected void autoIpConfig() + { + String externalIp = "127.0.0.1"; + try + { + final URL autoIp = new URL("http://ip1.dynupdate.no-ip.com:8245/"); + try (BufferedReader in = new BufferedReader(new InputStreamReader(autoIp.openStream()))) + { + externalIp = in.readLine(); + } + } + catch (IOException e) + { + LOGGER.log(Level.INFO, "Failed to connect to api.externalip.net please check your internet connection using 127.0.0.1!"); + externalIp = "127.0.0.1"; + } + + try + { + final Enumeration niList = NetworkInterface.getNetworkInterfaces(); + while (niList.hasMoreElements()) + { + final NetworkInterface ni = niList.nextElement(); + if (!ni.isUp() || ni.isVirtual()) + { + continue; + } + + if (!ni.isLoopback() && ((ni.getHardwareAddress() == null) || (ni.getHardwareAddress().length != 6))) + { + continue; + } + + for (InterfaceAddress ia : ni.getInterfaceAddresses()) + { + if (ia.getAddress() instanceof Inet6Address) + { + continue; + } + + final String hostAddress = ia.getAddress().getHostAddress(); + final int subnetPrefixLength = ia.getNetworkPrefixLength(); + final int subnetMaskInt = IntStream.rangeClosed(1, subnetPrefixLength).reduce((r, e) -> (r << 1) + 1).orElse(0) << (32 - subnetPrefixLength); + final int hostAddressInt = Arrays.stream(hostAddress.split("\\.")).mapToInt(Integer::parseInt).reduce((r, e) -> (r << 8) + e).orElse(0); + final int subnetAddressInt = hostAddressInt & subnetMaskInt; + final String subnetAddress = ((subnetAddressInt >> 24) & 0xFF) + "." + ((subnetAddressInt >> 16) & 0xFF) + "." + ((subnetAddressInt >> 8) & 0xFF) + "." + (subnetAddressInt & 0xFF); + final String subnet = subnetAddress + '/' + subnetPrefixLength; + if (!_subnets.contains(subnet) && !subnet.equals("0.0.0.0/0")) + { + _subnets.add(subnet); + _hosts.add(hostAddress); + LOGGER.info("Network Config: Adding new subnet: " + subnet + " address: " + hostAddress); + } + } + } + + // External host and subnet + _hosts.add(externalIp); + _subnets.add("0.0.0.0/0"); + LOGGER.info("Network Config: Adding new subnet: 0.0.0.0/0 address: " + externalIp); + } + catch (SocketException e) + { + LOGGER.log(Level.INFO, "Network Config: Configuration failed please configure manually using ipconfig.xml", e); + System.exit(0); + } + } + + protected List getSubnets() + { + if (_subnets.isEmpty()) + { + return Arrays.asList("0.0.0.0/0"); + } + return _subnets; + } + + protected List getHosts() + { + if (_hosts.isEmpty()) + { + return Arrays.asList("127.0.0.1"); + } + return _hosts; + } + } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/LoginCrypt.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/LoginCrypt.java deleted file mode 100644 index 8144e59bba..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/crypt/LoginCrypt.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.crypt; - -import java.io.IOException; - -import org.l2jmobius.commons.util.Rnd; - -/** - * @author KenM - */ -public class LoginCrypt -{ - private static final byte[] STATIC_BLOWFISH_KEY = - { - (byte) 0x6b, - (byte) 0x60, - (byte) 0xcb, - (byte) 0x5b, - (byte) 0x82, - (byte) 0xce, - (byte) 0x90, - (byte) 0xb1, - (byte) 0xcc, - (byte) 0x2b, - (byte) 0x6c, - (byte) 0x55, - (byte) 0x6c, - (byte) 0x6c, - (byte) 0x6c, - (byte) 0x6c - }; - - private final NewCrypt _staticCrypt = new NewCrypt(STATIC_BLOWFISH_KEY); - private NewCrypt _crypt; - private boolean _static = true; - - public void setKey(byte[] key) - { - _crypt = new NewCrypt(key); - } - - public boolean decrypt(byte[] raw, int offset, int size) throws IOException - { - _crypt.decrypt(raw, offset, size); - return NewCrypt.verifyChecksum(raw, offset, size); - } - - public int encrypt(byte[] raw, int offset, int size) throws IOException - { - int newSize = size; - // reserve checksum - newSize += 4; - - if (_static) - { - // reserve for XOR "key" - newSize += 4; - - // padding - newSize += 8 - (newSize % 8); - NewCrypt.encXORPass(raw, offset, newSize, Rnd.nextInt()); - _staticCrypt.crypt(raw, offset, newSize); - - _static = false; - } - else - { - // padding - newSize += 8 - (newSize % 8); - NewCrypt.appendChecksum(raw, offset, newSize); - _crypt.crypt(raw, offset, newSize); - } - - return newSize; - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IClientFactory.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IClientFactory.java deleted file mode 100644 index e2195692fa..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IClientFactory.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -/** - * @author KenM - * @param - */ -public interface IClientFactory> -{ - T create(MMOConnection con); -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IMMOExecutor.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IMMOExecutor.java deleted file mode 100644 index 3c8fafa0be..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IMMOExecutor.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -/** - * @author KenM - * @param - */ -public interface IMMOExecutor> -{ - void execute(ReceivablePacket packet); -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IPacketHandler.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IPacketHandler.java deleted file mode 100644 index 020d3c6d7c..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/IPacketHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.nio.ByteBuffer; - -/** - * @author KenM - * @param - */ -public interface IPacketHandler> -{ - ReceivablePacket handlePacket(ByteBuffer buf, T client); -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/MMOClient.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/MMOClient.java deleted file mode 100644 index 331a9475f1..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/MMOClient.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.nio.ByteBuffer; - -/** - * @author KenM - * @param - */ -public abstract class MMOClient> -{ - private final T _con; - - public MMOClient(T con) - { - _con = con; - } - - public T getConnection() - { - return _con; - } - - public abstract boolean decrypt(ByteBuffer buf, int size); - - public abstract boolean encrypt(ByteBuffer buf, int size); - - protected abstract void onDisconnection(); - - protected abstract void onForcedDisconnection(); -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/MMOConnection.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/MMOConnection.java deleted file mode 100644 index 116f68d509..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/MMOConnection.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.Socket; -import java.nio.ByteBuffer; -import java.nio.channels.CancelledKeyException; -import java.nio.channels.ReadableByteChannel; -import java.nio.channels.SelectionKey; -import java.nio.channels.WritableByteChannel; - -/** - * @author KenM - * @param - */ -public class MMOConnection> -{ - private final SelectorThread _selectorThread; - - private final Socket _socket; - - private final InetAddress _address; - - private final ReadableByteChannel _readableByteChannel; - - private final WritableByteChannel _writableByteChannel; - - private final int _port; - - private final NioNetStackList> _sendQueue; - - private final SelectionKey _selectionKey; - - private ByteBuffer _readBuffer; - - private ByteBuffer _primaryWriteBuffer; - - private ByteBuffer _secondaryWriteBuffer; - - private volatile boolean _pendingClose; - - private T _client; - - public MMOConnection(SelectorThread selectorThread, Socket socket, SelectionKey key) - { - _selectorThread = selectorThread; - _socket = socket; - _address = socket.getInetAddress(); - _readableByteChannel = socket.getChannel(); - _writableByteChannel = socket.getChannel(); - _port = socket.getPort(); - _selectionKey = key; - _sendQueue = new NioNetStackList<>(); - } - - final void setClient(T client) - { - _client = client; - } - - public T getClient() - { - return _client; - } - - public void sendPacket(SendablePacket sp) - { - sp._client = _client; - if (_pendingClose) - { - return; - } - - synchronized (getSendQueue()) - { - _sendQueue.addLast(sp); - } - - if (!_sendQueue.isEmpty()) - { - try - { - _selectionKey.interestOps(_selectionKey.interestOps() | SelectionKey.OP_WRITE); - } - catch (CancelledKeyException e) - { - // ignore - } - } - } - - final SelectionKey getSelectionKey() - { - return _selectionKey; - } - - public InetAddress getInetAddress() - { - return _address; - } - - public int getPort() - { - return _port; - } - - final void close() throws IOException - { - _socket.close(); - } - - final int read(ByteBuffer buf) throws IOException - { - return _readableByteChannel.read(buf); - } - - final int write(ByteBuffer buf) throws IOException - { - return _writableByteChannel.write(buf); - } - - final void createWriteBuffer(ByteBuffer buf) - { - if (_primaryWriteBuffer == null) - { - _primaryWriteBuffer = _selectorThread.getPooledBuffer(); - _primaryWriteBuffer.put(buf); - } - else - { - final ByteBuffer temp = _selectorThread.getPooledBuffer(); - temp.put(buf); - - final int remaining = temp.remaining(); - _primaryWriteBuffer.flip(); - final int limit = _primaryWriteBuffer.limit(); - if (remaining >= _primaryWriteBuffer.remaining()) - { - temp.put(_primaryWriteBuffer); - _selectorThread.recycleBuffer(_primaryWriteBuffer); - _primaryWriteBuffer = temp; - } - else - { - _primaryWriteBuffer.limit(remaining); - temp.put(_primaryWriteBuffer); - _primaryWriteBuffer.limit(limit); - _primaryWriteBuffer.compact(); - _secondaryWriteBuffer = _primaryWriteBuffer; - } - _primaryWriteBuffer = temp; - } - } - - final boolean hasPendingWriteBuffer() - { - return _primaryWriteBuffer != null; - } - - final void movePendingWriteBufferTo(ByteBuffer dest) - { - _primaryWriteBuffer.flip(); - dest.put(_primaryWriteBuffer); - _selectorThread.recycleBuffer(_primaryWriteBuffer); - _primaryWriteBuffer = _secondaryWriteBuffer; - _secondaryWriteBuffer = null; - } - - final void setReadBuffer(ByteBuffer buf) - { - _readBuffer = buf; - } - - final ByteBuffer getReadBuffer() - { - return _readBuffer; - } - - public boolean isClosed() - { - return _pendingClose; - } - - final NioNetStackList> getSendQueue() - { - return _sendQueue; - } - - /* - * final SendablePacket getClosePacket() { return _closePacket; } - */ - - @SuppressWarnings("unchecked") - public void close(SendablePacket sp) - { - close(new SendablePacket[] - { - sp - }); - } - - public void close(SendablePacket[] closeList) - { - if (_pendingClose) - { - return; - } - - synchronized (getSendQueue()) - { - if (!_pendingClose) - { - _pendingClose = true; - _sendQueue.clear(); - for (SendablePacket sp : closeList) - { - _sendQueue.addLast(sp); - } - } - } - - try - { - _selectionKey.interestOps(_selectionKey.interestOps() & ~SelectionKey.OP_WRITE); - } - catch (CancelledKeyException e) - { - // ignore - } - - // _closePacket = sp; - _selectorThread.closeConnection(this); - } - - final void releaseBuffers() - { - if (_primaryWriteBuffer != null) - { - _selectorThread.recycleBuffer(_primaryWriteBuffer); - _primaryWriteBuffer = null; - if (_secondaryWriteBuffer != null) - { - _selectorThread.recycleBuffer(_secondaryWriteBuffer); - _secondaryWriteBuffer = null; - } - } - - if (_readBuffer != null) - { - _selectorThread.recycleBuffer(_readBuffer); - _readBuffer = null; - } - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/NioNetStackList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/NioNetStackList.java deleted file mode 100644 index a58719ca6b..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/NioNetStackList.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -/** - * @author Forsaiken - * @param - */ -public class NioNetStackList -{ - private final NioNetStackNode _start = new NioNetStackNode(); - - private final NioNetStackNodeBuf _buf = new NioNetStackNodeBuf(); - - private NioNetStackNode _end = new NioNetStackNode(); - - public NioNetStackList() - { - clear(); - } - - public void addLast(E elem) - { - final NioNetStackNode newEndNode = _buf.removeFirst(); - _end._value = elem; - _end._next = newEndNode; - _end = newEndNode; - } - - public E removeFirst() - { - final NioNetStackNode old = _start._next; - final E value = old._value; - _start._next = old._next; - _buf.addLast(old); - return value; - } - - public boolean isEmpty() - { - return _start._next == _end; - } - - public void clear() - { - _start._next = _end; - } - - protected final class NioNetStackNode - { - protected NioNetStackNode _next; - - protected E _value; - } - - private final class NioNetStackNodeBuf - { - private final NioNetStackNode _start = new NioNetStackNode(); - - private NioNetStackNode _end = new NioNetStackNode(); - - NioNetStackNodeBuf() - { - _start._next = _end; - } - - final void addLast(NioNetStackNode node) - { - node._next = null; - node._value = null; - _end._next = node; - _end = node; - } - - final NioNetStackNode removeFirst() - { - if (_start._next == _end) - { - return new NioNetStackNode(); - } - - final NioNetStackNode old = _start._next; - _start._next = old._next; - return old; - } - } -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/NioNetStringBuffer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/NioNetStringBuffer.java deleted file mode 100644 index 7bc2a638fa..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/NioNetStringBuffer.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.nio.BufferOverflowException; - -/** - * @author Forsaiken - */ -public class NioNetStringBuffer -{ - private final char[] _buf; - - private final int _size; - - private int _len; - - public NioNetStringBuffer(int size) - { - _buf = new char[size]; - _size = size; - _len = 0; - } - - public void clear() - { - _len = 0; - } - - public void append(char c) - { - if (_len < _size) - { - _buf[_len++] = c; - } - else - { - throw new BufferOverflowException(); - } - } - - @Override - public String toString() - { - return new String(_buf, 0, _len); - } -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/ReceivablePacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/ReceivablePacket.java deleted file mode 100644 index 37fed721b8..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/ReceivablePacket.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.nio.ByteBuffer; - -/** - * @author KenM - * @param - */ -public abstract class ReceivablePacket>extends AbstractPacket implements Runnable -{ - NioNetStringBuffer _sbuf; - - protected ReceivablePacket() - { - } - - protected abstract boolean read(); - - @Override - public abstract void run(); - - /** - * Reads byte[] from the buffer.
    - * Reads as many bytes as the length of the array. - * @param dst : the byte array which will be filled with the data. - */ - protected final void readB(byte[] dst) - { - _buf.get(dst); - } - - /** - * Reads byte[] from the buffer.
    - * Reads as many bytes as the given length (len). Starts to fill the byte array from the given offset to offset + len. - * @param dst : the byte array which will be filled with the data. - * @param offset : starts to fill the byte array from the given offset. - * @param len : the given length of bytes to be read. - */ - protected final void readB(byte[] dst, int offset, int len) - { - _buf.get(dst, offset, len); - } - - /** - * Reads byte from the buffer.
    - * 8bit integer (00) - * @return - */ - protected final int readC() - { - return _buf.get() & 0xFF; - } - - /** - * Reads short from the buffer.
    - * 16bit integer (00 00) - * @return - */ - protected final int readH() - { - return _buf.getShort() & 0xFFFF; - } - - /** - * Reads int from the buffer.
    - * 32bit integer (00 00 00 00) - * @return - */ - protected final int readD() - { - return _buf.getInt(); - } - - /** - * Reads long from the buffer.
    - * 64bit integer (00 00 00 00 00 00 00 00) - * @return - */ - protected final long readQ() - { - return _buf.getLong(); - } - - /** - * Reads double from the buffer.
    - * 64bit double precision float (00 00 00 00 00 00 00 00) - * @return - */ - protected final double readF() - { - return _buf.getDouble(); - } - - /** - * Reads String from the buffer. - * @return - */ - protected final String readS() - { - _sbuf.clear(); - - char ch; - while ((ch = _buf.getChar()) != 0) - { - _sbuf.append(ch); - } - - return _sbuf.toString(); - } - - /** - * packet forge purpose - * @param data - * @param client - * @param sBuffer - */ - public void setBuffers(ByteBuffer data, T client, NioNetStringBuffer sBuffer) - { - _buf = data; - _client = client; - _sbuf = sBuffer; - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/SelectorConfig.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/SelectorConfig.java deleted file mode 100644 index d3df1533f8..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/SelectorConfig.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -/** - * @author KenM - */ -public class SelectorConfig -{ - public int READ_BUFFER_SIZE = 64 * 1024; - - public int WRITE_BUFFER_SIZE = 64 * 1024; - - public int HELPER_BUFFER_COUNT = 20; - - public int HELPER_BUFFER_SIZE = 64 * 1024; - - /** - * Server will try to send MAX_SEND_PER_PASS packets per socket write call
    - * however it may send less if the write buffer was filled before achieving this value. - */ - public int MAX_SEND_PER_PASS = 10; - - /** - * Server will try to read MAX_READ_PER_PASS packets per socket read call
    - * however it may read less if the read buffer was empty before achieving this value. - */ - public int MAX_READ_PER_PASS = 10; - - /** - * Defines how much time (in milis) should the selector sleep, an higher value increases throughput but also increases latency(to a max of the sleep value itself).
    - * Also an extremely high value(usually > 100) will decrease throughput due to the server not doing enough sends per second (depends on max sends per pass).
    - * Recommended values:
    - * 1 for minimal latency.
    - * 10-30 for an latency/troughput trade-off based on your needs. - */ - public int SLEEP_TIME = 10; -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/SelectorThread.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/SelectorThread.java deleted file mode 100644 index 55bdf2e9d6..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/SelectorThread.java +++ /dev/null @@ -1,692 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.ServerSocket; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.channels.SelectionKey; -import java.nio.channels.Selector; -import java.nio.channels.ServerSocketChannel; -import java.nio.channels.SocketChannel; -import java.util.Iterator; -import java.util.LinkedList; - -/** - * Parts of design based on network core from WoodenGil - * @param - * @author KenM - */ -public class SelectorThread>extends Thread -{ - // default BYTE_ORDER - private static final ByteOrder BYTE_ORDER = ByteOrder.LITTLE_ENDIAN; - // default HEADER_SIZE - private static final int HEADER_SIZE = 2; - // Selector - private final Selector _selector; - // Implementations - private final IPacketHandler _packetHandler; - private final IMMOExecutor _executor; - private final IClientFactory _clientFactory; - // Configurations - private final int HELPER_BUFFER_SIZE; - private final int HELPER_BUFFER_COUNT; - private final int MAX_SEND_PER_PASS; - private final int MAX_READ_PER_PASS; - private final long SLEEP_TIME; - // Main Buffers - private final ByteBuffer DIRECT_WRITE_BUFFER; - private final ByteBuffer WRITE_BUFFER; - private final ByteBuffer READ_BUFFER; - // String Buffer - private final NioNetStringBuffer STRING_BUFFER; - // ByteBuffers General Purpose Pool - private final LinkedList _bufferPool; - // Pending Close - private final NioNetStackList> _pendingClose; - - private boolean _shutdown; - - public SelectorThread(SelectorConfig sc, IMMOExecutor executor, IPacketHandler packetHandler, IClientFactory clientFactory) throws IOException - { - super.setName("SelectorThread-" + super.getId()); - - HELPER_BUFFER_SIZE = sc.HELPER_BUFFER_SIZE; - HELPER_BUFFER_COUNT = sc.HELPER_BUFFER_COUNT; - MAX_SEND_PER_PASS = sc.MAX_SEND_PER_PASS; - MAX_READ_PER_PASS = sc.MAX_READ_PER_PASS; - - SLEEP_TIME = sc.SLEEP_TIME; - - DIRECT_WRITE_BUFFER = ByteBuffer.allocateDirect(sc.WRITE_BUFFER_SIZE).order(BYTE_ORDER); - WRITE_BUFFER = ByteBuffer.wrap(new byte[sc.WRITE_BUFFER_SIZE]).order(BYTE_ORDER); - READ_BUFFER = ByteBuffer.wrap(new byte[sc.READ_BUFFER_SIZE]).order(BYTE_ORDER); - - STRING_BUFFER = new NioNetStringBuffer(64 * 1024); - - _pendingClose = new NioNetStackList<>(); - _bufferPool = new LinkedList<>(); - - for (int i = 0; i < HELPER_BUFFER_COUNT; i++) - { - _bufferPool.addLast(ByteBuffer.wrap(new byte[HELPER_BUFFER_SIZE]).order(BYTE_ORDER)); - } - - _packetHandler = packetHandler; - _clientFactory = clientFactory; - _executor = executor; - _selector = Selector.open(); - } - - public void openServerSocket(InetAddress address, int tcpPort) throws IOException - { - final ServerSocketChannel selectable = ServerSocketChannel.open(); - selectable.configureBlocking(false); - - final ServerSocket ss = selectable.socket(); - if (address != null) - { - ss.bind(new InetSocketAddress(address, tcpPort)); - } - else - { - ss.bind(new InetSocketAddress(tcpPort)); - } - - selectable.register(_selector, SelectionKey.OP_ACCEPT); - } - - protected ByteBuffer getPooledBuffer() - { - if (_bufferPool.isEmpty()) - { - return ByteBuffer.wrap(new byte[HELPER_BUFFER_SIZE]).order(BYTE_ORDER); - } - - return _bufferPool.removeFirst(); - } - - protected void recycleBuffer(ByteBuffer buf) - { - if (_bufferPool.size() < HELPER_BUFFER_COUNT) - { - buf.clear(); - _bufferPool.addLast(buf); - } - } - - @SuppressWarnings("unchecked") - @Override - public void run() - { - int selectedKeysCount = 0; - SelectionKey key; - MMOConnection con; - Iterator selectedKeys; - - while (!_shutdown) - { - try - { - selectedKeysCount = _selector.selectNow(); - } - catch (IOException e) - { - e.printStackTrace(); - } - - if (selectedKeysCount > 0) - { - selectedKeys = _selector.selectedKeys().iterator(); - - while (selectedKeys.hasNext()) - { - key = selectedKeys.next(); - selectedKeys.remove(); - - con = (MMOConnection) key.attachment(); - - switch (key.readyOps()) - { - case SelectionKey.OP_CONNECT: - { - finishConnection(key, con); - break; - } - case SelectionKey.OP_ACCEPT: - { - acceptConnection(key, con); - break; - } - case SelectionKey.OP_READ: - { - readPacket(key, con); - break; - } - case SelectionKey.OP_WRITE: - { - writePacket(key, con); - break; - } - case SelectionKey.OP_READ | SelectionKey.OP_WRITE: - { - writePacket(key, con); - if (key.isValid()) - { - readPacket(key, con); - } - break; - } - } - } - } - - synchronized (_pendingClose) - { - while (!_pendingClose.isEmpty()) - { - con = _pendingClose.removeFirst(); - writeClosePacket(con); - closeConnectionImpl(con.getSelectionKey(), con); - } - } - - try - { - Thread.sleep(SLEEP_TIME); - } - catch (InterruptedException e) - { - e.printStackTrace(); - } - } - closeSelectorThread(); - } - - private final void finishConnection(SelectionKey key, MMOConnection con) - { - try - { - ((SocketChannel) key.channel()).finishConnect(); - } - catch (IOException e) - { - con.getClient().onForcedDisconnection(); - closeConnectionImpl(key, con); - } - - // key might have been invalidated on finishConnect() - if (key.isValid()) - { - key.interestOps(key.interestOps() | SelectionKey.OP_READ); - key.interestOps(key.interestOps() & ~SelectionKey.OP_CONNECT); - } - } - - @SuppressWarnings("all") - private void acceptConnection(SelectionKey key, MMOConnection con) - { - final ServerSocketChannel ssc = (ServerSocketChannel) key.channel(); - SocketChannel sc = null; - - try - { - while ((sc = ssc.accept()) != null) - { - sc.configureBlocking(false); - final SelectionKey clientKey = sc.register(_selector, SelectionKey.OP_READ); - con = new MMOConnection<>(this, sc.socket(), clientKey); - con.setClient(_clientFactory.create(con)); - clientKey.attach(con); - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - private void readPacket(SelectionKey key, MMOConnection con) - { - if (con.isClosed()) - { - return; - } - - ByteBuffer buf = con.getReadBuffer(); - if (buf == null) - { - buf = READ_BUFFER; - } - - // if we try to to do a read with no space in the buffer it will read 0 bytes going into infinite loop - if (buf.position() == buf.limit()) - { - System.exit(0); - } - - int result = -2; - - try - { - result = con.read(buf); - } - catch (IOException e) - { - // error handling goes bellow - } - - if (result > 0) - { - buf.flip(); - - final T client = con.getClient(); - for (int i = 0; i < MAX_READ_PER_PASS; i++) - { - if (!tryReadPacket(key, client, buf, con)) - { - return; - } - } - - // only reachable if MAX_READ_PER_PASS has been reached - // check if there are some more bytes in buffer - // and allocate/compact to prevent content lose. - if (buf.remaining() > 0) - { - // did we use the READ_BUFFER ? - if (buf == READ_BUFFER) - { - // move the pending byte to the connections READ_BUFFER - allocateReadBuffer(con); - } - else - { - // move the first byte to the beginning :) - buf.compact(); - } - } - } - else - { - switch (result) - { - case 0: - case -1: - { - closeConnectionImpl(key, con); - break; - } - case -2: - { - con.getClient().onForcedDisconnection(); - closeConnectionImpl(key, con); - break; - } - } - } - } - - private boolean tryReadPacket(SelectionKey key, T client, ByteBuffer buf, MMOConnection con) - { - switch (buf.remaining()) - { - case 0: - { - // buffer is full nothing to read - return false; - } - case 1: - { - // we don't have enough data for header so we need to read - key.interestOps(key.interestOps() | SelectionKey.OP_READ); - - // did we use the READ_BUFFER ? - if (buf == READ_BUFFER) - { - // move the pending byte to the connections READ_BUFFER - allocateReadBuffer(con); - } - else - { - // move the first byte to the beginning :) - buf.compact(); - } - return false; - } - default: - { - // data size excluding header size :> - final int dataPending = (buf.getShort() & 0xFFFF) - HEADER_SIZE; - - // do we got enough bytes for the packet? - if (dataPending <= buf.remaining()) - { - // avoid parsing dummy packets (packets without body) - if (dataPending > 0) - { - final int pos = buf.position(); - parseClientPacket(pos, buf, dataPending, client); - buf.position(pos + dataPending); - } - - // if we are done with this buffer - if (!buf.hasRemaining()) - { - if (buf != READ_BUFFER) - { - con.setReadBuffer(null); - recycleBuffer(buf); - } - else - { - READ_BUFFER.clear(); - } - return false; - } - return true; - } - // we don't have enough bytes for the dataPacket so we need to read - key.interestOps(key.interestOps() | SelectionKey.OP_READ); - - // did we use the READ_BUFFER ? - if (buf == READ_BUFFER) - { - // move it's position - buf.position(buf.position() - HEADER_SIZE); - // move the pending byte to the connections READ_BUFFER - allocateReadBuffer(con); - } - else - { - buf.position(buf.position() - HEADER_SIZE); - buf.compact(); - } - return false; - } - } - } - - private void allocateReadBuffer(MMOConnection con) - { - con.setReadBuffer(getPooledBuffer().put(READ_BUFFER)); - READ_BUFFER.clear(); - } - - private final void parseClientPacket(int pos, ByteBuffer buf, int dataSize, T client) - { - final boolean ret = client.decrypt(buf, dataSize); - if (ret && buf.hasRemaining()) - { - // apply limit - final int limit = buf.limit(); - buf.limit(pos + dataSize); - final ReceivablePacket cp = _packetHandler.handlePacket(buf, client); - if (cp != null) - { - cp._buf = buf; - cp._sbuf = STRING_BUFFER; - cp._client = client; - if (cp.read()) - { - _executor.execute(cp); - } - - cp._buf = null; - cp._sbuf = null; - } - - buf.limit(limit); - } - } - - private void writeClosePacket(MMOConnection con) - { - SendablePacket sp; - synchronized (con.getSendQueue()) - { - if (con.getSendQueue().isEmpty()) - { - return; - } - - while ((sp = con.getSendQueue().removeFirst()) != null) - { - WRITE_BUFFER.clear(); - - putPacketIntoWriteBuffer(con.getClient(), sp); - - WRITE_BUFFER.flip(); - - try - { - con.write(WRITE_BUFFER); - } - catch (IOException e) - { - // error handling goes on the if bellow - } - } - } - } - - protected void writePacket(SelectionKey key, MMOConnection con) - { - if (!prepareWriteBuffer(con)) - { - key.interestOps(key.interestOps() & ~SelectionKey.OP_WRITE); - return; - } - - DIRECT_WRITE_BUFFER.flip(); - - final int size = DIRECT_WRITE_BUFFER.remaining(); - - int result = -1; - - try - { - result = con.write(DIRECT_WRITE_BUFFER); - } - catch (IOException e) - { - // error handling goes on the if bellow - } - - // check if no error happened - if (result >= 0) - { - // check if we written everything - if (result == size) - { - // complete write - synchronized (con.getSendQueue()) - { - if (con.getSendQueue().isEmpty() && !con.hasPendingWriteBuffer()) - { - key.interestOps(key.interestOps() & ~SelectionKey.OP_WRITE); - } - } - } - else - { - // incomplete write - con.createWriteBuffer(DIRECT_WRITE_BUFFER); - } - } - else - { - con.getClient().onForcedDisconnection(); - closeConnectionImpl(key, con); - } - } - - private boolean prepareWriteBuffer(MMOConnection con) - { - boolean hasPending = false; - DIRECT_WRITE_BUFFER.clear(); - - // if there is pending content add it - if (con.hasPendingWriteBuffer()) - { - con.movePendingWriteBufferTo(DIRECT_WRITE_BUFFER); - hasPending = true; - } - - if ((DIRECT_WRITE_BUFFER.remaining() > 1) && !con.hasPendingWriteBuffer()) - { - final NioNetStackList> sendQueue = con.getSendQueue(); - final T client = con.getClient(); - SendablePacket sp; - - for (int i = 0; i < MAX_SEND_PER_PASS; i++) - { - synchronized (con.getSendQueue()) - { - if (sendQueue.isEmpty()) - { - sp = null; - } - else - { - sp = sendQueue.removeFirst(); - } - } - - if (sp == null) - { - break; - } - - hasPending = true; - - // put into WriteBuffer - putPacketIntoWriteBuffer(client, sp); - - WRITE_BUFFER.flip(); - - if (DIRECT_WRITE_BUFFER.remaining() < WRITE_BUFFER.limit()) - { - con.createWriteBuffer(WRITE_BUFFER); - break; - } - DIRECT_WRITE_BUFFER.put(WRITE_BUFFER); - } - } - return hasPending; - } - - private void putPacketIntoWriteBuffer(T client, SendablePacket sp) - { - WRITE_BUFFER.clear(); - - // reserve space for the size - final int headerPos = WRITE_BUFFER.position(); - final int dataPos = headerPos + HEADER_SIZE; - WRITE_BUFFER.position(dataPos); - - // set the write buffer - sp._buf = WRITE_BUFFER; - // write content to buffer - sp.write(); - // delete the write buffer - sp._buf = null; - - // size (inclusive header) - int dataSize = WRITE_BUFFER.position() - dataPos; - WRITE_BUFFER.position(dataPos); - client.encrypt(WRITE_BUFFER, dataSize); - - // recalculate size after encryption - dataSize = WRITE_BUFFER.position() - dataPos; - - WRITE_BUFFER.position(headerPos); - // write header - WRITE_BUFFER.putShort((short) (dataSize + HEADER_SIZE)); - WRITE_BUFFER.position(dataPos + dataSize); - } - - protected void closeConnection(MMOConnection con) - { - synchronized (_pendingClose) - { - _pendingClose.addLast(con); - } - } - - private void closeConnectionImpl(SelectionKey key, MMOConnection con) - { - try - { - // notify connection - con.getClient().onDisconnection(); - } - finally - { - try - { - // close socket and the SocketChannel - con.close(); - } - catch (IOException e) - { - // ignore, we are closing anyway - } - finally - { - con.releaseBuffers(); - // clear attachment - key.attach(null); - // cancel key - key.cancel(); - } - } - } - - public void shutdown() - { - _shutdown = true; - } - - protected void closeSelectorThread() - { - for (SelectionKey key : _selector.keys()) - { - try - { - key.channel().close(); - } - catch (IOException e) - { - // ignore - } - } - - try - { - _selector.close(); - } - catch (IOException e) - { - // Ignore - } - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/SendablePacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/SendablePacket.java deleted file mode 100644 index 4e7350b38b..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/SendablePacket.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.commons.mmocore; - -/** - * @author KenM - * @param - */ -public abstract class SendablePacket>extends AbstractPacket -{ - protected final void putInt(int value) - { - _buf.putInt(value); - } - - protected final void putDouble(double value) - { - _buf.putDouble(value); - } - - protected final void putFloat(float value) - { - _buf.putFloat(value); - } - - /** - * Write byte to the buffer.
    - * 8bit integer (00) - * @param data - */ - protected final void writeC(int data) - { - _buf.put((byte) data); - } - - /** - * Write double to the buffer.
    - * 64bit double precision float (00 00 00 00 00 00 00 00) - * @param value - */ - protected final void writeF(double value) - { - _buf.putDouble(value); - } - - /** - * Write short to the buffer.
    - * 16bit integer (00 00) - * @param value - */ - protected final void writeH(int value) - { - _buf.putShort((short) value); - } - - /** - * Write int to the buffer.
    - * 32bit integer (00 00 00 00) - * @param value - */ - protected final void writeD(int value) - { - _buf.putInt(value); - } - - /** - * Write long to the buffer.
    - * 64bit integer (00 00 00 00 00 00 00 00) - * @param value - */ - protected final void writeQ(long value) - { - _buf.putLong(value); - } - - /** - * Write byte[] to the buffer.
    - * 8bit integer array (00 ...) - * @param data - */ - protected final void writeB(byte[] data) - { - _buf.put(data); - } - - /** - * Write String to the buffer. - * @param text - */ - protected final void writeS(String text) - { - if (text != null) - { - final int len = text.length(); - for (int i = 0; i < len; i++) - { - _buf.putChar(text.charAt(i)); - } - } - - _buf.putChar('\000'); - } - - protected abstract void write(); -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/ClientBasePacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/BaseRecievePacket.java similarity index 53% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/ClientBasePacket.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/BaseRecievePacket.java index 288da4e672..c682cb741d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/ClientBasePacket.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/BaseRecievePacket.java @@ -14,17 +14,22 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.loginserver.network.clientpackets; +package org.l2jmobius.commons.network; + +import java.nio.charset.StandardCharsets; +import java.util.logging.Logger; /** * @version $Revision: 1.2.4.1 $ $Date: 2005/03/27 15:30:12 $ */ -public abstract class ClientBasePacket +public abstract class BaseRecievePacket { + private static final Logger LOGGER = Logger.getLogger(BaseRecievePacket.class.getName()); + private final byte[] _decrypt; private int _off; - public ClientBasePacket(byte[] decrypt) + public BaseRecievePacket(byte[] decrypt) { _decrypt = decrypt; _off = 1; // skip packet type id @@ -41,27 +46,24 @@ public abstract class ClientBasePacket public int readC() { - final int result = _decrypt[_off++] & 0xff; - return result; + return _decrypt[_off++] & 0xff; } public int readH() { - int result = _decrypt[_off++] & 0xff; - result |= (_decrypt[_off++] << 8) & 0xff00; - return result; + return (_decrypt[_off++] & 0xff) | ((_decrypt[_off++] << 8) & 0xff00); } public double readF() { long result = _decrypt[_off++] & 0xff; - result |= (_decrypt[_off++] << 8) & 0xff00; - result |= (_decrypt[_off++] << 0x10) & 0xff0000; - result |= (_decrypt[_off++] << 0x18) & 0xff000000; - result |= (_decrypt[_off++] << 0x20) & 0xff00000000L; - result |= (_decrypt[_off++] << 0x28) & 0xff0000000000L; - result |= (_decrypt[_off++] << 0x30) & 0xff000000000000L; - result |= (_decrypt[_off++] << 0x38) & 0xff00000000000000L; + result |= (_decrypt[_off++] & 0xffL) << 8L; + result |= (_decrypt[_off++] & 0xffL) << 16L; + result |= (_decrypt[_off++] & 0xffL) << 24L; + result |= (_decrypt[_off++] & 0xffL) << 32L; + result |= (_decrypt[_off++] & 0xffL) << 40L; + result |= (_decrypt[_off++] & 0xffL) << 48L; + result |= (_decrypt[_off++] & 0xffL) << 56L; return Double.longBitsToDouble(result); } @@ -70,13 +72,13 @@ public abstract class ClientBasePacket String result = null; try { - result = new String(_decrypt, _off, _decrypt.length - _off, "UTF-16LE"); + result = new String(_decrypt, _off, _decrypt.length - _off, StandardCharsets.UTF_16LE); result = result.substring(0, result.indexOf(0x00)); _off += (result.length() * 2) + 2; } catch (Exception e) { - e.printStackTrace(); + LOGGER.warning(getClass().getSimpleName() + ": " + e.getMessage()); } return result; } @@ -84,11 +86,21 @@ public abstract class ClientBasePacket public byte[] readB(int length) { final byte[] result = new byte[length]; - for (int i = 0; i < length; i++) - { - result[i] = _decrypt[_off + i]; - } + System.arraycopy(_decrypt, _off, result, 0, length); _off += length; return result; } + + public long readQ() + { + long result = _decrypt[_off++] & 0xff; + result |= (_decrypt[_off++] & 0xffL) << 8L; + result |= (_decrypt[_off++] & 0xffL) << 16L; + result |= (_decrypt[_off++] & 0xffL) << 24L; + result |= (_decrypt[_off++] & 0xffL) << 32L; + result |= (_decrypt[_off++] & 0xffL) << 40L; + result |= (_decrypt[_off++] & 0xffL) << 48L; + result |= (_decrypt[_off++] & 0xffL) << 56L; + return result; + } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerBasePacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/BaseSendablePacket.java similarity index 70% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerBasePacket.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/BaseSendablePacket.java index 3850a9aff4..a9d918de4c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerBasePacket.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/BaseSendablePacket.java @@ -14,20 +14,23 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.loginserver.network.serverpackets; +package org.l2jmobius.commons.network; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.logging.Logger; /** * @version $Revision: 1.2.4.1 $ $Date: 2005/03/27 15:30:11 $ */ -public abstract class ServerBasePacket +public abstract class BaseSendablePacket { - ByteArrayOutputStream _bao; + private static final Logger LOGGER = Logger.getLogger(BaseSendablePacket.class.getName()); - protected ServerBasePacket() + private final ByteArrayOutputStream _bao; + + protected BaseSendablePacket() { _bao = new ByteArrayOutputStream(); } @@ -75,7 +78,7 @@ public abstract class ServerBasePacket } catch (Exception e) { - e.printStackTrace(); + LOGGER.warning(getClass().getSimpleName() + ": " + e.getMessage()); } _bao.write(0); @@ -90,10 +93,22 @@ public abstract class ServerBasePacket } catch (IOException e) { - e.printStackTrace(); + LOGGER.warning(getClass().getSimpleName() + ": " + e.getMessage()); } } + protected void writeQ(long value) + { + _bao.write((int) (value & 0xff)); + _bao.write((int) ((value >> 8) & 0xff)); + _bao.write((int) ((value >> 16) & 0xff)); + _bao.write((int) ((value >> 24) & 0xff)); + _bao.write((int) ((value >> 32) & 0xff)); + _bao.write((int) ((value >> 40) & 0xff)); + _bao.write((int) ((value >> 48) & 0xff)); + _bao.write((int) ((value >> 56) & 0xff)); + } + public int getLength() { return _bao.size() + 2; @@ -102,7 +117,8 @@ public abstract class ServerBasePacket public byte[] getBytes() { // if (this instanceof Init) - // writeD(0x00); //reserve for XOR initial key + // writeD(0x00); // reserve for XOR initial key + writeD(0x00); // reserve for checksum final int padding = _bao.size() % 8; @@ -113,6 +129,7 @@ public abstract class ServerBasePacket writeC(0x00); } } + return _bao.toByteArray(); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/ChannelInboundHandler.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/ChannelInboundHandler.java new file mode 100644 index 0000000000..ad99889198 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/ChannelInboundHandler.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network; + +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; + +/** + * @author Nos + * @param + */ +public abstract class ChannelInboundHandler>extends SimpleChannelInboundHandler> +{ + private Channel _channel; + + @Override + public void channelActive(ChannelHandlerContext ctx) + { + _channel = ctx.channel(); + } + + public void setConnectionState(IConnectionState connectionState) + { + _channel.attr(IConnectionState.ATTRIBUTE_KEY).set(connectionState); + } + + public IConnectionState getConnectionState() + { + return _channel != null ? _channel.attr(IConnectionState.ATTRIBUTE_KEY).get() : null; + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOrcMove.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IConnectionState.java similarity index 74% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOrcMove.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IConnectionState.java index 9a6b31d044..bab6e67c43 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/ExOrcMove.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IConnectionState.java @@ -14,18 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.serverpackets; +package org.l2jmobius.commons.network; + +import io.netty.util.AttributeKey; /** - * Format: (ch). - * @author -Wooden- + * @author Nos */ -public class ExOrcMove extends GameServerPacket +public interface IConnectionState { - @Override - protected void writeImpl() - { - writeC(0xfe); - writeH(0x44); - } + AttributeKey ATTRIBUTE_KEY = AttributeKey.valueOf(IConnectionState.class, ""); } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IAcceptFilter.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/ICrypt.java similarity index 78% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IAcceptFilter.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/ICrypt.java index 802a32a0ae..2c3622e407 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IAcceptFilter.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/ICrypt.java @@ -14,14 +14,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.commons.mmocore; +package org.l2jmobius.commons.network; -import java.nio.channels.SocketChannel; +import io.netty.buffer.ByteBuf; /** - * @author KenM + * @author Nos */ -public interface IAcceptFilter +public interface ICrypt { - boolean accept(SocketChannel sc); -} \ No newline at end of file + void encrypt(ByteBuf buf); + + void decrypt(ByteBuf buf); +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IIncomingPacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IIncomingPacket.java new file mode 100644 index 0000000000..61d305e740 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IIncomingPacket.java @@ -0,0 +1,34 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network; + +/** + * @author Nos + * @param + */ +public interface IIncomingPacket +{ + /** + * Reads a packet. + * @param client the client + * @param packet the packet reader + * @return {@code true} if packet was read successfully, {@code false} otherwise. + */ + boolean read(T client, PacketReader packet); + + void run(T client) throws Exception; +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/AbstractPacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IIncomingPackets.java similarity index 72% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/AbstractPacket.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IIncomingPackets.java index 0f2a305101..c98b94fae2 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/mmocore/AbstractPacket.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IIncomingPackets.java @@ -14,22 +14,19 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.commons.mmocore; +package org.l2jmobius.commons.network; -import java.nio.ByteBuffer; +import java.util.Set; /** - * @author KenM + * @author Nos * @param */ -public abstract class AbstractPacket> +public interface IIncomingPacketsextends IConnectionState { - protected ByteBuffer _buf; + int getPacketId(); - T _client; + IIncomingPacket newIncomingPacket(); - public T getClient() - { - return _client; - } -} \ No newline at end of file + Set getConnectionStates(); +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IMMOExecutor.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IOutgoingPacket.java similarity index 71% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IMMOExecutor.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IOutgoingPacket.java index 3c8fafa0be..1761f93804 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IMMOExecutor.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/IOutgoingPacket.java @@ -14,13 +14,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.commons.mmocore; +package org.l2jmobius.commons.network; /** - * @author KenM - * @param + * @author Nos */ -public interface IMMOExecutor> +public interface IOutgoingPacket { - void execute(ReceivablePacket packet); -} \ No newline at end of file + /** + * @param packet the packet writer + * @return {@code true} if packet was writen successfully, {@code false} otherwise. + */ + boolean write(PacketWriter packet); +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/NetworkManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/NetworkManager.java new file mode 100644 index 0000000000..e096ac98fd --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/NetworkManager.java @@ -0,0 +1,76 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network; + +import java.util.logging.Logger; + +import io.netty.bootstrap.ServerBootstrap; +import io.netty.buffer.PooledByteBufAllocator; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; + +/** + * @author Nos + */ +public class NetworkManager +{ + private static final Logger LOGGER = Logger.getLogger(NetworkManager.class.getName()); + + private final ServerBootstrap _serverBootstrap; + private final String _host; + private final int _port; + + private ChannelFuture _channelFuture; + + public NetworkManager(EventLoopGroup bossGroup, EventLoopGroup workerGroup, ChannelInitializer clientInitializer, String host, int port) + { + // @formatter:off + _serverBootstrap = new ServerBootstrap() + .group(bossGroup, workerGroup) + .channel(NioServerSocketChannel.class) + .childHandler(clientInitializer) + .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT); + // @formatter:on + _host = host; + _port = port; + } + + public ChannelFuture getChannelFuture() + { + return _channelFuture; + } + + public void start() throws InterruptedException + { + if ((_channelFuture != null) && !_channelFuture.isDone()) + { + return; + } + + _channelFuture = _serverBootstrap.bind(_host, _port).sync(); + LOGGER.info(getClass().getSimpleName() + ": Listening on " + _host + ":" + _port); + } + + public void stop() throws InterruptedException + { + _channelFuture.channel().close().sync(); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/PacketReader.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/PacketReader.java new file mode 100644 index 0000000000..b216cc581a --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/PacketReader.java @@ -0,0 +1,163 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network; + +import io.netty.buffer.ByteBuf; + +/** + * @author Nos + */ +public class PacketReader +{ + private final ByteBuf _buf; + + public PacketReader(ByteBuf buf) + { + _buf = buf; + } + + /** + * Gets the readable bytes. + * @return the readable bytes + */ + public int getReadableBytes() + { + return _buf.readableBytes(); + } + + /** + * Reads an unsigned byte. + * @return the unsigned byte + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 1} + */ + public short readC() + { + return _buf.readUnsignedByte(); + } + + /** + * Reads an unsigned short. + * @return the unsigned short + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 2} + */ + public int readH() + { + return _buf.readUnsignedShortLE(); + } + + /** + * Reads an integer. + * @return the integer + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 4} + */ + public int readD() + { + return _buf.readIntLE(); + } + + /** + * Reads a long. + * @return the long + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 8} + */ + public long readQ() + { + return _buf.readLongLE(); + } + + /** + * Reads a float. + * @return the float + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 4} + */ + public float readE() + { + return Float.intBitsToFloat(_buf.readIntLE()); + } + + /** + * Reads a double. + * @return the double + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 8} + */ + public double readF() + { + return Double.longBitsToDouble(_buf.readLongLE()); + } + + /** + * Reads a string. + * @return the string + * @throws IndexOutOfBoundsException if string {@code null} terminator is not found within {@code readableBytes} + */ + public String readS() + { + final StringBuilder sb = new StringBuilder(); + char chr; + while ((chr = Character.reverseBytes(_buf.readChar())) != 0) + { + sb.append(chr); + } + return sb.toString(); + } + + /** + * Reads a fixed length string. + * @return the string + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code 2 + String.length * 2} + */ + public String readString() + { + final StringBuilder sb = new StringBuilder(); + final int stringLength = _buf.readShortLE(); + if ((stringLength * 2) > _buf.readableBytes()) + { + throw new IndexOutOfBoundsException("readerIndex(" + _buf.readerIndex() + ") + length(" + (stringLength * 2) + ") exceeds writerIndex(" + _buf.writerIndex() + "): " + _buf); + } + + for (int i = 0; i < stringLength; i++) + { + sb.append(Character.reverseBytes(_buf.readChar())); + } + return sb.toString(); + } + + /** + * Reads a byte array. + * @param length the length + * @return the byte array + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code length} + */ + public byte[] readB(int length) + { + final byte[] result = new byte[length]; + _buf.readBytes(result); + return result; + } + + /** + * Reads a byte array. + * @param dst the destination + * @param dstIndex the destination index to start writing the bytes from + * @param length the length + * @throws IndexOutOfBoundsException if {@code readableBytes} is less than {@code length}, if the specified dstIndex is less than 0 or if {@code dstIndex + length} is greater than {@code dst.length} + */ + public void readB(byte[] dst, int dstIndex, int length) + { + _buf.readBytes(dst, dstIndex, length); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/PacketWriter.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/PacketWriter.java new file mode 100644 index 0000000000..bccc246395 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/PacketWriter.java @@ -0,0 +1,141 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network; + +import io.netty.buffer.ByteBuf; + +/** + * @author Nos + */ +public class PacketWriter +{ + private final ByteBuf _buf; + + public PacketWriter(ByteBuf buf) + { + _buf = buf; + } + + /** + * Gets the writable bytes. + * @return the writable bytes + */ + public int getWritableBytes() + { + return _buf.writableBytes(); + } + + /** + * Writes a byte. + * @param value the byte (The 24 high-order bits are ignored) + */ + public void writeC(int value) + { + _buf.writeByte(value); + } + + /** + * Writes a short. + * @param value the short (The 16 high-order bits are ignored) + */ + public void writeH(int value) + { + _buf.writeShortLE(value); + } + + /** + * Writes an integer. + * @param value the integer + */ + public void writeD(int value) + { + _buf.writeIntLE(value); + } + + /** + * Writes a long. + * @param value the long + */ + public void writeQ(long value) + { + _buf.writeLongLE(value); + } + + /** + * Writes a float. + * @param value the float + */ + public void writeE(float value) + { + _buf.writeIntLE(Float.floatToIntBits(value)); + } + + /** + * Writes a double. + * @param value the double + */ + public void writeF(double value) + { + _buf.writeLongLE(Double.doubleToLongBits(value)); + } + + /** + * Writes a string. + * @param value the string + */ + public void writeS(String value) + { + if (value != null) + { + for (int i = 0; i < value.length(); i++) + { + _buf.writeChar(Character.reverseBytes(value.charAt(i))); + } + } + + _buf.writeChar(0); + } + + /** + * Writes a string with fixed length specified as [short length, char[length] data]. + * @param value the string + */ + public void writeString(String value) + { + if (value != null) + { + _buf.writeShortLE(value.length()); + for (int i = 0; i < value.length(); i++) + { + _buf.writeChar(Character.reverseBytes(value.charAt(i))); + } + } + else + { + _buf.writeShort(0); + } + } + + /** + * Writes a byte array. + * @param bytes the byte array + */ + public void writeB(byte[] bytes) + { + _buf.writeBytes(bytes); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/CryptCodec.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/CryptCodec.java new file mode 100644 index 0000000000..fabd4d036f --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/CryptCodec.java @@ -0,0 +1,71 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network.codecs; + +import java.util.List; + +import org.l2jmobius.commons.network.ICrypt; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageCodec; + +/** + * @author Nos + */ +public class CryptCodec extends ByteToMessageCodec +{ + private final ICrypt _crypt; + + public CryptCodec(ICrypt crypt) + { + super(); + _crypt = crypt; + } + + /* + * (non-Javadoc) + * @see io.netty.handler.codec.ByteToMessageCodec#encode(io.netty.channel.ChannelHandlerContext, java.lang.Object, io.netty.buffer.ByteBuf) + */ + @Override + protected void encode(ChannelHandlerContext ctx, ByteBuf msg, ByteBuf out) + { + // Check if there are any data to encrypt. + if (!msg.isReadable()) + { + return; + } + + msg.resetReaderIndex(); + _crypt.encrypt(msg); + msg.resetReaderIndex(); + out.writeBytes(msg); + } + + /* + * (non-Javadoc) + * @see io.netty.handler.codec.ByteToMessageCodec#decode(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, java.util.List) + */ + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) + { + in.resetReaderIndex(); + _crypt.decrypt(in); + in.readerIndex(in.writerIndex()); + out.add(in.copy(0, in.writerIndex())); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/LengthFieldBasedFrameEncoder.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/LengthFieldBasedFrameEncoder.java new file mode 100644 index 0000000000..5850d76b1e --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/LengthFieldBasedFrameEncoder.java @@ -0,0 +1,41 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network.codecs; + +import java.util.List; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandler.Sharable; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.MessageToMessageEncoder; + +/** + * @author Nos + */ +@Sharable +public class LengthFieldBasedFrameEncoder extends MessageToMessageEncoder +{ + @Override + protected void encode(ChannelHandlerContext ctx, ByteBuf msg, List out) + { + final ByteBuf buf = ctx.alloc().buffer(2); + final short length = (short) (msg.readableBytes() + 2); + buf.writeShortLE(length); + out.add(buf); + out.add(msg.retain()); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/PacketDecoder.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/PacketDecoder.java new file mode 100644 index 0000000000..e12fb135ab --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/PacketDecoder.java @@ -0,0 +1,91 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network.codecs; + +import java.util.List; +import java.util.logging.Logger; + +import org.l2jmobius.commons.network.IConnectionState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IIncomingPackets; +import org.l2jmobius.commons.network.PacketReader; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageDecoder; + +/** + * @author Nos + * @param + */ +public class PacketDecoderextends ByteToMessageDecoder +{ + private static final Logger LOGGER = Logger.getLogger(PacketDecoder.class.getName()); + + private final IIncomingPackets[] _incomingPackets; + private final T _client; + + public PacketDecoder(IIncomingPackets[] incomingPackets, T client) + { + _incomingPackets = incomingPackets; + _client = client; + } + + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) + { + if ((in == null) || !in.isReadable()) + { + return; + } + + try + { + final short packetId = in.readUnsignedByte(); + if (packetId >= _incomingPackets.length) + { + LOGGER.finer("Unknown packet: " + Integer.toHexString(packetId)); + return; + } + + final IIncomingPackets incomingPacket = _incomingPackets[packetId]; + if (incomingPacket == null) + { + LOGGER.finer("Unknown packet: " + Integer.toHexString(packetId)); + return; + } + + final IConnectionState connectionState = ctx.channel().attr(IConnectionState.ATTRIBUTE_KEY).get(); + if ((connectionState == null) || !incomingPacket.getConnectionStates().contains(connectionState)) + { + // LOGGER.warning(incomingPacket + ": Connection at invalid state: " + connectionState + " Required States: " + incomingPacket.getConnectionStates()); + return; + } + + final IIncomingPacket packet = incomingPacket.newIncomingPacket(); + if ((packet != null) && packet.read(_client, new PacketReader(in))) + { + out.add(packet); + } + } + finally + { + // We always consider that we read whole packet. + in.readerIndex(in.writerIndex()); + } + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/PacketEncoder.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/PacketEncoder.java new file mode 100644 index 0000000000..fe9bbbb974 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/network/codecs/PacketEncoder.java @@ -0,0 +1,71 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.network.codecs; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandler.Sharable; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.MessageToByteEncoder; + +/** + * @author Nos + */ +@Sharable +public class PacketEncoder extends MessageToByteEncoder +{ + private static final Logger LOGGER = Logger.getLogger(PacketEncoder.class.getName()); + + private final int _maxPacketSize; + + public PacketEncoder(int maxPacketSize) + { + super(); + _maxPacketSize = maxPacketSize; + } + + @Override + protected void encode(ChannelHandlerContext ctx, IOutgoingPacket packet, ByteBuf out) + { + try + { + if (packet.write(new PacketWriter(out))) + { + if (out.writerIndex() > _maxPacketSize) + { + throw new IllegalStateException("Packet (" + packet + ") size (" + out.writerIndex() + ") is bigger than the expected client limit (" + _maxPacketSize + ")"); + } + } + else + { + // Avoid sending the packet + out.clear(); + } + } + catch (Throwable e) + { + LOGGER.log(Level.WARNING, "Failed sending Packet(" + packet + ")", e); + // Avoid sending the packet if some exception happened + out.clear(); + } + } +} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/BlowfishEngine.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/BlowfishEngine.java new file mode 100644 index 0000000000..9304a3acb9 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/BlowfishEngine.java @@ -0,0 +1,1456 @@ +/* + * This file is based on the Blowfish Engine that is part of the BouncyCastle JCE. + * Copyright (c) 2000 The Legion Of The Bouncy Castle (http://www.bouncycastle.org) + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies + * or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE + * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package org.l2jmobius.commons.util.crypt; + +import java.io.IOException; + +public class BlowfishEngine +{ + private static final int[] KP = + { + 0x243F6A88, + 0x85A308D3, + 0x13198A2E, + 0x03707344, + 0xA4093822, + 0x299F31D0, + 0x082EFA98, + 0xEC4E6C89, + 0x452821E6, + 0x38D01377, + 0xBE5466CF, + 0x34E90C6C, + 0xC0AC29B7, + 0xC97C50DD, + 0x3F84D5B5, + 0xB5470917, + 0x9216D5D9, + 0x8979FB1B + }; + private static final int[] KS0 = + { + 0xD1310BA6, + 0x98DFB5AC, + 0x2FFD72DB, + 0xD01ADFB7, + 0xB8E1AFED, + 0x6A267E96, + 0xBA7C9045, + 0xF12C7F99, + 0x24A19947, + 0xB3916CF7, + 0x0801F2E2, + 0x858EFC16, + 0x636920D8, + 0x71574E69, + 0xA458FEA3, + 0xF4933D7E, + 0x0D95748F, + 0x728EB658, + 0x718BCD58, + 0x82154AEE, + 0x7B54A41D, + 0xC25A59B5, + 0x9C30D539, + 0x2AF26013, + 0xC5D1B023, + 0x286085F0, + 0xCA417918, + 0xB8DB38EF, + 0x8E79DCB0, + 0x603A180E, + 0x6C9E0E8B, + 0xB01E8A3E, + 0xD71577C1, + 0xBD314B27, + 0x78AF2FDA, + 0x55605C60, + 0xE65525F3, + 0xAA55AB94, + 0x57489862, + 0x63E81440, + 0x55CA396A, + 0x2AAB10B6, + 0xB4CC5C34, + 0x1141E8CE, + 0xA15486AF, + 0x7C72E993, + 0xB3EE1411, + 0x636FBC2A, + 0x2BA9C55D, + 0x741831F6, + 0xCE5C3E16, + 0x9B87931E, + 0xAFD6BA33, + 0x6C24CF5C, + 0x7A325381, + 0x28958677, + 0x3B8F4898, + 0x6B4BB9AF, + 0xC4BFE81B, + 0x66282193, + 0x61D809CC, + 0xFB21A991, + 0x487CAC60, + 0x5DEC8032, + 0xEF845D5D, + 0xE98575B1, + 0xDC262302, + 0xEB651B88, + 0x23893E81, + 0xD396ACC5, + 0x0F6D6FF3, + 0x83F44239, + 0x2E0B4482, + 0xA4842004, + 0x69C8F04A, + 0x9E1F9B5E, + 0x21C66842, + 0xF6E96C9A, + 0x670C9C61, + 0xABD388F0, + 0x6A51A0D2, + 0xD8542F68, + 0x960FA728, + 0xAB5133A3, + 0x6EEF0B6C, + 0x137A3BE4, + 0xBA3BF050, + 0x7EFB2A98, + 0xA1F1651D, + 0x39AF0176, + 0x66CA593E, + 0x82430E88, + 0x8CEE8619, + 0x456F9FB4, + 0x7D84A5C3, + 0x3B8B5EBE, + 0xE06F75D8, + 0x85C12073, + 0x401A449F, + 0x56C16AA6, + 0x4ED3AA62, + 0x363F7706, + 0x1BFEDF72, + 0x429B023D, + 0x37D0D724, + 0xD00A1248, + 0xDB0FEAD3, + 0x49F1C09B, + 0x075372C9, + 0x80991B7B, + 0x25D479D8, + 0xF6E8DEF7, + 0xE3FE501A, + 0xB6794C3B, + 0x976CE0BD, + 0x04C006BA, + 0xC1A94FB6, + 0x409F60C4, + 0x5E5C9EC2, + 0x196A2463, + 0x68FB6FAF, + 0x3E6C53B5, + 0x1339B2EB, + 0x3B52EC6F, + 0x6DFC511F, + 0x9B30952C, + 0xCC814544, + 0xAF5EBD09, + 0xBEE3D004, + 0xDE334AFD, + 0x660F2807, + 0x192E4BB3, + 0xC0CBA857, + 0x45C8740F, + 0xD20B5F39, + 0xB9D3FBDB, + 0x5579C0BD, + 0x1A60320A, + 0xD6A100C6, + 0x402C7279, + 0x679F25FE, + 0xFB1FA3CC, + 0x8EA5E9F8, + 0xDB3222F8, + 0x3C7516DF, + 0xFD616B15, + 0x2F501EC8, + 0xAD0552AB, + 0x323DB5FA, + 0xFD238760, + 0x53317B48, + 0x3E00DF82, + 0x9E5C57BB, + 0xCA6F8CA0, + 0x1A87562E, + 0xDF1769DB, + 0xD542A8F6, + 0x287EFFC3, + 0xAC6732C6, + 0x8C4F5573, + 0x695B27B0, + 0xBBCA58C8, + 0xE1FFA35D, + 0xB8F011A0, + 0x10FA3D98, + 0xFD2183B8, + 0x4AFCB56C, + 0x2DD1D35B, + 0x9A53E479, + 0xB6F84565, + 0xD28E49BC, + 0x4BFB9790, + 0xE1DDF2DA, + 0xA4CB7E33, + 0x62FB1341, + 0xCEE4C6E8, + 0xEF20CADA, + 0x36774C01, + 0xD07E9EFE, + 0x2BF11FB4, + 0x95DBDA4D, + 0xAE909198, + 0xEAAD8E71, + 0x6B93D5A0, + 0xD08ED1D0, + 0xAFC725E0, + 0x8E3C5B2F, + 0x8E7594B7, + 0x8FF6E2FB, + 0xF2122B64, + 0x8888B812, + 0x900DF01C, + 0x4FAD5EA0, + 0x688FC31C, + 0xD1CFF191, + 0xB3A8C1AD, + 0x2F2F2218, + 0xBE0E1777, + 0xEA752DFE, + 0x8B021FA1, + 0xE5A0CC0F, + 0xB56F74E8, + 0x18ACF3D6, + 0xCE89E299, + 0xB4A84FE0, + 0xFD13E0B7, + 0x7CC43B81, + 0xD2ADA8D9, + 0x165FA266, + 0x80957705, + 0x93CC7314, + 0x211A1477, + 0xE6AD2065, + 0x77B5FA86, + 0xC75442F5, + 0xFB9D35CF, + 0xEBCDAF0C, + 0x7B3E89A0, + 0xD6411BD3, + 0xAE1E7E49, + 0x00250E2D, + 0x2071B35E, + 0x226800BB, + 0x57B8E0AF, + 0x2464369B, + 0xF009B91E, + 0x5563911D, + 0x59DFA6AA, + 0x78C14389, + 0xD95A537F, + 0x207D5BA2, + 0x02E5B9C5, + 0x83260376, + 0x6295CFA9, + 0x11C81968, + 0x4E734A41, + 0xB3472DCA, + 0x7B14A94A, + 0x1B510052, + 0x9A532915, + 0xD60F573F, + 0xBC9BC6E4, + 0x2B60A476, + 0x81E67400, + 0x08BA6FB5, + 0x571BE91F, + 0xF296EC6B, + 0x2A0DD915, + 0xB6636521, + 0xE7B9F9B6, + 0xFF34052E, + 0xC5855664, + 0x53B02D5D, + 0xA99F8FA1, + 0x08BA4799, + 0x6E85076A + }; + private static final int[] KS1 = + { + 0x4B7A70E9, + 0xB5B32944, + 0xDB75092E, + 0xC4192623, + 0xAD6EA6B0, + 0x49A7DF7D, + 0x9CEE60B8, + 0x8FEDB266, + 0xECAA8C71, + 0x699A17FF, + 0x5664526C, + 0xC2B19EE1, + 0x193602A5, + 0x75094C29, + 0xA0591340, + 0xE4183A3E, + 0x3F54989A, + 0x5B429D65, + 0x6B8FE4D6, + 0x99F73FD6, + 0xA1D29C07, + 0xEFE830F5, + 0x4D2D38E6, + 0xF0255DC1, + 0x4CDD2086, + 0x8470EB26, + 0x6382E9C6, + 0x021ECC5E, + 0x09686B3F, + 0x3EBAEFC9, + 0x3C971814, + 0x6B6A70A1, + 0x687F3584, + 0x52A0E286, + 0xB79C5305, + 0xAA500737, + 0x3E07841C, + 0x7FDEAE5C, + 0x8E7D44EC, + 0x5716F2B8, + 0xB03ADA37, + 0xF0500C0D, + 0xF01C1F04, + 0x0200B3FF, + 0xAE0CF51A, + 0x3CB574B2, + 0x25837A58, + 0xDC0921BD, + 0xD19113F9, + 0x7CA92FF6, + 0x94324773, + 0x22F54701, + 0x3AE5E581, + 0x37C2DADC, + 0xC8B57634, + 0x9AF3DDA7, + 0xA9446146, + 0x0FD0030E, + 0xECC8C73E, + 0xA4751E41, + 0xE238CD99, + 0x3BEA0E2F, + 0x3280BBA1, + 0x183EB331, + 0x4E548B38, + 0x4F6DB908, + 0x6F420D03, + 0xF60A04BF, + 0x2CB81290, + 0x24977C79, + 0x5679B072, + 0xBCAF89AF, + 0xDE9A771F, + 0xD9930810, + 0xB38BAE12, + 0xDCCF3F2E, + 0x5512721F, + 0x2E6B7124, + 0x501ADDE6, + 0x9F84CD87, + 0x7A584718, + 0x7408DA17, + 0xBC9F9ABC, + 0xE94B7D8C, + 0xEC7AEC3A, + 0xDB851DFA, + 0x63094366, + 0xC464C3D2, + 0xEF1C1847, + 0x3215D908, + 0xDD433B37, + 0x24C2BA16, + 0x12A14D43, + 0x2A65C451, + 0x50940002, + 0x133AE4DD, + 0x71DFF89E, + 0x10314E55, + 0x81AC77D6, + 0x5F11199B, + 0x043556F1, + 0xD7A3C76B, + 0x3C11183B, + 0x5924A509, + 0xF28FE6ED, + 0x97F1FBFA, + 0x9EBABF2C, + 0x1E153C6E, + 0x86E34570, + 0xEAE96FB1, + 0x860E5E0A, + 0x5A3E2AB3, + 0x771FE71C, + 0x4E3D06FA, + 0x2965DCB9, + 0x99E71D0F, + 0x803E89D6, + 0x5266C825, + 0x2E4CC978, + 0x9C10B36A, + 0xC6150EBA, + 0x94E2EA78, + 0xA5FC3C53, + 0x1E0A2DF4, + 0xF2F74EA7, + 0x361D2B3D, + 0x1939260F, + 0x19C27960, + 0x5223A708, + 0xF71312B6, + 0xEBADFE6E, + 0xEAC31F66, + 0xE3BC4595, + 0xA67BC883, + 0xB17F37D1, + 0x018CFF28, + 0xC332DDEF, + 0xBE6C5AA5, + 0x65582185, + 0x68AB9802, + 0xEECEA50F, + 0xDB2F953B, + 0x2AEF7DAD, + 0x5B6E2F84, + 0x1521B628, + 0x29076170, + 0xECDD4775, + 0x619F1510, + 0x13CCA830, + 0xEB61BD96, + 0x0334FE1E, + 0xAA0363CF, + 0xB5735C90, + 0x4C70A239, + 0xD59E9E0B, + 0xCBAADE14, + 0xEECC86BC, + 0x60622CA7, + 0x9CAB5CAB, + 0xB2F3846E, + 0x648B1EAF, + 0x19BDF0CA, + 0xA02369B9, + 0x655ABB50, + 0x40685A32, + 0x3C2AB4B3, + 0x319EE9D5, + 0xC021B8F7, + 0x9B540B19, + 0x875FA099, + 0x95F7997E, + 0x623D7DA8, + 0xF837889A, + 0x97E32D77, + 0x11ED935F, + 0x16681281, + 0x0E358829, + 0xC7E61FD6, + 0x96DEDFA1, + 0x7858BA99, + 0x57F584A5, + 0x1B227263, + 0x9B83C3FF, + 0x1AC24696, + 0xCDB30AEB, + 0x532E3054, + 0x8FD948E4, + 0x6DBC3128, + 0x58EBF2EF, + 0x34C6FFEA, + 0xFE28ED61, + 0xEE7C3C73, + 0x5D4A14D9, + 0xE864B7E3, + 0x42105D14, + 0x203E13E0, + 0x45EEE2B6, + 0xA3AAABEA, + 0xDB6C4F15, + 0xFACB4FD0, + 0xC742F442, + 0xEF6ABBB5, + 0x654F3B1D, + 0x41CD2105, + 0xD81E799E, + 0x86854DC7, + 0xE44B476A, + 0x3D816250, + 0xCF62A1F2, + 0x5B8D2646, + 0xFC8883A0, + 0xC1C7B6A3, + 0x7F1524C3, + 0x69CB7492, + 0x47848A0B, + 0x5692B285, + 0x095BBF00, + 0xAD19489D, + 0x1462B174, + 0x23820E00, + 0x58428D2A, + 0x0C55F5EA, + 0x1DADF43E, + 0x233F7061, + 0x3372F092, + 0x8D937E41, + 0xD65FECF1, + 0x6C223BDB, + 0x7CDE3759, + 0xCBEE7460, + 0x4085F2A7, + 0xCE77326E, + 0xA6078084, + 0x19F8509E, + 0xE8EFD855, + 0x61D99735, + 0xA969A7AA, + 0xC50C06C2, + 0x5A04ABFC, + 0x800BCADC, + 0x9E447A2E, + 0xC3453484, + 0xFDD56705, + 0x0E1E9EC9, + 0xDB73DBD3, + 0x105588CD, + 0x675FDA79, + 0xE3674340, + 0xC5C43465, + 0x713E38D8, + 0x3D28F89E, + 0xF16DFF20, + 0x153E21E7, + 0x8FB03D4A, + 0xE6E39F2B, + 0xDB83ADF7 + }; + private static final int[] KS2 = + { + 0xE93D5A68, + 0x948140F7, + 0xF64C261C, + 0x94692934, + 0x411520F7, + 0x7602D4F7, + 0xBCF46B2E, + 0xD4A20068, + 0xD4082471, + 0x3320F46A, + 0x43B7D4B7, + 0x500061AF, + 0x1E39F62E, + 0x97244546, + 0x14214F74, + 0xBF8B8840, + 0x4D95FC1D, + 0x96B591AF, + 0x70F4DDD3, + 0x66A02F45, + 0xBFBC09EC, + 0x03BD9785, + 0x7FAC6DD0, + 0x31CB8504, + 0x96EB27B3, + 0x55FD3941, + 0xDA2547E6, + 0xABCA0A9A, + 0x28507825, + 0x530429F4, + 0x0A2C86DA, + 0xE9B66DFB, + 0x68DC1462, + 0xD7486900, + 0x680EC0A4, + 0x27A18DEE, + 0x4F3FFEA2, + 0xE887AD8C, + 0xB58CE006, + 0x7AF4D6B6, + 0xAACE1E7C, + 0xD3375FEC, + 0xCE78A399, + 0x406B2A42, + 0x20FE9E35, + 0xD9F385B9, + 0xEE39D7AB, + 0x3B124E8B, + 0x1DC9FAF7, + 0x4B6D1856, + 0x26A36631, + 0xEAE397B2, + 0x3A6EFA74, + 0xDD5B4332, + 0x6841E7F7, + 0xCA7820FB, + 0xFB0AF54E, + 0xD8FEB397, + 0x454056AC, + 0xBA489527, + 0x55533A3A, + 0x20838D87, + 0xFE6BA9B7, + 0xD096954B, + 0x55A867BC, + 0xA1159A58, + 0xCCA92963, + 0x99E1DB33, + 0xA62A4A56, + 0x3F3125F9, + 0x5EF47E1C, + 0x9029317C, + 0xFDF8E802, + 0x04272F70, + 0x80BB155C, + 0x05282CE3, + 0x95C11548, + 0xE4C66D22, + 0x48C1133F, + 0xC70F86DC, + 0x07F9C9EE, + 0x41041F0F, + 0x404779A4, + 0x5D886E17, + 0x325F51EB, + 0xD59BC0D1, + 0xF2BCC18F, + 0x41113564, + 0x257B7834, + 0x602A9C60, + 0xDFF8E8A3, + 0x1F636C1B, + 0x0E12B4C2, + 0x02E1329E, + 0xAF664FD1, + 0xCAD18115, + 0x6B2395E0, + 0x333E92E1, + 0x3B240B62, + 0xEEBEB922, + 0x85B2A20E, + 0xE6BA0D99, + 0xDE720C8C, + 0x2DA2F728, + 0xD0127845, + 0x95B794FD, + 0x647D0862, + 0xE7CCF5F0, + 0x5449A36F, + 0x877D48FA, + 0xC39DFD27, + 0xF33E8D1E, + 0x0A476341, + 0x992EFF74, + 0x3A6F6EAB, + 0xF4F8FD37, + 0xA812DC60, + 0xA1EBDDF8, + 0x991BE14C, + 0xDB6E6B0D, + 0xC67B5510, + 0x6D672C37, + 0x2765D43B, + 0xDCD0E804, + 0xF1290DC7, + 0xCC00FFA3, + 0xB5390F92, + 0x690FED0B, + 0x667B9FFB, + 0xCEDB7D9C, + 0xA091CF0B, + 0xD9155EA3, + 0xBB132F88, + 0x515BAD24, + 0x7B9479BF, + 0x763BD6EB, + 0x37392EB3, + 0xCC115979, + 0x8026E297, + 0xF42E312D, + 0x6842ADA7, + 0xC66A2B3B, + 0x12754CCC, + 0x782EF11C, + 0x6A124237, + 0xB79251E7, + 0x06A1BBE6, + 0x4BFB6350, + 0x1A6B1018, + 0x11CAEDFA, + 0x3D25BDD8, + 0xE2E1C3C9, + 0x44421659, + 0x0A121386, + 0xD90CEC6E, + 0xD5ABEA2A, + 0x64AF674E, + 0xDA86A85F, + 0xBEBFE988, + 0x64E4C3FE, + 0x9DBC8057, + 0xF0F7C086, + 0x60787BF8, + 0x6003604D, + 0xD1FD8346, + 0xF6381FB0, + 0x7745AE04, + 0xD736FCCC, + 0x83426B33, + 0xF01EAB71, + 0xB0804187, + 0x3C005E5F, + 0x77A057BE, + 0xBDE8AE24, + 0x55464299, + 0xBF582E61, + 0x4E58F48F, + 0xF2DDFDA2, + 0xF474EF38, + 0x8789BDC2, + 0x5366F9C3, + 0xC8B38E74, + 0xB475F255, + 0x46FCD9B9, + 0x7AEB2661, + 0x8B1DDF84, + 0x846A0E79, + 0x915F95E2, + 0x466E598E, + 0x20B45770, + 0x8CD55591, + 0xC902DE4C, + 0xB90BACE1, + 0xBB8205D0, + 0x11A86248, + 0x7574A99E, + 0xB77F19B6, + 0xE0A9DC09, + 0x662D09A1, + 0xC4324633, + 0xE85A1F02, + 0x09F0BE8C, + 0x4A99A025, + 0x1D6EFE10, + 0x1AB93D1D, + 0x0BA5A4DF, + 0xA186F20F, + 0x2868F169, + 0xDCB7DA83, + 0x573906FE, + 0xA1E2CE9B, + 0x4FCD7F52, + 0x50115E01, + 0xA70683FA, + 0xA002B5C4, + 0x0DE6D027, + 0x9AF88C27, + 0x773F8641, + 0xC3604C06, + 0x61A806B5, + 0xF0177A28, + 0xC0F586E0, + 0x006058AA, + 0x30DC7D62, + 0x11E69ED7, + 0x2338EA63, + 0x53C2DD94, + 0xC2C21634, + 0xBBCBEE56, + 0x90BCB6DE, + 0xEBFC7DA1, + 0xCE591D76, + 0x6F05E409, + 0x4B7C0188, + 0x39720A3D, + 0x7C927C24, + 0x86E3725F, + 0x724D9DB9, + 0x1AC15BB4, + 0xD39EB8FC, + 0xED545578, + 0x08FCA5B5, + 0xD83D7CD3, + 0x4DAD0FC4, + 0x1E50EF5E, + 0xB161E6F8, + 0xA28514D9, + 0x6C51133C, + 0x6FD5C7E7, + 0x56E14EC4, + 0x362ABFCE, + 0xDDC6C837, + 0xD79A3234, + 0x92638212, + 0x670EFA8E, + 0x406000E0 + }; + private static final int[] KS3 = + { + 0x3A39CE37, + 0xD3FAF5CF, + 0xABC27737, + 0x5AC52D1B, + 0x5CB0679E, + 0x4FA33742, + 0xD3822740, + 0x99BC9BBE, + 0xD5118E9D, + 0xBF0F7315, + 0xD62D1C7E, + 0xC700C47B, + 0xB78C1B6B, + 0x21A19045, + 0xB26EB1BE, + 0x6A366EB4, + 0x5748AB2F, + 0xBC946E79, + 0xC6A376D2, + 0x6549C2C8, + 0x530FF8EE, + 0x468DDE7D, + 0xD5730A1D, + 0x4CD04DC6, + 0x2939BBDB, + 0xA9BA4650, + 0xAC9526E8, + 0xBE5EE304, + 0xA1FAD5F0, + 0x6A2D519A, + 0x63EF8CE2, + 0x9A86EE22, + 0xC089C2B8, + 0x43242EF6, + 0xA51E03AA, + 0x9CF2D0A4, + 0x83C061BA, + 0x9BE96A4D, + 0x8FE51550, + 0xBA645BD6, + 0x2826A2F9, + 0xA73A3AE1, + 0x4BA99586, + 0xEF5562E9, + 0xC72FEFD3, + 0xF752F7DA, + 0x3F046F69, + 0x77FA0A59, + 0x80E4A915, + 0x87B08601, + 0x9B09E6AD, + 0x3B3EE593, + 0xE990FD5A, + 0x9E34D797, + 0x2CF0B7D9, + 0x022B8B51, + 0x96D5AC3A, + 0x017DA67D, + 0xD1CF3ED6, + 0x7C7D2D28, + 0x1F9F25CF, + 0xADF2B89B, + 0x5AD6B472, + 0x5A88F54C, + 0xE029AC71, + 0xE019A5E6, + 0x47B0ACFD, + 0xED93FA9B, + 0xE8D3C48D, + 0x283B57CC, + 0xF8D56629, + 0x79132E28, + 0x785F0191, + 0xED756055, + 0xF7960E44, + 0xE3D35E8C, + 0x15056DD4, + 0x88F46DBA, + 0x03A16125, + 0x0564F0BD, + 0xC3EB9E15, + 0x3C9057A2, + 0x97271AEC, + 0xA93A072A, + 0x1B3F6D9B, + 0x1E6321F5, + 0xF59C66FB, + 0x26DCF319, + 0x7533D928, + 0xB155FDF5, + 0x03563482, + 0x8ABA3CBB, + 0x28517711, + 0xC20AD9F8, + 0xABCC5167, + 0xCCAD925F, + 0x4DE81751, + 0x3830DC8E, + 0x379D5862, + 0x9320F991, + 0xEA7A90C2, + 0xFB3E7BCE, + 0x5121CE64, + 0x774FBE32, + 0xA8B6E37E, + 0xC3293D46, + 0x48DE5369, + 0x6413E680, + 0xA2AE0810, + 0xDD6DB224, + 0x69852DFD, + 0x09072166, + 0xB39A460A, + 0x6445C0DD, + 0x586CDECF, + 0x1C20C8AE, + 0x5BBEF7DD, + 0x1B588D40, + 0xCCD2017F, + 0x6BB4E3BB, + 0xDDA26A7E, + 0x3A59FF45, + 0x3E350A44, + 0xBCB4CDD5, + 0x72EACEA8, + 0xFA6484BB, + 0x8D6612AE, + 0xBF3C6F47, + 0xD29BE463, + 0x542F5D9E, + 0xAEC2771B, + 0xF64E6370, + 0x740E0D8D, + 0xE75B1357, + 0xF8721671, + 0xAF537D5D, + 0x4040CB08, + 0x4EB4E2CC, + 0x34D2466A, + 0x0115AF84, + 0xE1B00428, + 0x95983A1D, + 0x06B89FB4, + 0xCE6EA048, + 0x6F3F3B82, + 0x3520AB82, + 0x011A1D4B, + 0x277227F8, + 0x611560B1, + 0xE7933FDC, + 0xBB3A792B, + 0x344525BD, + 0xA08839E1, + 0x51CE794B, + 0x2F32C9B7, + 0xA01FBAC9, + 0xE01CC87E, + 0xBCC7D1F6, + 0xCF0111C3, + 0xA1E8AAC7, + 0x1A908749, + 0xD44FBD9A, + 0xD0DADECB, + 0xD50ADA38, + 0x0339C32A, + 0xC6913667, + 0x8DF9317C, + 0xE0B12B4F, + 0xF79E59B7, + 0x43F5BB3A, + 0xF2D519FF, + 0x27D9459C, + 0xBF97222C, + 0x15E6FC2A, + 0x0F91FC71, + 0x9B941525, + 0xFAE59361, + 0xCEB69CEB, + 0xC2A86459, + 0x12BAA8D1, + 0xB6C1075E, + 0xE3056A0C, + 0x10D25065, + 0xCB03A442, + 0xE0EC6E0E, + 0x1698DB3B, + 0x4C98A0BE, + 0x3278E964, + 0x9F1F9532, + 0xE0D392DF, + 0xD3A0342B, + 0x8971F21E, + 0x1B0A7441, + 0x4BA3348C, + 0xC5BE7120, + 0xC37632D8, + 0xDF359F8D, + 0x9B992F2E, + 0xE60B6F47, + 0x0FE3F11D, + 0xE54CDA54, + 0x1EDAD891, + 0xCE6279CF, + 0xCD3E7E6F, + 0x1618B166, + 0xFD2C1D05, + 0x848FD2C5, + 0xF6FB2299, + 0xF523F357, + 0xA6327623, + 0x93A83531, + 0x56CCCD02, + 0xACF08162, + 0x5A75EBB5, + 0x6E163697, + 0x88D273CC, + 0xDE966292, + 0x81B949D0, + 0x4C50901B, + 0x71C65614, + 0xE6C6C7BD, + 0x327A140A, + 0x45E1D006, + 0xC3F27B9A, + 0xC9AA53FD, + 0x62A80F00, + 0xBB25BFE2, + 0x35BDD2F6, + 0x71126905, + 0xB2040222, + 0xB6CBCF7C, + 0xCD769C2B, + 0x53113EC0, + 0x1640E3D3, + 0x38ABBD60, + 0x2547ADF0, + 0xBA38209C, + 0xF746CE76, + 0x77AFA1C5, + 0x20756060, + 0x85CBFE4E, + 0x8AE88DD8, + 0x7AAAF9B0, + 0x4CF9AA7E, + 0x1948C25C, + 0x02FB8A8C, + 0x01C36AE4, + 0xD6EBE1F9, + 0x90D4F869, + 0xA65CDEA0, + 0x3F09252D, + 0xC208E69F, + 0xB74E6132, + 0xCE77E25B, + 0x578FDFE3, + 0x3AC372E6 + }; + + private static final int ROUNDS = 16; + private static final int BLOCK_SIZE = 8; // bytes = 64 bits + private static final int SBOX_SK = 256; + private static final int P_SZ = ROUNDS + 2; + private final int[] S0; // the s-boxes + private final int[] S1; // the s-boxes + private final int[] S2; // the s-boxes + private final int[] S3; // the s-boxes + private final int[] P; // the p-array + private byte[] workingKey = null; + + public BlowfishEngine() + { + S0 = new int[SBOX_SK]; + S1 = new int[SBOX_SK]; + S2 = new int[SBOX_SK]; + S3 = new int[SBOX_SK]; + P = new int[P_SZ]; + } + + /** + * Initialize a Blowfish cipher. + * @param key the key used to set up the cipher + */ + public void init(byte[] key) + { + workingKey = key; + setKey(workingKey); + } + + public String getAlgorithmName() + { + return "Blowfish"; + } + + public int getBlockSize() + { + return BLOCK_SIZE; + } + + private int func(int x) + { + return (((S0[(x >>> 24)] + S1[(x >>> 16) & 0xff]) ^ S2[(x >>> 8) & 0xff]) + S3[x & 0xff]); + } + + /** + * apply the encryption cycle to each value pair in the table. + * @param xl + * @param xr + * @param table + */ + @SuppressWarnings("all") + private void processTable(int xl, int xr, int[] table) + { + final int size = table.length; + for (int s = 0; s < size; s += 2) + { + xl ^= P[0]; + xr ^= func(xl) ^ P[1]; + xl ^= func(xr) ^ P[2]; + xr ^= func(xl) ^ P[3]; + xl ^= func(xr) ^ P[4]; + xr ^= func(xl) ^ P[5]; + xl ^= func(xr) ^ P[6]; + xr ^= func(xl) ^ P[7]; + xl ^= func(xr) ^ P[8]; + xr ^= func(xl) ^ P[9]; + xl ^= func(xr) ^ P[10]; + xr ^= func(xl) ^ P[11]; + xl ^= func(xr) ^ P[12]; + xr ^= func(xl) ^ P[13]; + xl ^= func(xr) ^ P[14]; + xr ^= func(xl) ^ P[15]; + xl ^= func(xr) ^ P[16]; + xr ^= P[17]; + table[s] = xr; + table[s + 1] = xl; + xr = xl; // end of cycle swap + xl = table[s]; + } + } + + private void setKey(byte[] key) + { + /** + * - comments are from _Applied Crypto_, Schneier, p338.
    + * Please be careful comparing the two, AC numbers the arrays from 1, the enclosed code from 0.
    + * (1) Initialize the S-boxes and the P-array, with a fixed string This string contains the hexadecimal digits of pi (3.141...) + */ + System.arraycopy(KS0, 0, S0, 0, SBOX_SK); + System.arraycopy(KS1, 0, S1, 0, SBOX_SK); + System.arraycopy(KS2, 0, S2, 0, SBOX_SK); + System.arraycopy(KS3, 0, S3, 0, SBOX_SK); + System.arraycopy(KP, 0, P, 0, P_SZ); + /** + * (2) Now, XOR P[0] with the first 32 bits of the key, XOR P[1] with the second 32-bits of the key, and so on for all bits of the key (up to P[17]).
    + * Repeatedly cycle through the key bits until the entire P-array has been XOR-ed with the key bits + */ + final int keyLength = key.length; + int keyIndex = 0; + for (int i = 0; i < P_SZ; i++) + { + // get the 32 bits of the key, in 4 * 8 bit chunks + int data = 0x0000000; + for (int j = 0; j < 4; j++) + { + // create a 32 bit block + data = (data << 8) | (key[keyIndex++] & 0xff); + // wrap when we get to the end of the key + if (keyIndex >= keyLength) + { + keyIndex = 0; + } + } + // XOR the newly created 32 bit chunk onto the P-array + P[i] ^= data; + } + /** + * (3) Encrypt the all-zero string with the Blowfish algorithm, using the subkeys described in (1) and (2)
    + * (4) Replace P1 and P2 with the output of step (3)
    + * (5) Encrypt the output of step(3) using the Blowfish algorithm, with the modified subkeys.
    + * (6) Replace P3 and P4 with the output of step (5)
    + * (7) Continue the process, replacing all elements of the P-array and then all four S-boxes in order, with the output of the continuously changing Blowfish algorithm + */ + processTable(0, 0, P); + processTable(P[P_SZ - 2], P[P_SZ - 1], S0); + processTable(S0[SBOX_SK - 2], S0[SBOX_SK - 1], S1); + processTable(S1[SBOX_SK - 2], S1[SBOX_SK - 1], S2); + processTable(S2[SBOX_SK - 2], S2[SBOX_SK - 1], S3); + } + + /** + * Method to encrypt the block at the given index.
    + * The encrypted block goes directly to the source array at the given index. + * @param src source array with the plain data + * @param srcIndex index where the block to encrypt is located + * @throws IllegalStateException The cipher was not yet initialized + * @throws IOException The source array is too small to hold a block at the given index + */ + public void tryEncryptBlock(byte[] src, int srcIndex) throws IOException + { + if (workingKey == null) + { + throw new IllegalStateException("Blowfish not initialized"); + } + if ((srcIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("input buffer too short"); + } + encryptBlock(src, srcIndex); + } + + /** + * Method to encrypt the block at the given index.
    + * The encrypted block goes to the destination array at the given index. + * @param src source array with the plain data + * @param srcIndex index where the block to encrypt is located + * @param dst destination array the encryption will go to + * @param dstIndex index where the encrypted block is to be stored + * @throws IllegalStateException The cipher was not yet initialized + * @throws IOException The source or destination array is too small to hold a block at the given index + */ + public void tryEncryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) throws IOException + { + if (workingKey == null) + { + throw new IllegalStateException("Blowfish not initialized"); + } + if ((srcIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("input buffer too short"); + } + if ((dstIndex + BLOCK_SIZE) > dst.length) + { + throw new IOException("output buffer too short"); + } + encryptBlock(src, srcIndex, dst, dstIndex); + } + + /** + * Method to encrypt the block at the given index.
    + * The encrypted block goes directly to the source array at the given
    + * index.
    + *
    + * This method does not perform any error checking. This could be
    + * usefull when code calling this method performs size checks already or
    + * perfroming steps to ensure nothing can go wrong.
    + *
    + * If you want error checking use {@link #tryEncryptBlock(byte[], int)}. + * @param src source array with the plain data + * @param srcIndex index where the block to encrypt is located + */ + public void encryptBlock(byte[] src, int srcIndex) + { + encryptBlock(src, srcIndex, src, srcIndex); + } + + /** + * Method to encrypt the block at the given index.
    + * The encrypted block goes to the destination array at the given index.
    + *
    + * This method does not perform any error checking. This could be
    + * usefull when code calling this method performs size checks already or
    + * perfroming steps to ensure nothing can go wrong.
    + *
    + * If you want error checking use {@link #tryEncryptBlock(byte[], int, byte[], int)}. + * @param src source array with the plain data + * @param srcIndex index where the block to encrypt is located + * @param dst destination array the encryption will go to + * @param dstIndex index where the encrypted block is to be stored + */ + public void encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) + { + int xl = bytesTo32bits(src, srcIndex); + int xr = bytesTo32bits(src, srcIndex + 4); + xl ^= P[0]; + xr ^= func(xl) ^ P[1]; + xl ^= func(xr) ^ P[2]; + xr ^= func(xl) ^ P[3]; + xl ^= func(xr) ^ P[4]; + xr ^= func(xl) ^ P[5]; + xl ^= func(xr) ^ P[6]; + xr ^= func(xl) ^ P[7]; + xl ^= func(xr) ^ P[8]; + xr ^= func(xl) ^ P[9]; + xl ^= func(xr) ^ P[10]; + xr ^= func(xl) ^ P[11]; + xl ^= func(xr) ^ P[12]; + xr ^= func(xl) ^ P[13]; + xl ^= func(xr) ^ P[14]; + xr ^= func(xl) ^ P[15]; + xl ^= func(xr) ^ P[16]; + xr ^= P[17]; + bits32ToBytes(xr, dst, dstIndex); + bits32ToBytes(xl, dst, dstIndex + 4); + } + + /** + * Method to decrypt the block at the given index.
    + * The decrypted block goes directly to the source array at the given
    + * index. + * @param src source array with the encrypted data + * @param srcIndex index where the block to decrypt is located + * @throws IllegalStateException The cipher was not yet initialized + * @throws IOException The source array is too small to hold a block at the given index + */ + public void tryDecryptBlock(byte[] src, int srcIndex) throws IOException + { + if (workingKey == null) + { + throw new IllegalStateException("Blowfish not initialized"); + } + if ((srcIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("input buffer too short"); + } + decryptBlock(src, srcIndex); + } + + /** + * Method to decrypt the block at the given index.
    + * The decrypted block goes to the destination array at the given index.
    + * @param src source array with the plain data + * @param srcIndex index where the block to decrypt is located + * @param dst destination array the decryption will go to + * @param dstIndex index where the decrypted block is to be stored + * @throws IllegalStateException The cipher was not yet initialized + * @throws IOException The source or destination array is too small to hold a block at the given index + */ + public void tryDecryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) throws IOException + { + if (workingKey == null) + { + throw new IllegalStateException("Blowfish not initialized"); + } + if ((srcIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("input buffer too short"); + } + if ((dstIndex + BLOCK_SIZE) > src.length) + { + throw new IOException("output buffer too short"); + } + decryptBlock(src, srcIndex, dst, dstIndex); + } + + /** + * Method to decrypt the block at the given index.
    + * The decrypted block goes directly to the source array at the given
    + * index.
    + *
    + * This method does not perform any error checking. This could be
    + * usefull when code calling this method performs size checks already or
    + * perfroming steps to ensure nothing can go wrong.
    + *
    + * If you want error checking use {@link #tryDecryptBlock(byte[], int)}. + * @param src source array with the encrypted data + * @param srcIndex index where the block to decrypt is located + */ + public void decryptBlock(byte[] src, int srcIndex) + { + decryptBlock(src, srcIndex, src, srcIndex); + } + + /** + * Method to decrypt the block at the given index.
    + * The decrypted block goes to the destination array at the given index.
    + *
    + * This method does not perform any error checking. This could be
    + * usefull when code calling this method performs size checks already or
    + * perfroming steps to ensure nothing can go wrong.
    + *
    + * If you want error checking use {@link #tryDecryptBlock(byte[], int, byte[], int)}. + * @param src source array with the plain data + * @param srcIndex index where the block to decrypt is located + * @param dst destination array the decryption will go to + * @param dstIndex index where the decrypted block is to be stored + * @throws IllegalStateException The cipher was not yet initialized + */ + public void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) + { + int xl = bytesTo32bits(src, srcIndex); + int xr = bytesTo32bits(src, srcIndex + 4); + xl ^= P[17]; + xr ^= func(xl) ^ P[16]; + xl ^= func(xr) ^ P[15]; + xr ^= func(xl) ^ P[14]; + xl ^= func(xr) ^ P[13]; + xr ^= func(xl) ^ P[12]; + xl ^= func(xr) ^ P[11]; + xr ^= func(xl) ^ P[10]; + xl ^= func(xr) ^ P[9]; + xr ^= func(xl) ^ P[8]; + xl ^= func(xr) ^ P[7]; + xr ^= func(xl) ^ P[6]; + xl ^= func(xr) ^ P[5]; + xr ^= func(xl) ^ P[4]; + xl ^= func(xr) ^ P[3]; + xr ^= func(xl) ^ P[2]; + xl ^= func(xr) ^ P[1]; + xr ^= P[0]; + bits32ToBytes(xr, dst, dstIndex); + bits32ToBytes(xl, dst, dstIndex + 4); + } + + /** + * Method to construct an int from the source array.
    + * 4 bytes are used from the given index.
    + *
    + * This method does not do any error checking. + * @param src source array with the bytes + * @param srcIndex the index to extract the int from + * @return the extracted integer + */ + private int bytesTo32bits(byte[] src, int srcIndex) + { + return ((src[srcIndex + 3] & 0xff) << 24) | ((src[srcIndex + 2] & 0xff) << 16) | ((src[srcIndex + 1] & 0xff) << 8) | (src[srcIndex] & 0xff); + } + + /** + * Method to decompose an int into a byte array.
    + *
    + * This method does not do any error checking. + * @param in the integer to decompose into bytes + * @param dst the destination array the decomposed int goes to + * @param dstIndex the index in the destination array the decomposed int will be stored at + */ + private void bits32ToBytes(int in, byte[] dst, int dstIndex) + { + dst[dstIndex] = (byte) in; + dst[dstIndex + 1] = (byte) (in >> 8); + dst[dstIndex + 2] = (byte) (in >> 16); + dst[dstIndex + 3] = (byte) (in >> 24); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/LoginCrypt.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/LoginCrypt.java new file mode 100644 index 0000000000..c6e45d369d --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/LoginCrypt.java @@ -0,0 +1,148 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.util.crypt; + +import javax.crypto.SecretKey; + +import org.l2jmobius.commons.network.ICrypt; +import org.l2jmobius.commons.util.Rnd; + +import io.netty.buffer.ByteBuf; + +/** + * @author NosBit + */ +public class LoginCrypt implements ICrypt +{ + private static final byte[] STATIC_BLOWFISH_KEY = + { + (byte) 0x6b, + (byte) 0x60, + (byte) 0xcb, + (byte) 0x5b, + (byte) 0x82, + (byte) 0xce, + (byte) 0x90, + (byte) 0xb1, + (byte) 0xcc, + (byte) 0x2b, + (byte) 0x6c, + (byte) 0x55, + (byte) 0x6c, + (byte) 0x6c, + (byte) 0x6c, + (byte) 0x6c + }; + + private static final BlowfishEngine STATIC_BLOWFISH_ENGINE = new BlowfishEngine(); + static + { + STATIC_BLOWFISH_ENGINE.init(STATIC_BLOWFISH_KEY); + } + + private final BlowfishEngine _blowfishEngine = new BlowfishEngine(); + private boolean _static = true; + + public LoginCrypt(SecretKey blowfishKey) + { + _blowfishEngine.init(blowfishKey.getEncoded()); + } + + /* + * (non-Javadoc) + * @see com.l2jserver.commons.network.ICrypt#encrypt(io.netty.buffer.ByteBuf) + */ + @Override + public void encrypt(ByteBuf buf) + { + // Checksum & XOR Key or Checksum only + buf.writeZero(_static ? 16 : 12); + + // Padding + buf.writeZero(8 - (buf.readableBytes() % 8)); + + if (_static) + { + _static = false; + + int key = Rnd.nextInt(); + buf.skipBytes(4); // The first 4 bytes are ignored + while (buf.readerIndex() < (buf.writerIndex() - 8)) + { + int data = buf.readIntLE(); + key += data; + data ^= key; + buf.setIntLE(buf.readerIndex() - 4, data); + } + buf.setIntLE(buf.readerIndex(), key); + + buf.resetReaderIndex(); + + final byte[] block = new byte[8]; + while (buf.isReadable(8)) + { + buf.readBytes(block); + STATIC_BLOWFISH_ENGINE.encryptBlock(block, 0); + buf.setBytes(buf.readerIndex() - block.length, block); + } + } + else + { + int checksum = 0; + while (buf.isReadable(8)) + { + checksum ^= buf.readIntLE(); + } + buf.setIntLE(buf.readerIndex(), checksum); + + buf.resetReaderIndex(); + + final byte[] block = new byte[8]; + while (buf.isReadable(8)) + { + buf.readBytes(block); + _blowfishEngine.encryptBlock(block, 0); + buf.setBytes(buf.readerIndex() - block.length, block); + } + } + } + + /* + * (non-Javadoc) + * @see com.l2jserver.commons.network.ICrypt#decrypt(io.netty.buffer.ByteBuf) + */ + @Override + public void decrypt(ByteBuf buf) + { + // Packet size must be multiple of 8 + if ((buf.readableBytes() % 8) != 0) + { + buf.clear(); + return; + } + + final byte[] block = new byte[8]; + while (buf.isReadable(8)) + { + buf.readBytes(block); + _blowfishEngine.decryptBlock(block, 0); + buf.setBytes(buf.readerIndex() - block.length, block); + } + + // TODO: verify checksum also dont forget! + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/NewCrypt.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/NewCrypt.java new file mode 100644 index 0000000000..eac64a51ba --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/NewCrypt.java @@ -0,0 +1,218 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.util.crypt; + +/** + * Class to use a blowfish cipher with ECB processing.
    + * Static methods are present to append/check the checksum of
    + * packets exchanged between the following partners:
    + * Login Server <-> Game Client
    + * Login Server <-> Game Server
    + * Also a static method is provided for the initial xor encryption between Login Server <-> Game Client. + */ +public class NewCrypt +{ + private final BlowfishEngine _cipher; + + /** + * @param blowfishKey + */ + public NewCrypt(byte[] blowfishKey) + { + _cipher = new BlowfishEngine(); + _cipher.init(blowfishKey); + } + + public NewCrypt(String key) + { + this(key.getBytes()); + } + + /** + * Equivalent to calling {@link #verifyChecksum(byte[], int, int)} with parameters (raw, 0, raw.length) + * @param raw data array to be verified + * @return true when the checksum of the data is valid, false otherwise + */ + public static boolean verifyChecksum(byte[] raw) + { + return verifyChecksum(raw, 0, raw.length); + } + + /** + * Method to verify the checksum of a packet received by login server from game client.
    + * This is also used for game server <-> login server communication. + * @param raw data array to be verified + * @param offset at which offset to start verifying + * @param size number of bytes to verify + * @return true if the checksum of the data is valid, false otherwise + */ + public static boolean verifyChecksum(byte[] raw, int offset, int size) + { + // check if size is multiple of 4 and if there is more then only the checksum + if (((size & 3) != 0) || (size <= 4)) + { + return false; + } + + long chksum = 0; + final int count = size - 4; + long check = -1; + int i; + + for (i = offset; i < count; i += 4) + { + check = raw[i] & 0xff; + check |= (raw[i + 1] << 8) & 0xff00; + check |= (raw[i + 2] << 0x10) & 0xff0000; + check |= (raw[i + 3] << 0x18) & 0xff000000; + + chksum ^= check; + } + + check = raw[i] & 0xff; + check |= (raw[i + 1] << 8) & 0xff00; + check |= (raw[i + 2] << 0x10) & 0xff0000; + check |= (raw[i + 3] << 0x18) & 0xff000000; + + return check == chksum; + } + + /** + * Equivalent to calling {@link #appendChecksum(byte[], int, int)} with parameters (raw, 0, raw.length) + * @param raw data array to compute the checksum from + */ + public static void appendChecksum(byte[] raw) + { + appendChecksum(raw, 0, raw.length); + } + + /** + * Method to append packet checksum at the end of the packet. + * @param raw data array to compute the checksum from + * @param offset offset where to start in the data array + * @param size number of bytes to compute the checksum from + */ + public static void appendChecksum(byte[] raw, int offset, int size) + { + long chksum = 0; + final int count = size - 4; + long ecx; + int i; + + for (i = offset; i < count; i += 4) + { + ecx = raw[i] & 0xff; + ecx |= (raw[i + 1] << 8) & 0xff00; + ecx |= (raw[i + 2] << 0x10) & 0xff0000; + ecx |= (raw[i + 3] << 0x18) & 0xff000000; + + chksum ^= ecx; + } + + ecx = raw[i] & 0xff; + ecx |= (raw[i + 1] << 8) & 0xff00; + ecx |= (raw[i + 2] << 0x10) & 0xff0000; + ecx |= (raw[i + 3] << 0x18) & 0xff000000; + + raw[i] = (byte) (chksum & 0xff); + raw[i + 1] = (byte) ((chksum >> 0x08) & 0xff); + raw[i + 2] = (byte) ((chksum >> 0x10) & 0xff); + raw[i + 3] = (byte) ((chksum >> 0x18) & 0xff); + } + + /** + * Packet is first XOR encoded with key then, the last 4 bytes are overwritten with the the XOR "key".
    + * Thus this assume that there is enough room for the key to fit without overwriting data. + * @param raw The raw bytes to be encrypted + * @param key The 4 bytes (int) XOR key + */ + public static void encXORPass(byte[] raw, int key) + { + encXORPass(raw, 0, raw.length, key); + } + + /** + * Packet is first XOR encoded with key then, the last 4 bytes are overwritten with the the XOR "key".
    + * Thus this assume that there is enough room for the key to fit without overwriting data. + * @param raw The raw bytes to be encrypted + * @param offset The beginning of the data to be encrypted + * @param size Length of the data to be encrypted + * @param key The 4 bytes (int) XOR key + */ + static void encXORPass(byte[] raw, int offset, int size, int key) + { + final int stop = size - 8; + int pos = 4 + offset; + int edx; + int ecx = key; // Initial xor key + + while (pos < stop) + { + edx = raw[pos] & 0xFF; + edx |= (raw[pos + 1] & 0xFF) << 8; + edx |= (raw[pos + 2] & 0xFF) << 16; + edx |= (raw[pos + 3] & 0xFF) << 24; + + ecx += edx; + + edx ^= ecx; + + raw[pos++] = (byte) (edx & 0xFF); + raw[pos++] = (byte) ((edx >> 8) & 0xFF); + raw[pos++] = (byte) ((edx >> 16) & 0xFF); + raw[pos++] = (byte) ((edx >> 24) & 0xFF); + } + + raw[pos++] = (byte) (ecx & 0xFF); + raw[pos++] = (byte) ((ecx >> 8) & 0xFF); + raw[pos++] = (byte) ((ecx >> 16) & 0xFF); + raw[pos++] = (byte) ((ecx >> 24) & 0xFF); + } + + /** + * Method to decrypt using Blowfish-Blockcipher in ECB mode.
    + * The results will be directly placed inside {@code raw} array.
    + * This method does not do any error checking, since the calling code
    + * should ensure sizes. + * @param raw the data array to be decrypted + * @param offset the offset at which to start decrypting + * @param size the number of bytes to be decrypted + */ + public void decrypt(byte[] raw, int offset, int size) + { + for (int i = offset; i < (offset + size); i += 8) + { + _cipher.decryptBlock(raw, i); + } + } + + /** + * Method to encrypt using Blowfish-Blockcipher in ECB mode.
    + * The results will be directly placed inside {@code raw} array.
    + * This method does not do any error checking, since the calling code should ensure sizes. + * @param raw the data array to be decrypted + * @param offset the offset at which to start decrypting + * @param size the number of bytes to be decrypted + */ + public void crypt(byte[] raw, int offset, int size) + { + for (int i = offset; i < (offset + size); i += 8) + { + _cipher.encryptBlock(raw, i); + } + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/ScrambledKeyPair.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/ScrambledKeyPair.java new file mode 100644 index 0000000000..44a1c08b67 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/crypt/ScrambledKeyPair.java @@ -0,0 +1,88 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.util.crypt; + +import java.math.BigInteger; +import java.security.Key; +import java.security.KeyPair; +import java.security.interfaces.RSAPublicKey; +import java.util.logging.Logger; + +public class ScrambledKeyPair +{ + private static final Logger LOGGER = Logger.getLogger(ScrambledKeyPair.class.getName()); + private final KeyPair _pair; + private final byte[] _scrambledModulus; + + public ScrambledKeyPair(KeyPair pPair) + { + _pair = pPair; + _scrambledModulus = scrambleModulus(((RSAPublicKey) _pair.getPublic()).getModulus()); + } + + private byte[] scrambleModulus(BigInteger modulus) + { + byte[] scrambledMod = modulus.toByteArray(); + + if ((scrambledMod.length == 0x81) && (scrambledMod[0] == 0x00)) + { + final byte[] temp = new byte[0x80]; + System.arraycopy(scrambledMod, 1, temp, 0, 0x80); + scrambledMod = temp; + } + // step 1 : 0x4d-0x50 <-> 0x00-0x04 + for (int i = 0; i < 4; i++) + { + final byte temp = scrambledMod[0x00 + i]; + scrambledMod[0x00 + i] = scrambledMod[0x4d + i]; + scrambledMod[0x4d + i] = temp; + } + // step 2 : xor first 0x40 bytes with last 0x40 bytes + for (int i = 0; i < 0x40; i++) + { + scrambledMod[i] = (byte) (scrambledMod[i] ^ scrambledMod[0x40 + i]); + } + // step 3 : xor bytes 0x0d-0x10 with bytes 0x34-0x38 + for (int i = 0; i < 4; i++) + { + scrambledMod[0x0d + i] = (byte) (scrambledMod[0x0d + i] ^ scrambledMod[0x34 + i]); + } + // step 4 : xor last 0x40 bytes with first 0x40 bytes + for (int i = 0; i < 0x40; i++) + { + scrambledMod[0x40 + i] = (byte) (scrambledMod[0x40 + i] ^ scrambledMod[i]); + } + LOGGER.finer("Modulus was scrambled"); + + return scrambledMod; + } + + public byte[] getScrambledModulus() + { + return _scrambledModulus; + } + + public Key getPrivateKey() + { + return _pair.getPrivate(); + } + + public Key getPublicKey() + { + return _pair.getPublic(); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java index 8e471b9e37..0e056ed04e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java @@ -17,12 +17,10 @@ package org.l2jmobius.gameserver; import java.awt.GraphicsEnvironment; +import java.awt.Toolkit; import java.io.File; import java.io.FileInputStream; -import java.io.IOException; import java.io.InputStream; -import java.net.InetAddress; -import java.net.UnknownHostException; import java.util.Calendar; import java.util.logging.LogManager; import java.util.logging.Logger; @@ -31,8 +29,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.enums.ServerMode; -import org.l2jmobius.commons.mmocore.SelectorConfig; -import org.l2jmobius.commons.mmocore.SelectorThread; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.DeadlockDetector; import org.l2jmobius.commons.util.Util; @@ -125,8 +121,8 @@ import org.l2jmobius.gameserver.model.siege.clanhalls.BanditStrongholdSiege; import org.l2jmobius.gameserver.model.siege.clanhalls.DevastatedCastle; import org.l2jmobius.gameserver.model.siege.clanhalls.FortressOfResistance; import org.l2jmobius.gameserver.model.spawn.AutoSpawn; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.GamePacketHandler; +import org.l2jmobius.gameserver.network.ClientNetworkManager; +import org.l2jmobius.gameserver.network.loginserver.LoginServerNetworkManager; import org.l2jmobius.gameserver.script.EventDroplist; import org.l2jmobius.gameserver.script.faenor.FaenorScriptEngine; import org.l2jmobius.gameserver.scripting.ScriptEngineManager; @@ -138,14 +134,16 @@ public class GameServer { private static final Logger LOGGER = Logger.getLogger(GameServer.class.getName()); - private static SelectorThread _selectorThread; - private static LoginServerThread _loginThread; - private static GamePacketHandler _gamePacketHandler; private static TelnetStatusThread _statusServer; private static GameServer INSTANCE; public static final Calendar dateTimeServerStarted = Calendar.getInstance(); + public long getUsedMemoryMB() + { + return (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1048576; + } + public GameServer() throws Exception { final long serverLoadStart = Chronos.currentTimeMillis(); @@ -488,17 +486,6 @@ public class GameServer { PrecautionaryRestartManager.getInstance(); } - - System.gc(); - - Util.printSection("Info"); - LOGGER.info("Maximum Numbers of Connected Players: " + Config.MAXIMUM_ONLINE_USERS); - LOGGER.info("GameServer Started, free memory " + (((Runtime.getRuntime().maxMemory() - Runtime.getRuntime().totalMemory()) + Runtime.getRuntime().freeMemory()) / 1048576) + " Mb of " + (Runtime.getRuntime().maxMemory() / 1048576) + " Mb"); - LOGGER.info("Used memory: " + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1048576) + " MB"); - - Util.printSection("Status"); - LOGGER.info("Server Loaded in " + ((Chronos.currentTimeMillis() - serverLoadStart) / 1000) + " seconds."); - // Load telnet status Util.printSection("Telnet"); if (Config.IS_TELNET_ENABLED) @@ -512,47 +499,24 @@ public class GameServer } Util.printSection("Login"); - _loginThread = LoginServerThread.getInstance(); - _loginThread.start(); + ClientNetworkManager.getInstance().start(); - final SelectorConfig sc = new SelectorConfig(); - sc.MAX_READ_PER_PASS = Config.MMO_MAX_READ_PER_PASS; - sc.MAX_SEND_PER_PASS = Config.MMO_MAX_SEND_PER_PASS; - sc.SLEEP_TIME = Config.MMO_SELECTOR_SLEEP_TIME; - sc.HELPER_BUFFER_COUNT = Config.MMO_HELPER_BUFFER_COUNT; - - _gamePacketHandler = new GamePacketHandler(); - - _selectorThread = new SelectorThread<>(sc, _gamePacketHandler, _gamePacketHandler, _gamePacketHandler); - - InetAddress bindAddress = null; - if (!Config.GAMESERVER_HOSTNAME.equals("*")) + if (Boolean.getBoolean("newLoginServer")) { - try - { - bindAddress = InetAddress.getByName(Config.GAMESERVER_HOSTNAME); - } - catch (UnknownHostException e1) - { - LOGGER.warning("The GameServer bind address is invalid, using all avaliable IPs. Reason: " + e1); - } + LoginServerNetworkManager.getInstance().connect(); + } + else + { + LoginServerThread.getInstance().start(); } - try - { - _selectorThread.openServerSocket(bindAddress, Config.PORT_GAME); - } - catch (IOException e) - { - LOGGER.severe("Failed to open server socket. Reason: " + e); - System.exit(1); - } - _selectorThread.start(); - } - - public static SelectorThread getSelectorThread() - { - return _selectorThread; + System.gc(); + final long totalMem = Runtime.getRuntime().maxMemory() / 1048576; + LOGGER.info(getClass().getSimpleName() + ": Started, using " + getUsedMemoryMB() + " of " + totalMem + " MB total memory."); + LOGGER.info(getClass().getSimpleName() + ": Maximum number of connected players is " + Config.MAXIMUM_ONLINE_USERS + "."); + LOGGER.info(getClass().getSimpleName() + ": Server loaded in " + ((Chronos.currentTimeMillis() - serverLoadStart) / 1000) + " seconds."); + + Toolkit.getDefaultToolkit().beep(); } public static void main(String[] args) throws Exception diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/LoginServerThread.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/LoginServerThread.java index 4b768fec4f..73ac08aad4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/LoginServerThread.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/LoginServerThread.java @@ -22,6 +22,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.math.BigInteger; import java.net.Socket; +import java.net.SocketException; import java.net.UnknownHostException; import java.security.GeneralSecurityException; import java.security.KeyFactory; @@ -31,29 +32,31 @@ import java.security.spec.RSAPublicKeySpec; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Level; import java.util.logging.Logger; import org.l2jmobius.Config; -import org.l2jmobius.commons.crypt.NewCrypt; +import org.l2jmobius.commons.network.BaseSendablePacket; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.commons.util.crypt.NewCrypt; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.gameserverpackets.AuthRequest; -import org.l2jmobius.gameserver.network.gameserverpackets.BlowFishKey; -import org.l2jmobius.gameserver.network.gameserverpackets.ChangeAccessLevel; -import org.l2jmobius.gameserver.network.gameserverpackets.GameServerBasePacket; -import org.l2jmobius.gameserver.network.gameserverpackets.PlayerAuthRequest; -import org.l2jmobius.gameserver.network.gameserverpackets.PlayerInGame; -import org.l2jmobius.gameserver.network.gameserverpackets.PlayerLogout; -import org.l2jmobius.gameserver.network.gameserverpackets.ServerStatus; -import org.l2jmobius.gameserver.network.loginserverpackets.AuthResponse; -import org.l2jmobius.gameserver.network.loginserverpackets.InitLS; -import org.l2jmobius.gameserver.network.loginserverpackets.KickPlayer; -import org.l2jmobius.gameserver.network.loginserverpackets.LoginServerFail; -import org.l2jmobius.gameserver.network.loginserverpackets.PlayerAuthResponse; +import org.l2jmobius.gameserver.network.loginserverpackets.game.AuthRequest; +import org.l2jmobius.gameserver.network.loginserverpackets.game.BlowFishKey; +import org.l2jmobius.gameserver.network.loginserverpackets.game.ChangeAccessLevel; +import org.l2jmobius.gameserver.network.loginserverpackets.game.PlayerAuthRequest; +import org.l2jmobius.gameserver.network.loginserverpackets.game.PlayerInGame; +import org.l2jmobius.gameserver.network.loginserverpackets.game.PlayerLogout; +import org.l2jmobius.gameserver.network.loginserverpackets.game.ServerStatus; +import org.l2jmobius.gameserver.network.loginserverpackets.login.AuthResponse; +import org.l2jmobius.gameserver.network.loginserverpackets.login.InitLS; +import org.l2jmobius.gameserver.network.loginserverpackets.login.KickPlayer; +import org.l2jmobius.gameserver.network.loginserverpackets.login.LoginServerFail; +import org.l2jmobius.gameserver.network.loginserverpackets.login.PlayerAuthResponse; import org.l2jmobius.gameserver.network.serverpackets.AuthLoginFail; import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; @@ -63,12 +66,10 @@ public class LoginServerThread extends Thread /** The LoginServerThread singleton */ private static final int REVISION = 0x0102; - private RSAPublicKey _publicKey; private final String _hostname; private final int _port; private final int _gamePort; private Socket _loginSocket; - private InputStream _in; private OutputStream _out; /** @@ -76,23 +77,21 @@ public class LoginServerThread extends Thread * It is first initialized with a unified key:
    * "_;v.]05-31!|+-%xT!^[$\00"
    * and then after handshake, with a new key sent by
    - * loginserver during the handshake. This new key is stored
    - * in {@link #_blowfishKey} + * login server during the handshake. This new key is stored
    + * in blowfishKey */ private NewCrypt _blowfish; - private byte[] _blowfishKey; private byte[] _hexID; private final boolean _acceptAlternate; private int _requestID; - private int _serverID; private final boolean _reserveHost; private int _maxPlayer; - private final List _waitingClients; - private final Map _accountsInGameServer; + private final Set _waitingClients = ConcurrentHashMap.newKeySet(); + private final Map _accountsInGameServer = new ConcurrentHashMap<>(); private int _status; private String _serverName; - private final String _gameExternalHost; - private final String _gameInternalHost; + private final List _subnets; + private final List _hosts; public LoginServerThread() { @@ -112,17 +111,15 @@ public class LoginServerThread extends Thread } _acceptAlternate = Config.ACCEPT_ALTERNATE_ID; _reserveHost = Config.RESERVE_HOST_ON_LOGIN; - _gameExternalHost = Config.EXTERNAL_HOSTNAME; - _gameInternalHost = Config.INTERNAL_HOSTNAME; - _waitingClients = new ArrayList<>(); - _accountsInGameServer = new ConcurrentHashMap<>(); + _subnets = Config.GAME_SERVER_SUBNETS; + _hosts = Config.GAME_SERVER_HOSTS; _maxPlayer = Config.MAXIMUM_ONLINE_USERS; } @Override public void run() { - while (!_interrupted) + while (!isInterrupted()) { int lengthHi = 0; int lengthLo = 0; @@ -131,112 +128,99 @@ public class LoginServerThread extends Thread try { // Connection - LOGGER.info("Connecting to login on " + _hostname + ":" + _port); + LOGGER.info(getClass().getSimpleName() + ": Connecting to login on " + _hostname + ":" + _port); _loginSocket = new Socket(_hostname, _port); - _in = _loginSocket.getInputStream(); - if (_out != null) - { - synchronized (_out) // avoids tow threads writing in the mean time - { - _out = new BufferedOutputStream(_loginSocket.getOutputStream()); - } - } - else - { - _out = new BufferedOutputStream(_loginSocket.getOutputStream()); - } + final InputStream in = _loginSocket.getInputStream(); + _out = new BufferedOutputStream(_loginSocket.getOutputStream()); // init Blowfish - _blowfishKey = generateHex(40); + final byte[] blowfishKey = generateHex(40); _blowfish = new NewCrypt("_;v.]05-31!|+-%xT!^[$\00"); - while (!_interrupted) + while (!isInterrupted()) { - lengthLo = _in.read(); - lengthHi = _in.read(); + lengthLo = in.read(); + lengthHi = in.read(); length = (lengthHi * 256) + lengthLo; if (lengthHi < 0) { - LOGGER.info("LoginServerThread: Login terminated the connection."); + LOGGER.finer(getClass().getSimpleName() + ": Login terminated the connection."); break; } - final byte[] incoming = new byte[length]; - incoming[0] = (byte) lengthLo; - incoming[1] = (byte) lengthHi; + final byte[] incoming = new byte[length - 2]; int receivedBytes = 0; int newBytes = 0; + int left = length - 2; while ((newBytes != -1) && (receivedBytes < (length - 2))) { - newBytes = _in.read(incoming, 2, length - 2); - receivedBytes = receivedBytes + newBytes; + newBytes = in.read(incoming, receivedBytes, left); + receivedBytes += newBytes; + left -= newBytes; } if (receivedBytes != (length - 2)) { - LOGGER.warning("Incomplete Packet is sent to the server, closing connection.(LS)"); + LOGGER.warning(getClass().getSimpleName() + ": Incomplete Packet is sent to the server, closing connection.(LS)"); break; } - byte[] decrypt = new byte[length - 2]; - System.arraycopy(incoming, 2, decrypt, 0, decrypt.length); // decrypt if we have a key - decrypt = _blowfish.decrypt(decrypt); - checksumOk = NewCrypt.verifyChecksum(decrypt); + _blowfish.decrypt(incoming, 0, incoming.length); + checksumOk = NewCrypt.verifyChecksum(incoming); if (!checksumOk) { - LOGGER.warning("Incorrect packet checksum, ignoring packet (LS)"); + LOGGER.warning(getClass().getSimpleName() + ": Incorrect packet checksum, ignoring packet (LS)"); break; } - final int packetType = decrypt[0] & 0xff; + final int packetType = incoming[0] & 0xff; switch (packetType) { case 0x00: { - final InitLS init = new InitLS(decrypt); + final InitLS init = new InitLS(incoming); if (init.getRevision() != REVISION) { // TODO: revision mismatch LOGGER.warning("/!\\ Revision mismatch between LS and GS /!\\"); break; } + + RSAPublicKey publicKey; + try { final KeyFactory kfac = KeyFactory.getInstance("RSA"); final BigInteger modulus = new BigInteger(init.getRSAKey()); final RSAPublicKeySpec kspec1 = new RSAPublicKeySpec(modulus, RSAKeyGenParameterSpec.F4); - _publicKey = (RSAPublicKey) kfac.generatePublic(kspec1); + publicKey = (RSAPublicKey) kfac.generatePublic(kspec1); } catch (GeneralSecurityException e) { - LOGGER.warning("Trouble while init the public key send by login"); + LOGGER.warning(getClass().getSimpleName() + ": Trouble while init the public key send by login"); break; } // send the blowfish key through the rsa encryption - final BlowFishKey bfk = new BlowFishKey(_blowfishKey, _publicKey); - sendPacket(bfk); - - // now, only accept paket with the new encryption - _blowfish = new NewCrypt(_blowfishKey); - - final AuthRequest ar = new AuthRequest(_requestID, _acceptAlternate, _hexID, _gameExternalHost, _gameInternalHost, _gamePort, _reserveHost, _maxPlayer); - sendPacket(ar); + sendPacket(new BlowFishKey(blowfishKey, publicKey)); + // now, only accept packet with the new encryption + _blowfish = new NewCrypt(blowfishKey); + sendPacket(new AuthRequest(_requestID, _acceptAlternate, _hexID, _gamePort, _reserveHost, _maxPlayer, _subnets, _hosts)); break; } case 0x01: { - final LoginServerFail lsf = new LoginServerFail(decrypt); - LOGGER.info("Damn! Registeration Failed: " + lsf.getReasonString()); + final LoginServerFail lsf = new LoginServerFail(incoming); + LOGGER.info(getClass().getSimpleName() + ": Damn! Registeration Failed: " + lsf.getReasonString()); // login will close the connection here break; } case 0x02: { - final AuthResponse aresp = new AuthResponse(decrypt); - _serverID = aresp.getServerId(); + final AuthResponse aresp = new AuthResponse(incoming); + final int serverID = aresp.getServerId(); _serverName = aresp.getServerName(); - Config.saveHexid(_serverID, hexToString(_hexID)); - LOGGER.info("Registered on login as Server " + _serverID + " : " + _serverName); + Config.saveHexid(serverID, hexToString(_hexID)); + LOGGER.info(getClass().getSimpleName() + ": Registered on login as Server " + serverID + ": " + _serverName); final ServerStatus st = new ServerStatus(); if (Config.SERVER_LIST_BRACKET) { @@ -285,7 +269,7 @@ public class LoginServerThread extends Thread } case 0x03: { - final PlayerAuthResponse par = new PlayerAuthResponse(decrypt); + final PlayerAuthResponse par = new PlayerAuthResponse(incoming); final String account = par.getAccount(); WaitingClient wcToRemove = null; synchronized (_waitingClients) @@ -304,17 +288,18 @@ public class LoginServerThread extends Thread { final PlayerInGame pig = new PlayerInGame(par.getAccount()); sendPacket(pig); - wcToRemove.gameClient.setState(ConnectionState.AUTHENTICATED); + wcToRemove.gameClient.setConnectionState(ConnectionState.AUTHENTICATED); wcToRemove.gameClient.setSessionId(wcToRemove.session); final CharSelectInfo cl = new CharSelectInfo(wcToRemove.account, wcToRemove.gameClient.getSessionId().playOkID1); - wcToRemove.gameClient.getConnection().sendPacket(cl); + wcToRemove.gameClient.sendPacket(cl); wcToRemove.gameClient.setCharSelection(cl.getCharInfo()); } else { - LOGGER.warning("Session key is not correct. Closing connection for account " + wcToRemove.account + "."); - wcToRemove.gameClient.getConnection().sendPacket(new AuthLoginFail(1)); - wcToRemove.gameClient.closeNow(); + LOGGER.warning(getClass().getSimpleName() + ": Session key is not correct. Closing connection for account " + wcToRemove.account); + // wcToRemove.gameClient.getConnection().sendPacket(new LoginFail(LoginFail.SYSTEM_ERROR_LOGIN_LATER)); + wcToRemove.gameClient.close(new AuthLoginFail(AuthLoginFail.SYSTEM_ERROR_LOGIN_LATER)); + _accountsInGameServer.remove(wcToRemove.account); } _waitingClients.remove(wcToRemove); } @@ -322,7 +307,7 @@ public class LoginServerThread extends Thread } case 0x04: { - final KickPlayer kp = new KickPlayer(decrypt); + final KickPlayer kp = new KickPlayer(incoming); doKickPlayer(kp.getAccount()); break; } @@ -331,75 +316,74 @@ public class LoginServerThread extends Thread } catch (UnknownHostException e) { - LOGGER.info("Deconnected from Login, Trying to reconnect:"); - LOGGER.info(e.toString()); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": ", e); + } + catch (SocketException e) + { + LOGGER.warning(getClass().getSimpleName() + ": LoginServer not avaible, trying to reconnect..."); } catch (IOException e) { - LOGGER.info("Deconnected from Login, Trying to reconnect.."); + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Disconnected from Login, Trying to reconnect: ", e); } finally { - if (_out != null) + try { - synchronized (_out) // avoids tow threads writing in the mean time + _loginSocket.close(); + if (isInterrupted()) { - try - { - _loginSocket.close(); - } - catch (Exception e) - { - } + return; } } - else + catch (Exception e) { - try - { - _loginSocket.close(); - } - catch (Exception e) - { - } + // Ignore. } } try { - Thread.sleep(5000); // 5 seconds + Thread.sleep(5000); // 5 seconds tempo. } - catch (InterruptedException e) + catch (Exception e) { + // Ignore. } } } + /** + * Adds the waiting client and send request. + * @param acc the account + * @param client the game client + * @param key the session key + */ public void addWaitingClientAndSendRequest(String acc, GameClient client, SessionKey key) { final WaitingClient wc = new WaitingClient(acc, client, key); - synchronized (_waitingClients) { _waitingClients.add(wc); } - final PlayerAuthRequest par = new PlayerAuthRequest(acc, key); - try { sendPacket(par); } catch (IOException e) { - LOGGER.warning("Error while sending player auth request"); + LOGGER.warning(getClass().getSimpleName() + ": Error while sending player auth request"); } } + /** + * Removes the waiting client. + * @param client the client + */ public void removeWaitingClient(GameClient client) { WaitingClient toRemove = null; - synchronized (_waitingClients) { for (WaitingClient c : _waitingClients) @@ -409,7 +393,6 @@ public class LoginServerThread extends Thread toRemove = c; } } - if (toRemove != null) { _waitingClients.remove(toRemove); @@ -417,6 +400,10 @@ public class LoginServerThread extends Thread } } + /** + * Send logout for the given account. + * @param account the account + */ public void sendLogout(String account) { if (account == null) @@ -430,7 +417,11 @@ public class LoginServerThread extends Thread } catch (IOException e) { - LOGGER.warning("Error while sending logout packet to login: " + e.getMessage()); + LOGGER.warning(getClass().getSimpleName() + ": Error while sending logout packet to login"); + } + finally + { + _accountsInGameServer.remove(account); } } @@ -480,42 +471,55 @@ public class LoginServerThread extends Thread } } + /** + * Method to generate a random sequence of bytes returned as byte array + * @param size number of random bytes to generate + * @return byte array with sequence of random bytes + */ public static byte[] generateHex(int size) { final byte[] array = new byte[size]; Rnd.nextBytes(array); + + // Don't allow 0s inside the array! + for (int i = 0; i < array.length; i++) + { + while (array[i] == 0) + { + array[i] = (byte) Rnd.get(Byte.MAX_VALUE); + } + } return array; } /** - * @param sl - * @throws IOException + * Send packet. + * @param sl the sendable packet + * @throws IOException Signals that an I/O exception has occurred. */ - private void sendPacket(GameServerBasePacket sl) throws IOException + private void sendPacket(BaseSendablePacket sl) throws IOException { - if (_interrupted) + if (_blowfish == null) { return; } - byte[] data = sl.getContent(); + final byte[] data = sl.getContent(); NewCrypt.appendChecksum(data); - data = _blowfish.crypt(data); + _blowfish.crypt(data, 0, data.length); final int len = data.length + 2; - if ((_out != null) && !_loginSocket.isClosed() && _loginSocket.isConnected()) + synchronized (_out) // avoids tow threads writing in the mean time { - synchronized (_out) // avoids tow threads writing in the mean time - { - _out.write(len & 0xff); - _out.write((len >> 8) & 0xff); - _out.write(data); - _out.flush(); - } + _out.write(len & 0xff); + _out.write((len >> 8) & 0xff); + _out.write(data); + _out.flush(); } } /** + * Sets the max player. * @param maxPlayer The maxPlayer to set. */ public void setMaxPlayer(int maxPlayer) @@ -525,6 +529,7 @@ public class LoginServerThread extends Thread } /** + * Gets the max player. * @return Returns the maxPlayer. */ public int getMaxPlayer() @@ -533,8 +538,9 @@ public class LoginServerThread extends Thread } /** - * @param id - * @param value + * Send server status. + * @param id the id + * @param value the value */ public void sendServerStatus(int id, int value) { @@ -546,6 +552,7 @@ public class LoginServerThread extends Thread } catch (IOException e) { + // Ignore. } } @@ -657,6 +664,12 @@ public class LoginServerThread extends Thread public GameClient gameClient; public SessionKey session; + /** + * Instantiates a new waiting client. + * @param acc the acc + * @param client the client + * @param key the key + */ public WaitingClient(String acc, GameClient client, SessionKey key) { account = acc; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/Shutdown.java index 43ea608cc6..00fdc3f22d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/Shutdown.java @@ -39,8 +39,10 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; import org.l2jmobius.gameserver.model.sevensigns.SevenSignsFestival; +import org.l2jmobius.gameserver.network.ClientNetworkManager; +import org.l2jmobius.gameserver.network.EventLoopGroupManager; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.gameserverpackets.ServerStatus; +import org.l2jmobius.gameserver.network.loginserverpackets.game.ServerStatus; import org.l2jmobius.gameserver.network.serverpackets.ServerClose; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -322,13 +324,16 @@ public class Shutdown extends Thread { } + // saveData sends messages to exit players, so shutdown selector after it try { - // GameServer.getSelectorThread().setDaemon(true); - GameServer.getSelectorThread().shutdown(); + ClientNetworkManager.getInstance().stop(); + EventLoopGroupManager.getInstance().shutdown(); + LOGGER.info("Game Server: Selector thread has been shut down."); } catch (Throwable t) { + // ignore } // stop all threadpolls @@ -539,7 +544,7 @@ public class Shutdown extends Thread if (player.getClient() != null) { player.getClient().sendPacket(ServerClose.STATIC_PACKET); - player.getClient().close(0); + player.getClient().close(false); player.getClient().setPlayer(null); player.setClient(null); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/OfflineTradeTable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/OfflineTradeTable.java index f1ecd9589d..7bc8b2192c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/OfflineTradeTable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/OfflineTradeTable.java @@ -201,11 +201,11 @@ public class OfflineTradeTable PlayerInstance player = null; try { - final GameClient client = new GameClient(null); + final GameClient client = new GameClient(); player = PlayerInstance.load(rs.getInt("charId")); client.setPlayer(player); client.setAccountName(player.getAccountName()); - client.setState(ConnectionState.IN_GAME); + client.setConnectionState(ConnectionState.IN_GAME); player.setClient(client); player.setOfflineMode(true); player.setOnlineStatus(false); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/xml/AdminData.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/xml/AdminData.java index 2a98320977..519d581764 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/xml/AdminData.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/data/xml/AdminData.java @@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** @@ -302,7 +302,7 @@ public class AdminData implements IXmlReader } } - public static void broadcastToGMs(GameServerPacket packet) + public static void broadcastToGMs(IClientOutgoingPacket packet) { for (PlayerInstance gm : getInstance().getAllGms(true)) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminDisconnect.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminDisconnect.java index b64b0691d8..378dcc949d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminDisconnect.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminDisconnect.java @@ -71,7 +71,7 @@ public class AdminDisconnect implements IAdminCommandHandler BuilderUtil.sendSysMessage(activeChar, "Character " + player.getName() + " disconnected from server."); // Logout Character - player.sendPacket(new LeaveWorld()); + player.sendPacket(LeaveWorld.STATIC_PACKET); player.closeNetConnection(); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEditChar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEditChar.java index 26f8d17284..d355993480 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEditChar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEditChar.java @@ -1195,12 +1195,12 @@ public class AdminEditChar implements IAdminCommandHandler final Map dualboxIPs = new HashMap<>(); for (PlayerInstance player : players) { - if ((player.getClient() == null) || (player.getClient().getConnection() == null) || (player.getClient().getConnection().getInetAddress() == null) || (player.getClient().getConnection().getInetAddress().getHostAddress() == null)) + if ((player.getClient() == null) || (player.getClient().getConnectionAddress() == null) || (player.getClient().getConnectionAddress() == null) || (player.getClient().getConnectionAddress().getHostAddress() == null)) { continue; } - ip = player.getClient().getConnection().getInetAddress().getHostAddress(); + ip = player.getClient().getConnectionAddress().getHostAddress(); if (ipMap.get(ip) == null) { ipMap.put(ip, new ArrayList()); @@ -1260,12 +1260,12 @@ public class AdminEditChar implements IAdminCommandHandler for (PlayerInstance player : players) { - if ((player.getClient() == null) || (player.getClient().getConnection() == null) || (player.getClient().getConnection().getInetAddress() == null) || (player.getClient().getConnection().getInetAddress().getHostAddress() == null)) + if ((player.getClient() == null) || (player.getClient().getConnectionAddress() == null) || (player.getClient().getConnectionAddress() == null) || (player.getClient().getConnectionAddress().getHostAddress() == null)) { continue; } - ip = player.getClient().getConnection().getInetAddress().getHostAddress(); + ip = player.getClient().getConnectionAddress().getHostAddress(); if (ip.equals(ipAdress)) { name = player.getName(); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEffects.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEffects.java index b14c662913..1ce07806af 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEffects.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEffects.java @@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.ExRedSky; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SignsSky; @@ -666,7 +666,7 @@ public class AdminEffects implements IAdminCommandHandler */ private void adminAtmosphere(String type, String state, PlayerInstance activeChar) { - GameServerPacket packet = null; + IClientOutgoingPacket packet = null; switch (type) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEnchant.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEnchant.java index 85cc055b7a..5853b4d205 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEnchant.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminEnchant.java @@ -23,9 +23,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.CharInfo; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; -import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.util.BuilderUtil; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; @@ -219,8 +217,7 @@ public class AdminEnchant implements IAdminCommandHandler final InventoryUpdate iu = new InventoryUpdate(); iu.addModifiedItem(itemInstance); player.sendPacket(iu); - player.broadcastPacket(new CharInfo(player)); - player.sendPacket(new UserInfo(player)); + player.broadcastUserInfo(); // informations BuilderUtil.sendSysMessage(activeChar, "Changed enchantment of " + player.getName() + "'s " + itemInstance.getItem().getName() + " from " + curEnchant + " to " + ench + "."); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminLogin.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminLogin.java index e81537d93e..b6703f377c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminLogin.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/admincommandhandlers/AdminLogin.java @@ -22,7 +22,7 @@ import org.l2jmobius.Config; import org.l2jmobius.gameserver.LoginServerThread; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.gameserverpackets.ServerStatus; +import org.l2jmobius.gameserver.network.loginserverpackets.game.ServerStatus; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.util.BuilderUtil; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java index 870fb7700f..9fb6b3327f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java @@ -238,7 +238,7 @@ public class SummonFriend implements ISkillHandler final ConfirmDlg confirm = new ConfirmDlg(SystemMessageId.S1_WISHES_TO_SUMMON_YOU_FROM_S2_DO_YOU_ACCEPT.getId()); confirm.addString(activePlayer.getName()); confirm.addZoneName(activePlayer.getX(), activePlayer.getY(), activePlayer.getZ()); - confirm.addTime(30000); + confirm.addTime(30000, targetPlayer); confirm.addRequesterId(activePlayer.getObjectId()); targetPlayer.sendPacket(confirm); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/DuelManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/DuelManager.java index 9c35e95830..d25ae99c2a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/DuelManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/DuelManager.java @@ -23,7 +23,7 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.model.Duel; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class DuelManager { @@ -189,7 +189,7 @@ public class DuelManager * @param player * @param packet */ - public void broadcastToOppositTeam(PlayerInstance player, GameServerPacket packet) + public void broadcastToOppositTeam(PlayerInstance player, IClientOutgoingPacket packet) { if ((player == null) || !player.isInDuel()) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java index 89ab1331dc..7f4c0e7cc4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java @@ -31,7 +31,7 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -179,7 +179,7 @@ public class PetitionManager return _type.toString().replace("_", " "); } - public void sendPetitionerPacket(GameServerPacket responsePacket) + public void sendPetitionerPacket(IClientOutgoingPacket responsePacket) { if ((_petitioner == null) || !_petitioner.isOnline()) { @@ -189,7 +189,7 @@ public class PetitionManager _petitioner.sendPacket(responsePacket); } - public void sendResponderPacket(GameServerPacket responsePacket) + public void sendResponderPacket(IClientOutgoingPacket responsePacket) { if ((_responder == null) || !_responder.isOnline()) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/CommandChannel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/CommandChannel.java index 2abca65655..d00bb045aa 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/CommandChannel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/CommandChannel.java @@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.ExCloseMPCC; import org.l2jmobius.gameserver.network.serverpackets.ExOpenMPCC; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** @@ -147,7 +147,7 @@ public class CommandChannel * Broadcast packet to every channel member * @param gsp */ - public void broadcastToChannelMembers(GameServerPacket gsp) + public void broadcastToChannelMembers(IClientOutgoingPacket gsp) { if ((_parties != null) && !_parties.isEmpty()) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Duel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Duel.java index edcd83ee36..70cd4434b6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Duel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Duel.java @@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ExDuelEnd; import org.l2jmobius.gameserver.network.serverpackets.ExDuelReady; import org.l2jmobius.gameserver.network.serverpackets.ExDuelStart; import org.l2jmobius.gameserver.network.serverpackets.ExDuelUpdateUserInfo; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -673,7 +673,7 @@ public class Duel * Broadcast a packet to the challanger team. * @param packet the packet */ - public void broadcastToTeam1(GameServerPacket packet) + public void broadcastToTeam1(IClientOutgoingPacket packet) { if (_playerA == null) { @@ -697,7 +697,7 @@ public class Duel * Broadcast a packet to the challenged team. * @param packet the packet */ - public void broadcastToTeam2(GameServerPacket packet) + public void broadcastToTeam2(IClientOutgoingPacket packet) { if (_playerB == null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/MacroList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/MacroList.java index d8482c95e8..2aaf9c0f43 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/MacroList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/MacroList.java @@ -176,7 +176,7 @@ public class MacroList } catch (Exception e) { - LOGGER.info("Player: " + _owner.getName() + " IP:" + _owner.getClient().getConnection().getInetAddress().getHostAddress() + " try to use bug with macros"); + LOGGER.info("Player: " + _owner.getName() + " IP:" + _owner.getClient().getConnectionAddress().getHostAddress() + " trird to use bug with macros."); LOGGER.warning("could not store macro: " + e); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Party.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Party.java index b88dc9ea5d..1921377fd3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Party.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Party.java @@ -42,7 +42,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.ExCloseMPCC; import org.l2jmobius.gameserver.network.serverpackets.ExOpenMPCC; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.PartyMemberPosition; import org.l2jmobius.gameserver.network.serverpackets.PartySmallWindowAdd; import org.l2jmobius.gameserver.network.serverpackets.PartySmallWindowAll; @@ -282,7 +282,7 @@ public class Party * Broadcasts packet to every party member * @param msg */ - public void broadcastToPartyMembers(GameServerPacket msg) + public void broadcastToPartyMembers(IClientOutgoingPacket msg) { for (PlayerInstance member : _members) { @@ -328,7 +328,7 @@ public class Party * @param player * @param msg */ - public void broadcastToPartyMembers(PlayerInstance player, GameServerPacket msg) + public void broadcastToPartyMembers(PlayerInstance player, IClientOutgoingPacket msg) { for (PlayerInstance member : _members) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Request.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Request.java index 3c8507a78f..77661c0744 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Request.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Request.java @@ -19,7 +19,7 @@ package org.l2jmobius.gameserver.model; import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.GameClientPacket; +import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** @@ -34,7 +34,7 @@ public class Request protected PlayerInstance _partner; protected boolean _isRequestor; protected boolean _isAnswerer; - protected GameClientPacket _requestPacket; + protected IClientIncomingPacket _requestPacket; public Request(PlayerInstance player) { @@ -70,7 +70,7 @@ public class Request * Set the packet incomed from requester. * @param packet */ - private synchronized void setRequestPacket(GameClientPacket packet) + private synchronized void setRequestPacket(IClientIncomingPacket packet) { _requestPacket = packet; } @@ -78,7 +78,7 @@ public class Request /** * @return the packet originally incomed from requester. */ - public GameClientPacket getRequestPacket() + public IClientIncomingPacket getRequestPacket() { return _requestPacket; } @@ -89,7 +89,7 @@ public class Request * @param packet * @return */ - public synchronized boolean setRequest(PlayerInstance partner, GameClientPacket packet) + public synchronized boolean setRequest(PlayerInstance partner, IClientIncomingPacket packet) { if (partner == null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index f7075a44d2..ea8a40bc05 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -115,7 +115,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ChangeMoveType; import org.l2jmobius.gameserver.network.serverpackets.ChangeWaitType; import org.l2jmobius.gameserver.network.serverpackets.CharMoveToLocation; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadSpelledInfo; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.MagicEffectIcons; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; @@ -368,7 +368,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder getAttackByList().add(creature); } - public void broadcastPacket(GameServerPacket mov) + public void broadcastPacket(IClientOutgoingPacket mov) { for (PlayerInstance player : getKnownList().getKnownPlayers().values()) { @@ -376,7 +376,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } } - public void broadcastPacket(GameServerPacket mov, int radius) + public void broadcastPacket(IClientOutgoingPacket mov, int radius) { for (PlayerInstance player : getKnownList().getKnownPlayers().values()) { @@ -509,7 +509,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder *
  • PlayerInstance

  • * @param mov the mov */ - public void sendPacket(GameServerPacket mov) + public void sendPacket(IClientOutgoingPacket mov) { // default implementation } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java index 00a0831a91..306b28b02c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java @@ -526,7 +526,7 @@ public class DoorInstance extends Creature // Send a Server->Client packet MyTargetSelected to the PlayerInstance player player.sendPacket(new MyTargetSelected(getObjectId(), 0)); - player.sendPacket(new DoorStatusUpdate(this)); + player.sendPacket(new DoorStatusUpdate(this, player)); // Send a Server->Client packet ValidateLocation to correct the NpcInstance position and heading on the client player.sendPacket(new ValidateLocation(this)); @@ -577,7 +577,7 @@ public class DoorInstance extends Creature player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel())); if (isAutoAttackable(player)) { - player.sendPacket(new DoorStatusUpdate(this)); + player.sendPacket(new DoorStatusUpdate(this, player)); } final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); final StringBuilder html1 = new StringBuilder("
    Door Information
    "); @@ -603,7 +603,7 @@ public class DoorInstance extends Creature player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel())); if (isAutoAttackable(player)) { - player.sendPacket(new DoorStatusUpdate(this)); + player.sendPacket(new DoorStatusUpdate(this, player)); } final NpcHtmlMessage reply = new NpcHtmlMessage(5); @@ -627,10 +627,9 @@ public class DoorInstance extends Creature return; } - final DoorStatusUpdate su = new DoorStatusUpdate(this); for (PlayerInstance player : knownPlayers) { - player.sendPacket(su); + player.sendPacket(new DoorStatusUpdate(this, player)); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 511dc548d5..5fb73a4b06 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -189,8 +189,8 @@ import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadUserInfo; import org.l2jmobius.gameserver.network.serverpackets.ExPCCafePointInfo; import org.l2jmobius.gameserver.network.serverpackets.ExSetCompassZoneCode; import org.l2jmobius.gameserver.network.serverpackets.FriendList; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; import org.l2jmobius.gameserver.network.serverpackets.HennaInfo; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld; @@ -2141,7 +2141,7 @@ public class PlayerInstance extends Playable _curWeightPenalty = 0; super.removeSkill(getKnownSkill(4270)); sendPacket(new EtcStatusUpdate(this)); - Broadcast.toKnownPlayers(this, new CharInfo(this)); + Broadcast.toKnownPlayers(this, new CharInfo(this, isGM() && getAppearance().isInvisible())); } else { @@ -2186,7 +2186,7 @@ public class PlayerInstance extends Playable } sendPacket(new EtcStatusUpdate(this)); - Broadcast.toKnownPlayers(this, new CharInfo(this)); + Broadcast.toKnownPlayers(this, new CharInfo(this, isGM() && getAppearance().isInvisible())); } } } @@ -4966,7 +4966,36 @@ public class PlayerInstance extends Playable { // Send a Server->Client packet UserInfo to this PlayerInstance sendPacket(new UserInfo(this)); - Broadcast.toKnownPlayers(this, new CharInfo(this)); + + // Broadcast char info to known players + broadcastCharInfo(); + } + + public void broadcastCharInfo() + { + final CharInfo charInfo = new CharInfo(this, false); + for (PlayerInstance player : getKnownList().getKnownPlayers().values()) + { + if (player == null) + { + continue; + } + + try + { + if (player.isGM() && getAppearance().isInvisible()) + { + player.sendPacket(new CharInfo(this, true)); + } + else + { + player.sendPacket(charInfo); + } + } + catch (NullPointerException e) + { + } + } } /** @@ -4980,7 +5009,7 @@ public class PlayerInstance extends Playable } @Override - public void broadcastPacket(GameServerPacket mov) + public void broadcastPacket(IClientOutgoingPacket mov) { final boolean isCharInfo = mov instanceof CharInfo; if (!isCharInfo) @@ -5009,7 +5038,7 @@ public class PlayerInstance extends Playable } @Override - public void broadcastPacket(GameServerPacket mov, int radius) + public void broadcastPacket(IClientOutgoingPacket mov, int radius) { final boolean isCharInfo = mov instanceof CharInfo; if (!isCharInfo) @@ -6344,8 +6373,8 @@ public class PlayerInstance extends Playable // Anti FARM same IP if (Config.ANTI_FARM_IP_ENABLED && (_client != null) && (targetPlayer.getClient() != null)) { - final String ip1 = _client.getConnection().getInetAddress().getHostAddress(); - final String ip2 = targetPlayer.getClient().getConnection().getInetAddress().getHostAddress(); + final String ip1 = _client.getConnectionAddress().getHostAddress(); + final String ip2 = targetPlayer.getClient().getConnectionAddress().getHostAddress(); if (ip1.equals(ip2)) { sendMessage("Farm is punishable with Ban! GM informed."); @@ -6365,9 +6394,9 @@ public class PlayerInstance extends Playable private void addItemReward(PlayerInstance targetPlayer) { // IP check - if ((targetPlayer.getClient() != null) && (targetPlayer.getClient().getConnection() != null)) + if ((targetPlayer.getClient() != null) && (targetPlayer.getClient().getConnectionAddress() != null)) { - if (targetPlayer.getClient().getConnection().getInetAddress() != _client.getConnection().getInetAddress()) + if (targetPlayer.getClient().getConnectionAddress() != _client.getConnectionAddress()) { if ((targetPlayer.getKarma() > 0) || (targetPlayer.getPvpFlag() > 0)) // killing target pk or in pvp { @@ -10047,7 +10076,7 @@ public class PlayerInstance extends Playable } // Pk protection config - if (Config.ALLOW_CHAR_KILL_PROTECT && skill.isOffensive() && !isGM() && (target.isPlayer()) && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getKarma() == 0)) + if (Config.ALLOW_CHAR_KILL_PROTECT && skill.isOffensive() && !isGM() && target.isPlayer() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getKarma() == 0)) { final int thisLevel = getLevel(); final int targetLevel = target.getActingPlayer().getLevel(); @@ -11413,7 +11442,7 @@ public class PlayerInstance extends Playable * Send a Server->Client packet StatusUpdate to the PlayerInstance. */ @Override - public void sendPacket(GameServerPacket packet) + public void sendPacket(IClientOutgoingPacket packet) { if (_client != null) { @@ -15253,12 +15282,12 @@ public class PlayerInstance extends Playable boolean canMultiBox = true; int boxCount = 1; final List activeBoxes = new ArrayList<>(); - if ((_client != null) && (_client.getConnection() != null) && !_client.getConnection().isClosed() && (_client.getConnection().getInetAddress() != null)) + if ((_client != null) && (_client.getConnectionAddress() != null) && !_client.isDetached() && (_client.getConnectionAddress() != null)) { - final String playerIP = _client.getConnection().getInetAddress().getHostAddress(); + final String playerIP = _client.getConnectionAddress().getHostAddress(); for (PlayerInstance player : World.getInstance().getAllPlayers()) { - if ((player != null) && (player != this) && player.isOnline() && (player.getClient() != null) && (player.getClient().getConnection() != null) && !player.getClient().getConnection().isClosed() && (player.getClient().getConnection().getInetAddress() != null) && playerIP.equals(player.getClient().getConnection().getInetAddress().getHostAddress())) + if ((player != null) && (player != this) && player.isOnline() && (player.getClient() != null) && (player.getClient().getConnectionAddress() != null) && !player.getClient().isDetached() && (player.getClient().getConnectionAddress() != null) && playerIP.equals(player.getClient().getConnectionAddress().getHostAddress())) { boxCount++; activeBoxes.add(player.getName()); @@ -15290,12 +15319,12 @@ public class PlayerInstance extends Playable */ public void refreshOtherBoxes() { - if ((_client != null) && (_client.getConnection() != null) && !_client.getConnection().isClosed() && (_client.getConnection().getInetAddress() != null)) + if ((_client != null) && (_client.getConnectionAddress() != null) && !_client.isDetached() && (_client.getConnectionAddress() != null)) { - final String playerIP = _client.getConnection().getInetAddress().getHostAddress(); + final String playerIP = _client.getConnectionAddress().getHostAddress(); for (PlayerInstance player : World.getInstance().getAllPlayers()) { - if ((player != null) && (player != this) && player.isOnline() && (player.getClient() != null) && (player.getClient().getConnection() != null) && !player.getClient().getConnection().isClosed() && !player.getName().equals(getName()) && playerIP.equals(player.getClient().getConnection().getInetAddress().getHostAddress())) + if ((player != null) && (player != this) && player.isOnline() && (player.getClient() != null) && (player.getClient().getConnectionAddress() != null) && !player.getClient().isDetached() && !player.getName().equals(getName()) && playerIP.equals(player.getClient().getConnectionAddress().getHostAddress())) { player._activeBoxes = _activeBoxes; player._activeBoxCharacters = _activeBoxCharacters; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/knownlist/PlayerKnownList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/knownlist/PlayerKnownList.java index b7777c4fcb..0e3b7e0295 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/knownlist/PlayerKnownList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/knownlist/PlayerKnownList.java @@ -139,7 +139,7 @@ public class PlayerKnownList extends PlayableKnownList { activeChar.sendPacket(new DoorInfo((DoorInstance) object, false)); } - activeChar.sendPacket(new DoorStatusUpdate((DoorInstance) object)); + activeChar.sendPacket(new DoorStatusUpdate((DoorInstance) object, activeChar)); } else if (object.isBoat()) { @@ -180,7 +180,7 @@ public class PlayerKnownList extends PlayableKnownList if (otherPlayer.isInBoat()) { otherPlayer.getPosition().setWorldPosition(otherPlayer.getBoat().getLocation()); - activeChar.sendPacket(new CharInfo(otherPlayer)); + activeChar.sendPacket(new CharInfo(otherPlayer, activeChar.isGM() && otherPlayer.getAppearance().isInvisible())); final int relation = otherPlayer.getRelation(activeChar); if ((otherPlayer.getKnownList().getKnownRelations().get(activeChar.getObjectId()) != null) && (otherPlayer.getKnownList().getKnownRelations().get(activeChar.getObjectId()) != relation)) @@ -192,7 +192,7 @@ public class PlayerKnownList extends PlayableKnownList } else { - activeChar.sendPacket(new CharInfo(otherPlayer)); + activeChar.sendPacket(new CharInfo(otherPlayer, activeChar.isGM() && otherPlayer.getAppearance().isInvisible())); final int relation = otherPlayer.getRelation(activeChar); if ((otherPlayer.getKnownList().getKnownRelations().get(activeChar.getObjectId()) != null) && (otherPlayer.getKnownList().getKnownRelations().get(activeChar.getObjectId()) != relation)) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java index 61f0b2b019..18e8c35c37 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -46,7 +46,7 @@ import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveSubPledgeCreated; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowInfoUpdate; @@ -1142,7 +1142,7 @@ public class Clan } } - public void broadcastToOnlineAllyMembers(GameServerPacket packet) + public void broadcastToOnlineAllyMembers(IClientOutgoingPacket packet) { if (_allyId == 0) { @@ -1158,7 +1158,7 @@ public class Clan } } - public void broadcastToOnlineMembers(GameServerPacket packet) + public void broadcastToOnlineMembers(IClientOutgoingPacket packet) { for (ClanMember member : _members.values()) { @@ -1176,7 +1176,7 @@ public class Clan } } - public void broadcastToOtherOnlineMembers(GameServerPacket packet, PlayerInstance player) + public void broadcastToOtherOnlineMembers(IClientOutgoingPacket packet, PlayerInstance player) { for (ClanMember member : _members.values()) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/siege/FortSiege.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/siege/FortSiege.java index c96dc7ad07..53b01761fa 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/siege/FortSiege.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/siege/FortSiege.java @@ -46,8 +46,8 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.FortressSiegeInfo; import org.l2jmobius.gameserver.network.serverpackets.RelationChanged; +import org.l2jmobius.gameserver.network.serverpackets.SiegeInfo; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; @@ -784,7 +784,7 @@ public class FortSiege */ public void listRegisterClan(PlayerInstance player) { - player.sendPacket(new FortressSiegeInfo(getFort())); + player.sendPacket(new SiegeInfo(getFort(), player)); } /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java index b7c51f006f..2dd0dd0e0b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/siege/Siege.java @@ -951,7 +951,7 @@ public class Siege */ public void listRegisterClan(PlayerInstance player) { - player.sendPacket(new SiegeInfo(getCastle())); + player.sendPacket(new SiegeInfo(getCastle(), player)); } /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java index 1d17bec46a..6142b5718e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/zone/ZoneType.java @@ -23,7 +23,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** * Abstract base class for any zone type Handles basic operations @@ -331,7 +331,7 @@ public abstract class ZoneType * Broadcasts packet to all players inside the zone * @param packet */ - public void broadcastPacket(GameServerPacket packet) + public void broadcastPacket(IClientOutgoingPacket packet) { if (_characterList.isEmpty()) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ClientInitializer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ClientInitializer.java new file mode 100644 index 0000000000..e2d2bb0920 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ClientInitializer.java @@ -0,0 +1,50 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import java.nio.ByteOrder; + +import org.l2jmobius.commons.network.codecs.CryptCodec; +import org.l2jmobius.commons.network.codecs.LengthFieldBasedFrameEncoder; +import org.l2jmobius.commons.network.codecs.PacketDecoder; +import org.l2jmobius.commons.network.codecs.PacketEncoder; + +import io.netty.channel.ChannelInitializer; +import io.netty.channel.socket.SocketChannel; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; + +/** + * @author Nos + */ +public class ClientInitializer extends ChannelInitializer +{ + private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); + private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2); + + @Override + protected void initChannel(SocketChannel ch) + { + final GameClient client = new GameClient(); + ch.pipeline().addLast("length-decoder", new LengthFieldBasedFrameDecoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2, 0, 2, -2, 2, false)); + ch.pipeline().addLast("length-encoder", LENGTH_ENCODER); + ch.pipeline().addLast("crypt-codec", new CryptCodec(client.getCrypt())); + // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); + ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, client)); + ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); + ch.pipeline().addLast(client); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ClientNetworkManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ClientNetworkManager.java new file mode 100644 index 0000000000..13f05429a0 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ClientNetworkManager.java @@ -0,0 +1,41 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.network.NetworkManager; + +/** + * @author Nos + */ +public class ClientNetworkManager extends NetworkManager +{ + protected ClientNetworkManager() + { + super(EventLoopGroupManager.getInstance().getBossGroup(), EventLoopGroupManager.getInstance().getWorkerGroup(), new ClientInitializer(), Config.GAMESERVER_HOSTNAME, Config.PORT_GAME); + } + + public static ClientNetworkManager getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final ClientNetworkManager INSTANCE = new ClientNetworkManager(); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ConnectionState.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ConnectionState.java index 6c7f08eb3c..b01874908a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ConnectionState.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ConnectionState.java @@ -16,13 +16,23 @@ */ package org.l2jmobius.gameserver.network; +import org.l2jmobius.commons.network.IConnectionState; + /** * @author KenM */ -public enum ConnectionState +public enum ConnectionState implements IConnectionState { CONNECTED, + DISCONNECTED, + CLOSING, AUTHENTICATED, ENTERING, - IN_GAME + IN_GAME; + + public static final ConnectionState[] ENTERING_AND_IN_GAME = new ConnectionState[] + { + ConnectionState.ENTERING, + ConnectionState.IN_GAME + }; } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/Crypt.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/Crypt.java new file mode 100644 index 0000000000..b51e86d1af --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/Crypt.java @@ -0,0 +1,117 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import org.l2jmobius.commons.network.ICrypt; + +import io.netty.buffer.ByteBuf; + +/** + * @author UnAfraid, Nos + */ +public class Crypt implements ICrypt +{ + // private final GameClient _client; + private final byte[] _inKey = new byte[16]; + private final byte[] _outKey = new byte[16]; + private boolean _isEnabled; + + public Crypt(GameClient client) + { + // _client = client; + } + + public void setKey(byte[] key) + { + System.arraycopy(key, 0, _inKey, 0, 16); + System.arraycopy(key, 0, _outKey, 0, 16); + } + + @Override + public void encrypt(ByteBuf buf) + { + if (!_isEnabled) + { + _isEnabled = true; + onPacketSent(buf); + return; + } + + onPacketSent(buf); + + int a = 0; + while (buf.isReadable()) + { + final int b = buf.readByte() & 0xFF; + a = b ^ _outKey[(buf.readerIndex() - 1) & 15] ^ a; + buf.setByte(buf.readerIndex() - 1, a); + } + + shiftKey(_outKey, buf.writerIndex()); + } + + @Override + public void decrypt(ByteBuf buf) + { + if (!_isEnabled) + { + onPacketReceive(buf); + return; + } + + int a = 0; + while (buf.isReadable()) + { + final int b = buf.readByte() & 0xFF; + buf.setByte(buf.readerIndex() - 1, b ^ _inKey[(buf.readerIndex() - 1) & 15] ^ a); + a = b; + } + + shiftKey(_inKey, buf.writerIndex()); + + onPacketReceive(buf); + } + + private void onPacketSent(ByteBuf buf) + { + final byte[] data = new byte[buf.writerIndex()]; + buf.getBytes(0, data); + // EventDispatcher.getInstance().notifyEvent(new OnPacketSent(_client, data)); + } + + private void onPacketReceive(ByteBuf buf) + { + final byte[] data = new byte[buf.writerIndex()]; + buf.getBytes(0, data); + // EventDispatcher.getInstance().notifyEvent(new OnPacketReceived(_client, data)); + } + + private void shiftKey(byte[] key, int size) + { + int old = key[8] & 0xff; + old |= (key[9] << 8) & 0xff00; + old |= (key[10] << 0x10) & 0xff0000; + old |= (key[11] << 0x18) & 0xff000000; + + old += size; + + key[8] = (byte) (old & 0xff); + key[9] = (byte) ((old >> 0x08) & 0xff); + key[10] = (byte) ((old >> 0x10) & 0xff); + key[11] = (byte) ((old >> 0x18) & 0xff); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/EventLoopGroupManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/EventLoopGroupManager.java new file mode 100644 index 0000000000..087e6126cc --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/EventLoopGroupManager.java @@ -0,0 +1,56 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import org.l2jmobius.Config; + +import io.netty.channel.nio.NioEventLoopGroup; + +/** + * @author Nos + */ +public class EventLoopGroupManager +{ + private final NioEventLoopGroup _bossGroup = new NioEventLoopGroup(1); + private final NioEventLoopGroup _workerGroup = new NioEventLoopGroup(Config.IO_PACKET_THREAD_CORE_SIZE); + + public NioEventLoopGroup getBossGroup() + { + return _bossGroup; + } + + public NioEventLoopGroup getWorkerGroup() + { + return _workerGroup; + } + + public void shutdown() + { + _bossGroup.shutdownGracefully(); + _workerGroup.shutdownGracefully(); + } + + public static EventLoopGroupManager getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final EventLoopGroupManager INSTANCE = new EventLoopGroupManager(); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java new file mode 100644 index 0000000000..adb5acb86d --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -0,0 +1,170 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Supplier; + +import org.l2jmobius.commons.network.IConnectionState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IIncomingPackets; +import org.l2jmobius.gameserver.network.clientpackets.AnswerJoinPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestAskJoinPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestAutoSoulShot; +import org.l2jmobius.gameserver.network.clientpackets.RequestChangePartyLeader; +import org.l2jmobius.gameserver.network.clientpackets.RequestConfirmCancelItem; +import org.l2jmobius.gameserver.network.clientpackets.RequestConfirmGemStone; +import org.l2jmobius.gameserver.network.clientpackets.RequestConfirmRefinerItem; +import org.l2jmobius.gameserver.network.clientpackets.RequestConfirmTargetItem; +import org.l2jmobius.gameserver.network.clientpackets.RequestCursedWeaponList; +import org.l2jmobius.gameserver.network.clientpackets.RequestCursedWeaponLocation; +import org.l2jmobius.gameserver.network.clientpackets.RequestDismissPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestDuelAnswerStart; +import org.l2jmobius.gameserver.network.clientpackets.RequestDuelStart; +import org.l2jmobius.gameserver.network.clientpackets.RequestDuelSurrender; +import org.l2jmobius.gameserver.network.clientpackets.RequestExAcceptJoinMPCC; +import org.l2jmobius.gameserver.network.clientpackets.RequestExAskJoinMPCC; +import org.l2jmobius.gameserver.network.clientpackets.RequestExEnchantSkill; +import org.l2jmobius.gameserver.network.clientpackets.RequestExEnchantSkillInfo; +import org.l2jmobius.gameserver.network.clientpackets.RequestExFishRanking; +import org.l2jmobius.gameserver.network.clientpackets.RequestExMPCCShowPartyMembersInfo; +import org.l2jmobius.gameserver.network.clientpackets.RequestExMagicSkillUseGround; +import org.l2jmobius.gameserver.network.clientpackets.RequestExOustFromMPCC; +import org.l2jmobius.gameserver.network.clientpackets.RequestExPledgeCrestLarge; +import org.l2jmobius.gameserver.network.clientpackets.RequestExSetPledgeCrestLarge; +import org.l2jmobius.gameserver.network.clientpackets.RequestExitPartyMatchingWaitingRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestGetBossRecord; +import org.l2jmobius.gameserver.network.clientpackets.RequestListPartyMatchingWaitingRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestManorList; +import org.l2jmobius.gameserver.network.clientpackets.RequestOlympiadMatchList; +import org.l2jmobius.gameserver.network.clientpackets.RequestOlympiadObserverEnd; +import org.l2jmobius.gameserver.network.clientpackets.RequestOustFromPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestPCCafeCouponUse; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeMemberInfo; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeMemberPowerInfo; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgePowerGradeList; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeReorganizeMember; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeSetAcademyMaster; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeSetMemberPowerGrade; +import org.l2jmobius.gameserver.network.clientpackets.RequestPledgeWarList; +import org.l2jmobius.gameserver.network.clientpackets.RequestProcureCropList; +import org.l2jmobius.gameserver.network.clientpackets.RequestRefine; +import org.l2jmobius.gameserver.network.clientpackets.RequestRefineCancel; +import org.l2jmobius.gameserver.network.clientpackets.RequestSetCrop; +import org.l2jmobius.gameserver.network.clientpackets.RequestSetSeed; +import org.l2jmobius.gameserver.network.clientpackets.RequestWithdrawPartyRoom; +import org.l2jmobius.gameserver.network.clientpackets.RequestWriteHeroWords; + +/** + * @author Mobius + */ +public enum ExIncomingPackets implements IIncomingPackets +{ + REQUEST_OUST_FROM_PARTY_ROOM(0x01, RequestOustFromPartyRoom::new, ConnectionState.IN_GAME), + REQUEST_DISMISS_PARTY_ROOM(0x02, RequestDismissPartyRoom::new, ConnectionState.IN_GAME), + REQUEST_WITHDRAW_PARTY_ROOM(0x03, RequestWithdrawPartyRoom::new, ConnectionState.IN_GAME), + REQUEST_CHANGE_PARTY_LEADER(0x04, RequestChangePartyLeader::new, ConnectionState.IN_GAME), + REQUEST_AUTO_SOUL_SHOT(0x05, RequestAutoSoulShot::new, ConnectionState.IN_GAME), + REQUEST_EX_ENCHANT_SKILL_INFO(0x06, RequestExEnchantSkillInfo::new, ConnectionState.IN_GAME), + REQUEST_EX_ENCHANT_SKILL(0x07, RequestExEnchantSkill::new, ConnectionState.IN_GAME), + REQUEST_MANOR_LIST(0x08, RequestManorList::new, ConnectionState.IN_GAME), + REQUEST_PROCURE_CROP_LIST(0x09, RequestProcureCropList::new, ConnectionState.IN_GAME), + REQUEST_SET_SEED(0x0A, RequestSetSeed::new, ConnectionState.IN_GAME), + REQUEST_SET_CROP(0x0B, RequestSetCrop::new, ConnectionState.IN_GAME), + REQUEST_WRITE_HERO_WORDS(0x0C, RequestWriteHeroWords::new, ConnectionState.IN_GAME), + REQUEST_EX_ASK_JOIN_MPCC(0x0D, RequestExAskJoinMPCC::new, ConnectionState.IN_GAME), + REQUEST_EX_ACCEPT_JOIN_MPCC(0x0E, RequestExAcceptJoinMPCC::new, ConnectionState.IN_GAME), + REQUEST_EX_OUST_FROM_MPCC(0x0F, RequestExOustFromMPCC::new, ConnectionState.IN_GAME), + REQUEST_EX_PLEDGE_CREST_LARGE(0x10, RequestExPledgeCrestLarge::new, ConnectionState.IN_GAME), + REQUEST_EX_SET_PLEDGE_CREST_LARGE(0x11, RequestExSetPledgeCrestLarge::new, ConnectionState.IN_GAME), + REQUEST_OLYMPIAD_OBSERVER_END(0x12, RequestOlympiadObserverEnd::new, ConnectionState.IN_GAME), + REQUEST_OLYMPIAD_MATCH_LIST(0x13, RequestOlympiadMatchList::new, ConnectionState.IN_GAME), + REQUEST_ASK_JOIN_PARTY_ROOM(0x14, RequestAskJoinPartyRoom::new, ConnectionState.IN_GAME), + ANSWER_JOIN_PARTY_ROOM(0x15, AnswerJoinPartyRoom::new, ConnectionState.IN_GAME), + REQUEST_LIST_PARTY_MATCHING_WAITING_ROOM(0x16, RequestListPartyMatchingWaitingRoom::new, ConnectionState.IN_GAME), + REQUEST_EXIT_PARTY_MATCHING_WAITING_ROOM(0x17, RequestExitPartyMatchingWaitingRoom::new, ConnectionState.IN_GAME), + REQUEST_GET_BOSS_RECORD(0x18, RequestGetBossRecord::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_SET_ACADEMY_MASTER(0x19, RequestPledgeSetAcademyMaster::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_POWER_GRADE_LIST(0x1A, RequestPledgePowerGradeList::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_MEMBER_POWER_INFO(0x1B, RequestPledgeMemberPowerInfo::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_SET_MEMBER_POWER_GRADE(0x1C, RequestPledgeSetMemberPowerGrade::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_MEMBER_INFO(0x1D, RequestPledgeMemberInfo::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_WAR_LIST(0x1E, RequestPledgeWarList::new, ConnectionState.IN_GAME), + REQUEST_EX_FISH_RANKING(0x1F, RequestExFishRanking::new, ConnectionState.IN_GAME), + REQUEST_PC_CAFE_COUPON_USE(0x20, RequestPCCafeCouponUse::new, ConnectionState.IN_GAME), + REQUEST_CURSED_WEAPON_LIST(0x21, RequestCursedWeaponList::new, ConnectionState.IN_GAME), + REQUEST_CURSED_WEAPON_LOCATION(0x23, RequestCursedWeaponLocation::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_REORGANIZE_MEMBER(0x24, RequestPledgeReorganizeMember::new, ConnectionState.IN_GAME), + REQUEST_EX_MPCC_SHOW_PARTY_MEMBERS_INFO(0x25, RequestExMPCCShowPartyMembersInfo::new, ConnectionState.IN_GAME), + REQUEST_DUEL_START(0x27, RequestDuelStart::new, ConnectionState.IN_GAME), + REQUEST_DUEL_ANSWER_START(0x28, RequestDuelAnswerStart::new, ConnectionState.IN_GAME), + REQUEST_CONFIRM_TARGET_ITEM(0x29, RequestConfirmTargetItem::new, ConnectionState.IN_GAME), + REQUEST_CONFIRM_REFINER_ITEM(0x2A, RequestConfirmRefinerItem::new, ConnectionState.IN_GAME), + REQUEST_CONFIRM_GEM_STONE(0x2B, RequestConfirmGemStone::new, ConnectionState.IN_GAME), + REQUEST_REFINE(0x2C, RequestRefine::new, ConnectionState.IN_GAME), + REQUEST_CONFIRM_CANCEL_ITEM(0x2D, RequestConfirmCancelItem::new, ConnectionState.IN_GAME), + REQUEST_REFINE_CANCEL(0x2E, RequestRefineCancel::new, ConnectionState.IN_GAME), + REQUEST_EX_MAGIC_SKILL_USE_GROUND(0x2F, RequestExMagicSkillUseGround::new, ConnectionState.IN_GAME), + REQUEST_DUEL_SURRENDER(0x30, RequestDuelSurrender::new, ConnectionState.IN_GAME); + + public static final ExIncomingPackets[] PACKET_ARRAY; + static + { + final short maxPacketId = (short) Arrays.stream(values()).mapToInt(IIncomingPackets::getPacketId).max().orElse(0); + PACKET_ARRAY = new ExIncomingPackets[maxPacketId + 1]; + for (ExIncomingPackets incomingPacket : values()) + { + PACKET_ARRAY[incomingPacket.getPacketId()] = incomingPacket; + } + } + + private int _packetId; + private Supplier> _incomingPacketFactory; + private Set _connectionStates; + + ExIncomingPackets(int packetId, Supplier> incomingPacketFactory, IConnectionState... connectionStates) + { + // packetId is an unsigned short + if (packetId > 0xFFFF) + { + throw new IllegalArgumentException("packetId must not be bigger than 0xFFFF"); + } + _packetId = packetId; + _incomingPacketFactory = incomingPacketFactory != null ? incomingPacketFactory : () -> null; + _connectionStates = new HashSet<>(Arrays.asList(connectionStates)); + } + + @Override + public int getPacketId() + { + return _packetId; + } + + @Override + public IIncomingPacket newIncomingPacket() + { + return _incomingPacketFactory.get(); + } + + @Override + public Set getConnectionStates() + { + return _connectionStates; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameClient.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameClient.java index a461fe42f1..3e0ba24565 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameClient.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameClient.java @@ -17,25 +17,25 @@ package org.l2jmobius.gameserver.network; import java.net.InetAddress; -import java.nio.ByteBuffer; +import java.net.InetSocketAddress; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Future; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.locks.ReentrantLock; +import java.util.logging.Level; import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.mmocore.MMOClient; -import org.l2jmobius.commons.mmocore.MMOConnection; -import org.l2jmobius.commons.mmocore.ReceivablePacket; +import org.l2jmobius.commons.network.ChannelInboundHandler; +import org.l2jmobius.commons.network.ICrypt; +import org.l2jmobius.commons.network.IIncomingPacket; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.LoginServerThread; import org.l2jmobius.gameserver.LoginServerThread.SessionKey; @@ -53,37 +53,125 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; +import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld; import org.l2jmobius.gameserver.network.serverpackets.ServerClose; +import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.EventData; import org.l2jmobius.gameserver.util.FloodProtectors; -public class GameClient extends MMOClient> implements Runnable +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; + +/** + * Represents a client connected on Game Server. + * @author KenM + */ +public class GameClient extends ChannelInboundHandler { protected static final Logger LOGGER = Logger.getLogger(GameClient.class.getName()); + protected static final Logger LOGGER_ACCOUNTING = Logger.getLogger("accounting"); private final FloodProtectors _floodProtectors = new FloodProtectors(this); private final ReentrantLock _playerLock = new ReentrantLock(); - private final List _charSlotMapping = new ArrayList<>(); - private final ReentrantLock _queueLock = new ReentrantLock(); - private final ArrayBlockingQueue> _packetQueue; - private final GameCrypt _crypt; - private ConnectionState _state; + private final Crypt _crypt; + private InetAddress _addr; + private Channel _channel; private String _accountName; private SessionKey _sessionId; - private ScheduledFuture _cleanupTask = null; + private PlayerInstance _player; + private final List _charSlotMapping = new ArrayList<>(); private volatile boolean _isDetached = false; private boolean _isAuthedGG; private int _protocolVersion; - protected PlayerInstance _player; + private ScheduledFuture _cleanupTask = null; - public GameClient(MMOConnection con) + public GameClient() { - super(con); - _state = ConnectionState.CONNECTED; - _crypt = new GameCrypt(); - _packetQueue = new ArrayBlockingQueue<>(Config.CLIENT_PACKET_QUEUE_SIZE); + _crypt = new Crypt(this); + } + + @Override + public void channelActive(ChannelHandlerContext ctx) + { + super.channelActive(ctx); + + setConnectionState(ConnectionState.CONNECTED); + final InetSocketAddress address = (InetSocketAddress) ctx.channel().remoteAddress(); + _addr = address.getAddress(); + _channel = ctx.channel(); + LOGGER_ACCOUNTING.finer("Client Connected: " + ctx.channel()); + } + + @Override + public void channelInactive(ChannelHandlerContext ctx) + { + LOGGER_ACCOUNTING.finer("Client Disconnected: " + ctx.channel()); + LoginServerThread.getInstance().sendLogout(getAccountName()); + + if ((_player == null) || !_player.isInOfflineMode()) + { + // no long running tasks here, do it async + try + { + ThreadPool.execute(new DisconnectTask()); + } + catch (RejectedExecutionException e) + { + // server is closing + } + } + } + + @Override + protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket packet) + { + try + { + packet.run(this); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception for: " + toString() + " on packet.run: " + packet.getClass().getSimpleName(), e); + } + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) + { + } + + public void closeNow() + { + if (_channel != null) + { + _channel.close(); + } + + synchronized (this) + { + if (_cleanupTask != null) + { + cancelCleanup(); + } + _cleanupTask = ThreadPool.schedule(new CleanupTask(), 0); // delayed? + } + } + + public void close(IClientOutgoingPacket packet) + { + sendPacket(packet); + closeNow(); + } + + public void close(boolean toLoginScreen) + { + close(toLoginScreen ? ServerClose.STATIC_PACKET : LeaveWorld.STATIC_PACKET); + } + + public Channel getChannel() + { + return _channel; } public byte[] enableCrypt() @@ -93,33 +181,13 @@ public class GameClient extends MMOClient> implements return key; } - public ConnectionState getState() + /** + * For loaded offline traders returns localhost address. + * @return cached connection IP address, for checking detached clients. + */ + public InetAddress getConnectionAddress() { - return _state; - } - - public void setState(ConnectionState pState) - { - if (_state != pState) - { - _state = pState; - _packetQueue.clear(); - } - } - - @Override - public boolean decrypt(ByteBuffer buf, int size) - { - _crypt.decrypt(buf.array(), buf.position(), size); - return true; - } - - @Override - public boolean encrypt(ByteBuffer buf, int size) - { - _crypt.encrypt(buf.array(), buf.position(), size); - buf.position(buf.position() + size); - return true; + return _addr; } public PlayerInstance getPlayer() @@ -141,16 +209,16 @@ public class GameClient extends MMOClient> implements return _playerLock; } - public boolean isAuthedGG() - { - return _isAuthedGG; - } - public void setGameGuardOk(boolean value) { _isAuthedGG = value; } + public boolean isAuthedGG() + { + return _isAuthedGG; + } + public void setAccountName(String pAccountName) { _accountName = pAccountName; @@ -171,18 +239,26 @@ public class GameClient extends MMOClient> implements return _sessionId; } - public void sendPacket(GameServerPacket gsp) + public void sendPacket(IClientOutgoingPacket packet) { - if (_isDetached) + if (_isDetached || (packet == null)) { return; } - if (getConnection() != null) - { - getConnection().sendPacket(gsp); - gsp.runImpl(); - } + // Write into the channel. + _channel.writeAndFlush(packet); + + // Run packet implementation. + packet.runImpl(_player); + } + + /** + * @param smId + */ + public void sendPacket(SystemMessageId smId) + { + sendPacket(new SystemMessage(smId)); } public boolean isDetached() @@ -197,17 +273,17 @@ public class GameClient extends MMOClient> implements /** * Method to handle character deletion - * @param charslot + * @param characterSlot * @return a byte: *
  • -1: Error: No char was found for such charslot, caught exception, etc... *
  • 0: character is not member of any clan, proceed with deletion *
  • 1: character is member of a clan, but not clan leader *
  • 2: character is clan leader */ - public byte markToDeleteChar(int charslot) + public byte markToDeleteChar(int characterSlot) { - final int objid = getObjectIdForSlot(charslot); - if (objid < 0) + final int objectId = getObjectIdForSlot(characterSlot); + if (objectId < 0) { return -1; } @@ -217,7 +293,7 @@ public class GameClient extends MMOClient> implements try (Connection con = DatabaseFactory.getConnection()) { PreparedStatement statement = con.prepareStatement("SELECT clanId from characters WHERE charId=?"); - statement.setInt(1, objid); + statement.setInt(1, objectId); final ResultSet rs = statement.executeQuery(); rs.next(); @@ -230,7 +306,7 @@ public class GameClient extends MMOClient> implements { answer = 0; // jeezes! } - else if (clan.getLeaderId() == objid) + else if (clan.getLeaderId() == objectId) { answer = 2; } @@ -245,13 +321,13 @@ public class GameClient extends MMOClient> implements { if (Config.DELETE_DAYS == 0) { - deleteCharByObjId(objid); + deleteCharByObjId(objectId); } else { statement = con.prepareStatement("UPDATE characters SET deletetime=? WHERE charId=?"); statement.setLong(1, Chronos.currentTimeMillis() + (Config.DELETE_DAYS * 86400000)); // 24*60*60*1000 = 86400000 - statement.setInt(2, objid); + statement.setInt(2, objectId); statement.execute(); statement.close(); rs.close(); @@ -272,11 +348,11 @@ public class GameClient extends MMOClient> implements return answer; } - public void markRestoredChar(int charslot) + public void markRestoredChar(int characterSlot) { // have to make sure active character must be nulled - final int objid = getObjectIdForSlot(charslot); - if (objid < 0) + final int objectId = getObjectIdForSlot(characterSlot); + if (objectId < 0) { return; } @@ -284,7 +360,7 @@ public class GameClient extends MMOClient> implements try (Connection con = DatabaseFactory.getConnection()) { final PreparedStatement statement = con.prepareStatement("UPDATE characters SET deletetime=0 WHERE charId=?"); - statement.setInt(1, objid); + statement.setInt(1, objectId); statement.execute(); statement.close(); } @@ -294,102 +370,102 @@ public class GameClient extends MMOClient> implements } } - public static void deleteCharByObjId(int objid) + public static void deleteCharByObjId(int objectId) { - if (objid < 0) + if (objectId < 0) { return; } try (Connection con = DatabaseFactory.getConnection()) { - PreparedStatement statement; + PreparedStatement ps; - statement = con.prepareStatement("DELETE FROM character_friends WHERE char_id=? OR friend_id=?"); - statement.setInt(1, objid); - statement.setInt(2, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_friends WHERE char_id=? OR friend_id=?"); + ps.setInt(1, objectId); + ps.setInt(2, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_hennas WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_hennas WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_macroses WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_macroses WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_quests WHERE char_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_quests WHERE char_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_recipebook WHERE char_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_recipebook WHERE char_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_shortcuts WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_shortcuts WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_skills WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_skills WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_skills_save WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_skills_save WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM character_subclasses WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM character_subclasses WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM heroes WHERE charId=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM heroes WHERE charId=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM olympiad_nobles WHERE charId=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM olympiad_nobles WHERE charId=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM seven_signs WHERE char_obj_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM seven_signs WHERE char_obj_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM pets WHERE item_obj_id IN (SELECT object_id FROM items WHERE items.owner_id=?)"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM pets WHERE item_obj_id IN (SELECT object_id FROM items WHERE items.owner_id=?)"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM augmentations WHERE item_id IN (SELECT object_id FROM items WHERE items.owner_id=?)"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM augmentations WHERE item_id IN (SELECT object_id FROM items WHERE items.owner_id=?)"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM items WHERE owner_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM items WHERE owner_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM merchant_lease WHERE player_id=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM merchant_lease WHERE player_id=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); - statement = con.prepareStatement("DELETE FROM characters WHERE charId=?"); - statement.setInt(1, objid); - statement.execute(); - statement.close(); + ps = con.prepareStatement("DELETE FROM characters WHERE charId=?"); + ps.setInt(1, objectId); + ps.execute(); + ps.close(); } catch (Exception e) { @@ -397,31 +473,31 @@ public class GameClient extends MMOClient> implements } } - public PlayerInstance loadCharFromDisk(int charslot) + public PlayerInstance loadCharFromDisk(int characterSlot) { - final int objId = getObjectIdForSlot(charslot); - if (objId < 0) + final int objectId = getObjectIdForSlot(characterSlot); + if (objectId < 0) { return null; } - PlayerInstance character = World.getInstance().getPlayer(objId); - if (character != null) + PlayerInstance player = World.getInstance().getPlayer(objectId); + if (player != null) { // exploit prevention, should not happens in normal way - LOGGER.warning("Attempt of double login: " + character.getName() + "(" + objId + ") " + _accountName); + LOGGER.warning("Attempt of double login: " + player.getName() + "(" + objectId + ") " + _accountName); - if (character.getClient() != null) + if (player.getClient() != null) { - character.getClient().closeNow(); + player.getClient().closeNow(); } else { - character.deleteMe(); + player.deleteMe(); try { - character.store(); + player.store(); } catch (Exception e2) { @@ -430,8 +506,8 @@ public class GameClient extends MMOClient> implements } } - character = PlayerInstance.load(objId); - return character; + player = PlayerInstance.load(objectId); + return player; } public void setCharSelection(CharSelectInfoPackage[] chars) @@ -445,14 +521,6 @@ public class GameClient extends MMOClient> implements } } - public void close(GameServerPacket gsp) - { - if (getConnection() != null) - { - getConnection().close(gsp); - } - } - private int getObjectIdForSlot(int charslot) { if ((charslot < 0) || (charslot >= _charSlotMapping.size())) @@ -465,55 +533,9 @@ public class GameClient extends MMOClient> implements return objectId.intValue(); } - @Override - public void onForcedDisconnection() - { - // the force operation will allow to not save client position to prevent again criticals and stuck - closeNow(); - } - - @Override - public void onDisconnection() - { - // no long running tasks here, do it async - try - { - ThreadPool.execute(new DisconnectTask()); - } - catch (RejectedExecutionException e) - { - // server is closing - } - } - - /** - * Close client connection with {@link ServerClose} packet - */ - public void closeNow() - { - close(0); - } - - /** - * Close client connection with {@link ServerClose} packet - * @param delay - */ - public void close(int delay) - { - close(ServerClose.STATIC_PACKET); - synchronized (this) - { - if (_cleanupTask != null) - { - cancelCleanup(); - } - _cleanupTask = ThreadPool.schedule(new CleanupTask(), delay); // delayed - } - } - public String getIpAddress() { - final InetAddress address = getConnection().getInetAddress(); + final InetAddress address = _addr; String ip; if (address == null) { @@ -534,20 +556,22 @@ public class GameClient extends MMOClient> implements { try { - switch (_state) + final InetAddress address = _addr; + final ConnectionState state = (ConnectionState) getConnectionState(); + switch (state) { case CONNECTED: { - return "[IP: " + getIpAddress() + "]"; + return "[IP: " + (address == null ? "disconnected" : address.getHostAddress()) + "]"; } case AUTHENTICATED: { - return "[Account: " + _accountName + " - IP: " + getIpAddress() + "]"; + return "[Account: " + _accountName + " - IP: " + (address == null ? "disconnected" : address.getHostAddress()) + "]"; } case ENTERING: case IN_GAME: { - return "[Character: " + (_player == null ? "disconnected" : _player.getName()) + " - Account: " + _accountName + " - IP: " + getIpAddress() + "]"; + return "[Character: " + (_player == null ? "disconnected" : _player.getName() + "[" + _player.getObjectId() + "]") + " - Account: " + _accountName + " - IP: " + (address == null ? "disconnected" : address.getHostAddress()) + "]"; } default: { @@ -771,72 +795,6 @@ public class GameClient extends MMOClient> implements return _isDetached; } - /** - * Add packet to the queue and start worker thread if needed - * @param packet - */ - public void execute(ReceivablePacket packet) - { - if (!_packetQueue.offer(packet)) - { - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - if (_queueLock.isLocked()) - { - return; - } - - try - { - ThreadPool.execute(this); - } - catch (RejectedExecutionException e) - { - } - } - - @Override - public void run() - { - if (!_queueLock.tryLock()) - { - return; - } - - try - { - while (true) - { - final ReceivablePacket packet = _packetQueue.poll(); - if (packet == null) - { - return; - } - - if (_isDetached) // clear queue immediately after detach - { - _packetQueue.clear(); - return; - } - - try - { - packet.run(); - } - catch (Exception e) - { - LOGGER.warning("Exception during execution " + packet.getClass().getSimpleName() + ", client: " + this + "," + e.getMessage()); - } - } - } - finally - { - _queueLock.unlock(); - } - } - public void setProtocolVersion(int version) { _protocolVersion = version; @@ -846,4 +804,9 @@ public class GameClient extends MMOClient> implements { return _protocolVersion; } + + public ICrypt getCrypt() + { + return _crypt; + } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameCrypt.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameCrypt.java deleted file mode 100644 index 98e473957e..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GameCrypt.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network; - -/** - * @author KenM - */ -public class GameCrypt -{ - private final byte[] _inKey = new byte[16]; - private final byte[] _outKey = new byte[16]; - private boolean _isEnabled; - - public void setKey(byte[] key) - { - System.arraycopy(key, 0, _inKey, 0, 16); - System.arraycopy(key, 0, _outKey, 0, 16); - } - - public void decrypt(byte[] raw, int offset, int size) - { - if (!_isEnabled) - { - return; - } - - int temp = 0; - for (int i = 0; i < size; i++) - { - final int temp2 = raw[offset + i] & 0xFF; - raw[offset + i] = (byte) (temp2 ^ _inKey[i & 15] ^ temp); - temp = temp2; - } - - int old = _inKey[8] & 0xff; - old |= (_inKey[9] << 8) & 0xff00; - old |= (_inKey[10] << 0x10) & 0xff0000; - old |= (_inKey[11] << 0x18) & 0xff000000; - - old += size; - - _inKey[8] = (byte) (old & 0xff); - _inKey[9] = (byte) ((old >> 0x08) & 0xff); - _inKey[10] = (byte) ((old >> 0x10) & 0xff); - _inKey[11] = (byte) ((old >> 0x18) & 0xff); - } - - public void encrypt(byte[] raw, int offset, int size) - { - if (!_isEnabled) - { - _isEnabled = true; - return; - } - - int temp = 0; - for (int i = 0; i < size; i++) - { - final int temp2 = raw[offset + i] & 0xFF; - temp = temp2 ^ _outKey[i & 15] ^ temp; - raw[offset + i] = (byte) temp; - } - - int old = _outKey[8] & 0xff; - old |= (_outKey[9] << 8) & 0xff00; - old |= (_outKey[10] << 0x10) & 0xff0000; - old |= (_outKey[11] << 0x18) & 0xff000000; - - old += size; - - _outKey[8] = (byte) (old & 0xff); - _outKey[9] = (byte) ((old >> 0x08) & 0xff); - _outKey[10] = (byte) ((old >> 0x10) & 0xff); - _outKey[11] = (byte) ((old >> 0x18) & 0xff); - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GamePacketHandler.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GamePacketHandler.java deleted file mode 100644 index 352aaed795..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/GamePacketHandler.java +++ /dev/null @@ -1,1358 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network; - -import java.nio.ByteBuffer; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.mmocore.IClientFactory; -import org.l2jmobius.commons.mmocore.IMMOExecutor; -import org.l2jmobius.commons.mmocore.IPacketHandler; -import org.l2jmobius.commons.mmocore.MMOConnection; -import org.l2jmobius.commons.mmocore.ReceivablePacket; -import org.l2jmobius.commons.util.Util; -import org.l2jmobius.gameserver.network.clientpackets.*; -import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; - -/** - * Stateful Packet Handler
    - * The Stateful approach prevents the server from handling inconsistent packets, examples:
    - *
  • Clients sends a MoveToLocation packet without having a character attached. (Potential errors handling the packet).
  • - *
  • Clients sends a RequestAuthLogin being already authed. (Potential exploit).

  • - *
    - * Note: If for a given exception a packet needs to be handled on more then one state, then it should be added to all these states. - */ -public class GamePacketHandler implements IPacketHandler, IClientFactory, IMMOExecutor -{ - private static final Logger LOGGER = Logger.getLogger(GamePacketHandler.class.getName()); - - @Override - public ReceivablePacket handlePacket(ByteBuffer buf, GameClient client) - { - if (client.dropPacket()) - { - client.sendPacket(ActionFailed.STATIC_PACKET); - return null; - } - - final int opcode = buf.get() & 0xFF; - - ReceivablePacket msg = null; - final ConnectionState state = client.getState(); - - switch (state) - { - case CONNECTED: - { - switch (opcode) - { - case 0x00: - { - msg = new ProtocolVersion(); - break; - } - case 0x08: - { - msg = new AuthLogin(); - break; - } - default: - { - printDebug(opcode, buf, state, client); - break; - } - } - break; - } - case AUTHENTICATED: - { - switch (opcode) - { - case 0x09: - { - msg = new Logout(); - break; - } - case 0x0b: - { - msg = new CharacterCreate(); - break; - } - case 0x0c: - { - msg = new CharacterDelete(); - break; - } - case 0x0d: - { - msg = new CharacterSelected(); - break; - } - case 0x0e: - { - msg = new NewCharacter(); - break; - } - case 0x62: - { - msg = new CharacterRestore(); - break; - } - case 0x68: - { - msg = new RequestPledgeCrest(); - break; - } - // single packet - default: - { - printDebug(opcode, buf, state, client); - break; - } - } - break; - } - case ENTERING: - { - switch (opcode) - { - case 0x03: - { - msg = new EnterWorld(); - break; - } - default: - { - printDebug(opcode, buf, state, client); - break; - } - } - break; - } - case IN_GAME: - { - switch (opcode) - { - case 0x01: - { - msg = new MoveBackwardToLocation(); - break; - } - // case 0x02: - // Say ... not used any more ?? - // break; - case 0x04: - { - msg = new Action(); - break; - } - case 0x09: - { - msg = new Logout(); - break; - } - case 0x0a: - { - msg = new AttackRequest(); - break; - } - case 0x0f: - { - msg = new RequestItemList(); - break; - } - case 0x10: - { - // RequestEquipItem ... not used any more, instead "useItem" - break; - } - case 0x11: - { - msg = new RequestUnEquipItem(); - break; - } - case 0x12: - { - msg = new RequestDropItem(); - break; - } - case 0x14: - { - msg = new UseItem(); - break; - } - case 0x15: - { - msg = new TradeRequest(); - break; - } - case 0x16: - { - msg = new AddTradeItem(); - break; - } - case 0x17: - { - msg = new TradeDone(); - break; - } - case 0x1a: - { - msg = new DummyPacket(); - break; - } - case 0x1b: - { - msg = new RequestSocialAction(); - break; - } - case 0x1c: - { - msg = new ChangeMoveType2(); - break; - } - case 0x1d: - { - msg = new ChangeWaitType2(); - break; - } - case 0x1e: - { - msg = new RequestSellItem(); - break; - } - case 0x1f: - { - msg = new RequestBuyItem(); - break; - } - case 0x20: - { - msg = new RequestLinkHtml(); - break; - } - case 0x21: - { - msg = new RequestBypassToServer(); - break; - } - case 0x22: - { - msg = new RequestBBSwrite(); - break; - } - case 0x23: - { - msg = new DummyPacket(); - break; - } - case 0x24: - { - msg = new RequestJoinPledge(); - break; - } - case 0x25: - { - msg = new RequestAnswerJoinPledge(); - break; - } - case 0x26: - { - msg = new RequestWithdrawalPledge(); - break; - } - case 0x27: - { - msg = new RequestOustPledgeMember(); - break; - } - case 0x28: - { - // RequestDismissPledge - break; - } - case 0x29: - { - msg = new RequestJoinParty(); - break; - } - case 0x2a: - { - msg = new RequestAnswerJoinParty(); - break; - } - case 0x2b: - { - msg = new RequestWithDrawalParty(); - break; - } - case 0x2c: - { - msg = new RequestOustPartyMember(); - break; - } - case 0x2d: - { - // RequestDismissParty - break; - } - case 0x2e: - { - msg = new DummyPacket(); - break; - } - case 0x2f: - { - msg = new RequestMagicSkillUse(); - break; - } - case 0x30: - { - msg = new Appearing(); // (after death) - break; - } - case 0x31: - { - if (Config.ALLOW_WAREHOUSE) - { - msg = new SendWareHouseDepositList(); - } - break; - } - case 0x32: - { - msg = new SendWareHouseWithDrawList(); - break; - } - case 0x33: - { - msg = new RequestShortCutReg(); - break; - } - case 0x34: - { - msg = new DummyPacket(); - break; - } - case 0x35: - { - msg = new RequestShortCutDel(); - break; - } - case 0x36: - { - msg = new CannotMoveAnymore(); - break; - } - case 0x37: - { - msg = new RequestTargetCanceld(); - break; - } - case 0x38: - { - msg = new Say2(); - break; - } - case 0x3c: - { - msg = new RequestPledgeMemberList(); - break; - } - case 0x3e: - { - msg = new DummyPacket(); - break; - } - case 0x3f: - { - msg = new RequestSkillList(); - break; - } - case 0x41: - { - msg = new MoveWithDelta(); - // MoveWithDelta ... unused ?? or only on ship ?? - break; - } - case 0x42: - { - msg = new RequestGetOnVehicle(); - break; - } - case 0x43: - { - msg = new RequestGetOffVehicle(); - break; - } - case 0x44: - { - msg = new AnswerTradeRequest(); - break; - } - case 0x45: - { - msg = new RequestActionUse(); - break; - } - case 0x46: - { - msg = new RequestRestart(); - break; - } - case 0x47: - { - msg = new RequestSiegeInfo(); - break; - } - case 0x48: - { - msg = new ValidatePosition(); - break; - } - case 0x49: - { - // RequestSEKCustom - break; - } - case 0x4a: - { - msg = new StartRotating(); - break; - } - case 0x4b: - { - msg = new FinishRotating(); - break; - } - case 0x4d: - { - msg = new RequestStartPledgeWar(); - break; - } - case 0x4e: - { - msg = new RequestReplyStartPledgeWar(); - break; - } - case 0x4f: - { - msg = new RequestStopPledgeWar(); - break; - } - case 0x50: - { - msg = new RequestReplyStopPledgeWar(); - break; - } - case 0x51: - { - msg = new RequestSurrenderPledgeWar(); - break; - } - case 0x52: - { - msg = new RequestReplySurrenderPledgeWar(); - break; - } - case 0x53: - { - msg = new RequestSetPledgeCrest(); - break; - } - case 0x55: - { - msg = new RequestGiveNickName(); - break; - } - case 0x57: - { - msg = new RequestShowBoard(); - break; - } - case 0x58: - { - msg = new RequestEnchantItem(); - break; - } - case 0x59: - { - msg = new RequestDestroyItem(); - break; - } - case 0x5b: - { - msg = new SendBypassBuildCmd(); - break; - } - case 0x5c: - { - msg = new RequestMoveToLocationInVehicle(); - break; - } - case 0x5d: - { - msg = new CannotMoveAnymoreInVehicle(); - break; - } - case 0x5e: - { - msg = new RequestFriendInvite(); - break; - } - case 0x5f: - { - msg = new RequestAnswerFriendInvite(); - break; - } - case 0x60: - { - msg = new RequestFriendList(); - break; - } - case 0x61: - { - msg = new RequestFriendDel(); - break; - } - case 0x63: - { - msg = new RequestQuestList(); - break; - } - case 0x64: - { - msg = new RequestQuestAbort(); - break; - } - case 0x66: - { - msg = new RequestPledgeInfo(); - break; - } - case 0x67: - { - msg = new RequestPledgeExtendedInfo(); - break; - } - case 0x68: - { - msg = new RequestPledgeCrest(); - break; - } - case 0x69: - { - msg = new RequestSurrenderPersonally(); - break; - } - case 0x6a: - { - // Ride - break; - } - case 0x6b: // send when talking to trainer npc, to show list of available skills - { - msg = new RequestAquireSkillInfo(); // --> [s] 0xa4; - break; - } - case 0x6c: // send when a skill to be learned is selected - { - msg = new RequestAquireSkill(); - break; - } - case 0x6d: - { - msg = new RequestRestartPoint(); - break; - } - case 0x6e: - { - msg = new RequestGMCommand(); - break; - } - case 0x6f: - { - msg = new RequestPartyMatchConfig(); - break; - } - case 0x70: - { - msg = new RequestPartyMatchList(); - break; - } - case 0x71: - { - msg = new RequestPartyMatchDetail(); - break; - } - case 0x72: - { - msg = new RequestCrystallizeItem(); - break; - } - case 0x73: - { - msg = new RequestPrivateStoreManageSell(); - break; - } - case 0x74: - { - msg = new SetPrivateStoreListSell(); - break; - } - case 0x75: - { - // msg = new RequestPrivateStoreManageCancel(data, _client); - break; - } - case 0x76: - { - msg = new RequestPrivateStoreQuitSell(); - break; - } - case 0x77: - { - msg = new SetPrivateStoreMsgSell(); - break; - } - case 0x78: - { - // RequestPrivateStoreList - break; - } - case 0x79: - { - msg = new RequestPrivateStoreBuy(); - break; - } - case 0x7a: - { - // ReviveReply - break; - } - case 0x7b: - { - msg = new RequestTutorialLinkHtml(); - break; - } - case 0x7c: - { - msg = new RequestTutorialPassCmdToServer(); - break; - } - case 0x7d: - { - msg = new RequestTutorialQuestionMark(); - break; - } - case 0x7e: - { - msg = new RequestTutorialClientEvent(); - break; - } - case 0x7f: - { - msg = new RequestPetition(); - break; - } - case 0x80: - { - msg = new RequestPetitionCancel(); - break; - } - case 0x81: - { - msg = new RequestGmList(); - break; - } - case 0x82: - { - msg = new RequestJoinAlly(); - break; - } - case 0x83: - { - msg = new RequestAnswerJoinAlly(); - break; - } - case 0x84: - { - msg = new AllyLeave(); - break; - } - case 0x85: - { - msg = new AllyDismiss(); - break; - } - case 0x86: - { - msg = new RequestDismissAlly(); - break; - } - case 0x87: - { - msg = new RequestSetAllyCrest(); - break; - } - case 0x88: - { - msg = new RequestAllyCrest(); - break; - } - case 0x89: - { - msg = new RequestChangePetName(); - break; - } - case 0x8a: - { - msg = new RequestPetUseItem(); - break; - } - case 0x8b: - { - msg = new RequestGiveItemToPet(); - break; - } - case 0x8c: - { - msg = new RequestGetItemFromPet(); - break; - } - case 0x8e: - { - msg = new RequestAllyInfo(); - break; - } - case 0x8f: - { - msg = new RequestPetGetItem(); - break; - } - case 0x90: - { - msg = new RequestPrivateStoreManageBuy(); - break; - } - case 0x91: - { - msg = new SetPrivateStoreListBuy(); - break; - } - case 0x92: - { - // RequestPrivateStoreBuyManageCancel - break; - } - case 0x93: - { - msg = new RequestPrivateStoreQuitBuy(); - break; - } - case 0x94: - { - msg = new SetPrivateStoreMsgBuy(); - break; - } - case 0x95: - { - // RequestPrivateStoreBuyList - break; - } - case 0x96: - { - msg = new RequestPrivateStoreSell(); - break; - } - case 0x97: - { - // SendTimeCheckPacket - break; - } - case 0x98: - { - // RequestStartAllianceWar - break; - } - case 0x99: - { - // ReplyStartAllianceWar - break; - } - case 0x9a: - { - // RequestStopAllianceWar - break; - } - case 0x9b: - { - // ReplyStopAllianceWar - break; - } - case 0x9c: - { - // RequestSurrenderAllianceWar - break; - } - case 0x9d: - { - msg = new RequestSkillCoolTime(); - break; - } - case 0x9e: - { - msg = new RequestPackageSendableItemList(); - break; - } - case 0x9f: - { - msg = new RequestPackageSend(); - break; - } - case 0xa0: - { - msg = new RequestBlock(); - break; - } - case 0xa1: - { - // RequestCastleSiegeInfo - break; - } - case 0xa2: - { - msg = new RequestSiegeAttackerList(); - break; - } - case 0xa3: - { - msg = new RequestSiegeDefenderList(); - break; - } - case 0xa4: - { - msg = new RequestJoinSiege(); - break; - } - case 0xa5: - { - msg = new RequestConfirmSiegeWaitingList(); - break; - } - case 0xa6: - { - // RequestSetCastleSiegeTime - break; - } - case 0xa7: - { - msg = new MultiSellChoose(); - break; - } - case 0xa8: - { - // NetPing - break; - } - case 0xaa: - { - msg = new RequestUserCommand(); - break; - } - case 0xab: - { - msg = new SnoopQuit(); - break; - } - case 0xac: // we still need this packet to handle BACK button of craft dialog - { - msg = new RequestRecipeBookOpen(); - break; - } - case 0xad: - { - msg = new RequestRecipeBookDestroy(); - break; - } - case 0xae: - { - msg = new RequestRecipeItemMakeInfo(); - break; - } - case 0xaf: - { - msg = new RequestRecipeItemMakeSelf(); - break; - } - case 0xb0: - { - // msg = new RequestRecipeShopManageList(data, client); - break; - } - case 0xb1: - { - msg = new RequestRecipeShopMessageSet(); - break; - } - case 0xb2: - { - msg = new RequestRecipeShopListSet(); - break; - } - case 0xb3: - { - msg = new RequestRecipeShopManageQuit(); - break; - } - case 0xb4: - { - // msg = new SnoopQuit(); - break; - } - case 0xb5: - { - msg = new RequestRecipeShopMakeInfo(); - break; - } - case 0xb6: - { - msg = new RequestRecipeShopMakeItem(); - break; - } - case 0xb7: - { - msg = new RequestRecipeShopManagePrev(); - break; - } - case 0xb8: - { - msg = new ObserverReturn(); - break; - } - case 0xb9: - { - msg = new RequestEvaluate(); - break; - } - case 0xba: - { - msg = new RequestHennaList(); - break; - } - case 0xbb: - { - msg = new RequestHennaItemInfo(); - break; - } - case 0xbc: - { - msg = new RequestHennaEquip(); - break; - } - case 0xbd: - { - msg = new RequestHennaRemoveList(); - break; - } - case 0xbe: - { - msg = new RequestHennaItemRemoveInfo(); - break; - } - case 0xbf: - { - msg = new RequestHennaRemove(); - break; - } - case 0xc0: - { - // Clan Privileges - msg = new RequestPledgePower(); - break; - } - case 0xc1: - { - msg = new RequestMakeMacro(); - break; - } - case 0xc2: - { - msg = new RequestDeleteMacro(); - break; - } - // Manor - case 0xc3: - { - msg = new RequestBuyProcure(); - break; - } - case 0xc4: - { - msg = new RequestBuySeed(); - break; - } - case 0xc5: - { - msg = new DlgAnswer(); - break; - } - case 0xc6: - { - msg = new RequestWearItem(); - break; - } - case 0xc7: - { - msg = new RequestSSQStatus(); - break; - } - case 0xCA: - { - msg = new GameGuardReply(); - break; - } - case 0xcc: - { - msg = new RequestSendFriendMsg(); - break; - } - case 0xcd: - { - msg = new RequestShowMiniMap(); - break; - } - case 0xce: // MSN dialogs so that you dont see them in the console. - { - break; - } - case 0xcf: // record video - { - msg = new RequestRecordInfo(); - break; - } - case 0xd0: - { - int opcode2 = -1; - if (buf.remaining() >= 2) - { - opcode2 = buf.getShort() & 0xffff; - } - else - { - LOGGER.warning("Client: " + client.toString() + " sent a 0xd0 without the second opcode."); - break; - } - - switch (opcode2) - { - case 1: - { - msg = new RequestOustFromPartyRoom(); - break; - } - case 2: - { - msg = new RequestDismissPartyRoom(); - break; - } - case 3: - { - msg = new RequestWithdrawPartyRoom(); - break; - } - case 4: - { - msg = new RequestChangePartyLeader(); - break; - } - case 5: - { - msg = new RequestAutoSoulShot(); - break; - } - case 6: - { - msg = new RequestExEnchantSkillInfo(); - break; - } - case 7: - { - msg = new RequestExEnchantSkill(); - break; - } - case 8: - { - msg = new RequestManorList(); - break; - } - case 9: - { - msg = new RequestProcureCropList(); - break; - } - case 0x0a: - { - msg = new RequestSetSeed(); - break; - } - case 0x0b: - { - msg = new RequestSetCrop(); - break; - } - case 0x0c: - { - msg = new RequestWriteHeroWords(); - break; - } - case 0x0d: - { - msg = new RequestExAskJoinMPCC(); - break; - } - case 0x0e: - { - msg = new RequestExAcceptJoinMPCC(); - break; - } - case 0x0f: - { - msg = new RequestExOustFromMPCC(); - break; - } - case 0x10: - { - msg = new RequestExPledgeCrestLarge(); - break; - } - case 0x11: - { - msg = new RequestExSetPledgeCrestLarge(); - break; - } - case 0x12: - { - msg = new RequestOlympiadObserverEnd(); - break; - } - case 0x13: - { - msg = new RequestOlympiadMatchList(); - break; - } - case 0x14: - { - msg = new RequestAskJoinPartyRoom(); - break; - } - case 0x15: - { - msg = new AnswerJoinPartyRoom(); - break; - } - case 0x16: - { - msg = new RequestListPartyMatchingWaitingRoom(); - break; - } - case 0x17: - { - msg = new RequestExitPartyMatchingWaitingRoom(); - break; - } - case 0x18: - { - msg = new RequestGetBossRecord(); - break; - } - case 0x19: - { - msg = new RequestPledgeSetAcademyMaster(); - break; - } - case 0x1a: - { - msg = new RequestPledgePowerGradeList(); - break; - } - case 0x1b: - { - msg = new RequestPledgeMemberPowerInfo(); - break; - } - case 0x1c: - { - msg = new RequestPledgeSetMemberPowerGrade(); - break; - } - case 0x1d: - { - msg = new RequestPledgeMemberInfo(); - break; - } - case 0x1e: - { - msg = new RequestPledgeWarList(); - break; - } - case 0x1f: - { - msg = new RequestExFishRanking(); - break; - } - case 0x20: - { - msg = new RequestPCCafeCouponUse(); - break; - } - // couldnt find it 0x21 :S - case 0x22: - { - msg = new RequestCursedWeaponList(); - break; - } - case 0x23: - { - msg = new RequestCursedWeaponLocation(); - break; - } - case 0x24: - { - msg = new RequestPledgeReorganizeMember(); - break; - } - // couldnt find it 0x25 :S - case 0x26: - { - msg = new RequestExMPCCShowPartyMembersInfo(); - break; - } - case 0x27: - { - msg = new RequestDuelStart(); - break; - } - case 0x28: - { - msg = new RequestDuelAnswerStart(); - break; - } - case 0x29: - { - msg = new RequestConfirmTargetItem(); - break; - } - case 0x2a: - { - msg = new RequestConfirmRefinerItem(); - break; - } - case 0x2b: - { - msg = new RequestConfirmGemStone(); - break; - } - case 0x2c: - { - msg = new RequestRefine(); - break; - } - case 0x2d: - { - msg = new RequestConfirmCancelItem(); - break; - } - case 0x2e: - { - msg = new RequestRefineCancel(); - break; - } - case 0x2f: - { - msg = new RequestExMagicSkillUseGround(); - break; - } - case 0x30: - { - msg = new RequestDuelSurrender(); - break; - } - default: - { - printDebugDoubleOpcode(opcode, opcode2, buf, state, client); - break; - } - } - break; - } - default: - { - printDebugDoubleOpcode(opcode, 0, buf, state, client); - break; - } - } - break; - } - } - - return msg; - } - - private void printDebug(int opcode, ByteBuffer buf, ConnectionState state, GameClient client) - { - if (!Config.PACKET_HANDLER_DEBUG) - { - return; - } - - LOGGER.warning("Unknown Packet: " + Integer.toHexString(opcode) + " on State: " + state.name() + " Client: " + client); - - final int size = buf.remaining(); - final byte[] array = new byte[size]; - buf.get(array); - LOGGER.warning(Util.printData(array, size)); - } - - private void printDebugDoubleOpcode(int opcode, int id2, ByteBuffer buf, ConnectionState state, GameClient client) - { - if (!Config.PACKET_HANDLER_DEBUG) - { - return; - } - - LOGGER.warning("Unknown Packet: " + Integer.toHexString(opcode) + ":" + Integer.toHexString(id2) + " on State: " + state.name() + " Client: " + client); - - final int size = buf.remaining(); - final byte[] array = new byte[size]; - buf.get(array); - LOGGER.warning(Util.printData(array, size)); - } - - @Override - public GameClient create(MMOConnection con) - { - return new GameClient(con); - } - - @Override - public void execute(ReceivablePacket rp) - { - rp.getClient().execute(rp); - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/IncomingPackets.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/IncomingPackets.java new file mode 100644 index 0000000000..c0c84c4006 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/IncomingPackets.java @@ -0,0 +1,240 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Supplier; + +import org.l2jmobius.commons.network.IConnectionState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IIncomingPackets; +import org.l2jmobius.gameserver.network.clientpackets.*; + +/** + * @author Mobius + */ +public enum IncomingPackets implements IIncomingPackets +{ + PROTOCOL_VERSION(0x00, ProtocolVersion::new, ConnectionState.CONNECTED), + AUTH_LOGIN(0x08, AuthLogin::new, ConnectionState.CONNECTED), + LOGOUT(0x09, Logout::new, ConnectionState.AUTHENTICATED, ConnectionState.IN_GAME), + CHARACTER_CREATE(0x0B, CharacterCreate::new, ConnectionState.AUTHENTICATED), + CHARACTER_DELETE(0x0C, CharacterDelete::new, ConnectionState.AUTHENTICATED), + CHARACTER_SELECT(0x0D, CharacterSelected::new, ConnectionState.AUTHENTICATED), + NEW_CHARACTER(0x0E, NewCharacter::new, ConnectionState.AUTHENTICATED), + CHARACTER_RESTORE(0x62, CharacterRestore::new, ConnectionState.AUTHENTICATED), + REQUEST_PLEDGE_CREST(0x68, RequestPledgeCrest::new, ConnectionState.AUTHENTICATED, ConnectionState.IN_GAME), + ENTER_WORLD(0x03, EnterWorld::new, ConnectionState.ENTERING), + MOVE_BACKWARD_TO_LOCATION(0x01, MoveBackwardToLocation::new, ConnectionState.IN_GAME), + ACTION(0x04, Action::new, ConnectionState.IN_GAME), + ATTACK_REQUEST(0x0A, AttackRequest::new, ConnectionState.IN_GAME), + REQUEST_ITEM_LIST(0x0F, RequestItemList::new, ConnectionState.IN_GAME), + REQUEST_UN_EQUIP_ITEM(0x11, RequestUnEquipItem::new, ConnectionState.IN_GAME), + REQUEST_DROP_ITEM(0x12, RequestDropItem::new, ConnectionState.IN_GAME), + USE_ITEM(0x14, UseItem::new, ConnectionState.IN_GAME), + TRADE_REQUEST(0x15, TradeRequest::new, ConnectionState.IN_GAME), + ADD_TRADE_ITEM(0x16, AddTradeItem::new, ConnectionState.IN_GAME), + TRADE_DONE(0x17, TradeDone::new, ConnectionState.IN_GAME), + REQUEST_SOCIAL_ACTION(0x1B, RequestSocialAction::new, ConnectionState.IN_GAME), + CHANGE_MOVE_TYPE2(0x1C, ChangeMoveType2::new, ConnectionState.IN_GAME), + CHANGE_WAIT_TYPE2(0x1D, ChangeWaitType2::new, ConnectionState.IN_GAME), + REQUEST_SELL_ITEM(0x1E, RequestSellItem::new, ConnectionState.IN_GAME), + REQUEST_BUY_ITEM(0x1F, RequestBuyItem::new, ConnectionState.IN_GAME), + REQUEST_LINK_HTML(0x20, RequestLinkHtml::new, ConnectionState.IN_GAME), + REQUEST_BYPASS_TO_SERVER(0x21, RequestBypassToServer::new, ConnectionState.IN_GAME), + REQUEST_B_B_SWRITE(0x22, RequestBBSwrite::new, ConnectionState.IN_GAME), + REQUEST_JOIN_PLEDGE(0x24, RequestJoinPledge::new, ConnectionState.IN_GAME), + REQUEST_ANSWER_JOIN_PLEDGE(0x25, RequestAnswerJoinPledge::new, ConnectionState.IN_GAME), + REQUEST_WITHDRAWAL_PLEDGE(0x26, RequestWithdrawalPledge::new, ConnectionState.IN_GAME), + REQUEST_OUST_PLEDGE_MEMBER(0x27, RequestOustPledgeMember::new, ConnectionState.IN_GAME), + REQUEST_JOIN_PARTY(0x29, RequestJoinParty::new, ConnectionState.IN_GAME), + REQUEST_ANSWER_JOIN_PARTY(0x2A, RequestAnswerJoinParty::new, ConnectionState.IN_GAME), + REQUEST_WITH_DRAWAL_PARTY(0x2B, RequestWithDrawalParty::new, ConnectionState.IN_GAME), + REQUEST_OUST_PARTY_MEMBER(0x2C, RequestOustPartyMember::new, ConnectionState.IN_GAME), + REQUEST_MAGIC_SKILL_USE(0x2F, RequestMagicSkillUse::new, ConnectionState.IN_GAME), + APPEARING(0x30, Appearing::new, ConnectionState.IN_GAME), + SEND_WARE_HOUSE_DEPOSIT_LIST(0x31, SendWareHouseDepositList::new, ConnectionState.IN_GAME), + SEND_WARE_HOUSE_WITH_DRAW_LIST(0x32, SendWareHouseWithDrawList::new, ConnectionState.IN_GAME), + REQUEST_SHORT_CUT_REG(0x33, RequestShortCutReg::new, ConnectionState.IN_GAME), + REQUEST_SHORT_CUT_DEL(0x35, RequestShortCutDel::new, ConnectionState.IN_GAME), + CANNOT_MOVE_ANYMORE(0x36, CannotMoveAnymore::new, ConnectionState.IN_GAME), + REQUEST_TARGET_CANCELD(0x37, RequestTargetCanceld::new, ConnectionState.IN_GAME), + SAY2(0x38, Say2::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_MEMBER_LIST(0x3C, RequestPledgeMemberList::new, ConnectionState.IN_GAME), + REQUEST_SKILL_LIST(0x3F, RequestSkillList::new, ConnectionState.IN_GAME), + MOVE_WITH_DELTA(0x41, MoveWithDelta::new, ConnectionState.IN_GAME), + REQUEST_GET_ON_VEHICLE(0x42, RequestGetOnVehicle::new, ConnectionState.IN_GAME), + REQUEST_GET_OFF_VEHICLE(0x43, RequestGetOffVehicle::new, ConnectionState.IN_GAME), + ANSWER_TRADE_REQUEST(0x44, AnswerTradeRequest::new, ConnectionState.IN_GAME), + REQUEST_ACTION_USE(0x45, RequestActionUse::new, ConnectionState.IN_GAME), + REQUEST_RESTART(0x46, RequestRestart::new, ConnectionState.IN_GAME), + REQUEST_SIEGE_INFO(0x47, RequestSiegeInfo::new, ConnectionState.IN_GAME), + VALIDATE_POSITION(0x48, ValidatePosition::new, ConnectionState.IN_GAME), + START_ROTATING(0x4A, StartRotating::new, ConnectionState.IN_GAME), + FINISH_ROTATING(0x4B, FinishRotating::new, ConnectionState.IN_GAME), + REQUEST_START_PLEDGE_WAR(0x4D, RequestStartPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_REPLY_START_PLEDGE_WAR(0x4E, RequestReplyStartPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_STOP_PLEDGE_WAR(0x4F, RequestStopPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_REPLY_STOP_PLEDGE_WAR(0x50, RequestReplyStopPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_SURRENDER_PLEDGE_WAR(0x51, RequestSurrenderPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_REPLY_SURRENDER_PLEDGE_WAR(0x52, RequestReplySurrenderPledgeWar::new, ConnectionState.IN_GAME), + REQUEST_SET_PLEDGE_CREST(0x53, RequestSetPledgeCrest::new, ConnectionState.IN_GAME), + REQUEST_GIVE_NICK_NAME(0x55, RequestGiveNickName::new, ConnectionState.IN_GAME), + REQUEST_SHOW_BOARD(0x57, RequestShowBoard::new, ConnectionState.IN_GAME), + REQUEST_ENCHANT_ITEM(0x58, RequestEnchantItem::new, ConnectionState.IN_GAME), + REQUEST_DESTROY_ITEM(0x59, RequestDestroyItem::new, ConnectionState.IN_GAME), + SEND_BYPASS_BUILD_CMD(0x5B, SendBypassBuildCmd::new, ConnectionState.IN_GAME), + REQUEST_MOVE_TO_LOCATION_IN_VEHICLE(0x5C, RequestMoveToLocationInVehicle::new, ConnectionState.IN_GAME), + CANNOT_MOVE_ANYMORE_IN_VEHICLE(0x5D, CannotMoveAnymoreInVehicle::new, ConnectionState.IN_GAME), + REQUEST_FRIEND_INVITE(0x5E, RequestFriendInvite::new, ConnectionState.IN_GAME), + REQUEST_ANSWER_FRIEND_INVITE(0x5F, RequestAnswerFriendInvite::new, ConnectionState.IN_GAME), + REQUEST_FRIEND_LIST(0x60, RequestFriendList::new, ConnectionState.IN_GAME), + REQUEST_FRIEND_DEL(0x61, RequestFriendDel::new, ConnectionState.IN_GAME), + REQUEST_QUEST_LIST(0x63, RequestQuestList::new, ConnectionState.IN_GAME), + REQUEST_QUEST_ABORT(0x64, RequestQuestAbort::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_INFO(0x66, RequestPledgeInfo::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_EXTENDED_INFO(0x67, RequestPledgeExtendedInfo::new, ConnectionState.IN_GAME), + REQUEST_SURRENDER_PERSONALLY(0x69, RequestSurrenderPersonally::new, ConnectionState.IN_GAME), + REQUEST_AQUIRE_SKILL_INFO(0x6B, RequestAquireSkillInfo::new, ConnectionState.IN_GAME), + REQUEST_AQUIRE_SKILL(0x6C, RequestAquireSkill::new, ConnectionState.IN_GAME), + REQUEST_RESTART_POINT(0x6D, RequestRestartPoint::new, ConnectionState.IN_GAME), + REQUEST_G_M_COMMAND(0x6E, RequestGMCommand::new, ConnectionState.IN_GAME), + REQUEST_PARTY_MATCH_CONFIG(0x6F, RequestPartyMatchConfig::new, ConnectionState.IN_GAME), + REQUEST_PARTY_MATCH_LIST(0x70, RequestPartyMatchList::new, ConnectionState.IN_GAME), + REQUEST_PARTY_MATCH_DETAIL(0x71, RequestPartyMatchDetail::new, ConnectionState.IN_GAME), + REQUEST_CRYSTALLIZE_ITEM(0x72, RequestCrystallizeItem::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_MANAGE_SELL(0x73, RequestPrivateStoreManageSell::new, ConnectionState.IN_GAME), + SET_PRIVATE_STORE_LIST_SELL(0x74, SetPrivateStoreListSell::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_QUIT_SELL(0x76, RequestPrivateStoreQuitSell::new, ConnectionState.IN_GAME), + SET_PRIVATE_STORE_MSG_SELL(0x77, SetPrivateStoreMsgSell::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_BUY(0x79, RequestPrivateStoreBuy::new, ConnectionState.IN_GAME), + REQUEST_TUTORIAL_LINK_HTML(0x7B, RequestTutorialLinkHtml::new, ConnectionState.IN_GAME), + REQUEST_TUTORIAL_PASS_CMD_TO_SERVER(0x7C, RequestTutorialPassCmdToServer::new, ConnectionState.IN_GAME), + REQUEST_TUTORIAL_QUESTION_MARK(0x7D, RequestTutorialQuestionMark::new, ConnectionState.IN_GAME), + REQUEST_TUTORIAL_CLIENT_EVENT(0x7E, RequestTutorialClientEvent::new, ConnectionState.IN_GAME), + REQUEST_PETITION(0x7F, RequestPetition::new, ConnectionState.IN_GAME), + REQUEST_PETITION_CANCEL(0x80, RequestPetitionCancel::new, ConnectionState.IN_GAME), + REQUEST_GM_LIST(0x81, RequestGmList::new, ConnectionState.IN_GAME), + REQUEST_JOIN_ALLY(0x82, RequestJoinAlly::new, ConnectionState.IN_GAME), + REQUEST_ANSWER_JOIN_ALLY(0x83, RequestAnswerJoinAlly::new, ConnectionState.IN_GAME), + ALLY_LEAVE(0x84, AllyLeave::new, ConnectionState.IN_GAME), + ALLY_DISMISS(0x85, AllyDismiss::new, ConnectionState.IN_GAME), + REQUEST_DISMISS_ALLY(0x86, RequestDismissAlly::new, ConnectionState.IN_GAME), + REQUEST_SET_ALLY_CREST(0x87, RequestSetAllyCrest::new, ConnectionState.IN_GAME), + REQUEST_ALLY_CREST(0x88, RequestAllyCrest::new, ConnectionState.IN_GAME), + REQUEST_CHANGE_PET_NAME(0x89, RequestChangePetName::new, ConnectionState.IN_GAME), + REQUEST_PET_USE_ITEM(0x8A, RequestPetUseItem::new, ConnectionState.IN_GAME), + REQUEST_GIVE_ITEM_TO_PET(0x8B, RequestGiveItemToPet::new, ConnectionState.IN_GAME), + REQUEST_GET_ITEM_FROM_PET(0x8C, RequestGetItemFromPet::new, ConnectionState.IN_GAME), + REQUEST_ALLY_INFO(0x8E, RequestAllyInfo::new, ConnectionState.IN_GAME), + REQUEST_PET_GET_ITEM(0x8F, RequestPetGetItem::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_MANAGE_BUY(0x90, RequestPrivateStoreManageBuy::new, ConnectionState.IN_GAME), + SET_PRIVATE_STORE_LIST_BUY(0x91, SetPrivateStoreListBuy::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_QUIT_BUY(0x93, RequestPrivateStoreQuitBuy::new, ConnectionState.IN_GAME), + SET_PRIVATE_STORE_MSG_BUY(0x94, SetPrivateStoreMsgBuy::new, ConnectionState.IN_GAME), + REQUEST_PRIVATE_STORE_SELL(0x96, RequestPrivateStoreSell::new, ConnectionState.IN_GAME), + REQUEST_SKILL_COOL_TIME(0x9D, RequestSkillCoolTime::new, ConnectionState.IN_GAME), + REQUEST_PACKAGE_SENDABLE_ITEM_LIST(0x9E, RequestPackageSendableItemList::new, ConnectionState.IN_GAME), + REQUEST_PACKAGE_SEND(0x9F, RequestPackageSend::new, ConnectionState.IN_GAME), + REQUEST_BLOCK(0xA0, RequestBlock::new, ConnectionState.IN_GAME), + REQUEST_SIEGE_ATTACKER_LIST(0xA2, RequestSiegeAttackerList::new, ConnectionState.IN_GAME), + REQUEST_SIEGE_DEFENDER_LIST(0xA3, RequestSiegeDefenderList::new, ConnectionState.IN_GAME), + REQUEST_JOIN_SIEGE(0xA4, RequestJoinSiege::new, ConnectionState.IN_GAME), + REQUEST_CONFIRM_SIEGE_WAITING_LIST(0xA5, RequestConfirmSiegeWaitingList::new, ConnectionState.IN_GAME), + MULTI_SELL_CHOOSE(0xA7, MultiSellChoose::new, ConnectionState.IN_GAME), + REQUEST_USER_COMMAND(0xAA, RequestUserCommand::new, ConnectionState.IN_GAME), + SNOOP_QUIT(0xAB, SnoopQuit::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_BOOK_OPEN(0xAC, RequestRecipeBookOpen::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_BOOK_DESTROY(0xAD, RequestRecipeBookDestroy::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_ITEM_MAKE_INFO(0xAE, RequestRecipeItemMakeInfo::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_ITEM_MAKE_SELF(0xAF, RequestRecipeItemMakeSelf::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MESSAGE_SET(0xB1, RequestRecipeShopMessageSet::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_LIST_SET(0xB2, RequestRecipeShopListSet::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MANAGE_QUIT(0xB3, RequestRecipeShopManageQuit::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MAKE_INFO(0xB5, RequestRecipeShopMakeInfo::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MAKE_ITEM(0xB6, RequestRecipeShopMakeItem::new, ConnectionState.IN_GAME), + REQUEST_RECIPE_SHOP_MANAGE_PREV(0xB7, RequestRecipeShopManagePrev::new, ConnectionState.IN_GAME), + OBSERVER_RETURN(0xB8, ObserverReturn::new, ConnectionState.IN_GAME), + REQUEST_EVALUATE(0xB9, RequestEvaluate::new, ConnectionState.IN_GAME), + REQUEST_HENNA_LIST(0xBA, RequestHennaList::new, ConnectionState.IN_GAME), + REQUEST_HENNA_ITEM_INFO(0xBB, RequestHennaItemInfo::new, ConnectionState.IN_GAME), + REQUEST_HENNA_EQUIP(0xBC, RequestHennaEquip::new, ConnectionState.IN_GAME), + REQUEST_HENNA_REMOVE_LIST(0xBD, RequestHennaRemoveList::new, ConnectionState.IN_GAME), + REQUEST_HENNA_ITEM_REMOVE_INFO(0xBE, RequestHennaItemRemoveInfo::new, ConnectionState.IN_GAME), + REQUEST_HENNA_REMOVE(0xBF, RequestHennaRemove::new, ConnectionState.IN_GAME), + REQUEST_PLEDGE_POWER(0xC0, RequestPledgePower::new, ConnectionState.IN_GAME), + REQUEST_MAKE_MACRO(0xC1, RequestMakeMacro::new, ConnectionState.IN_GAME), + REQUEST_DELETE_MACRO(0xC2, RequestDeleteMacro::new, ConnectionState.IN_GAME), + REQUEST_BUY_PROCURE(0xC3, RequestBuyProcure::new, ConnectionState.IN_GAME), + REQUEST_BUY_SEED(0xC4, RequestBuySeed::new, ConnectionState.IN_GAME), + DLG_ANSWER(0xC5, DlgAnswer::new, ConnectionState.IN_GAME), + REQUEST_WEAR_ITEM(0xC6, RequestWearItem::new, ConnectionState.IN_GAME), + REQUEST_S_S_Q_STATUS(0xC7, RequestSSQStatus::new, ConnectionState.IN_GAME), + GAME_GUARD_REPLY(0xCA, GameGuardReply::new, ConnectionState.IN_GAME), + REQUEST_SEND_FRIEND_MSG(0xCC, RequestSendFriendMsg::new, ConnectionState.IN_GAME), + REQUEST_SHOW_MINI_MAP(0xCD, RequestShowMiniMap::new, ConnectionState.IN_GAME), + REQUEST_RECORD_INFO(0xCF, RequestRecordInfo::new, ConnectionState.IN_GAME), + EX_PACKET(0xD0, ExPacket::new, ConnectionState.values()); // This packet has its own connection state checking so we allow all of them + + public static final IncomingPackets[] PACKET_ARRAY; + static + { + final short maxPacketId = (short) Arrays.stream(values()).mapToInt(IIncomingPackets::getPacketId).max().orElse(0); + PACKET_ARRAY = new IncomingPackets[maxPacketId + 1]; + for (IncomingPackets incomingPacket : values()) + { + PACKET_ARRAY[incomingPacket.getPacketId()] = incomingPacket; + } + } + + private short _packetId; + private Supplier> _incomingPacketFactory; + private Set _connectionStates; + + IncomingPackets(int packetId, Supplier> incomingPacketFactory, IConnectionState... connectionStates) + { + // packetId is an unsigned byte + if (packetId > 0xFF) + { + throw new IllegalArgumentException("packetId must not be bigger than 0xFF"); + } + + _packetId = (short) packetId; + _incomingPacketFactory = incomingPacketFactory != null ? incomingPacketFactory : () -> null; + _connectionStates = new HashSet<>(Arrays.asList(connectionStates)); + } + + @Override + public int getPacketId() + { + return _packetId; + } + + @Override + public IIncomingPacket newIncomingPacket() + { + return _incomingPacketFactory.get(); + } + + @Override + public Set getConnectionStates() + { + return _connectionStates; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/OutgoingPackets.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/OutgoingPackets.java new file mode 100644 index 0000000000..2bb8aef9cd --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/OutgoingPackets.java @@ -0,0 +1,331 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network; + +import org.l2jmobius.commons.network.PacketWriter; + +/** + * @author Mobius + */ +public enum OutgoingPackets +{ + // Packets + KEY_PACKET(0x00), + CHAR_MOVE_TO_LOCATION(0x01), + CHAR_INFO(0x03), + USER_INFO(0x04), + ATTACK(0x05), + DIE(0x06), + REVIVE(0x07), + SPAWN_ITEM(0x0B), + DROP_ITEM(0x0C), + GET_ITEM(0x0D), + STATUS_UPDATE(0x0E), + NPC_HTML_MESSAGE(0x0F), + SELL_LIST(0x10), + BUY_LIST(0x11), + DELETE_OBJECT(0x12), + CHAR_SELECT_INFO(0x13), + AUTH_LOGIN_FAIL(0x14), + CHAR_SELECTED(0x15), + NPC_INFO(0x16), + CHAR_TEMPLATES(0x17), + CHAR_CREATE_OK(0x19), + CHAR_CREATE_FAIL(0x1A), + ITEM_LIST(0x1B), + SUN_RISE(0x1C), + SUN_SET(0x1D), + TRADE_START(0x1E), + TRADE_OWN_ADD(0x20), + TRADE_OTHER_ADD(0x21), + SEND_TRADE_DONE(0x22), + CHAR_DELETE_OK(0x23), + CHAR_DELETE_FAIL(0x24), + ACTION_FAILED(0x25), + SERVER_CLOSE(0x26), + INVENTORY_UPDATE(0x27), + TELEPORT_TO_LOCATION(0x28), + TARGET_SELECTED(0x29), + TARGET_UNSELECTED(0x2A), + AUTO_ATTACK_START(0x2B), + AUTO_ATTACK_STOP(0x2C), + SOCIAL_ACTION(0x2D), + CHANGE_MOVE_TYPE(0x2E), + CHANGE_WAIT_TYPE(0x2F), + MANAGE_PLEDGE_POWER(0x30), + ASK_JOIN_PLEDGE(0x32), + JOIN_PLEDGE(0x33), + ASK_JOIN_PARTY(0x39), + JOIN_PARTY(0x3A), + WARE_HOUSE_DEPOSIT_LIST(0x41), + WARE_HOUSE_WITHDRAWAL_LIST(0x42), + SHORT_CUT_REGISTER(0x44), + SHORT_CUT_INIT(0x45), + STOP_MOVE(0x47), + MAGIC_SKILL_USE(0x48), + MAGIC_SKILL_CANCELD(0x49), + CREATURE_SAY(0x4A), + EQUIP_UPDATE(0x4B), + DOOR_INFO(0x4C), + DOOR_STATUS_UPDATE(0x4D), + PARTY_SMALL_WINDOW_ALL(0x4E), + PARTY_SMALL_WINDOW_ADD(0x4F), + PARTY_SMALL_WINDOW_DELETE_ALL(0x50), + PARTY_SMALL_WINDOW_DELETE(0x51), + PARTY_SMALL_WINDOW_UPDATE(0x52), + PLEDGE_SHOW_MEMBER_LIST_ALL(0x53), + PLEDGE_SHOW_MEMBER_LIST_UPDATE(0x54), + PLEDGE_SHOW_MEMBER_LIST_ADD(0x55), + PLEDGE_SHOW_MEMBER_LIST_DELETE(0x56), + SKILL_LIST(0x58), + VEHICLE_INFO(0x59), + VEHICLE_DEPARTURE(0x5A), + ON_VEHICLE_CHECK_LOCATION(0x5B), + GET_ON_VEHICLE(0x5C), + GET_OFF_VEHICLE(0x5D), + SEND_TRADE_REQUEST(0x5E), + RESTART_RESPONSE(0x5F), + MOVE_TO_PAWN(0x60), + VALIDATE_LOCATION(0x61), + BEGIN_ROTATION(0x62), + STOP_ROTATION(0x63), + SYSTEM_MESSAGE(0x64), + START_PLEDGE_WAR(0x65), + STOP_PLEDGE_WAR(0x67), + SURRENDER_PLEDGE_WAR(0x69), + PLEDGE_CREST(0x6C), + SETUP_GAUGE(0x6D), + SHOW_BOARD(0x6E), + CHOOSE_INVENTORY_ITEM(0x6F), + MOVE_TO_LOCATION_IN_VEHICLE(0x71), + STOP_MOVE_IN_VEHICLE(0x72), + VALIDATE_LOCATION_IN_VEHICLE(0x73), + TRADE_UPDATE(0x74), + TRADE_PRESS_OWN_OK(0x75), + MAGIC_SKILL_LAUNCHED(0x76), + TRADE_PRESS_OTHER_OK(0x7C), + ASK_JOIN_FRIEND(0x7D), + LEAVE_WORLD(0x7E), + MAGIC_EFFECT_ICONS(0x7F), + QUEST_LIST(0x80), + ENCHANT_RESULT(0x81), + PLEDGE_SHOW_MEMBER_LIST_DELETE_ALL(0x82), + PLEDGE_INFO(0x83), + RIDE(0x86), + PLEDGE_SHOW_INFO_UPDATE(0x88), + AQUIRE_SKILL_LIST(0x8A), + AQUIRE_SKILL_INFO(0x8B), + GM_VIEW_CHARACTER_INFO(0x8F), + GM_VIEW_PLEDGE_INFO(0x90), + GM_VIEW_SKILL_INFO(0x91), + GM_VIEW_QUEST_LIST(0x93), + GM_VIEW_ITEM_LIST(0x94), + GM_VIEW_WAREHOUSE_WITHDRAW_LIST(0x95), + PARTY_MATCH_LIST(0x96), + PARTY_MATCH_DETAIL(0x97), + PLAY_SOUND(0x98), + STATIC_OBJECT(0x99), + PRIVATE_STORE_MANAGE_LIST_SELL(0x9A), + PRIVATE_STORE_LIST_SELL(0x9B), + PRIVATE_STORE_MSG_SELL(0x9C), + SHOW_MINI_MAP(0x9D), + TUTORIAL_SHOW_HTML(0xA0), + TUTORIAL_SHOW_QUESTION_MARK(0xA1), + TUTORIAL_ENABLE_CLIENT_EVENT(0xA2), + TUTORIAL_CLOSE_HTML(0xA3), + MY_TARGET_SELECTED(0xA6), + PARTY_MEMBER_POSITION(0xA7), + ASK_JOIN_ALLY(0xA8), + ALLY_CREST(0xAE), + PET_STATUS_SHOW(0xB0), + PET_INFO(0xB1), + PET_ITEM_LIST(0xB2), + PET_INVENTORY_UPDATE(0xB3), + PET_STATUS_UPDATE(0xB5), + PET_DELETE(0xB6), + PRIVATE_STORE_MANAGE_LIST_BUY(0xB7), + PRIVATE_STORE_LIST_BUY(0xB8), + PRIVATE_STORE_MSG_BUY(0xB9), + SKILL_COOL_TIME(0xC1), + PACKAGE_TO_LIST(0xC2), + PACKAGE_SENDABLE_LIST(0xC3), + EARTHQUAKE(0xC4), + SPECIAL_CAMERA(0xC7), + NORMAL_CAMERA(0xC8), + SIEGE_INFO(0xC9), + SIEGE_ATTACKER_LIST(0xCA), + SIEGE_DEFENDER_LIST(0xCB), + TITLE_UPDATE(0xCC), + PLEDGE_STATUS_CHANGED(0xCD), + RELATION_CHANGED(0xCE), + MULTI_SELL_LIST(0xD0), + SET_SUMMON_REMAIN_TIME(0xD1), + DICE(0xD4), + SNOOP(0xD5), + RECIPE_BOOK_ITEM_LIST(0xD6), + RECIPE_ITEM_MAKE_INFO(0xD7), + RECIPE_SHOP_MANAGE_LIST(0xD8), + RECIPE_SHOP_SELL_LIST(0xD9), + RECIPE_SHOP_ITEM_INFO(0xDA), + RECIPE_SHOP_MSG(0xDB), + SHOW_CALCULATOR(0xDC), + MON_RACE_INFO(0xDD), + SHOW_TOWN_MAP(0xDE), + OBSERVATION_MODE(0xDF), + OBSERVATION_RETURN(0xE0), + CHAIR_SIT(0xE1), + HENNA_EQUIP_LIST(0xE2), + HENNA_ITEM_INFO(0xE3), + HENNA_INFO(0xE4), + HENNA_REMOVE_LIST(0xE5), + HENNA_ITEM_REMOVE_INFO(0xE6), + SEND_MACRO_LIST(0xE7), + BUY_LIST_SEED(0xE8), + SELL_LIST_PROCURE(0xE9), + GM_VIEW_HENNA_INFO(0xEA), + RADAR_CONTROL(0xEB), + CLIENT_SET_TIME(0xEC), + CONFIRM_DLG(0xED), + PARTY_SPELLED(0xEE), + WEAR_LIST(0xEF), + CAMERA_MODE(0xF1), + SHOW_XMAS_SEAL(0xF2), + ETC_STATUS_UPDATE(0xF3), + SHORT_BUFF_STATUS_UPDATE(0xF4), + SSQ_STATUS(0xF5), + CLAN_HALL_DECORATION(0xF7), + SIGNS_SKY(0xF8), + GAME_GUARD_QUERY(0xF9), + FRIEND_LIST(0xFA), + FRIEND_RECV_MSG(0xFD), + // ExPackets + EX_COLOSSEUM_FENCE_INFO(0xFE, 0x09), + EX_PARTY_ROOM_MEMBER(0xFE, 0x0E), + EX_CLOSE_PARTY_ROOM(0xFE, 0x0F), + EX_MANAGE_PARTY_ROOM_MEMBER(0xFE, 0x10), + EX_AUTO_SOUL_SHOT(0xFE, 0x12), + EX_FISHING_START(0xFE, 0x13), + EX_FISHING_END(0xFE, 0x14), + EX_FISHING_START_COMBAT(0xFE, 0x15), + EX_FISHING_HP_REGEN(0xFE, 0x16), + EX_ENCHANT_SKILL_LIST(0xFE, 0x17), + EX_ENCHANT_SKILL_INFO(0xFE, 0x18), + EX_QUEST_INFO(0xFE, 0x19), + EX_SHOW_QUEST_MARK(0xFE, 0x1A), + EX_SEND_MANOR_LIST(0xFE, 0x1B), + EX_SHOW_SEED_INFO(0xFE, 0x1C), + EX_SHOW_CROP_INFO(0xFE, 0x1D), + EX_SHOW_MANOR_DEFAULT_INFO(0xFE, 0x1E), + EX_SHOW_SEED_SETTING(0xFE, 0x1F), + EX_SHOW_CROP_SETTING(0xFE, 0x20), + EX_SHOW_SELL_CROP_LIST(0xFE, 0x21), + EX_SHOW_PROCURE_CROP_DETAIL(0xFE, 0x22), + EX_HERO_LIST(0xFE, 0x23), + EX_SERVER_PRIMITIVE(0xFE, 0x24), + EX_OPEN_MPCC(0xFE, 0x25), + EX_CLOSE_MPCC(0xFE, 0x26), + EX_ASK_JOIN_MPCC(0xFE, 0x27), + EX_PLEDGE_CREST_LARGE(0xFE, 0x28), + EX_OLYMPIAD_USER_INFO(0xFE, 0x29), + EX_OLYMPIAD_SPELLED_INFO(0xFE, 0x2A), + EX_OLYMPIAD_MODE(0xFE, 0x2B), + EX_MAIL_ARRIVED(0xFE, 0x2D), + EX_STORAGE_MAX_COUNT(0xFE, 0x2E), + EX_MULTI_PARTY_COMMAND_CHANNEL_INFO(0xFE, 0x30), + EX_PC_CAFE_POINT_INFO(0xFE, 0x31), + EX_SET_COMPASS_ZONE_CODE(0xFE, 0x32), + EX_GET_BOSS_RECORD(0xFE, 0x33), + EX_ASK_JOIN_PARTY_ROOM(0xFE, 0x34), + EX_LIST_PARTY_MATCHING_WAITING_ROOM(0xFE, 0x35), + EX_SHOW_ADVENTURER_GUIDE_BOOK(0xFE, 0x37), + EX_SHOW_SCREEN_MESSAGE(0xFE, 0x38), + PLEDGE_SKILL_LIST(0xFE, 0x39), + PLEDGE_SKILL_LIST_ADD(0xFE, 0x3A), + PLEDGE_POWER_GRADE_LIST(0xFE, 0x3B), + PLEDGE_RECEIVE_POWER_INFO(0xFE, 0x3C), + PLEDGE_RECEIVE_MEMBER_INFO(0xFE, 0x3D), + PLEDGE_RECEIVE_WAR_LIST(0xFE, 0x3E), + PLEDGE_RECEIVE_SUB_PLEDGE_CREATED(0xFE, 0x3F), + EX_RED_SKY(0xFE, 0x40), + SHOW_PC_CAFE_COUPON_SHOW_UI(0xFE, 0x43), + EX_CAPTURE_ORC(0xFE, 0x44), + EX_CURSED_WEAPON_LIST(0xFE, 0x45), + EX_CURSED_WEAPON_LOCATION(0xFE, 0x46), + EX_RESTART_CLIENT(0xFE, 0x47), + EX_REQUEST_HACK_SHIELD(0xFE, 0x48), + EX_USE_SHARED_GROUP_ITEM(0xFE, 0x49), + EX_MPCC_SHOW_PARTY_MEMBER_INFO(0xFE, 0x4A), + EX_DUEL_ASK_START(0xFE, 0x4B), + EX_DUEL_READY(0xFE, 0x4C), + EX_DUEL_START(0xFE, 0x4D), + EX_DUEL_END(0xFE, 0x4E), + EX_DUEL_UPDATE_USER_INFO(0xFE, 0x4F), + EX_SHOW_VARIATION_MAKE_WINDOW(0xFE, 0x50), + EX_SHOW_VARIATION_CANCEL_WINDOW(0xFE, 0x51), + EX_CONFIRM_VARIATION_ITEM(0xFE, 0x52), + EX_CONFIRM_VARIATION_REFINER(0xFE, 0x53), + EX_CONFIRM_VARIATION_GEMSTONE(0xFE, 0x54), + EX_VARIATION_RESULT(0xFE, 0x55), + EX_CONFIRM_CANCEL_ITEM(0xFE, 0x56), + EX_VARIATION_CANCEL_RESULT(0xFE, 0x57), + EX_SHOW_SLIDESHOW_KAMAEL(0xFE, 0x5B); + + private final int _id1; + private final int _id2; + + OutgoingPackets(int id1) + { + this(id1, -1); + } + + OutgoingPackets(int id1, int id2) + { + _id1 = id1; + _id2 = id2; + } + + public int getId1() + { + return _id1; + } + + public int getId2() + { + return _id2; + } + + public void writeId(PacketWriter packet) + { + packet.writeC(_id1); + if (_id2 > 0) + { + packet.writeH(_id2); + } + } + + public static OutgoingPackets getPacket(int id1, int id2) + { + for (OutgoingPackets packet : values()) + { + if ((packet.getId1() == id1) && (packet.getId2() == id2)) + { + return packet; + } + } + return null; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Action.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Action.java index d95bd554af..43a0ad4277 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Action.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Action.java @@ -18,38 +18,43 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -@SuppressWarnings("unused") -public class Action extends GameClientPacket +public class Action implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(Action.class.getName()); private int _objectId; + @SuppressWarnings("unused") private int _originX; + @SuppressWarnings("unused") private int _originY; + @SuppressWarnings("unused") private int _originZ; private int _actionId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); // Target object Identifier - _originX = readD(); - _originY = readD(); - _originZ = readD(); - _actionId = readC(); // Action identifier : 0-Simple click, 1-Shift click + _objectId = packet.readD(); // Target object Identifier + _originX = packet.readD(); + _originY = packet.readD(); + _originZ = packet.readD(); + _actionId = packet.readC(); // Action identifier : 0-Simple click, 1-Shift click + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // Get the current PlayerInstance of the player - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -76,21 +81,21 @@ public class Action extends GameClientPacket // pressing e.g. pickup many times quickly would get you here if (obj == null) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } // Players can't interact with objects in the other instances except from multiverse if ((obj.getInstanceId() != player.getInstanceId()) && (player.getInstanceId() != -1)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } // Only GMs can directly interact with invisible characters if ((obj instanceof PlayerInstance) && (((PlayerInstance) obj).getAppearance().isInvisible()) && !player.isGM()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -112,7 +117,7 @@ public class Action extends GameClientPacket } else { - obj.onActionShift(getClient()); + obj.onActionShift(client); } break; } @@ -120,14 +125,14 @@ public class Action extends GameClientPacket { // Invalid action detected (probably client cheating), LOGGER this LOGGER.warning("Character: " + player.getName() + " requested invalid action: " + _actionId); - getClient().sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); break; } } } else { - getClient().sendPacket(ActionFailed.STATIC_PACKET); // Actions prohibited when in trade + client.sendPacket(ActionFailed.STATIC_PACKET); // Actions prohibited when in trade } } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AddTradeItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AddTradeItem.java index 2050345c6e..1b294f3124 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AddTradeItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AddTradeItem.java @@ -18,16 +18,18 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.TradeOtherAdd; import org.l2jmobius.gameserver.network.serverpackets.TradeOwnAdd; import org.l2jmobius.gameserver.network.serverpackets.TradeUpdate; -public class AddTradeItem extends GameClientPacket +public class AddTradeItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(AddTradeItem.class.getName()); private int _tradeId; @@ -35,17 +37,18 @@ public class AddTradeItem extends GameClientPacket private int _count; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _tradeId = readD(); - _objectId = readD(); - _count = readD(); + _tradeId = packet.readD(); + _objectId = packet.readD(); + _count = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AllyDismiss.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AllyDismiss.java index 47b6b4e9b2..97bdaf7202 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AllyDismiss.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AllyDismiss.java @@ -17,31 +17,34 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class AllyDismiss extends GameClientPacket +public class AllyDismiss implements IClientIncomingPacket { private String _clanName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _clanName = readS(); + _clanName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_clanName == null) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AllyLeave.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AllyLeave.java index c0348ff5b6..0fc2bb8b25 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AllyLeave.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AllyLeave.java @@ -17,22 +17,25 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class AllyLeave extends GameClientPacket +public class AllyLeave implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AnswerJoinPartyRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AnswerJoinPartyRoom.java index 6465f22088..36c11f07af 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AnswerJoinPartyRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AnswerJoinPartyRoom.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExManagePartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class AnswerJoinPartyRoom extends GameClientPacket +public class AnswerJoinPartyRoom implements IClientIncomingPacket { private int _answer; // 1 or 0 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _answer = readD(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AnswerTradeRequest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AnswerTradeRequest.java index 555da4fd0e..28f401373c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AnswerTradeRequest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AnswerTradeRequest.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SendTradeDone; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class AnswerTradeRequest extends GameClientPacket +public class AnswerTradeRequest implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Appearing.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Appearing.java index d85f29498e..b3c9a0cf45 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Appearing.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Appearing.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; /** * Appearing Packet Handler */ -public class Appearing extends GameClientPacket +public class Appearing implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || !player.isOnline()) { - sendPacket(ActionFailed.STATIC_PACKET); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -45,6 +48,6 @@ public class Appearing extends GameClientPacket player.onTeleported(); } - sendPacket(new UserInfo(player)); + client.sendPacket(new UserInfo(player)); } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java index 20af9703f5..fcfc95e327 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.instancemanager.events.CTF; import org.l2jmobius.gameserver.instancemanager.events.DM; @@ -24,10 +25,11 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @SuppressWarnings("unused") -public class AttackRequest extends GameClientPacket +public class AttackRequest implements IClientIncomingPacket { private int _objectId; private int _originX; @@ -36,19 +38,20 @@ public class AttackRequest extends GameClientPacket private int _attackId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _originX = readD(); - _originY = readD(); - _originZ = readD(); - _attackId = readC(); // 0 for simple click - 1 for shift-click + _objectId = packet.readD(); + _originX = packet.readD(); + _originY = packet.readD(); + _originZ = packet.readD(); + _attackId = packet.readC(); // 0 for simple click - 1 for shift-click + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -157,7 +160,7 @@ public class AttackRequest extends GameClientPacket } else { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); } } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AuthLogin.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AuthLogin.java index 16fdfb9d7b..a22cf29a2b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AuthLogin.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AuthLogin.java @@ -16,11 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.LoginServerThread; import org.l2jmobius.gameserver.LoginServerThread.SessionKey; import org.l2jmobius.gameserver.network.GameClient; -public class AuthLogin extends GameClientPacket +public class AuthLogin implements IClientIncomingPacket { // loginName + keys must match what the loginserver used. private String _loginName; @@ -30,20 +31,20 @@ public class AuthLogin extends GameClientPacket private int _loginKey2; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _loginName = readS().toLowerCase(); - _playKey2 = readD(); - _playKey1 = readD(); - _loginKey1 = readD(); - _loginKey2 = readD(); + _loginName = packet.readS().toLowerCase(); + _playKey2 = packet.readD(); + _playKey1 = packet.readD(); + _loginKey1 = packet.readD(); + _loginKey2 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final SessionKey key = new SessionKey(_loginKey1, _loginKey2, _playKey1, _playKey2); - final GameClient client = getClient(); // avoid potential exploits if (client.getAccountName() == null) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymore.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymore.java index af5805ac19..a511755bc0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymore.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymore.java @@ -16,11 +16,13 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlEvent; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class CannotMoveAnymore extends GameClientPacket +public class CannotMoveAnymore implements IClientIncomingPacket { private int _x; private int _y; @@ -28,18 +30,19 @@ public class CannotMoveAnymore extends GameClientPacket private int _heading; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _x = readD(); - _y = readD(); - _z = readD(); - _heading = readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + _heading = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java index bab941dec7..cdec5cf4d2 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.StopMoveInVehicle; /** * @author Maktakien */ -public class CannotMoveAnymoreInVehicle extends GameClientPacket +public class CannotMoveAnymoreInVehicle implements IClientIncomingPacket { private int _x; private int _y; @@ -32,19 +34,20 @@ public class CannotMoveAnymoreInVehicle extends GameClientPacket private int _boatId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _boatId = readD(); - _x = readD(); - _y = readD(); - _z = readD(); - _heading = readD(); + _boatId = packet.readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + _heading = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ChangeMoveType2.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ChangeMoveType2.java index b2442a24f6..cc429bc741 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ChangeMoveType2.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ChangeMoveType2.java @@ -16,22 +16,25 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class ChangeMoveType2 extends GameClientPacket +public class ChangeMoveType2 implements IClientIncomingPacket { private boolean _typeRun; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _typeRun = readD() == 1; + _typeRun = packet.readD() == 1; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ChangeWaitType2.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ChangeWaitType2.java index 4b0246b893..114bffa780 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ChangeWaitType2.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ChangeWaitType2.java @@ -16,62 +16,62 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ChairSit; -public class ChangeWaitType2 extends GameClientPacket +public class ChangeWaitType2 implements IClientIncomingPacket { private boolean _typeStand; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _typeStand = readD() == 1; + _typeStand = packet.readD() == 1; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } final WorldObject target = player.getTarget(); - if (getClient() != null) + if (player.isOutOfControl()) { - if (player.isOutOfControl()) - { - player.sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - if (player.getMountType() != 0) - { - return; - } - - if ((target != null) && !player.isSitting() && (target instanceof StaticObjectInstance) && (((StaticObjectInstance) target).getType() == 1) && (CastleManager.getInstance().getCastle(target) != null) && player.isInsideRadius2D(target, StaticObjectInstance.INTERACTION_DISTANCE)) - { - final ChairSit cs = new ChairSit(player, ((StaticObjectInstance) target).getStaticObjectId()); - player.sendPacket(cs); - player.sitDown(); - player.broadcastPacket(cs); - } - - if (_typeStand) - { - player.standUp(); - } - else - { - player.sitDown(); - } + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + + if (player.getMountType() != 0) + { + return; + } + + if ((target != null) && !player.isSitting() && (target instanceof StaticObjectInstance) && (((StaticObjectInstance) target).getType() == 1) && (CastleManager.getInstance().getCastle(target) != null) && player.isInsideRadius2D(target, StaticObjectInstance.INTERACTION_DISTANCE)) + { + final ChairSit cs = new ChairSit(player, ((StaticObjectInstance) target).getStaticObjectId()); + player.sendPacket(cs); + player.sitDown(); + player.broadcastPacket(cs); + } + + if (_typeStand) + { + player.standUp(); + } + else + { + player.sitDown(); } } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java index f2404d9c2b..62c1bef8db 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterCreate.java @@ -22,6 +22,7 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.CharNameTable; @@ -46,7 +47,7 @@ import org.l2jmobius.gameserver.network.serverpackets.CharCreateOk; import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; import org.l2jmobius.gameserver.util.Util; -public class CharacterCreate extends GameClientPacket +public class CharacterCreate implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(CharacterCreate.class.getName()); @@ -72,29 +73,30 @@ public class CharacterCreate extends GameClientPacket private int _wit; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); - _race = readD(); - _sex = (byte) readD(); - _classId = readD(); - _int = readD(); - _str = readD(); - _con = readD(); - _men = readD(); - _dex = readD(); - _wit = readD(); - _hairStyle = (byte) readD(); - _hairColor = (byte) readD(); - _face = (byte) readD(); + _name = packet.readS(); + _race = packet.readD(); + _sex = (byte) packet.readD(); + _classId = packet.readD(); + _int = packet.readD(); + _str = packet.readD(); + _con = packet.readD(); + _men = packet.readD(); + _dex = packet.readD(); + _wit = packet.readD(); + _hairStyle = (byte) packet.readD(); + _hairColor = (byte) packet.readD(); + _face = (byte) packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if ((_name.length() < 3) || (_name.length() > 16) || !Util.isAlphaNumeric(_name) || !isValidName(_name)) { - sendPacket(new CharCreateFail(CharCreateFail.REASON_16_ENG_CHARS)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_16_ENG_CHARS)); return; } @@ -104,7 +106,7 @@ public class CharacterCreate extends GameClientPacket { if (_name.toLowerCase().contains(st.toLowerCase())) { - getClient().sendPacket(new CharCreateFail(CharCreateFail.REASON_INCORRECT_NAME)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_INCORRECT_NAME)); return; } } @@ -116,26 +118,26 @@ public class CharacterCreate extends GameClientPacket // Since checks for duplicate names are done using SQL, lock must be held until data is written to DB as well. synchronized (CharNameTable.getInstance()) { - if ((CharNameTable.getInstance().accountCharNumber(getClient().getAccountName()) >= Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT) && (Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT != 0)) + if ((CharNameTable.getInstance().accountCharNumber(client.getAccountName()) >= Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT) && (Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT != 0)) { - sendPacket(new CharCreateFail(CharCreateFail.REASON_TOO_MANY_CHARACTERS)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_TOO_MANY_CHARACTERS)); return; } else if (CharNameTable.getInstance().doesCharNameExist(_name)) { - sendPacket(new CharCreateFail(CharCreateFail.REASON_NAME_ALREADY_EXISTS)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_NAME_ALREADY_EXISTS)); return; } template = PlayerTemplateData.getInstance().getTemplate(_classId); if ((template == null) || (template.getClassBaseLevel() > 1)) { - sendPacket(new CharCreateFail(CharCreateFail.REASON_CREATION_FAILED)); + client.sendPacket(new CharCreateFail(CharCreateFail.REASON_CREATION_FAILED)); return; } final int objectId = IdManager.getInstance().getNextId(); - newChar = PlayerInstance.create(objectId, template, getClient().getAccountName(), _name, _hairStyle, _hairColor, _face, _sex != 0); + newChar = PlayerInstance.create(objectId, template, client.getAccountName(), _name, _hairStyle, _hairColor, _face, _sex != 0); newChar.setCurrentHp(newChar.getMaxHp()); // L2Off like // newChar.setCurrentCp(template.baseCpMax); newChar.setCurrentCp(0); // L2Off like @@ -143,8 +145,8 @@ public class CharacterCreate extends GameClientPacket // newChar.setMaxLoad(template.baseLoad); // send acknowledgement - sendPacket(new CharCreateOk()); // Success - initNewChar(getClient(), newChar); + client.sendPacket(new CharCreateOk()); // Success + initNewChar(client, newChar); } } @@ -160,7 +162,7 @@ public class CharacterCreate extends GameClientPacket } catch (PatternSyntaxException e) // case of illegal pattern { - LOGGER.warning("ERROR " + getType() + ": Character name pattern of config is wrong!"); + LOGGER.warning("Character name pattern of config is wrong!"); pattern = Pattern.compile(".*"); } @@ -297,7 +299,7 @@ public class CharacterCreate extends GameClientPacket // Send char list final CharSelectInfo cl = new CharSelectInfo(client.getAccountName(), client.getSessionId().playOkID1); - client.getConnection().sendPacket(cl); + client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java index 94b9ae114e..d1ff9bd81f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterDelete.java @@ -16,8 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import java.util.logging.Level; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharDeleteFail; import org.l2jmobius.gameserver.network.serverpackets.CharDeleteOk; import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; @@ -25,28 +28,29 @@ import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; /** * @author eX1steam */ -public class CharacterDelete extends GameClientPacket +public class CharacterDelete implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(CharacterDelete.class.getName()); private int _charSlot; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _charSlot = readD(); + _charSlot = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (!getClient().getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterDelete")) + if (!client.getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterDelete")) { return; } try { - final byte answer = getClient().markToDeleteChar(_charSlot); + final byte answer = client.markToDeleteChar(_charSlot); switch (answer) { default: @@ -56,28 +60,28 @@ public class CharacterDelete extends GameClientPacket } case 0: // Success! { - sendPacket(new CharDeleteOk()); + client.sendPacket(new CharDeleteOk()); break; } case 1: { - sendPacket(new CharDeleteFail(CharDeleteFail.REASON_YOU_MAY_NOT_DELETE_CLAN_MEMBER)); + client.sendPacket(new CharDeleteFail(CharDeleteFail.REASON_YOU_MAY_NOT_DELETE_CLAN_MEMBER)); break; } case 2: { - sendPacket(new CharDeleteFail(CharDeleteFail.REASON_CLAN_LEADERS_MAY_NOT_BE_DELETED)); + client.sendPacket(new CharDeleteFail(CharDeleteFail.REASON_CLAN_LEADERS_MAY_NOT_BE_DELETED)); break; } } } catch (Exception e) { - LOGGER.warning("ERROR " + getType() + ": " + e); + LOGGER.log(Level.SEVERE, "Error:", e); } - final CharSelectInfo cl = new CharSelectInfo(getClient().getAccountName(), getClient().getSessionId().playOkID1, 0); - sendPacket(cl); - getClient().setCharSelection(cl.getCharInfo()); + final CharSelectInfo cl = new CharSelectInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); + client.sendPacket(cl); + client.setCharSelection(cl.getCharInfo()); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java index 0c067f4886..434f4f724d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterRestore.java @@ -16,36 +16,39 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo; -public class CharacterRestore extends GameClientPacket +public class CharacterRestore implements IClientIncomingPacket { private int _charSlot; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _charSlot = readD(); + _charSlot = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (!getClient().getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterRestore")) + if (!client.getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterRestore")) { return; } try { - getClient().markRestoredChar(_charSlot); + client.markRestoredChar(_charSlot); } catch (Exception e) { } - final CharSelectInfo cl = new CharSelectInfo(getClient().getAccountName(), getClient().getSessionId().playOkID1, 0); - sendPacket(cl); - getClient().setCharSelection(cl.getCharInfo()); + final CharSelectInfo cl = new CharSelectInfo(client.getAccountName(), client.getSessionId().playOkID1, 0); + client.sendPacket(cl); + client.setCharSelection(cl.getCharInfo()); } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelected.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelected.java index 35f06b3c8c..534374452f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelected.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/CharacterSelected.java @@ -18,13 +18,15 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.ConnectionState; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.CharSelected; @SuppressWarnings("unused") -public class CharacterSelected extends GameClientPacket +public class CharacterSelected implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(CharacterSelected.class.getName()); @@ -35,41 +37,42 @@ public class CharacterSelected extends GameClientPacket private int _unk4; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _charSlot = readD(); - _unk1 = readH(); - _unk2 = readD(); - _unk3 = readD(); - _unk4 = readD(); + _charSlot = packet.readD(); + _unk1 = packet.readH(); + _unk2 = packet.readD(); + _unk3 = packet.readD(); + _unk4 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // if there is a playback.dat file in the current directory, it will be sent to the client instead of any regular packets // to make this work, the first packet in the playback.dat has to be a [S]0x21 packet // after playback is done, the client will not work correct and need to exit // playLogFile(getConnection()); // try to play LOGGER file - if (!getClient().getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterSelect")) + if (!client.getFloodProtectors().getCharacterSelect().tryPerformAction("CharacterSelect")) { return; } // we should always be abble to acquire the lock but if we cant lock then nothing should be done (ie repeated packet) - if (getClient().getPlayerLock().tryLock()) + if (client.getPlayerLock().tryLock()) { try { // should always be null but if not then this is repeated packet and nothing should be done here - if (getClient().getPlayer() == null) + if (client.getPlayer() == null) { // Load up character from disk - final PlayerInstance cha = getClient().loadCharFromDisk(_charSlot); + final PlayerInstance cha = client.loadCharFromDisk(_charSlot); if (cha == null) { - LOGGER.warning(getType() + ": Character could not be loaded (slot:" + _charSlot + ")"); - sendPacket(ActionFailed.STATIC_PACKET); + LOGGER.warning("Character could not be loaded (slot:" + _charSlot + ")"); + client.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -79,10 +82,10 @@ public class CharacterSelected extends GameClientPacket return; } - cha.setClient(getClient()); - getClient().setPlayer(cha); - getClient().setState(ConnectionState.ENTERING); - sendPacket(new CharSelected(cha, getClient().getSessionId().playOkID1)); + cha.setClient(client); + client.setPlayer(cha); + client.setConnectionState(ConnectionState.ENTERING); + client.sendPacket(new CharSelected(cha, client.getSessionId().playOkID1)); } } catch (Exception e) @@ -91,7 +94,7 @@ public class CharacterSelected extends GameClientPacket } finally { - getClient().getPlayerLock().unlock(); + client.getPlayerLock().unlock(); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java index 9c49ec6d23..e8ae42ee59 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/DlgAnswer.java @@ -17,31 +17,34 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * @author Dezmond_snz - Packet Format: cddd */ -public class DlgAnswer extends GameClientPacket +public class DlgAnswer implements IClientIncomingPacket { private int _messageId; private int _answer; private int _requesterId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _messageId = readD(); - _answer = readD(); - _requesterId = readD(); + _messageId = packet.readD(); + _answer = packet.readD(); + _requesterId = packet.readD(); + return true; } @Override - public void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index a5d43ef445..a2188b61db 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -26,6 +26,7 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.communitybbs.Manager.MailBBSManager; @@ -68,6 +69,7 @@ import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.ConnectionState; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ClientSetTime; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; @@ -98,7 +100,7 @@ import org.l2jmobius.gameserver.util.Util; /** * Enter World Packet Handler */ -public class EnterWorld extends GameClientPacket +public class EnterWorld implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(EnterWorld.class.getName()); @@ -106,23 +108,23 @@ public class EnterWorld extends GameClientPacket SimpleDateFormat df = new SimpleDateFormat("dd MM yyyy"); @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // this is just a trigger packet. it has no content + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { LOGGER.warning("EnterWorld failed! player is null..."); - getClient().closeNow(); + client.closeNow(); return; } - getClient().setState(ConnectionState.IN_GAME); + client.setConnectionState(ConnectionState.IN_GAME); // Set lock at login player.setLocked(true); @@ -132,7 +134,7 @@ public class EnterWorld extends GameClientPacket if (!player.isGM() && !player.isDonator() && Config.CHECK_NAME_ON_LOGIN && ((player.getName().length() < 3) || (player.getName().length() > 16) || !Util.isAlphaNumeric(player.getName()) || !isValidName(player.getName()))) { LOGGER.warning("Charname: " + player.getName() + " is invalid. EnterWorld failed."); - getClient().closeNow(); + client.closeNow(); return; } @@ -171,7 +173,7 @@ public class EnterWorld extends GameClientPacket html.setFile("data/html/clan_notice.htm"); html.replace("%clan_name%", player.getClan().getName()); html.replace("%notice_text%", player.getClan().getNotice().replaceAll("\r\n", "
    ").replaceAll("action", "").replace("bypass", "")); - sendPacket(html); + player.sendPacket(html); } } @@ -185,7 +187,7 @@ public class EnterWorld extends GameClientPacket // player.sendPacket(new StopRotation(player, player.getHeading(), 10000000)); if (SevenSigns.getInstance().isSealValidationPeriod()) { - sendPacket(new SignsSky()); + player.sendPacket(new SignsSky()); } // Buff and Status icons @@ -258,7 +260,7 @@ public class EnterWorld extends GameClientPacket player.sendMessage("[Server]: You have over enchanted items you will be kicked from server!"); player.sendMessage("[Server]: Respect our server rules."); // Message with screen - sendPacket(new ExShowScreenMessage(" You have an over enchanted item, you will be kicked from server! ", 6000)); + player.sendPacket(new ExShowScreenMessage(" You have an over enchanted item, you will be kicked from server! ", 6000)); // Punishment e LOGGER in audit Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " has Overenchanted item! Kicked! ", Config.DEFAULT_PUNISH); // Logger in console @@ -277,12 +279,12 @@ public class EnterWorld extends GameClientPacket player.getMacroses().sendUpdate(); // Send packets info - sendPacket(new ClientSetTime()); // SetClientTime - sendPacket(new UserInfo(player)); - sendPacket(new HennaInfo(player)); - sendPacket(new FriendList(player)); - sendPacket(new ItemList(player, false)); - sendPacket(new ShortCutInit(player)); + player.sendPacket(new ClientSetTime()); // SetClientTime + player.sendPacket(new UserInfo(player)); + player.sendPacket(new HennaInfo(player)); + player.sendPacket(new FriendList(player)); + player.sendPacket(new ItemList(player, false)); + player.sendPacket(new ShortCutInit(player)); // Reload inventory to give SA skill player.getInventory().reloadEquippedItems(); @@ -315,13 +317,13 @@ public class EnterWorld extends GameClientPacket // sendPacket(ui); if ((player.getClanId() != 0) && (player.getClan() != null)) { - sendPacket(new PledgeShowMemberListAll(player.getClan(), player)); - sendPacket(new PledgeStatusChanged(player.getClan())); + player.sendPacket(new PledgeShowMemberListAll(player.getClan(), player)); + player.sendPacket(new PledgeStatusChanged(player.getClan())); } if (player.isAlikeDead()) { - sendPacket(new Die(player)); // No broadcast needed since the player will already spawn dead to others + player.sendPacket(new Die(player)); // No broadcast needed since the player will already spawn dead to others } if (Config.ALLOW_WATER) @@ -491,13 +493,13 @@ public class EnterWorld extends GameClientPacket { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.IT_IS_NOW_MIDNIGHT_AND_THE_EFFECT_OF_S1_CAN_BE_FELT); sm.addSkillName(294); - sendPacket(sm); + player.sendPacket(sm); } else { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.IT_IS_DAWN_AND_THE_EFFECT_OF_S1_WILL_NOW_DISAPPEAR); sm.addSkillName(294); - sendPacket(sm); + player.sendPacket(sm); } } } @@ -536,7 +538,7 @@ public class EnterWorld extends GameClientPacket } catch (PatternSyntaxException e) // case of illegal pattern { - LOGGER.warning("ERROR " + getType() + ": Character name pattern of config is wrong!"); + LOGGER.warning("Character name pattern of config is wrong!"); pattern = Pattern.compile(".*"); } @@ -641,7 +643,7 @@ public class EnterWorld extends GameClientPacket final NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(Welcome_Path); html.replace("%name%", player.getName()); - sendPacket(html); + player.sendPacket(html); } } @@ -743,11 +745,11 @@ public class EnterWorld extends GameClientPacket player.updateNameTitleColor(); - sendPacket(new UserInfo(player)); - sendPacket(new HennaInfo(player)); - sendPacket(new FriendList(player)); - sendPacket(new ItemList(player, false)); - sendPacket(new ShortCutInit(player)); + player.sendPacket(new UserInfo(player)); + player.sendPacket(new HennaInfo(player)); + player.sendPacket(new FriendList(player)); + player.sendPacket(new ItemList(player, false)); + player.sendPacket(new ShortCutInit(player)); player.broadcastUserInfo(); player.sendPacket(new EtcStatusUpdate(player)); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ExPacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ExPacket.java new file mode 100644 index 0000000000..75c26ee8c9 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ExPacket.java @@ -0,0 +1,64 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.clientpackets; + +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.ExIncomingPackets; +import org.l2jmobius.gameserver.network.GameClient; + +/** + * @author Nos + */ +public class ExPacket implements IClientIncomingPacket +{ + // private static final Logger LOGGER = Logger.getLogger(ExPacket.class.getName()); + + private ExIncomingPackets _exIncomingPacket; + private IIncomingPacket _exPacket; + + @Override + public boolean read(GameClient client, PacketReader packet) + { + final int exPacketId = packet.readH() & 0xFFFF; + if ((exPacketId < 0) || (exPacketId >= ExIncomingPackets.PACKET_ARRAY.length)) + { + return false; + } + + _exIncomingPacket = ExIncomingPackets.PACKET_ARRAY[exPacketId]; + if (_exIncomingPacket == null) + { + // LOGGER.finer(getClass().getSimpleName() + ": Unknown packet: " + Integer.toHexString(exPacketId)); + return false; + } + + _exPacket = _exIncomingPacket.newIncomingPacket(); + return (_exPacket != null) && _exPacket.read(client, packet); + } + + @Override + public void run(GameClient client) throws Exception + { + if (!_exIncomingPacket.getConnectionStates().contains(client.getConnectionState())) + { + // LOGGER.finer(_exIncomingPacket + ": Connection at invalid state: " + client.getConnectionState() + " Required State: " + _exIncomingPacket.getConnectionStates()); + return; + } + _exPacket.run(client); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/FinishRotating.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/FinishRotating.java index 626110e7a0..2a938101ef 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/FinishRotating.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/FinishRotating.java @@ -17,31 +17,32 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.StopRotation; -@SuppressWarnings("unused") -public class FinishRotating extends GameClientPacket +public class FinishRotating implements IClientIncomingPacket { private int _degree; - private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _degree = readD(); - _unknown = readD(); + _degree = packet.readD(); + packet.readD(); // Unknown. + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (!Config.ENABLE_KEYBOARD_MOVEMENT) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/GameClientPacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/GameClientPacket.java deleted file mode 100644 index 66b4cfac6a..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/GameClientPacket.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets; - -import java.util.logging.Logger; - -import org.l2jmobius.commons.mmocore.ReceivablePacket; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; - -/** - * Packets received by the game server from clients - * @author KenM - */ -public abstract class GameClientPacket extends ReceivablePacket -{ - protected static final Logger LOGGER = Logger.getLogger(GameClientPacket.class.getName()); - - @Override - protected boolean read() - { - try - { - readImpl(); - return true; - } - catch (Exception e) - { - LOGGER.severe("Client: " + getClient() + " - Failed reading: " + getType() + " ; " + e.getMessage() + " " + e); - } - return false; - } - - protected abstract void readImpl(); - - @Override - public void run() - { - try - { - runImpl(); - if ((this instanceof MoveBackwardToLocation) || (this instanceof AttackRequest) || (this instanceof RequestMagicSkillUse)) - { - if (getClient().getPlayer() != null) - { - getClient().getPlayer().onActionRequest(); // Removes onSpawn Protection - } - } - } - catch (Throwable t) - { - LOGGER.severe("Client: " + getClient() + " - Failed reading: " + getType() + " ; " + t.getMessage() + " " + t); - if (this instanceof EnterWorld) - { - getClient().closeNow(); - } - } - } - - protected abstract void runImpl(); - - /** - * Sends a game server packet to the client. - * @param gsp the game server packet - */ - protected final void sendPacket(GameServerPacket gsp) - { - getClient().sendPacket(gsp); - } - - /** - * @return A String with this packet name for debuging purposes - */ - public String getType() - { - return "[C] " + getClass().getSimpleName(); - } -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/GameGuardReply.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/GameGuardReply.java index 77c91e8baa..4278481ccf 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/GameGuardReply.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/GameGuardReply.java @@ -16,25 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * @author zabbix Lets drink to code! Unknown Packet: ca 0000: 45 00 01 00 1e 37 a2 f5 00 00 00 00 00 00 00 00 E....7.......... */ -public class GameGuardReply extends GameClientPacket +public class GameGuardReply implements IClientIncomingPacket { private final int[] _reply = new int[4]; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _reply[0] = readD(); - _reply[1] = readD(); - _reply[2] = readD(); - _reply[3] = readD(); + _reply[0] = packet.readD(); + _reply[1] = packet.readD(); + _reply[2] = packet.readD(); + _reply[3] = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - getClient().setGameGuardOk(true); + client.setGameGuardOk(true); } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/DummyPacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/IClientIncomingPacket.java similarity index 65% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/DummyPacket.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/IClientIncomingPacket.java index 220410fcd5..2d588afffd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/DummyPacket.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/IClientIncomingPacket.java @@ -16,18 +16,16 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import java.util.logging.Logger; + +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.gameserver.network.GameClient; + /** - * @author zabbix Lets drink to code! + * Packets received by the game serv@Override er from clients + * @author KenM */ -public class DummyPacket extends GameClientPacket +public interface IClientIncomingPacket extends IIncomingPacket { - @Override - protected void readImpl() - { - } - - @Override - public void runImpl() - { - } -} \ No newline at end of file + Logger LOGGER = Logger.getLogger(IClientIncomingPacket.class.getName()); +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index 3efa8ae109..452d6ee796 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.model.Party; @@ -25,23 +26,25 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.sevensigns.SevenSignsFestival; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; -public class Logout extends GameClientPacket +public class Logout implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // Do not allow leaving if player is fighting - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java index 783106861f..c1a7f3b8f9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveBackwardToLocation.java @@ -19,10 +19,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.nio.BufferUnderflowException; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.DoorData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.EnchantResult; @@ -30,7 +32,7 @@ import org.l2jmobius.gameserver.network.serverpackets.StopMove; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class MoveBackwardToLocation extends GameClientPacket +public class MoveBackwardToLocation implements IClientIncomingPacket { private int _targetX; private int _targetY; @@ -41,42 +43,44 @@ public class MoveBackwardToLocation extends GameClientPacket private int _movementMode; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetX = readD(); - _targetY = readD(); - _targetZ = readD(); - _originX = readD(); - _originY = readD(); - _originZ = readD(); + _targetX = packet.readD(); + _targetY = packet.readD(); + _targetZ = packet.readD(); + _originX = packet.readD(); + _originY = packet.readD(); + _originZ = packet.readD(); try { - _movementMode = readD(); // is 0 if cursor keys are used 1 if mouse is used + _movementMode = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used } catch (BufferUnderflowException e) { // Ignore for now if (Config.L2WALKER_PROTECTION) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); player.sendPacket(SystemMessageId.A_HACKING_TOOL_HAS_BEEN_DISCOVERED_PLEASE_TRY_PLAYING_AGAIN_AFTER_CLOSING_UNNECESSARY_PROGRAMS); Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " trying to use L2Walker!", IllegalPlayerAction.PUNISH_KICK); } } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } // Move flood protection - if (!getClient().getFloodProtectors().getMoveAction().tryPerformAction("MoveBackwardToLocation")) + if (!client.getFloodProtectors().getMoveAction().tryPerformAction("MoveBackwardToLocation")) { player.sendPacket(ActionFailed.STATIC_PACKET); return; @@ -85,7 +89,7 @@ public class MoveBackwardToLocation extends GameClientPacket // Like L2OFF movements prohibited when char is sitting if (player.isSitting()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveWithDelta.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveWithDelta.java index fcc2e78085..40ecd440d4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveWithDelta.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MoveWithDelta.java @@ -16,27 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format: (c) ddd d: dx d: dy d: dz * @author -Wooden- */ -@SuppressWarnings("unused") -public class MoveWithDelta extends GameClientPacket +public class MoveWithDelta implements IClientIncomingPacket { - private int _dx; - private int _dy; - private int _dz; - @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _dx = readD(); - _dy = readD(); - _dz = readD(); + packet.readD(); // dx + packet.readD(); // dy + packet.readD(); // dz + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java index 1685965717..6e6a7da600 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/MultiSellChoose.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.xml.MultisellData; import org.l2jmobius.gameserver.model.Augmentation; @@ -34,6 +35,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.multisell.MultiSellEntry; import org.l2jmobius.gameserver.model.multisell.MultiSellIngredient; import org.l2jmobius.gameserver.model.multisell.MultiSellListContainer; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ItemList; @@ -44,7 +46,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * The Class MultiSellChoose. */ -public class MultiSellChoose extends GameClientPacket +public class MultiSellChoose implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(MultiSellChoose.class.getName()); private int _listId; @@ -54,27 +56,28 @@ public class MultiSellChoose extends GameClientPacket private int _transactionTax; // local handling of taxation @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _listId = readD(); - _entryId = readD(); - _amount = readD(); - // _enchantment = readH(); // Commented this line because it did NOT work! + _listId = packet.readD(); + _entryId = packet.readD(); + _amount = packet.readD(); + // _enchantment = packet.readH(); // Commented this line because it did NOT work! _enchantment = _entryId % 100000; _entryId = _entryId / 100000; _transactionTax = 0; // Initialize tax amount to 0... + return true; } @Override - public void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getMultiSell().tryPerformAction("multisell choose")) + if (!client.getFloodProtectors().getMultiSell().tryPerformAction("multisell choose")) { player.setMultiSellId(-1); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/NewCharacter.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/NewCharacter.java index e7999c56a8..90b46cda93 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/NewCharacter.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/NewCharacter.java @@ -16,20 +16,23 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.PlayerTemplateData; import org.l2jmobius.gameserver.enums.ClassId; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharTemplates; -public class NewCharacter extends GameClientPacket +public class NewCharacter implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final CharTemplates ct = new CharTemplates(); PlayerTemplate template = PlayerTemplateData.getInstance().getTemplate(0); @@ -63,6 +66,6 @@ public class NewCharacter extends GameClientPacket ct.addChar(template); // Finally - sendPacket(ct); + client.sendPacket(ct); } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ObserverReturn.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ObserverReturn.java index 9e5ecabb85..c45b66ad65 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ObserverReturn.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ObserverReturn.java @@ -16,19 +16,22 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class ObserverReturn extends GameClientPacket +public class ObserverReturn implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java index d610dc6d9f..e688f4d9d5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ProtocolVersion.java @@ -19,37 +19,40 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.KeyPacket; -public class ProtocolVersion extends GameClientPacket +public class ProtocolVersion implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(ProtocolVersion.class.getName()); private int _version; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _version = readD(); + _version = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if ((_version == 65534) || (_version == -2)) // Ping { - getClient().close((GameServerPacket) null); + // this is just a ping attempt from the new C2 client + client.closeNow(); } else if ((_version < Config.MIN_PROTOCOL_REVISION) || (_version > Config.MAX_PROTOCOL_REVISION)) { - LOGGER.info("Client: " + getClient() + " -> Protocol Revision: " + _version + " is invalid. Minimum is " + Config.MIN_PROTOCOL_REVISION + " and Maximum is " + Config.MAX_PROTOCOL_REVISION + " are supported. Closing connection."); + LOGGER.info("Client: " + client + " -> Protocol Revision: " + _version + " is invalid. Minimum is " + Config.MIN_PROTOCOL_REVISION + " and Maximum is " + Config.MAX_PROTOCOL_REVISION + " are supported. Closing connection."); LOGGER.warning("Wrong Protocol Version " + _version); - getClient().close((GameServerPacket) null); + client.close(new KeyPacket(client.enableCrypt(), 0)); } else { - getClient().setProtocolVersion(_version); - getClient().sendPacket(new KeyPacket(getClient().enableCrypt())); + client.sendPacket(new KeyPacket(client.enableCrypt(), 1)); + client.setProtocolVersion(_version); } } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java index 05a9e0bf64..ba47cc4ae5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Map; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.SkillTable; @@ -39,6 +40,7 @@ import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ChairSit; @@ -46,7 +48,7 @@ import org.l2jmobius.gameserver.network.serverpackets.RecipeShopManageList; import org.l2jmobius.gameserver.network.serverpackets.Ride; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestActionUse extends GameClientPacket +public class RequestActionUse implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestActionUse.class.getName()); @@ -70,17 +72,18 @@ public class RequestActionUse extends GameClientPacket } @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _actionId = readD(); - _ctrlPressed = readD() == 1; - _shiftPressed = readC() == 1; + _actionId = packet.readD(); + _ctrlPressed = packet.readD() == 1; + _shiftPressed = packet.readC() == 1; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -89,14 +92,14 @@ public class RequestActionUse extends GameClientPacket // dont do anything if player is dead if ((_actionId != 0) && player.isAlikeDead()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // don't do anything if player is confused if (player.isOutOfControl()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -107,7 +110,7 @@ public class RequestActionUse extends GameClientPacket } else if (player.isCastingNow()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -337,31 +340,31 @@ public class RequestActionUse extends GameClientPacket } case 32: // Wild Hog Cannon - Mode Change { - useSkill(4230); + useSkill(client, 4230); break; } case 36: // Soulless - Toxic Smoke { - useSkill(4259); + useSkill(client, 4259); break; } case 37: { if (player.isAlikeDead()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open Manufacture when you are in private store if ((player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_BUY) || (player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_SELL)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open Manufacture when you are sitting if (player.isSitting() && (player.getPrivateStoreType() != PlayerInstance.STORE_PRIVATE_MANUFACTURE)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_MANUFACTURE) @@ -381,47 +384,47 @@ public class RequestActionUse extends GameClientPacket } case 39: // Soulless - Parasite Burst { - useSkill(4138); + useSkill(client, 4138); break; } case 41: // Wild Hog Cannon - Attack { - useSkill(4230); + useSkill(client, 4230); break; } case 42: // Kai the Cat - Self Damage Shield { - useSkill(4378, player); + useSkill(client, 4378, player); break; } case 43: // Unicorn Merrow - Hydro Screw { - useSkill(4137); + useSkill(client, 4137); break; } case 44: // Big Boom - Boom Attack { - useSkill(4139); + useSkill(client, 4139); break; } case 45: // Unicorn Boxer - Master Recharge { - useSkill(4025, player); + useSkill(client, 4025, player); break; } case 46: // Mew the Cat - Mega Storm Strike { - useSkill(4261); + useSkill(client, 4261); break; } case 47: // Silhouette - Steal Blood { - useSkill(4260); + useSkill(client, 4260); break; } case 48: // Mechanic Golem - Mech. Cannon { - useSkill(4068); + useSkill(client, 4068); break; } case 51: @@ -429,19 +432,19 @@ public class RequestActionUse extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open Manufacture when you are in private store if ((player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_BUY) || (player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_SELL)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open Manufacture when you are sitting if (player.isSitting() && (player.getPrivateStoreType() != PlayerInstance.STORE_PRIVATE_MANUFACTURE)) { - getClient().sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (player.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_MANUFACTURE) @@ -511,7 +514,7 @@ public class RequestActionUse extends GameClientPacket { if (target instanceof DoorInstance) { - useSkill(4079); + useSkill(client, 4079); } break; } @@ -521,124 +524,124 @@ public class RequestActionUse extends GameClientPacket } case 1003: // Wind Hatchling/Strider - Wild Stun { - useSkill(4710); // TODO use correct skill level based on pet level + useSkill(client, 4710); // TODO use correct skill level based on pet level break; } case 1004: // Wind Hatchling/Strider - Wild Defense { - useSkill(4711, player); // TODO use correct skill level based on pet level + useSkill(client, 4711, player); // TODO use correct skill level based on pet level break; } case 1005: // Star Hatchling/Strider - Bright Burst { - useSkill(4712); // TODO use correct skill level based on pet level + useSkill(client, 4712); // TODO use correct skill level based on pet level break; } case 1006: // Star Hatchling/Strider - Bright Heal { - useSkill(4713, player); // TODO use correct skill level based on pet level + useSkill(client, 4713, player); // TODO use correct skill level based on pet level break; } case 1007: // Cat Queen - Blessing of Queen { - useSkill(4699, player); + useSkill(client, 4699, player); break; } case 1008: // Cat Queen - Gift of Queen { - useSkill(4700, player); + useSkill(client, 4700, player); break; } case 1009: // Cat Queen - Cure of Queen { - useSkill(4701); + useSkill(client, 4701); break; } case 1010: // Unicorn Seraphim - Blessing of Seraphim { - useSkill(4702, player); + useSkill(client, 4702, player); break; } case 1011: // Unicorn Seraphim - Gift of Seraphim { - useSkill(4703, player); + useSkill(client, 4703, player); break; } case 1012: // Unicorn Seraphim - Cure of Seraphim { - useSkill(4704); + useSkill(client, 4704); break; } case 1013: // Nightshade - Curse of Shade { - useSkill(4705); + useSkill(client, 4705); break; } case 1014: // Nightshade - Mass Curse of Shade { - useSkill(4706, player); + useSkill(client, 4706, player); break; } case 1015: // Nightshade - Shade Sacrifice { - useSkill(4707); + useSkill(client, 4707); break; } case 1016: // Cursed Man - Cursed Blow { - useSkill(4709); + useSkill(client, 4709); break; } case 1017: // Cursed Man - Cursed Strike/Stun { - useSkill(4708); + useSkill(client, 4708); break; } case 1031: // Feline King - Slash { - useSkill(5135); + useSkill(client, 5135); break; } case 1032: // Feline King - Spinning Slash { - useSkill(5136); + useSkill(client, 5136); break; } case 1033: // Feline King - Grip of the Cat { - useSkill(5137); + useSkill(client, 5137); break; } case 1034: // Magnus the Unicorn - Whiplash { - useSkill(5138); + useSkill(client, 5138); break; } case 1035: // Magnus the Unicorn - Tridal Wave { - useSkill(5139); + useSkill(client, 5139); break; } case 1036: // Spectral Lord - Corpse Kaboom { - useSkill(5142); + useSkill(client, 5142); break; } case 1037: // Spectral Lord - Dicing Death { - useSkill(5141); + useSkill(client, 5141); break; } case 1038: // Spectral Lord - Force Curse { - useSkill(5140); + useSkill(client, 5140); break; } case 1039: // Swoop Cannon - Cannon Fodder { if (!(target instanceof DoorInstance)) { - useSkill(5110); + useSkill(client, 5110); } break; } @@ -646,7 +649,7 @@ public class RequestActionUse extends GameClientPacket { if (!(target instanceof DoorInstance)) { - useSkill(5111); + useSkill(client, 5111); } break; } @@ -660,9 +663,9 @@ public class RequestActionUse extends GameClientPacket /* * Cast a skill for active pet/servitor. Target is specified as a parameter but can be overwrited or ignored depending on skill type. */ - private void useSkill(int skillId, WorldObject target) + private void useSkill(GameClient client, int skillId, WorldObject target) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -705,14 +708,14 @@ public class RequestActionUse extends GameClientPacket /* * Cast a skill for active pet/servitor. Target is retrieved from owner' target, then validated by overloaded method useSkill(int, Creature). */ - private void useSkill(int skillId) + private void useSkill(GameClient client, int skillId) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - useSkill(skillId, player.getTarget()); + useSkill(client, skillId, player.getTarget()); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyCrest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyCrest.java index 97a3ba9760..1d7243bdb6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyCrest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyCrest.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.AllyCrest; -public class RequestAllyCrest extends GameClientPacket +public class RequestAllyCrest implements IClientIncomingPacket { private int _crestId; @@ -26,14 +28,15 @@ public class RequestAllyCrest extends GameClientPacket * packet type id 0x88 format: cd */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _crestId = readD(); + _crestId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - sendPacket(new AllyCrest(_crestId)); + client.sendPacket(new AllyCrest(_crestId)); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyInfo.java index ecfc18c2b3..d5ed83cf33 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAllyInfo.java @@ -16,18 +16,21 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.AllyInfo; -public class RequestAllyInfo extends GameClientPacket +public class RequestAllyInfo implements IClientIncomingPacket { @Override - public void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - sendPacket(new AllyInfo(getClient().getPlayer())); + client.sendPacket(new AllyInfo(client.getPlayer())); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerFriendInvite.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerFriendInvite.java index 9fa825ca19..8abc83e844 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerFriendInvite.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerFriendInvite.java @@ -21,7 +21,9 @@ import java.sql.PreparedStatement; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.FriendList; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -29,22 +31,23 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * sample 5F 01 00 00 00 format cdd */ -public class RequestAnswerFriendInvite extends GameClientPacket +public class RequestAnswerFriendInvite implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestAnswerFriendInvite.class.getName()); private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player != null) { final PlayerInstance requestor = player.getActiveRequester(); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinAlly.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinAlly.java index 851c706093..c635ac9e8a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinAlly.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinAlly.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * sample 5F 01 00 00 00 format cdd */ -public class RequestAnswerJoinAlly extends GameClientPacket +public class RequestAnswerJoinAlly implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinParty.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinParty.java index da0c8fb768..90f3b422cd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinParty.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinParty.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExManagePartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.JoinParty; @@ -27,20 +29,21 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * sample 2a 01 00 00 00 format cdd */ -public class RequestAnswerJoinParty extends GameClientPacket +public class RequestAnswerJoinParty implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinPledge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinPledge.java index 551554cc42..6181abfdcd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinPledge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAnswerJoinPledge.java @@ -16,8 +16,10 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.JoinPledge; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowInfoUpdate; @@ -25,20 +27,21 @@ import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAdd; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestAnswerJoinPledge extends GameClientPacket +public class RequestAnswerJoinPledge implements IClientIncomingPacket { private int _answer; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _answer = readD(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkill.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkill.java index a65f997010..c85f278ffb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkill.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkill.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.SkillSpellbookTable; import org.l2jmobius.gameserver.data.sql.SkillTreeTable; @@ -32,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.VillageMasterInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExStorageMaxCount; import org.l2jmobius.gameserver.network.serverpackets.PledgeSkillList; @@ -41,7 +43,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestAquireSkill extends GameClientPacket +public class RequestAquireSkill implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestAquireSkill.class.getName()); @@ -52,17 +54,18 @@ public class RequestAquireSkill extends GameClientPacket private int _skillType; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); - _level = readD(); - _skillType = readD(); + _id = packet.readD(); + _level = packet.readD(); + _skillType = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -188,7 +191,7 @@ public class RequestAquireSkill extends GameClientPacket final SystemMessage sm = new SystemMessage(SystemMessageId.S2_S1_HAS_DISAPPEARED); sm.addNumber(costcount); sm.addItemName(costid); - sendPacket(sm); + player.sendPacket(sm); } else { @@ -243,7 +246,7 @@ public class RequestAquireSkill extends GameClientPacket final SystemMessage sm = new SystemMessage(SystemMessageId.S2_S1_HAS_DISAPPEARED); sm.addItemName(itemId); sm.addNumber(1); - sendPacket(sm); + player.sendPacket(sm); } } else @@ -289,7 +292,7 @@ public class RequestAquireSkill extends GameClientPacket final SystemMessage sp = new SystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1); sp.addNumber(requiredSp); - sendPacket(sp); + player.sendPacket(sp); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_2); sm.addSkillName(_id); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkillInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkillInfo.java index 6d84c33768..3fd71d004e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkillInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAquireSkillInfo.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.SkillSpellbookTable; import org.l2jmobius.gameserver.data.sql.SkillTreeTable; @@ -26,26 +27,28 @@ import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.AquireSkillInfo; -public class RequestAquireSkillInfo extends GameClientPacket +public class RequestAquireSkillInfo implements IClientIncomingPacket { private int _id; private int _level; private int _skillType; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); - _level = readD(); - _skillType = readD(); + _id = packet.readD(); + _level = packet.readD(); + _skillType = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -108,7 +111,7 @@ public class RequestAquireSkillInfo extends GameClientPacket asi.addRequirement(99, spbId, 1, 50); } - sendPacket(asi); + player.sendPacket(asi); } else if (_skillType == 2) { @@ -136,7 +139,7 @@ public class RequestAquireSkillInfo extends GameClientPacket { asi.addRequirement(1, itemId, 1, 0); } - sendPacket(asi); + player.sendPacket(asi); } else // Common Skills @@ -162,7 +165,7 @@ public class RequestAquireSkillInfo extends GameClientPacket final AquireSkillInfo asi = new AquireSkillInfo(skill.getId(), skill.getLevel(), spcost, 1); asi.addRequirement(4, costid, costcount, 0); - sendPacket(asi); + player.sendPacket(asi); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAskJoinPartyRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAskJoinPartyRoom.java index bcf1d764ef..18db0da103 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAskJoinPartyRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAskJoinPartyRoom.java @@ -16,8 +16,10 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskJoinPartyRoom; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -26,20 +28,21 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (ch) S * @author -Wooden- */ -public class RequestAskJoinPartyRoom extends GameClientPacket +public class RequestAskJoinPartyRoom implements IClientIncomingPacket { private static String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAutoSoulShot.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAutoSoulShot.java index 24b9e9cfbe..5e176387c3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAutoSoulShot.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestAutoSoulShot.java @@ -19,13 +19,15 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAutoSoulShot; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestAutoSoulShot extends GameClientPacket +public class RequestAutoSoulShot implements IClientIncomingPacket { // format cd private int _itemId; @@ -57,16 +59,17 @@ public class RequestAutoSoulShot extends GameClientPacket } @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _itemId = readD(); - _type = readD(); + _itemId = packet.readD(); + _type = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBBSwrite.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBBSwrite.java index c568277509..65aa0190bb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBBSwrite.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBBSwrite.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.communitybbs.CommunityBoard; +import org.l2jmobius.gameserver.network.GameClient; /** * Format SSSSSS * @author -Wooden- */ -public class RequestBBSwrite extends GameClientPacket +public class RequestBBSwrite implements IClientIncomingPacket { private String _url; private String _arg1; @@ -32,19 +34,20 @@ public class RequestBBSwrite extends GameClientPacket private String _arg5; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _url = readS(); - _arg1 = readS(); - _arg2 = readS(); - _arg3 = readS(); - _arg4 = readS(); - _arg5 = readS(); + _url = packet.readS(); + _arg1 = packet.readS(); + _arg2 = packet.readS(); + _arg3 = packet.readS(); + _arg4 = packet.readS(); + _arg5 = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - CommunityBoard.getInstance().handleWriteCommands(getClient(), _url, _arg1, _arg2, _arg3, _arg4, _arg5); + CommunityBoard.getInstance().handleWriteCommands(client, _url, _arg1, _arg2, _arg3, _arg4, _arg5); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBlock.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBlock.java index 8b276d45dd..c13f13f56c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBlock.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBlock.java @@ -18,12 +18,14 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestBlock extends GameClientPacket +public class RequestBlock implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestBlock.class.getName()); @@ -37,19 +39,20 @@ public class RequestBlock extends GameClientPacket private int _type; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _type = readD(); // 0x00 - block, 0x01 - unblock, 0x03 - allblock, 0x04 - allunblock + _type = packet.readD(); // 0x00 - block, 0x01 - unblock, 0x03 - allblock, 0x04 - allunblock if ((_type == BLOCK) || (_type == UNBLOCK)) { - _name = readS(); + _name = packet.readS(); } + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyItem.java index 210ff0dd2c..c95386dae3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyItem.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.TradeController; import org.l2jmobius.gameserver.cache.HtmCache; import org.l2jmobius.gameserver.data.ItemTable; @@ -33,6 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.MerchantInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ItemList; @@ -44,7 +46,7 @@ import org.l2jmobius.gameserver.util.Util; /** * @version $Revision: 1.12.4.4 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestBuyItem extends GameClientPacket +public class RequestBuyItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestBuyItem.class.getName()); @@ -53,12 +55,12 @@ public class RequestBuyItem extends GameClientPacket private int[] _items; // count*2 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _listId = readD(); - _count = readD(); + _listId = packet.readD(); + _count = packet.readD(); // count*8 is the size of a for iteration of each item - if (((_count * 2) < 0) || (_count > Config.MAX_ITEM_IN_PACKET) || ((_count * 8) > _buf.remaining())) + if (((_count * 2) < 0) || (_count > Config.MAX_ITEM_IN_PACKET) || ((_count * 8) > packet.getReadableBytes())) { _count = 0; } @@ -66,40 +68,42 @@ public class RequestBuyItem extends GameClientPacket _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); if (itemId < 1) { _count = 0; - return; + return false; } _items[(i * 2) + 0] = itemId; - final int count = readD(); + final int count = packet.readD(); if ((count > Integer.MAX_VALUE) || (count < 1)) { _count = 0; - return; + return false; } if (count > 10000) // Count check. { - getClient().getPlayer().sendMessage("You cannot buy more than 10.000 items."); + client.getPlayer().sendMessage("You cannot buy more than 10.000 items."); _count = 0; - return; + return false; } _items[(i * 2) + 1] = count; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("buy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("buy")) { player.sendMessage("You buying too fast."); return; @@ -203,13 +207,13 @@ public class RequestBuyItem extends GameClientPacket _listId = list.getListId(); if ((_listId > 1000000) && (merchant != null) && (merchant.getTemplate().getNpcId() != (_listId - 1000000))) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (_count < 1) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -246,7 +250,7 @@ public class RequestBuyItem extends GameClientPacket if ((count > Integer.MAX_VALUE) || (!template.isStackable() && (count > 1))) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase invalid quantity of items at the same time.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } @@ -263,7 +267,7 @@ public class RequestBuyItem extends GameClientPacket if (price < 0) { LOGGER.warning("ERROR, no price found .. wrong buylist ??"); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -281,7 +285,7 @@ public class RequestBuyItem extends GameClientPacket if ((subTotal + tax) > Integer.MAX_VALUE) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " adena worth of goods.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } @@ -338,7 +342,7 @@ public class RequestBuyItem extends GameClientPacket if (list.countDecrease(itemId) && !list.decreaseCount(itemId, count)) { - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } // Add item to Inventory and adjust update packet diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java index cbe235d1e7..a14013f991 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuyProcure.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; @@ -28,6 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.ManorManagerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -36,7 +38,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; @SuppressWarnings("unused") -public class RequestBuyProcure extends GameClientPacket +public class RequestBuyProcure implements IClientIncomingPacket { private int _listId; private int _count; @@ -44,49 +46,51 @@ public class RequestBuyProcure extends GameClientPacket private List _procureList = new ArrayList<>(); @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _listId = readD(); - _count = readD(); + _listId = packet.readD(); + _count = packet.readD(); if (_count > 500) // protect server { _count = 0; - return; + return false; } if (_count < 0) // protect server { _count = 0; - return; + return false; } _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final long servise = readD(); - final int itemId = readD(); + final long servise = packet.readD(); + final int itemId = packet.readD(); _items[(i * 2) + 0] = itemId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 1)) { _count = 0; - return; + return false; } _items[(i * 2) + 1] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getManor().tryPerformAction("BuyProcure")) + if (!client.getFloodProtectors().getManor().tryPerformAction("BuyProcure")) { return; } @@ -99,7 +103,7 @@ public class RequestBuyProcure extends GameClientPacket if (_count < 1) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -123,7 +127,7 @@ public class RequestBuyProcure extends GameClientPacket if (count > Integer.MAX_VALUE) { Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " items at the same time.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuySeed.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuySeed.java index 8b60c7ebfd..37dfe56d0b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuySeed.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBuySeed.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; @@ -27,6 +28,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -38,60 +40,62 @@ import org.l2jmobius.gameserver.util.Util; * Format: cdd[dd] c // id (0xC4) d // manor id d // seeds to buy [ d // seed id d // count ] * @author l3x */ -public class RequestBuySeed extends GameClientPacket +public class RequestBuySeed implements IClientIncomingPacket { private int _count; private int _manorId; private int[] _items; // size _count * 2 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _manorId = readD(); - _count = readD(); - if ((_count > 500) || ((_count * 8) < _buf.remaining()) || (_count < 1)) // check values + _manorId = packet.readD(); + _count = packet.readD(); + if ((_count > 500) || ((_count * 8) < packet.getReadableBytes()) || (_count < 1)) // check values { _count = 0; - return; + return false; } _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 2) + 0] = itemId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 1)) { _count = 0; - return; + return false; } _items[(i * 2) + 1] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { long totalPrice = 0; int slots = 0; int totalWeight = 0; - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getManor().tryPerformAction("BuySeed")) + if (!client.getFloodProtectors().getManor().tryPerformAction("BuySeed")) { return; } if (_count < 1) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index 260595177d..4cbb5d4f02 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.communitybbs.CommunityBoard; import org.l2jmobius.gameserver.data.xml.AdminData; @@ -38,11 +39,12 @@ import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SymbolMakerInstance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.util.GMAudit; -public class RequestBypassToServer extends GameClientPacket +public class RequestBypassToServer implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestBypassToServer.class.getName()); @@ -50,21 +52,22 @@ public class RequestBypassToServer extends GameClientPacket private String _command; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _command = readS(); + _command = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getServerBypass().tryPerformAction(_command)) + if (!client.getFloodProtectors().getServerBypass().tryPerformAction(_command)) { return; } @@ -299,7 +302,7 @@ public class RequestBypassToServer extends GameClientPacket } else if (_command.startsWith("bbs_") || _command.startsWith("_bbs") || _command.startsWith("_friend") || _command.startsWith("_mail") || _command.startsWith("_block")) { - CommunityBoard.getInstance().handleCommands(getClient(), _command); + CommunityBoard.getInstance().handleCommands(client, _command); } else if (_command.startsWith("Quest ")) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePartyLeader.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePartyLeader.java index e51704e5d0..07251cb62a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePartyLeader.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePartyLeader.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; /** * @version $Revision: 1.3.4.2 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestChangePartyLeader extends GameClientPacket +public class RequestChangePartyLeader implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePetName.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePetName.java index 70092aa7d9..140b02be2b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePetName.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestChangePetName.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.PetNameTable; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.PetInfo; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestChangePetName extends GameClientPacket +public class RequestChangePetName implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmCancelItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmCancelItem.java index 8853ada2c2..dc274d3e5a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmCancelItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmCancelItem.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExConfirmCancelItem; @@ -27,20 +29,21 @@ import org.l2jmobius.gameserver.network.serverpackets.ExConfirmCancelItem; * Format(ch) d * @author -Wooden- */ -public class RequestConfirmCancelItem extends GameClientPacket +public class RequestConfirmCancelItem implements IClientIncomingPacket { private int _itemId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _itemId = readD(); + _itemId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final ItemInstance item = (ItemInstance) World.getInstance().findObject(_itemId); if ((player == null) || (item == null)) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmGemStone.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmGemStone.java index 0f9a2b67d5..0abaf4712e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmGemStone.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmGemStone.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExConfirmVariationGemstone; @@ -27,7 +29,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ExConfirmVariationGemstone * Format:(ch) dddd * @author -Wooden- */ -public class RequestConfirmGemStone extends GameClientPacket +public class RequestConfirmGemStone implements IClientIncomingPacket { private int _targetItemObjId; private int _refinerItemObjId; @@ -35,18 +37,19 @@ public class RequestConfirmGemStone extends GameClientPacket private int _gemstoneCount; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetItemObjId = readD(); - _refinerItemObjId = readD(); - _gemstoneItemObjId = readD(); - _gemstoneCount = readD(); + _targetItemObjId = packet.readD(); + _refinerItemObjId = packet.readD(); + _gemstoneItemObjId = packet.readD(); + _gemstoneCount = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final ItemInstance targetItem = (ItemInstance) World.getInstance().findObject(_targetItemObjId); final ItemInstance refinerItem = (ItemInstance) World.getInstance().findObject(_refinerItemObjId); final ItemInstance gemstoneItem = (ItemInstance) World.getInstance().findObject(_gemstoneItemObjId); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmRefinerItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmRefinerItem.java index e37c0203b4..083b14cb54 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmRefinerItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmRefinerItem.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExConfirmVariationRefiner; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -28,7 +30,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Fromat(ch) dd * @author -Wooden- */ -public class RequestConfirmRefinerItem extends GameClientPacket +public class RequestConfirmRefinerItem implements IClientIncomingPacket { private static final int GEMSTONE_D = 2130; private static final int GEMSTONE_C = 2131; @@ -37,16 +39,17 @@ public class RequestConfirmRefinerItem extends GameClientPacket private int _refinerItemObjId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetItemObjId = readD(); - _refinerItemObjId = readD(); + _targetItemObjId = packet.readD(); + _refinerItemObjId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final ItemInstance targetItem = (ItemInstance) World.getInstance().findObject(_targetItemObjId); final ItemInstance refinerItem = (ItemInstance) World.getInstance().findObject(_refinerItemObjId); if ((targetItem == null) || (refinerItem == null)) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmSiegeWaitingList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmSiegeWaitingList.java index 04aa4b0b6b..8c2715d290 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmSiegeWaitingList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmSiegeWaitingList.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SiegeDefenderList; -public class RequestConfirmSiegeWaitingList extends GameClientPacket +public class RequestConfirmSiegeWaitingList implements IClientIncomingPacket { private int _approved; private int _castleId; private int _clanId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _castleId = readD(); - _clanId = readD(); - _approved = readD(); + _castleId = packet.readD(); + _clanId = packet.readD(); + _approved = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmTargetItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmTargetItem.java index 3ba38551cf..7251b1a1ea 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmTargetItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestConfirmTargetItem.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExConfirmVariationItem; @@ -27,20 +29,21 @@ import org.l2jmobius.gameserver.network.serverpackets.ExConfirmVariationItem; * Format:(ch) d * @author -Wooden- */ -public class RequestConfirmTargetItem extends GameClientPacket +public class RequestConfirmTargetItem implements IClientIncomingPacket { private int _itemObjId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _itemObjId = readD(); + _itemObjId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final ItemInstance item = (ItemInstance) World.getInstance().findObject(_itemObjId); if (item == null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCrystallizeItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCrystallizeItem.java index d584371f37..54cb42a7c4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCrystallizeItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCrystallizeItem.java @@ -19,12 +19,14 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.PlayerInventory; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -34,7 +36,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestCrystallizeItem extends GameClientPacket +public class RequestCrystallizeItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestCrystallizeItem.class.getName()); @@ -42,23 +44,24 @@ public class RequestCrystallizeItem extends GameClientPacket private int _count; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _count = readD(); + _objectId = packet.readD(); + _count = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { LOGGER.warning("RequestCrystalizeItem: activeChar was null"); return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("crystallize")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("crystallize")) { player.sendMessage("You crystallizing too fast."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCursedWeaponList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCursedWeaponList.java index aef60d383f..ea819e494b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCursedWeaponList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCursedWeaponList.java @@ -16,41 +16,33 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.ArrayList; -import java.util.List; - +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExCursedWeaponList; /** * Format: (ch) * @author -Wooden- */ -public class RequestCursedWeaponList extends GameClientPacket +public class RequestCursedWeaponList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // nothing to read it's just a trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - // send a ExCursedWeaponList :p - final List list = new ArrayList<>(); - for (int id : CursedWeaponsManager.getInstance().getCursedWeaponsIds()) - { - list.add(id); - } - - player.sendPacket(new ExCursedWeaponList(list)); + player.sendPacket(new ExCursedWeaponList(CursedWeaponsManager.getInstance().getCursedWeaponsIds())); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCursedWeaponLocation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCursedWeaponLocation.java index 64149b7434..c82a552795 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCursedWeaponLocation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestCursedWeaponLocation.java @@ -19,10 +19,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.CursedWeapon; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExCursedWeaponLocation; import org.l2jmobius.gameserver.network.serverpackets.ExCursedWeaponLocation.CursedWeaponInfo; @@ -30,18 +32,18 @@ import org.l2jmobius.gameserver.network.serverpackets.ExCursedWeaponLocation.Cur * Format: (ch) * @author -Wooden- */ -public class RequestCursedWeaponLocation extends GameClientPacket +public class RequestCursedWeaponLocation implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // ignore read packet + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDeleteMacro.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDeleteMacro.java index c3434ca67b..d1ea421abe 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDeleteMacro.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDeleteMacro.java @@ -16,30 +16,36 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -public class RequestDeleteMacro extends GameClientPacket +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; + +public class RequestDeleteMacro implements IClientIncomingPacket { private int _id; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); + _id = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (getClient().getPlayer() == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } // Macro exploit fix - if (!getClient().getFloodProtectors().getMacro().tryPerformAction("delete macro")) + if (!client.getFloodProtectors().getMacro().tryPerformAction("delete macro")) { return; } - getClient().getPlayer().deleteMacro(_id); + player.deleteMacro(_id); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDestroyItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDestroyItem.java index 81b80aaa0f..0090fadcd9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDestroyItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDestroyItem.java @@ -22,17 +22,19 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.PetDataTable; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; import org.l2jmobius.gameserver.util.Util; -public class RequestDestroyItem extends GameClientPacket +public class RequestDestroyItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestDestroyItem.class.getName()); @@ -40,16 +42,17 @@ public class RequestDestroyItem extends GameClientPacket private int _count; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _count = readD(); + _objectId = packet.readD(); + _count = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -64,7 +67,7 @@ public class RequestDestroyItem extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("destroy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("destroy")) { player.sendMessage("You destroying items too fast."); return; @@ -173,7 +176,7 @@ public class RequestDestroyItem extends GameClientPacket } else { - sendPacket(new ItemList(player, true)); + player.sendPacket(new ItemList(player, true)); } final StatusUpdate su = new StatusUpdate(player.getObjectId()); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissAlly.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissAlly.java index 5cd01f842e..42a2df50d0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissAlly.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissAlly.java @@ -16,21 +16,23 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestDismissAlly extends GameClientPacket +public class RequestDismissAlly implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger packet + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissPartyRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissPartyRoom.java index 35f2f36cbb..f55ca1bac4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissPartyRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDismissPartyRoom.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) dd * @author -Wooden- */ -public class RequestDismissPartyRoom extends GameClientPacket +public class RequestDismissPartyRoom implements IClientIncomingPacket { private int _roomid; @SuppressWarnings("unused") private int _data2; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _roomid = readD(); - _data2 = readD(); + _roomid = packet.readD(); + _data2 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java index df1c51d6b9..e3393cb720 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -26,6 +27,7 @@ import org.l2jmobius.gameserver.model.holders.SkillUseHolder; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.EtcItemType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -34,7 +36,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestDropItem extends GameClientPacket +public class RequestDropItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestDropItem.class.getName()); @@ -45,19 +47,20 @@ public class RequestDropItem extends GameClientPacket private int _z; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _count = readD(); - _x = readD(); - _y = readD(); - _z = readD(); + _objectId = packet.readD(); + _count = packet.readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || player.isDead()) { return; @@ -65,19 +68,19 @@ public class RequestDropItem extends GameClientPacket if (player.isGM() && (player.getAccessLevel().getLevel() < 80)) { // just head GM and admin can drop items on the ground - sendPacket(SystemMessage.sendString("You have not right to discard anything from inventory.")); + player.sendPacket(SystemMessage.sendString("You have not right to discard anything from inventory.")); return; } // Fix against safe enchant exploit if (player.getActiveEnchantItem() != null) { - sendPacket(SystemMessage.sendString("You can't discard items during enchant.")); + player.sendPacket(SystemMessage.sendString("You can't discard items during enchant.")); return; } // Flood protect drop to avoid packet lag - if (!getClient().getFloodProtectors().getDropItem().tryPerformAction("drop item")) + if (!client.getFloodProtectors().getDropItem().tryPerformAction("drop item")) { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelAnswerStart.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelAnswerStart.java index ccece8cc05..411f642294 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelAnswerStart.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelAnswerStart.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.DuelManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * Format:(ch) ddd */ -public class RequestDuelAnswerStart extends GameClientPacket +public class RequestDuelAnswerStart implements IClientIncomingPacket { private int _partyDuel; @SuppressWarnings("unused") @@ -32,17 +34,18 @@ public class RequestDuelAnswerStart extends GameClientPacket private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _partyDuel = readD(); - _unk1 = readD(); - _response = readD(); + _partyDuel = packet.readD(); + _unk1 = packet.readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelStart.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelStart.java index ba099f561d..c2fe1f9daf 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelStart.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelStart.java @@ -16,8 +16,10 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExDuelAskStart; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -25,22 +27,23 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * Format:(ch) Sd */ -public class RequestDuelStart extends GameClientPacket +public class RequestDuelStart implements IClientIncomingPacket { private String _player; private int _partyDuel; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _player = readS(); - _partyDuel = readD(); + _player = packet.readS(); + _partyDuel = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final PlayerInstance targetChar = World.getInstance().getPlayer(_player); if (player == null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelSurrender.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelSurrender.java index 90ecd10cc1..ed981b63f7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelSurrender.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDuelSurrender.java @@ -16,23 +16,25 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.DuelManager; +import org.l2jmobius.gameserver.network.GameClient; /** * Format:(ch) just a trigger * @author -Wooden- */ -public class RequestDuelSurrender extends GameClientPacket +public class RequestDuelSurrender implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - DuelManager.getInstance().doSurrender(getClient().getPlayer()); + DuelManager.getInstance().doSurrender(client.getPlayer()); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java index 8a3a1fe384..071595861c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEnchantItem.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.model.World; @@ -26,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.WeaponType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.EnchantResult; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -35,7 +37,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestEnchantItem extends GameClientPacket +public class RequestEnchantItem implements IClientIncomingPacket { protected static final Logger LOGGER = Logger.getLogger(RequestEnchantItem.class.getName()); @@ -110,15 +112,16 @@ public class RequestEnchantItem extends GameClientPacket private int _objectId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (_objectId == 0)) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEvaluate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEvaluate.java index 4f14c02370..6c82b17e5a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEvaluate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestEvaluate.java @@ -17,27 +17,30 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; -public class RequestEvaluate extends GameClientPacket +public class RequestEvaluate implements IClientIncomingPacket { @SuppressWarnings("unused") private int _targetId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetId = readD(); + _targetId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { SystemMessage sm; - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAcceptJoinMPCC.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAcceptJoinMPCC.java index cd58d871f9..1e40c60b8f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAcceptJoinMPCC.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAcceptJoinMPCC.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.CommandChannel; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * @author -Wooden- */ -public class RequestExAcceptJoinMPCC extends GameClientPacket +public class RequestExAcceptJoinMPCC implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAskJoinMPCC.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAskJoinMPCC.java index c8de53bda6..49e85ff1e9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAskJoinMPCC.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExAskJoinMPCC.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExAskJoinMPCC; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -28,20 +30,21 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (ch) S * @author chris_00 D0 0D 00 5A 00 77 00 65 00 72 00 67 00 00 00 */ -public class RequestExAskJoinMPCC extends GameClientPacket +public class RequestExAskJoinMPCC implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkill.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkill.java index 0095037326..1c87f038b5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkill.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkill.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.SkillTreeTable; @@ -28,6 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; @@ -40,22 +42,23 @@ import org.l2jmobius.gameserver.util.Util; * Format chdd c: (id) 0xD0 h: (subid) 0x06 d: skill id d: skill level * @author -Wooden- */ -public class RequestExEnchantSkill extends GameClientPacket +public class RequestExEnchantSkill implements IClientIncomingPacket { private int _skillId; private int _skillLevel; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _skillId = readD(); - _skillLevel = readD(); + _skillId = packet.readD(); + _skillLevel = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -159,11 +162,11 @@ public class RequestExEnchantSkill extends GameClientPacket final SystemMessage ep = new SystemMessage(SystemMessageId.YOUR_EXPERIENCE_HAS_DECREASED_BY_S1); ep.addNumber(requiredExp); - sendPacket(ep); + player.sendPacket(ep); final SystemMessage sp = new SystemMessage(SystemMessageId.YOUR_SP_HAS_DECREASED_BY_S1); sp.addNumber(requiredSp); - sendPacket(sp); + player.sendPacket(sp); final SystemMessage sm = new SystemMessage(SystemMessageId.SKILL_ENCHANT_WAS_SUCCESSFUL_S1_HAS_BEEN_ENCHANTED); sm.addSkillName(_skillId); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkillInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkillInfo.java index aa3f8143d3..fd45fbd2a5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkillInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExEnchantSkillInfo.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.data.sql.SkillTreeTable; import org.l2jmobius.gameserver.model.EnchantSkillLearn; @@ -24,33 +25,35 @@ import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExEnchantSkillInfo; /** * Format chdd c: (id) 0xD0 h: (subid) 0x06 d: skill id d: skill level * @author -Wooden- */ -public class RequestExEnchantSkillInfo extends GameClientPacket +public class RequestExEnchantSkillInfo implements IClientIncomingPacket { private int _skillId; private int _skillLevel; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _skillId = readD(); - _skillLevel = readD(); + _skillId = packet.readD(); + _skillLevel = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if ((_skillId <= 0) || (_skillLevel <= 0)) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -109,6 +112,6 @@ public class RequestExEnchantSkillInfo extends GameClientPacket final int spbId = 6622; asi.addRequirement(4, spbId, 1, 0); } - sendPacket(asi); + player.sendPacket(asi); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExFishRanking.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExFishRanking.java index 70396612fc..c2ef684fe1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExFishRanking.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExFishRanking.java @@ -17,25 +17,27 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.FishingChampionshipManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) just a trigger * @author -Wooden- */ -public class RequestExFishRanking extends GameClientPacket +public class RequestExFishRanking implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMPCCShowPartyMembersInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMPCCShowPartyMembersInfo.java index 644f7b89f2..d159eee05d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMPCCShowPartyMembersInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMPCCShowPartyMembersInfo.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExMPCCShowPartyMemberInfo; /** * Format:(ch) h * @author -Wooden- */ -public class RequestExMPCCShowPartyMembersInfo extends GameClientPacket +public class RequestExMPCCShowPartyMembersInfo implements IClientIncomingPacket { private int _partyLeaderId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _partyLeaderId = readD(); + _partyLeaderId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java index 8d75259ce2..b761f19215 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java @@ -16,17 +16,19 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; /** * Fromat:(ch) dddddc */ -public class RequestExMagicSkillUseGround extends GameClientPacket +public class RequestExMagicSkillUseGround implements IClientIncomingPacket { private int _x; private int _y; @@ -36,20 +38,21 @@ public class RequestExMagicSkillUseGround extends GameClientPacket private boolean _shiftPressed; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _x = readD(); - _y = readD(); - _z = readD(); - _skillId = readD(); - _ctrlPressed = readD() != 0; - _shiftPressed = readC() != 0; + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + _skillId = packet.readD(); + _ctrlPressed = packet.readD() != 0; + _shiftPressed = packet.readC() != 0; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -59,7 +62,7 @@ public class RequestExMagicSkillUseGround extends GameClientPacket final int level = player.getSkillLevel(_skillId); if (level <= 0) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -79,7 +82,7 @@ public class RequestExMagicSkillUseGround extends GameClientPacket } else { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExOustFromMPCC.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExOustFromMPCC.java index 83e8c86869..8a2d83581e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExOustFromMPCC.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExOustFromMPCC.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; /** * @author -Wooden- D0 0F 00 5A 00 77 00 65 00 72 00 67 00 00 00 */ -public class RequestExOustFromMPCC extends GameClientPacket +public class RequestExOustFromMPCC implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final PlayerInstance target = World.getInstance().getPlayer(_name); - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((target != null) && target.isInParty() && player.isInParty() && player.getParty().isInCommandChannel() && target.getParty().isInCommandChannel() && player.getParty().getCommandChannel().getChannelLeader().equals(player)) { target.getParty().getCommandChannel().removeParty(target.getParty()); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExPledgeCrestLarge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExPledgeCrestLarge.java index 00cd74cb6c..9c9c5ee1f6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExPledgeCrestLarge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExPledgeCrestLarge.java @@ -16,30 +16,33 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.cache.CrestCache; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExPledgeCrestLarge; /** * Fomat : chd c: (id) 0xD0 h: (subid) 0x10 d: the crest id This is a trigger * @author -Wooden- */ -public class RequestExPledgeCrestLarge extends GameClientPacket +public class RequestExPledgeCrestLarge implements IClientIncomingPacket { private int _crestId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _crestId = readD(); + _crestId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final byte[] data = CrestCache.getInstance().getPledgeCrestLarge(_crestId); if (data != null) { - sendPacket(new ExPledgeCrestLarge(_crestId, data)); + client.sendPacket(new ExPledgeCrestLarge(_crestId, data)); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExSetPledgeCrestLarge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExSetPledgeCrestLarge.java index 70d16b2268..51970365da 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExSetPledgeCrestLarge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExSetPledgeCrestLarge.java @@ -22,42 +22,46 @@ import java.sql.SQLException; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.cache.CrestCache; import org.l2jmobius.gameserver.instancemanager.IdManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * Format : chdb c (id) 0xD0 h (subid) 0x11 d data size b raw data (picture i think ;) ) * @author -Wooden- */ -public class RequestExSetPledgeCrestLarge extends GameClientPacket +public class RequestExSetPledgeCrestLarge implements IClientIncomingPacket { - static Logger LOGGER = Logger.getLogger(RequestExSetPledgeCrestLarge.class.getName()); + private final static Logger LOGGER = Logger.getLogger(RequestExSetPledgeCrestLarge.class.getName()); + private int _size; private byte[] _data; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _size = readD(); + _size = packet.readD(); if (_size > 2176) { - return; + return false; } if (_size > 0) // client CAN send a RequestExSetPledgeCrestLarge with the size set to 0 then format is just chd { - _data = new byte[_size]; - readB(_data); + _data = packet.readB(_size); } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExitPartyMatchingWaitingRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExitPartyMatchingWaitingRoom.java index 691665d17b..7b55dab5d4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExitPartyMatchingWaitingRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestExitPartyMatchingWaitingRoom.java @@ -16,25 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) this is just a trigger : no data * @author -Wooden- */ -public class RequestExitPartyMatchingWaitingRoom extends GameClientPacket +public class RequestExitPartyMatchingWaitingRoom implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendDel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendDel.java index 48b2233fad..36d107e4bc 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendDel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendDel.java @@ -21,29 +21,32 @@ import java.sql.PreparedStatement; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.FriendList; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestFriendDel extends GameClientPacket +public class RequestFriendDel implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestFriendDel.class.getName()); private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendInvite.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendInvite.java index 0b8df2ee74..b533d964d0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendInvite.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendInvite.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.AskJoinFriend; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestFriendInvite extends GameClientPacket +public class RequestFriendInvite implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendList.java index 7833085b08..38b7eeb7d7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestFriendList.java @@ -16,24 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestFriendList extends GameClientPacket +public class RequestFriendList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGMCommand.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGMCommand.java index 9bd053cc02..d924f190ab 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGMCommand.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGMCommand.java @@ -16,10 +16,10 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.GMViewCharacterInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewHennaInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewItemList; @@ -28,28 +28,27 @@ import org.l2jmobius.gameserver.network.serverpackets.GMViewQuestList; import org.l2jmobius.gameserver.network.serverpackets.GMViewSkillInfo; import org.l2jmobius.gameserver.network.serverpackets.GMViewWarehouseWithdrawList; -public class RequestGMCommand extends GameClientPacket +public class RequestGMCommand implements IClientIncomingPacket { - static Logger LOGGER = Logger.getLogger(RequestGMCommand.class.getName()); - private String _targetName; private int _command; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetName = readS(); - _command = readD(); - // _unknown = readD(); + _targetName = packet.readS(); + _command = packet.readD(); + // _unknown = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { final PlayerInstance player = World.getInstance().getPlayer(_targetName); // prevent non GM or low level GMs from vieweing player stuff - if ((player == null) || !getClient().getPlayer().getAccessLevel().allowAltG()) + if ((player == null) || !player.getAccessLevel().allowAltG()) { return; } @@ -58,38 +57,38 @@ public class RequestGMCommand extends GameClientPacket { case 1: // player status { - sendPacket(new GMViewCharacterInfo(player)); - sendPacket(new GMViewHennaInfo(player)); + player.sendPacket(new GMViewCharacterInfo(player)); + player.sendPacket(new GMViewHennaInfo(player)); break; } case 2: // player clan { if (player.getClan() != null) { - sendPacket(new GMViewPledgeInfo(player.getClan(), player)); + player.sendPacket(new GMViewPledgeInfo(player.getClan(), player)); } break; } case 3: // player skills { - sendPacket(new GMViewSkillInfo(player)); + player.sendPacket(new GMViewSkillInfo(player)); break; } case 4: // player quests { - sendPacket(new GMViewQuestList(player)); + player.sendPacket(new GMViewQuestList(player)); break; } case 5: // player inventory { - sendPacket(new GMViewItemList(player)); - sendPacket(new GMViewHennaInfo(player)); + player.sendPacket(new GMViewItemList(player)); + player.sendPacket(new GMViewHennaInfo(player)); break; } case 6: // player warehouse { // GM warehouse view to be implemented - sendPacket(new GMViewWarehouseWithdrawList(player)); + player.sendPacket(new GMViewWarehouseWithdrawList(player)); break; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetBossRecord.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetBossRecord.java index 6bbd49940b..f79c29ab20 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetBossRecord.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetBossRecord.java @@ -16,8 +16,10 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.RaidBossPointsManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ExGetBossRecord; @@ -25,21 +27,22 @@ import org.l2jmobius.gameserver.network.serverpackets.ExGetBossRecord; * Format: (ch) d * @author -Wooden- */ -public class RequestGetBossRecord extends GameClientPacket +public class RequestGetBossRecord implements IClientIncomingPacket { @SuppressWarnings("unused") private int _bossId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _bossId = readD(); + _bossId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -50,6 +53,6 @@ public class RequestGetBossRecord extends GameClientPacket // trigger packet player.sendPacket(new ExGetBossRecord(ranking, points, RaidBossPointsManager.getList(player))); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java index ea0895553d..eb4c2036c7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java @@ -19,15 +19,17 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestGetItemFromPet extends GameClientPacket +public class RequestGetItemFromPet implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestGetItemFromPet.class.getName()); @@ -37,23 +39,24 @@ public class RequestGetItemFromPet extends GameClientPacket private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _amount = readD(); - _unknown = readD(); // = 0 for most trades + _objectId = packet.readD(); + _amount = packet.readD(); + _unknown = packet.readD(); // = 0 for most trades + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (player.getPet() == null) || !(player.getPet() instanceof PetInstance)) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("getfrompet")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("getfrompet")) { player.sendMessage("You get items from pet too fast."); return; @@ -80,7 +83,7 @@ public class RequestGetItemFromPet extends GameClientPacket if (player.calculateDistanceSq3D(pet) > 40000) // 200*200 { player.sendPacket(SystemMessageId.YOUR_TARGET_IS_OUT_OF_RANGE); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOffVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOffVehicle.java index 920066cd9d..7b91b46f3c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOffVehicle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOffVehicle.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.GetOffVehicle; /** * @author Maktakien */ -public class RequestGetOffVehicle extends GameClientPacket +public class RequestGetOffVehicle implements IClientIncomingPacket { private int _boatId; private int _x; @@ -30,18 +32,19 @@ public class RequestGetOffVehicle extends GameClientPacket private int _z; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _boatId = readD(); - _x = readD(); - _y = readD(); - _z = readD(); + _boatId = packet.readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOnVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOnVehicle.java index facd5268fe..4f7c4a26c2 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOnVehicle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetOnVehicle.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.BoatData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.GetOnVehicle; -public class RequestGetOnVehicle extends GameClientPacket +public class RequestGetOnVehicle implements IClientIncomingPacket { private int _boatId; private int _x; @@ -30,18 +32,19 @@ public class RequestGetOnVehicle extends GameClientPacket private int _z; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _boatId = readD(); - _x = readD(); - _y = readD(); - _z = readD(); + _boatId = packet.readD(); + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveItemToPet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveItemToPet.java index 68ec44fc69..dff5bea042 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveItemToPet.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveItemToPet.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; -public class RequestGiveItemToPet extends GameClientPacket +public class RequestGiveItemToPet implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestGiveItemToPet.class.getName()); @@ -34,22 +36,23 @@ public class RequestGiveItemToPet extends GameClientPacket private int _amount; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); - _amount = readD(); + _objectId = packet.readD(); + _amount = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || !(player.getPet() instanceof PetInstance)) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("giveitemtopet")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("giveitemtopet")) { player.sendMessage("You give items to pet too fast."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveNickName.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveNickName.java index 86d1c66133..05fd0ab47a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveNickName.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGiveNickName.java @@ -16,32 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestGiveNickName extends GameClientPacket +public class RequestGiveNickName implements IClientIncomingPacket { - static Logger LOGGER = Logger.getLogger(RequestGiveNickName.class.getName()); - private String _target; private String _title; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _target = readS(); - _title = readS(); + _target = packet.readS(); + _title = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java index e57eb5d094..ff23e58a86 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java @@ -16,26 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; /** * This class handles RequestGmLista packet triggered by /gmlist command */ -public class RequestGmList extends GameClientPacket +public class RequestGmList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (getClient().getPlayer() == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - AdminData.getInstance().sendListToPlayer(getClient().getPlayer()); + AdminData.getInstance().sendListToPlayer(player); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaEquip.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaEquip.java index f5ac5f50b6..e97d9c370d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaEquip.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaEquip.java @@ -16,26 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.HennaData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestHennaEquip extends GameClientPacket +public class RequestHennaEquip implements IClientIncomingPacket { private int _symbolId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _symbolId = readD(); + _symbolId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemInfo.java index d3f688ebbd..f050b71321 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemInfo.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.HennaData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.HennaItemInfo; -public class RequestHennaItemInfo extends GameClientPacket +public class RequestHennaItemInfo implements IClientIncomingPacket { private int _symbolId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _symbolId = readD(); + _symbolId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemRemoveInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemRemoveInfo.java index 71f5971e39..96f787d441 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemRemoveInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaItemRemoveInfo.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.HennaData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.HennaItemRemoveInfo; -public final class RequestHennaItemRemoveInfo extends GameClientPacket +public final class RequestHennaItemRemoveInfo implements IClientIncomingPacket { private int _symbolId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _symbolId = readD(); + _symbolId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaList.java index 4ec0127511..d1cbd2b8ca 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaList.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.HennaData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.HennaEquipList; -public class RequestHennaList extends GameClientPacket +public class RequestHennaList implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unknown = readD(); // ?? + _unknown = packet.readD(); // ?? + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemove.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemove.java index 6cb8aba529..acbd8e5a11 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemove.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemove.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * format cd */ -public final class RequestHennaRemove extends GameClientPacket +public final class RequestHennaRemove implements IClientIncomingPacket { private int _symbolId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _symbolId = readD(); + _symbolId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemoveList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemoveList.java index c6ca26edf9..1b1db92920 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemoveList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestHennaRemoveList.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.HennaRemoveList; /** * @author Tempy */ -public final class RequestHennaRemoveList extends GameClientPacket +public final class RequestHennaRemoveList implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unknown = readD(); // ?? + _unknown = packet.readD(); // ?? + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestItemList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestItemList.java index ffdedc61fa..6a424b1f2e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestItemList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestItemList.java @@ -16,22 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ItemList; -public class RequestItemList extends GameClientPacket +public class RequestItemList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if ((getClient() != null) && (getClient().getPlayer() != null) && !getClient().getPlayer().isInvetoryDisabled()) + final PlayerInstance player = client.getPlayer(); + if (player == null) { - sendPacket(new ItemList(getClient().getPlayer(), true)); + return; + } + + if (!player.isInvetoryDisabled()) + { + player.sendPacket(new ItemList(player, true)); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinAlly.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinAlly.java index 6fcc201242..49137865cc 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinAlly.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinAlly.java @@ -16,33 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.AskJoinAlly; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestJoinAlly extends GameClientPacket +public class RequestJoinAlly implements IClientIncomingPacket { private int _id; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); + _id = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!(World.getInstance().findObject(_id) instanceof PlayerInstance)) + final PlayerInstance ob = World.getInstance().getPlayer(_id); + if (ob == null) { player.sendPacket(SystemMessageId.YOU_HAVE_INVITED_THE_WRONG_TARGET); return; @@ -54,13 +58,12 @@ public class RequestJoinAlly extends GameClientPacket return; } - final PlayerInstance target = (PlayerInstance) World.getInstance().findObject(_id); + final PlayerInstance target = ob; final Clan clan = player.getClan(); if (!clan.checkAllyJoinCondition(player, target)) { return; } - if (!player.getRequest().setRequest(target, this)) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index c8fe896bc6..dbd0296b5b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.events.CTF; import org.l2jmobius.gameserver.instancemanager.events.DM; import org.l2jmobius.gameserver.instancemanager.events.TvT; @@ -23,33 +24,35 @@ import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.AskJoinParty; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestJoinParty extends GameClientPacket +public class RequestJoinParty implements IClientIncomingPacket { private String _name; private int _itemDistribution; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); - _itemDistribution = readD(); + _name = packet.readS(); + _itemDistribution = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance requestor = getClient().getPlayer(); + final PlayerInstance requestor = client.getPlayer(); final PlayerInstance target = World.getInstance().getPlayer(_name); if (requestor == null) { return; } - if (!getClient().getFloodProtectors().getPartyInvitation().tryPerformAction("PartyInvitation")) + if (!client.getFloodProtectors().getPartyInvitation().tryPerformAction("PartyInvitation")) { requestor.sendMessage("You Cannot Invite into Party So Fast!"); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinPledge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinPledge.java index e6ed5b77ae..8e8e2915e0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinPledge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinPledge.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.AskJoinPledge; -public class RequestJoinPledge extends GameClientPacket +public class RequestJoinPledge implements IClientIncomingPacket { private int _target; private int _pledgeType; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _target = readD(); - _pledgeType = readD(); + _target = packet.readD(); + _pledgeType = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinSiege.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinSiege.java index b5cc782e11..c372edf26e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinSiege.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinSiege.java @@ -16,35 +16,38 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; /** * @author KenM */ -public class RequestJoinSiege extends GameClientPacket +public class RequestJoinSiege implements IClientIncomingPacket { private int _castleId; private int _isAttacker; private int _isJoining; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _castleId = readD(); - _isAttacker = readD(); - _isJoining = readD(); + _castleId = packet.readD(); + _isAttacker = packet.readD(); + _isJoining = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestLinkHtml.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestLinkHtml.java index edd65f5bce..22ea0174b7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestLinkHtml.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestLinkHtml.java @@ -18,28 +18,32 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author zabbix Lets drink to code! */ -public class RequestLinkHtml extends GameClientPacket +public class RequestLinkHtml implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestLinkHtml.class.getName()); + private String _link; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _link = readS(); + _link = packet.readS(); + return true; } @Override - public void runImpl() + public void run(GameClient client) { - final PlayerInstance actor = getClient().getPlayer(); - if (actor == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } @@ -50,7 +54,7 @@ public class RequestLinkHtml extends GameClientPacket return; } - if (!actor.validateLink(_link)) + if (!player.validateLink(_link)) { return; } @@ -58,6 +62,6 @@ public class RequestLinkHtml extends GameClientPacket final NpcHtmlMessage msg = new NpcHtmlMessage(0); msg.setFile(_link); - sendPacket(msg); + player.sendPacket(msg); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestListPartyMatchingWaitingRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestListPartyMatchingWaitingRoom.java index 5927b28aae..d07e7ae1c0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestListPartyMatchingWaitingRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestListPartyMatchingWaitingRoom.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExListPartyMatchingWaitingRoom; /** * @author Gnacik */ -public class RequestListPartyMatchingWaitingRoom extends GameClientPacket +public class RequestListPartyMatchingWaitingRoom implements IClientIncomingPacket { private static int _page; private static int _minLevel; @@ -30,18 +32,19 @@ public class RequestListPartyMatchingWaitingRoom extends GameClientPacket private static int _mode; // 1 - waitlist 0 - room waitlist @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _page = readD(); - _minLevel = readD(); - _maxLevel = readD(); - _mode = readD(); + _page = packet.readD(); + _minLevel = packet.readD(); + _maxLevel = packet.readD(); + _mode = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMagicSkillUse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMagicSkillUse.java index 2650d300ab..36473bffb6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMagicSkillUse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMagicSkillUse.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.Skill.SkillType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; /** * @version $Revision: 1.7.2.1.2.3 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestMagicSkillUse extends GameClientPacket +public class RequestMagicSkillUse implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestMagicSkillUse.class.getName()); @@ -37,18 +39,19 @@ public class RequestMagicSkillUse extends GameClientPacket private boolean _shiftPressed; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _magicId = readD(); // Identifier of the used skill - _ctrlPressed = readD() != 0; // True if it's a ForceAttack : Ctrl pressed - _shiftPressed = readC() != 0; // True if Shift pressed + _magicId = packet.readD(); // Identifier of the used skill + _ctrlPressed = packet.readD() != 0; // True if it's a ForceAttack : Ctrl pressed + _shiftPressed = packet.readC() != 0; // True if Shift pressed + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // Get the current PlayerInstance of the player - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMakeMacro.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMakeMacro.java index aab48fa6a1..ba023870c4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMakeMacro.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMakeMacro.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Macro; import org.l2jmobius.gameserver.model.Macro.MacroCmd; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestMakeMacro extends GameClientPacket +public class RequestMakeMacro implements IClientIncomingPacket { private Macro _macro; private int _commandsLength = 0; @@ -31,17 +33,17 @@ public class RequestMakeMacro extends GameClientPacket * packet type id 0xc1 sample c1 d // id S // macro name S // unknown desc S // unknown acronym c // icon c // count c // entry c // type d // skill id c // shortcut id S // command name format: cdSSScc (ccdcS) */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - final int id = readD(); - final String name = readS(); - final String desc = readS(); - final String acronym = readS(); - final int icon = readC(); - int count = readC(); + final int id = packet.readD(); + final String name = packet.readS(); + final String desc = packet.readS(); + final String acronym = packet.readS(); + final int icon = packet.readC(); + int count = packet.readC(); if (count < 0) { - return; + return false; } if (count > MAX_MACRO_LENGTH) { @@ -51,28 +53,30 @@ public class RequestMakeMacro extends GameClientPacket final MacroCmd[] commands = new MacroCmd[count]; for (int i = 0; i < count; i++) { - final int entry = readC(); - final int type = readC(); // 1 = skill, 3 = action, 4 = shortcut - final int d1 = readD(); // skill or page number for shortcuts - final int d2 = readC(); - final String command = readS(); + final int entry = packet.readC(); + final int type = packet.readC(); // 1 = skill, 3 = action, 4 = shortcut + final int d1 = packet.readD(); // skill or page number for shortcuts + final int d2 = packet.readC(); + final String command = packet.readS(); _commandsLength += command.length() + 1; commands[i] = new MacroCmd(entry, type, d1, d2, command); } _macro = new Macro(id, icon, name, desc, acronym, commands); + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } // Macro exploit fix - if (!getClient().getFloodProtectors().getMacro().tryPerformAction("make macro")) + if (!client.getFloodProtectors().getMacro().tryPerformAction("make macro")) { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestManorList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestManorList.java index e82e797016..6ac4d6a0b3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestManorList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestManorList.java @@ -19,24 +19,27 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExSendManorList; /** * Format: ch c (id) 0xD0 h (subid) 0x08 * @author l3x */ -public class RequestManorList extends GameClientPacket +public class RequestManorList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java index eada49c7db..fe7d4836c4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java @@ -16,32 +16,35 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.xml.BoatData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.type.WeaponType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -public class RequestMoveToLocationInVehicle extends GameClientPacket +public class RequestMoveToLocationInVehicle implements IClientIncomingPacket { private int _boatId; private Location _targetPos; private Location _originPos; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _boatId = readD(); // objectId of boat - _targetPos = new Location(readD(), readD(), readD()); - _originPos = new Location(readD(), readD(), readD()); + _boatId = packet.readD(); // objectId of boat + _targetPos = new Location(packet.readD(), packet.readD(), packet.readD()); + _originPos = new Location(packet.readD(), packet.readD(), packet.readD()); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadMatchList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadMatchList.java index 010f078ce0..8c15c6eee4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadMatchList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadMatchList.java @@ -16,29 +16,32 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; +import org.l2jmobius.gameserver.network.GameClient; /** * format ch c: (id) 0xD0 h: (subid) 0x13 * @author -Wooden- */ -public class RequestOlympiadMatchList extends GameClientPacket +public class RequestOlympiadMatchList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger packet + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } + if (player.inObserverMode()) { Olympiad.sendMatchList(player); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadObserverEnd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadObserverEnd.java index dd262ac0cf..75a0d00abe 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadObserverEnd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOlympiadObserverEnd.java @@ -16,24 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; /** * format ch c: (id) 0xD0 h: (subid) 0x12 * @author -Wooden- */ -public class RequestOlympiadObserverEnd extends GameClientPacket +public class RequestOlympiadObserverEnd implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustFromPartyRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustFromPartyRoom.java index 34d1a0fcf1..18525efee3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustFromPartyRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustFromPartyRoom.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExClosePartyRoom; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchList; @@ -30,20 +32,21 @@ import org.l2jmobius.gameserver.network.serverpackets.PartyMatchList; * format (ch) d * @author -Wooden- */ -public class RequestOustFromPartyRoom extends GameClientPacket +public class RequestOustFromPartyRoom implements IClientIncomingPacket { private int _charid; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _charid = readD(); + _charid = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPartyMember.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPartyMember.java index 4dbe208097..ddd7083b7f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPartyMember.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPartyMember.java @@ -16,22 +16,25 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestOustPartyMember extends GameClientPacket +public class RequestOustPartyMember implements IClientIncomingPacket { private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPledgeMember.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPledgeMember.java index 827c185d99..7d5ae5fa49 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPledgeMember.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestOustPledgeMember.java @@ -19,30 +19,33 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListDelete; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestOustPledgeMember extends GameClientPacket +public class RequestOustPledgeMember implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(RequestOustPledgeMember.class.getName()); private String _target; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _target = readS(); + _target = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPCCafeCouponUse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPCCafeCouponUse.java index ae3b96f3f9..4dc717e309 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPCCafeCouponUse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPCCafeCouponUse.java @@ -18,25 +18,28 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format: (ch) S * @author -Wooden- */ -public class RequestPCCafeCouponUse extends GameClientPacket +public class RequestPCCafeCouponUse implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPCCafeCouponUse.class.getName()); private String _str; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _str = readS(); + _str = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - // TODO LOGGER.info("C5: RequestPCCafeCouponUse: S: " + _str); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSend.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSend.java index 8a9f71d3dd..475083167e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSend.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSend.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; @@ -29,6 +30,7 @@ import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; import org.l2jmobius.gameserver.model.itemcontainer.PlayerFreight; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.EtcItemType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -38,7 +40,7 @@ import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; /** * @author -Wooden- */ -public class RequestPackageSend extends GameClientPacket +public class RequestPackageSend implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPackageSend.class.getName()); private final List _items = new ArrayList<>(); @@ -46,33 +48,35 @@ public class RequestPackageSend extends GameClientPacket private int _count; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectID = readD(); - _count = readD(); + _objectID = packet.readD(); + _count = packet.readD(); if ((_count < 0) || (_count > 500)) { _count = -1; - return; + return false; } for (int i = 0; i < _count; i++) { - final int id = readD(); // this is some id sent in PackageSendableList - final int count = readD(); + final int id = packet.readD(); // this is some id sent in PackageSendableList + final int count = packet.readD(); _items.add(new Item(id, count)); } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if ((_count == -1) || (_items == null)) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -98,7 +102,7 @@ public class RequestPackageSend extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("deposit")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("deposit")) { player.sendMessage("You depositing items too fast."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSendableItemList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSendableItemList.java index 8e4347e6d2..32898da858 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSendableItemList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPackageSendableItemList.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PackageSendableList; /** * Format: (c)d d: char object id (?) * @author -Wooden- */ -public class RequestPackageSendableItemList extends GameClientPacket +public class RequestPackageSendableItemList implements IClientIncomingPacket { private int _objectID; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectID = readD(); + _objectID = packet.readD(); + return true; } @Override - public void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -48,17 +51,13 @@ public class RequestPackageSendableItemList extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("deposit")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("deposit")) { player.sendMessage("You depositing items too fast."); return; } - /* - * PlayerInstance target = (PlayerInstance) World.getInstance().findObject(_objectID); if(target == null) return; - */ - final ItemInstance[] items = getClient().getPlayer().getInventory().getAvailableItems(true); - // build list... - sendPacket(new PackageSendableList(items, _objectID)); + final ItemInstance[] items = player.getInventory().getAvailableItems(true); + player.sendPacket(new PackageSendableList(items, _objectID, player.getAdena())); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchConfig.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchConfig.java index 4f6ddbe44e..d4c4f8ecf8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchConfig.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchConfig.java @@ -16,34 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchList; -public class RequestPartyMatchConfig extends GameClientPacket +public class RequestPartyMatchConfig implements IClientIncomingPacket { private int _auto; private int _loc; private int _level; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _auto = readD(); - _loc = readD(); - _level = readD(); + _auto = packet.readD(); + _loc = packet.readD(); + _level = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchDetail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchDetail.java index 0813c36b12..c97ee435b7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchDetail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchDetail.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExManagePartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; @@ -30,7 +32,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * @author Gnacik */ -public class RequestPartyMatchDetail extends GameClientPacket +public class RequestPartyMatchDetail implements IClientIncomingPacket { private int _roomid; @@ -42,21 +44,21 @@ public class RequestPartyMatchDetail extends GameClientPacket private int _unk3; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _roomid = readD(); - /* - * IF player click on Room all unk are 0 IF player click AutoJoin values are -1 1 1 - */ - _unk1 = readD(); - _unk2 = readD(); - _unk3 = readD(); + _roomid = packet.readD(); + // If player click on Room all unk are 0 + // If player click AutoJoin values are -1 1 1 + _unk1 = packet.readD(); + _unk2 = packet.readD(); + _unk3 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchList.java index 7cb237a803..8d969e8b0a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPartyMatchList.java @@ -18,10 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; @@ -29,7 +31,7 @@ import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; /** * author: Gnacik Packetformat Rev650 cdddddS */ -public class RequestPartyMatchList extends GameClientPacket +public class RequestPartyMatchList implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPartyMatchList.class.getName()); @@ -41,20 +43,21 @@ public class RequestPartyMatchList extends GameClientPacket private String _roomtitle; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _roomid = readD(); - _membersmax = readD(); - _minLevel = readD(); - _maxLevel = readD(); - _loot = readD(); - _roomtitle = readS(); + _roomid = packet.readD(); + _membersmax = packet.readD(); + _minLevel = packet.readD(); + _maxLevel = packet.readD(); + _loot = packet.readD(); + _roomtitle = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetGetItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetGetItem.java index f71f3d3ee7..412af6c9dd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetGetItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetGetItem.java @@ -16,43 +16,52 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -public class RequestPetGetItem extends GameClientPacket +public class RequestPetGetItem implements IClientIncomingPacket { private int _objectId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final World world = World.getInstance(); - final ItemInstance item = (ItemInstance) world.findObject(_objectId); - if ((item == null) || (getClient().getPlayer() == null)) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - if (getClient().getPlayer().getPet() instanceof SummonInstance) + if (player.getPet() instanceof SummonInstance) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } - final PetInstance pet = (PetInstance) getClient().getPlayer().getPet(); + final PetInstance pet = (PetInstance) player.getPet(); if ((pet == null) || pet.isDead() || pet.isOutOfControl()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + + final ItemInstance item = (ItemInstance) World.getInstance().findObject(_objectId); + if (item == null) + { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetUseItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetUseItem.java index 63340f5a6e..c9c4655b2b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetUseItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetUseItem.java @@ -18,38 +18,41 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.PetDataTable; import org.l2jmobius.gameserver.handler.IItemHandler; import org.l2jmobius.gameserver.handler.ItemHandler; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetInfo; import org.l2jmobius.gameserver.network.serverpackets.PetItemList; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestPetUseItem extends GameClientPacket +public class RequestPetUseItem implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPetUseItem.class.getName()); private int _objectId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getUseItem().tryPerformAction("pet use item")) + if (!client.getFloodProtectors().getUseItem().tryPerformAction("pet use item")) { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java index 1847eb96c5..1decbb0d66 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java @@ -17,9 +17,11 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -27,22 +29,23 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (c) Sd (S: content - d: type) * @author -Wooden-, TempyIncursion */ -public class RequestPetition extends GameClientPacket +public class RequestPetition implements IClientIncomingPacket { private String _content; private int _type; // 1 = on : 0 = off; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _content = readS(); - _type = readD(); + _content = packet.readS(); + _type = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java index 1e8623816a..c12c3515b7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java @@ -17,10 +17,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -29,19 +31,20 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (c) d * @author -Wooden-, TempyIncursion */ -public class RequestPetitionCancel extends GameClientPacket +public class RequestPetitionCancel implements IClientIncomingPacket { // private int _unknown; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // _unknown = readD(); This is pretty much a trigger packet. + // _unknown = packet.readD(); This is pretty much a trigger packet. + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeCrest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeCrest.java index caf272385c..4719fb2dc8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeCrest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeCrest.java @@ -16,21 +16,24 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeCrest; -public class RequestPledgeCrest extends GameClientPacket +public class RequestPledgeCrest implements IClientIncomingPacket { private int _crestId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _crestId = readD(); + _crestId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - sendPacket(new PledgeCrest(_crestId)); + client.sendPacket(new PledgeCrest(_crestId)); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeExtendedInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeExtendedInfo.java index 44058e5d98..e30f6f8adc 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeExtendedInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeExtendedInfo.java @@ -16,22 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * @author -Wooden- */ -public class RequestPledgeExtendedInfo extends GameClientPacket +public class RequestPledgeExtendedInfo implements IClientIncomingPacket { @SuppressWarnings("unused") private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeInfo.java index e760b36550..9a9992da66 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeInfo.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeInfo; -public class RequestPledgeInfo extends GameClientPacket +public class RequestPledgeInfo implements IClientIncomingPacket { private int clanId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - clanId = readD(); + clanId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final Clan clan = ClanTable.getInstance().getClan(clanId); if (player == null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberInfo.java index 4e46f8e64f..266e18cce8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberInfo.java @@ -16,34 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveMemberInfo; /** * Format: (ch) dS * @author -Wooden- */ -public class RequestPledgeMemberInfo extends GameClientPacket +public class RequestPledgeMemberInfo implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; private String _player; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unk1 = readD(); - _player = readS(); + _unk1 = packet.readD(); + _player = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // LOGGER.info("C5: RequestPledgeMemberInfo d:"+_unk1); // LOGGER.info("C5: RequestPledgeMemberInfo S:"+_player); - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberList.java index 246e0cac03..709ad251ad 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberList.java @@ -16,22 +16,24 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll; -public class RequestPledgeMemberList extends GameClientPacket +public class RequestPledgeMemberList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberPowerInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberPowerInfo.java index 30c9f56868..850c940116 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberPowerInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeMemberPowerInfo.java @@ -16,34 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeReceivePowerInfo; /** * Format: (ch) dS * @author -Wooden- */ -public class RequestPledgeMemberPowerInfo extends GameClientPacket +public class RequestPledgeMemberPowerInfo implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; private String _player; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unk1 = readD(); - _player = readS(); + _unk1 = packet.readD(); + _player = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // LOGGER.info("C5: RequestPledgeMemberPowerInfo d:"+_unk1); // LOGGER.info("C5: RequestPledgeMemberPowerInfo S:"+_player); - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePower.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePower.java index e114958b32..fbead2f94d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePower.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePower.java @@ -18,11 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ManagePledgePower; -public class RequestPledgePower extends GameClientPacket +public class RequestPledgePower implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(RequestPledgePower.class.getName()); @@ -31,24 +33,25 @@ public class RequestPledgePower extends GameClientPacket private int _privs; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _rank = readD(); - _action = readD(); + _rank = packet.readD(); + _action = packet.readD(); if (_action == 2) { - _privs = readD(); + _privs = packet.readD(); } else { _privs = 0; } + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -74,7 +77,7 @@ public class RequestPledgePower extends GameClientPacket } else { - player.sendPacket(new ManagePledgePower(getClient().getPlayer().getClan(), _action, _rank)); + player.sendPacket(new ManagePledgePower(player.getClan(), _action, _rank)); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePowerGradeList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePowerGradeList.java index a65b33bd37..df9777b11d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePowerGradeList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgePowerGradeList.java @@ -16,27 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan.RankPrivs; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgePowerGradeList; /** * Format: (ch) * @author -Wooden- */ -public class RequestPledgePowerGradeList extends GameClientPacket +public class RequestPledgePowerGradeList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final Clan clan = player.getClan(); if (clan != null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeReorganizeMember.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeReorganizeMember.java index 21568d5e04..957aa8370d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeReorganizeMember.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeReorganizeMember.java @@ -16,16 +16,18 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListUpdate; /** * Format: (ch) dSdS * @author -Wooden- */ -public class RequestPledgeReorganizeMember extends GameClientPacket +public class RequestPledgeReorganizeMember implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; @@ -36,18 +38,19 @@ public class RequestPledgeReorganizeMember extends GameClientPacket private String _unk2; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unk1 = readD(); - _memberName = readS(); - _newPledgeType = readD(); - _unk2 = readS(); + _unk1 = packet.readD(); + _memberName = packet.readS(); + _newPledgeType = packet.readD(); + _unk2 = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetAcademyMaster.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetAcademyMaster.java index 806bded246..71b5c49044 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetAcademyMaster.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetAcademyMaster.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; @@ -26,24 +28,25 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format: (ch) dSS * @author -Wooden- */ -public class RequestPledgeSetAcademyMaster extends GameClientPacket +public class RequestPledgeSetAcademyMaster implements IClientIncomingPacket { private String _currPlayerName; private int _set; // 1 set, 0 delete private String _targetPlayerName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _set = readD(); - _currPlayerName = readS(); - _targetPlayerName = readS(); + _set = packet.readD(); + _currPlayerName = packet.readS(); + _targetPlayerName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final Clan clan = player.getClan(); if (clan == null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetMemberPowerGrade.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetMemberPowerGrade.java index d701a6dc12..d5fb48801f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetMemberPowerGrade.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeSetMemberPowerGrade.java @@ -16,30 +16,33 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) Sd * @author -Wooden- */ -public class RequestPledgeSetMemberPowerGrade extends GameClientPacket +public class RequestPledgeSetMemberPowerGrade implements IClientIncomingPacket { private int _powerGrade; private String _member; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _member = readS(); - _powerGrade = readD(); + _member = packet.readS(); + _powerGrade = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeWarList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeWarList.java index fc70757d0e..28303b11c8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeWarList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPledgeWarList.java @@ -16,32 +16,35 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveWarList; /** * Format: (ch) dd * @author -Wooden- */ -public class RequestPledgeWarList extends GameClientPacket +public class RequestPledgeWarList implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; private int _tab; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unk1 = readD(); - _tab = readD(); + _unk1 = packet.readD(); + _tab = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // LOGGER.info("C5: RequestPledgeWarList d:"+_unk1); // LOGGER.info("C5: RequestPledgeWarList d:"+_tab); - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 561c8c034e..353aa5328d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.TradeList.TradeItem; @@ -26,12 +27,13 @@ import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class RequestPrivateStoreBuy extends GameClientPacket +public class RequestPrivateStoreBuy implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPrivateStoreBuy.class.getName()); @@ -40,13 +42,13 @@ public class RequestPrivateStoreBuy extends GameClientPacket private ItemRequest[] _items; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _storePlayerId = readD(); - _count = readD(); + _storePlayerId = packet.readD(); + _count = packet.readD(); // count*12 is the size of a for iteration of each item - if ((_count < 0) || ((_count * 12) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + if ((_count < 0) || ((_count * 12) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; } @@ -54,27 +56,29 @@ public class RequestPrivateStoreBuy extends GameClientPacket _items = new ItemRequest[_count]; for (int i = 0; i < _count; i++) { - final int objectId = readD(); - long count = readD(); + final int objectId = packet.readD(); + long count = packet.readD(); if (count > Integer.MAX_VALUE) { count = Integer.MAX_VALUE; } - final int price = readD(); + final int price = packet.readD(); _items[i] = new ItemRequest(objectId, (int) count, price); } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("privatestorebuy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("privatestorebuy")) { player.sendMessage("You buying items too fast."); return; @@ -118,23 +122,23 @@ public class RequestPrivateStoreBuy extends GameClientPacket { if ((ir.getCount() > Integer.MAX_VALUE) || (ir.getCount() < 0)) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried an overflow exploit, ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried an overflow exploit, ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } final TradeItem sellersItem = storeList.getItem(ir.getObjectId()); if (sellersItem == null) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried to buy an item not sold in a private store (buy), ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried to buy an item not sold in a private store (buy), ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } if (ir.getPrice() != sellersItem.getPrice()) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried to change the seller's price in a private store (buy), ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried to change the seller's price in a private store (buy), ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } @@ -156,8 +160,8 @@ public class RequestPrivateStoreBuy extends GameClientPacket // FIXME: this check should be (and most probably is) done in the TradeList mechanics if ((priceTotal < 0) || (priceTotal > Integer.MAX_VALUE)) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried an overflow exploit, ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried an overflow exploit, ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } @@ -165,28 +169,28 @@ public class RequestPrivateStoreBuy extends GameClientPacket { if (player.getItemCount(Config.SELL_ITEM, -1) < priceTotal) { - sendPacket(SystemMessage.sendString("You do not have needed items to buy")); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(SystemMessage.sendString("You do not have needed items to buy")); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } } else if (player.getAdena() < priceTotal) { player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ADENA); - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if ((storePlayer.getPrivateStoreType() == PlayerInstance.STORE_PRIVATE_PACKAGE_SELL) && (storeList.getItemCount() > _count)) { - final String msgErr = "[RequestPrivateStoreBuy] player " + getClient().getPlayer().getName() + " tried to buy less items then sold by package-sell, ban this player for bot-usage!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreBuy] player " + player.getName() + " tried to buy less items then sold by package-sell, ban this player for bot-usage!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); return; } if (!storeList.PrivateStoreBuy(player, _items, (int) priceTotal)) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); // Punishment e LOGGER in audit Util.handleIllegalPlayerAction(storePlayer, "PrivateStore buy has failed due to invalid list or request. Player: " + player.getName(), Config.DEFAULT_PUNISH); LOGGER.warning("PrivateStore buy has failed due to invalid list or request. Player: " + player.getName() + ", Private store of: " + storePlayer.getName()); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageBuy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageBuy.java index 175b4cf421..9105668460 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageBuy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageBuy.java @@ -16,29 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreManageListBuy; import org.l2jmobius.gameserver.util.Util; -public class RequestPrivateStoreManageBuy extends GameClientPacket +public class RequestPrivateStoreManageBuy implements IClientIncomingPacket { - private static final Logger LOGGER = Logger.getLogger(RequestPrivateStoreManageBuy.class.getName()); - @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -70,20 +69,20 @@ public class RequestPrivateStoreManageBuy extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (player.isInOlympiadMode()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open buy/sell when you are sitting if (player.isSitting() && (player.getPrivateStoreType() == 0)) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageSell.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageSell.java index 7faa9cf5a1..3fd0583299 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageSell.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreManageSell.java @@ -16,29 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreManageListSell; import org.l2jmobius.gameserver.util.Util; -public class RequestPrivateStoreManageSell extends GameClientPacket +public class RequestPrivateStoreManageSell implements IClientIncomingPacket { - private static final Logger LOGGER = Logger.getLogger(RequestPrivateStoreManageSell.class.getName()); - @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -70,20 +69,20 @@ public class RequestPrivateStoreManageSell extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } if (player.isInOlympiadMode()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } // Like L2OFF - You can't open buy/sell when you are sitting if (player.isSitting() && (player.getPrivateStoreType() == 0)) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitBuy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitBuy.java index 758840c4eb..ccf0b158b1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitBuy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitBuy.java @@ -16,20 +16,22 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestPrivateStoreQuitBuy extends GameClientPacket +public class RequestPrivateStoreQuitBuy implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitSell.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitSell.java index b6d4a14e42..235425dff0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitSell.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreQuitSell.java @@ -16,20 +16,22 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestPrivateStoreQuitSell extends GameClientPacket +public class RequestPrivateStoreQuitSell implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 528172194f..cd17e0c9b4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class RequestPrivateStoreSell extends GameClientPacket +public class RequestPrivateStoreSell implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestPrivateStoreSell.class.getName()); @@ -38,12 +40,12 @@ public class RequestPrivateStoreSell extends GameClientPacket private ItemRequest[] _items; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _storePlayerId = readD(); - _count = readD(); + _storePlayerId = packet.readD(); + _count = packet.readD(); // count*20 is the size of a for iteration of each item - if ((_count < 0) || ((_count * 20) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + if ((_count < 0) || ((_count * 20) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; } @@ -51,18 +53,18 @@ public class RequestPrivateStoreSell extends GameClientPacket long priceTotal = 0; for (int i = 0; i < _count; i++) { - final int objectId = readD(); - final int itemId = readD(); - final int enchant = readH(); - readH(); // TODO analyse this - final long count = readD(); - final int price = readD(); + final int objectId = packet.readD(); + final int itemId = packet.readD(); + final int enchant = packet.readH(); + packet.readH(); // TODO analyse this + final long count = packet.readD(); + final int price = packet.readD(); if ((count > Integer.MAX_VALUE) || (count < 0)) { - final String msgErr = "[RequestPrivateStoreSell] player " + getClient().getPlayer().getName() + " tried an overflow exploit, ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreSell] player " + client.getPlayer().getName() + " tried an overflow exploit, ban this player!"; + Util.handleIllegalPlayerAction(client.getPlayer(), msgErr, Config.DEFAULT_PUNISH); _count = 0; - return; + return false; } _items[i] = new ItemRequest(objectId, itemId, enchant, (int) count, price); priceTotal += price * count; @@ -70,25 +72,27 @@ public class RequestPrivateStoreSell extends GameClientPacket if ((priceTotal < 0) || (priceTotal > Integer.MAX_VALUE)) { - final String msgErr = "[RequestPrivateStoreSell] player " + getClient().getPlayer().getName() + " tried an overflow exploit, ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[RequestPrivateStoreSell] player " + client.getPlayer().getName() + " tried an overflow exploit, ban this player!"; + Util.handleIllegalPlayerAction(client.getPlayer(), msgErr, Config.DEFAULT_PUNISH); _count = 0; - return; + return false; } _price = (int) priceTotal; + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("privatestoresell")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("privatestoresell")) { player.sendMessage("You selling items too fast"); return; @@ -137,8 +141,8 @@ public class RequestPrivateStoreSell extends GameClientPacket { if (storePlayer.getItemCount(Config.SELL_ITEM, -1) < _price) { - sendPacket(ActionFailed.STATIC_PACKET); - sendPacket(SystemMessage.sendString("You have not enough items to buy, canceling PrivateBuy")); + player.sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(SystemMessage.sendString("You have not enough items to buy, canceling PrivateBuy")); storePlayer.setPrivateStoreType(PlayerInstance.STORE_PRIVATE_NONE); storePlayer.broadcastUserInfo(); return; @@ -146,7 +150,7 @@ public class RequestPrivateStoreSell extends GameClientPacket } else if (storePlayer.getAdena() < _price) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); storePlayer.sendMessage("You have not enough adena, canceling PrivateBuy."); storePlayer.setPrivateStoreType(PlayerInstance.STORE_PRIVATE_NONE); storePlayer.broadcastUserInfo(); @@ -155,8 +159,8 @@ public class RequestPrivateStoreSell extends GameClientPacket if (!storeList.PrivateStoreSell(player, _items, _price)) { - sendPacket(ActionFailed.STATIC_PACKET); - Util.handleIllegalPlayerAction(getClient().getPlayer(), "Player " + getClient().getPlayer().getName() + " provided invalid list or request! ", Config.DEFAULT_PUNISH); + player.sendPacket(ActionFailed.STATIC_PACKET); + Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " provided invalid list or request! ", Config.DEFAULT_PUNISH); LOGGER.warning("PrivateStore sell has failed due to invalid list or request. Player: " + player.getName() + ", Private store of: " + storePlayer.getName()); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java index 03d4322799..c77d5e42c1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestProcureCropList.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; @@ -28,6 +29,7 @@ import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -39,44 +41,44 @@ import org.l2jmobius.gameserver.util.Util; * Format: (ch) d [dddd] d: size [ d obj id d item id d manor id d count ] * @author l3x */ -public class RequestProcureCropList extends GameClientPacket +public class RequestProcureCropList implements IClientIncomingPacket { private int _size; private int[] _items; // count*4 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _size = readD(); - if (((_size * 16) > _buf.remaining()) || (_size > 500) || (_size < 1)) + _size = packet.readD(); + if (((_size * 16) > packet.getReadableBytes()) || (_size > 500) || (_size < 1)) { _size = 0; - return; + return false; } _items = new int[_size * 4]; for (int i = 0; i < _size; i++) { - final int objId = readD(); + final int objId = packet.readD(); _items[(i * 4) + 0] = objId; - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 4) + 1] = itemId; - final int manorId = readD(); + final int manorId = packet.readD(); _items[(i * 4) + 2] = manorId; - long count = readD(); + long count = packet.readD(); if (count > Integer.MAX_VALUE) { count = Integer.MAX_VALUE; } - _items[(i * 4) + 3] = (int) count; } + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -95,7 +97,7 @@ public class RequestProcureCropList extends GameClientPacket if (_size < 1) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -123,7 +125,7 @@ public class RequestProcureCropList extends GameClientPacket if (count > Integer.MAX_VALUE) { Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " items at the same time.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java index 1183402ef5..fa6ec3a7d4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestAbort.java @@ -17,26 +17,29 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.QuestList; -public class RequestQuestAbort extends GameClientPacket +public class RequestQuestAbort implements IClientIncomingPacket { private int _questId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _questId = readD(); + _questId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestList.java index 17ffdec6b2..aa6070f296 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestQuestList.java @@ -16,20 +16,23 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.QuestList; -public class RequestQuestList extends GameClientPacket +public class RequestQuestList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookDestroy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookDestroy.java index cf88c9d044..87d63aa6d3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookDestroy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookDestroy.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.RecipeBookItemList; -public class RequestRecipeBookDestroy extends GameClientPacket +public class RequestRecipeBookDestroy implements IClientIncomingPacket { private int _recipeID; @@ -29,18 +31,19 @@ public class RequestRecipeBookDestroy extends GameClientPacket * Unknown Packet:ad 0000: ad 02 00 00 00 */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _recipeID = readD(); + _recipeID = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player != null) { - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("RecipeDestroy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("RecipeDestroy")) { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookOpen.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookOpen.java index d2da4bcb21..cfe76a8cf6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookOpen.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeBookOpen.java @@ -16,32 +16,37 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.RecipeController; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestRecipeBookOpen extends GameClientPacket +public class RequestRecipeBookOpen implements IClientIncomingPacket { private boolean _isDwarvenCraft; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _isDwarvenCraft = readD() == 0; + _isDwarvenCraft = packet.readD() == 0; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - if (getClient().getPlayer() == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - if (getClient().getPlayer().getPrivateStoreType() != 0) + if (player.getPrivateStoreType() != 0) { - getClient().getPlayer().sendMessage("Cannot use recipe book while trading."); + player.sendMessage("Cannot use recipe book while trading."); return; } - RecipeController.getInstance().requestBookOpen(getClient().getPlayer(), _isDwarvenCraft); + RecipeController.getInstance().requestBookOpen(player, _isDwarvenCraft); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeInfo.java index 6e91931963..615117380f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeInfo.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.RecipeItemMakeInfo; -public class RequestRecipeItemMakeInfo extends GameClientPacket +public class RequestRecipeItemMakeInfo implements IClientIncomingPacket { private int _id; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); + _id = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeSelf.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeSelf.java index 074c33faaa..2a5199adec 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeSelf.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeItemMakeSelf.java @@ -16,29 +16,32 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestRecipeItemMakeSelf extends GameClientPacket +public class RequestRecipeItemMakeSelf implements IClientIncomingPacket { private int _id; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); + _id = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getManufacture().tryPerformAction("RecipeMakeSelf")) + if (!client.getFloodProtectors().getManufacture().tryPerformAction("RecipeMakeSelf")) { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopListSet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopListSet.java index 229ce0968b..82c04eb86c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopListSet.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopListSet.java @@ -17,24 +17,26 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.ManufactureList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.RecipeShopMsg; -public class RequestRecipeShopListSet extends GameClientPacket +public class RequestRecipeShopListSet implements IClientIncomingPacket { private int _count; private int[] _items; // count*2 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _count = readD(); - if ((_count < 0) || ((_count * 8) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _count = packet.readD(); + if ((_count < 0) || ((_count * 8) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; } @@ -42,17 +44,19 @@ public class RequestRecipeShopListSet extends GameClientPacket _items = new int[_count * 2]; for (int x = 0; x < _count; x++) { - final int recipeID = readD(); + final int recipeID = packet.readD(); _items[(x * 2) + 0] = recipeID; - final int cost = readD(); + final int cost = packet.readD(); _items[(x * 2) + 1] = cost; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeInfo.java index a27de1a64c..ae80060e12 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeInfo.java @@ -16,26 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.RecipeShopItemInfo; -public class RequestRecipeShopMakeInfo extends GameClientPacket +public class RequestRecipeShopMakeInfo implements IClientIncomingPacket { private int _playerObjectId; private int _recipeId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _playerObjectId = readD(); - _recipeId = readD(); + _playerObjectId = packet.readD(); + _recipeId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeItem.java index d412d72324..637c8ae57d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMakeItem.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.util.Util; -public class RequestRecipeShopMakeItem extends GameClientPacket +public class RequestRecipeShopMakeItem implements IClientIncomingPacket { private int _id; private int _recipeId; @@ -30,23 +32,24 @@ public class RequestRecipeShopMakeItem extends GameClientPacket private int _unknow; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _id = readD(); - _recipeId = readD(); - _unknow = readD(); + _id = packet.readD(); + _recipeId = packet.readD(); + _unknow = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getManufacture().tryPerformAction("RecipeShopMake")) + if (!client.getFloodProtectors().getManufacture().tryPerformAction("RecipeShopMake")) { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageList.java index eb56592b43..a79737b1ca 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageList.java @@ -16,23 +16,25 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ManufactureList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.RecipeShopManageList; -public class RequestRecipeShopManageList extends GameClientPacket +public class RequestRecipeShopManageList implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -41,7 +43,7 @@ public class RequestRecipeShopManageList extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManagePrev.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManagePrev.java index 31c49c789b..b2a2618d0e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManagePrev.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManagePrev.java @@ -16,22 +16,24 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.RecipeShopSellList; -public class RequestRecipeShopManagePrev extends GameClientPacket +public class RequestRecipeShopManagePrev implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (player.getTarget() == null)) { return; @@ -40,7 +42,7 @@ public class RequestRecipeShopManagePrev extends GameClientPacket // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death) if (player.isAlikeDead()) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageQuit.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageQuit.java index 39d7a3e354..6c9deb2795 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageQuit.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopManageQuit.java @@ -16,20 +16,22 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestRecipeShopManageQuit extends GameClientPacket +public class RequestRecipeShopManageQuit implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMessageSet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMessageSet.java index 1b88e5c289..9fe2e07bb2 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMessageSet.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecipeShopMessageSet.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestRecipeShopMessageSet extends GameClientPacket +public class RequestRecipeShopMessageSet implements IClientIncomingPacket { private static final int MAX_MSG_LENGTH = 29; private String _name; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _name = readS(); + _name = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecordInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecordInfo.java index 5cb20ba4a0..fe11ee9b85 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecordInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRecordInfo.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; @@ -26,6 +27,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.CharInfo; import org.l2jmobius.gameserver.network.serverpackets.DoorInfo; import org.l2jmobius.gameserver.network.serverpackets.DoorStatusUpdate; @@ -39,18 +41,18 @@ import org.l2jmobius.gameserver.network.serverpackets.StaticObject; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.VehicleInfo; -public class RequestRecordInfo extends GameClientPacket +public class RequestRecordInfo implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -79,7 +81,7 @@ public class RequestRecordInfo extends GameClientPacket { player.sendPacket(new DoorInfo((DoorInstance) object, false)); } - player.sendPacket(new DoorStatusUpdate((DoorInstance) object)); + player.sendPacket(new DoorStatusUpdate((DoorInstance) object, player)); } else if (object instanceof BoatInstance) { @@ -124,7 +126,7 @@ public class RequestRecordInfo extends GameClientPacket if (otherPlayer.isInBoat()) { otherPlayer.getPosition().setWorldPosition(otherPlayer.getBoat().getLocation()); - player.sendPacket(new CharInfo(otherPlayer)); + player.sendPacket(new CharInfo(otherPlayer, player.isGM() && otherPlayer.getAppearance().isInvisible())); final int relation = otherPlayer.getRelation(player); if ((otherPlayer.getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (otherPlayer.getKnownList().getKnownRelations().get(player.getObjectId()) != relation)) { @@ -134,7 +136,7 @@ public class RequestRecordInfo extends GameClientPacket } else { - player.sendPacket(new CharInfo(otherPlayer)); + player.sendPacket(new CharInfo(otherPlayer, player.isGM() && otherPlayer.getAppearance().isInvisible())); final int relation = otherPlayer.getRelation(player); if ((otherPlayer.getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (otherPlayer.getKnownList().getKnownRelations().get(player.getObjectId()) != relation)) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRefine.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRefine.java index 0a096d12d6..cd755ee4e6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRefine.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRefine.java @@ -17,11 +17,13 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AugmentationData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExVariationResult; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -32,7 +34,7 @@ import org.l2jmobius.gameserver.util.Util; * Format:(ch) dddd * @author -Wooden- */ -public class RequestRefine extends GameClientPacket +public class RequestRefine implements IClientIncomingPacket { private int _targetItemObjId; private int _refinerItemObjId; @@ -40,18 +42,19 @@ public class RequestRefine extends GameClientPacket private int _gemstoneCount; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetItemObjId = readD(); - _refinerItemObjId = readD(); - _gemstoneItemObjId = readD(); - _gemstoneCount = readD(); + _targetItemObjId = packet.readD(); + _refinerItemObjId = packet.readD(); + _gemstoneItemObjId = packet.readD(); + _gemstoneCount = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRefineCancel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRefineCancel.java index 54748fcae7..646a636869 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRefineCancel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRefineCancel.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExVariationCancelResult; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -29,20 +31,21 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; * Format(ch) d * @author -Wooden- */ -public class RequestRefineCancel extends GameClientPacket +public class RequestRefineCancel implements IClientIncomingPacket { private int _targetItemObjId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _targetItemObjId = readD(); + _targetItemObjId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); final ItemInstance targetItem = (ItemInstance) World.getInstance().findObject(_targetItemObjId); if (player == null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStartPledgeWar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStartPledgeWar.java index 476a487978..c23a07f6b5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStartPledgeWar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStartPledgeWar.java @@ -16,26 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestReplyStartPledgeWar extends GameClientPacket +public class RequestReplyStartPledgeWar implements IClientIncomingPacket { private int _answer; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { @SuppressWarnings("unused") - final String reqName = readS(); - _answer = readD(); + final String reqName = packet.readS(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStopPledgeWar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStopPledgeWar.java index 731bf160ab..a939746c30 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStopPledgeWar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplyStopPledgeWar.java @@ -16,26 +16,29 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestReplyStopPledgeWar extends GameClientPacket +public class RequestReplyStopPledgeWar implements IClientIncomingPacket { private int _answer; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { @SuppressWarnings("unused") - final String reqName = readS(); - _answer = readD(); + final String reqName = packet.readS(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplySurrenderPledgeWar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplySurrenderPledgeWar.java index 5340c0629e..2576ee18f4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplySurrenderPledgeWar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestReplySurrenderPledgeWar.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestReplySurrenderPledgeWar extends GameClientPacket +public class RequestReplySurrenderPledgeWar implements IClientIncomingPacket { private int _answer; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { @SuppressWarnings("unused") - final String reqName = readS(); - _answer = readD(); + final String reqName = packet.readS(); + _answer = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2865b6a907..e0fa50cb36 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -35,20 +36,20 @@ import org.l2jmobius.gameserver.network.serverpackets.RestartResponse; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; -public class RequestRestart extends GameClientPacket +public class RequestRestart implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestRestart.class.getName()); @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -57,14 +58,14 @@ public class RequestRestart extends GameClientPacket // Check if player is enchanting if (player.getActiveEnchantItem() != null) { - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } if (player.isInsideZone(ZoneId.NO_RESTART)) { player.sendPacket(SystemMessageId.YOU_MAY_NOT_RESTART_IN_THIS_LOCATION); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -72,7 +73,7 @@ public class RequestRestart extends GameClientPacket if (player.isLocked()) { LOGGER.warning("Player " + player.getName() + " tried to restart during class change."); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -80,7 +81,7 @@ public class RequestRestart extends GameClientPacket if (player.getPrivateStoreType() != 0) { player.sendMessage("Cannot restart while trading."); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -88,7 +89,7 @@ public class RequestRestart extends GameClientPacket if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(player) && (!player.isGM() || !Config.GM_RESTART_FIGHTING)) { player.sendPacket(SystemMessageId.YOU_CANNOT_RESTART_WHILE_IN_COMBAT); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -96,7 +97,7 @@ public class RequestRestart extends GameClientPacket if ((player.getOlympiadGameId() > 0) || player.isInOlympiadMode() || Olympiad.getInstance().isRegistered(player)) { player.sendMessage("You can't restart while in Olympiad."); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -109,7 +110,7 @@ public class RequestRestart extends GameClientPacket { player.sendPacket(SystemMessage.sendString("You cannot restart while you are a participant in a festival.")); player.sendPacket(ActionFailed.STATIC_PACKET); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -124,7 +125,7 @@ public class RequestRestart extends GameClientPacket if (player._inEventCTF || player._inEventDM || player._inEventTvT || player._inEventVIP) { player.sendMessage("You can't restart during Event."); - sendPacket(RestartResponse.valueOf(false)); + player.sendPacket(RestartResponse.valueOf(false)); return; } @@ -168,8 +169,6 @@ public class RequestRestart extends GameClientPacket player.decreaseBoxes(); } - final GameClient client = getClient(); - // detach the client from the char so that the connection isnt closed in the deleteMe player.setClient(null); @@ -177,17 +176,17 @@ public class RequestRestart extends GameClientPacket player.deleteMe(); player.store(); - getClient().setPlayer(null); + client.setPlayer(null); // return the client to the authed status - client.setState(ConnectionState.AUTHENTICATED); + client.setConnectionState(ConnectionState.AUTHENTICATED); // Restart true - sendPacket(RestartResponse.valueOf(true)); + client.sendPacket(RestartResponse.valueOf(true)); // send char list final CharSelectInfo cl = new CharSelectInfo(client.getAccountName(), client.getSessionId().playOkID1); - sendPacket(cl); + client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 61bd9ee56c..2deb0ba167 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -16,10 +16,9 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import java.util.logging.Logger; - import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.enums.TeleportWhereType; import org.l2jmobius.gameserver.instancemanager.CastleManager; @@ -34,6 +33,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.residences.ClanHall; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.Revive; import org.l2jmobius.gameserver.util.IllegalPlayerAction; import org.l2jmobius.gameserver.util.Util; @@ -41,23 +41,22 @@ import org.l2jmobius.gameserver.util.Util; /** * @version $Revision: 1.7.2.3.2.6 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestRestartPoint extends GameClientPacket +public class RequestRestartPoint implements IClientIncomingPacket { - protected static final Logger LOGGER = Logger.getLogger(RequestRestartPoint.class.getName()); - protected int _requestedPointType; protected boolean _continuation; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _requestedPointType = readD(); + _requestedPointType = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSSQStatus.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSSQStatus.java index e1998813e4..c9aa40abf1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSSQStatus.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSSQStatus.java @@ -16,28 +16,31 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SSQStatus; /** * Seven Signs Record Update Request packet type id 0xc7 format: cc * @author Tempy */ -public class RequestSSQStatus extends GameClientPacket +public class RequestSSQStatus implements IClientIncomingPacket { private int _page; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _page = readC(); + _page = packet.readC(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSellItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSellItem.java index 6df3957fdf..b4dda744e6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSellItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSellItem.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.cache.HtmCache; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance; @@ -24,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.instance.MerchantInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ItemList; @@ -31,7 +33,7 @@ import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestSellItem extends GameClientPacket +public class RequestSellItem implements IClientIncomingPacket { private int _listId; private int _count; @@ -41,43 +43,45 @@ public class RequestSellItem extends GameClientPacket * packet type id 0x1e sample 1e 00 00 00 00 // list id 02 00 00 00 // number of items 71 72 00 10 // object id ea 05 00 00 // item id 01 00 00 00 // item count 76 4b 00 10 // object id 2e 0a 00 00 // item id 01 00 00 00 // item count format: cdd (ddd) */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _listId = readD(); - _count = readD(); - if ((_count <= 0) || ((_count * 12) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _listId = packet.readD(); + _count = packet.readD(); + if ((_count <= 0) || ((_count * 12) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; - return; + return false; } _items = new int[_count * 3]; for (int i = 0; i < _count; i++) { - final int objectId = readD(); + final int objectId = packet.readD(); _items[(i * 3) + 0] = objectId; - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 3) + 1] = itemId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt <= 0)) { _count = 0; - return; + return false; } _items[(i * 3) + 2] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("buy")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("buy")) { player.sendMessage("You buying too fast."); return; @@ -116,7 +120,7 @@ public class RequestSellItem extends GameClientPacket if ((_listId > 1000000) && (merchant.getTemplate().getNpcId() != (_listId - 1000000))) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } @@ -131,7 +135,7 @@ public class RequestSellItem extends GameClientPacket if ((count <= 0) || (count > Integer.MAX_VALUE)) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " items at the same time.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } @@ -150,7 +154,7 @@ public class RequestSellItem extends GameClientPacket if (((Integer.MAX_VALUE / count) < price) || (totalPrice > Integer.MAX_VALUE)) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + MAX_ADENA + " adena worth of goods.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } @@ -158,7 +162,7 @@ public class RequestSellItem extends GameClientPacket if (totalPrice <= 0) { // Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + Integer.MAX_VALUE + " adena worth of goods.", Config.DEFAULT_PUNISH); - sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED)); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSendFriendMsg.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSendFriendMsg.java index 0a4445606c..3190ba9e60 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSendFriendMsg.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSendFriendMsg.java @@ -20,15 +20,17 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.FriendRecvMsg; /** * Recieve Private (Friend) Message - 0xCC Format: c SS S: Message S: Receiving Player */ -public class RequestSendFriendMsg extends GameClientPacket +public class RequestSendFriendMsg implements IClientIncomingPacket { private static java.util.logging.Logger _logChat = java.util.logging.Logger.getLogger("chat"); @@ -36,16 +38,18 @@ public class RequestSendFriendMsg extends GameClientPacket private String _reciever; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _message = readS(); - _reciever = readS(); + _message = packet.readS(); + _reciever = packet.readS(); + return true; + } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetAllyCrest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetAllyCrest.java index cef33457c0..36728e4d1e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetAllyCrest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetAllyCrest.java @@ -22,13 +22,15 @@ import java.sql.SQLException; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.cache.CrestCache; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.instancemanager.IdManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestSetAllyCrest extends GameClientPacket +public class RequestSetAllyCrest implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(RequestSetAllyCrest.class.getName()); @@ -36,22 +38,22 @@ public class RequestSetAllyCrest extends GameClientPacket private byte[] _data; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _length = readD(); + _length = packet.readD(); if ((_length < 0) || (_length > 192)) { - return; + return false; } - _data = new byte[_length]; - readB(_data); + _data = packet.readB(_length); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetCrop.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetCrop.java index 6e09498c49..1d7160d64f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetCrop.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetCrop.java @@ -20,47 +20,51 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) dd [dddc] d - manor id d - size [ d - crop id d - sales d - price c - reward type ] * @author l3x */ -public class RequestSetCrop extends GameClientPacket +public class RequestSetCrop implements IClientIncomingPacket { private int _size; private int _manorId; private int[] _items; // _size*4 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _manorId = readD(); - _size = readD(); - if (((_size * 13) > _buf.remaining()) || (_size > 500) || (_size < 1)) + _manorId = packet.readD(); + _size = packet.readD(); + if (((_size * 13) > packet.getReadableBytes()) || (_size > 500) || (_size < 1)) { _size = 0; - return; + return false; } _items = new int[_size * 4]; for (int i = 0; i < _size; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 4) + 0] = itemId; - final int sales = readD(); + final int sales = packet.readD(); _items[(i * 4) + 1] = sales; - final int price = readD(); + final int price = packet.readD(); _items[(i * 4) + 2] = price; - final int type = readC(); + final int type = packet.readC(); _items[(i * 4) + 3] = type; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_size < 1) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetPledgeCrest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetPledgeCrest.java index 40231519ff..8a26c11b4b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetPledgeCrest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetPledgeCrest.java @@ -22,14 +22,16 @@ import java.sql.SQLException; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.cache.CrestCache; import org.l2jmobius.gameserver.instancemanager.IdManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; -public class RequestSetPledgeCrest extends GameClientPacket +public class RequestSetPledgeCrest implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(RequestSetPledgeCrest.class.getName()); @@ -37,22 +39,22 @@ public class RequestSetPledgeCrest extends GameClientPacket private byte[] _data; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _length = readD(); + _length = packet.readD(); if ((_length < 0) || (_length > 256)) { - return; + return false; } - _data = new byte[_length]; - readB(_data); + _data = packet.readB(_length); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetSeed.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetSeed.java index 40847b8f46..32c2935369 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetSeed.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSetSeed.java @@ -20,45 +20,49 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.SeedProduction; +import org.l2jmobius.gameserver.network.GameClient; /** * Format: (ch) dd [ddd] d - manor id d - size [ d - seed id d - sales d - price ] * @author l3x */ -public class RequestSetSeed extends GameClientPacket +public class RequestSetSeed implements IClientIncomingPacket { private int _size; private int _manorId; private int[] _items; // _size*3 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _manorId = readD(); - _size = readD(); - if (((_size * 12) > _buf.remaining()) || (_size > 500) || (_size < 1)) + _manorId = packet.readD(); + _size = packet.readD(); + if (((_size * 12) > packet.getReadableBytes()) || (_size > 500) || (_size < 1)) { _size = 0; - return; + return false; } _items = new int[_size * 3]; for (int i = 0; i < _size; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[(i * 3) + 0] = itemId; - final int sales = readD(); + final int sales = packet.readD(); _items[(i * 3) + 1] = sales; - final int price = readD(); + final int price = packet.readD(); _items[(i * 3) + 2] = price; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_size < 1) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutDel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutDel.java index a6481ae4b7..38cae8f5ff 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutDel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutDel.java @@ -16,25 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestShortCutDel extends GameClientPacket +public class RequestShortCutDel implements IClientIncomingPacket { private int _slot; private int _page; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - final int id = readD(); + final int id = packet.readD(); _slot = id % 12; _page = id / 12; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java index 7f97b456fe..8ac772aa12 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShortCutReg.java @@ -16,11 +16,13 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.ShortCut; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShortCutRegister; -public class RequestShortCutReg extends GameClientPacket +public class RequestShortCutReg implements IClientIncomingPacket { private int _type; private int _id; @@ -30,20 +32,21 @@ public class RequestShortCutReg extends GameClientPacket private int _unk; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _type = readD(); - final int slot = readD(); - _id = readD(); - _unk = readD(); + _type = packet.readD(); + final int slot = packet.readD(); + _id = packet.readD(); + _unk = packet.readD(); _slot = slot % 12; _page = slot / 12; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -57,7 +60,7 @@ public class RequestShortCutReg extends GameClientPacket case 0x05: // recipe { final ShortCut sc = new ShortCut(_slot, _page, _type, _id, -1); - sendPacket(new ShortCutRegister(sc)); + player.sendPacket(new ShortCutRegister(sc)); player.registerShortCut(sc); break; } @@ -67,7 +70,7 @@ public class RequestShortCutReg extends GameClientPacket if (level > 0) { final ShortCut sc = new ShortCut(_slot, _page, _type, _id, level); - sendPacket(new ShortCutRegister(sc)); + player.sendPacket(new ShortCutRegister(sc)); player.registerShortCut(sc); } break; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowBoard.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowBoard.java index cb71e1a90e..fe4f506ce7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowBoard.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowBoard.java @@ -17,9 +17,11 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.communitybbs.CommunityBoard; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestShowBoard extends GameClientPacket +public class RequestShowBoard implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unknown; @@ -28,14 +30,15 @@ public class RequestShowBoard extends GameClientPacket * packet type id 0x57 sample 57 01 00 00 00 // unknown (always 1?) format: cd */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unknown = readD(); + _unknown = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - CommunityBoard.getInstance().handleCommands(getClient(), Config.BBS_DEFAULT); + CommunityBoard.getInstance().handleCommands(client, Config.BBS_DEFAULT); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowMiniMap.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowMiniMap.java index a6ffe2f23f..54d1df4ae9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowMiniMap.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestShowMiniMap.java @@ -16,25 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ShowMiniMap; /** * sample format d * @version $Revision: 1 $ $Date: 2005/04/10 00:17:44 $ */ -public class RequestShowMiniMap extends GameClientPacket +public class RequestShowMiniMap implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected final void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeAttackerList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeAttackerList.java index 4d4469935e..b5e259a520 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeAttackerList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeAttackerList.java @@ -16,28 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; -import org.l2jmobius.gameserver.network.serverpackets.FortSiegeAttackerList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SiegeAttackerList; /** * @version $Revision: 1.3.4.2 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestSiegeAttackerList extends GameClientPacket +public class RequestSiegeAttackerList implements IClientIncomingPacket { private int _castleId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _castleId = readD(); + _castleId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_castleId < 100) { @@ -47,7 +49,7 @@ public class RequestSiegeAttackerList extends GameClientPacket return; } - sendPacket(new SiegeAttackerList(castle)); + client.sendPacket(new SiegeAttackerList(castle)); } else { @@ -57,7 +59,7 @@ public class RequestSiegeAttackerList extends GameClientPacket return; } - sendPacket(new FortSiegeAttackerList(fort)); + client.sendPacket(new SiegeAttackerList(fort)); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeDefenderList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeDefenderList.java index 5bc068043e..121c954ccd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeDefenderList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeDefenderList.java @@ -16,28 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; -import org.l2jmobius.gameserver.network.serverpackets.FortSiegeDefenderList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SiegeDefenderList; /** * @version $Revision: 1.3.4.2 $ $Date: 2005/03/27 15:29:30 $ */ -public class RequestSiegeDefenderList extends GameClientPacket +public class RequestSiegeDefenderList implements IClientIncomingPacket { private int _castleId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _castleId = readD(); + _castleId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_castleId < 100) { @@ -47,7 +49,7 @@ public class RequestSiegeDefenderList extends GameClientPacket return; } - sendPacket(new SiegeDefenderList(castle)); + client.sendPacket(new SiegeDefenderList(castle)); } else { @@ -57,7 +59,7 @@ public class RequestSiegeDefenderList extends GameClientPacket return; } - sendPacket(new FortSiegeDefenderList(fort)); + client.sendPacket(new SiegeDefenderList(fort)); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeInfo.java index c7268477e3..b3bb49d642 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSiegeInfo.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -public class RequestSiegeInfo extends GameClientPacket +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + +public class RequestSiegeInfo implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { // TODO this } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillCoolTime.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillCoolTime.java index 95c5cdee84..6496b526ae 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillCoolTime.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillCoolTime.java @@ -16,20 +16,23 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -public class RequestSkillCoolTime extends GameClientPacket +public class RequestSkillCoolTime implements IClientIncomingPacket { @Override - public void readImpl() + public boolean read(GameClient client, PacketReader packet) { + return true; } @Override - public void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player != null) { player.sendPacket(new SkillCoolTime(player)); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillList.java index 265490d3b7..fae0defef6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSkillList.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestSkillList extends GameClientPacket +public class RequestSkillList implements IClientIncomingPacket { @SuppressWarnings("unused") private int _unk1; @@ -30,20 +32,20 @@ public class RequestSkillList extends GameClientPacket private int _unk3; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // this is just a trigger packet. it has no content + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance cha = getClient().getPlayer(); - if (cha == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - cha.sendSkillList(); + player.sendSkillList(); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSocialAction.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSocialAction.java index 2951c85c70..b49cdad443 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSocialAction.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSocialAction.java @@ -17,27 +17,30 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class RequestSocialAction extends GameClientPacket +public class RequestSocialAction implements IClientIncomingPacket { private int _actionId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _actionId = readD(); + _actionId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestStartPledgeWar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestStartPledgeWar.java index 55f9317181..5365ed4925 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestStartPledgeWar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestStartPledgeWar.java @@ -17,28 +17,31 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestStartPledgeWar extends GameClientPacket +public class RequestStartPledgeWar implements IClientIncomingPacket { private String _pledgeName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _pledgeName = readS(); + _pledgeName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestStopPledgeWar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestStopPledgeWar.java index f0cbeafd69..26d68af603 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestStopPledgeWar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestStopPledgeWar.java @@ -16,27 +16,30 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; -public class RequestStopPledgeWar extends GameClientPacket +public class RequestStopPledgeWar implements IClientIncomingPacket { private String _pledgeName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _pledgeName = readS(); + _pledgeName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPersonally.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPersonally.java index 784094110e..2fad1297c6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPersonally.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPersonally.java @@ -18,36 +18,39 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestSurrenderPersonally extends GameClientPacket +public class RequestSurrenderPersonally implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestSurrenderPersonally.class.getName()); private String _pledgeName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _pledgeName = readS(); + _pledgeName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - LOGGER.info("RequestSurrenderPersonally by " + getClient().getPlayer().getName() + " with " + _pledgeName); - final Clan playerClan = getClient().getPlayer().getClan(); + LOGGER.info("RequestSurrenderPersonally by " + player.getName() + " with " + _pledgeName); + final Clan playerClan = player.getClan(); final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName); if (playerClan == null) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPledgeWar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPledgeWar.java index 936b718295..0c3a500aa5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPledgeWar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestSurrenderPledgeWar.java @@ -18,29 +18,32 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestSurrenderPledgeWar extends GameClientPacket +public class RequestSurrenderPledgeWar implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(RequestSurrenderPledgeWar.class.getName()); private String _pledgeName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _pledgeName = readS(); + _pledgeName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -60,7 +63,7 @@ public class RequestSurrenderPledgeWar extends GameClientPacket return; } - LOGGER.info("RequestSurrenderPledgeWar by " + getClient().getPlayer().getClan().getName() + " with " + _pledgeName); + LOGGER.info("RequestSurrenderPledgeWar by " + player.getClan().getName() + " with " + _pledgeName); if (!playerclan.isAtWarWith(clan.getClanId())) { player.sendMessage("You aren't at war with this clan."); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 2a9abaf730..cd0040e656 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -16,22 +16,25 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTargetCanceld extends GameClientPacket +public class RequestTargetCanceld implements IClientIncomingPacket { private int _unselect; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _unselect = readH(); + _unselect = packet.readH(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player != null) { if (_unselect == 0) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialClientEvent.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialClientEvent.java index 06d079251c..212d0038ae 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialClientEvent.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialClientEvent.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTutorialClientEvent extends GameClientPacket +public class RequestTutorialClientEvent implements IClientIncomingPacket { int eventId = 0; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - eventId = readD(); + eventId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialLinkHtml.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialLinkHtml.java index 2d33993bdc..a2dbb78acf 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialLinkHtml.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialLinkHtml.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTutorialLinkHtml extends GameClientPacket +public class RequestTutorialLinkHtml implements IClientIncomingPacket { private String _bypass; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _bypass = readS(); + _bypass = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java index de767f1276..0836e3dc5a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialPassCmdToServer.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTutorialPassCmdToServer extends GameClientPacket +public class RequestTutorialPassCmdToServer implements IClientIncomingPacket { private String _bypass = null; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _bypass = readS(); + _bypass = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java index 65ebe08eba..c9db48290e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTutorialQuestionMark.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestTutorialQuestionMark extends GameClientPacket +public class RequestTutorialQuestionMark implements IClientIncomingPacket { int _number = 0; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _number = readD(); + _number = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestUnEquipItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestUnEquipItem.java index 0d49295677..19c65a701d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestUnEquipItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestUnEquipItem.java @@ -16,16 +16,18 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestUnEquipItem extends GameClientPacket +public class RequestUnEquipItem implements IClientIncomingPacket { private int _slot; @@ -33,15 +35,16 @@ public class RequestUnEquipItem extends GameClientPacket * packet type id 0x11 format: cd */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _slot = readD(); + _slot = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestUserCommand.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestUserCommand.java index cee83dccf3..a3b1bf636b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestUserCommand.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestUserCommand.java @@ -18,26 +18,29 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.handler.IUserCommandHandler; import org.l2jmobius.gameserver.handler.UserCommandHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; -public class RequestUserCommand extends GameClientPacket +public class RequestUserCommand implements IClientIncomingPacket { static Logger LOGGER = Logger.getLogger(RequestUserCommand.class.getName()); private int _command; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _command = readD(); + _command = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -46,7 +49,7 @@ public class RequestUserCommand extends GameClientPacket final IUserCommandHandler handler = UserCommandHandler.getInstance().getUserCommandHandler(_command); if (handler != null) { - handler.useUserCommand(_command, getClient().getPlayer()); + handler.useUserCommand(_command, player); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWearItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWearItem.java index c7625915dc..c5d8a461a3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWearItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWearItem.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.TradeController; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.model.StoreTradeList; @@ -32,13 +33,14 @@ import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; import org.l2jmobius.gameserver.util.Util; -public class RequestWearItem extends GameClientPacket +public class RequestWearItem implements IClientIncomingPacket { protected static final Logger LOGGER = Logger.getLogger(RequestWearItem.class.getName()); @@ -79,13 +81,13 @@ public class RequestWearItem extends GameClientPacket * Decrypt the RequestWearItem Client->Server Packet and Create _items table containing all ItemID to Wear. */ @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { // Read and Decrypt the RequestWearItem Client->Server Packet - _player = getClient().getPlayer(); - _unknow = readD(); - _listId = readD(); // List of ItemID to Wear - _count = readD(); // Number of Item to Wear + _player = client.getPlayer(); + _unknow = packet.readD(); + _listId = packet.readD(); // List of ItemID to Wear + _count = packet.readD(); // Number of Item to Wear if (_count < 0) { _count = 0; @@ -102,19 +104,21 @@ public class RequestWearItem extends GameClientPacket // Fill _items table with all ItemID to Wear for (int i = 0; i < _count; i++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[i] = itemId; } + + return true; } /** * Launch Wear action. */ @Override - protected void runImpl() + public void run(GameClient client) { // Get the current player and return if null - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -177,7 +181,7 @@ public class RequestWearItem extends GameClientPacket // Check if the quantity of Item to Wear if ((_count < 1) || (_listId >= 1000000)) { - sendPacket(ActionFailed.STATIC_PACKET); + player.sendPacket(ActionFailed.STATIC_PACKET); return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithDrawalParty.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithDrawalParty.java index d081f3e27f..b95084f0f0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithDrawalParty.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithDrawalParty.java @@ -16,26 +16,28 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ExClosePartyRoom; import org.l2jmobius.gameserver.network.serverpackets.ExPartyRoomMember; import org.l2jmobius.gameserver.network.serverpackets.PartyMatchDetail; -public class RequestWithDrawalParty extends GameClientPacket +public class RequestWithDrawalParty implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawPartyRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawPartyRoom.java index c7f8426e96..bfb469a5f7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawPartyRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawPartyRoom.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExClosePartyRoom; @@ -26,23 +28,24 @@ import org.l2jmobius.gameserver.network.serverpackets.ExClosePartyRoom; * Format (ch) dd * @author -Wooden- */ -public class RequestWithdrawPartyRoom extends GameClientPacket +public class RequestWithdrawPartyRoom implements IClientIncomingPacket { private int _roomid; @SuppressWarnings("unused") private int _unk1; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _roomid = readD(); - _unk1 = readD(); + _roomid = packet.readD(); + _unk1 = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawalPledge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawalPledge.java index d479ecb3ae..2aa3925d29 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawalPledge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWithdrawalPledge.java @@ -17,25 +17,27 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListDelete; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class RequestWithdrawalPledge extends GameClientPacket +public class RequestWithdrawalPledge implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWriteHeroWords.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWriteHeroWords.java index 8586b33a2e..0f79647f18 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWriteHeroWords.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestWriteHeroWords.java @@ -16,23 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format chS c (id) 0xD0 h (subid) 0x0C S the hero's words :) * @author -Wooden- */ -public class RequestWriteHeroWords extends GameClientPacket +public class RequestWriteHeroWords implements IClientIncomingPacket { @SuppressWarnings("unused") private String _heroWords; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _heroWords = readS(); + _heroWords = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index c24aa9faf7..d6b0721a38 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -21,6 +21,7 @@ import java.util.StringTokenizer; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; @@ -31,12 +32,13 @@ import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance.PunishLevel; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class Say2 extends GameClientPacket +public class Say2 implements IClientIncomingPacket { private static final Logger LOGGER_CHAT = Logger.getLogger("chat"); @@ -85,17 +87,18 @@ public class Say2 extends GameClientPacket private String _target; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _text = readS(); - _type = readD(); - _target = _type == ChatType.WHISPER.getClientId() ? readS() : null; + _text = packet.readS(); + _type = packet.readD(); + _target = _type == ChatType.WHISPER.getClientId() ? packet.readS() : null; + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { LOGGER.warning("[Say2.java] Active Character is null."); @@ -121,7 +124,7 @@ public class Say2 extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getSayAction().tryPerformAction("Say2")) + if (!client.getFloodProtectors().getSayAction().tryPerformAction("Say2")) { player.sendMessage("You cannot speak too fast."); return; @@ -240,7 +243,7 @@ public class Say2 extends GameClientPacket case SHOUT: { // Flood protect Say - if (!getClient().getFloodProtectors().getGlobalChat().tryPerformAction("global chat")) + if (!client.getFloodProtectors().getGlobalChat().tryPerformAction("global chat")) { return; } @@ -512,7 +515,7 @@ public class Say2 extends GameClientPacket else if (player.isHero()) { // Flood protect Hero Voice - if (!getClient().getFloodProtectors().getHeroVoice().tryPerformAction("hero voice")) + if (!client.getFloodProtectors().getHeroVoice().tryPerformAction("hero voice")) { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java index 131417731c..7ec2b23fbf 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AdminData; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.util.GMAudit; /** * This class handles all GM commands triggered by //command */ -public class SendBypassBuildCmd extends GameClientPacket +public class SendBypassBuildCmd implements IClientIncomingPacket { protected static final Logger LOGGER = Logger.getLogger(SendBypassBuildCmd.class.getName()); public static final int GM_MESSAGE = 9; @@ -37,15 +39,16 @@ public class SendBypassBuildCmd extends GameClientPacket private String _command; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _command = "admin_" + readS().trim(); + _command = "admin_" + packet.readS().trim(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || !player.isGM()) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseDepositList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseDepositList.java index db3725b5e7..742581ff0b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseDepositList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseDepositList.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; @@ -27,6 +28,7 @@ import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.EtcItemType; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.EnchantResult; @@ -34,7 +36,7 @@ import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; -public class SendWareHouseDepositList extends GameClientPacket +public class SendWareHouseDepositList implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(SendWareHouseDepositList.class.getName()); @@ -42,12 +44,17 @@ public class SendWareHouseDepositList extends GameClientPacket private int[] _items; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _count = readD(); + if (!Config.ALLOW_WAREHOUSE) + { + return false; + } + + _count = packet.readD(); // check packet list size - if ((_count < 0) || ((_count * 8) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + if ((_count < 0) || ((_count * 8) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; } @@ -55,28 +62,30 @@ public class SendWareHouseDepositList extends GameClientPacket _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final int objectId = readD(); + final int objectId = packet.readD(); _items[(i * 2) + 0] = objectId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 0)) { _count = 0; - return; + return false; } _items[(i * 2) + 1] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (_items == null) { return; } - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -94,7 +103,7 @@ public class SendWareHouseDepositList extends GameClientPacket return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("deposit")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("deposit")) { player.sendMessage("You depositing items too fast."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseWithDrawList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseWithDrawList.java index ecd4acda8a..970a75eb9d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseWithDrawList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendWareHouseWithDrawList.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.FolkInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -26,6 +27,7 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.EnchantResult; @@ -33,7 +35,7 @@ import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; -public class SendWareHouseWithDrawList extends GameClientPacket +public class SendWareHouseWithDrawList implements IClientIncomingPacket { private static final Logger LOGGER = Logger.getLogger(SendWareHouseWithDrawList.class.getName()); @@ -41,41 +43,43 @@ public class SendWareHouseWithDrawList extends GameClientPacket private int[] _items; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _count = readD(); - if ((_count < 0) || ((_count * 8) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _count = packet.readD(); + if ((_count < 0) || ((_count * 8) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; - return; + return false; } _items = new int[_count * 2]; for (int i = 0; i < _count; i++) { - final int objectId = readD(); + final int objectId = packet.readD(); _items[(i * 2) + 0] = objectId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 0)) { _count = 0; - return; + return false; } _items[(i * 2) + 1] = (int) cnt; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("withdraw")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("withdraw")) { player.sendMessage("You withdrawing items too fast."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java index 24b2915858..bb6910ae58 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java @@ -17,54 +17,58 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreManageListBuy; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreMsgBuy; -public class SetPrivateStoreListBuy extends GameClientPacket +public class SetPrivateStoreListBuy implements IClientIncomingPacket { private int _count; private int[] _items; // count * 3 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _count = readD(); - if ((_count <= 0) || ((_count * 12) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _count = packet.readD(); + if ((_count <= 0) || ((_count * 12) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; - return; + return false; } _items = new int[_count * 4]; for (int x = 0; x < _count; x++) { - final int itemId = readD(); + final int itemId = packet.readD(); _items[(x * 4) + 0] = itemId; - _items[((x * 4) + 3)] = readH(); - // readH(); // it's the enchant value, but the interlude client has a bug, so it dnt send back the correct enchant value - readH(); // TODO analyse this - final long cnt = readD(); + _items[((x * 4) + 3)] = packet.readH(); + // packet.readH(); // it's the enchant value, but the interlude client has a bug, so it did not send back the correct enchant value + packet.readH(); // TODO analyse this + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 0)) { _count = 0; - return; + return false; } _items[(x * 4) + 1] = (int) cnt; - final int price = readD(); + final int price = packet.readD(); _items[(x * 4) + 2] = price; } + + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListSell.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListSell.java index 4f0bfe967c..e39ff79ec9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListSell.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListSell.java @@ -17,54 +17,58 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreManageListSell; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreMsgSell; import org.l2jmobius.gameserver.util.Util; -public class SetPrivateStoreListSell extends GameClientPacket +public class SetPrivateStoreListSell implements IClientIncomingPacket { private int _count; private boolean _packageSale; private int[] _items; // count * 3 @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _packageSale = readD() == 1; - _count = readD(); - if ((_count <= 0) || ((_count * 12) > _buf.remaining()) || (_count > Config.MAX_ITEM_IN_PACKET)) + _packageSale = packet.readD() == 1; + _count = packet.readD(); + if ((_count <= 0) || ((_count * 12) > packet.getReadableBytes()) || (_count > Config.MAX_ITEM_IN_PACKET)) { _count = 0; - return; + return false; } _items = new int[_count * 3]; for (int x = 0; x < _count; x++) { - final int objectId = readD(); + final int objectId = packet.readD(); _items[(x * 3) + 0] = objectId; - final long cnt = readD(); + final long cnt = packet.readD(); if ((cnt > Integer.MAX_VALUE) || (cnt < 0)) { _count = 0; - return; + return false; } _items[(x * 3) + 1] = (int) cnt; - final int price = readD(); + final int price = packet.readD(); _items[(x * 3) + 2] = price; } + + return false; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -113,8 +117,8 @@ public class SetPrivateStoreListSell extends GameClientPacket final int price = _items[(i * 3) + 2]; if (price <= 0) { - final String msgErr = "[SetPrivateStoreListSell] player " + getClient().getPlayer().getName() + " tried an overflow exploit (use PHX), ban this player!"; - Util.handleIllegalPlayerAction(getClient().getPlayer(), msgErr, Config.DEFAULT_PUNISH); + final String msgErr = "[SetPrivateStoreListSell] player " + player.getName() + " tried an overflow exploit (use PHX), ban this player!"; + Util.handleIllegalPlayerAction(player, msgErr, Config.DEFAULT_PUNISH); _count = 0; return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgBuy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgBuy.java index 0049ec254b..9dbb628c86 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgBuy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgBuy.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreMsgBuy; -public class SetPrivateStoreMsgBuy extends GameClientPacket +public class SetPrivateStoreMsgBuy implements IClientIncomingPacket { private String _storeMsg; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _storeMsg = readS(); + _storeMsg = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (player.getBuyList() == null)) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgSell.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgSell.java index bdf6e5341c..e6c827ab17 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgSell.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreMsgSell.java @@ -16,23 +16,26 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.PrivateStoreMsgSell; -public class SetPrivateStoreMsgSell extends GameClientPacket +public class SetPrivateStoreMsgSell implements IClientIncomingPacket { private String _storeMsg; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _storeMsg = readS(); + _storeMsg = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || (player.getSellList() == null)) { return; @@ -41,7 +44,7 @@ public class SetPrivateStoreMsgSell extends GameClientPacket if (_storeMsg.length() < 30) { player.getSellList().setTitle(_storeMsg); - sendPacket(new PrivateStoreMsgSell(player)); + player.sendPacket(new PrivateStoreMsgSell(player)); } } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SnoopQuit.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SnoopQuit.java index 9930e066ee..78bccc8b08 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SnoopQuit.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SnoopQuit.java @@ -16,33 +16,36 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; /** * @author -Wooden- */ -public class SnoopQuit extends GameClientPacket +public class SnoopQuit implements IClientIncomingPacket { private int _snoopID; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _snoopID = readD(); + _snoopID = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance target = (PlayerInstance) World.getInstance().findObject(_snoopID); - if (target == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - final PlayerInstance player = getClient().getPlayer(); - if (player == null) + final PlayerInstance target = (PlayerInstance) World.getInstance().findObject(_snoopID); + if (target == null) { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/StartRotating.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/StartRotating.java index fdd561838d..d36c3cf925 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/StartRotating.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/StartRotating.java @@ -17,33 +17,38 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.BeginRotation; -public class StartRotating extends GameClientPacket +public class StartRotating implements IClientIncomingPacket { private int _degree; private int _side; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _degree = readD(); - _side = readD(); + _degree = packet.readD(); + _side = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { if (!Config.ENABLE_KEYBOARD_MOVEMENT) { return; } - if (getClient().getPlayer() == null) + final PlayerInstance player = client.getPlayer(); + if (player == null) { return; } - getClient().getPlayer().broadcastPacket(new BeginRotation(getClient().getPlayer(), _degree, _side, 0)); + player.broadcastPacket(new BeginRotation(player, _degree, _side, 0)); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdCharacterInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdCharacterInfo.java index 51592f5b3a..67fc51f1ed 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdCharacterInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdCharacterInfo.java @@ -16,23 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format chS c: (id) 0x39 h: (subid) 0x00 S: the character name (or maybe cmd string ?) * @author -Wooden- */ -public class SuperCmdCharacterInfo extends GameClientPacket +public class SuperCmdCharacterInfo implements IClientIncomingPacket { @SuppressWarnings("unused") private String _characterName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _characterName = readS(); + _characterName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdServerStatus.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdServerStatus.java index e2b9b65625..a836ccc02d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdServerStatus.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdServerStatus.java @@ -16,20 +16,23 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format ch c: (id) 0x39 h: (subid) 0x02 * @author -Wooden- */ -public class SuperCmdServerStatus extends GameClientPacket +public class SuperCmdServerStatus implements IClientIncomingPacket { @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - // trigger packet + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdSummonCmd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdSummonCmd.java index 7ebc8a41fa..7efd315087 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdSummonCmd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SuperCmdSummonCmd.java @@ -16,23 +16,27 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.network.GameClient; + /** * Format chS c: (id) 0x39 h: (subid) 0x01 S: the summon name (or maybe cmd string ?) * @author -Wooden- */ -public class SuperCmdSummonCmd extends GameClientPacket +public class SuperCmdSummonCmd implements IClientIncomingPacket { @SuppressWarnings("unused") private String _summonName; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _summonName = readS(); + _summonName = packet.readS(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeDone.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeDone.java index 9e9e38d106..a8fe9a38f1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeDone.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeDone.java @@ -16,33 +16,36 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -public class TradeDone extends GameClientPacket +public class TradeDone implements IClientIncomingPacket { private int _response; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _response = readD(); + _response = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; } - if (!getClient().getFloodProtectors().getTransaction().tryPerformAction("trade")) + if (!client.getFloodProtectors().getTransaction().tryPerformAction("trade")) { player.sendMessage("You are trading too fast."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java index 013008fdfb..e8f79c9aa7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java @@ -17,29 +17,32 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SendTradeRequest; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; -public class TradeRequest extends GameClientPacket +public class TradeRequest implements IClientIncomingPacket { private int _objectId; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java index 7497b151e2..a61001cb4e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/UseItem.java @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.SkillTable; import org.l2jmobius.gameserver.handler.IItemHandler; @@ -36,6 +37,7 @@ import org.l2jmobius.gameserver.model.items.Weapon; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.type.WeaponType; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.EtcStatusUpdate; @@ -46,7 +48,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.util.Util; -public class UseItem extends GameClientPacket +public class UseItem implements IClientIncomingPacket { private int _objectId; @@ -76,15 +78,16 @@ public class UseItem extends GameClientPacket } @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _objectId = readD(); + _objectId = packet.readD(); + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if (player == null) { return; @@ -108,12 +111,12 @@ public class UseItem extends GameClientPacket // Flood protect UseItem if (item.isPotion()) { - if (!getClient().getFloodProtectors().getUsePotion().tryPerformAction("use potion")) + if (!client.getFloodProtectors().getUsePotion().tryPerformAction("use potion")) { return; } } - else if (!getClient().getFloodProtectors().getUseItem().tryPerformAction("use item")) + else if (!client.getFloodProtectors().getUseItem().tryPerformAction("use item")) { return; } @@ -191,7 +194,7 @@ public class UseItem extends GameClientPacket if (player.isFishing() && ((itemId < 6535) || (itemId > 6540))) { // You cannot do anything else while fishing - getClient().getPlayer().sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_DO_THAT_WHILE_FISHING_3)); + player.sendPacket(new SystemMessage(SystemMessageId.YOU_CANNOT_DO_THAT_WHILE_FISHING_3)); return; } @@ -274,7 +277,7 @@ public class UseItem extends GameClientPacket { final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS); sm.addItemName(itemId); - getClient().getPlayer().sendPacket(sm); + player.sendPacket(sm); return; } @@ -283,7 +286,7 @@ public class UseItem extends GameClientPacket { final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_MAY_NOT_EQUIP_A_PET_ITEM); // You cannot equip a pet item. sm.addItemName(itemId); - getClient().getPlayer().sendPacket(sm); + player.sendPacket(sm); return; } @@ -671,7 +674,7 @@ public class UseItem extends GameClientPacket player.getInventory().setPaperdollItem(Inventory.PAPERDOLL_LHAND, item); player.broadcastUserInfo(); // Send a Server->Client packet ItemList to this PlayerInstance to update left hand equipement - sendPacket(new ItemList(player, false)); + player.sendPacket(new ItemList(player, false)); } else { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ValidatePosition.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ValidatePosition.java index 26911af582..9e8efd4ca7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ValidatePosition.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ValidatePosition.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.clientpackets; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.DoorData; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation; -public class ValidatePosition extends GameClientPacket +public class ValidatePosition implements IClientIncomingPacket { private int _x; private int _y; @@ -30,19 +32,20 @@ public class ValidatePosition extends GameClientPacket private int _heading; @Override - protected void readImpl() + public boolean read(GameClient client, PacketReader packet) { - _x = readD(); - _y = readD(); - _z = readD(); - _heading = readD(); - readD(); // vehicle id + _x = packet.readD(); + _y = packet.readD(); + _z = packet.readD(); + _heading = packet.readD(); + packet.readD(); // vehicle id + return true; } @Override - protected void runImpl() + public void run(GameClient client) { - final PlayerInstance player = getClient().getPlayer(); + final PlayerInstance player = client.getPlayer(); if ((player == null) || player.isTeleporting() || player.inObserverMode()) { return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/GameServerBasePacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/GameServerBasePacket.java deleted file mode 100644 index 4ea4ec1ff8..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/GameServerBasePacket.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.gameserverpackets; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -/** - * @author -Wooden- - */ -public abstract class GameServerBasePacket -{ - private final ByteArrayOutputStream _bao; - - protected GameServerBasePacket() - { - _bao = new ByteArrayOutputStream(); - } - - protected void writeD(int value) - { - _bao.write(value & 0xff); - _bao.write((value >> 8) & 0xff); - _bao.write((value >> 16) & 0xff); - _bao.write((value >> 24) & 0xff); - } - - protected void writeH(int value) - { - _bao.write(value & 0xff); - _bao.write((value >> 8) & 0xff); - } - - protected void writeC(int value) - { - _bao.write(value & 0xff); - } - - protected void writeF(double org) - { - final long value = Double.doubleToRawLongBits(org); - _bao.write((int) (value & 0xff)); - _bao.write((int) ((value >> 8) & 0xff)); - _bao.write((int) ((value >> 16) & 0xff)); - _bao.write((int) ((value >> 24) & 0xff)); - _bao.write((int) ((value >> 32) & 0xff)); - _bao.write((int) ((value >> 40) & 0xff)); - _bao.write((int) ((value >> 48) & 0xff)); - _bao.write((int) ((value >> 56) & 0xff)); - } - - protected void writeS(String text) - { - try - { - if (text != null) - { - _bao.write(text.getBytes(StandardCharsets.UTF_16LE)); - } - } - catch (Exception e) - { - e.printStackTrace(); - } - - _bao.write(0); - _bao.write(0); - } - - protected void writeB(byte[] array) - { - try - { - _bao.write(array); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - - public int getLength() - { - return _bao.size() + 2; - } - - public byte[] getBytes() - { - writeD(0x00); // reserve for checksum - - final int padding = _bao.size() % 8; - if (padding != 0) - { - for (int i = padding; i < 8; i++) - { - writeC(0x00); - } - } - - return _bao.toByteArray(); - } - - public abstract byte[] getContent() throws IOException; -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/IncomingPackets.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/IncomingPackets.java new file mode 100644 index 0000000000..fce8fd7deb --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/IncomingPackets.java @@ -0,0 +1,81 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.loginserver; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Supplier; + +import org.l2jmobius.commons.network.IConnectionState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IIncomingPackets; + +/** + * @author NosBit + */ +enum IncomingPackets implements IIncomingPackets +{ + NONE(0, null); + + public static final IncomingPackets[] PACKET_ARRAY; + + static + { + final short maxPacketId = (short) Arrays.stream(values()).mapToInt(IIncomingPackets::getPacketId).max().orElse(0); + PACKET_ARRAY = new IncomingPackets[maxPacketId + 1]; + for (IncomingPackets incomingPacket : values()) + { + PACKET_ARRAY[incomingPacket.getPacketId()] = incomingPacket; + } + } + + private short _packetId; + private Supplier> _incomingPacketFactory; + private Set _connectionStates; + + IncomingPackets(int packetId, Supplier> incomingPacketFactory, IConnectionState... connectionStates) + { + // packetId is an unsigned byte + if (packetId > 0xFF) + { + throw new IllegalArgumentException("packetId must not be bigger than 0xFF"); + } + + _packetId = (short) packetId; + _incomingPacketFactory = incomingPacketFactory != null ? incomingPacketFactory : () -> null; + _connectionStates = new HashSet<>(Arrays.asList(connectionStates)); + } + + @Override + public int getPacketId() + { + return _packetId; + } + + @Override + public IIncomingPacket newIncomingPacket() + { + return _incomingPacketFactory.get(); + } + + @Override + public Set getConnectionStates() + { + return _connectionStates; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/LoginServerHandler.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/LoginServerHandler.java new file mode 100644 index 0000000000..5eb5d384a9 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/LoginServerHandler.java @@ -0,0 +1,34 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.loginserver; + +import org.l2jmobius.commons.network.ChannelInboundHandler; +import org.l2jmobius.commons.network.IIncomingPacket; + +import io.netty.channel.ChannelHandlerContext; + +/** + * @author NosBit + */ +public class LoginServerHandler extends ChannelInboundHandler +{ + @Override + protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket msg) throws Exception + { + msg.run(this); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/LoginServerInitializer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/LoginServerInitializer.java new file mode 100644 index 0000000000..42f5df97f2 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/LoginServerInitializer.java @@ -0,0 +1,48 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.loginserver; + +import java.nio.ByteOrder; + +import org.l2jmobius.commons.network.codecs.LengthFieldBasedFrameEncoder; +import org.l2jmobius.commons.network.codecs.PacketDecoder; +import org.l2jmobius.commons.network.codecs.PacketEncoder; + +import io.netty.channel.ChannelInitializer; +import io.netty.channel.socket.SocketChannel; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; + +/** + * @author NosBit + */ +public class LoginServerInitializer extends ChannelInitializer +{ + private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); + private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2); + + @Override + protected void initChannel(SocketChannel ch) + { + final LoginServerHandler loginServerHandler = new LoginServerHandler(); + ch.pipeline().addLast("length-decoder", new LengthFieldBasedFrameDecoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2, 0, 2, -2, 2, false)); + ch.pipeline().addLast("length-encoder", LENGTH_ENCODER); + // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); + ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, loginServerHandler)); + ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); + ch.pipeline().addLast(loginServerHandler); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/LoginServerNetworkManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/LoginServerNetworkManager.java new file mode 100644 index 0000000000..d6dd35de81 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserver/LoginServerNetworkManager.java @@ -0,0 +1,80 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.loginserver; + +import java.util.logging.Logger; + +import org.l2jmobius.Config; +import org.l2jmobius.gameserver.network.EventLoopGroupManager; + +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelOption; +import io.netty.channel.socket.nio.NioSocketChannel; + +/** + * @author NosBit + */ +public class LoginServerNetworkManager +{ + private static final Logger LOGGER = Logger.getLogger(LoginServerNetworkManager.class.getName()); + + private final Bootstrap _bootstrap; + + private ChannelFuture _channelFuture; + + public LoginServerNetworkManager() + { + //@formatter:off + _bootstrap = new Bootstrap() + .group(EventLoopGroupManager.getInstance().getWorkerGroup()) + .channel(NioSocketChannel.class) + .option(ChannelOption.SO_KEEPALIVE, true) + .handler(new LoginServerInitializer()); + //@formatter:on + } + + public ChannelFuture getChannelFuture() + { + return _channelFuture; + } + + public void connect() throws InterruptedException + { + if ((_channelFuture != null) && _channelFuture.isSuccess()) + { + return; + } + _channelFuture = _bootstrap.connect(Config.GAME_SERVER_LOGIN_HOST, Config.GAME_SERVER_LOGIN_PORT).sync(); + LOGGER.info("Connected to " + Config.GAME_SERVER_LOGIN_HOST + ":" + Config.GAME_SERVER_LOGIN_PORT); + } + + public void disconnect() throws InterruptedException + { + _channelFuture.channel().close().sync(); + } + + public static LoginServerNetworkManager getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final LoginServerNetworkManager INSTANCE = new LoginServerNetworkManager(); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/AuthRequest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/AuthRequest.java similarity index 70% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/AuthRequest.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/AuthRequest.java index 83d1785144..27cb815948 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/AuthRequest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/AuthRequest.java @@ -14,33 +14,41 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; -public class AuthRequest extends GameServerBasePacket +import java.util.List; + +import org.l2jmobius.commons.network.BaseSendablePacket; + +public class AuthRequest extends BaseSendablePacket { /** * Format: cccSddb c desired ID c accept alternative ID c reserve Host s ExternalHostName s InetranlHostName d max players d hexid size b hexid * @param id * @param acceptAlternate * @param hexid - * @param externalHost - * @param internalHost * @param port * @param reserveHost * @param maxplayer + * @param subnets the subnets lists + * @param hosts the hosts list */ - public AuthRequest(int id, boolean acceptAlternate, byte[] hexid, String externalHost, String internalHost, int port, boolean reserveHost, int maxplayer) + public AuthRequest(int id, boolean acceptAlternate, byte[] hexid, int port, boolean reserveHost, int maxplayer, List subnets, List hosts) { writeC(0x01); writeC(id); writeC(acceptAlternate ? 0x01 : 0x00); writeC(reserveHost ? 0x01 : 0x00); - writeS(externalHost); - writeS(internalHost); writeH(port); writeD(maxplayer); writeD(hexid.length); writeB(hexid); + writeD(subnets.size()); + for (int i = 0; i < subnets.size(); i++) + { + writeS(subnets.get(i)); + writeS(hosts.get(i)); + } } @Override diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/BlowFishKey.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/BlowFishKey.java similarity index 77% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/BlowFishKey.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/BlowFishKey.java index 15028c42cc..f90adbc231 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/BlowFishKey.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/BlowFishKey.java @@ -14,18 +14,20 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; -import java.security.GeneralSecurityException; import java.security.interfaces.RSAPublicKey; +import java.util.logging.Level; import java.util.logging.Logger; import javax.crypto.Cipher; +import org.l2jmobius.commons.network.BaseSendablePacket; + /** * @author -Wooden- */ -public class BlowFishKey extends GameServerBasePacket +public class BlowFishKey extends BaseSendablePacket { private static final Logger LOGGER = Logger.getLogger(BlowFishKey.class.getName()); @@ -44,9 +46,9 @@ public class BlowFishKey extends GameServerBasePacket writeD(encrypted.length); writeB(encrypted); } - catch (GeneralSecurityException e) + catch (Exception e) { - LOGGER.warning("Error While encrypting blowfish key for transmision (Crypt error) " + e); + LOGGER.log(Level.SEVERE, "Error While encrypting blowfish key for transmision (Crypt error): " + e.getMessage(), e); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/ChangeAccessLevel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ChangeAccessLevel.java similarity index 77% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/ChangeAccessLevel.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ChangeAccessLevel.java index 1d84b4be62..628addc719 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/ChangeAccessLevel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ChangeAccessLevel.java @@ -14,12 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; + +import org.l2jmobius.commons.network.BaseSendablePacket; /** * @author -Wooden- */ -public class ChangeAccessLevel extends GameServerBasePacket +public class ChangeAccessLevel extends BaseSendablePacket { public ChangeAccessLevel(String player, int access) { @@ -28,10 +30,6 @@ public class ChangeAccessLevel extends GameServerBasePacket writeS(player); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.gameserverpackets.GameServerBasePacket#getContent() - */ @Override public byte[] getContent() { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerAuthRequest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerAuthRequest.java similarity index 79% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerAuthRequest.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerAuthRequest.java index 4bec61dd8a..d9e6d9983c 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerAuthRequest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerAuthRequest.java @@ -14,14 +14,15 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; +import org.l2jmobius.commons.network.BaseSendablePacket; import org.l2jmobius.gameserver.LoginServerThread.SessionKey; /** * @author -Wooden- */ -public class PlayerAuthRequest extends GameServerBasePacket +public class PlayerAuthRequest extends BaseSendablePacket { public PlayerAuthRequest(String account, SessionKey key) { @@ -33,10 +34,6 @@ public class PlayerAuthRequest extends GameServerBasePacket writeD(key.loginOkID2); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.gameserverpackets.GameServerBasePacket#getContent() - */ @Override public byte[] getContent() { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerInGame.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerInGame.java similarity index 79% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerInGame.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerInGame.java index c6123dc150..06194d332a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerInGame.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerInGame.java @@ -14,14 +14,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; import java.util.List; +import org.l2jmobius.commons.network.BaseSendablePacket; + /** * @author -Wooden- */ -public class PlayerInGame extends GameServerBasePacket +public class PlayerInGame extends BaseSendablePacket { public PlayerInGame(String player) { @@ -40,10 +42,6 @@ public class PlayerInGame extends GameServerBasePacket } } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.gameserverpackets.GameServerBasePacket#getContent() - */ @Override public byte[] getContent() { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerLogout.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerLogout.java similarity index 76% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerLogout.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerLogout.java index 197862130b..a4480b1fbd 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/gameserverpackets/PlayerLogout.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/PlayerLogout.java @@ -14,12 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; + +import org.l2jmobius.commons.network.BaseSendablePacket; /** * @author -Wooden- */ -public class PlayerLogout extends GameServerBasePacket +public class PlayerLogout extends BaseSendablePacket { public PlayerLogout(String player) { @@ -27,10 +29,6 @@ public class PlayerLogout extends GameServerBasePacket writeS(player); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.gameserverpackets.GameServerBasePacket#getContent() - */ @Override public byte[] getContent() { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/ServerStatus.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ServerStatus.java similarity index 82% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/ServerStatus.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ServerStatus.java index 7178274d8c..cba473aefe 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/gameserverpackets/ServerStatus.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/game/ServerStatus.java @@ -14,15 +14,17 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.gameserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.game; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.BaseSendablePacket; + /** * @author -Wooden- */ -public class ServerStatus extends GameServerBasePacket +public class ServerStatus extends BaseSendablePacket { private final List _attributes; @@ -42,6 +44,7 @@ public class ServerStatus extends GameServerBasePacket public static final int MAX_PLAYERS = 0x04; public static final int TEST_SERVER = 0x05; + // Server Status public static final int STATUS_AUTO = 0x00; public static final int STATUS_GOOD = 0x01; public static final int STATUS_NORMAL = 0x02; @@ -52,7 +55,7 @@ public class ServerStatus extends GameServerBasePacket public static final int ON = 0x01; public static final int OFF = 0x00; - class Attribute + static class Attribute { public int id; public int value; @@ -74,18 +77,13 @@ public class ServerStatus extends GameServerBasePacket _attributes.add(new Attribute(id, value)); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.gameserverpackets.GameServerBasePacket#getContent() - */ @Override public byte[] getContent() { writeC(0x06); writeD(_attributes.size()); - for (int i = 0; i < _attributes.size(); i++) + for (Attribute temp : _attributes) { - final Attribute temp = _attributes.get(i); writeD(temp.id); writeD(temp.value); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/AuthResponse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/AuthResponse.java similarity index 83% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/AuthResponse.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/AuthResponse.java index b7c66673e5..63ff77197d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/AuthResponse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/AuthResponse.java @@ -14,12 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; + +import org.l2jmobius.commons.network.BaseRecievePacket; /** * @author -Wooden- */ -public class AuthResponse extends LoginServerBasePacket +public class AuthResponse extends BaseRecievePacket { private final int _serverId; private final String _serverName; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/InitLS.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/InitLS.java similarity index 82% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/InitLS.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/InitLS.java index 70d983faa7..c36057db81 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/InitLS.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/InitLS.java @@ -14,9 +14,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; -public class InitLS extends LoginServerBasePacket +import org.l2jmobius.commons.network.BaseRecievePacket; + +public class InitLS extends BaseRecievePacket { private final int _rev; private final byte[] _key; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/KickPlayer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/KickPlayer.java similarity index 81% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/KickPlayer.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/KickPlayer.java index e0a811d7f3..ff47ec28cc 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/KickPlayer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/KickPlayer.java @@ -14,9 +14,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; -public class KickPlayer extends LoginServerBasePacket +import org.l2jmobius.commons.network.BaseRecievePacket; + +public class KickPlayer extends BaseRecievePacket { private final String _account; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerFail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/LoginServerFail.java similarity index 83% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerFail.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/LoginServerFail.java index 32f9ad3abd..50c6298b75 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/loginserverpackets/LoginServerFail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/LoginServerFail.java @@ -14,9 +14,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; -public class LoginServerFail extends LoginServerBasePacket +import org.l2jmobius.commons.network.BaseRecievePacket; + +public class LoginServerFail extends BaseRecievePacket { private static final String[] REASONS = { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/PlayerAuthResponse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/PlayerAuthResponse.java similarity index 82% rename from L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/PlayerAuthResponse.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/PlayerAuthResponse.java index 010ff5ff2c..2454bf8cc6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/PlayerAuthResponse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/loginserverpackets/login/PlayerAuthResponse.java @@ -14,12 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.network.loginserverpackets; +package org.l2jmobius.gameserver.network.loginserverpackets.login; + +import org.l2jmobius.commons.network.BaseRecievePacket; /** * @author -Wooden- */ -public class PlayerAuthResponse extends LoginServerBasePacket +public class PlayerAuthResponse extends BaseRecievePacket { private final String _account; private final boolean _authed; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AbstractServerBasePacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AbstractServerBasePacket.java deleted file mode 100644 index 92b3559246..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AbstractServerBasePacket.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -/** - * This class makes runImpl() and writeImpl() abstract for custom classes outside of this package - * @version $Revision: $ $Date: $ - * @author galun - */ -public abstract class AbstractServerBasePacket extends GameServerPacket -{ - @Override - public abstract void runImpl(); - - @Override - protected abstract void writeImpl(); -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ActionFailed.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ActionFailed.java index b9933e121d..a13e762e15 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ActionFailed.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ActionFailed.java @@ -16,16 +16,20 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ActionFailed extends GameServerPacket +public class ActionFailed implements IClientOutgoingPacket { public static final ActionFailed STATIC_PACKET = new ActionFailed(); @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x25); + OutgoingPackets.ACTION_FAILED.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AdminForgePacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AdminForgePacket.java index a2df9ca0c3..90f26af779 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AdminForgePacket.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AdminForgePacket.java @@ -20,11 +20,13 @@ import java.math.BigInteger; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; + /** * This class is made to create packets with any format * @author Maktakien */ -public class AdminForgePacket extends GameServerPacket +public class AdminForgePacket implements IClientOutgoingPacket { private final List _parts = new ArrayList<>(); @@ -41,49 +43,45 @@ public class AdminForgePacket extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { for (Part p : _parts) { - generate(p.b, p.str); + generate(packet, p.b, p.str); } + return true; } - /** - * @param b - * @param string - * @return - */ - public boolean generate(byte b, String string) + public boolean generate(PacketWriter packet, byte b, String string) { if ((b == 'C') || (b == 'c')) { - writeC(Integer.decode(string)); + packet.writeC(Integer.decode(string)); return true; } else if ((b == 'D') || (b == 'd')) { - writeD(Integer.decode(string)); + packet.writeD(Integer.decode(string)); return true; } else if ((b == 'H') || (b == 'h')) { - writeH(Integer.decode(string)); + packet.writeH(Integer.decode(string)); return true; } else if ((b == 'F') || (b == 'f')) { - writeF(Double.parseDouble(string)); + packet.writeF(Double.parseDouble(string)); return true; } else if ((b == 'S') || (b == 's')) { - writeS(string); + packet.writeS(string); return true; } else if ((b == 'B') || (b == 'b') || (b == 'X') || (b == 'x')) { - writeB(new BigInteger(string).toByteArray()); + packet.writeB(new BigInteger(string).toByteArray()); return true; } return false; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AllyCrest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AllyCrest.java index dda935d5bb..05156dff5c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AllyCrest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AllyCrest.java @@ -16,7 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.cache.CrestCache; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @@ -29,7 +31,7 @@ import org.l2jmobius.gameserver.cache.CrestCache; * format dd x...x * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class AllyCrest extends GameServerPacket +public class AllyCrest implements IClientOutgoingPacket { private final int _crestId; private final byte[] _data; @@ -41,18 +43,19 @@ public class AllyCrest extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xae); - writeD(_crestId); + OutgoingPackets.ALLY_CREST.writeId(packet); + packet.writeD(_crestId); if (_data != null) { - writeD(_data.length); - writeB(_data); + packet.writeD(_data.length); + packet.writeB(_data); } else { - writeD(0); + packet.writeD(0); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AllyInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AllyInfo.java index e05157eab9..be55dec350 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AllyInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AllyInfo.java @@ -16,12 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.network.SystemMessageId; -public class AllyInfo extends GameServerPacket +public class AllyInfo implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -31,18 +32,12 @@ public class AllyInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - final PlayerInstance player = getClient().getPlayer(); - if (player == null) - { - return; - } - - if (player.getAllyId() == 0) + if (_player.getAllyId() == 0) { _player.sendPacket(SystemMessageId.YOU_ARE_NOT_CURRENTLY_ALLIED_WITH_ANY_CLANS); - return; + return false; } // ============ @@ -105,5 +100,6 @@ public class AllyInfo extends GameServerPacket // ========================= sm = new SystemMessage(SystemMessageId.EMPTY_5); _player.sendPacket(sm); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillInfo.java index dc448a696f..50af6e3468 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillInfo.java @@ -19,6 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * * sample @@ -30,7 +33,7 @@ import java.util.List; * format ddd d (dddd) * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class AquireSkillInfo extends GameServerPacket +public class AquireSkillInfo implements IClientOutgoingPacket { private final List _reqs; private final int _id; @@ -69,22 +72,21 @@ public class AquireSkillInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x8b); - writeD(_id); - writeD(_level); - writeD(_spCost); - writeD(_mode); // c4 - - writeD(_reqs.size()); - + OutgoingPackets.AQUIRE_SKILL_INFO.writeId(packet); + packet.writeD(_id); + packet.writeD(_level); + packet.writeD(_spCost); + packet.writeD(_mode); // c4 + packet.writeD(_reqs.size()); for (Req temp : _reqs) { - writeD(temp.type); - writeD(temp.itemId); - writeD(temp.count); - writeD(temp.unk); + packet.writeD(temp.type); + packet.writeD(temp.itemId); + packet.writeD(temp.count); + packet.writeD(temp.unk); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillList.java index 825070c5d1..1fd9ea4a01 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AquireSkillList.java @@ -19,13 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample a3 05000000 03000000 03000000 06000000 3c000000 00000000 power strike 10000000 02000000 06000000 3c000000 00000000 mortal blow 38000000 04000000 06000000 36010000 00000000 power shot 4d000000 01000000 01000000 98030000 01000000 ATTACK aura 920sp 8e000000 03000000 03000000 cc010000 00000000 * Armor Mastery format d (ddddd) skillid, level, maxlevel?, C4 format changes: 0000: [8a] [00 00 00 00] [35 00 00 00] 92 00 00 00 01 00 00 .....5.......... ^^^^^^^^^^^^^ 0010: 00 2d 00 00 00 04 01 00 00 00 00 00 00 a4 00 00 .-.............. 0020: 00 01 00 00 00 03 00 00 00 e4 0c 00 00 00 00 00 * ................ 0030: 00 d4 00 00 00 01 00 00 00 06 00 00 00 08 52 00 ..............R. * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/27 15:29:57 $ */ -public class AquireSkillList extends GameServerPacket +public class AquireSkillList implements IClientOutgoingPacket { public enum skillType { @@ -67,19 +70,19 @@ public class AquireSkillList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x8a); - writeD(_fishingSkills.ordinal()); // c4 : C5 : 0: usuall 1: fishing 2: clans - writeD(_skills.size()); - + OutgoingPackets.AQUIRE_SKILL_LIST.writeId(packet); + packet.writeD(_fishingSkills.ordinal()); // c4 : C5 : 0: usual 1: fishing 2: clans + packet.writeD(_skills.size()); for (Skill temp : _skills) { - writeD(temp.id); - writeD(temp.nextLevel); - writeD(temp.maxLevel); - writeD(temp.spCost); - writeD(temp.requirements); + packet.writeD(temp.id); + packet.writeD(temp.nextLevel); + packet.writeD(temp.maxLevel); + packet.writeD(temp.spCost); + packet.writeD(temp.requirements); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinAlly.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinAlly.java index ae36782ade..70f2374a1c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinAlly.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinAlly.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample *

    @@ -24,7 +27,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * format cdd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AskJoinAlly extends GameServerPacket +public class AskJoinAlly implements IClientOutgoingPacket { private final String _requestorName; private final int _requestorObjId; @@ -40,10 +43,11 @@ public class AskJoinAlly extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa8); - writeD(_requestorObjId); - writeS(_requestorName); + OutgoingPackets.ASK_JOIN_ALLY.writeId(packet); + packet.writeD(_requestorObjId); + packet.writeS(_requestorName); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinFriend.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinFriend.java index f433270153..4b22887647 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinFriend.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinFriend.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample *

    @@ -24,7 +27,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * format cdd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AskJoinFriend extends GameServerPacket +public class AskJoinFriend implements IClientOutgoingPacket { private final String _requestorName; @@ -38,10 +41,11 @@ public class AskJoinFriend extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x7d); - writeS(_requestorName); - writeD(0); + OutgoingPackets.ASK_JOIN_FRIEND.writeId(packet); + packet.writeS(_requestorName); + packet.writeD(0); + return false; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinParty.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinParty.java index 1967078efa..6c4d98d8fd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinParty.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinParty.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample *

    @@ -24,7 +27,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * format cdd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AskJoinParty extends GameServerPacket +public class AskJoinParty implements IClientOutgoingPacket { private final String _requestorName; private final int _itemDistribution; @@ -40,10 +43,11 @@ public class AskJoinParty extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x39); - writeS(_requestorName); - writeD(_itemDistribution); + OutgoingPackets.ASK_JOIN_PARTY.writeId(packet); + packet.writeS(_requestorName); + packet.writeD(_itemDistribution); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinPledge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinPledge.java index 7bdb006b9f..31a426f386 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinPledge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AskJoinPledge.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class AskJoinPledge extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class AskJoinPledge implements IClientOutgoingPacket { private final int _requestorObjId; private final String _pledgeName; @@ -28,10 +31,11 @@ public class AskJoinPledge extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x32); - writeD(_requestorObjId); - writeS(_pledgeName); + OutgoingPackets.ASK_JOIN_PLEDGE.writeId(packet); + packet.writeD(_requestorObjId); + packet.writeS(_pledgeName); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Attack.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Attack.java index ccb7590d2d..0347dc2bc2 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Attack.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Attack.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 06 8f19904b 2522d04b 00000000 80 950c0000 4af50000 08f2ffff 0000 - 0 damage (missed 0x80) 06 85071048 bc0e504b 32000000 10 fc41ffff fd240200 a6f5ffff 0100 bc0e504b 33000000 10 3.... format dddc dddh (ddc) * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class Attack extends GameServerPacket +public class Attack implements IClientOutgoingPacket { private class Hit { @@ -110,23 +112,23 @@ public class Attack extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x05); - - writeD(_attackerObjId); - writeD(_hits[0]._targetId); - writeD(_hits[0]._damage); - writeC(_hits[0]._flags); - writeD(_x); - writeD(_y); - writeD(_z); - writeH(_hits.length - 1); + OutgoingPackets.ATTACK.writeId(packet); + packet.writeD(_attackerObjId); + packet.writeD(_hits[0]._targetId); + packet.writeD(_hits[0]._damage); + packet.writeC(_hits[0]._flags); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeH(_hits.length - 1); for (int i = 1; i < _hits.length; i++) { - writeD(_hits[i]._targetId); - writeD(_hits[i]._damage); - writeC(_hits[i]._flags); + packet.writeD(_hits[i]._targetId); + packet.writeD(_hits[i]._damage); + packet.writeC(_hits[i]._flags); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AuthLoginFail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AuthLoginFail.java index c51cae6ac7..95eb85a868 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AuthLoginFail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AuthLoginFail.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * format d * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class AuthLoginFail extends GameServerPacket +public class AuthLoginFail implements IClientOutgoingPacket { public static final int NO_TEXT = 0; public static final int SYSTEM_ERROR_LOGIN_LATER = 1; @@ -45,9 +48,10 @@ public class AuthLoginFail extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x14); - writeD(_reason); + OutgoingPackets.AUTH_LOGIN_FAIL.writeId(packet); + packet.writeD(_reason); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStart.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStart.java index fc83e16f88..ddb2b83055 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStart.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStart.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AutoAttackStart extends GameServerPacket +public class AutoAttackStart implements IClientOutgoingPacket { private final int _targetObjId; @@ -32,9 +35,10 @@ public class AutoAttackStart extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2b); - writeD(_targetObjId); + OutgoingPackets.AUTO_ATTACK_START.writeId(packet); + packet.writeD(_targetObjId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStop.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStop.java index e4d1d79690..65845675a7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStop.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/AutoAttackStop.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class AutoAttackStop extends GameServerPacket +public class AutoAttackStop implements IClientOutgoingPacket { private final int _targetObjId; @@ -32,9 +35,10 @@ public class AutoAttackStop extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2c); - writeD(_targetObjId); + OutgoingPackets.AUTO_ATTACK_STOP.writeId(packet); + packet.writeD(_targetObjId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BeginRotation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BeginRotation.java index e4e3137f6c..04f2ec6912 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BeginRotation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BeginRotation.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class BeginRotation extends GameServerPacket +public class BeginRotation implements IClientOutgoingPacket { private final int _objectId; private final int _degree; @@ -34,15 +36,16 @@ public class BeginRotation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x62); - writeD(_objectId); - writeD(_degree); - writeD(_side); + OutgoingPackets.BEGIN_ROTATION.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_degree); + packet.writeD(_side); if (_speed != 0) { - writeD(_speed); + packet.writeD(_speed); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BuyList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BuyList.java index 83569db37a..2435e5258d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BuyList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BuyList.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StoreTradeList; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 1d 1e 00 00 00 // ?? 5c 4a a0 7c // buy list id 02 00 // item count 04 00 // itemType1 0-weapon/ring/earring/necklace 1-armor/shield 4-item/questitem/adena 00 00 00 00 // objectid 32 04 00 00 // itemid 00 00 00 00 // count 05 00 // itemType2 0-weapon 1-shield/armor 2-ring/earring/necklace * 3-questitem 4-adena 5-item 00 00 60 09 00 00 // price 00 00 00 00 00 00 b6 00 00 00 00 00 00 00 00 00 00 00 80 00 // body slot these 4 values are only used if itemtype1 = 0 or 1 00 00 // 00 00 // 00 00 // 50 c6 0c 00 format dd h (h dddhh hhhh d) revision 377 format dd h (h dddhh dhhh d) * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class BuyList extends GameServerPacket +public class BuyList implements IClientOutgoingPacket { private final int _listId; private final ItemInstance[] _list; @@ -60,56 +62,57 @@ public class BuyList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x11); - writeD(_money); // current money - writeD(_listId); + OutgoingPackets.BUY_LIST.writeId(packet); + packet.writeD(_money); // current money + packet.writeD(_listId); - writeH(_list.length); + packet.writeH(_list.length); for (ItemInstance item : _list) { if ((item.getCount() > 0) || (item.getCount() == -1)) { - writeH(item.getItem().getType1()); // item type1 - writeD(item.getObjectId()); - writeD(item.getItemId()); + packet.writeH(item.getItem().getType1()); // item type1 + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); if (item.getCount() < 0) { - writeD(0x00); // max amount of items that a player can buy at a time (with this itemid) + packet.writeD(0x00); // max amount of items that a player can buy at a time (with this itemid) } else { - writeD(item.getCount()); + packet.writeD(item.getCount()); } - writeH(item.getItem().getType2()); // item type2 - writeH(0x00); // ? + packet.writeH(item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? if (item.getItem().getType1() != Item.TYPE1_ITEM_QUESTITEM_ADENA) { - writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(item.getEnchantLevel()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getEnchantLevel()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); } else { - writeD(0x00); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(0x00); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(0x00); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(0x00); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); } if ((item.getItemId() >= 3960) && (item.getItemId() <= 4026)) { - writeD((int) (item.getPriceToSell() * Config.RATE_SIEGE_GUARDS_PRICE * (1 + _taxRate))); + packet.writeD((int) (item.getPriceToSell() * Config.RATE_SIEGE_GUARDS_PRICE * (1 + _taxRate))); } else { - writeD((int) (item.getPriceToSell() * (1 + _taxRate))); + packet.writeD((int) (item.getPriceToSell() * (1 + _taxRate))); } } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BuyListSeed.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BuyListSeed.java index fe2b0ccbd9..abb3a8f266 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BuyListSeed.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/BuyListSeed.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StoreTradeList; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: c ddh[hdddhhd] c - id (0xE8) d - money d - manor id h - size [ h - item type 1 d - object id d - item id d - count h - item type 2 h d - price ] * @author l3x */ -public class BuyListSeed extends GameServerPacket +public class BuyListSeed implements IClientOutgoingPacket { private final int _manorId; private List _list = new ArrayList<>(); @@ -40,24 +42,22 @@ public class BuyListSeed extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xE8); - - writeD(_money); // current money - writeD(_manorId); // manor id - - writeH(_list.size()); // list length - + OutgoingPackets.BUY_LIST_SEED.writeId(packet); + packet.writeD(_money); // current money + packet.writeD(_manorId); // manor id + packet.writeH(_list.size()); // list length for (ItemInstance item : _list) { - writeH(0x04); // item->type1 - writeD(0x00); // objectId - writeD(item.getItemId()); // item id - writeD(item.getCount()); // item count - writeH(0x04); // item->type2 - writeH(0x00); // unknown :) - writeD(item.getPriceToSell()); // price + packet.writeH(0x04); // item->type1 + packet.writeD(0x00); // objectId + packet.writeD(item.getItemId()); // item id + packet.writeD(item.getCount()); // item count + packet.writeH(0x04); // item->type2 + packet.writeH(0x00); // unknown :) + packet.writeD(item.getPriceToSell()); // price } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CameraMode.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CameraMode.java index b08b1f6f50..b18dac4cc3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CameraMode.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CameraMode.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class CameraMode extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class CameraMode implements IClientOutgoingPacket { private final int _mode; @@ -30,9 +33,10 @@ public class CameraMode extends GameServerPacket } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xf1); - writeD(_mode); + OutgoingPackets.CAMERA_MODE.writeId(packet); + packet.writeD(_mode); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChairSit.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChairSit.java index b9dd443658..6ca22d6870 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChairSit.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChairSit.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ChairSit extends GameServerPacket +public class ChairSit implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _staticObjectId; @@ -38,10 +40,11 @@ public class ChairSit extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe1); - writeD(_player.getObjectId()); - writeD(_staticObjectId); + OutgoingPackets.CHAIR_SIT.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_staticObjectId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChangeMoveType.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChangeMoveType.java index 40285f4b0d..db63fdbe5b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChangeMoveType.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChangeMoveType.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 3e 2a 89 00 4c 01 00 00 00 .|... format dd * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class ChangeMoveType extends GameServerPacket +public class ChangeMoveType implements IClientOutgoingPacket { public static final int WALK = 0; public static final int RUN = 1; @@ -37,11 +39,12 @@ public class ChangeMoveType extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2e); - writeD(_objectId); - writeD(_running ? RUN : WALK); - writeD(0); // c2 + OutgoingPackets.CHANGE_MOVE_TYPE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_running ? RUN : WALK); + packet.writeD(0); // c2 + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChangeWaitType.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChangeWaitType.java index ef8c803c9e..7d792654d8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChangeWaitType.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChangeWaitType.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 3f 2a 89 00 4c 01 00 00 00 0a 15 00 00 66 fe 00 ?*..L........f.. 0010: 00 7c f1 ff ff .|... format dd ddd * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class ChangeWaitType extends GameServerPacket +public class ChangeWaitType implements IClientOutgoingPacket { private final int _objectId; private final int _moveType; @@ -45,13 +47,14 @@ public class ChangeWaitType extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2f); - writeD(_objectId); - writeD(_moveType); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.CHANGE_WAIT_TYPE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_moveType); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateFail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateFail.java index 95392879ac..cdb6a948d9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateFail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateFail.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharCreateFail extends GameServerPacket +public class CharCreateFail implements IClientOutgoingPacket { public static final int REASON_CREATION_FAILED = 0x00; public static final int REASON_TOO_MANY_CHARACTERS = 0x01; @@ -35,9 +38,10 @@ public class CharCreateFail extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x1a); - writeD(_error); + OutgoingPackets.CHAR_CREATE_FAIL.writeId(packet); + packet.writeD(_error); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateOk.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateOk.java index 7be1186359..4f5aa889c4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateOk.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharCreateOk.java @@ -16,15 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharCreateOk extends GameServerPacket +public class CharCreateOk implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x19); - writeD(0x01); + OutgoingPackets.CHAR_CREATE_OK.writeId(packet); + packet.writeD(0x01); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteFail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteFail.java index 0070ba239c..7b22f12774 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteFail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteFail.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharDeleteFail extends GameServerPacket +public class CharDeleteFail implements IClientOutgoingPacket { public static final int REASON_DELETION_FAILED = 0x01; public static final int REASON_YOU_MAY_NOT_DELETE_CLAN_MEMBER = 0x02; @@ -33,9 +36,10 @@ public class CharDeleteFail extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x24); - writeD(_error); + OutgoingPackets.CHAR_DELETE_FAIL.writeId(packet); + packet.writeD(_error); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteOk.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteOk.java index 364e20b2c8..33e8fdd881 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteOk.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharDeleteOk.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class CharDeleteOk extends GameServerPacket +public class CharDeleteOk implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x23); + OutgoingPackets.CHAR_DELETE_OK.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index ba6f29998c..da86cfbea6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -17,12 +17,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class CharInfo extends GameServerPacket +public class CharInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Inventory _inventory; @@ -31,8 +33,9 @@ public class CharInfo extends GameServerPacket private final int _flyRunSpd; private final int _flyWalkSpd; private final float _moveMultiplier; + private final boolean _gmSeeInvis; - public CharInfo(PlayerInstance player) + public CharInfo(PlayerInstance player, boolean gmSeeInvis) { _player = player; _inventory = player.getInventory(); @@ -41,199 +44,170 @@ public class CharInfo extends GameServerPacket _walkSpd = Math.round(player.getWalkSpeed() / _moveMultiplier); _flyRunSpd = player.isFlying() ? _runSpd : 0; _flyWalkSpd = player.isFlying() ? _walkSpd : 0; + _gmSeeInvis = gmSeeInvis; } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - boolean isGM = false; - final PlayerInstance tmp = getClient().getPlayer(); - if ((tmp != null) && tmp.isGM()) - { - isGM = true; - } - if (!isGM && _player.getAppearance().isInvisible()) - { - return; - } - - writeC(0x03); - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); - writeD(_player.getBoat() != null ? _player.getBoat().getObjectId() : 0); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getRace().ordinal()); - writeD(_player.getAppearance().isFemale() ? 1 : 0); + OutgoingPackets.CHAR_INFO.writeId(packet); + packet.writeD(_player.getX()); + packet.writeD(_player.getY()); + packet.writeD(_player.getZ()); + packet.writeD(_player.getBoat() != null ? _player.getBoat().getObjectId() : 0); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getRace().ordinal()); + packet.writeD(_player.getAppearance().isFemale() ? 1 : 0); if (_player.getClassIndex() == 0) { - writeD(_player.getClassId().getId()); + packet.writeD(_player.getClassId().getId()); } else { - writeD(_player.getBaseClass()); + packet.writeD(_player.getBaseClass()); } - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FACE)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FACE)); // c6 new h's - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeD(_inventory.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND)); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeD(_inventory.getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND)); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeD(_inventory.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND)); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeD(_inventory.getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND)); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); - writeD(_player.getPvpFlag()); - writeD(_player.getKarma()); + packet.writeD(_player.getPvpFlag()); + packet.writeD(_player.getKarma()); - writeD(_player.getMAtkSpd()); - writeD(_player.getPAtkSpd()); + packet.writeD(_player.getMAtkSpd()); + packet.writeD(_player.getPAtkSpd()); - writeD(_player.getPvpFlag()); - writeD(_player.getKarma()); + packet.writeD(_player.getPvpFlag()); + packet.writeD(_player.getKarma()); - writeD(_runSpd); // base run speed - writeD(_walkSpd); // base walk speed - writeD(_runSpd); // swim run speed (calculated by getter) - writeD(_walkSpd); // swim walk speed (calculated by getter) - writeD(_flyRunSpd); // fly run speed ? - writeD(_flyWalkSpd); // fly walk speed ? - writeD(_flyRunSpd); - writeD(_flyWalkSpd); - writeF(_moveMultiplier); - writeF(_player.getAttackSpeedMultiplier()); - writeF(_player.getCollisionRadius()); - writeF(_player.getCollisionHeight()); - writeD(_player.getAppearance().getHairStyle()); - writeD(_player.getAppearance().getHairColor()); - writeD(_player.getAppearance().getFace()); + packet.writeD(_runSpd); // base run speed + packet.writeD(_walkSpd); // base walk speed + packet.writeD(_runSpd); // swim run speed (calculated by getter) + packet.writeD(_walkSpd); // swim walk speed (calculated by getter) + packet.writeD(_flyRunSpd); // fly run speed ? + packet.writeD(_flyWalkSpd); // fly walk speed ? + packet.writeD(_flyRunSpd); + packet.writeD(_flyWalkSpd); + packet.writeF(_moveMultiplier); + packet.writeF(_player.getAttackSpeedMultiplier()); + packet.writeF(_player.getCollisionRadius()); + packet.writeF(_player.getCollisionHeight()); + packet.writeD(_player.getAppearance().getHairStyle()); + packet.writeD(_player.getAppearance().getHairColor()); + packet.writeD(_player.getAppearance().getFace()); - if (_player.getAppearance().isInvisible()) - { - writeS("[Invisible]"); - } - else - { - writeS(_player.getTitle()); - } + packet.writeS(_gmSeeInvis ? "Invisible" : _player.getTitle()); - writeD(_player.getClanId()); - writeD(_player.getClanCrestId()); - writeD(_player.getAllyId()); - writeD(_player.getAllyCrestId()); + packet.writeD(_player.getClanId()); + packet.writeD(_player.getClanCrestId()); + packet.writeD(_player.getAllyId()); + packet.writeD(_player.getAllyCrestId()); // In UserInfo leader rights and siege flags, but here found nothing?? // Therefore RelationChanged packet with that info is required - writeD(0x00); + packet.writeD(0x00); - writeC(_player.isSitting() ? 0 : 1); // standing = 1 sitting = 0 - writeC(_player.isRunning() ? 1 : 0); // running = 1 walking = 0 - writeC(_player.isInCombat() ? 1 : 0); - writeC(_player.isAlikeDead() ? 1 : 0); + packet.writeC(_player.isSitting() ? 0 : 1); // standing = 1 sitting = 0 + packet.writeC(_player.isRunning() ? 1 : 0); // running = 1 walking = 0 + packet.writeC(_player.isInCombat() ? 1 : 0); + packet.writeC(_player.isAlikeDead() ? 1 : 0); - // if(gmSeeInvis) - // { - writeC(0x00); // if the charinfo is written means receiver can see the char - // } - // else - // { - // writeC(_activeChar.getAppearance().getInvisible() ? 1 : 0); // invisible = 1 visible =0 - // } - writeC(_player.getMountType()); // 1 on strider 2 on wyvern 0 no mount - writeC(_player.getPrivateStoreType()); // 1 - sellshop + packet.writeC(!_gmSeeInvis && _player.getAppearance().isInvisible() ? 1 : 0); // invisible = 1 visible = 0 - writeH(_player.getCubics().size()); + packet.writeC(_player.getMountType()); // 1 on strider 2 on wyvern 0 no mount + packet.writeC(_player.getPrivateStoreType()); // 1 - sellshop + + packet.writeH(_player.getCubics().size()); for (int cubicId : _player.getCubics().keySet()) { - writeH(cubicId); + packet.writeH(cubicId); } - writeC(_player.isInPartyMatchRoom() ? 1 : 0); + packet.writeC(_player.isInPartyMatchRoom() ? 1 : 0); - if (_player.getAppearance().isInvisible()) - { - writeD((_player.getAbnormalEffect() | Creature.ABNORMAL_EFFECT_STEALTH)); - } - else - { - writeD(_player.getAbnormalEffect()); - } + packet.writeD(_gmSeeInvis ? (_player.getAbnormalEffect() | Creature.ABNORMAL_EFFECT_STEALTH) : _player.getAbnormalEffect()); - writeC(_player.getRecomLeft()); - writeH(_player.getRecomHave()); // Blue value for name (0 = white, 255 = pure blue) - writeD(_player.getClassId().getId()); + packet.writeC(_player.getRecomLeft()); + packet.writeH(_player.getRecomHave()); // Blue value for name (0 = white, 255 = pure blue) + packet.writeD(_player.getClassId().getId()); - writeD(_player.getMaxCp()); - writeD((int) _player.getCurrentCp()); - writeC(_player.isMounted() ? 0 : _player.getEnchantEffect()); + packet.writeD(_player.getMaxCp()); + packet.writeD((int) _player.getCurrentCp()); + packet.writeC(_player.isMounted() ? 0 : _player.getEnchantEffect()); if (_player.getTeam() == 1) { - writeC(0x01); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x01); // team circle around feet 1 = Blue, 2 = red } else if (_player.getTeam() == 2) { - writeC(0x02); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x02); // team circle around feet 1 = Blue, 2 = red } else { - writeC(0x00); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x00); // team circle around feet 1 = Blue, 2 = red } - writeD(_player.getClanCrestLargeId()); - writeC(_player.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I - writeC((_player.isHero() || (_player.isGM() && Config.GM_HERO_AURA) || _player.isPVPHero()) ? 1 : 0); // Hero Aura + packet.writeD(_player.getClanCrestLargeId()); + packet.writeC(_player.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I + packet.writeC((_player.isHero() || (_player.isGM() && Config.GM_HERO_AURA) || _player.isPVPHero()) ? 1 : 0); // Hero Aura - writeC(_player.isFishing() ? 1 : 0); // 0x01: Fishing Mode (Cant be undone by setting back to 0) - writeD(_player.getFishX()); - writeD(_player.getFishY()); - writeD(_player.getFishZ()); + packet.writeC(_player.isFishing() ? 1 : 0); // 0x01: Fishing Mode (Cant be undone by setting back to 0) + packet.writeD(_player.getFishX()); + packet.writeD(_player.getFishY()); + packet.writeD(_player.getFishZ()); - writeD(_player.getAppearance().getNameColor()); + packet.writeD(_player.getAppearance().getNameColor()); - writeD(_player.getHeading()); + packet.writeD(_player.getHeading()); - writeD(_player.getPledgeClass()); - writeD(_player.getPledgeType()); + packet.writeD(_player.getPledgeClass()); + packet.writeD(_player.getPledgeType()); - writeD(_player.getAppearance().getTitleColor()); + packet.writeD(_player.getAppearance().getTitleColor()); if (_player.isCursedWeaponEquiped()) { - writeD(CursedWeaponsManager.getInstance().getLevel(_player.getCursedWeaponEquipedId())); + packet.writeD(CursedWeaponsManager.getInstance().getLevel(_player.getCursedWeaponEquipedId())); } else { - writeD(0x00); + packet.writeD(0x00); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharMoveToLocation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharMoveToLocation.java index dbeb3a2119..2818d38e74 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharMoveToLocation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharMoveToLocation.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 0000: 01 7a 73 10 4c b2 0b 00 00 a3 fc 00 00 e8 f1 ff .zs.L........... 0010: ff bd 0b 00 00 b3 fc 00 00 e8 f1 ff ff ............. ddddddd * @version $Revision: 1.3.4.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class CharMoveToLocation extends GameServerPacket +public class CharMoveToLocation implements IClientOutgoingPacket { private final int _objectId; private final int _x; @@ -44,18 +46,19 @@ public class CharMoveToLocation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x01); + OutgoingPackets.CHAR_MOVE_TO_LOCATION.writeId(packet); - writeD(_objectId); + packet.writeD(_objectId); - writeD(_xDst); - writeD(_yDst); - writeD(_zDst); + packet.writeD(_xDst); + packet.writeD(_yDst); + packet.writeD(_zDst); - writeD(_x); - writeD(_y); - writeD(_z); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharSelectInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharSelectInfo.java index c50e384850..ea4ce1ed20 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharSelectInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharSelectInfo.java @@ -24,17 +24,19 @@ import java.util.List; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.CharSelectInfoPackage; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.network.GameClient; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.8.2.4.2.6 $ $Date: 2005/04/06 16:13:46 $ */ -public class CharSelectInfo extends GameServerPacket +public class CharSelectInfo implements IClientOutgoingPacket { private static final Logger LOGGER = Logger.getLogger(CharSelectInfo.class.getName()); @@ -72,11 +74,11 @@ public class CharSelectInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final int size = _characterPackages.length; - writeC(0x13); - writeD(size); + OutgoingPackets.CHAR_SELECT_INFO.writeId(packet); + packet.writeD(size); long lastAccess = 0; if (_activeId == -1) @@ -94,91 +96,91 @@ public class CharSelectInfo extends GameServerPacket for (int i = 0; i < size; i++) { final CharSelectInfoPackage charInfoPackage = _characterPackages[i]; - writeS(charInfoPackage.getName()); - writeD(charInfoPackage.getCharId()); - writeS(_loginName); - writeD(_sessionId); - writeD(charInfoPackage.getClanId()); - writeD(0x00); // ?? + packet.writeS(charInfoPackage.getName()); + packet.writeD(charInfoPackage.getCharId()); + packet.writeS(_loginName); + packet.writeD(_sessionId); + packet.writeD(charInfoPackage.getClanId()); + packet.writeD(0x00); // ?? - writeD(charInfoPackage.getSex()); - writeD(charInfoPackage.getRace()); + packet.writeD(charInfoPackage.getSex()); + packet.writeD(charInfoPackage.getRace()); if (charInfoPackage.getClassId() == charInfoPackage.getBaseClassId()) { - writeD(charInfoPackage.getClassId()); + packet.writeD(charInfoPackage.getClassId()); } else { - writeD(charInfoPackage.getBaseClassId()); + packet.writeD(charInfoPackage.getBaseClassId()); } - writeD(0x01); // active ?? + packet.writeD(0x01); // active ?? - writeD(0x00); // x - writeD(0x00); // y - writeD(0x00); // z + packet.writeD(0x00); // x + packet.writeD(0x00); // y + packet.writeD(0x00); // z - writeF(charInfoPackage.getCurrentHp()); // hp cur - writeF(charInfoPackage.getCurrentMp()); // mp cur + packet.writeF(charInfoPackage.getCurrentHp()); // hp cur + packet.writeF(charInfoPackage.getCurrentMp()); // mp cur - writeD(charInfoPackage.getSp()); - writeQ(charInfoPackage.getExp()); - writeD(charInfoPackage.getLevel()); + packet.writeD(charInfoPackage.getSp()); + packet.writeQ(charInfoPackage.getExp()); + packet.writeD(charInfoPackage.getLevel()); - writeD(charInfoPackage.getKarma()); // karma - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); + packet.writeD(charInfoPackage.getKarma()); // karma + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); - writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_FACE)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(charInfoPackage.getPaperdollObjectId(Inventory.PAPERDOLL_FACE)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_REAR)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_NECK)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); - writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_FACE)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_REAR)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_NECK)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_FACE)); - writeD(charInfoPackage.getHairStyle()); - writeD(charInfoPackage.getHairColor()); - writeD(charInfoPackage.getFace()); + packet.writeD(charInfoPackage.getHairStyle()); + packet.writeD(charInfoPackage.getHairColor()); + packet.writeD(charInfoPackage.getFace()); - writeF(charInfoPackage.getMaxHp()); // hp max - writeF(charInfoPackage.getMaxMp()); // mp max + packet.writeF(charInfoPackage.getMaxHp()); // hp max + packet.writeF(charInfoPackage.getMaxMp()); // mp max final long deleteTime = charInfoPackage.getDeleteTimer(); final int accesslevels = charInfoPackage.getAccessLevel(); @@ -192,24 +194,25 @@ public class CharSelectInfo extends GameServerPacket deletedays = -1; // like L2OFF player looks dead if he is banned. } - writeD(deletedays); // days left before + packet.writeD(deletedays); // days left before // delete .. if != 0 // then char is inactive - writeD(charInfoPackage.getClassId()); + packet.writeD(charInfoPackage.getClassId()); if (i == _activeId) { - writeD(0x01); + packet.writeD(0x01); } else { - writeD(0x00); // c3 auto-select char + packet.writeD(0x00); // c3 auto-select char } - writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect()); + packet.writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect()); - writeD(charInfoPackage.getAugmentationId()); + packet.writeD(charInfoPackage.getAugmentationId()); } + return true; } private CharSelectInfoPackage[] loadCharacterSelectInfo() diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharSelected.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharSelected.java index 14f313ed1b..94148928a6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharSelected.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharSelected.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.5.2.6 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharSelected extends GameServerPacket +public class CharSelected implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _sessionId; @@ -38,66 +40,67 @@ public class CharSelected extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x15); + OutgoingPackets.CHAR_SELECTED.writeId(packet); - writeS(_player.getName()); - writeD(_player.getObjectId()); // ?? - writeS(_player.getTitle()); - writeD(_sessionId); - writeD(_player.getClanId()); - writeD(0x00); // ?? - writeD(_player.getAppearance().isFemale() ? 1 : 0); - writeD(_player.getRace().ordinal()); - writeD(_player.getClassId().getId()); - writeD(0x01); // active ?? - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); + packet.writeS(_player.getName()); + packet.writeD(_player.getObjectId()); // ?? + packet.writeS(_player.getTitle()); + packet.writeD(_sessionId); + packet.writeD(_player.getClanId()); + packet.writeD(0x00); // ?? + packet.writeD(_player.getAppearance().isFemale() ? 1 : 0); + packet.writeD(_player.getRace().ordinal()); + packet.writeD(_player.getClassId().getId()); + packet.writeD(0x01); // active ?? + packet.writeD(_player.getX()); + packet.writeD(_player.getY()); + packet.writeD(_player.getZ()); - writeF(_player.getCurrentHp()); - writeF(_player.getCurrentMp()); - writeD(_player.getSp()); - writeQ(_player.getExp()); - writeD(_player.getLevel()); - writeD(_player.getKarma()); // thx evill33t - writeD(0x0); // ? - writeD(_player.getINT()); - writeD(_player.getSTR()); - writeD(_player.getCON()); - writeD(_player.getMEN()); - writeD(_player.getDEX()); - writeD(_player.getWIT()); + packet.writeF(_player.getCurrentHp()); + packet.writeF(_player.getCurrentMp()); + packet.writeD(_player.getSp()); + packet.writeQ(_player.getExp()); + packet.writeD(_player.getLevel()); + packet.writeD(_player.getKarma()); // thx evill33t + packet.writeD(0x0); // ? + packet.writeD(_player.getINT()); + packet.writeD(_player.getSTR()); + packet.writeD(_player.getCON()); + packet.writeD(_player.getMEN()); + packet.writeD(_player.getDEX()); + packet.writeD(_player.getWIT()); for (int i = 0; i < 30; i++) { - writeD(0x00); + packet.writeD(0x00); } - // writeD(0); //c3 - // writeD(0); //c3 - // writeD(0); //c3 - writeD(0x00); // c3 work - writeD(0x00); // c3 work + // packet.writeD(0); //c3 + // packet.writeD(0); //c3 + // packet.writeD(0); //c3 + packet.writeD(0x00); // c3 work + packet.writeD(0x00); // c3 work // extra info - writeD(GameTimeController.getInstance().getGameTime()); // in-game time + packet.writeD(GameTimeController.getInstance().getGameTime()); // in-game time - writeD(0x00); // + packet.writeD(0x00); // - writeD(0x00); // c3 + packet.writeD(0x00); // c3 - writeD(0x00); // c3 InspectorBin - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 + packet.writeD(0x00); // c3 InspectorBin + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 - writeD(0x00); // c3 InspectorBin for 528 client - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 - writeD(0x00); // c3 + packet.writeD(0x00); // c3 InspectorBin for 528 client + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + packet.writeD(0x00); // c3 + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharTemplates.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharTemplates.java index 80a128d1f4..39c3f6639d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharTemplates.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharTemplates.java @@ -19,12 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.7 $ $Date: 2005/03/27 15:29:39 $ */ -public class CharTemplates extends GameServerPacket +public class CharTemplates implements IClientOutgoingPacket { private final List _chars = new ArrayList<>(); @@ -34,33 +36,34 @@ public class CharTemplates extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x17); - writeD(_chars.size()); + OutgoingPackets.CHAR_TEMPLATES.writeId(packet); + packet.writeD(_chars.size()); for (PlayerTemplate temp : _chars) { - writeD(temp.getRace().ordinal()); - writeD(temp.getClassId().getId()); - writeD(0x46); - writeD(temp.getBaseSTR()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseDEX()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseCON()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseINT()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseWIT()); - writeD(0x0a); - writeD(0x46); - writeD(temp.getBaseMEN()); - writeD(0x0a); + packet.writeD(temp.getRace().ordinal()); + packet.writeD(temp.getClassId().getId()); + packet.writeD(0x46); + packet.writeD(temp.getBaseSTR()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseDEX()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseCON()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseINT()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseWIT()); + packet.writeD(0x0a); + packet.writeD(0x46); + packet.writeD(temp.getBaseMEN()); + packet.writeD(0x0a); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChooseInventoryItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChooseInventoryItem.java index ade86f4831..d59df7911a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChooseInventoryItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ChooseInventoryItem.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class ChooseInventoryItem extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class ChooseInventoryItem implements IClientOutgoingPacket { private final int _itemId; @@ -26,9 +29,10 @@ public class ChooseInventoryItem extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x6f); - writeD(_itemId); + OutgoingPackets.CHOOSE_INVENTORY_ITEM.writeId(packet); + packet.writeD(_itemId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ClanHallDecoration.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ClanHallDecoration.java index 8c8c109650..060ae560f6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ClanHallDecoration.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ClanHallDecoration.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.residences.ClanHall; import org.l2jmobius.gameserver.model.residences.ClanHall.ClanHallFunction; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Steuf */ -public class ClanHallDecoration extends GameServerPacket +public class ClanHallDecoration implements IClientOutgoingPacket { private final ClanHall _clanHall; @@ -32,150 +34,151 @@ public class ClanHallDecoration extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xf7); - writeD(_clanHall.getId()); // clanhall id + OutgoingPackets.CLAN_HALL_DECORATION.writeId(packet); + packet.writeD(_clanHall.getId()); // clanhall id // FUNC_RESTORE_HP ClanHallFunction function = _clanHall.getFunction(ClanHall.FUNC_RESTORE_HP); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 220)) || ((_clanHall.getGrade() == 1) && (function.getLvl() < 160)) || ((_clanHall.getGrade() == 2) && (function.getLvl() < 260)) || ((_clanHall.getGrade() == 3) && (function.getLvl() < 300))) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_RESTORE_MP function = _clanHall.getFunction(ClanHall.FUNC_RESTORE_MP); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); - writeC(0); + packet.writeC(0); + packet.writeC(0); } else if ((((_clanHall.getGrade() == 0) || (_clanHall.getGrade() == 1)) && (function.getLvl() < 25)) || ((_clanHall.getGrade() == 2) && (function.getLvl() < 30)) || ((_clanHall.getGrade() == 3) && (function.getLvl() < 40))) { - writeC(1); - writeC(1); + packet.writeC(1); + packet.writeC(1); } else { - writeC(2); - writeC(2); + packet.writeC(2); + packet.writeC(2); } // FUNC_RESTORE_EXP function = _clanHall.getFunction(ClanHall.FUNC_RESTORE_EXP); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 25)) || ((_clanHall.getGrade() == 1) && (function.getLvl() < 30)) || ((_clanHall.getGrade() == 2) && (function.getLvl() < 40)) || ((_clanHall.getGrade() == 3) && (function.getLvl() < 50))) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_TELEPORT function = _clanHall.getFunction(ClanHall.FUNC_TELEPORT); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (function.getLvl() < 2) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } - writeC(0); + packet.writeC(0); // CURTAINS function = _clanHall.getFunction(ClanHall.FUNC_DECO_CURTAINS); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (function.getLvl() <= 1) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_ITEM_CREATE function = _clanHall.getFunction(ClanHall.FUNC_ITEM_CREATE); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 2)) || (function.getLvl() < 3)) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_SUPPORT function = _clanHall.getFunction(ClanHall.FUNC_SUPPORT); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); - writeC(0); + packet.writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 2)) || ((_clanHall.getGrade() == 1) && (function.getLvl() < 4)) || ((_clanHall.getGrade() == 2) && (function.getLvl() < 5)) || ((_clanHall.getGrade() == 3) && (function.getLvl() < 8))) { - writeC(1); - writeC(1); + packet.writeC(1); + packet.writeC(1); } else { - writeC(2); - writeC(2); + packet.writeC(2); + packet.writeC(2); } // Front Plateform function = _clanHall.getFunction(ClanHall.FUNC_DECO_FRONTPLATEFORM); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (function.getLvl() <= 1) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } // FUNC_ITEM_CREATE function = _clanHall.getFunction(ClanHall.FUNC_ITEM_CREATE); if ((function == null) || (function.getLvl() == 0)) { - writeC(0); + packet.writeC(0); } else if (((_clanHall.getGrade() == 0) && (function.getLvl() < 2)) || (function.getLvl() < 3)) { - writeC(1); + packet.writeC(1); } else { - writeC(2); + packet.writeC(2); } - writeD(0); - writeD(0); + packet.writeD(0); + packet.writeD(0); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ClientSetTime.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ClientSetTime.java index 5ce56d88c6..d83c69028a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ClientSetTime.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ClientSetTime.java @@ -16,15 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.GameTimeController; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class ClientSetTime extends GameServerPacket +public class ClientSetTime implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xEC); - writeD(GameTimeController.getInstance().getGameTime()); // time in client minutes - writeD(6); // constant to match the server time( this determines the speed of the client clock) + OutgoingPackets.CLIENT_SET_TIME.writeId(packet); + packet.writeD(GameTimeController.getInstance().getGameTime()); // time in client minutes + packet.writeD(6); // constant to match the server time( this determines the speed of the client clock) + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ConfirmDlg.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ConfirmDlg.java index aee6077a58..0595966836 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ConfirmDlg.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ConfirmDlg.java @@ -19,10 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author kombat Format: cd d[d s/d/dd/ddd] */ -public class ConfirmDlg extends GameServerPacket +public class ConfirmDlg implements IClientOutgoingPacket { private final int _messageId; private int _skillLevel = 1; @@ -36,6 +40,7 @@ public class ConfirmDlg extends GameServerPacket private final List _values = new ArrayList<>(); private int _time = 0; private int _requesterId = 0; + private PlayerInstance _targetPlayer = null; public ConfirmDlg(int messageId) { @@ -96,9 +101,10 @@ public class ConfirmDlg extends GameServerPacket return this; } - public ConfirmDlg addTime(int time) + public ConfirmDlg addTime(int time, PlayerInstance targetPlayer) { _time = time; + _targetPlayer = targetPlayer; return this; } @@ -109,22 +115,22 @@ public class ConfirmDlg extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xed); - writeD(_messageId); + OutgoingPackets.CONFIRM_DLG.writeId(packet); + packet.writeD(_messageId); if (!_types.isEmpty()) { - writeD(_types.size()); + packet.writeD(_types.size()); for (int i = 0; i < _types.size(); i++) { final int t = _types.get(i).intValue(); - writeD(t); + packet.writeD(t); switch (t) { case TYPE_TEXT: { - writeS((String) _values.get(i)); + packet.writeS((String) _values.get(i)); break; } case TYPE_NUMBER: @@ -132,14 +138,14 @@ public class ConfirmDlg extends GameServerPacket case TYPE_ITEM_NAME: { final int t1 = ((Integer) _values.get(i)).intValue(); - writeD(t1); + packet.writeD(t1); break; } case TYPE_SKILL_NAME: { final int t1 = ((Integer) _values.get(i)).intValue(); - writeD(t1); // Skill Id - writeD(_skillLevel); // Skill level + packet.writeD(t1); // Skill Id + packet.writeD(_skillLevel); // Skill level break; } case TYPE_ZONE_NAME: @@ -147,9 +153,9 @@ public class ConfirmDlg extends GameServerPacket final int t1 = ((int[]) _values.get(i))[0]; final int t2 = ((int[]) _values.get(i))[1]; final int t3 = ((int[]) _values.get(i))[2]; - writeD(t1); - writeD(t2); - writeD(t3); + packet.writeD(t1); + packet.writeD(t2); + packet.writeD(t3); break; } } @@ -157,23 +163,24 @@ public class ConfirmDlg extends GameServerPacket // timed dialog (Summon Friend skill request) if (_time != 0) { - writeD(_time); + packet.writeD(_time); } if (_requesterId != 0) { - writeD(_requesterId); + packet.writeD(_requesterId); } - if (_time > 0) + if ((_time > 0) && (_targetPlayer != null)) { - getClient().getPlayer().addConfirmDlgRequestTime(_requesterId, _time); + _targetPlayer.addConfirmDlgRequestTime(_requesterId, _time); } } else { - writeD(0x00); - writeD(0x00); - writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CreatureSay.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CreatureSay.java index fbb6c3fafc..0062cae9aa 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CreatureSay.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CreatureSay.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class CreatureSay extends GameServerPacket +public class CreatureSay implements IClientOutgoingPacket { private final int _objectId; private final ChatType _chatType; @@ -44,18 +46,22 @@ public class CreatureSay extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) + { + OutgoingPackets.CREATURE_SAY.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_chatType.getClientId()); + packet.writeS(_charName); + packet.writeS(_text); + return true; + } + + @Override + public void runImpl(PlayerInstance player) { - writeC(0x4a); - writeD(_objectId); - writeD(_chatType.getClientId()); - writeS(_charName); - writeS(_text); - - final PlayerInstance player = getClient().getPlayer(); if (player != null) { player.broadcastSnoop(_chatType, _charName, _text, this); } } -} \ No newline at end of file +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DeleteObject.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DeleteObject.java index 4f65d22da4..a6b57ce622 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DeleteObject.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DeleteObject.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 1e 9b da 12 40 ....@ format d * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class DeleteObject extends GameServerPacket +public class DeleteObject implements IClientOutgoingPacket { private final int _objectId; @@ -37,10 +39,11 @@ public class DeleteObject extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x12); - writeD(_objectId); - writeD(0x00); // c2 + OutgoingPackets.DELETE_OBJECT.writeId(packet); + packet.writeD(_objectId); + packet.writeD(0x00); // c2 + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Dice.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Dice.java index 4de84a4dab..498a1ef493 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Dice.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Dice.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.1.4.2 $ $Date: 2005/03/27 15:29:40 $ */ -public class Dice extends GameServerPacket +public class Dice implements IClientOutgoingPacket { private final int _objectId; private final int _itemId; @@ -48,14 +51,15 @@ public class Dice extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xD4); - writeD(_objectId); // object id of player - writeD(_itemId); // item id of dice (spade) 4625,4626,4627,4628 - writeD(_number); // number rolled - writeD(_x); // x - writeD(_y); // y - writeD(_z); // z + OutgoingPackets.DICE.writeId(packet); + packet.writeD(_objectId); // object id of player + packet.writeD(_itemId); // item id of dice (spade) 4625,4626,4627,4628 + packet.writeD(_number); // number rolled + packet.writeD(_x); // x + packet.writeD(_y); // y + packet.writeD(_z); // z + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Die.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Die.java index b803f33b59..f80fab7d58 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Die.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Die.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.instancemanager.events.CTF; @@ -28,8 +29,9 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class Die extends GameServerPacket +public class Die implements IClientOutgoingPacket { private final int _objectId; private final boolean _fake; @@ -58,15 +60,15 @@ public class Die extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_fake) { - return; + return false; } - writeC(0x06); - writeD(_objectId); + OutgoingPackets.DIE.writeId(packet); + packet.writeD(_objectId); // NOTE: // 6d 00 00 00 00 - to nearest village @@ -75,7 +77,7 @@ public class Die extends GameServerPacket // 6d 03 00 00 00 - to siege HQ // sweepable // 6d 04 00 00 00 - FIXED - writeD(_canTeleport ? 0x01 : 0); // 6d 00 00 00 00 - to nearest village + packet.writeD(_canTeleport ? 0x01 : 0); // 6d 00 00 00 00 - to nearest village if (_canTeleport && (_clan != null)) { @@ -102,18 +104,19 @@ public class Die extends GameServerPacket } } - writeD(_clan.getHideoutId() > 0 ? 0x01 : 0x00); // 6d 01 00 00 00 - to hide away - writeD((_clan.getCastleId() > 0) || (_clan.getFortId() > 0) || isInDefense ? 0x01 : 0x00); // 6d 02 00 00 00 - to castle - writeD((siegeClan != null) && !isInDefense && !siegeClan.getFlag().isEmpty() ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ + packet.writeD(_clan.getHideoutId() > 0 ? 0x01 : 0x00); // 6d 01 00 00 00 - to hide away + packet.writeD((_clan.getCastleId() > 0) || (_clan.getFortId() > 0) || isInDefense ? 0x01 : 0x00); // 6d 02 00 00 00 - to castle + packet.writeD((siegeClan != null) && !isInDefense && !siegeClan.getFlag().isEmpty() ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ } else { - writeD(0x00); // 6d 01 00 00 00 - to hide away - writeD(0x00); // 6d 02 00 00 00 - to castle - writeD(0x00); // 6d 03 00 00 00 - to siege HQ + packet.writeD(0x00); // 6d 01 00 00 00 - to hide away + packet.writeD(0x00); // 6d 02 00 00 00 - to castle + packet.writeD(0x00); // 6d 03 00 00 00 - to siege HQ } - writeD(_sweepable ? 0x01 : 0x00); // sweepable (blue glow) - writeD(_allowFixedRes ? 0x01 : 0x00); // 6d 04 00 00 00 - to FIXED + packet.writeD(_sweepable ? 0x01 : 0x00); // sweepable (blue glow) + packet.writeD(_allowFixedRes ? 0x01 : 0x00); // 6d 04 00 00 00 - to FIXED + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DoorInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DoorInfo.java index f3ca030c9b..5666c8f829 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DoorInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DoorInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 60 d6 6d c0 4b door id 8f 14 00 00 x b7 f1 00 00 y 60 f2 ff ff z 00 00 00 00 ?? format dddd rev 377 ID:%d X:%d Y:%d Z:%d ddddd rev 419 * @version $Revision: 1.3.2.2.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class DoorInfo extends GameServerPacket +public class DoorInfo implements IClientOutgoingPacket { private final DoorInstance _door; private final boolean _showHp; @@ -34,11 +36,12 @@ public class DoorInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x4c); - writeD(_door.getObjectId()); - writeD(_door.getDoorId()); - writeD(_showHp ? 0x01 : 0x00); + OutgoingPackets.DOOR_INFO.writeId(packet); + packet.writeD(_door.getObjectId()); + packet.writeD(_door.getDoorId()); + packet.writeD(_showHp ? 0x01 : 0x00); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DoorStatusUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DoorStatusUpdate.java index 2e9f8c882a..6f1f796374 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DoorStatusUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DoorStatusUpdate.java @@ -16,31 +16,37 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 61 d6 6d c0 4b door id 8f 14 00 00 x b7 f1 00 00 y 60 f2 ff ff z 00 00 00 00 ?? format dddd rev 377 ID:%d X:%d Y:%d Z:%d ddddd rev 419 * @version $Revision: 1.3.2.2.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class DoorStatusUpdate extends GameServerPacket +public class DoorStatusUpdate implements IClientOutgoingPacket { private final DoorInstance _door; + private final PlayerInstance _player; - public DoorStatusUpdate(DoorInstance door) + public DoorStatusUpdate(DoorInstance door, PlayerInstance player) { _door = door; + _player = player; } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x4d); - writeD(_door.getObjectId()); - writeD(_door.isOpen() ? 0 : 1); - writeD(_door.getDamage()); - writeD(_door.isEnemyOf(getClient().getPlayer()) ? 1 : 0); - writeD(_door.getDoorId()); - writeD(_door.getMaxHp()); - writeD((int) _door.getCurrentHp()); + OutgoingPackets.DOOR_STATUS_UPDATE.writeId(packet); + packet.writeD(_door.getObjectId()); + packet.writeD(_door.isOpen() ? 0 : 1); + packet.writeD(_door.getDamage()); + packet.writeD(_door.isEnemyOf(_player) ? 1 : 0); + packet.writeD(_door.getDoorId()); + packet.writeD(_door.getMaxHp()); + packet.writeD((int) _door.getCurrentHp()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DropItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DropItem.java index 9514731736..59c81289d7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DropItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/DropItem.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 16 d6 6d c0 4b player id who dropped it ee cc 11 43 object id 39 00 00 00 item id 8f 14 00 00 x b7 f1 00 00 y 60 f2 ff ff z 01 00 00 00 show item-count 1=yes 7a 00 00 00 count . format dddddddd rev 377 ddddddddd rev 417 * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class DropItem extends GameServerPacket +public class DropItem implements IClientOutgoingPacket { private final ItemInstance _item; private final int _objectId; @@ -39,27 +41,28 @@ public class DropItem extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x0c); - writeD(_objectId); - writeD(_item.getObjectId()); - writeD(_item.getItemId()); + OutgoingPackets.DROP_ITEM.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_item.getObjectId()); + packet.writeD(_item.getItemId()); - writeD(_item.getX()); - writeD(_item.getY()); - writeD(_item.getZ()); + packet.writeD(_item.getX()); + packet.writeD(_item.getY()); + packet.writeD(_item.getZ()); // only show item count if it is a stackable item if (_item.isStackable()) { - writeD(0x01); + packet.writeD(0x01); } else { - writeD(0x00); + packet.writeD(0x00); } - writeD(_item.getCount()); + packet.writeD(_item.getCount()); - writeD(1); // unknown + packet.writeD(1); // unknown + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Earthquake.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Earthquake.java index 430c8627b5..fc78d506ae 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Earthquake.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Earthquake.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * format dddddd */ -public class Earthquake extends GameServerPacket +public class Earthquake implements IClientOutgoingPacket { private final int _x; private final int _y; @@ -44,14 +47,15 @@ public class Earthquake extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xc4); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_intensity); - writeD(_duration); - writeD(0x00); // Unknown + OutgoingPackets.EARTHQUAKE.writeId(packet); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_intensity); + packet.writeD(_duration); + packet.writeD(0x00); // Unknown + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EnchantResult.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EnchantResult.java index 5ed2c3fb12..ef8494e2ce 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EnchantResult.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EnchantResult.java @@ -16,19 +16,23 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class EnchantResult extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class EnchantResult implements IClientOutgoingPacket { - private final int _unknown; + private final int _result; - public EnchantResult(int unknown) + public EnchantResult(int result) { - _unknown = unknown; + _result = result; } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x81); - writeD(_unknown); + OutgoingPackets.ENCHANT_RESULT.writeId(packet); + packet.writeD(_result); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EquipUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EquipUpdate.java index 7e62c4be59..a0f1b629a3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EquipUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EquipUpdate.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 5e 01 00 00 00 01 - added ? 02 - modified 7b 86 73 42 object id 08 00 00 00 body slot body slot 0000 ?? underwear 0001 ear 0002 ear 0003 neck 0004 finger (magic ring) 0005 finger (magic ring) 0006 head (l.cap) 0007 r.hand (dagger) 0008 l.hand (arrows) 0009 hands (short gloves) 000a chest (squire * shirt) 000b legs (squire pants) 000c feet 000d ?? back 000e lr.hand (bow) format ddd * @version $Revision: 1.4.2.1.2.4 $ $Date: 2005/03/27 15:29:40 $ */ -public class EquipUpdate extends GameServerPacket +public class EquipUpdate implements IClientOutgoingPacket { private final ItemInstance _item; private final int _change; @@ -36,12 +38,12 @@ public class EquipUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { int bodypart = 0; - writeC(0x4b); - writeD(_change); - writeD(_item.getObjectId()); + OutgoingPackets.EQUIP_UPDATE.writeId(packet); + packet.writeD(_change); + packet.writeD(_item.getObjectId()); switch (_item.getItem().getBodyPart()) { case Item.SLOT_L_EAR: @@ -121,6 +123,7 @@ public class EquipUpdate extends GameServerPacket } } - writeD(bodypart); + packet.writeD(bodypart); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java index 2ce1c44d5e..28764762ac 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/EtcStatusUpdate.java @@ -16,17 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.skills.effects.EffectCharge; import org.l2jmobius.gameserver.model.zone.ZoneId; - -/* Packet format: F3 XX000000 YY000000 ZZ000000 */ +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Luca Baldi */ -public class EtcStatusUpdate extends GameServerPacket +public class EtcStatusUpdate implements IClientOutgoingPacket { private final PlayerInstance _player; private final EffectCharge _effect; @@ -37,27 +37,26 @@ public class EtcStatusUpdate extends GameServerPacket _effect = (EffectCharge) _player.getFirstEffect(Effect.EffectType.CHARGE); } - /** - * @see org.l2jmobius.gameserver.network.serverpackets.GameServerPacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xF3); // several icons to a separate line (0 = disabled) + OutgoingPackets.ETC_STATUS_UPDATE.writeId(packet); + // several icons to a separate line (0 = disabled) if (_effect != null) { - writeD(_effect.getLevel()); // 1-7 increase force, level + packet.writeD(_effect.getLevel()); // 1-7 increase force, level } else { - writeD(0x00); // 1-7 increase force, level + packet.writeD(0x00); // 1-7 increase force, level } - writeD(_player.getWeightPenalty()); // 1-4 weight penalty, level (1=50%, 2=66.6%, 3=80%, 4=100%) - writeD(_player.isInRefusalMode() || _player.isChatBanned() ? 1 : 0); // 1 = block all chat + packet.writeD(_player.getWeightPenalty()); // 1-4 weight penalty, level (1=50%, 2=66.6%, 3=80%, 4=100%) + packet.writeD(_player.isInRefusalMode() || _player.isChatBanned() ? 1 : 0); // 1 = block all chat // writeD(0x00); // 1 = danger area - writeD(_player.isInsideZone(ZoneId.DANGER_AREA)/* || _player.isInDangerArea() */ ? 1 : 0); // 1 = danger area - writeD(Math.min(_player.getExpertisePenalty() + _player.getMasteryPenalty() + _player.getMasteryWeapPenalty(), 1)); // 1 = grade penalty - writeD(_player.getCharmOfCourage() ? 1 : 0); // 1 = charm of courage (no xp loss in siege..) - writeD(_player.getDeathPenaltyBuffLevel()); // 1-15 death penalty, level (combat ability decreased due to death) + packet.writeD(_player.isInsideZone(ZoneId.DANGER_AREA)/* || _player.isInDangerArea() */ ? 1 : 0); // 1 = danger area + packet.writeD(Math.min(_player.getExpertisePenalty() + _player.getMasteryPenalty() + _player.getMasteryWeapPenalty(), 1)); // 1 = grade penalty + packet.writeD(_player.getCharmOfCourage() ? 1 : 0); // 1 = charm of courage (no xp loss in siege..) + packet.writeD(_player.getDeathPenaltyBuffLevel()); // 1-15 death penalty, level (combat ability decreased due to death) + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinMPCC.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinMPCC.java index 51d2040533..b83d011f3c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinMPCC.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinMPCC.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author chris_00 Asks the player to join a CC */ -public class ExAskJoinMPCC extends GameServerPacket +public class ExAskJoinMPCC implements IClientOutgoingPacket { private final String _requestorName; @@ -29,10 +32,10 @@ public class ExAskJoinMPCC extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x27); - writeS(_requestorName); + OutgoingPackets.EX_ASK_JOIN_MPCC.writeId(packet); + packet.writeS(_requestorName); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinPartyRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinPartyRoom.java index bd41104ef0..2d063dbe83 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinPartyRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAskJoinPartyRoom.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch S * @author KenM */ -public class ExAskJoinPartyRoom extends GameServerPacket +public class ExAskJoinPartyRoom implements IClientOutgoingPacket { private final String _charName; @@ -30,10 +33,10 @@ public class ExAskJoinPartyRoom extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x34); - writeS(_charName); + OutgoingPackets.EX_ASK_JOIN_PARTY_ROOM.writeId(packet); + packet.writeS(_charName); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAutoSoulShot.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAutoSoulShot.java index c928a1d4f8..9017ad6c67 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAutoSoulShot.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExAutoSoulShot.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ExAutoSoulShot extends GameServerPacket +public class ExAutoSoulShot implements IClientOutgoingPacket { private final int _itemId; private final int _type; @@ -36,11 +39,11 @@ public class ExAutoSoulShot extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x12); // sub id - writeD(_itemId); - writeD(_type); + OutgoingPackets.EX_AUTO_SOUL_SHOT.writeId(packet); + packet.writeD(_itemId); + packet.writeD(_type); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCaptureOrc.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCaptureOrc.java index 98a9627140..a052512523 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCaptureOrc.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCaptureOrc.java @@ -16,91 +16,38 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author KenM */ -public class ExCaptureOrc extends GameServerPacket +public class ExCaptureOrc implements IClientOutgoingPacket { private static final byte[] _test; static { + // TODO: Verify the data + //@formatter:off _test = new byte[] { - (byte) 0xE4, - (byte) 0xAB, - (byte) 0x8E, - (byte) 0xC5, - (byte) 0xE9, - (byte) 0xF9, - (byte) 0x86, - (byte) 0x7B, - (byte) 0x9E, - (byte) 0x5D, - (byte) 0x83, - (byte) 0x14, - (byte) 0x05, - (byte) 0xD4, - (byte) 0x48, - (byte) 0x01, - (byte) 0xCD, - (byte) 0xA2, - (byte) 0x8D, - (byte) 0x90, - (byte) 0x62, - (byte) 0x8C, - (byte) 0xDA, - (byte) 0x32, - (byte) 0x7B, - (byte) 0x1B, - (byte) 0x87, - (byte) 0x6D, - (byte) 0x08, - (byte) 0xC4, - (byte) 0xE1, - (byte) 0x56, - (byte) 0x9B, - (byte) 0x3B, - (byte) 0xC3, - (byte) 0x40, - (byte) 0xDF, - (byte) 0xE8, - (byte) 0xD7, - (byte) 0xE1, - (byte) 0x98, - (byte) 0x38, - (byte) 0x1C, - (byte) 0xA5, - (byte) 0x8E, - (byte) 0x45, - (byte) 0x3F, - (byte) 0xF2, - (byte) 0x5E, - (byte) 0x1C, - (byte) 0x59, - (byte) 0x8E, - (byte) 0x74, - (byte) 0x01, - (byte) 0x9E, - (byte) 0xC2, - (byte) 0x00, - (byte) 0x95, - (byte) 0xB0, - (byte) 0x1D, - (byte) 0x87, - (byte) 0xED, - (byte) 0x9C, - (byte) 0x8A + (byte) 0xE4 ,(byte) 0xAB ,(byte) 0x8E ,(byte) 0xC5 ,(byte) 0xE9 ,(byte) 0xF9 ,(byte) 0x86 ,(byte) 0x7B, + (byte) 0x9E ,(byte) 0x5D ,(byte) 0x83 ,(byte) 0x14 ,(byte) 0x05 ,(byte) 0xD4 ,(byte) 0x48 ,(byte) 0x01, + (byte) 0xCD ,(byte) 0xA2 ,(byte) 0x8D ,(byte) 0x90 ,(byte) 0x62 ,(byte) 0x8C ,(byte) 0xDA ,(byte) 0x32, + (byte) 0x7B ,(byte) 0x1B ,(byte) 0x87 ,(byte) 0x6D ,(byte) 0x08 ,(byte) 0xC4 ,(byte) 0xE1 ,(byte) 0x56, + (byte) 0x9B ,(byte) 0x3B ,(byte) 0xC3 ,(byte) 0x40 ,(byte) 0xDF ,(byte) 0xE8 ,(byte) 0xD7 ,(byte) 0xE1, + (byte) 0x98 ,(byte) 0x38 ,(byte) 0x1C ,(byte) 0xA5 ,(byte) 0x8E ,(byte) 0x45 ,(byte) 0x3F ,(byte) 0xF2, + (byte) 0x5E ,(byte) 0x1C ,(byte) 0x59 ,(byte) 0x8E ,(byte) 0x74 ,(byte) 0x01 ,(byte) 0x9E ,(byte) 0xC2, + (byte) 0x00 ,(byte) 0x95 ,(byte) 0xB0 ,(byte) 0x1D ,(byte) 0x87 ,(byte) 0xED ,(byte) 0x9C ,(byte) 0x8A }; + //@formatter:on } - /** - * @see org.l2jmobius.gameserver.network.serverpackets.GameServerPacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x44); - writeB(_test); + OutgoingPackets.EX_CAPTURE_ORC.writeId(packet); + packet.writeB(_test); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCloseMPCC.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCloseMPCC.java index cf848ad107..e238fec229 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCloseMPCC.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCloseMPCC.java @@ -16,15 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author chris_00 close the CommandChannel Information window */ -public class ExCloseMPCC extends GameServerPacket +public class ExCloseMPCC implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x26); + OutgoingPackets.EX_CLOSE_MPCC.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExClosePartyRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExClosePartyRoom.java index cfed7886ec..11da236f70 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExClosePartyRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExClosePartyRoom.java @@ -16,15 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Gnacik */ -public class ExClosePartyRoom extends GameServerPacket +public class ExClosePartyRoom implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x0f); + OutgoingPackets.EX_CLOSE_PARTY_ROOM.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java index 4ac0614d94..bd22ef1408 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExColosseumFenceInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.FenceState; import org.l2jmobius.gameserver.model.actor.instance.FenceInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author HoridoJoho / FBIagent */ -public class ExColosseumFenceInfo extends GameServerPacket +public class ExColosseumFenceInfo implements IClientOutgoingPacket { private final int _objId; private final int _x; @@ -49,16 +51,16 @@ public class ExColosseumFenceInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x09); - writeD(_objId); - writeD(_clientState); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_width); - writeD(_length); + OutgoingPackets.EX_COLOSSEUM_FENCE_INFO.writeId(packet); + packet.writeD(_objId); + packet.writeD(_clientState); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_width); + packet.writeD(_length); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmCancelItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmCancelItem.java index bd2967b5f7..60b9ec1bab 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmCancelItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmCancelItem.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddd */ -public class ExConfirmCancelItem extends GameServerPacket +public class ExConfirmCancelItem implements IClientOutgoingPacket { private final int _itemObjId; private final int _price; @@ -31,15 +34,15 @@ public class ExConfirmCancelItem extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x56); - writeD(0x40A97712); - writeD(_itemObjId); - writeD(0x27); - writeD(0x2006); - writeQ(_price); - writeD(0x01); + OutgoingPackets.EX_CONFIRM_CANCEL_ITEM.writeId(packet); + packet.writeD(0x40A97712); + packet.writeD(_itemObjId); + packet.writeD(0x27); + packet.writeD(0x2006); + packet.writeQ(_price); + packet.writeD(0x01); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationGemstone.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationGemstone.java index 39c01c28d9..4ac44e4519 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationGemstone.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationGemstone.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddddd */ -public class ExConfirmVariationGemstone extends GameServerPacket +public class ExConfirmVariationGemstone implements IClientOutgoingPacket { private final int _gemstoneObjId; private final int _unk1; @@ -37,14 +40,14 @@ public class ExConfirmVariationGemstone extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x54); - writeD(_gemstoneObjId); - writeD(_unk1); - writeD(_gemstoneCount); - writeD(_unk2); - writeD(_unk3); + OutgoingPackets.EX_CONFIRM_VARIATION_GEMSTONE.writeId(packet); + packet.writeD(_gemstoneObjId); + packet.writeD(_unk1); + packet.writeD(_gemstoneCount); + packet.writeD(_unk2); + packet.writeD(_unk3); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationItem.java index 7f9c976adf..b5a8c32918 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationItem.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddd */ -public class ExConfirmVariationItem extends GameServerPacket +public class ExConfirmVariationItem implements IClientOutgoingPacket { private final int _itemObjId; private final int _unk1; @@ -33,12 +36,12 @@ public class ExConfirmVariationItem extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x52); - writeD(_itemObjId); - writeD(_unk1); - writeD(_unk2); + OutgoingPackets.EX_CONFIRM_VARIATION_ITEM.writeId(packet); + packet.writeD(_itemObjId); + packet.writeD(_unk1); + packet.writeD(_unk2); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationRefiner.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationRefiner.java index e05d3f3583..8bc8949bbf 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationRefiner.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExConfirmVariationRefiner.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddddd */ -public class ExConfirmVariationRefiner extends GameServerPacket +public class ExConfirmVariationRefiner implements IClientOutgoingPacket { private final int _refinerItemObjId; private final int _lifestoneItemId; @@ -37,14 +40,14 @@ public class ExConfirmVariationRefiner extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x53); - writeD(_refinerItemObjId); - writeD(_lifestoneItemId); - writeD(_gemstoneItemId); - writeD(_gemstoneCount); - writeD(_unk2); + OutgoingPackets.EX_CONFIRM_VARIATION_REFINER.writeId(packet); + packet.writeD(_refinerItemObjId); + packet.writeD(_lifestoneItemId); + packet.writeD(_gemstoneItemId); + packet.writeD(_gemstoneCount); + packet.writeD(_unk2); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponList.java index 72a64d9628..98e988abe7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponList.java @@ -16,31 +16,34 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -import java.util.List; +import java.util.Set; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) d[d] * @author -Wooden- */ -public class ExCursedWeaponList extends GameServerPacket +public class ExCursedWeaponList implements IClientOutgoingPacket { - private final List _cursedWeaponIds; + private final Set _cursedWeaponIds; - public ExCursedWeaponList(List cursedWeaponIds) + public ExCursedWeaponList(Set cursedWeaponIds) { _cursedWeaponIds = cursedWeaponIds; } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x45); + OutgoingPackets.EX_CURSED_WEAPON_LIST.writeId(packet); - writeD(_cursedWeaponIds.size()); + packet.writeD(_cursedWeaponIds.size()); for (Integer i : _cursedWeaponIds) { - writeD(i.intValue()); + packet.writeD(i.intValue()); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponLocation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponLocation.java index a633c10dfa..b8a3226daa 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponLocation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExCursedWeaponLocation.java @@ -18,13 +18,15 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Location; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) d[ddddd]. * @author -Wooden- */ -public class ExCursedWeaponLocation extends GameServerPacket +public class ExCursedWeaponLocation implements IClientOutgoingPacket { private final List _cursedWeaponInfo; @@ -38,29 +40,29 @@ public class ExCursedWeaponLocation extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x46); + OutgoingPackets.EX_CURSED_WEAPON_LOCATION.writeId(packet); if (!_cursedWeaponInfo.isEmpty()) { - writeD(_cursedWeaponInfo.size()); + packet.writeD(_cursedWeaponInfo.size()); for (CursedWeaponInfo w : _cursedWeaponInfo) { - writeD(w.id); - writeD(w.activated); + packet.writeD(w.id); + packet.writeD(w.activated); - writeD(w.loc.getX()); - writeD(w.loc.getY()); - writeD(w.loc.getZ()); + packet.writeD(w.loc.getX()); + packet.writeD(w.loc.getY()); + packet.writeD(w.loc.getZ()); } } else { - writeD(0); - writeD(0); + packet.writeD(0); + packet.writeD(0); } + return true; } /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelAskStart.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelAskStart.java index 9c64a67ba7..10d1b1c16b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelAskStart.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelAskStart.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch Sd. * @author KenM */ -public class ExDuelAskStart extends GameServerPacket +public class ExDuelAskStart implements IClientOutgoingPacket { /** The _requestor name. */ private final String _requestorName; @@ -40,12 +43,12 @@ public class ExDuelAskStart extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x4b); + OutgoingPackets.EX_DUEL_ASK_START.writeId(packet); - writeS(_requestorName); - writeD(_partyDuel); + packet.writeS(_requestorName); + packet.writeD(_partyDuel); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelEnd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelEnd.java index 55f5853649..8c7dd5eb01 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelEnd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelEnd.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch d. * @author KenM */ -public class ExDuelEnd extends GameServerPacket +public class ExDuelEnd implements IClientOutgoingPacket { /** The _unk1. */ private final int _unk1; @@ -35,11 +38,11 @@ public class ExDuelEnd extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x4e); + OutgoingPackets.EX_DUEL_END.writeId(packet); - writeD(_unk1); + packet.writeD(_unk1); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelReady.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelReady.java index ae34072553..c57947015a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelReady.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelReady.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch d. * @author KenM */ -public class ExDuelReady extends GameServerPacket +public class ExDuelReady implements IClientOutgoingPacket { /** The _unk1. */ private final int _unk1; @@ -35,11 +38,11 @@ public class ExDuelReady extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x4c); + OutgoingPackets.EX_DUEL_READY.writeId(packet); - writeD(_unk1); + packet.writeD(_unk1); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelStart.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelStart.java index 10c8b740d0..e3e06bcb2b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelStart.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelStart.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch d. * @author KenM */ -public class ExDuelStart extends GameServerPacket +public class ExDuelStart implements IClientOutgoingPacket { /** The _unk1. */ private final int _unk1; @@ -35,11 +38,11 @@ public class ExDuelStart extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x4d); + OutgoingPackets.EX_DUEL_START.writeId(packet); - writeD(_unk1); + packet.writeD(_unk1); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelUpdateUserInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelUpdateUserInfo.java index ec7771b85c..171ea4dfe6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelUpdateUserInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExDuelUpdateUserInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: ch Sddddddddd. * @author KenM */ -public class ExDuelUpdateUserInfo extends GameServerPacket +public class ExDuelUpdateUserInfo implements IClientOutgoingPacket { /** The _active char. */ private final PlayerInstance _player; @@ -37,19 +39,19 @@ public class ExDuelUpdateUserInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x4f); - writeS(_player.getName()); - writeD(_player.getObjectId()); - writeD(_player.getClassId().getId()); - writeD(_player.getLevel()); - writeD((int) _player.getCurrentHp()); - writeD(_player.getMaxHp()); - writeD((int) _player.getCurrentMp()); - writeD(_player.getMaxMp()); - writeD((int) _player.getCurrentCp()); - writeD(_player.getMaxCp()); + OutgoingPackets.EX_DUEL_UPDATE_USER_INFO.writeId(packet); + packet.writeS(_player.getName()); + packet.writeD(_player.getObjectId()); + packet.writeD(_player.getClassId().getId()); + packet.writeD(_player.getLevel()); + packet.writeD((int) _player.getCurrentHp()); + packet.writeD(_player.getMaxHp()); + packet.writeD((int) _player.getCurrentMp()); + packet.writeD(_player.getMaxMp()); + packet.writeD((int) _player.getCurrentCp()); + packet.writeD(_player.getMaxCp()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfo.java index 68c438841e..eb99e49b22 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillInfo.java @@ -19,7 +19,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; -public class ExEnchantSkillInfo extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class ExEnchantSkillInfo implements IClientOutgoingPacket { private final List _reqs; private final int _id; @@ -59,30 +62,26 @@ public class ExEnchantSkillInfo extends GameServerPacket _reqs.add(new Req(type, id, count, unk)); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x18); + OutgoingPackets.EX_ENCHANT_SKILL_INFO.writeId(packet); - writeD(_id); - writeD(_level); - writeD(_spCost); - writeQ(_xpCost); - writeD(_rate); + packet.writeD(_id); + packet.writeD(_level); + packet.writeD(_spCost); + packet.writeQ(_xpCost); + packet.writeD(_rate); - writeD(_reqs.size()); + packet.writeD(_reqs.size()); for (Req temp : _reqs) { - writeD(temp.type); - writeD(temp.id); - writeD(temp.count); - writeD(temp.unk); + packet.writeD(temp.type); + packet.writeD(temp.id); + packet.writeD(temp.count); + packet.writeD(temp.unk); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillList.java index bebca14042..3de4dcae74 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExEnchantSkillList.java @@ -19,7 +19,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; -public class ExEnchantSkillList extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class ExEnchantSkillList implements IClientOutgoingPacket { private final List _skills; @@ -49,23 +52,19 @@ public class ExEnchantSkillList extends GameServerPacket _skills = new ArrayList<>(); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x17); + OutgoingPackets.EX_ENCHANT_SKILL_LIST.writeId(packet); - writeD(_skills.size()); + packet.writeD(_skills.size()); for (Skill sk : _skills) { - writeD(sk.id); - writeD(sk.nextLevel); - writeD(sk.sp); - writeQ(sk.exp); + packet.writeD(sk.id); + packet.writeD(sk.nextLevel); + packet.writeD(sk.sp); + packet.writeQ(sk.exp); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingEnd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingEnd.java index a1dda08cb6..d74a516915 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingEnd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingEnd.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) dc d: character object id c: 1 if won 0 if failed * @author -Wooden- */ -public class ExFishingEnd extends GameServerPacket +public class ExFishingEnd implements IClientOutgoingPacket { private final boolean _win; Creature _creature; @@ -34,16 +36,12 @@ public class ExFishingEnd extends GameServerPacket _creature = character; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x14); - writeD(_creature.getObjectId()); - writeC(_win ? 1 : 0); + OutgoingPackets.EX_FISHING_END.writeId(packet); + packet.writeD(_creature.getObjectId()); + packet.writeC(_win ? 1 : 0); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingHpRegen.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingHpRegen.java index f90a5fa431..dc0a8f17c3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingHpRegen.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingHpRegen.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format (ch)dddcccd d: cahacter oid d: time left d: fish hp c: c: c: 00 if fish gets damage 02 if fish regens d: * @author -Wooden- */ -public class ExFishingHpRegen extends GameServerPacket +public class ExFishingHpRegen implements IClientOutgoingPacket { private final Creature _creature; private final int _time; @@ -45,23 +47,19 @@ public class ExFishingHpRegen extends GameServerPacket _hpBarColor = hpBarColor; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x16); + OutgoingPackets.EX_FISHING_HP_REGEN.writeId(packet); - writeD(_creature.getObjectId()); - writeD(_time); - writeD(_fishHP); - writeC(_hpMode); // 0 = HP stop, 1 = HP raise - writeC(_goodUse); // 0 = none, 1 = success, 2 = failed - writeC(_anim); // Anim: 0 = none, 1 = reeling, 2 = pumping - writeD(_penalty); // Penalty - writeC(_hpBarColor); // 0 = normal hp bar, 1 = purple hp bar + packet.writeD(_creature.getObjectId()); + packet.writeD(_time); + packet.writeD(_fishHP); + packet.writeC(_hpMode); // 0 = HP stop, 1 = HP raise + packet.writeC(_goodUse); // 0 = none, 1 = success, 2 = failed + packet.writeC(_anim); // Anim: 0 = none, 1 = reeling, 2 = pumping + packet.writeD(_penalty); // Penalty + packet.writeC(_hpBarColor); // 0 = normal hp bar, 1 = purple hp bar + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStart.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStart.java index 0e27dd0071..b37e997902 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStart.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStart.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format (ch)ddddd * @author -Wooden- */ -public class ExFishingStart extends GameServerPacket +public class ExFishingStart implements IClientOutgoingPacket { private final Creature _creature; private final int _x; @@ -42,23 +44,19 @@ public class ExFishingStart extends GameServerPacket _isNightLure = isNightLure; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x13); - writeD(_creature.getObjectId()); - writeD(_fishType); // fish type - writeD(_x); // x poisson - writeD(_y); // y poisson - writeD(_z); // z poisson - writeC(0x00); // night lure - writeC(0x00); // ?? - writeC((_fishType >= 7) && (_fishType <= 9) ? 0x01 : 0x00); // 0 = day lure 1 = night lure - writeC(0x00); + OutgoingPackets.EX_FISHING_START.writeId(packet); + packet.writeD(_creature.getObjectId()); + packet.writeD(_fishType); // fish type + packet.writeD(_x); // x poisson + packet.writeD(_y); // y poisson + packet.writeD(_z); // z poisson + packet.writeC(0x00); // night lure + packet.writeC(0x00); // ?? + packet.writeC((_fishType >= 7) && (_fishType <= 9) ? 0x01 : 0x00); // 0 = day lure 1 = night lure + packet.writeC(0x00); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStartCombat.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStartCombat.java index 243c87417c..bf91a478d8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStartCombat.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExFishingStartCombat.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format (ch)dddcc * @author -Wooden- */ -public class ExFishingStartCombat extends GameServerPacket +public class ExFishingStartCombat implements IClientOutgoingPacket { private final Creature _creature; private final int _time; @@ -41,21 +43,17 @@ public class ExFishingStartCombat extends GameServerPacket _deceptiveMode = deceptiveMode; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x15); + OutgoingPackets.EX_FISHING_START_COMBAT.writeId(packet); - writeD(_creature.getObjectId()); - writeD(_time); - writeD(_hp); - writeC(_mode); // mode: 0 = resting, 1 = fighting - writeC(_lureType); // 0 = newbie lure, 1 = normal lure, 2 = night lure - writeC(_deceptiveMode); // Fish Deceptive Mode: 0 = no, 1 = yes + packet.writeD(_creature.getObjectId()); + packet.writeD(_time); + packet.writeD(_hp); + packet.writeC(_mode); // mode: 0 = resting, 1 = fighting + packet.writeC(_lureType); // 0 = newbie lure, 1 = normal lure, 2 = night lure + packet.writeC(_deceptiveMode); // Fish Deceptive Mode: 0 = no, 1 = yes + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExGetBossRecord.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExGetBossRecord.java index b3905148e7..e7ae194a59 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExGetBossRecord.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExGetBossRecord.java @@ -19,11 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Map; import java.util.Map.Entry; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch ddd [ddd]. * @author KenM */ -public class ExGetBossRecord extends GameServerPacket +public class ExGetBossRecord implements IClientOutgoingPacket { /** The _boss record info. */ private final Map _bossRecordInfo; @@ -48,28 +51,28 @@ public class ExGetBossRecord extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x33); - writeD(_ranking); - writeD(_totalPoints); + OutgoingPackets.EX_GET_BOSS_RECORD.writeId(packet); + packet.writeD(_ranking); + packet.writeD(_totalPoints); if (_bossRecordInfo == null) { - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); } else { - writeD(_bossRecordInfo.size()); + packet.writeD(_bossRecordInfo.size()); for (Entry entry : _bossRecordInfo.entrySet()) { - writeD(entry.getKey()); - writeD(entry.getValue()); - writeD(0x00); // ?? + packet.writeD(entry.getKey()); + packet.writeD(entry.getValue()); + packet.writeD(0x00); // ?? } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java index 36270e85d2..7a5339cbdf 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java @@ -18,15 +18,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Map; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.olympiad.Hero; import org.l2jmobius.gameserver.model.olympiad.Olympiad; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) d [SdSdSdd] d: size [ S: hero name d: hero class ID S: hero clan name d: hero clan crest id S: hero ally name d: hero Ally id d: count ] * @author -Wooden- Format from KenM Re-written by godson */ -public class ExHeroList extends GameServerPacket +public class ExHeroList implements IClientOutgoingPacket { private final Map _heroList; @@ -36,21 +38,21 @@ public class ExHeroList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x23); - writeD(_heroList.size()); + OutgoingPackets.EX_HERO_LIST.writeId(packet); + packet.writeD(_heroList.size()); for (StatSet hero : _heroList.values()) { - writeS(hero.getString(Olympiad.CHAR_NAME)); - writeD(hero.getInt(Olympiad.CLASS_ID)); - writeS(hero.getString(Hero.CLAN_NAME, "")); - writeD(hero.getInt(Hero.CLAN_CREST, 0)); - writeS(hero.getString(Hero.ALLY_NAME, "")); - writeD(hero.getInt(Hero.ALLY_CREST, 0)); - writeD(hero.getInt(Hero.COUNT)); + packet.writeS(hero.getString(Olympiad.CHAR_NAME)); + packet.writeD(hero.getInt(Olympiad.CLASS_ID)); + packet.writeS(hero.getString(Hero.CLAN_NAME, "")); + packet.writeD(hero.getInt(Hero.CLAN_CREST, 0)); + packet.writeS(hero.getString(Hero.ALLY_NAME, "")); + packet.writeD(hero.getInt(Hero.ALLY_CREST, 0)); + packet.writeD(hero.getInt(Hero.COUNT)); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExListPartyMatchingWaitingRoom.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExListPartyMatchingWaitingRoom.java index 24176ad4a3..4bf76188d4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExListPartyMatchingWaitingRoom.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExListPartyMatchingWaitingRoom.java @@ -19,15 +19,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; import org.l2jmobius.gameserver.model.partymatching.PartyMatchWaitingList; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Gnacik */ -public class ExListPartyMatchingWaitingRoom extends GameServerPacket +public class ExListPartyMatchingWaitingRoom implements IClientOutgoingPacket { private final PlayerInstance _player; @SuppressWarnings("unused") @@ -48,10 +50,9 @@ public class ExListPartyMatchingWaitingRoom extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x35); + OutgoingPackets.EX_LIST_PARTY_MATCHING_WAITING_ROOM.writeId(packet); // If the mode is 0 and the activeChar isn't the PartyRoom leader, return an empty list. if (_mode == 0) @@ -60,9 +61,9 @@ public class ExListPartyMatchingWaitingRoom extends GameServerPacket final PartyMatchRoom room = PartyMatchRoomList.getInstance().getRoom(_player.getPartyRoom()); if ((room != null) && (room.getOwner() != null) && !room.getOwner().equals(_player)) { - writeD(0); - writeD(0); - return; + packet.writeD(0); + packet.writeD(0); + return true; } } @@ -90,14 +91,15 @@ public class ExListPartyMatchingWaitingRoom extends GameServerPacket int count = 0; final int size = _members.size(); - writeD(1); - writeD(size); + packet.writeD(1); + packet.writeD(size); while (size > count) { - writeS(_members.get(count).getName()); - writeD(_members.get(count).getActiveClass()); - writeD(_members.get(count).getLevel()); + packet.writeS(_members.get(count).getName()); + packet.writeD(_members.get(count).getActiveClass()); + packet.writeD(_members.get(count).getLevel()); count++; } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMPCCShowPartyMemberInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMPCCShowPartyMemberInfo.java index 69a63e9d21..09d7a367cc 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMPCCShowPartyMemberInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMPCCShowPartyMemberInfo.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: ch d[Sdd] * @author KenM */ -public class ExMPCCShowPartyMemberInfo extends GameServerPacket +public class ExMPCCShowPartyMemberInfo implements IClientOutgoingPacket { private final Party _party; @@ -33,17 +35,17 @@ public class ExMPCCShowPartyMemberInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x4a); + OutgoingPackets.EX_MPCC_SHOW_PARTY_MEMBER_INFO.writeId(packet); - writeD(_party.getMemberCount()); + packet.writeD(_party.getMemberCount()); for (PlayerInstance pc : _party.getPartyMembers()) { - writeS(pc.getName()); - writeD(pc.getObjectId()); - writeD(pc.getClassId().getId()); + packet.writeS(pc.getName()); + packet.writeD(pc.getObjectId()); + packet.writeD(pc.getClassId().getId()); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMailArrived.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMailArrived.java index 8b9a564dd0..7184c63000 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMailArrived.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMailArrived.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Fromat: (ch) (just a trigger) * @author -Wooden- */ -public class ExMailArrived extends GameServerPacket +public class ExMailArrived implements IClientOutgoingPacket { public static final ExMailArrived STATIC_PACKET = new ExMailArrived(); @@ -29,9 +32,9 @@ public class ExMailArrived extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x2d); + OutgoingPackets.EX_MAIL_ARRIVED.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExManagePartyRoomMember.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExManagePartyRoomMember.java index 7f314c1dc5..f4302c96b4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExManagePartyRoomMember.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExManagePartyRoomMember.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Gnacik Mode : 0 - add 1 - modify 2 - quit */ -public class ExManagePartyRoomMember extends GameServerPacket +public class ExManagePartyRoomMember implements IClientOutgoingPacket { private final PlayerInstance _player; private final PartyMatchRoom _room; @@ -37,27 +39,27 @@ public class ExManagePartyRoomMember extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x10); - writeD(_mode); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getActiveClass()); - writeD(_player.getLevel()); - writeD(MapRegionData.getInstance().getClosestLocation(_player.getX(), _player.getY())); + OutgoingPackets.EX_MANAGE_PARTY_ROOM_MEMBER.writeId(packet); + packet.writeD(_mode); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getActiveClass()); + packet.writeD(_player.getLevel()); + packet.writeD(MapRegionData.getInstance().getClosestLocation(_player.getX(), _player.getY())); if (_room.getOwner().equals(_player)) { - writeD(1); + packet.writeD(1); } else if ((_room.getOwner().isInParty() && _player.isInParty()) && (_room.getOwner().getParty().getPartyLeaderOID() == _player.getParty().getPartyLeaderOID())) { - writeD(2); + packet.writeD(2); } else { - writeD(0); + packet.writeD(0); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMultiPartyCommandChannelInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMultiPartyCommandChannelInfo.java index c8863e0724..81f8877b39 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMultiPartyCommandChannelInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExMultiPartyCommandChannelInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.CommandChannel; import org.l2jmobius.gameserver.model.Party; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author chris_00 ch sdd d[sdd] */ -public class ExMultiPartyCommandChannelInfo extends GameServerPacket +public class ExMultiPartyCommandChannelInfo implements IClientOutgoingPacket { private final CommandChannel _channel; @@ -32,26 +34,26 @@ public class ExMultiPartyCommandChannelInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { if (_channel == null) { - return; + return false; } - writeC(0xfe); - writeH(0x30); + OutgoingPackets.EX_MULTI_PARTY_COMMAND_CHANNEL_INFO.writeId(packet); - writeS(_channel.getChannelLeader().getName()); - writeD(0); // Channel loot - writeD(_channel.getMemberCount()); + packet.writeS(_channel.getChannelLeader().getName()); + packet.writeD(0); // Channel loot + packet.writeD(_channel.getMemberCount()); - writeD(_channel.getParties().size()); + packet.writeD(_channel.getParties().size()); for (Party p : _channel.getParties()) { - writeS(p.getLeader().getName()); - writeD(p.getPartyLeaderOID()); - writeD(p.getMemberCount()); + packet.writeS(p.getLeader().getName()); + packet.writeD(p.getPartyLeaderOID()); + packet.writeD(p.getMemberCount()); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadMode.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadMode.java index 2334aec372..a83eaa02e0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadMode.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadMode.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ * @author godson */ -public class ExOlympiadMode extends GameServerPacket +public class ExOlympiadMode implements IClientOutgoingPacket { private static int _mode; private final PlayerInstance _player; @@ -38,11 +40,11 @@ public class ExOlympiadMode extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_player == null) { - return; + return false; } if (_mode == 3) @@ -50,8 +52,8 @@ public class ExOlympiadMode extends GameServerPacket _player.setObserverMode(true); } - writeC(0xfe); - writeH(0x2b); - writeC(_mode); + OutgoingPackets.EX_OLYMPIAD_MODE.writeId(packet); + packet.writeC(_mode); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadSpelledInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadSpelledInfo.java index 20b5c6795f..1bae7884ef 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadSpelledInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadSpelledInfo.java @@ -19,13 +19,15 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ * @author godson */ -public class ExOlympiadSpelledInfo extends GameServerPacket +public class ExOlympiadSpelledInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final List _effects; @@ -56,21 +58,21 @@ public class ExOlympiadSpelledInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_player == null) { - return; + return false; } - writeC(0xfe); - writeH(0x2a); - writeD(_player.getObjectId()); - writeD(_effects.size()); + OutgoingPackets.EX_OLYMPIAD_SPELLED_INFO.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_effects.size()); for (Effect temp : _effects) { - writeD(temp._skillId); - writeH(temp._level); - writeD(temp._duration / 1000); + packet.writeD(temp._skillId); + packet.writeH(temp._level); + packet.writeD(temp._duration / 1000); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadUserInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadUserInfo.java index ce275ff71e..d032b583f8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadUserInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOlympiadUserInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ * @author godson */ -public class ExOlympiadUserInfo extends GameServerPacket +public class ExOlympiadUserInfo implements IClientOutgoingPacket { private final int _side; private final PlayerInstance _player; @@ -38,21 +40,21 @@ public class ExOlympiadUserInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_player == null) { - return; + return false; } - writeC(0xfe); - writeH(0x29); - writeC(_side); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getClassId().getId()); - writeD((int) _player.getCurrentHp()); - writeD(_player.getMaxHp()); - writeD((int) _player.getCurrentCp()); - writeD(_player.getMaxCp()); + OutgoingPackets.EX_OLYMPIAD_USER_INFO.writeId(packet); + packet.writeC(_side); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getClassId().getId()); + packet.writeD((int) _player.getCurrentHp()); + packet.writeD(_player.getMaxHp()); + packet.writeD((int) _player.getCurrentCp()); + packet.writeD(_player.getMaxCp()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOpenMPCC.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOpenMPCC.java index 4b8a22cb33..80afb96478 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOpenMPCC.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExOpenMPCC.java @@ -16,15 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author chris_00 opens the CommandChannel Information window */ -public class ExOpenMPCC extends GameServerPacket +public class ExOpenMPCC implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x25); + OutgoingPackets.EX_OPEN_MPCC.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPCCafePointInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPCCafePointInfo.java index 680cfa09c2..e8630b707b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPCCafePointInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPCCafePointInfo.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author KenM */ -public class ExPCCafePointInfo extends GameServerPacket +public class ExPCCafePointInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _addPoint; @@ -61,14 +63,14 @@ public class ExPCCafePointInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x31); - writeD(_player.getPcBangScore()); - writeD(_addPoint); - writeC(_periodType); - writeD(_remainTime); - writeC(_pointType); + OutgoingPackets.EX_PC_CAFE_POINT_INFO.writeId(packet); + packet.writeD(_player.getPcBangScore()); + packet.writeD(_addPoint); + packet.writeC(_periodType); + packet.writeD(_remainTime); + packet.writeC(_pointType); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPartyRoomMember.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPartyRoomMember.java index 96b9c12710..6ca484f5e3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPartyRoomMember.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPartyRoomMember.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.MapRegionData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Gnacik */ -public class ExPartyRoomMember extends GameServerPacket +public class ExPartyRoomMember implements IClientOutgoingPacket { private final PartyMatchRoom _room; private final int _mode; @@ -35,31 +37,31 @@ public class ExPartyRoomMember extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x0e); - writeD(_mode); - writeD(_room.getMembers()); + OutgoingPackets.EX_PARTY_ROOM_MEMBER.writeId(packet); + packet.writeD(_mode); + packet.writeD(_room.getMembers()); for (PlayerInstance member : _room.getPartyMembers()) { - writeD(member.getObjectId()); - writeS(member.getName()); - writeD(member.getActiveClass()); - writeD(member.getLevel()); - writeD(MapRegionData.getInstance().getClosestLocation(member.getX(), member.getY())); + packet.writeD(member.getObjectId()); + packet.writeS(member.getName()); + packet.writeD(member.getActiveClass()); + packet.writeD(member.getLevel()); + packet.writeD(MapRegionData.getInstance().getClosestLocation(member.getX(), member.getY())); if (_room.getOwner().equals(member)) { - writeD(1); + packet.writeD(1); } else if ((_room.getOwner().isInParty() && member.isInParty()) && (_room.getOwner().getParty().getPartyLeaderOID() == member.getParty().getPartyLeaderOID())) { - writeD(2); + packet.writeD(2); } else { - writeD(0); + packet.writeD(0); } } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPledgeCrestLarge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPledgeCrestLarge.java index 864a16a781..691633f5d7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPledgeCrestLarge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExPledgeCrestLarge.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch) ddd b d: ? d: crest ID d: crest size b: raw data * @author -Wooden- */ -public class ExPledgeCrestLarge extends GameServerPacket +public class ExPledgeCrestLarge implements IClientOutgoingPacket { private final int _crestId; private final byte[] _data; @@ -31,20 +34,16 @@ public class ExPledgeCrestLarge extends GameServerPacket _data = data; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x28); + OutgoingPackets.EX_PLEDGE_CREST_LARGE.writeId(packet); - writeD(0x00); // ??? - writeD(_crestId); - writeD(_data.length); + packet.writeD(0x00); // ??? + packet.writeD(_crestId); + packet.writeD(_data.length); - writeB(_data); + packet.writeB(_data); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExQuestInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExQuestInfo.java index 4e3a3bbb63..de584fae71 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExQuestInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExQuestInfo.java @@ -16,20 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: $ $Date: $ * @author Luca Baldi */ -public class ExQuestInfo extends GameServerPacket +public class ExQuestInfo implements IClientOutgoingPacket { - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x19); + OutgoingPackets.EX_QUEST_INFO.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRedSky.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRedSky.java index a83e5a0b22..77c5c20e43 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRedSky.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRedSky.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch d. * @author KenM */ -public class ExRedSky extends GameServerPacket +public class ExRedSky implements IClientOutgoingPacket { /** The _duration. */ private final int _duration; @@ -35,10 +38,10 @@ public class ExRedSky extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x40); - writeD(_duration); + OutgoingPackets.EX_RED_SKY.writeId(packet); + packet.writeD(_duration); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRequestHackShield.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRequestHackShield.java index a920cedbc6..242c8fd935 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRequestHackShield.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRequestHackShield.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch Trigger packet. * @author KenM */ -public class ExRequestHackShield extends GameServerPacket +public class ExRequestHackShield implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x48); + OutgoingPackets.EX_REQUEST_HACK_SHIELD.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRestartClient.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRestartClient.java index fb4ec98d42..b4eedf52c9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRestartClient.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExRestartClient.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch). * @author -Wooden- */ -public class ExRestartClient extends GameServerPacket +public class ExRestartClient implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x47); + OutgoingPackets.EX_RESTART_CLIENT.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExSendManorList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExSendManorList.java index 801ca722f2..84dcdd3f94 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExSendManorList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExSendManorList.java @@ -18,11 +18,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format : (h) d [dS] h sub id d: number of manors [ d: id S: manor name ] * @author l3x */ -public class ExSendManorList extends GameServerPacket +public class ExSendManorList implements IClientOutgoingPacket { private final List _manors; @@ -32,16 +35,16 @@ public class ExSendManorList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x1B); - writeD(_manors.size()); + OutgoingPackets.EX_SEND_MANOR_LIST.writeId(packet); + packet.writeD(_manors.size()); for (int i = 0; i < _manors.size(); i++) { final int j = i + 1; - writeD(j); - writeS(_manors.get(i)); + packet.writeD(j); + packet.writeS(_manors.get(i)); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExServerPrimitive.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExServerPrimitive.java index 7452958054..7044264a80 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExServerPrimitive.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExServerPrimitive.java @@ -20,12 +20,15 @@ import java.awt.Color; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * A packet used to draw points and lines on client.
    * Note: Names in points and lines are bugged they will appear even when not looking at them. * @author NosBit */ -public class ExServerPrimitive extends GameServerPacket +public class ExServerPrimitive implements IClientOutgoingPacket { private final String _name; private final int _x; @@ -165,49 +168,49 @@ public class ExServerPrimitive extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x24); // Changed at Kamael to 11 - writeS(_name); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(65535); // has to do something with display range and angle - writeD(65535); // has to do something with display range and angle + OutgoingPackets.EX_SERVER_PRIMITIVE.writeId(packet); + packet.writeS(_name); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(65535); // has to do something with display range and angle + packet.writeD(65535); // has to do something with display range and angle - writeD(_points.size() + _lines.size()); + packet.writeD(_points.size() + _lines.size()); for (Point point : _points) { - writeC(1); // Its the type in this case Point - writeS(point.getName()); + packet.writeC(1); // Its the type in this case Point + packet.writeS(point.getName()); final int color = point.getColor(); - writeD((color >> 16) & 0xFF); // R - writeD((color >> 8) & 0xFF); // G - writeD(color & 0xFF); // B - writeD(point.isNameColored() ? 1 : 0); - writeD(point.getX()); - writeD(point.getY()); - writeD(point.getZ()); + packet.writeD((color >> 16) & 0xFF); // R + packet.writeD((color >> 8) & 0xFF); // G + packet.writeD(color & 0xFF); // B + packet.writeD(point.isNameColored() ? 1 : 0); + packet.writeD(point.getX()); + packet.writeD(point.getY()); + packet.writeD(point.getZ()); } for (Line line : _lines) { - writeC(2); // Its the type in this case Line - writeS(line.getName()); + packet.writeC(2); // Its the type in this case Line + packet.writeS(line.getName()); final int color = line.getColor(); - writeD((color >> 16) & 0xFF); // R - writeD((color >> 8) & 0xFF); // G - writeD(color & 0xFF); // B - writeD(line.isNameColored() ? 1 : 0); - writeD(line.getX()); - writeD(line.getY()); - writeD(line.getZ()); - writeD(line.getX2()); - writeD(line.getY2()); - writeD(line.getZ2()); + packet.writeD((color >> 16) & 0xFF); // R + packet.writeD((color >> 8) & 0xFF); // G + packet.writeD(color & 0xFF); // B + packet.writeD(line.isNameColored() ? 1 : 0); + packet.writeD(line.getX()); + packet.writeD(line.getY()); + packet.writeD(line.getZ()); + packet.writeD(line.getX2()); + packet.writeD(line.getY2()); + packet.writeD(line.getZ2()); } + return true; } private static class Point diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExSetCompassZoneCode.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExSetCompassZoneCode.java index 0b931efad2..a3f2f40145 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExSetCompassZoneCode.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExSetCompassZoneCode.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch d. * @author KenM */ -public class ExSetCompassZoneCode extends GameServerPacket +public class ExSetCompassZoneCode implements IClientOutgoingPacket { /** The Constant SIEGEWARZONE1. */ public static final int SIEGEWARZONE1 = 0x0A; @@ -53,10 +56,10 @@ public class ExSetCompassZoneCode extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x32); - writeD(_zoneType); + OutgoingPackets.EX_SET_COMPASS_ZONE_CODE.writeId(packet); + packet.writeD(_zoneType); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowAdventurerGuideBook.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowAdventurerGuideBook.java index 52417a39fa..a155f10008 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowAdventurerGuideBook.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowAdventurerGuideBook.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch (trigger). * @author KenM */ -public class ExShowAdventurerGuideBook extends GameServerPacket +public class ExShowAdventurerGuideBook implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x37); + OutgoingPackets.EX_SHOW_ADVENTURER_GUIDE_BOOK.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java index a6c2a9b3cc..0b71f2c32b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropInfo.java @@ -19,15 +19,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: ch cddd[ddddcdcdcd] c - id (0xFE) h - sub id (0x1D) c d - manor id d d - size [ d - crop id d - residual buy d - start buy d - buy price c - reward type d - seed level c - reward 1 items d - reward 1 item id c - reward 2 items d - reward 2 item id ] * @author l3x */ -public class ExShowCropInfo extends GameServerPacket +public class ExShowCropInfo implements IClientOutgoingPacket { private List _crops; private final int _manorId; @@ -43,26 +45,26 @@ public class ExShowCropInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); // Id - writeH(0x1D); // SubId - writeC(0); - writeD(_manorId); // Manor ID - writeD(0); - writeD(_crops.size()); + OutgoingPackets.EX_SHOW_CROP_INFO.writeId(packet); + packet.writeC(0); + packet.writeD(_manorId); // Manor ID + packet.writeD(0); + packet.writeD(_crops.size()); for (CropProcure crop : _crops) { - writeD(crop.getId()); // Crop id - writeD(crop.getAmount()); // Buy residual - writeD(crop.getStartAmount()); // Buy - writeD(crop.getPrice()); // Buy price - writeC(crop.getReward()); // Reward - writeD(ManorSeedData.getInstance().getSeedLevelByCrop(crop.getId())); // Seed Level - writeC(1); // reward 1 Type - writeD(ManorSeedData.getInstance().getRewardItem(crop.getId(), 1)); // Reward 1 Type Item Id - writeC(1); // reward 2 Type - writeD(ManorSeedData.getInstance().getRewardItem(crop.getId(), 2)); // Reward 2 Type Item Id + packet.writeD(crop.getId()); // Crop id + packet.writeD(crop.getAmount()); // Buy residual + packet.writeD(crop.getStartAmount()); // Buy + packet.writeD(crop.getPrice()); // Buy price + packet.writeC(crop.getReward()); // Reward + packet.writeD(ManorSeedData.getInstance().getSeedLevelByCrop(crop.getId())); // Seed Level + packet.writeC(1); // reward 1 Type + packet.writeD(ManorSeedData.getInstance().getRewardItem(crop.getId(), 1)); // Reward 1 Type Item Id + packet.writeC(1); // reward 2 Type + packet.writeD(ManorSeedData.getInstance().getRewardItem(crop.getId(), 2)); // Reward 2 Type Item Id } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java index 6fb9f5c5fa..bc6ef6f7ee 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowCropSetting.java @@ -18,28 +18,25 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch dd [ddcdcdddddddcddc] c - id h - sub id d - manor id d - size [ d - crop id d - seed level c d - reward 1 id c d - reward 2 id d - next sale limit d d - min crop price d - max crop price d - today buy d - today price c - today reward d - next buy d - next price c - next * reward ] * @author l3x */ -public class ExShowCropSetting extends GameServerPacket +public class ExShowCropSetting implements IClientOutgoingPacket { private final int _manorId; private final int _count; private final int[] _cropData; // data to send, size:_count*14 - @Override - public void runImpl() - { - } - public ExShowCropSetting(int manorId) { _manorId = manorId; @@ -89,35 +86,35 @@ public class ExShowCropSetting extends GameServerPacket } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); // Id - writeH(0x20); // SubId + OutgoingPackets.EX_SHOW_CROP_SETTING.writeId(packet); - writeD(_manorId); // manor id - writeD(_count); // size + packet.writeD(_manorId); // manor id + packet.writeD(_count); // size for (int i = 0; i < _count; i++) { - writeD(_cropData[(i * 14) + 0]); // crop id - writeD(_cropData[(i * 14) + 1]); // seed level - writeC(1); - writeD(_cropData[(i * 14) + 2]); // reward 1 id - writeC(1); - writeD(_cropData[(i * 14) + 3]); // reward 2 id + packet.writeD(_cropData[(i * 14) + 0]); // crop id + packet.writeD(_cropData[(i * 14) + 1]); // seed level + packet.writeC(1); + packet.writeD(_cropData[(i * 14) + 2]); // reward 1 id + packet.writeC(1); + packet.writeD(_cropData[(i * 14) + 3]); // reward 2 id - writeD(_cropData[(i * 14) + 4]); // next sale limit - writeD(_cropData[(i * 14) + 5]); // ??? - writeD(_cropData[(i * 14) + 6]); // min crop price - writeD(_cropData[(i * 14) + 7]); // max crop price + packet.writeD(_cropData[(i * 14) + 4]); // next sale limit + packet.writeD(_cropData[(i * 14) + 5]); // ??? + packet.writeD(_cropData[(i * 14) + 6]); // min crop price + packet.writeD(_cropData[(i * 14) + 7]); // max crop price - writeD(_cropData[(i * 14) + 8]); // today buy - writeD(_cropData[(i * 14) + 9]); // today price - writeC(_cropData[(i * 14) + 10]); // today reward + packet.writeD(_cropData[(i * 14) + 8]); // today buy + packet.writeD(_cropData[(i * 14) + 9]); // today price + packet.writeC(_cropData[(i * 14) + 10]); // today reward - writeD(_cropData[(i * 14) + 11]); // next buy - writeD(_cropData[(i * 14) + 12]); // next price - writeC(_cropData[(i * 14) + 13]); // next reward + packet.writeD(_cropData[(i * 14) + 11]); // next buy + packet.writeD(_cropData[(i * 14) + 12]); // next price + packet.writeC(_cropData[(i * 14) + 13]); // next reward } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java index 640476d75d..c6d13727ac 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowManorDefaultInfo.java @@ -18,13 +18,15 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch cd [ddddcdcd] c - id h - sub id c d - size [ d - level d - seed price d - seed level d - crop price c d - reward 1 id c d - reward 2 id ] * @author l3x */ -public class ExShowManorDefaultInfo extends GameServerPacket +public class ExShowManorDefaultInfo implements IClientOutgoingPacket { private List _crops = null; @@ -34,22 +36,22 @@ public class ExShowManorDefaultInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x1E); - writeC(0); - writeD(_crops.size()); + OutgoingPackets.EX_SHOW_MANOR_DEFAULT_INFO.writeId(packet); + packet.writeC(0); + packet.writeD(_crops.size()); for (int cropId : _crops) { - writeD(cropId); // crop Id - writeD(ManorSeedData.getInstance().getSeedLevelByCrop(cropId)); // level - writeD(ManorSeedData.getInstance().getSeedBasicPriceByCrop(cropId)); // seed price - writeD(ManorSeedData.getInstance().getCropBasicPrice(cropId)); // crop price - writeC(1); // reward 1 Type - writeD(ManorSeedData.getInstance().getRewardItem(cropId, 1)); // Reward 1 Type Item Id - writeC(1); // reward 2 Type - writeD(ManorSeedData.getInstance().getRewardItem(cropId, 2)); // Reward 2 Type Item Id + packet.writeD(cropId); // crop Id + packet.writeD(ManorSeedData.getInstance().getSeedLevelByCrop(cropId)); // level + packet.writeD(ManorSeedData.getInstance().getSeedBasicPriceByCrop(cropId)); // seed price + packet.writeD(ManorSeedData.getInstance().getCropBasicPrice(cropId)); // crop price + packet.writeC(1); // reward 1 Type + packet.writeD(ManorSeedData.getInstance().getRewardItem(cropId, 1)); // Reward 1 Type Item Id + packet.writeC(1); // reward 2 Type + packet.writeD(ManorSeedData.getInstance().getRewardItem(cropId, 2)); // Reward 2 Type Item Id } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowProcureCropDetail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowProcureCropDetail.java index 636edb9f45..047367b3cb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowProcureCropDetail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowProcureCropDetail.java @@ -20,16 +20,18 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch dd [dddc] c - id h - sub id d - crop id d - size [ d - manor name d - buy residual d - buy price c - reward type ] * @author l3x */ -public class ExShowProcureCropDetail extends GameServerPacket +public class ExShowProcureCropDetail implements IClientOutgoingPacket { private final int _cropId; private final Map _castleCrops; @@ -49,26 +51,21 @@ public class ExShowProcureCropDetail extends GameServerPacket } @Override - public void runImpl() + public boolean write(PacketWriter packet) { - } - - @Override - public void writeImpl() - { - writeC(0xFE); - writeH(0x22); + OutgoingPackets.EX_SHOW_PROCURE_CROP_DETAIL.writeId(packet); - writeD(_cropId); // crop id - writeD(_castleCrops.size()); // size + packet.writeD(_cropId); // crop id + packet.writeD(_castleCrops.size()); // size for (Entry entry : _castleCrops.entrySet()) { final CropProcure crop = entry.getValue(); - writeD(entry.getKey()); // manor name - writeD(crop.getAmount()); // buy residual - writeD(crop.getPrice()); // buy price - writeC(crop.getReward()); // reward type + packet.writeD(entry.getKey()); // manor name + packet.writeD(crop.getAmount()); // buy residual + packet.writeD(crop.getPrice()); // buy price + packet.writeC(crop.getReward()); // reward type } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowQuestMark.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowQuestMark.java index 5af2acdea1..93eebbf908 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowQuestMark.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowQuestMark.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Luca Baldi */ -public class ExShowQuestMark extends GameServerPacket +public class ExShowQuestMark implements IClientOutgoingPacket { private final int _questId; @@ -28,15 +31,11 @@ public class ExShowQuestMark extends GameServerPacket _questId = questId; } - /** - * @see org.l2jmobius.gameserver.network.serverpackets.GameServerPacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - // TODO Auto-generated method stub - writeC(0xfe); - writeH(0x1a); - writeD(_questId); + OutgoingPackets.EX_SHOW_QUEST_MARK.writeId(packet); + packet.writeD(_questId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowScreenMessage.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowScreenMessage.java index 8f34bb863f..5c5791e742 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowScreenMessage.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowScreenMessage.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Kerberos */ -public class ExShowScreenMessage extends GameServerPacket +public class ExShowScreenMessage implements IClientOutgoingPacket { private final int _type; private final int _sysMessageId; @@ -64,20 +67,20 @@ public class ExShowScreenMessage extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x38); - writeD(_type); // 0 - system messages, 1 - your defined text - writeD(_sysMessageId); // system message id (_type must be 0 otherwise no effect) - writeD(_position); // message position - writeD(_unk1); // ? - writeD(_size); // font size 0 - normal, 1 - small - writeD(_unk2); // ? - writeD(_unk3); // ? - writeD(_effect ? 1 : 0); // upper effect (0 - disabled, 1 enabled) - _position must be 2 (center) otherwise no effect - writeD(_time); // time - writeD(_unk4); // ? - writeS(_text); // your text (_type must be 1, otherwise no effect) + OutgoingPackets.EX_SHOW_SCREEN_MESSAGE.writeId(packet); + packet.writeD(_type); // 0 - system messages, 1 - your defined text + packet.writeD(_sysMessageId); // system message id (_type must be 0 otherwise no effect) + packet.writeD(_position); // message position + packet.writeD(_unk1); // ? + packet.writeD(_size); // font size 0 - normal, 1 - small + packet.writeD(_unk2); // ? + packet.writeD(_unk3); // ? + packet.writeD(_effect ? 1 : 0); // upper effect (0 - disabled, 1 enabled) - _position must be 2 (center) otherwise no effect + packet.writeD(_time); // time + packet.writeD(_unk4); // ? + packet.writeS(_text); // your text (_type must be 1, otherwise no effect) + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java index 0532dc5815..7d90b0e3b8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedInfo.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.SeedProduction; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch ddd [dddddcdcd] c - id h - sub id d - manor id d d - size [ d - seed id d - left to buy d - started amount d - sell price d - seed level c d - reward 1 id c d - reward 2 id ] * @author l3x */ -public class ExShowSeedInfo extends GameServerPacket +public class ExShowSeedInfo implements IClientOutgoingPacket { private List _seeds; private final int _manorId; @@ -42,25 +44,25 @@ public class ExShowSeedInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); // Id - writeH(0x1C); // SubId - writeC(0); - writeD(_manorId); // Manor ID - writeD(0); - writeD(_seeds.size()); + OutgoingPackets.EX_SHOW_SEED_INFO.writeId(packet); + packet.writeC(0); + packet.writeD(_manorId); // Manor ID + packet.writeD(0); + packet.writeD(_seeds.size()); for (SeedProduction seed : _seeds) { - writeD(seed.getId()); // Seed id - writeD(seed.getCanProduce()); // Left to buy - writeD(seed.getStartProduce()); // Started amount - writeD(seed.getPrice()); // Sell Price - writeD(ManorSeedData.getInstance().getSeedLevel(seed.getId())); // Seed Level - writeC(1); // reward 1 Type - writeD(ManorSeedData.getInstance().getRewardItemBySeed(seed.getId(), 1)); // Reward 1 Type Item Id - writeC(1); // reward 2 Type - writeD(ManorSeedData.getInstance().getRewardItemBySeed(seed.getId(), 2)); // Reward 2 Type Item Id + packet.writeD(seed.getId()); // Seed id + packet.writeD(seed.getCanProduce()); // Left to buy + packet.writeD(seed.getStartProduce()); // Started amount + packet.writeD(seed.getPrice()); // Sell Price + packet.writeD(ManorSeedData.getInstance().getSeedLevel(seed.getId())); // Seed Level + packet.writeC(1); // reward 1 Type + packet.writeD(ManorSeedData.getInstance().getRewardItemBySeed(seed.getId(), 1)); // Reward 1 Type Item Id + packet.writeC(1); // reward 2 Type + packet.writeD(ManorSeedData.getInstance().getRewardItemBySeed(seed.getId(), 2)); // Reward 2 Type Item Id } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java index 140ee01f0c..cf42f8ae05 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSeedSetting.java @@ -18,27 +18,24 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.SeedProduction; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch dd [ddcdcdddddddd] c - id h - sub id d - manor id d - size [ d - seed id d - level c d - reward 1 id c d - reward 2 id d - next sale limit d - price for castle to produce 1 d - min seed price d - max seed price d - today sales d - today price d - next sales d - next price ] * @author l3x */ -public class ExShowSeedSetting extends GameServerPacket +public class ExShowSeedSetting implements IClientOutgoingPacket { private final int _manorId; private final int _count; private final int[] _seedData; // data to send, size:_count*12 - @Override - public void runImpl() - { - } - public ExShowSeedSetting(int manorId) { _manorId = manorId; @@ -84,32 +81,32 @@ public class ExShowSeedSetting extends GameServerPacket } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); // Id - writeH(0x1F); // SubId + OutgoingPackets.EX_SHOW_SEED_SETTING.writeId(packet); - writeD(_manorId); // manor id - writeD(_count); // size + packet.writeD(_manorId); // manor id + packet.writeD(_count); // size for (int i = 0; i < _count; i++) { - writeD(_seedData[(i * 12) + 0]); // seed id - writeD(_seedData[(i * 12) + 1]); // level - writeC(1); - writeD(_seedData[(i * 12) + 2]); // reward 1 id - writeC(1); - writeD(_seedData[(i * 12) + 3]); // reward 2 id + packet.writeD(_seedData[(i * 12) + 0]); // seed id + packet.writeD(_seedData[(i * 12) + 1]); // level + packet.writeC(1); + packet.writeD(_seedData[(i * 12) + 2]); // reward 1 id + packet.writeC(1); + packet.writeD(_seedData[(i * 12) + 3]); // reward 2 id - writeD(_seedData[(i * 12) + 4]); // next sale limit - writeD(_seedData[(i * 12) + 5]); // price for castle to produce 1 - writeD(_seedData[(i * 12) + 6]); // min seed price - writeD(_seedData[(i * 12) + 7]); // max seed price + packet.writeD(_seedData[(i * 12) + 4]); // next sale limit + packet.writeD(_seedData[(i * 12) + 5]); // price for castle to produce 1 + packet.writeD(_seedData[(i * 12) + 6]); // min seed price + packet.writeD(_seedData[(i * 12) + 7]); // max seed price - writeD(_seedData[(i * 12) + 8]); // today sales - writeD(_seedData[(i * 12) + 9]); // today price - writeD(_seedData[(i * 12) + 10]); // next sales - writeD(_seedData[(i * 12) + 11]); // next price + packet.writeD(_seedData[(i * 12) + 8]); // today sales + packet.writeD(_seedData[(i * 12) + 9]); // today price + packet.writeD(_seedData[(i * 12) + 10]); // next sales + packet.writeD(_seedData[(i * 12) + 11]); // next price } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java index e02d1ae4e0..d961017809 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSellCropList.java @@ -20,17 +20,19 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.ManorSeedData; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format(packet 0xFE) ch dd [ddddcdcdddc] c - id h - sub id d - manor id d - size [ d - Object id d - crop id d - seed level c d - reward 1 id c d - reward 2 id d - manor d - buy residual d - buy price d - reward ] * @author l3x */ -public class ExShowSellCropList extends GameServerPacket +public class ExShowSellCropList implements IClientOutgoingPacket { private int _manorId = 1; private final Map _cropsItems; @@ -62,46 +64,40 @@ public class ExShowSellCropList extends GameServerPacket } @Override - public void runImpl() + public boolean write(PacketWriter packet) { - // no long running - } - - @Override - public void writeImpl() - { - writeC(0xFE); - writeH(0x21); + OutgoingPackets.EX_SHOW_SELL_CROP_LIST.writeId(packet); - writeD(_manorId); // manor id - writeD(_cropsItems.size()); // size + packet.writeD(_manorId); // manor id + packet.writeD(_cropsItems.size()); // size for (ItemInstance item : _cropsItems.values()) { - writeD(item.getObjectId()); // Object id - writeD(item.getItemId()); // crop id - writeD(ManorSeedData.getInstance().getSeedLevelByCrop(item.getItemId())); // seed level - writeC(1); - writeD(ManorSeedData.getInstance().getRewardItem(item.getItemId(), 1)); // reward 1 id - writeC(1); - writeD(ManorSeedData.getInstance().getRewardItem(item.getItemId(), 2)); // reward 2 id + packet.writeD(item.getObjectId()); // Object id + packet.writeD(item.getItemId()); // crop id + packet.writeD(ManorSeedData.getInstance().getSeedLevelByCrop(item.getItemId())); // seed level + packet.writeC(1); + packet.writeD(ManorSeedData.getInstance().getRewardItem(item.getItemId(), 1)); // reward 1 id + packet.writeC(1); + packet.writeD(ManorSeedData.getInstance().getRewardItem(item.getItemId(), 2)); // reward 2 id if (_castleCrops.containsKey(item.getItemId())) { final CropProcure crop = _castleCrops.get(item.getItemId()); - writeD(_manorId); // manor - writeD(crop.getAmount()); // buy residual - writeD(crop.getPrice()); // buy price - writeC(crop.getReward()); // reward + packet.writeD(_manorId); // manor + packet.writeD(crop.getAmount()); // buy residual + packet.writeD(crop.getPrice()); // buy price + packet.writeC(crop.getReward()); // reward } else { - writeD(0xFFFFFFFF); // manor - writeD(0); // buy residual - writeD(0); // buy price - writeC(0); // reward + packet.writeD(0xFFFFFFFF); // manor + packet.writeD(0); // buy residual + packet.writeD(0); // buy price + packet.writeC(0); // reward } - writeD(item.getCount()); // my crops + packet.writeD(item.getCount()); // my crops } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSlideshowKamael.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSlideshowKamael.java index e464f3a92b..41f52ce6d7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSlideshowKamael.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowSlideshowKamael.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch * @author devScarlet & mrTJO */ -public class ExShowSlideshowKamael extends GameServerPacket +public class ExShowSlideshowKamael implements IClientOutgoingPacket { public static final ExShowSlideshowKamael STATIC_PACKET = new ExShowSlideshowKamael(); @@ -29,9 +32,9 @@ public class ExShowSlideshowKamael extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x5b); + OutgoingPackets.EX_SHOW_SLIDESHOW_KAMAEL.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationCancelWindow.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationCancelWindow.java index 22a68e7a3c..046557e371 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationCancelWindow.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationCancelWindow.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch Trigger packet. * @author KenM */ -public class ExShowVariationCancelWindow extends GameServerPacket +public class ExShowVariationCancelWindow implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x51); + OutgoingPackets.EX_SHOW_VARIATION_CANCEL_WINDOW.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationMakeWindow.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationMakeWindow.java index 721c890624..cd6d60b482 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationMakeWindow.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExShowVariationMakeWindow.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch Trigger packet. * @author KenM */ -public class ExShowVariationMakeWindow extends GameServerPacket +public class ExShowVariationMakeWindow implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x50); + OutgoingPackets.EX_SHOW_VARIATION_MAKE_WINDOW.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExStorageMaxCount.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExStorageMaxCount.java index 3e9eb52e36..12ab975e64 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExStorageMaxCount.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExStorageMaxCount.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch)ddddddd d: Number of Inventory Slots d: Number of Warehouse Slots d: Number of Freight Slots (unconfirmed) (200 for a low level dwarf) d: Private Sell Store Slots (unconfirmed) (4 for a low level dwarf) d: Private Buy Store Slots (unconfirmed) (5 for a low level dwarf) d: Dwarven * Recipe Book Slots d: Normal Recipe Book Slots * @author -Wooden- format from KenM */ -public class ExStorageMaxCount extends GameServerPacket +public class ExStorageMaxCount implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _inventory; @@ -46,22 +48,18 @@ public class ExStorageMaxCount extends GameServerPacket _recipe = _player.getCommonRecipeLimit(); } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x2e); + OutgoingPackets.EX_STORAGE_MAX_COUNT.writeId(packet); - writeD(_inventory); - writeD(_warehouse); - writeD(_freight); - writeD(_privateSell); - writeD(_privateBuy); - writeD(_receipeD); - writeD(_recipe); + packet.writeD(_inventory); + packet.writeD(_warehouse); + packet.writeD(_freight); + packet.writeD(_privateSell); + packet.writeD(_privateBuy); + packet.writeD(_receipeD); + packet.writeD(_recipe); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExUseSharedGroupItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExUseSharedGroupItem.java index 9711c01896..cfc983ef5f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExUseSharedGroupItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExUseSharedGroupItem.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: ch dddd. * @author KenM */ -public class ExUseSharedGroupItem extends GameServerPacket +public class ExUseSharedGroupItem implements IClientOutgoingPacket { /** The _unk4. */ private final int _unk1; @@ -53,14 +56,14 @@ public class ExUseSharedGroupItem extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x49); + OutgoingPackets.EX_USE_SHARED_GROUP_ITEM.writeId(packet); - writeD(_unk1); - writeD(_unk2); - writeD(_unk3); - writeD(_unk4); + packet.writeD(_unk1); + packet.writeD(_unk2); + packet.writeD(_unk3); + packet.writeD(_unk4); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationCancelResult.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationCancelResult.java index 691c0cded8..f9fd99f0ea 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationCancelResult.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationCancelResult.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddd. */ -public class ExVariationCancelResult extends GameServerPacket +public class ExVariationCancelResult implements IClientOutgoingPacket { /** The _close window. */ private final int _closeWindow; @@ -38,11 +41,11 @@ public class ExVariationCancelResult extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x57); - writeD(_closeWindow); - writeD(_unk1); + OutgoingPackets.EX_VARIATION_CANCEL_RESULT.writeId(packet); + packet.writeD(_closeWindow); + packet.writeD(_unk1); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationResult.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationResult.java index 2cbb06745e..6e8bd5de5f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationResult.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExVariationResult.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch)ddd. */ -public class ExVariationResult extends GameServerPacket +public class ExVariationResult implements IClientOutgoingPacket { /** The _stat12. */ private final int _stat12; @@ -44,12 +47,12 @@ public class ExVariationResult extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x55); - writeD(_stat12); - writeD(_stat34); - writeD(_unk3); + OutgoingPackets.EX_VARIATION_RESULT.writeId(packet); + packet.writeD(_stat12); + packet.writeD(_stat34); + packet.writeD(_unk3); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FakePlayerInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FakePlayerInfo.java index 07a6b9c5a5..a77b3ec5d1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FakePlayerInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FakePlayerInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.PlayerTemplateData; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class FakePlayerInfo extends GameServerPacket +public class FakePlayerInfo implements IClientOutgoingPacket { private final NpcInstance _activeChar; @@ -32,112 +34,114 @@ public class FakePlayerInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x03); - writeD(_activeChar.getX()); - writeD(_activeChar.getY()); - writeD(_activeChar.getZ()); - writeD(_activeChar.getHeading()); - writeD(_activeChar.getObjectId()); - writeS(_activeChar.getFakePlayerInstance().getName()); - writeD(_activeChar.getFakePlayerInstance().getRace()); - writeD(_activeChar.getFakePlayerInstance().isFemaleSex() ? 1 : 0); - writeD(_activeChar.getFakePlayerInstance().getClassId()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); - writeD(0); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_RHAND()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_LHAND()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_GLOVES()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_CHEST()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_LEGS()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_FEET()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_RHAND()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); - writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR2()); + OutgoingPackets.CHAR_INFO.writeId(packet); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); - writeH(0); + packet.writeD(_activeChar.getX()); + packet.writeD(_activeChar.getY()); + packet.writeD(_activeChar.getZ()); + packet.writeD(_activeChar.getHeading()); + packet.writeD(_activeChar.getObjectId()); + packet.writeS(_activeChar.getFakePlayerInstance().getName()); + packet.writeD(_activeChar.getFakePlayerInstance().getRace()); + packet.writeD(_activeChar.getFakePlayerInstance().isFemaleSex() ? 1 : 0); + packet.writeD(_activeChar.getFakePlayerInstance().getClassId()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); + packet.writeD(0); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_RHAND()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_LHAND()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_GLOVES()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_CHEST()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_LEGS()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_FEET()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_RHAND()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR()); + packet.writeD(_activeChar.getFakePlayerInstance().PAPERDOLL_HAIR2()); - writeD(_activeChar.getFakePlayerInstance().getPvpFlag() ? 1 : 0); - writeD(_activeChar.getFakePlayerInstance().getKarma()); - writeD(_activeChar.getMAtkSpd()); - writeD(_activeChar.getPAtkSpd()); - writeD(_activeChar.getFakePlayerInstance().getPvpFlag() ? 1 : 0); - writeD(_activeChar.getFakePlayerInstance().getKarma()); - writeD(_activeChar.getRunSpeed()); - writeD(_activeChar.getRunSpeed() / 2); - writeD(_activeChar.getRunSpeed() / 3); - writeD(_activeChar.getRunSpeed() / 3); - writeD(_activeChar.getRunSpeed()); - writeD(_activeChar.getRunSpeed()); - writeD(_activeChar.getRunSpeed()); - writeD(_activeChar.getRunSpeed()); - writeF(_activeChar.getStat().getMovementSpeedMultiplier()); - writeF(_activeChar.getStat().getAttackSpeedMultiplier()); - writeF(PlayerTemplateData.getInstance().getTemplate(_activeChar.getFakePlayerInstance().getClassId()).getCollisionRadius()); - writeF(PlayerTemplateData.getInstance().getTemplate(_activeChar.getFakePlayerInstance().getClassId()).getCollisionHeight()); - writeD(_activeChar.getFakePlayerInstance().getHairStyle()); - writeD(_activeChar.getFakePlayerInstance().getHairColor()); - writeD(_activeChar.getFakePlayerInstance().getFace()); - writeS(_activeChar.getFakePlayerInstance().getTitle()); - writeD(_activeChar.getFakePlayerInstance().getClanId()); - writeD(_activeChar.getFakePlayerInstance().getClanCrestId()); - writeD(_activeChar.getFakePlayerInstance().getAllyId()); - writeD(_activeChar.getFakePlayerInstance().getAllyCrestId()); - writeD(0); - writeC(1); - writeC(_activeChar.isRunning() ? 1 : 0); - writeC(_activeChar.isInCombat() ? 1 : 0); - writeC(_activeChar.isAlikeDead() ? 1 : 0); - writeC(0); - writeC(0); - writeC(0); - writeH(0); - writeC(0); - writeD(_activeChar.getAbnormalEffect()); - writeC(0); - writeH(0); - writeD(_activeChar.getFakePlayerInstance().getClassId()); - writeD(_activeChar.getMaxCp()); - writeD((int) _activeChar.getStatus().getCurrentCp()); - writeC(_activeChar.getFakePlayerInstance().getEnchantWeapon()); - writeC(0); - writeD(0); // clan crest - writeC(_activeChar.getFakePlayerInstance().isNoble() ? 1 : 0); - writeC(_activeChar.getFakePlayerInstance().isHero() ? 1 : 0); - writeC(0); - writeD(0); - writeD(0); - writeD(0); - writeD(_activeChar.getFakePlayerInstance().nameColor()); - writeD(0); - writeD(_activeChar.getFakePlayerInstance().getPledgeClass()); - writeD(0); - writeD(_activeChar.getFakePlayerInstance().titleColor()); - writeD(0x00); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + packet.writeH(0); + + packet.writeD(_activeChar.getFakePlayerInstance().getPvpFlag() ? 1 : 0); + packet.writeD(_activeChar.getFakePlayerInstance().getKarma()); + packet.writeD(_activeChar.getMAtkSpd()); + packet.writeD(_activeChar.getPAtkSpd()); + packet.writeD(_activeChar.getFakePlayerInstance().getPvpFlag() ? 1 : 0); + packet.writeD(_activeChar.getFakePlayerInstance().getKarma()); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeD(_activeChar.getRunSpeed() / 2); + packet.writeD(_activeChar.getRunSpeed() / 3); + packet.writeD(_activeChar.getRunSpeed() / 3); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeD(_activeChar.getRunSpeed()); + packet.writeF(_activeChar.getStat().getMovementSpeedMultiplier()); + packet.writeF(_activeChar.getStat().getAttackSpeedMultiplier()); + packet.writeF(PlayerTemplateData.getInstance().getTemplate(_activeChar.getFakePlayerInstance().getClassId()).getCollisionRadius()); + packet.writeF(PlayerTemplateData.getInstance().getTemplate(_activeChar.getFakePlayerInstance().getClassId()).getCollisionHeight()); + packet.writeD(_activeChar.getFakePlayerInstance().getHairStyle()); + packet.writeD(_activeChar.getFakePlayerInstance().getHairColor()); + packet.writeD(_activeChar.getFakePlayerInstance().getFace()); + packet.writeS(_activeChar.getFakePlayerInstance().getTitle()); + packet.writeD(_activeChar.getFakePlayerInstance().getClanId()); + packet.writeD(_activeChar.getFakePlayerInstance().getClanCrestId()); + packet.writeD(_activeChar.getFakePlayerInstance().getAllyId()); + packet.writeD(_activeChar.getFakePlayerInstance().getAllyCrestId()); + packet.writeD(0); + packet.writeC(1); + packet.writeC(_activeChar.isRunning() ? 1 : 0); + packet.writeC(_activeChar.isInCombat() ? 1 : 0); + packet.writeC(_activeChar.isAlikeDead() ? 1 : 0); + packet.writeC(0); + packet.writeC(0); + packet.writeC(0); + packet.writeH(0); + packet.writeC(0); + packet.writeD(_activeChar.getAbnormalEffect()); + packet.writeC(0); + packet.writeH(0); + packet.writeD(_activeChar.getFakePlayerInstance().getClassId()); + packet.writeD(_activeChar.getMaxCp()); + packet.writeD((int) _activeChar.getStatus().getCurrentCp()); + packet.writeC(_activeChar.getFakePlayerInstance().getEnchantWeapon()); + packet.writeC(0); + packet.writeD(0); // clan crest + packet.writeC(_activeChar.getFakePlayerInstance().isNoble() ? 1 : 0); + packet.writeC(_activeChar.getFakePlayerInstance().isHero() ? 1 : 0); + packet.writeC(0); + packet.writeD(0); + packet.writeD(0); + packet.writeD(0); + packet.writeD(_activeChar.getFakePlayerInstance().nameColor()); + packet.writeD(0); + packet.writeD(_activeChar.getFakePlayerInstance().getPledgeClass()); + packet.writeD(0); + packet.writeD(_activeChar.getFakePlayerInstance().titleColor()); + packet.writeD(0x00); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FinishRotation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FinishRotation.java deleted file mode 100644 index ba3e3de40e..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FinishRotation.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.model.actor.Creature; - -/** - * format dd - * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ - */ -public class FinishRotation extends GameServerPacket -{ - private final int _heading; - private final int _objectId; - - public FinishRotation(Creature creature) - { - _objectId = creature.getObjectId(); - _heading = creature.getHeading(); - } - - @Override - protected final void writeImpl() - { - writeC(0x63); - writeD(_objectId); - writeD(_heading); - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeAttackerList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeAttackerList.java deleted file mode 100644 index 74a4da89d2..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeAttackerList.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.SiegeClan; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.siege.Fort; - -/** - * Populates the Siege Attacker List in the SiegeInfo Window
    - *
    - * packet type id 0xca
    - * format: cddddddd + dSSdddSSd
    - *
    - * c = ca
    - * d = FortID
    - * d = unknow (0x00)
    - * d = unknow (0x01)
    - * d = unknow (0x00)
    - * d = Number of Attackers Clans?
    - * d = Number of Attackers Clans
    - * { //repeats
    - * d = ClanID
    - * S = ClanName
    - * S = ClanLeaderName
    - * d = ClanCrestID
    - * d = signed time (seconds)
    - * d = AllyID
    - * S = AllyName
    - * S = AllyLeaderName
    - * d = AllyCrestID
    - * @author programmos, scoria dev - */ -public class FortSiegeAttackerList extends GameServerPacket -{ - private final Fort _fort; - - public FortSiegeAttackerList(Fort fort) - { - _fort = fort; - } - - @Override - protected final void writeImpl() - { - writeC(0xca); - writeD(_fort.getFortId()); - writeD(0x00); // 0 - writeD(0x01); // 1 - writeD(0x00); // 0 - final int size = _fort.getSiege().getAttackerClans().size(); - if (size > 0) - { - Clan clan; - writeD(size); - writeD(size); - for (SiegeClan siegeclan : _fort.getSiege().getAttackerClans()) - { - clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); - if (clan == null) - { - continue; - } - - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); - } - } - else - { - writeD(0x00); - writeD(0x00); - } - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeDefenderList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeDefenderList.java deleted file mode 100644 index 6f1d084250..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FortSiegeDefenderList.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.SiegeClan; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.siege.Fort; - -/** - * Populates the Siege Defender List in the SiegeInfo Window
    - *
    - * packet type id 0xcb
    - * format: cddddddd + dSSdddSSd
    - *
    - * c = 0xcb
    - * d = FortID
    - * d = unknow (0x00)
    - * d = unknow (0x01)
    - * d = unknow (0x00)
    - * d = Number of Defending Clans?
    - * d = Number of Defending Clans
    - * { //repeats
    - * d = ClanID
    - * S = ClanName
    - * S = ClanLeaderName
    - * d = ClanCrestID
    - * d = signed time (seconds)
    - * d = Type -> Owner = 0x01 || Waiting = 0x02 || Accepted = 0x03
    - * d = AllyID
    - * S = AllyName
    - * S = AllyLeaderName
    - * d = AllyCrestID
    - * @author programmos - */ -public class FortSiegeDefenderList extends GameServerPacket -{ - private final Fort _fort; - - public FortSiegeDefenderList(Fort fort) - { - _fort = fort; - } - - @Override - protected final void writeImpl() - { - writeC(0xcb); - writeD(_fort.getFortId()); - writeD(0x00); // 0 - writeD(0x01); // 1 - writeD(0x00); // 0 - final int size = _fort.getSiege().getDefenderClans().size() + _fort.getSiege().getDefenderWaitingClans().size(); - if (size > 0) - { - Clan clan; - writeD(size); - writeD(size); - // Listing the Lord and the approved clans - for (SiegeClan siegeclan : _fort.getSiege().getDefenderClans()) - { - clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); - if (clan == null) - { - continue; - } - - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - switch (siegeclan.getType()) - { - case OWNER: - { - writeD(0x01); // owner - break; - } - case DEFENDER_PENDING: - { - writeD(0x02); // approved - break; - } - case DEFENDER: - { - writeD(0x03); // waiting approved - break; - } - default: - { - writeD(0x00); - break; - } - } - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); - } - for (SiegeClan siegeclan : _fort.getSiege().getDefenderWaitingClans()) - { - clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - writeD(0x02); // waiting approval - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); - } - } - else - { - writeD(0x00); - writeD(0x00); - } - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FortressSiegeInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FortressSiegeInfo.java deleted file mode 100644 index e4c48810bd..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FortressSiegeInfo.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import java.util.Calendar; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.siege.Fort; - -/** - * Shows the Siege Info
    - *
    - * packet type id 0xc9
    - * format: cdddSSdSdd
    - *
    - * c = c9
    - * d = FortID
    - * d = Show Owner Controls (0x00 default || >=0x02(mask?) owner)
    - * d = Owner ClanID
    - * S = Owner ClanName
    - * S = Owner Clan LeaderName
    - * d = Owner AllyID
    - * S = Owner AllyName
    - * d = current time (seconds)
    - * d = Siege time (seconds) (0 for selectable)
    - * d = (UNKNOW) Siege Time Select Related? - * @author programmos - */ -public class FortressSiegeInfo extends GameServerPacket -{ - private static final Logger LOGGER = Logger.getLogger(FortressSiegeInfo.class.getName()); - private final Fort _fort; - - public FortressSiegeInfo(Fort fort) - { - _fort = fort; - } - - @Override - protected final void writeImpl() - { - final PlayerInstance player = getClient().getPlayer(); - if (player == null) - { - return; - } - - writeC(0xc9); - writeD(_fort.getFortId()); - writeD((_fort.getOwnerId() == player.getClanId()) && player.isClanLeader() ? 0x01 : 0x00); - writeD(_fort.getOwnerId()); - if (_fort.getOwnerId() > 0) - { - final Clan owner = ClanTable.getInstance().getClan(_fort.getOwnerId()); - if (owner != null) - { - writeS(owner.getName()); // Clan Name - writeS(owner.getLeaderName()); // Clan Leader Name - writeD(owner.getAllyId()); // Ally ID - writeS(owner.getAllyName()); // Ally Name - } - else - { - LOGGER.warning("Null owner for fort: " + _fort.getName()); - } - } - else - { - writeS("NPC"); // Clan Name - writeS(""); // Clan Leader Name - writeD(0); // Ally ID - writeS(""); // Ally Name - } - - writeD((int) (Calendar.getInstance().getTimeInMillis() / 1000)); - writeD((int) (_fort.getSiege().getSiegeDate().getTimeInMillis() / 1000)); - writeD(0x00); // number of choices? - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FriendList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FriendList.java index 49b2d9ce9b..f1479703ea 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FriendList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FriendList.java @@ -19,15 +19,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.CharNameTable; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Support for "Chat with Friends" dialog. * @author Tempy */ -public class FriendList extends GameServerPacket +public class FriendList implements IClientOutgoingPacket { private final List _info; @@ -57,16 +59,17 @@ public class FriendList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfa); - writeD(_info.size()); + OutgoingPackets.FRIEND_LIST.writeId(packet); + packet.writeD(_info.size()); for (FriendInfo info : _info) { - writeD(info._objId); - writeS(info._name); - writeD(info._online ? 0x01 : 0x00); - writeD(info._online ? info._objId : 0x00); + packet.writeD(info._objId); + packet.writeS(info._name); + packet.writeD(info._online ? 0x01 : 0x00); + packet.writeD(info._online ? info._objId : 0x00); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FriendRecvMsg.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FriendRecvMsg.java index 0e951e11e1..d8a5f97055 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FriendRecvMsg.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/FriendRecvMsg.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Send Private (Friend) Message Format: c dSSS d: Unknown S: Sending Player S: Receiving Player S: Message * @author Tempy */ -public class FriendRecvMsg extends GameServerPacket +public class FriendRecvMsg implements IClientOutgoingPacket { private final String _sender; private final String _receiver; @@ -34,13 +37,13 @@ public class FriendRecvMsg extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfd); - - writeD(0); // ?? - writeS(_receiver); - writeS(_sender); - writeS(_message); + OutgoingPackets.FRIEND_RECV_MSG.writeId(packet); + packet.writeD(0); // ?? + packet.writeS(_receiver); + packet.writeS(_sender); + packet.writeS(_message); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewCharacterInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewCharacterInfo.java index 6ce14e00fc..cf1106155e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewCharacterInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewCharacterInfo.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * TODO Add support for Eval. Score dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSddd rev420 dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddcccddhh rev478 * dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddcccddhhddd rev551 * @version $Revision: 1.2.2.2.2.8 $ $Date: 2005/03/27 15:29:39 $ */ -public class GMViewCharacterInfo extends GameServerPacket +public class GMViewCharacterInfo implements IClientOutgoingPacket { /** The _active char. */ private final PlayerInstance _player; @@ -38,177 +40,175 @@ public class GMViewCharacterInfo extends GameServerPacket _player = player; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final float moveMultiplier = _player.getMovementSpeedMultiplier(); - final int _runSpd = (int) (_player.getRunSpeed() / moveMultiplier); - final int _walkSpd = (int) (_player.getWalkSpeed() / moveMultiplier); - writeC(0x8f); + final int runSpd = (int) (_player.getRunSpeed() / moveMultiplier); + final int walkSpd = (int) (_player.getWalkSpeed() / moveMultiplier); - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); - writeD(_player.getHeading()); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getRace().ordinal()); - writeD(_player.getAppearance().isFemale() ? 1 : 0); - writeD(_player.getClassId().getId()); - writeD(_player.getLevel()); - writeQ(_player.getExp()); - writeD(_player.getSTR()); - writeD(_player.getDEX()); - writeD(_player.getCON()); - writeD(_player.getINT()); - writeD(_player.getWIT()); - writeD(_player.getMEN()); - writeD(_player.getMaxHp()); - writeD((int) _player.getCurrentHp()); - writeD(_player.getMaxMp()); - writeD((int) _player.getCurrentMp()); - writeD(_player.getSp()); - writeD(_player.getCurrentLoad()); - writeD(_player.getMaxLoad()); - writeD(0x28); // unknown + OutgoingPackets.GM_VIEW_CHARACTER_INFO.writeId(packet); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE)); + packet.writeD(_player.getX()); + packet.writeD(_player.getY()); + packet.writeD(_player.getZ()); + packet.writeD(_player.getHeading()); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getRace().ordinal()); + packet.writeD(_player.getAppearance().isFemale() ? 1 : 0); + packet.writeD(_player.getClassId().getId()); + packet.writeD(_player.getLevel()); + packet.writeQ(_player.getExp()); + packet.writeD(_player.getSTR()); + packet.writeD(_player.getDEX()); + packet.writeD(_player.getCON()); + packet.writeD(_player.getINT()); + packet.writeD(_player.getWIT()); + packet.writeD(_player.getMEN()); + packet.writeD(_player.getMaxHp()); + packet.writeD((int) _player.getCurrentHp()); + packet.writeD(_player.getMaxMp()); + packet.writeD((int) _player.getCurrentMp()); + packet.writeD(_player.getSp()); + packet.writeD(_player.getCurrentLoad()); + packet.writeD(_player.getMaxLoad()); + packet.writeD(0x28); // unknown - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DHAIR)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE)); + + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DHAIR)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE)); // c6 new h's - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); // end of c6 new h's - writeD(_player.getPAtk(null)); - writeD(_player.getPAtkSpd()); - writeD(_player.getPDef(null)); - writeD(_player.getEvasionRate(null)); - writeD(_player.getAccuracy()); - writeD(_player.getCriticalHit(null, null)); - writeD(_player.getMAtk(null, null)); + packet.writeD(_player.getPAtk(null)); + packet.writeD(_player.getPAtkSpd()); + packet.writeD(_player.getPDef(null)); + packet.writeD(_player.getEvasionRate(null)); + packet.writeD(_player.getAccuracy()); + packet.writeD(_player.getCriticalHit(null, null)); + packet.writeD(_player.getMAtk(null, null)); - writeD(_player.getMAtkSpd()); - writeD(_player.getPAtkSpd()); + packet.writeD(_player.getMAtkSpd()); + packet.writeD(_player.getPAtkSpd()); - writeD(_player.getMDef(null, null)); + packet.writeD(_player.getMDef(null, null)); - writeD(_player.getPvpFlag()); // 0-non-pvp 1-pvp = violett name - writeD(_player.getKarma()); + packet.writeD(_player.getPvpFlag()); // 0-non-pvp 1-pvp = violett name + packet.writeD(_player.getKarma()); - writeD(_runSpd); - writeD(_walkSpd); - writeD(_runSpd); // swimspeed - writeD(_walkSpd); // swimspeed - writeD(_runSpd); - writeD(_walkSpd); - writeD(_runSpd); - writeD(_walkSpd); - writeF(moveMultiplier); - writeF(_player.getAttackSpeedMultiplier()); // 2.9); // - writeF(_player.getTemplate().getCollisionRadius()); // scale - writeF(_player.getTemplate().getCollisionHeight()); // y offset ??!? fem dwarf 4033 - writeD(_player.getAppearance().getHairStyle()); - writeD(_player.getAppearance().getHairColor()); - writeD(_player.getAppearance().getFace()); - writeD(_player.isGM() ? 0x01 : 0x00); // builder level + packet.writeD(runSpd); + packet.writeD(walkSpd); + packet.writeD(runSpd); // swimspeed + packet.writeD(walkSpd); // swimspeed + packet.writeD(runSpd); + packet.writeD(walkSpd); + packet.writeD(runSpd); + packet.writeD(walkSpd); + packet.writeF(moveMultiplier); + packet.writeF(_player.getAttackSpeedMultiplier()); // 2.9); // + packet.writeF(_player.getTemplate().getCollisionRadius()); // scale + packet.writeF(_player.getTemplate().getCollisionHeight()); // y offset ??!? fem dwarf 4033 + packet.writeD(_player.getAppearance().getHairStyle()); + packet.writeD(_player.getAppearance().getHairColor()); + packet.writeD(_player.getAppearance().getFace()); + packet.writeD(_player.isGM() ? 0x01 : 0x00); // builder level - writeS(_player.getTitle()); - writeD(_player.getClanId()); // pledge id - writeD(_player.getClanCrestId()); // pledge crest id - writeD(_player.getAllyId()); // ally id - writeC(_player.getMountType()); // mount type - writeC(_player.getPrivateStoreType()); - writeC(_player.hasDwarvenCraft() ? 1 : 0); - writeD(_player.getPkKills()); - writeD(_player.getPvpKills()); + packet.writeS(_player.getTitle()); + packet.writeD(_player.getClanId()); // pledge id + packet.writeD(_player.getClanCrestId()); // pledge crest id + packet.writeD(_player.getAllyId()); // ally id + packet.writeC(_player.getMountType()); // mount type + packet.writeC(_player.getPrivateStoreType()); + packet.writeC(_player.hasDwarvenCraft() ? 1 : 0); + packet.writeD(_player.getPkKills()); + packet.writeD(_player.getPvpKills()); - writeH(_player.getRecomLeft()); - writeH(_player.getRecomHave()); // Blue value for name (0 = white, 255 = pure blue) - writeD(_player.getClassId().getId()); - writeD(0x00); // special effects? circles around player... - writeD(_player.getMaxCp()); - writeD((int) _player.getCurrentCp()); + packet.writeH(_player.getRecomLeft()); + packet.writeH(_player.getRecomHave()); // Blue value for name (0 = white, 255 = pure blue) + packet.writeD(_player.getClassId().getId()); + packet.writeD(0x00); // special effects? circles around player... + packet.writeD(_player.getMaxCp()); + packet.writeD((int) _player.getCurrentCp()); - writeC(_player.isRunning() ? 0x01 : 0x00); // changes the Speed display on Status Window + packet.writeC(_player.isRunning() ? 0x01 : 0x00); // changes the Speed display on Status Window - writeC(321); + packet.writeC(321); - writeD(_player.getPledgeClass()); // changes the text above CP on Status Window + packet.writeD(_player.getPledgeClass()); // changes the text above CP on Status Window - writeC(_player.isNoble() ? 0x01 : 0x00); - writeC(_player.isHero() ? 0x01 : 0x00); + packet.writeC(_player.isNoble() ? 0x01 : 0x00); + packet.writeC(_player.isHero() ? 0x01 : 0x00); - writeD(_player.getAppearance().getNameColor()); - writeD(_player.getAppearance().getTitleColor()); + packet.writeD(_player.getAppearance().getNameColor()); + packet.writeD(_player.getAppearance().getTitleColor()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewHennaInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewHennaInfo.java index 8fb8b40bdc..09160b488b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewHennaInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewHennaInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class GMViewHennaInfo extends GameServerPacket +public class GMViewHennaInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Henna[] _hennas = new Henna[3]; @@ -40,24 +42,25 @@ public class GMViewHennaInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xea); + OutgoingPackets.GM_VIEW_HENNA_INFO.writeId(packet); - writeC(_player.getHennaStatINT()); - writeC(_player.getHennaStatSTR()); - writeC(_player.getHennaStatCON()); - writeC(_player.getHennaStatMEN()); - writeC(_player.getHennaStatDEX()); - writeC(_player.getHennaStatWIT()); + packet.writeC(_player.getHennaStatINT()); + packet.writeC(_player.getHennaStatSTR()); + packet.writeC(_player.getHennaStatCON()); + packet.writeC(_player.getHennaStatMEN()); + packet.writeC(_player.getHennaStatDEX()); + packet.writeC(_player.getHennaStatWIT()); - writeD(3); // slots? + packet.writeD(3); // slots? - writeD(_count); // size + packet.writeD(_count); // size for (int i = 0; i < _count; i++) { - writeD(_hennas[i].getSymbolId()); - writeD(_hennas[i].canBeUsedBy(_player) ? _hennas[i].getSymbolId() : 0); + packet.writeD(_hennas[i].getSymbolId()); + packet.writeD(_hennas[i].canBeUsedBy(_player) ? _hennas[i].getSymbolId() : 0); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewItemList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewItemList.java index bef9e91787..d6757cebcf 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewItemList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewItemList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class GMViewItemList extends GameServerPacket +public class GMViewItemList implements IClientOutgoingPacket { private final ItemInstance[] _items; private final PlayerInstance _player; @@ -36,13 +38,13 @@ public class GMViewItemList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x94); - writeS(_playerName); - writeD(_player.getInventoryLimit()); // inventory limit - writeH(0x01); // show window ?? - writeH(_items.length); + OutgoingPackets.GM_VIEW_ITEM_LIST.writeId(packet); + packet.writeS(_playerName); + packet.writeD(_player.getInventoryLimit()); // inventory limit + packet.writeH(0x01); // show window ?? + packet.writeH(_items.length); for (ItemInstance temp : _items) { @@ -51,26 +53,27 @@ public class GMViewItemList extends GameServerPacket continue; } - writeH(temp.getItem().getType1()); + packet.writeH(temp.getItem().getType1()); - writeD(temp.getObjectId()); - writeD(temp.getItemId()); - writeD(temp.getCount()); - writeH(temp.getItem().getType2()); - writeH(temp.getCustomType1()); - writeH(temp.isEquipped() ? 0x01 : 0x00); - writeD(temp.getItem().getBodyPart()); - writeH(temp.getEnchantLevel()); - writeH(temp.getCustomType2()); + packet.writeD(temp.getObjectId()); + packet.writeD(temp.getItemId()); + packet.writeD(temp.getCount()); + packet.writeH(temp.getItem().getType2()); + packet.writeH(temp.getCustomType1()); + packet.writeH(temp.isEquipped() ? 0x01 : 0x00); + packet.writeD(temp.getItem().getBodyPart()); + packet.writeH(temp.getEnchantLevel()); + packet.writeH(temp.getCustomType2()); if (temp.isAugmented()) { - writeD(temp.getAugmentation().getAugmentationId()); + packet.writeD(temp.getAugmentation().getAugmentationId()); } else { - writeD(0x00); + packet.writeD(0x00); } - writeD(-1); // C6 + packet.writeD(-1); // C6 } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewPledgeInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewPledgeInfo.java index de2610ca71..3493a1826a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewPledgeInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewPledgeInfo.java @@ -16,16 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format SdSS dddddddd d (Sddddd) * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class GMViewPledgeInfo extends GameServerPacket +public class GMViewPledgeInfo implements IClientOutgoingPacket { private final Clan _clan; private final PlayerInstance _player; @@ -37,41 +39,42 @@ public class GMViewPledgeInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final int TOP = ClanTable.getInstance().getTopRate(_clan.getClanId()); - writeC(0x90); - writeS(_player.getName()); - writeD(_clan.getClanId()); - writeD(0x00); - writeS(_clan.getName()); - writeS(_clan.getLeaderName()); - writeD(_clan.getCrestId()); // -> no, it's no longer used (nuocnam) fix by game - writeD(_clan.getLevel()); - writeD(_clan.getCastleId()); - writeD(_clan.getHideoutId()); - writeD(TOP); - writeD(_clan.getReputationScore()); - writeD(0); - writeD(0); + OutgoingPackets.GM_VIEW_PLEDGE_INFO.writeId(packet); + packet.writeS(_player.getName()); + packet.writeD(_clan.getClanId()); + packet.writeD(0x00); + packet.writeS(_clan.getName()); + packet.writeS(_clan.getLeaderName()); + packet.writeD(_clan.getCrestId()); // -> no, it's no longer used (nuocnam) fix by game + packet.writeD(_clan.getLevel()); + packet.writeD(_clan.getCastleId()); + packet.writeD(_clan.getHideoutId()); + packet.writeD(TOP); + packet.writeD(_clan.getReputationScore()); + packet.writeD(0); + packet.writeD(0); - writeD(_clan.getAllyId()); // c2 - writeS(_clan.getAllyName()); // c2 - writeD(_clan.getAllyCrestId()); // c2 - writeD(_clan.isAtWar()); // c3 + packet.writeD(_clan.getAllyId()); // c2 + packet.writeS(_clan.getAllyName()); // c2 + packet.writeD(_clan.getAllyCrestId()); // c2 + packet.writeD(_clan.isAtWar()); // c3 final ClanMember[] members = _clan.getMembers(); - writeD(members.length); + packet.writeD(members.length); for (ClanMember member : members) { - writeS(member.getName()); - writeD(member.getLevel()); - writeD(member.getClassId()); - writeD(0); - writeD(1); - writeD(member.isOnline() ? member.getObjectId() : 0); - writeD(0); + packet.writeS(member.getName()); + packet.writeD(member.getLevel()); + packet.writeD(member.getClassId()); + packet.writeD(0); + packet.writeD(1); + packet.writeD(member.isOnline() ? member.getObjectId() : 0); + packet.writeD(0); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewQuestList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewQuestList.java index 397baeb0b9..c90c3135d6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewQuestList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewQuestList.java @@ -18,15 +18,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Sh (dd) h (dddd) * @author Tempy */ -public class GMViewQuestList extends GameServerPacket +public class GMViewQuestList implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -36,24 +38,25 @@ public class GMViewQuestList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x93); - writeS(_player.getName()); + OutgoingPackets.GM_VIEW_QUEST_LIST.writeId(packet); + packet.writeS(_player.getName()); final List questList = _player.getAllActiveQuests(); - writeH(questList.size()); // quest count + packet.writeH(questList.size()); // quest count for (Quest q : questList) { - writeD(q.getQuestId()); + packet.writeD(q.getQuestId()); final QuestState qs = _player.getQuestState(q.getName()); if (qs == null) { - writeD(0); + packet.writeD(0); continue; } - writeD(qs.getInt("cond")); // stage of quest progress + packet.writeD(qs.getInt("cond")); // stage of quest progress } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java index dfbc306755..2231ef80e7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewSkillInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class GMViewSkillInfo extends GameServerPacket +public class GMViewSkillInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private Skill[] _skills; @@ -35,18 +37,19 @@ public class GMViewSkillInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x91); - writeS(_player.getName()); - writeD(_skills.length); + OutgoingPackets.GM_VIEW_SKILL_INFO.writeId(packet); + packet.writeS(_player.getName()); + packet.writeD(_skills.length); for (Skill skill : _skills) { - writeD(skill.isPassive() ? 1 : 0); - writeD(skill.getLevel()); - writeD(skill.getId()); - writeC(0x00); // c5 + packet.writeD(skill.isPassive() ? 1 : 0); + packet.writeD(skill.getLevel()); + packet.writeD(skill.getId()); + packet.writeC(0x00); // c5 } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java index b9476f0389..8ca840b5ec 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GMViewWarehouseWithdrawList.java @@ -16,16 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.Weapon; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Sdh(h dddhh [dhhh] d) Sdh ddddd ddddd ddddd ddddd * @version $Revision: 1.1.2.1.2.5 $ $Date: 2007/11/26 16:10:05 $ */ -public class GMViewWarehouseWithdrawList extends GameServerPacket +public class GMViewWarehouseWithdrawList implements IClientOutgoingPacket { private final ItemInstance[] _items; private final String _playerName; @@ -41,31 +43,31 @@ public class GMViewWarehouseWithdrawList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x95); - writeS(_playerName); - writeD(_money); - writeH(_items.length); + OutgoingPackets.GM_VIEW_WAREHOUSE_WITHDRAW_LIST.writeId(packet); + packet.writeS(_playerName); + packet.writeD(_money); + packet.writeH(_items.length); for (ItemInstance item : _items) { - writeH(item.getItem().getType1()); + packet.writeH(item.getItem().getType1()); - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); - writeH(item.getCustomType1()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); + packet.writeH(item.getCustomType1()); switch (item.getItem().getType2()) { case Item.TYPE2_WEAPON: { - writeD(item.getItem().getBodyPart()); - writeH(item.getEnchantLevel()); - writeH(((Weapon) item.getItem()).getSoulShotCount()); - writeH(((Weapon) item.getItem()).getSpiritShotCount()); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getEnchantLevel()); + packet.writeH(((Weapon) item.getItem()).getSoulShotCount()); + packet.writeH(((Weapon) item.getItem()).getSpiritShotCount()); break; } case Item.TYPE2_SHIELD_ARMOR: @@ -75,15 +77,15 @@ public class GMViewWarehouseWithdrawList extends GameServerPacket case Item.TYPE2_PET_STRIDER: case Item.TYPE2_PET_BABY: { - writeD(item.getItem().getBodyPart()); - writeH(item.getEnchantLevel()); - writeH(0x00); - writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getEnchantLevel()); + packet.writeH(0x00); + packet.writeH(0x00); break; } } - writeD(item.getObjectId()); + packet.writeD(item.getObjectId()); switch (item.getItem().getType2()) { @@ -91,13 +93,13 @@ public class GMViewWarehouseWithdrawList extends GameServerPacket { if (item.isAugmented()) { - writeD(0x0000FFFF & item.getAugmentation().getAugmentationId()); - writeD(item.getAugmentation().getAugmentationId() >> 16); + packet.writeD(0x0000FFFF & item.getAugmentation().getAugmentationId()); + packet.writeD(item.getAugmentation().getAugmentationId() >> 16); } else { - writeD(0); - writeD(0); + packet.writeD(0); + packet.writeD(0); } break; } @@ -108,10 +110,11 @@ public class GMViewWarehouseWithdrawList extends GameServerPacket case Item.TYPE2_PET_STRIDER: case Item.TYPE2_PET_BABY: { - writeD(0); - writeD(0); + packet.writeD(0); + packet.writeD(0); } } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GameGuardQuery.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GameGuardQuery.java index 6d20504352..9be73da7e3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GameGuardQuery.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GameGuardQuery.java @@ -16,22 +16,26 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.GameClient; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author zabbix Lets drink to code! */ -public class GameGuardQuery extends GameServerPacket +public class GameGuardQuery implements IClientOutgoingPacket { - @Override - public void runImpl() + public GameGuardQuery(GameClient client) { // Lets make user as gg-unauthorized // We will set him as ggOK after reply from client or kick - getClient().setGameGuardOk(false); + client.setGameGuardOk(false); } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xf9); + OutgoingPackets.GAME_GUARD_QUERY.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetItem.java index ca51987391..f9aa69a72a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetItem.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 17 1a 95 20 48 9b da 12 40 44 17 02 00 03 f0 fc ff 98 f1 ff ff ..... format ddddd * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class GetItem extends GameServerPacket +public class GetItem implements IClientOutgoingPacket { private final ItemInstance _item; private final int _playerId; @@ -34,14 +36,15 @@ public class GetItem extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x0d); - writeD(_playerId); - writeD(_item.getObjectId()); + OutgoingPackets.GET_ITEM.writeId(packet); + packet.writeD(_playerId); + packet.writeD(_item.getObjectId()); - writeD(_item.getX()); - writeD(_item.getY()); - writeD(_item.getZ()); + packet.writeD(_item.getX()); + packet.writeD(_item.getY()); + packet.writeD(_item.getZ()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetOffVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetOffVehicle.java index 3fde6b4169..743f08ddfd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetOffVehicle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetOffVehicle.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class GetOffVehicle extends GameServerPacket +public class GetOffVehicle implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _boatId; @@ -40,13 +42,14 @@ public class GetOffVehicle extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5d); - writeD(_player.getObjectId()); - writeD(_boatId); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.GET_OFF_VEHICLE.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_boatId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetOnVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetOnVehicle.java index 90027cf64d..a87c15cdb4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetOnVehicle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/GetOnVehicle.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class GetOnVehicle extends GameServerPacket +public class GetOnVehicle implements IClientOutgoingPacket { private final int _x; private final int _y; @@ -41,13 +43,14 @@ public class GetOnVehicle extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5c); - writeD(_player.getObjectId()); - writeD(_boat.getObjectId()); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.GET_ON_VEHICLE.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_boat.getObjectId()); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaEquipList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaEquipList.java index 967d5232cd..96e3b39702 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaEquipList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaEquipList.java @@ -18,10 +18,12 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaEquipList extends GameServerPacket +public class HennaEquipList implements IClientOutgoingPacket { private final PlayerInstance _player; private final List _hennaEquipList; @@ -33,24 +35,25 @@ public class HennaEquipList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe2); - writeD(_player.getAdena()); - writeD(3); - writeD(_hennaEquipList.size()); + OutgoingPackets.HENNA_EQUIP_LIST.writeId(packet); + packet.writeD(_player.getAdena()); + packet.writeD(3); + packet.writeD(_hennaEquipList.size()); for (Henna temp : _hennaEquipList) { // Player must have at least one dye in inventory to be able to see the henna that can be applied with it. if ((_player.getInventory().getItemByItemId(temp.getDyeId())) != null) { - writeD(temp.getSymbolId()); // symbolid - writeD(temp.getDyeId()); // itemid of dye - writeD(Henna.getRequiredDyeAmount()); // amount of dyes required - writeD(temp.getPrice()); // amount of adenas required - writeD(1); // meet the requirement or not + packet.writeD(temp.getSymbolId()); // symbolid + packet.writeD(temp.getDyeId()); // itemid of dye + packet.writeD(Henna.getRequiredDyeAmount()); // amount of dyes required + packet.writeD(temp.getPrice()); // amount of adenas required + packet.writeD(1); // meet the requirement or not } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java index c5ba38420c..3752822c19 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaInfo extends GameServerPacket +public class HennaInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Henna[] _hennas = new Henna[3]; @@ -40,37 +42,38 @@ public class HennaInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe4); + OutgoingPackets.HENNA_INFO.writeId(packet); - writeC(_player.getHennaStatINT()); // equip INT - writeC(_player.getHennaStatSTR()); // equip STR - writeC(_player.getHennaStatCON()); // equip CON - writeC(_player.getHennaStatMEN()); // equip MEM - writeC(_player.getHennaStatDEX()); // equip DEX - writeC(_player.getHennaStatWIT()); // equip WIT + packet.writeC(_player.getHennaStatINT()); // equip INT + packet.writeC(_player.getHennaStatSTR()); // equip STR + packet.writeC(_player.getHennaStatCON()); // equip CON + packet.writeC(_player.getHennaStatMEN()); // equip MEM + packet.writeC(_player.getHennaStatDEX()); // equip DEX + packet.writeC(_player.getHennaStatWIT()); // equip WIT // Henna slots int classId = _player.getClassId().level(); if (classId == 1) { - writeD(2); + packet.writeD(2); } else if (classId > 1) { - writeD(3); + packet.writeD(3); } else { - writeD(0); + packet.writeD(0); } - writeD(_count); // size + packet.writeD(_count); // size for (int i = 0; i < _count; i++) { - writeD(_hennas[i].getSymbolId()); - writeD(_hennas[i].canBeUsedBy(_player) ? _hennas[i].getSymbolId() : 0); + packet.writeD(_hennas[i].getSymbolId()); + packet.writeD(_hennas[i].canBeUsedBy(_player) ? _hennas[i].getSymbolId() : 0); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemInfo.java index 1f2969d117..c2dedc1ca1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaItemInfo extends GameServerPacket +public class HennaItemInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Henna _henna; @@ -31,27 +33,28 @@ public class HennaItemInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe3); - writeD(_henna.getSymbolId()); // symbol Id - writeD(_henna.getDyeId()); // item id of dye - writeD(Henna.getRequiredDyeAmount()); // total amount of dye required - writeD(_henna.getPrice()); // total amount of adenas required to draw symbol - writeD(1); // able to draw or not 0 is false and 1 is true - writeD(_player.getAdena()); + OutgoingPackets.HENNA_ITEM_INFO.writeId(packet); + packet.writeD(_henna.getSymbolId()); // symbol Id + packet.writeD(_henna.getDyeId()); // item id of dye + packet.writeD(Henna.getRequiredDyeAmount()); // total amount of dye required + packet.writeD(_henna.getPrice()); // total amount of adenas required to draw symbol + packet.writeD(1); // able to draw or not 0 is false and 1 is true + packet.writeD(_player.getAdena()); - writeD(_player.getINT()); // current INT - writeC(_player.getINT() + _henna.getINT()); // equip INT - writeD(_player.getSTR()); // current STR - writeC(_player.getSTR() + _henna.getSTR()); // equip STR - writeD(_player.getCON()); // current CON - writeC(_player.getCON() + _henna.getCON()); // equip CON - writeD(_player.getMEN()); // current MEM - writeC(_player.getMEN() + _henna.getMEN()); // equip MEM - writeD(_player.getDEX()); // current DEX - writeC(_player.getDEX() + _henna.getDEX()); // equip DEX - writeD(_player.getWIT()); // current WIT - writeC(_player.getWIT() + _henna.getWIT()); // equip WIT + packet.writeD(_player.getINT()); // current INT + packet.writeC(_player.getINT() + _henna.getINT()); // equip INT + packet.writeD(_player.getSTR()); // current STR + packet.writeC(_player.getSTR() + _henna.getSTR()); // equip STR + packet.writeD(_player.getCON()); // current CON + packet.writeC(_player.getCON() + _henna.getCON()); // equip CON + packet.writeD(_player.getMEN()); // current MEM + packet.writeC(_player.getMEN() + _henna.getMEN()); // equip MEM + packet.writeD(_player.getDEX()); // current DEX + packet.writeC(_player.getDEX() + _henna.getDEX()); // equip DEX + packet.writeD(_player.getWIT()); // current WIT + packet.writeC(_player.getWIT() + _henna.getWIT()); // equip WIT + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemRemoveInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemRemoveInfo.java index a51877ec59..3332a99db5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemRemoveInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaItemRemoveInfo.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaItemRemoveInfo extends GameServerPacket +public class HennaItemRemoveInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Henna _henna; @@ -31,27 +33,28 @@ public class HennaItemRemoveInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe6); - writeD(_henna.getSymbolId()); // symbol Id - writeD(_henna.getDyeId()); // item id of dye - writeD(Henna.getRequiredDyeAmount() / 2); // amount of given dyes - writeD(_henna.getPrice() / 5); // amount of required adenas - writeD(1); // able to remove or not 0 is false and 1 is true - writeD(_player.getAdena()); + OutgoingPackets.HENNA_ITEM_REMOVE_INFO.writeId(packet); + packet.writeD(_henna.getSymbolId()); // symbol Id + packet.writeD(_henna.getDyeId()); // item id of dye + packet.writeD(Henna.getRequiredDyeAmount() / 2); // amount of given dyes + packet.writeD(_henna.getPrice() / 5); // amount of required adenas + packet.writeD(1); // able to remove or not 0 is false and 1 is true + packet.writeD(_player.getAdena()); - writeD(_player.getINT()); // current INT - writeC(_player.getINT() - _henna.getINT()); // equip INT - writeD(_player.getSTR()); // current STR - writeC(_player.getSTR() - _henna.getSTR()); // equip STR - writeD(_player.getCON()); // current CON - writeC(_player.getCON() - _henna.getCON()); // equip CON - writeD(_player.getMEN()); // current MEM - writeC(_player.getMEN() - _henna.getMEN()); // equip MEM - writeD(_player.getDEX()); // current DEX - writeC(_player.getDEX() - _henna.getDEX()); // equip DEX - writeD(_player.getWIT()); // current WIT - writeC(_player.getWIT() - _henna.getWIT()); // equip WIT + packet.writeD(_player.getINT()); // current INT + packet.writeC(_player.getINT() - _henna.getINT()); // equip INT + packet.writeD(_player.getSTR()); // current STR + packet.writeC(_player.getSTR() - _henna.getSTR()); // equip STR + packet.writeD(_player.getCON()); // current CON + packet.writeC(_player.getCON() - _henna.getCON()); // equip CON + packet.writeD(_player.getMEN()); // current MEM + packet.writeC(_player.getMEN() - _henna.getMEN()); // equip MEM + packet.writeD(_player.getDEX()); // current DEX + packet.writeC(_player.getDEX() - _henna.getDEX()); // equip DEX + packet.writeD(_player.getWIT()); // current WIT + packet.writeC(_player.getWIT() - _henna.getWIT()); // equip WIT + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaRemoveList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaRemoveList.java index 3fc2c3d249..162e10ffde 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaRemoveList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/HennaRemoveList.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.Henna; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class HennaRemoveList extends GameServerPacket +public class HennaRemoveList implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -29,24 +31,25 @@ public class HennaRemoveList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe5); - writeD(_player.getAdena()); - writeD(_player.getHennaEmptySlots()); - writeD(Math.abs(_player.getHennaEmptySlots() - 3)); + OutgoingPackets.HENNA_REMOVE_LIST.writeId(packet); + packet.writeD(_player.getAdena()); + packet.writeD(_player.getHennaEmptySlots()); + packet.writeD(Math.abs(_player.getHennaEmptySlots() - 3)); for (int i = 1; i <= 3; i++) { final Henna henna = _player.getHenna(i); if (henna != null) { - writeD(henna.getSymbolId()); - writeD(henna.getDyeId()); - writeD(Henna.getRequiredDyeAmount() / 2); - writeD(henna.getPrice() / 5); - writeD(0x01); + packet.writeD(henna.getSymbolId()); + packet.writeD(henna.getDyeId()); + packet.writeD(Henna.getRequiredDyeAmount() / 2); + packet.writeD(henna.getPrice() / 5); + packet.writeD(0x01); } } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GameServerPacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/IClientOutgoingPacket.java similarity index 50% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GameServerPacket.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/IClientOutgoingPacket.java index b16b241807..dd31d93be2 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/serverpackets/GameServerPacket.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/IClientOutgoingPacket.java @@ -18,37 +18,41 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.logging.Logger; -import org.l2jmobius.commons.mmocore.SendablePacket; -import org.l2jmobius.gameserver.network.GameClient; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; /** * @author KenM */ -public abstract class GameServerPacket extends SendablePacket +public interface IClientOutgoingPacket extends IOutgoingPacket { - protected static final Logger LOGGER = Logger.getLogger(GameServerPacket.class.getName()); + Logger LOGGER = Logger.getLogger(IClientOutgoingPacket.class.getName()); - @Override - protected void write() + /** + * Sends this packet to the target player, useful for lambda operations like
    + * {@code World.getInstance().getPlayers().forEach(packet::sendTo)} + * @param player + */ + default void sendTo(PlayerInstance player) { - try - { - writeImpl(); - } - catch (Exception e) - { - LOGGER.severe("Client: " + getClient() + " - Failed writing: " + getType() + " ; " + e.getMessage() + " " + e); - } + player.sendPacket(this); } - public void runImpl() + default void runImpl(PlayerInstance player) { } - protected abstract void writeImpl(); - - public String getType() + default void writeOptionalD(PacketWriter packet, int value) { - return "[S] " + getClass().getSimpleName(); + if (value >= Short.MAX_VALUE) + { + packet.writeH(Short.MAX_VALUE); + packet.writeD(value); + } + else + { + packet.writeH(value); + } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/InventoryUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/InventoryUpdate.java index dee6f94803..3745dbf218 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/InventoryUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/InventoryUpdate.java @@ -19,8 +19,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ItemInfo; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 37 // Packet Identifier
    @@ -44,7 +46,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance; *
    * @version $Revision: 1.3.2.2.2.4 $ $Date: 2005/03/27 15:29:39 $ Rebuild 23.2.2006 by Advi */ -public class InventoryUpdate extends GameServerPacket +public class InventoryUpdate implements IClientOutgoingPacket { private final List _items; @@ -105,42 +107,40 @@ public class InventoryUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x27); - writeH(_items.size()); + OutgoingPackets.INVENTORY_UPDATE.writeId(packet); + packet.writeH(_items.size()); for (ItemInfo item : _items) { - writeH(item.getChange()); // Update type : 01-add, 02-modify, + packet.writeH(item.getChange()); // Update type : 01-add, 02-modify, // 03-remove - writeH(item.getItem().getType1()); // Item Type 1 : + packet.writeH(item.getItem().getType1()); // Item Type 1 : // 00-weapon/ring/earring/necklace, // 01-armor/shield, // 04-item/questitem/adena - writeD(item.getObjectId()); // ObjectId - writeD(item.getItem().getItemId()); // ItemId - writeD(item.getCount()); // Quantity - writeH(item.getItem().getType2()); // Item Type 2 : 00-weapon, + packet.writeD(item.getObjectId()); // ObjectId + packet.writeD(item.getItem().getItemId()); // ItemId + packet.writeD(item.getCount()); // Quantity + packet.writeH(item.getItem().getType2()); // Item Type 2 : 00-weapon, // 01-shield/armor, // 02-ring/earring/necklace, // 03-questitem, 04-adena, // 05-item - writeH(item.getCustomType1()); // Filler (always 0) - writeH(item.getEquipped()); // Equipped : 00-No, 01-yes - writeD(item.getItem().getBodyPart()); // Slot : 0006-lr.ear, + packet.writeH(item.getCustomType1()); // Filler (always 0) + packet.writeH(item.getEquipped()); // Equipped : 00-No, 01-yes + packet.writeD(item.getItem().getBodyPart()); // Slot : 0006-lr.ear, // 0008-neck, // 0030-lr.finger, // 0040-head, 0100-l.hand, // 0200-gloves, 0400-chest, // 0800-pants, 1000-feet, // 4000-r.hand, 8000-r.hand - writeH(item.getEnchant()); // Enchant level (pet level shown in - // control item) - writeH(item.getCustomType2()); // Pet name exists or not shown - // in - // control item - writeD(item.getAugemtationBonus()); - writeD(item.getMana()); + packet.writeH(item.getEnchant()); // Enchant level (pet level shown in control item) + packet.writeH(item.getCustomType2()); // Pet name exists or not shown in control item + packet.writeD(item.getAugemtationBonus()); + packet.writeD(item.getMana()); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ItemList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ItemList.java index 852206ede9..5b9e0525e7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ItemList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ItemList.java @@ -16,8 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 27 00 00 01 00 // item count 04 00 // itemType1 0-weapon/ring/earring/necklace 1-armor/shield 4-item/questitem/adena c6 37 50 40 // objectId cd 09 00 00 // itemId 05 00 00 00 // count 05 00 // itemType2 0-weapon 1-shield/armor 2-ring/earring/necklace 3-questitem 4-adena 5-item 00 00 // @@ -25,7 +27,7 @@ import org.l2jmobius.gameserver.model.items.instance.ItemInstance; * revision 415 * @version $Revision: 1.4.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class ItemList extends GameServerPacket +public class ItemList implements IClientOutgoingPacket { private final ItemInstance[] _items; private final boolean _showWindow; @@ -43,30 +45,31 @@ public class ItemList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x1b); - writeH(_showWindow ? 0x01 : 0x00); - writeH(_items.length); + OutgoingPackets.ITEM_LIST.writeId(packet); + packet.writeH(_showWindow ? 0x01 : 0x00); + packet.writeH(_items.length); for (ItemInstance temp : _items) { if ((temp == null) || (temp.getItem() == null)) { continue; } - writeH(temp.getItem().getType1()); - writeD(temp.getObjectId()); - writeD(temp.getItemId()); - writeD(temp.getCount()); - writeH(temp.getItem().getType2()); - writeH(temp.getCustomType1()); - writeH(temp.isEquipped() ? 0x01 : 0x00); - writeD(temp.getItem().getBodyPart()); - writeH(temp.getEnchantLevel()); + packet.writeH(temp.getItem().getType1()); + packet.writeD(temp.getObjectId()); + packet.writeD(temp.getItemId()); + packet.writeD(temp.getCount()); + packet.writeH(temp.getItem().getType2()); + packet.writeH(temp.getCustomType1()); + packet.writeH(temp.isEquipped() ? 0x01 : 0x00); + packet.writeD(temp.getItem().getBodyPart()); + packet.writeH(temp.getEnchantLevel()); // race tickets - writeH(temp.getCustomType2()); - writeD((temp.isAugmented()) ? temp.getAugmentation().getAugmentationId() : 0x00); - writeD(temp.getMana()); + packet.writeH(temp.getCustomType2()); + packet.writeD((temp.isAugmented()) ? temp.getAugmentation().getAugmentationId() : 0x00); + packet.writeD(temp.getMana()); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/JoinParty.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/JoinParty.java index 389f8113a6..e4adce2daa 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/JoinParty.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/JoinParty.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample *

    @@ -24,7 +27,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * format cd. * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class JoinParty extends GameServerPacket +public class JoinParty implements IClientOutgoingPacket { /** The _response. */ private final int _response; @@ -38,15 +41,12 @@ public class JoinParty extends GameServerPacket _response = response; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x3a); + OutgoingPackets.JOIN_PARTY.writeId(packet); - writeD(_response); + packet.writeD(_response); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/JoinPledge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/JoinPledge.java index f202f79eb5..4e2f2127ec 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/JoinPledge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/JoinPledge.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class JoinPledge extends GameServerPacket +public class JoinPledge implements IClientOutgoingPacket { private final int _pledgeId; @@ -29,10 +32,11 @@ public class JoinPledge extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x33); + OutgoingPackets.JOIN_PLEDGE.writeId(packet); - writeD(_pledgeId); + packet.writeD(_pledgeId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/KeyPacket.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/KeyPacket.java index b17f7d041b..38d6af6dec 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/KeyPacket.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/KeyPacket.java @@ -16,25 +16,29 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -/** - * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ - */ -public class KeyPacket extends GameServerPacket +import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class KeyPacket implements IClientOutgoingPacket { private final byte[] _key; + private final int _result; - public KeyPacket(byte[] key) + public KeyPacket(byte[] key, int result) { _key = key; + _result = result; } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x00); - writeC(0x01); - writeB(_key); - writeD(0x01); - writeD(0x01); + OutgoingPackets.KEY_PACKET.writeId(packet); + packet.writeC(_result); // 0 - wrong protocol, 1 - protocol ok + packet.writeB(_key); + packet.writeD(Config.SERVER_ID); // server id + packet.writeD(0x01); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/LeaveWorld.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/LeaveWorld.java index c3fff66235..9290d12f23 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/LeaveWorld.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/LeaveWorld.java @@ -16,19 +16,24 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.3 $ $Date: 2009/05/12 19:06:39 $ */ -public class LeaveWorld extends GameServerPacket +public class LeaveWorld implements IClientOutgoingPacket { public static final LeaveWorld STATIC_PACKET = new LeaveWorld(); - /* - * private LeaveWorld() { //null } - */ - @Override - protected final void writeImpl() + public LeaveWorld() { - writeC(0x7e); + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.LEAVE_WORLD.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicEffectIcons.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicEffectIcons.java index 7394a6f681..773ab3a68f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicEffectIcons.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicEffectIcons.java @@ -19,11 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * MagicEffectIcons format h (dhd) * @version $Revision: 1.3.2.1.2.6 $ $Date: 2005/04/05 19:41:08 $ */ -public class MagicEffectIcons extends GameServerPacket +public class MagicEffectIcons implements IClientOutgoingPacket { private final List _effects; private final List _debuffs; @@ -66,40 +69,42 @@ public class MagicEffectIcons extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x7f); + OutgoingPackets.MAGIC_EFFECT_ICONS.writeId(packet); - writeH(_effects.size() + _debuffs.size()); + packet.writeH(_effects.size() + _debuffs.size()); for (Effect temp : _effects) { - writeD(temp._skillId); - writeH(temp._level); + packet.writeD(temp._skillId); + packet.writeH(temp._level); if (temp._duration == -1) { - writeD(-1); + packet.writeD(-1); } else { - writeD(temp._duration / 1000); + packet.writeD(temp._duration / 1000); } } for (Effect temp : _debuffs) { - writeD(temp._skillId); - writeH(temp._level); + packet.writeD(temp._skillId); + packet.writeH(temp._level); if (temp._duration == -1) { - writeD(-1); + packet.writeD(-1); } else { - writeD(temp._duration / 1000); + packet.writeD(temp._duration / 1000); } } + + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillCanceld.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillCanceld.java index c0a0305997..388adb927a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillCanceld.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillCanceld.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class MagicSkillCanceld extends GameServerPacket +public class MagicSkillCanceld implements IClientOutgoingPacket { private final int _objectId; @@ -29,9 +32,10 @@ public class MagicSkillCanceld extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x49); - writeD(_objectId); + OutgoingPackets.MAGIC_SKILL_CANCELD.writeId(packet); + packet.writeD(_objectId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillLaunched.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillLaunched.java index fa73c11ef9..fce15a399f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillLaunched.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillLaunched.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 8e d8 a8 10 48 10 04 00 00 01 00 00 00 01 00 00 ....H........... 0010: 00 d8 a8 10 48 ....H format ddddd d * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class MagicSkillLaunched extends GameServerPacket +public class MagicSkillLaunched implements IClientOutgoingPacket { private final int _objectId; private final int _skillId; @@ -66,16 +68,16 @@ public class MagicSkillLaunched extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x76); - writeD(_objectId); - writeD(_skillId); - writeD(_skillLevel); - writeD(_numberOfTargets); // also failed or not? + OutgoingPackets.MAGIC_SKILL_LAUNCHED.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_skillId); + packet.writeD(_skillLevel); + packet.writeD(_numberOfTargets); // also failed or not? if ((_singleTargetId != 0) || (_numberOfTargets == 0)) { - writeD(_singleTargetId); + packet.writeD(_singleTargetId); } else { @@ -83,13 +85,14 @@ public class MagicSkillLaunched extends GameServerPacket { try { - writeD(target.getObjectId()); + packet.writeD(target.getObjectId()); } catch (NullPointerException e) { - writeD(0); // untested + packet.writeD(0); // untested } } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillUse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillUse.java index ba0dd74421..20c0ebe96d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillUse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MagicSkillUse.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class MagicSkillUse extends GameServerPacket +public class MagicSkillUse implements IClientOutgoingPacket { private final int _objectId; private final int _x; @@ -60,18 +62,18 @@ public class MagicSkillUse extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x48); - writeD(_objectId); - writeD(_targetId); - writeD(_skillId); - writeD(_skillLevel); - writeD(_hitTime); - writeD(_reuseDelay); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.MAGIC_SKILL_USE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_targetId); + packet.writeD(_skillId); + packet.writeD(_skillLevel); + packet.writeD(_hitTime); + packet.writeD(_reuseDelay); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); // if (_critical) // ? // { // writeD(0x01); @@ -79,10 +81,11 @@ public class MagicSkillUse extends GameServerPacket // } // else // { - writeD(0x00); + packet.writeD(0x00); // } - writeD(_targetx); - writeD(_targety); - writeD(_targetz); + packet.writeD(_targetx); + packet.writeD(_targety); + packet.writeD(_targetz); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ManagePledgePower.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ManagePledgePower.java index 702a9cb110..581b2c8265 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ManagePledgePower.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ManagePledgePower.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class ManagePledgePower extends GameServerPacket +public class ManagePledgePower implements IClientOutgoingPacket { private final int _action; private final Clan _clan; @@ -32,7 +34,7 @@ public class ManagePledgePower extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { int privs = 0; if (_action == 1) @@ -41,12 +43,13 @@ public class ManagePledgePower extends GameServerPacket } else { - return; + return true; } - writeC(0x30); - writeD(0); - writeD(0); - writeD(privs); + OutgoingPackets.MANAGE_PLEDGE_POWER.writeId(packet); + packet.writeD(0); + packet.writeD(0); + packet.writeD(privs); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MonRaceInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MonRaceInfo.java index 658bd7536a..40321a5967 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MonRaceInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MonRaceInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 06 8f19904b 2522d04b 00000000 80 950c0000 4af50000 08f2ffff 0000 - 0 damage (missed 0x80) 06 85071048 bc0e504b 32000000 10 fc41ffff fd240200 a6f5ffff 0100 bc0e504b 33000000 10 3.... format dddc dddh (ddc) * @version $Revision: 1.1.6.2 $ $Date: 2005/03/27 15:29:39 $ */ -public class MonRaceInfo extends GameServerPacket +public class MonRaceInfo implements IClientOutgoingPacket { private final int _unknown1; private final int _unknown2; @@ -41,39 +43,41 @@ public class MonRaceInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xdd); + OutgoingPackets.MON_RACE_INFO.writeId(packet); - writeD(_unknown1); - writeD(_unknown2); - writeD(8); + packet.writeD(_unknown1); + packet.writeD(_unknown2); + packet.writeD(8); for (int i = 0; i < 8; i++) { - writeD(_monsters[i].getObjectId()); // npcObjectID - writeD(_monsters[i].getTemplate().getDisplayId() + 1000000); // npcID - writeD(14107); // origin X - writeD(181875 + (58 * (7 - i))); // origin Y - writeD(-3566); // origin Z - writeD(12080); // end X - writeD(181875 + (58 * (7 - i))); // end Y - writeD(-3566); // end Z - writeF(_monsters[i].getTemplate().getCollisionHeight()); // coll. height - writeF(_monsters[i].getTemplate().getCollisionRadius()); // coll. radius - writeD(120); // ?? unknown + packet.writeD(_monsters[i].getObjectId()); // npcObjectID + packet.writeD(_monsters[i].getTemplate().getDisplayId() + 1000000); // npcID + packet.writeD(14107); // origin X + packet.writeD(181875 + (58 * (7 - i))); // origin Y + packet.writeD(-3566); // origin Z + packet.writeD(12080); // end X + packet.writeD(181875 + (58 * (7 - i))); // end Y + packet.writeD(-3566); // end Z + packet.writeF(_monsters[i].getTemplate().getCollisionHeight()); // coll. height + packet.writeF(_monsters[i].getTemplate().getCollisionRadius()); // coll. radius + packet.writeD(120); // ?? unknown for (int j = 0; j < 20; j++) { if (_unknown1 == 0) { - writeC(_speeds[i][j]); + packet.writeC(_speeds[i][j]); } else { - writeC(0); + packet.writeC(0); } } - writeD(0); + packet.writeD(0); } + + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveOnVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveOnVehicle.java deleted file mode 100644 index f6fdb03ec0..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveOnVehicle.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * 0000: 76 7a 07 80 49 ea 01 00 00 c1 37 fe uz..Ic'.J.....7. - *

    - * 0010: ff 9e c3 03 00 8f f3 ff ff ......... - *

    - *

    - * format dddddd (player id, target id, distance, startx, starty, startz) - *

    - * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ - */ -public class MoveOnVehicle extends GameServerPacket -{ - private final int _id; - private final int _x; - private final int _y; - private final int _z; - private final PlayerInstance _player; - - public MoveOnVehicle(int vehicleID, PlayerInstance player, int x, int y, int z) - { - _id = vehicleID; - _player = player; - _x = x; - _y = y; - _z = z; - } - - @Override - protected final void writeImpl() - { - writeC(0x71); - - writeD(_player.getObjectId()); - writeD(_id); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveToLocationInVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveToLocationInVehicle.java index d4311d9d3a..f01ddf0f4e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveToLocationInVehicle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveToLocationInVehicle.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class MoveToLocationInVehicle extends GameServerPacket +public class MoveToLocationInVehicle implements IClientOutgoingPacket { private int _objectId; private int _boatId; @@ -50,16 +52,17 @@ public class MoveToLocationInVehicle extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x71); - writeD(_objectId); - writeD(_boatId); - writeD(_destination.getX()); - writeD(_destination.getY()); - writeD(_destination.getZ()); - writeD(_origin.getX()); - writeD(_origin.getY()); - writeD(_origin.getZ()); + OutgoingPackets.MOVE_TO_LOCATION_IN_VEHICLE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_boatId); + packet.writeD(_destination.getX()); + packet.writeD(_destination.getY()); + packet.writeD(_destination.getZ()); + packet.writeD(_origin.getX()); + packet.writeD(_origin.getY()); + packet.writeD(_origin.getZ()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveToPawn.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveToPawn.java index 815ab04694..f487262e10 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveToPawn.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MoveToPawn.java @@ -16,7 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 0000: 75 7a 07 80 49 63 27 00 4a ea 01 00 00 c1 37 fe uz..Ic'.J.....7. @@ -28,7 +30,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; *

    * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/04/06 16:13:46 $ */ -public class MoveToPawn extends GameServerPacket +public class MoveToPawn implements IClientOutgoingPacket { private final int _objectId; private final int _targetId; @@ -48,16 +50,17 @@ public class MoveToPawn extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x60); + OutgoingPackets.MOVE_TO_PAWN.writeId(packet); - writeD(_objectId); - writeD(_targetId); - writeD(_distance); + packet.writeD(_objectId); + packet.writeD(_targetId); + packet.writeD(_distance); - writeD(_x); - writeD(_y); - writeD(_z); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MultiSellList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MultiSellList.java index 1d7fa44e2e..77f5eb9185 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MultiSellList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MultiSellList.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.model.multisell.MultiSellEntry; import org.l2jmobius.gameserver.model.multisell.MultiSellIngredient; import org.l2jmobius.gameserver.model.multisell.MultiSellListContainer; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2 $ $Date: 2004/06/27 08:12:59 $ */ -public class MultiSellList extends GameServerPacket +public class MultiSellList implements IClientOutgoingPacket { protected int _listId; protected int _page; @@ -40,36 +42,36 @@ public class MultiSellList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { // [ddddd] [dchh] [hdhdh] [hhdh] - writeC(0xd0); - writeD(_listId); // list id - writeD(_page); // page - writeD(_finished); // finished - writeD(0x28); // size of pages - writeD(_list == null ? 0 : _list.getEntries().size()); // list length + OutgoingPackets.MULTI_SELL_LIST.writeId(packet); + packet.writeD(_listId); // list id + packet.writeD(_page); // page + packet.writeD(_finished); // finished + packet.writeD(0x28); // size of pages + packet.writeD(_list == null ? 0 : _list.getEntries().size()); // list length if (_list != null) { for (MultiSellEntry ent : _list.getEntries()) { - writeD(ent.getEntryId()); - writeD(0x00); // C6 - writeD(0x00); // C6 - writeC(1); - writeH(ent.getProducts().size()); - writeH(ent.getIngredients().size()); + packet.writeD(ent.getEntryId()); + packet.writeD(0x00); // C6 + packet.writeD(0x00); // C6 + packet.writeC(1); + packet.writeH(ent.getProducts().size()); + packet.writeH(ent.getIngredients().size()); for (MultiSellIngredient i : ent.getProducts()) { - writeH(i.getItemId()); - writeD(ItemTable.getInstance().getTemplate(i.getItemId()).getBodyPart()); - writeH(ItemTable.getInstance().getTemplate(i.getItemId()).getType2()); - writeD(i.getItemCount()); - writeH(i.getEnchantmentLevel()); // enchtant level - writeD(0x00); // C6 - writeD(0x00); // C6 + packet.writeH(i.getItemId()); + packet.writeD(ItemTable.getInstance().getTemplate(i.getItemId()).getBodyPart()); + packet.writeH(ItemTable.getInstance().getTemplate(i.getItemId()).getType2()); + packet.writeD(i.getItemCount()); + packet.writeH(i.getEnchantmentLevel()); // enchtant level + packet.writeD(0x00); // C6 + packet.writeD(0x00); // C6 } for (MultiSellIngredient i : ent.getIngredients()) @@ -80,14 +82,15 @@ public class MultiSellList extends GameServerPacket { typeE = ItemTable.getInstance().getTemplate(i.getItemId()).getType2(); } - writeH(items); // ID - writeH(typeE); - writeD(i.getItemCount()); // Count - writeH(i.getEnchantmentLevel()); // Enchant Level - writeD(0x00); // C6 - writeD(0x00); // C6 + packet.writeH(items); // ID + packet.writeH(typeE); + packet.writeD(i.getItemCount()); // Count + packet.writeH(i.getEnchantmentLevel()); // Enchant Level + packet.writeD(0x00); // C6 + packet.writeD(0x00); // C6 } } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MyTargetSelected.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MyTargetSelected.java index 150df514b2..b9c3d1b6f1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MyTargetSelected.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/MyTargetSelected.java @@ -16,6 +16,9 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** *

    * sample bf 73 5d 30 49 01 00 @@ -40,7 +43,7 @@ package org.l2jmobius.gameserver.network.serverpackets; * usually the color equals the level difference to the selected target. * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class MyTargetSelected extends GameServerPacket +public class MyTargetSelected implements IClientOutgoingPacket { /** The _object id. */ private final int _objectId; @@ -59,15 +62,12 @@ public class MyTargetSelected extends GameServerPacket _color = color; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa6); - writeD(_objectId); - writeH(_color); + OutgoingPackets.MY_TARGET_SELECTED.writeId(packet); + packet.writeD(_objectId); + packet.writeH(_color); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NormalCamera.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NormalCamera.java index e5503a04a8..f8b6cd883a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NormalCamera.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NormalCamera.java @@ -16,11 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class NormalCamera extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class NormalCamera implements IClientOutgoingPacket { @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xc8); + OutgoingPackets.NORMAL_CAMERA.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcHtmlMessage.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcHtmlMessage.java index ee936db5ca..82570713c4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcHtmlMessage.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcHtmlMessage.java @@ -19,8 +19,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.logging.Logger; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.cache.HtmCache; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.util.BuilderUtil; /** @@ -124,7 +126,7 @@ import org.l2jmobius.gameserver.util.BuilderUtil; * . * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class NpcHtmlMessage extends GameServerPacket +public class NpcHtmlMessage implements IClientOutgoingPacket { /** The LOGGER. */ private static final Logger LOGGER = Logger.getLogger(NpcHtmlMessage.class.getName()); @@ -161,17 +163,18 @@ public class NpcHtmlMessage extends GameServerPacket _npcObjId = npcObjId; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#runImpl() - */ @Override - public void runImpl() + public void runImpl(PlayerInstance player) { if (Config.BYPASS_VALIDATION && _validate) { - buildBypassCache(getClient().getPlayer()); - buildLinksCache(getClient().getPlayer()); + buildBypassCache(player); + buildLinksCache(player); + } + + if ((_file != null) && player.isGM() && Config.GM_DEBUG_HTML_PATHS) + { + BuilderUtil.sendHtmlMessage(player, _file.substring(10)); } } @@ -312,23 +315,14 @@ public class NpcHtmlMessage extends GameServerPacket } } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - final PlayerInstance player = getClient().getPlayer(); - if ((_file != null) && player.isGM() && Config.GM_DEBUG_HTML_PATHS) - { - BuilderUtil.sendHtmlMessage(player, _file.substring(10)); - } - - writeC(0x0f); - writeD(_npcObjId); - writeS(_html); - writeD(0x00); + OutgoingPackets.NPC_HTML_MESSAGE.writeId(packet); + packet.writeD(_npcObjId); + packet.writeS(_html); + packet.writeD(0x00); + return true; } /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java index f834377da0..d2b4b7a617 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; @@ -31,11 +32,12 @@ import org.l2jmobius.gameserver.model.actor.instance.SiegeNpcInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.zone.ZoneId; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.7.2.4.2.9 $ $Date: 2005/04/11 10:05:54 $ */ -public class NpcInfo extends GameServerPacket +public class NpcInfo implements IClientOutgoingPacket { private Creature _creature; private int _x; @@ -76,7 +78,7 @@ public class NpcInfo extends GameServerPacket if (cha.getFakePlayerInstance() != null) { attacker.sendPacket(new FakePlayerInfo(cha)); - attacker.broadcastPacket(new FinishRotation(cha)); + attacker.broadcastPacket(new StopRotation(cha, cha.getHeading(), 0)); return; } @@ -194,90 +196,87 @@ public class NpcInfo extends GameServerPacket _swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() - */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_creature == null) { - return; + return false; } if ((_creature instanceof Summon) && (((Summon) _creature).getOwner() != null) && ((Summon) _creature).getOwner().getAppearance().isInvisible()) { - return; + return false; } - writeC(0x16); - writeD(_creature.getObjectId()); - writeD(_displayId + 1000000); // npctype id - writeD(_isAttackable ? 1 : 0); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); - writeD(0x00); - writeD(_mAtkSpd); - writeD(_pAtkSpd); - writeD(_runSpd); - writeD(_walkSpd); - writeD(_swimRunSpd/* 0x32 */); // swimspeed - writeD(_swimWalkSpd/* 0x32 */); // swimspeed - writeD(_flRunSpd); - writeD(_flWalkSpd); - writeD(_flyRunSpd); - writeD(_flyWalkSpd); - writeF(1.1/* _activeChar.getProperMultiplier() */); + OutgoingPackets.NPC_INFO.writeId(packet); + packet.writeD(_creature.getObjectId()); + packet.writeD(_displayId + 1000000); // npctype id + packet.writeD(_isAttackable ? 1 : 0); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + packet.writeD(0x00); + packet.writeD(_mAtkSpd); + packet.writeD(_pAtkSpd); + packet.writeD(_runSpd); + packet.writeD(_walkSpd); + packet.writeD(_swimRunSpd/* 0x32 */); // swimspeed + packet.writeD(_swimWalkSpd/* 0x32 */); // swimspeed + packet.writeD(_flRunSpd); + packet.writeD(_flWalkSpd); + packet.writeD(_flyRunSpd); + packet.writeD(_flyWalkSpd); + packet.writeF(1.1/* _activeChar.getProperMultiplier() */); // writeF(1/*_activeChar.getAttackSpeedMultiplier()*/); - writeF(_pAtkSpd / 277.478340719); - writeF(_collisionRadius); - writeF(_collisionHeight); - writeD(_rhand); // right hand weapon - writeD(0); - writeD(_lhand); // left hand weapon - writeC(1); // name above char 1=true ... ?? - writeC(_creature.isRunning() ? 1 : 0); - writeC(_creature.isInCombat() ? 1 : 0); - writeC(_creature.isAlikeDead() ? 1 : 0); - writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation) - writeS(_name); - writeS(_title); + packet.writeF(_pAtkSpd / 277.478340719); + packet.writeF(_collisionRadius); + packet.writeF(_collisionHeight); + packet.writeD(_rhand); // right hand weapon + packet.writeD(0); + packet.writeD(_lhand); // left hand weapon + packet.writeC(1); // name above char 1=true ... ?? + packet.writeC(_creature.isRunning() ? 1 : 0); + packet.writeC(_creature.isInCombat() ? 1 : 0); + packet.writeC(_creature.isAlikeDead() ? 1 : 0); + packet.writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation) + packet.writeS(_name); + packet.writeS(_title); if (_creature instanceof Summon) { - writeD(0x01); // Title color 0=client default - writeD(((Summon) _creature).getPvpFlag()); - writeD(((Summon) _creature).getKarma()); + packet.writeD(0x01); // Title color 0=client default + packet.writeD(((Summon) _creature).getPvpFlag()); + packet.writeD(((Summon) _creature).getKarma()); } else { - writeD(0); - writeD(0); - writeD(0); + packet.writeD(0); + packet.writeD(0); + packet.writeD(0); } - writeD(_creature.getAbnormalEffect()); // C2 - writeD(_clanId); // C2 - writeD(_clanCrest); // C2 - writeD(_allyId); // C2 - writeD(_allyCrest); // C2 - writeC(0x00); // C2 + packet.writeD(_creature.getAbnormalEffect()); // C2 + packet.writeD(_clanId); // C2 + packet.writeD(_clanCrest); // C2 + packet.writeD(_allyId); // C2 + packet.writeD(_allyCrest); // C2 + packet.writeC(0x00); // C2 if (Config.CHAMPION_ENABLE) { - writeC(_creature.isChampion() ? Config.CHAMPION_AURA : 0); + packet.writeC(_creature.isChampion() ? Config.CHAMPION_AURA : 0); } else { - writeC(0x00); // C3 team circle 1-blue, 2-red + packet.writeC(0x00); // C3 team circle 1-blue, 2-red } - writeF(_collisionRadius); - writeF(_collisionHeight); - writeD(0x00); // C4 - writeD(0x00); // C6 + packet.writeF(_collisionRadius); + packet.writeF(_collisionHeight); + packet.writeD(0x00); // C4 + packet.writeD(0x00); // C6 + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ObservationMode.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ObservationMode.java index d652513c6f..7f07473ff4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ObservationMode.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ObservationMode.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class ObservationMode extends GameServerPacket +public class ObservationMode implements IClientOutgoingPacket { private final int _x; private final int _y; @@ -38,14 +41,15 @@ public class ObservationMode extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xdf); - writeD(_x); - writeD(_y); - writeD(_z); - writeC(0x00); - writeC(0xc0); - writeC(0x00); + OutgoingPackets.OBSERVATION_MODE.writeId(packet); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeC(0x00); + packet.writeC(0xc0); + packet.writeC(0x00); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ObservationReturn.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ObservationReturn.java index 4f46058a4f..ed6233ab0c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ObservationReturn.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ObservationReturn.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class ObservationReturn extends GameServerPacket +public class ObservationReturn implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -34,11 +36,12 @@ public class ObservationReturn extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xe0); - writeD(_player.getObsX()); - writeD(_player.getObsY()); - writeD(_player.getObsZ()); + OutgoingPackets.OBSERVATION_RETURN.writeId(packet); + packet.writeD(_player.getObsX()); + packet.writeD(_player.getObsY()); + packet.writeD(_player.getObsZ()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/OnVehicleCheckLocation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/OnVehicleCheckLocation.java index 67a64f59f5..04e4c681e4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/OnVehicleCheckLocation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/OnVehicleCheckLocation.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class OnVehicleCheckLocation extends GameServerPacket +public class OnVehicleCheckLocation implements IClientOutgoingPacket { private final BoatInstance _boat; private final int _x; @@ -42,18 +44,15 @@ public class OnVehicleCheckLocation extends GameServerPacket _z = z; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5b); - writeD(_boat.getObjectId()); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_boat.getPosition().getHeading()); + OutgoingPackets.ON_VEHICLE_CHECK_LOCATION.writeId(packet); + packet.writeD(_boat.getObjectId()); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_boat.getPosition().getHeading()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PackageSendableList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PackageSendableList.java index 65c0517088..ec72d8c4cc 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PackageSendableList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PackageSendableList.java @@ -16,43 +16,48 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PackageSendableList extends GameServerPacket +public class PackageSendableList implements IClientOutgoingPacket { private final ItemInstance[] _items; private final int _playerObjId; + private final int _adena; - public PackageSendableList(ItemInstance[] items, int playerObjId) + public PackageSendableList(ItemInstance[] items, int playerObjId, int adena) { _items = items; _playerObjId = playerObjId; + _adena = adena; } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xC3); + OutgoingPackets.PACKAGE_SENDABLE_LIST.writeId(packet); - writeD(_playerObjId); - writeD(getClient().getPlayer().getAdena()); - writeD(_items.length); + packet.writeD(_playerObjId); + packet.writeD(_adena); + packet.writeD(_items.length); for (ItemInstance item : _items) // format inside the for taken from SellList part use should be about the same { - writeH(item.getItem().getType1()); - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeH(item.getEnchantLevel()); - writeH(0x00); - writeH(0x00); - writeD(item.getObjectId()); // some item identifier later used by client to answer (see RequestPackageSend) not item id nor object id maybe some freight system id?? + packet.writeH(item.getItem().getType1()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getEnchantLevel()); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeD(item.getObjectId()); // some item identifier later used by client to answer (see RequestPackageSend) not item id nor object id maybe some freight system id?? } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PackageToList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PackageToList.java index c3cfea0b7a..1deb2cd4aa 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PackageToList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PackageToList.java @@ -19,11 +19,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Map; import java.util.Map.Entry; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (c) d[dS] d: list size [ d: char ID S: char Name ] * @author -Wooden- */ -public class PackageToList extends GameServerPacket +public class PackageToList implements IClientOutgoingPacket { private final Map _players; @@ -34,14 +37,15 @@ public class PackageToList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xC2); - writeD(_players.size()); + OutgoingPackets.PACKAGE_TO_LIST.writeId(packet); + packet.writeD(_players.size()); for (Entry entry : _players.entrySet()) { - writeD(entry.getKey()); // you told me char id, i guess this was object id? - writeS(entry.getValue()); + packet.writeD(entry.getKey()); // you told me char id, i guess this was object id? + packet.writeS(entry.getValue()); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchDetail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchDetail.java index db162f1e80..117fd58d3d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchDetail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchDetail.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Gnacik */ -public class PartyMatchDetail extends GameServerPacket +public class PartyMatchDetail implements IClientOutgoingPacket { private final PartyMatchRoom _room; @@ -34,15 +36,16 @@ public class PartyMatchDetail extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x97); - writeD(_room.getId()); // Room ID - writeD(_room.getMaxMembers()); // Max Members - writeD(_room.getMinLevel()); // Level Min - writeD(_room.getMaxLevel()); // Level Max - writeD(_room.getLootType()); // Loot Type - writeD(_room.getLocation()); // Room Location - writeS(_room.getTitle()); // Room title + OutgoingPackets.PARTY_MATCH_DETAIL.writeId(packet); + packet.writeD(_room.getId()); // Room ID + packet.writeD(_room.getMaxMembers()); // Max Members + packet.writeD(_room.getMinLevel()); // Level Min + packet.writeD(_room.getMaxLevel()); // Level Max + packet.writeD(_room.getLootType()); // Loot Type + packet.writeD(_room.getLocation()); // Room Location + packet.writeS(_room.getTitle()); // Room title + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchList.java index 14ad8ecd71..71ed0f2003 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMatchList.java @@ -19,11 +19,13 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoom; import org.l2jmobius.gameserver.model.partymatching.PartyMatchRoomList; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class PartyMatchList extends GameServerPacket +public class PartyMatchList implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _loc; @@ -39,13 +41,8 @@ public class PartyMatchList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - if (getClient().getPlayer() == null) - { - return; - } - for (PartyMatchRoom room : PartyMatchRoomList.getInstance().getRooms()) { if ((room.getMembers() < 1) || (room.getOwner() == null) || !room.getOwner().isOnline() || (room.getOwner().getPartyRoom() != room.getId())) @@ -69,28 +66,29 @@ public class PartyMatchList extends GameServerPacket int count = 0; final int size = _rooms.size(); - writeC(0x96); + OutgoingPackets.PARTY_MATCH_LIST.writeId(packet); if (size > 0) { - writeD(1); + packet.writeD(1); } else { - writeD(0); + packet.writeD(0); } - writeD(_rooms.size()); + packet.writeD(_rooms.size()); while (size > count) { - writeD(_rooms.get(count).getId()); - writeS(_rooms.get(count).getTitle()); - writeD(_rooms.get(count).getLocation()); - writeD(_rooms.get(count).getMinLevel()); - writeD(_rooms.get(count).getMaxLevel()); - writeD(_rooms.get(count).getMembers()); - writeD(_rooms.get(count).getMaxMembers()); - writeS(_rooms.get(count).getOwner().getName()); + packet.writeD(_rooms.get(count).getId()); + packet.writeS(_rooms.get(count).getTitle()); + packet.writeD(_rooms.get(count).getLocation()); + packet.writeD(_rooms.get(count).getMinLevel()); + packet.writeD(_rooms.get(count).getMaxLevel()); + packet.writeD(_rooms.get(count).getMembers()); + packet.writeD(_rooms.get(count).getMaxMembers()); + packet.writeS(_rooms.get(count).getOwner().getName()); count++; } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMemberPosition.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMemberPosition.java index 42174b5885..f68ea52b31 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMemberPosition.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartyMemberPosition.java @@ -19,16 +19,18 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.HashMap; import java.util.Map; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author zabbix */ -public class PartyMemberPosition extends GameServerPacket +public class PartyMemberPosition implements IClientOutgoingPacket { - Map locations = new HashMap<>(); + Map _locations = new HashMap<>(); public PartyMemberPosition(Party party) { @@ -37,30 +39,31 @@ public class PartyMemberPosition extends GameServerPacket public void reuse(Party party) { - locations.clear(); + _locations.clear(); for (PlayerInstance member : party.getPartyMembers()) { if (member == null) { continue; } - locations.put(member.getObjectId(), new Location(member)); + _locations.put(member.getObjectId(), new Location(member)); } } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa7); - writeD(locations.size()); + OutgoingPackets.PARTY_MEMBER_POSITION.writeId(packet); + packet.writeD(_locations.size()); - for (Map.Entry entry : locations.entrySet()) + for (Map.Entry entry : _locations.entrySet()) { final Location loc = entry.getValue(); - writeD(entry.getKey()); - writeD(loc.getX()); - writeD(loc.getY()); - writeD(loc.getZ()); + packet.writeD(entry.getKey()); + packet.writeD(loc.getX()); + packet.writeD(loc.getY()); + packet.writeD(loc.getZ()); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAdd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAdd.java index ee364c8d61..fcdef8000b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAdd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAdd.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.5 $ $Date: 2005/03/27 15:29:57 $ */ -public class PartySmallWindowAdd extends GameServerPacket +public class PartySmallWindowAdd implements IClientOutgoingPacket { private final PlayerInstance _member; private final int _leaderId; @@ -36,24 +38,25 @@ public class PartySmallWindowAdd extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x4f); - writeD(_leaderId); // c3 - writeD(_distribution); // c3 - writeD(_member.getObjectId()); - writeS(_member.getName()); + OutgoingPackets.PARTY_SMALL_WINDOW_ADD.writeId(packet); + packet.writeD(_leaderId); // c3 + packet.writeD(_distribution); // c3 + packet.writeD(_member.getObjectId()); + packet.writeS(_member.getName()); - writeD((int) _member.getCurrentCp()); // c4 - writeD(_member.getMaxCp()); // c4 + packet.writeD((int) _member.getCurrentCp()); // c4 + packet.writeD(_member.getMaxCp()); // c4 - writeD((int) _member.getCurrentHp()); - writeD(_member.getMaxHp()); - writeD((int) _member.getCurrentMp()); - writeD(_member.getMaxMp()); - writeD(_member.getLevel()); - writeD(_member.getClassId().getId()); - writeD(0); // writeD(0x01); ?? - writeD(0); + packet.writeD((int) _member.getCurrentHp()); + packet.writeD(_member.getMaxHp()); + packet.writeD((int) _member.getCurrentMp()); + packet.writeD(_member.getMaxMp()); + packet.writeD(_member.getLevel()); + packet.writeD(_member.getClassId().getId()); + packet.writeD(0); // writeD(0x01); ?? + packet.writeD(0); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAll.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAll.java index cc2db44f26..6e9f4a4372 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAll.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowAll.java @@ -16,55 +16,59 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 63 01 00 00 00 count c1 b2 e0 4a object id 54 00 75 00 65 00 73 00 64 00 61 00 79 00 00 00 name 5a 01 00 00 hp 5a 01 00 00 hp max 89 00 00 00 mp 89 00 00 00 mp max 0e 00 00 00 level 12 00 00 00 class 00 00 00 00 01 00 00 00 format d (dSdddddddd) * @version $Revision: 1.6.2.1.2.5 $ $Date: 2005/03/27 15:29:57 $ */ -public class PartySmallWindowAll extends GameServerPacket +public class PartySmallWindowAll implements IClientOutgoingPacket { private final Party _party; private final PlayerInstance _exclude; private final int _dist; - private final int _LeaderOID; + private final int _leaderObjId; public PartySmallWindowAll(PlayerInstance exclude, Party party) { _exclude = exclude; _party = party; - _LeaderOID = _party.getPartyLeaderOID(); + _leaderObjId = _party.getPartyLeaderOID(); _dist = _party.getLootDistribution(); } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x4e); - writeD(_LeaderOID); - writeD(_dist); - writeD(_party.getMemberCount() - 1); + OutgoingPackets.PARTY_SMALL_WINDOW_ALL.writeId(packet); + + packet.writeD(_leaderObjId); + packet.writeD(_dist); + packet.writeD(_party.getMemberCount() - 1); for (PlayerInstance member : _party.getPartyMembers()) { if ((member != null) && (member != _exclude)) { - writeD(member.getObjectId()); - writeS(member.getName()); + packet.writeD(member.getObjectId()); + packet.writeS(member.getName()); - writeD((int) member.getCurrentCp()); // c4 - writeD(member.getMaxCp()); // c4 + packet.writeD((int) member.getCurrentCp()); // c4 + packet.writeD(member.getMaxCp()); // c4 - writeD((int) member.getCurrentHp()); - writeD(member.getMaxHp()); - writeD((int) member.getCurrentMp()); - writeD(member.getMaxMp()); - writeD(member.getLevel()); - writeD(member.getClassId().getId()); - writeD(0); // writeD(0x01); ?? - writeD(member.getRace().ordinal()); + packet.writeD((int) member.getCurrentHp()); + packet.writeD(member.getMaxHp()); + packet.writeD((int) member.getCurrentMp()); + packet.writeD(member.getMaxMp()); + packet.writeD(member.getLevel()); + packet.writeD(member.getClassId().getId()); + packet.writeD(0); // writeD(0x01); ?? + packet.writeD(member.getRace().ordinal()); } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDelete.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDelete.java index 5cbf8c2adc..a195980c3c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDelete.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDelete.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PartySmallWindowDelete extends GameServerPacket +public class PartySmallWindowDelete implements IClientOutgoingPacket { private final PlayerInstance _member; @@ -31,10 +33,11 @@ public class PartySmallWindowDelete extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x51); - writeD(_member.getObjectId()); - writeS(_member.getName()); + OutgoingPackets.PARTY_SMALL_WINDOW_DELETE.writeId(packet); + packet.writeD(_member.getObjectId()); + packet.writeS(_member.getName()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDeleteAll.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDeleteAll.java index 6591705c78..b141cf1b61 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDeleteAll.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowDeleteAll.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PartySmallWindowDeleteAll extends GameServerPacket +public class PartySmallWindowDeleteAll implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x50); + OutgoingPackets.PARTY_SMALL_WINDOW_DELETE_ALL.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowUpdate.java index 67a49b0dea..d2f8a45c6e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySmallWindowUpdate.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.5 $ $Date: 2005/03/27 15:29:39 $ */ -public class PartySmallWindowUpdate extends GameServerPacket +public class PartySmallWindowUpdate implements IClientOutgoingPacket { private final PlayerInstance _member; @@ -31,20 +33,21 @@ public class PartySmallWindowUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x52); - writeD(_member.getObjectId()); - writeS(_member.getName()); + OutgoingPackets.PARTY_SMALL_WINDOW_UPDATE.writeId(packet); + packet.writeD(_member.getObjectId()); + packet.writeS(_member.getName()); - writeD((int) _member.getCurrentCp()); // c4 - writeD(_member.getMaxCp()); // c4 + packet.writeD((int) _member.getCurrentCp()); // c4 + packet.writeD(_member.getMaxCp()); // c4 - writeD((int) _member.getCurrentHp()); - writeD(_member.getMaxHp()); - writeD((int) _member.getCurrentMp()); - writeD(_member.getMaxMp()); - writeD(_member.getLevel()); - writeD(_member.getClassId().getId()); + packet.writeD((int) _member.getCurrentHp()); + packet.writeD(_member.getMaxHp()); + packet.writeD((int) _member.getCurrentMp()); + packet.writeD(_member.getMaxMp()); + packet.writeD(_member.getLevel()); + packet.writeD(_member.getClassId().getId()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySpelled.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySpelled.java index b6e596c852..b455ca35e4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySpelled.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PartySpelled.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PartySpelled extends GameServerPacket +public class PartySpelled implements IClientOutgoingPacket { private final List _effects; private final Creature _creature; @@ -52,22 +54,24 @@ public class PartySpelled extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { if (_creature == null) { - return; + return false; } - writeC(0xee); - writeD(_creature instanceof SummonInstance ? 2 : _creature instanceof PetInstance ? 1 : 0); - writeD(_creature.getObjectId()); - writeD(_effects.size()); + + OutgoingPackets.PARTY_SPELLED.writeId(packet); + packet.writeD(_creature instanceof SummonInstance ? 2 : _creature instanceof PetInstance ? 1 : 0); + packet.writeD(_creature.getObjectId()); + packet.writeD(_effects.size()); for (Effect temp : _effects) { - writeD(temp._skillId); - writeH(temp._dat); - writeD(temp._duration / 1000); + packet.writeD(temp._skillId); + packet.writeH(temp._dat); + packet.writeD(temp._duration / 1000); } + return true; } public void addPartySpelledEffect(int skillId, int dat, int duration) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetDelete.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetDelete.java index 4f3f8ee399..467831c73d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetDelete.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetDelete.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class PetDelete extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class PetDelete implements IClientOutgoingPacket { private final int _petId; private final int _petObjId; @@ -28,10 +31,11 @@ public class PetDelete extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb6); - writeD(_petId); // dont really know what these two are since i never needed them - writeD(_petObjId); // objectId + OutgoingPackets.PET_DELETE.writeId(packet); + packet.writeD(_petId); // dont really know what these two are since i never needed them + packet.writeD(_petObjId); // objectId + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetInfo.java index 7f2f3c9ee0..1a55da567b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetInfo.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.6.2.5.2.12 $ $Date: 2005/03/31 09:19:16 $ */ -public class PetInfo extends GameServerPacket +public class PetInfo implements IClientOutgoingPacket { private final Summon _summon; private final int _x; @@ -81,88 +83,89 @@ public class PetInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb1); - writeD(_summon.getSummonType()); - writeD(_summon.getObjectId()); - writeD(_summon.getTemplate().getDisplayId() + 1000000); - writeD(0); // 1=attackable + OutgoingPackets.PET_INFO.writeId(packet); + packet.writeD(_summon.getSummonType()); + packet.writeD(_summon.getObjectId()); + packet.writeD(_summon.getTemplate().getDisplayId() + 1000000); + packet.writeD(0); // 1=attackable - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); - writeD(0); - writeD(_mAtkSpd); - writeD(_pAtkSpd); - writeD(_runSpd); - writeD(_walkSpd); - writeD(_swimRunSpd); - writeD(_swimWalkSpd); - writeD(_flRunSpd); - writeD(_flWalkSpd); - writeD(_flyRunSpd); - writeD(_flyWalkSpd); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + packet.writeD(0); + packet.writeD(_mAtkSpd); + packet.writeD(_pAtkSpd); + packet.writeD(_runSpd); + packet.writeD(_walkSpd); + packet.writeD(_swimRunSpd); + packet.writeD(_swimWalkSpd); + packet.writeD(_flRunSpd); + packet.writeD(_flWalkSpd); + packet.writeD(_flyRunSpd); + packet.writeD(_flyWalkSpd); - writeF(1/* _cha.getProperMultiplier() */); - writeF(1/* _cha.getAttackSpeedMultiplier() */); - writeF(_summon.getTemplate().getFCollisionRadius()); - writeF(_summon.getTemplate().getFCollisionHeight()); - writeD(0); // right hand weapon - writeD(0); - writeD(0); // left hand weapon - writeC(1); // name above char 1=true ... ?? - writeC(_summon.isRunning() ? 1 : 0); // running=1 - writeC(_summon.isInCombat() ? 1 : 0); // attacking 1=true - writeC(_summon.isAlikeDead() ? 1 : 0); // dead 1=true - writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation) - writeS(_summon.getName()); - writeS(_summon.getTitle()); - writeD(1); - writeD(_summon.getOwner() != null ? _summon.getOwner().getPvpFlag() : 0); // 0 = white,2= purpleblink, if its greater then karma = purple - writeD(_summon.getOwner() != null ? _summon.getOwner().getKarma() : 0); // karma - writeD(_curFed); // how fed it is - writeD(_maxFed); // max fed it can be - writeD((int) _summon.getCurrentHp()); // current hp - writeD(_maxHp); // max hp - writeD((int) _summon.getCurrentMp()); // current mp - writeD(_maxMp); // max mp - writeD(_summon.getStat().getSp()); // sp - writeD(_summon.getLevel()); // level - writeQ(_summon.getStat().getExp()); - writeQ(_summon.getExpForThisLevel()); // 0% absolute value - writeQ(_summon.getExpForNextLevel()); // 100% absoulte value - writeD(_summon instanceof PetInstance ? _summon.getInventory().getTotalWeight() : 0); // weight - writeD(_summon.getMaxLoad()); // max weight it can carry - writeD(_summon.getPAtk(null)); // patk - writeD(_summon.getPDef(null)); // pdef - writeD(_summon.getMAtk(null, null)); // matk - writeD(_summon.getMDef(null, null)); // mdef - writeD(_summon.getAccuracy()); // accuracy - writeD(_summon.getEvasionRate(null)); // evasion - writeD(_summon.getCriticalHit(null, null)); // critical - writeD(_runSpd); // speed - writeD(_summon.getPAtkSpd()); // atkspeed - writeD(_summon.getMAtkSpd()); // casting speed + packet.writeF(1/* _cha.getProperMultiplier() */); + packet.writeF(1/* _cha.getAttackSpeedMultiplier() */); + packet.writeF(_summon.getTemplate().getFCollisionRadius()); + packet.writeF(_summon.getTemplate().getFCollisionHeight()); + packet.writeD(0); // right hand weapon + packet.writeD(0); + packet.writeD(0); // left hand weapon + packet.writeC(1); // name above char 1=true ... ?? + packet.writeC(_summon.isRunning() ? 1 : 0); // running=1 + packet.writeC(_summon.isInCombat() ? 1 : 0); // attacking 1=true + packet.writeC(_summon.isAlikeDead() ? 1 : 0); // dead 1=true + packet.writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation) + packet.writeS(_summon.getName()); + packet.writeS(_summon.getTitle()); + packet.writeD(1); + packet.writeD(_summon.getOwner() != null ? _summon.getOwner().getPvpFlag() : 0); // 0 = white,2= purpleblink, if its greater then karma = purple + packet.writeD(_summon.getOwner() != null ? _summon.getOwner().getKarma() : 0); // karma + packet.writeD(_curFed); // how fed it is + packet.writeD(_maxFed); // max fed it can be + packet.writeD((int) _summon.getCurrentHp()); // current hp + packet.writeD(_maxHp); // max hp + packet.writeD((int) _summon.getCurrentMp()); // current mp + packet.writeD(_maxMp); // max mp + packet.writeD(_summon.getStat().getSp()); // sp + packet.writeD(_summon.getLevel()); // level + packet.writeQ(_summon.getStat().getExp()); + packet.writeQ(_summon.getExpForThisLevel()); // 0% absolute value + packet.writeQ(_summon.getExpForNextLevel()); // 100% absoulte value + packet.writeD(_summon instanceof PetInstance ? _summon.getInventory().getTotalWeight() : 0); // weight + packet.writeD(_summon.getMaxLoad()); // max weight it can carry + packet.writeD(_summon.getPAtk(null)); // patk + packet.writeD(_summon.getPDef(null)); // pdef + packet.writeD(_summon.getMAtk(null, null)); // matk + packet.writeD(_summon.getMDef(null, null)); // mdef + packet.writeD(_summon.getAccuracy()); // accuracy + packet.writeD(_summon.getEvasionRate(null)); // evasion + packet.writeD(_summon.getCriticalHit(null, null)); // critical + packet.writeD(_runSpd); // speed + packet.writeD(_summon.getPAtkSpd()); // atkspeed + packet.writeD(_summon.getMAtkSpd()); // casting speed - writeD(0); // c2 abnormal visual effect... bleed=1; poison=2; poison & bleed=3; flame=4; + packet.writeD(0); // c2 abnormal visual effect... bleed=1; poison=2; poison & bleed=3; flame=4; final int npcId = _summon.getTemplate().getNpcId(); if ((npcId >= 12526) && (npcId <= 12528)) { - writeH(1); // c2 ride button + packet.writeH(1); // c2 ride button } else { - writeH(0); + packet.writeH(0); } - writeC(0); // c2 + packet.writeC(0); // c2 // Following all added in C4. - writeH(0); // ?? - writeC(0); // team aura (1 = blue, 2 = red) - writeD(_summon.getSoulShotsPerHit()); // How many soulshots this servitor uses per hit - writeD(_summon.getSpiritShotsPerHit()); // How many spiritshots this servitor uses per hit + packet.writeH(0); // ?? + packet.writeC(0); // team aura (1 = blue, 2 = red) + packet.writeD(_summon.getSoulShotsPerHit()); // How many soulshots this servitor uses per hit + packet.writeD(_summon.getSpiritShotsPerHit()); // How many spiritshots this servitor uses per hit + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetInventoryUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetInventoryUpdate.java index eec8bb4a5a..51d7dd6f5c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetInventoryUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetInventoryUpdate.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ItemInfo; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Yme * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/27 15:29:57 $ Rebuild 23.2.2006 by Advi */ -public class PetInventoryUpdate extends GameServerPacket +public class PetInventoryUpdate implements IClientOutgoingPacket { private final List _items; @@ -72,25 +74,26 @@ public class PetInventoryUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb3); + OutgoingPackets.PET_INVENTORY_UPDATE.writeId(packet); final int count = _items.size(); - writeH(count); + packet.writeH(count); for (ItemInfo item : _items) { - writeH(item.getChange()); - writeH(item.getItem().getType1()); // item type1 - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); // item type2 - writeH(0x00); // ? - writeH(item.getEquipped()); + packet.writeH(item.getChange()); + packet.writeH(item.getItem().getType1()); // item type1 + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? + packet.writeH(item.getEquipped()); // writeH(temp.getItem().getBodyPart()); // rev 377 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(item.getEnchant()); // enchant level - writeH(0x00); // ? + packet.writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getEnchant()); // enchant level + packet.writeH(0x00); // ? } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetItemList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetItemList.java index a70ad53099..1692cbe819 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetItemList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetItemList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class PetItemList extends GameServerPacket +public class PetItemList implements IClientOutgoingPacket { private final PetInstance _activeChar; @@ -32,34 +34,35 @@ public class PetItemList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xB2); + OutgoingPackets.PET_ITEM_LIST.writeId(packet); final ItemInstance[] items = _activeChar.getInventory().getItems(); final int count = items.length; - writeH(count); + packet.writeH(count); for (ItemInstance temp : items) { - writeH(temp.getItem().getType1()); // item type1 - writeD(temp.getObjectId()); - writeD(temp.getItemId()); - writeD(temp.getCount()); - writeH(temp.getItem().getType2()); // item type2 - writeH(0xff); // ? + packet.writeH(temp.getItem().getType1()); // item type1 + packet.writeD(temp.getObjectId()); + packet.writeD(temp.getItemId()); + packet.writeD(temp.getCount()); + packet.writeH(temp.getItem().getType2()); // item type2 + packet.writeH(0xff); // ? if (temp.isEquipped()) { - writeH(0x01); + packet.writeH(0x01); } else { - writeH(0x00); + packet.writeH(0x00); } - writeD(temp.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeD(temp.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand // writeH(temp.getItem().getBodyPart()); // rev 377 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(temp.getEnchantLevel()); // enchant level - writeH(0x00); // ? + packet.writeH(temp.getEnchantLevel()); // enchant level + packet.writeH(0x00); // ? } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusShow.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusShow.java index db1a4bc738..2e6c5c1535 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusShow.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusShow.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Summon; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Yme * @version $Revision: 1.3.2.2.2.4 $ $Date: 2005/03/29 23:15:10 $ */ -public class PetStatusShow extends GameServerPacket +public class PetStatusShow implements IClientOutgoingPacket { private final int _summonType; @@ -32,9 +34,10 @@ public class PetStatusShow extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xB0); - writeD(_summonType); + OutgoingPackets.PET_STATUS_SHOW.writeId(packet); + packet.writeD(_summonType); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusUpdate.java index 4262540bfa..0665911318 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PetStatusUpdate.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.5.2.3.2.5 $ $Date: 2005/03/29 23:15:10 $ */ -public class PetStatusUpdate extends GameServerPacket +public class PetStatusUpdate implements IClientOutgoingPacket { private final Summon _summon; private final int _maxHp; @@ -51,24 +53,25 @@ public class PetStatusUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb5); - writeD(_summon.getSummonType()); - writeD(_summon.getObjectId()); - writeD(_summon.getX()); - writeD(_summon.getY()); - writeD(_summon.getZ()); - writeS(_summon.getOwner().getName()); - writeD(_curFed); - writeD(_maxFed); - writeD((int) _summon.getCurrentHp()); - writeD(_maxHp); - writeD((int) _summon.getCurrentMp()); - writeD(_maxMp); - writeD(_summon.getLevel()); - writeQ(_summon.getStat().getExp()); - writeQ(_summon.getExpForThisLevel()); // 0% absolute value - writeQ(_summon.getExpForNextLevel()); // 100% absolute value + OutgoingPackets.PET_STATUS_UPDATE.writeId(packet); + packet.writeD(_summon.getSummonType()); + packet.writeD(_summon.getObjectId()); + packet.writeD(_summon.getX()); + packet.writeD(_summon.getY()); + packet.writeD(_summon.getZ()); + packet.writeS(_summon.getOwner().getName()); + packet.writeD(_curFed); + packet.writeD(_maxFed); + packet.writeD((int) _summon.getCurrentHp()); + packet.writeD(_maxHp); + packet.writeD((int) _summon.getCurrentMp()); + packet.writeD(_maxMp); + packet.writeD(_summon.getLevel()); + packet.writeQ(_summon.getStat().getExp()); + packet.writeQ(_summon.getExpForThisLevel()); // 0% absolute value + packet.writeQ(_summon.getExpForNextLevel()); // 100% absolute value + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PlaySound.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PlaySound.java index 151eb4e54b..afd859edf9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PlaySound.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PlaySound.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class PlaySound extends GameServerPacket +public class PlaySound implements IClientOutgoingPacket { private final int _unknown; private final String _soundFile; @@ -93,16 +95,17 @@ public class PlaySound extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x98); - writeD(_unknown); - writeS(_soundFile); - writeD(_isObject ? 1 : 0); - writeD(_objectId); - writeD(_loc.getX()); - writeD(_loc.getY()); - writeD(_loc.getZ()); - writeD(_duration); + OutgoingPackets.PLAY_SOUND.writeId(packet); + packet.writeD(_unknown); + packet.writeS(_soundFile); + packet.writeD(_isObject ? 1 : 0); + packet.writeD(_objectId); + packet.writeD(_loc.getX()); + packet.writeD(_loc.getY()); + packet.writeD(_loc.getZ()); + packet.writeD(_duration); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeCrest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeCrest.java index 86f996b228..b761558b68 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeCrest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeCrest.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.cache.CrestCache; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 84 6d 06 00 00 36 05 00 00 42 4d 36 05 00 00 00 .m...6...BM6.... 0010: 00 00 00 36 04 00 00 28 00 00 00 10 00 00 00 10 ...6...(........ 0020: 00 00 00 01 00 08 00 00 00 00 00 00 01 00 00 c4 ................ 0030: ... 0530: 10 91 00 00 00 60 9b d1 01 e4 6e ee 52 97 dd .....`....n.R.. * format dd x...x * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgeCrest extends GameServerPacket +public class PledgeCrest implements IClientOutgoingPacket { private final int _crestId; private final byte[] _data; @@ -35,18 +37,19 @@ public class PledgeCrest extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x6c); - writeD(_crestId); + OutgoingPackets.PLEDGE_CREST.writeId(packet); + packet.writeD(_crestId); if (_data != null) { - writeD(_data.length); - writeB(_data); + packet.writeD(_data.length); + packet.writeB(_data); } else { - writeD(0); + packet.writeD(0); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeInfo.java index 395ae2be9e..6198fed193 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 9c c10c0000 48 00 61 00 6d 00 62 00 75 00 72 .....H.a.m.b.u.r 0010: 00 67 00 00 00 00000000 00000000 00000000 00000000 00000000 00000000 00 00 00000000 ... format dSddddddSd * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgeInfo extends GameServerPacket +public class PledgeInfo implements IClientOutgoingPacket { private final Clan _clan; @@ -32,11 +34,12 @@ public class PledgeInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x83); - writeD(_clan.getClanId()); - writeS(_clan.getName()); - writeS(_clan.getAllyName()); + OutgoingPackets.PLEDGE_INFO.writeId(packet); + packet.writeD(_clan.getClanId()); + packet.writeS(_clan.getName()); + packet.writeS(_clan.getAllyName()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgePowerGradeList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgePowerGradeList.java index 35be352baa..4384723291 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgePowerGradeList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgePowerGradeList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.Clan.RankPrivs; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 9c c10c0000 48 00 61 00 6d 00 62 00 75 00 72 .....H.a.m.b.u.r 0010: 00 67 00 00 00 00000000 00000000 00000000 00000000 00000000 00000000 00 00 00000000 ... format dd ?? * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgePowerGradeList extends GameServerPacket +public class PledgePowerGradeList implements IClientOutgoingPacket { private final RankPrivs[] _privs; @@ -32,16 +34,15 @@ public class PledgePowerGradeList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xFE); - writeH(0x3b); - writeD(_privs.length); + OutgoingPackets.PLEDGE_POWER_GRADE_LIST.writeId(packet); + packet.writeD(_privs.length); for (RankPrivs priv : _privs) { - writeD(priv.getRank()); - writeD(priv.getParty()); - // LOGGER.warning("rank: "+_privs[i].getRank()+" party: "+_privs[i].getParty()); + packet.writeD(priv.getRank()); + packet.writeD(priv.getParty()); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveMemberInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveMemberInfo.java index bf6f1bc39d..19f268f7b8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveMemberInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveMemberInfo.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PledgeReceiveMemberInfo extends GameServerPacket +public class PledgeReceiveMemberInfo implements IClientOutgoingPacket { private final ClanMember _member; @@ -34,26 +36,26 @@ public class PledgeReceiveMemberInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x3d); + OutgoingPackets.PLEDGE_RECEIVE_MEMBER_INFO.writeId(packet); - writeD(_member.getPledgeType()); - writeS(_member.getName()); - writeS(_member.getTitle()); // title - writeD(_member.getPowerGrade()); // power + packet.writeD(_member.getPledgeType()); + packet.writeS(_member.getName()); + packet.writeS(_member.getTitle()); // title + packet.writeD(_member.getPowerGrade()); // power // clan or subpledge name if (_member.getPledgeType() != 0) { - writeS(_member.getClan().getSubPledge(_member.getPledgeType()).getName()); + packet.writeS(_member.getClan().getSubPledge(_member.getPledgeType()).getName()); } else { - writeS(_member.getClan().getName()); + packet.writeS(_member.getClan().getName()); } - writeS(_member.getApprenticeOrSponsorName()); // name of this member's apprentice/sponsor + packet.writeS(_member.getApprenticeOrSponsorName()); // name of this member's apprentice/sponsor + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceivePowerInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceivePowerInfo.java index dc2efb5777..1dc7b80cea 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceivePowerInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceivePowerInfo.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format : (ch) dSd * @author -Wooden- */ -public class PledgeReceivePowerInfo extends GameServerPacket +public class PledgeReceivePowerInfo implements IClientOutgoingPacket { private final ClanMember _member; @@ -35,13 +37,13 @@ public class PledgeReceivePowerInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x3c); + OutgoingPackets.PLEDGE_RECEIVE_POWER_INFO.writeId(packet); - writeD(_member.getPowerGrade()); // power grade - writeS(_member.getName()); - writeD(_member.getClan().getRankPrivs(_member.getPowerGrade())); // privileges + packet.writeD(_member.getPowerGrade()); // power grade + packet.writeS(_member.getName()); + packet.writeD(_member.getClan().getRankPrivs(_member.getPowerGrade())); // privileges + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveSubPledgeCreated.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveSubPledgeCreated.java index e2e74ccdba..2c3c8ae04b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveSubPledgeCreated.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveSubPledgeCreated.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.Clan.SubPledge; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PledgeReceiveSubPledgeCreated extends GameServerPacket +public class PledgeReceiveSubPledgeCreated implements IClientOutgoingPacket { private final SubPledge _subPledge; @@ -34,14 +36,13 @@ public class PledgeReceiveSubPledgeCreated extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x3f); - - writeD(0x01); - writeD(_subPledge.getId()); - writeS(_subPledge.getName()); - writeS(_subPledge.getLeaderName()); + OutgoingPackets.PLEDGE_RECEIVE_SUB_PLEDGE_CREATED.writeId(packet); + packet.writeD(0x01); + packet.writeD(_subPledge.getId()); + packet.writeS(_subPledge.getName()); + packet.writeS(_subPledge.getLeaderName()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveWarList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveWarList.java index bf3b652f92..e12e4b02c5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveWarList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeReceiveWarList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PledgeReceiveWarList extends GameServerPacket +public class PledgeReceiveWarList implements IClientOutgoingPacket { private final Clan _clan; private final int _tab; @@ -34,14 +36,12 @@ public class PledgeReceiveWarList extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x3e); - - writeD(_tab); // type : 0 = Declared, 1 = Under Attack - writeD(0x00); // page - writeD(_tab == 0 ? _clan.getWarList().size() : _clan.getAttackerList().size()); + OutgoingPackets.PLEDGE_RECEIVE_WAR_LIST.writeId(packet); + packet.writeD(_tab); // type : 0 = Declared, 1 = Under Attack + packet.writeD(0x00); // page + packet.writeD(_tab == 0 ? _clan.getWarList().size() : _clan.getAttackerList().size()); for (Integer i : _tab == 0 ? _clan.getWarList() : _clan.getAttackerList()) { final Clan clan = ClanTable.getInstance().getClan(i); @@ -50,9 +50,10 @@ public class PledgeReceiveWarList extends GameServerPacket continue; } - writeS(clan.getName()); - writeD(_tab); // ?? - writeD(_tab); // ?? + packet.writeS(clan.getName()); + packet.writeD(_tab); // ?? + packet.writeD(_tab); // ?? } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowInfoUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowInfoUpdate.java index 8ba719a44a..06cfb6e1c8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowInfoUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowInfoUpdate.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PledgeShowInfoUpdate extends GameServerPacket +public class PledgeShowInfoUpdate implements IClientOutgoingPacket { private final Clan _clan; @@ -32,24 +34,25 @@ public class PledgeShowInfoUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final int TOP = ClanTable.getInstance().getTopRate(_clan.getClanId()); // ddddddddddSdd - writeC(0x88); + OutgoingPackets.PLEDGE_SHOW_INFO_UPDATE.writeId(packet); // sending empty data so client will ask all the info in response ;) - writeD(_clan.getClanId()); - writeD(_clan.getCrestId()); - writeD(_clan.getLevel()); // clan level - writeD(_clan.getFortId() != 0 ? _clan.getFortId() : _clan.getCastleId()); - writeD(_clan.getHideoutId()); - writeD(TOP); - writeD(_clan.getReputationScore()); // clan reputation score - writeD(0); - writeD(0); - writeD(_clan.getAllyId()); - writeS(_clan.getAllyName()); - writeD(_clan.getAllyCrestId()); - writeD(_clan.isAtWar()); + packet.writeD(_clan.getClanId()); + packet.writeD(_clan.getCrestId()); + packet.writeD(_clan.getLevel()); // clan level + packet.writeD(_clan.getFortId() != 0 ? _clan.getFortId() : _clan.getCastleId()); + packet.writeD(_clan.getHideoutId()); + packet.writeD(TOP); + packet.writeD(_clan.getReputationScore()); // clan reputation score + packet.writeD(0); + packet.writeD(0); + packet.writeD(_clan.getAllyId()); + packet.writeS(_clan.getAllyName()); + packet.writeD(_clan.getAllyCrestId()); + packet.writeD(_clan.isAtWar()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAdd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAdd.java index deb559c974..2457615063 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAdd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAdd.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class PledgeShowMemberListAdd extends GameServerPacket +public class PledgeShowMemberListAdd implements IClientOutgoingPacket { private String _name; private int _level; @@ -55,15 +57,16 @@ public class PledgeShowMemberListAdd extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x55); - writeS(_name); - writeD(_level); - writeD(_classId); - writeD(0); - writeD(1); - writeD(_objectId); // 1=online 0=offline? - writeD(_pledgeType); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_ADD.writeId(packet); + packet.writeS(_name); + packet.writeD(_level); + packet.writeD(_classId); + packet.writeD(0); + packet.writeD(1); + packet.writeD(_objectId); // 1=online 0=offline? + packet.writeD(_pledgeType); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAll.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAll.java index add1607d21..54292f50dc 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAll.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListAll.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan.SubPledge; +import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.model.clan.ClanMember; // @@ -29,7 +31,7 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; * (Sddddd) dddSS dddddddddSdd d (Sdddddd) * @version $Revision: 1.6.2.2.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgeShowMemberListAll extends GameServerPacket +public class PledgeShowMemberListAll implements IClientOutgoingPacket { private final Clan _clan; private final PlayerInstance _player; @@ -46,10 +48,10 @@ public class PledgeShowMemberListAll extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { _pledgeType = 0; - writePledge(0); + writePledge(packet, 0); final SubPledge[] subPledge = _clan.getAllSubPledges(); for (SubPledge element : subPledge) @@ -68,33 +70,34 @@ public class PledgeShowMemberListAll extends GameServerPacket // unless this is sent sometimes, the client doesn't recognise the player as the leader _player.sendPacket(new UserInfo(_player)); + return true; } - void writePledge(int mainOrSubpledge) + void writePledge(PacketWriter packet, int mainOrSubpledge) { final int TOP = ClanTable.getInstance().getTopRate(_clan.getClanId()); - writeC(0x53); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_ALL.writeId(packet); - writeD(mainOrSubpledge); // c5 main clan 0 or any subpledge 1? - writeD(_clan.getClanId()); - writeD(_pledgeType); // c5 - possibly pledge type? - writeS(_clan.getName()); - writeS(_clan.getLeaderName()); + packet.writeD(mainOrSubpledge); // c5 main clan 0 or any subpledge 1? + packet.writeD(_clan.getClanId()); + packet.writeD(_pledgeType); // c5 - possibly pledge type? + packet.writeS(_clan.getName()); + packet.writeS(_clan.getLeaderName()); - writeD(_clan.getCrestId()); // crest id .. is used again - writeD(_clan.getLevel()); - writeD(_clan.getCastleId()); - writeD(_clan.getHideoutId()); - writeD(TOP); - writeD(_clan.getReputationScore()); // was activechar level - writeD(0); // 0 - writeD(0); // 0 + packet.writeD(_clan.getCrestId()); // crest id .. is used again + packet.writeD(_clan.getLevel()); + packet.writeD(_clan.getCastleId()); + packet.writeD(_clan.getHideoutId()); + packet.writeD(TOP); + packet.writeD(_clan.getReputationScore()); // was activechar level + packet.writeD(0); // 0 + packet.writeD(0); // 0 - writeD(_clan.getAllyId()); - writeS(_clan.getAllyName()); - writeD(_clan.getAllyCrestId()); - writeD(_clan.isAtWar()); - writeD(_clan.getSubPledgeMembersCount(_pledgeType)); + packet.writeD(_clan.getAllyId()); + packet.writeS(_clan.getAllyName()); + packet.writeD(_clan.getAllyCrestId()); + packet.writeD(_clan.isAtWar()); + packet.writeD(_clan.getSubPledgeMembersCount(_pledgeType)); int yellow; for (ClanMember m : _members) @@ -115,13 +118,13 @@ public class PledgeShowMemberListAll extends GameServerPacket { yellow = 0; } - writeS(m.getName()); - writeD(m.getLevel()); - writeD(m.getClassId()); - writeD(0); - writeD(m.getObjectId()); - writeD(m.isOnline() ? 1 : 0); - writeD(yellow); + packet.writeS(m.getName()); + packet.writeD(m.getLevel()); + packet.writeD(m.getClassId()); + packet.writeD(0); + packet.writeD(m.getObjectId()); + packet.writeD(m.isOnline() ? 1 : 0); + packet.writeD(yellow); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDelete.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDelete.java index 4109330892..de65425183 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDelete.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDelete.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PledgeShowMemberListDelete extends GameServerPacket +public class PledgeShowMemberListDelete implements IClientOutgoingPacket { private final String _player; @@ -29,9 +32,10 @@ public class PledgeShowMemberListDelete extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x56); - writeS(_player); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_DELETE.writeId(packet); + packet.writeS(_player); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDeleteAll.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDeleteAll.java index 982ca488ea..ddaeeffb27 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDeleteAll.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListDeleteAll.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PledgeShowMemberListDeleteAll extends GameServerPacket +public class PledgeShowMemberListDeleteAll implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x82); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_DELETE_ALL.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListUpdate.java index 39906f8486..1261172e09 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeShowMemberListUpdate.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author -Wooden- */ -public class PledgeShowMemberListUpdate extends GameServerPacket +public class PledgeShowMemberListUpdate implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _pledgeType; @@ -81,16 +83,17 @@ public class PledgeShowMemberListUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x54); - writeS(_name); - writeD(_level); - writeD(_classId); - writeD(0); - writeD(_objectId); - writeD(_isOnline ? 1 : 0); // 1=online 0=offline - writeD(_pledgeType); - writeD(_hasSponsor); + OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_UPDATE.writeId(packet); + packet.writeS(_name); + packet.writeD(_level); + packet.writeD(_classId); + packet.writeD(0); + packet.writeD(_objectId); + packet.writeD(_isOnline ? 1 : 0); // 1=online 0=offline + packet.writeD(_pledgeType); + packet.writeD(_hasSponsor); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillList.java index fe6a46d124..9f64f17ad7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillList.java @@ -16,17 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Format: (ch) d [dd]. * @author -Wooden- */ -public class PledgeSkillList extends GameServerPacket +public class PledgeSkillList implements IClientOutgoingPacket { - /** The _clan. */ - private final Clan _clan; + private final Skill[] _skills; /** * Instantiates a new pledge skill list. @@ -34,20 +35,19 @@ public class PledgeSkillList extends GameServerPacket */ public PledgeSkillList(Clan clan) { - _clan = clan; + _skills = clan.getAllSkills(); } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - final Skill[] skills = _clan.getAllSkills(); - writeC(0xfe); - writeH(0x39); - writeD(skills.length); - for (Skill sk : skills) + OutgoingPackets.PLEDGE_SKILL_LIST.writeId(packet); + packet.writeD(_skills.length); + for (Skill sk : _skills) { - writeD(sk.getId()); - writeD(sk.getLevel()); + packet.writeD(sk.getId()); + packet.writeD(sk.getLevel()); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillListAdd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillListAdd.java index 3104dfc0b1..67d23eeddc 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillListAdd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeSkillListAdd.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch) dd * @author -Wooden- */ -public class PledgeSkillListAdd extends GameServerPacket +public class PledgeSkillListAdd implements IClientOutgoingPacket { private final int _id; private final int _level; @@ -32,12 +35,11 @@ public class PledgeSkillListAdd extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x3a); - - writeD(_id); - writeD(_level); + OutgoingPackets.PLEDGE_SKILL_LIST_ADD.writeId(packet); + packet.writeD(_id); + packet.writeD(_level); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeStatusChanged.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeStatusChanged.java index 65db28b0c5..8363693a4f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeStatusChanged.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PledgeStatusChanged.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.clan.Clan; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: cd b0 98 a0 48 1e 01 00 00 00 00 00 00 00 00 00 ....H........... 0010: 00 00 00 00 00 ..... format ddddd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PledgeStatusChanged extends GameServerPacket +public class PledgeStatusChanged implements IClientOutgoingPacket { private final Clan _clan; @@ -32,15 +34,16 @@ public class PledgeStatusChanged extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xcd); - writeD(_clan.getLeaderId()); - writeD(_clan.getClanId()); - writeD(0); - writeD(_clan.getLevel()); - writeD(0); - writeD(0); - writeD(0); + OutgoingPackets.PLEDGE_STATUS_CHANGED.writeId(packet); + packet.writeD(_clan.getLeaderId()); + packet.writeD(_clan.getClanId()); + packet.writeD(0); + packet.writeD(_clan.getLevel()); + packet.writeD(0); + packet.writeD(0); + packet.writeD(0); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListBuy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListBuy.java index c577f4e539..48c6135e3e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListBuy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListBuy.java @@ -17,14 +17,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.7.2.2.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class PrivateStoreListBuy extends GameServerPacket +public class PrivateStoreListBuy implements IClientOutgoingPacket { private final PlayerInstance _storePlayer; private final PlayerInstance _player; @@ -51,30 +53,31 @@ public class PrivateStoreListBuy extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb8); - writeD(_storePlayer.getObjectId()); - writeD(_playerAdena); + OutgoingPackets.PRIVATE_STORE_LIST_BUY.writeId(packet); + packet.writeD(_storePlayer.getObjectId()); + packet.writeD(_playerAdena); - writeD(_items.length); + packet.writeD(_items.length); for (TradeList.TradeItem item : _items) { - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeH(item.getEnchant()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeH(item.getEnchant()); // writeD(item.getCount()); //give max possible sell amount - writeD(item.getCurCount()); + packet.writeD(item.getCurCount()); - writeD(item.getItem().getReferencePrice()); - writeH(0); + packet.writeD(item.getItem().getReferencePrice()); + packet.writeH(0); - writeD(item.getItem().getBodyPart()); - writeH(item.getItem().getType2()); - writeD(item.getPrice()); // buyers price + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getItem().getType2()); + packet.writeD(item.getPrice()); // buyers price - writeD(item.getCount()); // maximum possible tradecount + packet.writeD(item.getCount()); // maximum possible tradecount } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListSell.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListSell.java index ba013aaa58..293b536b41 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListSell.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreListSell.java @@ -17,14 +17,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.3.2.6 $ $Date: 2005/03/27 15:29:57 $ */ -public class PrivateStoreListSell extends GameServerPacket +public class PrivateStoreListSell implements IClientOutgoingPacket { private final PlayerInstance _storePlayer; private final PlayerInstance _player; @@ -53,26 +55,27 @@ public class PrivateStoreListSell extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x9b); - writeD(_storePlayer.getObjectId()); - writeD(_packageSale ? 1 : 0); - writeD(_playerAdena); + OutgoingPackets.PRIVATE_STORE_LIST_SELL.writeId(packet); + packet.writeD(_storePlayer.getObjectId()); + packet.writeD(_packageSale ? 1 : 0); + packet.writeD(_playerAdena); - writeD(_items.length); + packet.writeD(_items.length); for (TradeList.TradeItem item : _items) { - writeD(item.getItem().getType2()); - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(item.getCount()); - writeH(0x00); - writeH(item.getEnchant()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeD(item.getPrice()); // your price - writeD(item.getItem().getReferencePrice()); // store price + packet.writeD(item.getItem().getType2()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(item.getCount()); + packet.writeH(0x00); + packet.writeH(item.getEnchant()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeD(item.getPrice()); // your price + packet.writeD(item.getItem().getReferencePrice()); // store price } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListBuy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListBuy.java index 3190b15760..fbc790529d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListBuy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListBuy.java @@ -17,14 +17,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:40 $ */ -public class PrivateStoreManageListBuy extends GameServerPacket +public class PrivateStoreManageListBuy implements IClientOutgoingPacket { private final PlayerInstance _player; private int _playerAdena; @@ -48,39 +50,40 @@ public class PrivateStoreManageListBuy extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb7); + OutgoingPackets.PRIVATE_STORE_MANAGE_LIST_BUY.writeId(packet); // section 1 - writeD(_player.getObjectId()); - writeD(_playerAdena); + packet.writeD(_player.getObjectId()); + packet.writeD(_playerAdena); // section2 - writeD(_itemList.length); // inventory items for potential buy + packet.writeD(_itemList.length); // inventory items for potential buy for (ItemInstance item : _itemList) { - writeD(item.getItemId()); - writeH(item.getEnchantLevel()); // show enchant level, but you can't buy enchanted weapons because of L2 Interlude Client bug - writeD(item.getCount()); - writeD(item.getReferencePrice()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeH(item.getItem().getType2()); + packet.writeD(item.getItemId()); + packet.writeH(item.getEnchantLevel()); // show enchant level, but you can't buy enchanted weapons because of L2 Interlude Client bug + packet.writeD(item.getCount()); + packet.writeD(item.getReferencePrice()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getItem().getType2()); } // section 3 - writeD(_buyList.length); // count for all items already added for buy + packet.writeD(_buyList.length); // count for all items already added for buy for (TradeList.TradeItem item : _buyList) { - writeD(item.getItem().getItemId()); - writeH(item.getEnchant()); - writeD(item.getCount()); - writeD(item.getItem().getReferencePrice()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeH(item.getItem().getType2()); - writeD(item.getPrice()); // your price - writeD(item.getItem().getReferencePrice()); // fixed store price + packet.writeD(item.getItem().getItemId()); + packet.writeH(item.getEnchant()); + packet.writeD(item.getCount()); + packet.writeD(item.getItem().getReferencePrice()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getItem().getType2()); + packet.writeD(item.getPrice()); // your price + packet.writeD(item.getItem().getReferencePrice()); // fixed store price } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListSell.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListSell.java index a75d468c82..3b1aafa480 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListSell.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreManageListSell.java @@ -17,8 +17,10 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList.TradeItem; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 3 section to this packet 1)playerinfo which is always sent dd 2)list of items which can be added to sell d(hhddddhhhd) 3)list of items which have already been setup for sell in previous sell private store sell manageent d(hhddddhhhdd) * @@ -28,7 +30,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; /* * In memory of our friend Vadim 03/11/2014 */ -public class PrivateStoreManageListSell extends GameServerPacket +public class PrivateStoreManageListSell implements IClientOutgoingPacket { private final PlayerInstance _player; private int _playerAdena; @@ -58,43 +60,44 @@ public class PrivateStoreManageListSell extends GameServerPacket * During store set no packets will be received from client just when store definition is finished. */ @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x9a); + OutgoingPackets.PRIVATE_STORE_MANAGE_LIST_SELL.writeId(packet); // section 1 - writeD(_player.getObjectId()); - writeD(_packageSale ? 1 : 0); // Package sell - writeD(_playerAdena); + packet.writeD(_player.getObjectId()); + packet.writeD(_packageSale ? 1 : 0); // Package sell + packet.writeD(_playerAdena); // section2 - writeD(_itemList.length); // for potential sells + packet.writeD(_itemList.length); // for potential sells for (TradeItem item : _itemList) { - writeD(item.getItem().getType2()); - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(item.getCount()); - writeH(0); - writeH(item.getEnchant()); // enchant level - writeH(0); - writeD(item.getItem().getBodyPart()); - writeD(item.getPrice()); // store price + packet.writeD(item.getItem().getType2()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(item.getCount()); + packet.writeH(0); + packet.writeH(item.getEnchant()); // enchant level + packet.writeH(0); + packet.writeD(item.getItem().getBodyPart()); + packet.writeD(item.getPrice()); // store price } // section 3 - writeD(_sellList.length); // count for any items already added for sell + packet.writeD(_sellList.length); // count for any items already added for sell for (TradeItem item : _sellList) { - writeD(item.getItem().getType2()); - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(item.getCount()); - writeH(0); - writeH(item.getEnchant()); // enchant level - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeD(item.getPrice()); // your price - writeD(item.getItem().getReferencePrice()); // store price + packet.writeD(item.getItem().getType2()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(item.getCount()); + packet.writeH(0); + packet.writeH(item.getEnchant()); // enchant level + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeD(item.getPrice()); // your price + packet.writeD(item.getItem().getReferencePrice()); // store price } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgBuy.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgBuy.java index b3e9618ad0..8361b1bbfe 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgBuy.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgBuy.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PrivateStoreMsgBuy extends GameServerPacket +public class PrivateStoreMsgBuy implements IClientOutgoingPacket { private final PlayerInstance _player; private String _storeMsg; @@ -36,10 +38,11 @@ public class PrivateStoreMsgBuy extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xb9); - writeD(_player.getObjectId()); - writeS(_storeMsg); + OutgoingPackets.PRIVATE_STORE_MSG_BUY.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeS(_storeMsg); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgSell.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgSell.java index 55adea55da..ed171d4bfe 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgSell.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/PrivateStoreMsgSell.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class PrivateStoreMsgSell extends GameServerPacket +public class PrivateStoreMsgSell implements IClientOutgoingPacket { private final PlayerInstance _player; private String _storeMsg; @@ -36,10 +38,11 @@ public class PrivateStoreMsgSell extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x9c); - writeD(_player.getObjectId()); - writeS(_storeMsg); + OutgoingPackets.PRIVATE_STORE_MSG_SELL.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeS(_storeMsg); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/QuestList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/QuestList.java index 27efc8246f..1c662efed9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/QuestList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/QuestList.java @@ -18,10 +18,12 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Collection; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class QuestList extends GameServerPacket +public class QuestList implements IClientOutgoingPacket { private final Collection _questStates; @@ -31,23 +33,24 @@ public class QuestList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x80); - writeH(_questStates.size()); + OutgoingPackets.QUEST_LIST.writeId(packet); + packet.writeH(_questStates.size()); for (QuestState qs : _questStates) { - writeD(qs.getQuest().getQuestId()); + packet.writeD(qs.getQuest().getQuestId()); final int states = qs.getInt("__compltdStateFlags"); if (states != 0) { - writeD(states); + packet.writeD(states); } else { - writeD(qs.getInt("cond")); + packet.writeD(qs.getInt("cond")); } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RadarControl.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RadarControl.java index 0512856b9d..199c005aea 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RadarControl.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RadarControl.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class RadarControl extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class RadarControl implements IClientOutgoingPacket { private final int _showRadar; private final int _type; @@ -42,13 +45,14 @@ public class RadarControl extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xEB); - writeD(_showRadar); - writeD(_type); // maybe type - writeD(_x); // x - writeD(_y); // y - writeD(_z); // z + OutgoingPackets.RADAR_CONTROL.writeId(packet); + packet.writeD(_showRadar); + packet.writeD(_type); // maybe type + packet.writeD(_x); // x + packet.writeD(_y); // y + packet.writeD(_z); // z + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeBookItemList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeBookItemList.java index a297c7524e..843a20d9a0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeBookItemList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeBookItemList.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.RecipeList; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format d d(dd) * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class RecipeBookItemList extends GameServerPacket +public class RecipeBookItemList implements IClientOutgoingPacket { private RecipeList[] _recipes; private final boolean _isDwarvenCraft; @@ -40,26 +42,27 @@ public class RecipeBookItemList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xD6); + OutgoingPackets.RECIPE_BOOK_ITEM_LIST.writeId(packet); - writeD(_isDwarvenCraft ? 0x00 : 0x01); // 0 = Dwarven - 1 = Common - writeD(_maxMp); + packet.writeD(_isDwarvenCraft ? 0x00 : 0x01); // 0 = Dwarven - 1 = Common + packet.writeD(_maxMp); if (_recipes == null) { - writeD(0); + packet.writeD(0); } else { - writeD(_recipes.length); // number of items in recipe book + packet.writeD(_recipes.length); // number of items in recipe book for (int i = 0; i < _recipes.length; i++) { - writeD(_recipes[i].getId()); - writeD(i + 1); + packet.writeD(_recipes[i].getId()); + packet.writeD(i + 1); } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java index f6fd5e05be..0b59b9af0a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeItemMakeInfo.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.xml.RecipeData; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format dddd */ -public class RecipeItemMakeInfo extends GameServerPacket +public class RecipeItemMakeInfo implements IClientOutgoingPacket { private final int _id; private final PlayerInstance _player; @@ -44,18 +46,19 @@ public class RecipeItemMakeInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final RecipeList recipe = RecipeData.getInstance().getRecipe(_id); if (recipe != null) { - writeC(0xD7); + OutgoingPackets.RECIPE_ITEM_MAKE_INFO.writeId(packet); - writeD(_id); - writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common - writeD((int) _player.getCurrentMp()); - writeD(_player.getMaxMp()); - writeD(_success ? 1 : 0); // item creation success/failed + packet.writeD(_id); + packet.writeD(recipe.isDwarvenRecipe() ? 0 : 1); // 0 = Dwarven - 1 = Common + packet.writeD((int) _player.getCurrentMp()); + packet.writeD(_player.getMaxMp()); + packet.writeD(_success ? 1 : 0); // item creation success/failed } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java index 834856755c..7a9b98a3b0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopItemInfo.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * ddddd */ -public class RecipeShopItemInfo extends GameServerPacket +public class RecipeShopItemInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _recipeId; @@ -33,13 +35,14 @@ public class RecipeShopItemInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xda); - writeD(_player.getObjectId()); - writeD(_recipeId); - writeD((int) _player.getCurrentMp()); - writeD(_player.getMaxMp()); - writeD(0xffffffff); + OutgoingPackets.RECIPE_SHOP_ITEM_INFO.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_recipeId); + packet.writeD((int) _player.getCurrentMp()); + packet.writeD(_player.getMaxMp()); + packet.writeD(0xffffffff); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopManageList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopManageList.java index 624a89cf57..e801a4db93 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopManageList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopManageList.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.ManufactureList; import org.l2jmobius.gameserver.model.RecipeList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * dd d(dd) d(ddd) */ -public class RecipeShopManageList extends GameServerPacket +public class RecipeShopManageList implements IClientOutgoingPacket { private final PlayerInstance _seller; private final boolean _isDwarven; @@ -58,43 +60,44 @@ public class RecipeShopManageList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xd8); - writeD(_seller.getObjectId()); - writeD(_seller.getAdena()); - writeD(_isDwarven ? 0x00 : 0x01); + OutgoingPackets.RECIPE_SHOP_MANAGE_LIST.writeId(packet); + packet.writeD(_seller.getObjectId()); + packet.writeD(_seller.getAdena()); + packet.writeD(_isDwarven ? 0x00 : 0x01); if (_recipes == null) { - writeD(0); + packet.writeD(0); } else { - writeD(_recipes.length); // number of items in recipe book + packet.writeD(_recipes.length); // number of items in recipe book for (int i = 0; i < _recipes.length; i++) { - writeD(_recipes[i].getId()); - writeD(i + 1); + packet.writeD(_recipes[i].getId()); + packet.writeD(i + 1); } } if (_seller.getCreateList() == null) { - writeD(0); + packet.writeD(0); } else { final ManufactureList list = _seller.getCreateList(); - writeD(list.size()); + packet.writeD(list.size()); for (ManufactureItem item : list.getList()) { - writeD(item.getRecipeId()); - writeD(0x00); - writeD(item.getCost()); + packet.writeD(item.getRecipeId()); + packet.writeD(0x00); + packet.writeD(item.getCost()); } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopMsg.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopMsg.java index 2a5d3fba9f..7057535e42 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopMsg.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopMsg.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class RecipeShopMsg extends GameServerPacket +public class RecipeShopMsg implements IClientOutgoingPacket { private final PlayerInstance _player; @@ -28,10 +30,11 @@ public class RecipeShopMsg extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xdb); - writeD(_player.getObjectId()); - writeS(_player.getCreateList().getStoreName()); + OutgoingPackets.RECIPE_SHOP_MSG.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getCreateList().getStoreName()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java index bbb848dcb9..dec04bd8c3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RecipeShopSellList.java @@ -16,11 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ManufactureItem; import org.l2jmobius.gameserver.model.ManufactureList; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class RecipeShopSellList extends GameServerPacket +public class RecipeShopSellList implements IClientOutgoingPacket { private final PlayerInstance _buyer; private final PlayerInstance _player; @@ -32,24 +34,25 @@ public class RecipeShopSellList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final ManufactureList createList = _player.getCreateList(); if (createList != null) { - writeC(0xd9); - writeD(_player.getObjectId()); - writeD((int) _player.getCurrentMp()); // Creator's MP - writeD(_player.getMaxMp()); // Creator's MP - writeD(_buyer.getAdena()); // Buyer Adena - writeD(createList.size()); + OutgoingPackets.RECIPE_SHOP_SELL_LIST.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD((int) _player.getCurrentMp()); // Creator's MP + packet.writeD(_player.getMaxMp()); // Creator's MP + packet.writeD(_buyer.getAdena()); // Buyer Adena + packet.writeD(createList.size()); for (ManufactureItem item : createList.getList()) { - writeD(item.getRecipeId()); - writeD(0x00); // unknown - writeD(item.getCost()); + packet.writeD(item.getRecipeId()); + packet.writeD(0x00); // unknown + packet.writeD(item.getCost()); } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RelationChanged.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RelationChanged.java index 405f106dbd..a744be6a28 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RelationChanged.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RelationChanged.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Playable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Luca Baldi */ -public class RelationChanged extends GameServerPacket +public class RelationChanged implements IClientOutgoingPacket { public static final int RELATION_PVP_FLAG = 0x00002; // pvp ??? public static final int RELATION_HAS_KARMA = 0x00004; // karma ??? @@ -59,13 +61,14 @@ public class RelationChanged extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xce); - writeD(_objId); - writeD(_relation); - writeD(_autoAttackable); - writeD(_karma); - writeD(_pvpFlag); + OutgoingPackets.RELATION_CHANGED.writeId(packet); + packet.writeD(_objId); + packet.writeD(_relation); + packet.writeD(_autoAttackable); + packet.writeD(_karma); + packet.writeD(_pvpFlag); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RestartResponse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RestartResponse.java index 52fba6d0e5..755950cdc0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RestartResponse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/RestartResponse.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class RestartResponse extends GameServerPacket +public class RestartResponse implements IClientOutgoingPacket { private static final RestartResponse STATIC_PACKET_TRUE = new RestartResponse(true); private static final RestartResponse STATIC_PACKET_FALSE = new RestartResponse(false); @@ -38,10 +41,11 @@ public class RestartResponse extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5f); - writeD(_result ? 1 : 0); - writeS(_message); + OutgoingPackets.RESTART_RESPONSE.writeId(packet); + packet.writeD(_result ? 1 : 0); + packet.writeS(_message); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Revive.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Revive.java index f7ad1ae2c4..a0487f1cde 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Revive.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Revive.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 0000: 0c 9b da 12 40 ....@ format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:40 $ */ -public class Revive extends GameServerPacket +public class Revive implements IClientOutgoingPacket { private final int _objectId; @@ -32,9 +34,10 @@ public class Revive extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x07); - writeD(_objectId); + OutgoingPackets.REVIVE.writeId(packet); + packet.writeD(_objectId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Ride.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Ride.java index 2e0728d87d..5004a5a2f3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Ride.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Ride.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class Ride extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class Ride implements IClientOutgoingPacket { public static final int ACTION_MOUNT = 1; public static final int ACTION_DISMOUNT = 0; @@ -42,23 +45,19 @@ public class Ride extends GameServerPacket } } - @Override - public void runImpl() - { - } - public int getMountType() { return _rideType; } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x86); - writeD(_id); - writeD(_bRide); - writeD(_rideType); - writeD(_rideClassID); + OutgoingPackets.RIDE.writeId(packet); + packet.writeD(_id); + packet.writeD(_bRide); + packet.writeD(_rideType); + packet.writeD(_rideClassID); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java index 2f650bd463..9f794c1d1f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java @@ -16,17 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; import org.l2jmobius.gameserver.model.sevensigns.SevenSignsFestival; +import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.SystemMessageId; /** * Seven Signs Record Update packet type id 0xf5 format: c cc (Page Num = 1 -> 4, period) 1: [ddd cc dd ddd c ddd c] 2: [hc [cd (dc (S))] 3: [ccc (cccc)] 4: [(cchh)] * @author Tempy */ -public class SSQStatus extends GameServerPacket +public class SSQStatus implements IClientOutgoingPacket { private final PlayerInstance _activevChar; private final int _page; @@ -38,15 +40,15 @@ public class SSQStatus extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { final int winningCabal = SevenSigns.getInstance().getCabalHighestScore(); final int totalDawnMembers = SevenSigns.getInstance().getTotalMembers(SevenSigns.CABAL_DAWN); final int totalDuskMembers = SevenSigns.getInstance().getTotalMembers(SevenSigns.CABAL_DUSK); - writeC(0xf5); + OutgoingPackets.SSQ_STATUS.writeId(packet); - writeC(_page); - writeC(SevenSigns.getInstance().getCurrentPeriod()); // current period? + packet.writeC(_page); + packet.writeC(SevenSigns.getInstance().getCurrentPeriod()); // current period? int dawnPercent = 0; int duskPercent = 0; @@ -56,28 +58,28 @@ public class SSQStatus extends GameServerPacket case 1: { // [ddd cc dd ddd c ddd c] - writeD(SevenSigns.getInstance().getCurrentCycle()); + packet.writeD(SevenSigns.getInstance().getCurrentCycle()); final int currentPeriod = SevenSigns.getInstance().getCurrentPeriod(); switch (currentPeriod) { case SevenSigns.PERIOD_COMP_RECRUITING: { - writeD(SystemMessageId.THIS_IS_THE_INITIAL_PERIOD.getId()); + packet.writeD(SystemMessageId.THIS_IS_THE_INITIAL_PERIOD.getId()); break; } case SevenSigns.PERIOD_COMPETITION: { - writeD(SystemMessageId.THIS_IS_A_QUEST_EVENT_PERIOD.getId()); + packet.writeD(SystemMessageId.THIS_IS_A_QUEST_EVENT_PERIOD.getId()); break; } case SevenSigns.PERIOD_COMP_RESULTS: { - writeD(SystemMessageId.THIS_IS_A_PERIOD_OF_CALCULATING_STATISTICS_IN_THE_SERVER.getId()); + packet.writeD(SystemMessageId.THIS_IS_A_PERIOD_OF_CALCULATING_STATISTICS_IN_THE_SERVER.getId()); break; } case SevenSigns.PERIOD_SEAL_VALIDATION: { - writeD(SystemMessageId.THIS_IS_THE_SEAL_VALIDATION_PERIOD.getId()); + packet.writeD(SystemMessageId.THIS_IS_THE_SEAL_VALIDATION_PERIOD.getId()); break; } } @@ -87,22 +89,22 @@ public class SSQStatus extends GameServerPacket case SevenSigns.PERIOD_COMP_RECRUITING: case SevenSigns.PERIOD_COMP_RESULTS: { - writeD(SystemMessageId.UNTIL_TODAY_AT_6_00_P_M.getId()); + packet.writeD(SystemMessageId.UNTIL_TODAY_AT_6_00_P_M.getId()); break; } case SevenSigns.PERIOD_COMPETITION: case SevenSigns.PERIOD_SEAL_VALIDATION: { - writeD(SystemMessageId.UNTIL_NEXT_MONDAY_AT_6_00_P_M.getId()); + packet.writeD(SystemMessageId.UNTIL_NEXT_MONDAY_AT_6_00_P_M.getId()); break; } } - writeC(SevenSigns.getInstance().getPlayerCabal(_activevChar)); - writeC(SevenSigns.getInstance().getPlayerSeal(_activevChar)); + packet.writeC(SevenSigns.getInstance().getPlayerCabal(_activevChar)); + packet.writeC(SevenSigns.getInstance().getPlayerSeal(_activevChar)); - writeD(SevenSigns.getInstance().getPlayerStoneContrib(_activevChar)); // Seal Stones Turned-In - writeD(SevenSigns.getInstance().getPlayerAdenaCollect(_activevChar)); // Ancient Adena to Collect + packet.writeD(SevenSigns.getInstance().getPlayerStoneContrib(_activevChar)); // Seal Stones Turned-In + packet.writeD(SevenSigns.getInstance().getPlayerAdenaCollect(_activevChar)); // Ancient Adena to Collect final double dawnStoneScore = SevenSigns.getInstance().getCurrentStoneScore(SevenSigns.CABAL_DAWN); final int dawnFestivalScore = SevenSigns.getInstance().getCurrentFestivalScore(SevenSigns.CABAL_DAWN); @@ -131,62 +133,62 @@ public class SSQStatus extends GameServerPacket } /* DUSK */ - writeD(duskStoneScoreProp); // Seal Stone Score - writeD(duskFestivalScore); // Festival Score - writeD(duskTotalScore); // Total Score + packet.writeD(duskStoneScoreProp); // Seal Stone Score + packet.writeD(duskFestivalScore); // Festival Score + packet.writeD(duskTotalScore); // Total Score - writeC(duskPercent); // Dusk % + packet.writeC(duskPercent); // Dusk % /* DAWN */ - writeD(dawnStoneScoreProp); // Seal Stone Score - writeD(dawnFestivalScore); // Festival Score - writeD(dawnTotalScore); // Total Score + packet.writeD(dawnStoneScoreProp); // Seal Stone Score + packet.writeD(dawnFestivalScore); // Festival Score + packet.writeD(dawnTotalScore); // Total Score - writeC(dawnPercent); // Dawn % + packet.writeC(dawnPercent); // Dawn % break; } case 2: { // c cc hc [cd (dc (S))] - writeH(1); - writeC(5); // Total number of festivals + packet.writeH(1); + packet.writeC(5); // Total number of festivals for (int i = 0; i < 5; i++) { - writeC(i + 1); // Current client-side festival ID - writeD(SevenSignsFestival.FESTIVAL_LEVEL_SCORES[i]); + packet.writeC(i + 1); // Current client-side festival ID + packet.writeD(SevenSignsFestival.FESTIVAL_LEVEL_SCORES[i]); final int duskScore = SevenSignsFestival.getInstance().getHighestScore(SevenSigns.CABAL_DUSK, i); final int dawnScore = SevenSignsFestival.getInstance().getHighestScore(SevenSigns.CABAL_DAWN, i); // Dusk Score \\ - writeD(duskScore); + packet.writeD(duskScore); StatSet highScoreData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DUSK, i); String[] partyMembers = highScoreData.getString("members").split(","); if (partyMembers != null) { - writeC(partyMembers.length); + packet.writeC(partyMembers.length); for (String partyMember : partyMembers) { - writeS(partyMember); + packet.writeS(partyMember); } } else { - writeC(0); + packet.writeC(0); } // Dawn Score \\ - writeD(dawnScore); + packet.writeD(dawnScore); highScoreData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DAWN, i); partyMembers = highScoreData.getString("members").split(","); if (partyMembers != null) { - writeC(partyMembers.length); + packet.writeC(partyMembers.length); for (String partyMember : partyMembers) { - writeS(partyMember); + packet.writeS(partyMember); } } else { - writeC(0); + packet.writeC(0); } } break; @@ -194,37 +196,37 @@ public class SSQStatus extends GameServerPacket case 3: { // c cc [ccc (cccc)] - writeC(10); // Minimum limit for winning cabal to retain their seal - writeC(35); // Minimum limit for winning cabal to claim a seal - writeC(3); // Total number of seals + packet.writeC(10); // Minimum limit for winning cabal to retain their seal + packet.writeC(35); // Minimum limit for winning cabal to claim a seal + packet.writeC(3); // Total number of seals for (int i = 1; i < 4; i++) { final int dawnProportion = SevenSigns.getInstance().getSealProportion(i, SevenSigns.CABAL_DAWN); final int duskProportion = SevenSigns.getInstance().getSealProportion(i, SevenSigns.CABAL_DUSK); - writeC(i); - writeC(SevenSigns.getInstance().getSealOwner(i)); + packet.writeC(i); + packet.writeC(SevenSigns.getInstance().getSealOwner(i)); if (totalDuskMembers == 0) { if (totalDawnMembers == 0) { - writeC(0); - writeC(0); + packet.writeC(0); + packet.writeC(0); } else { - writeC(0); - writeC(Math.round(((float) dawnProportion / totalDawnMembers) * 100)); + packet.writeC(0); + packet.writeC(Math.round(((float) dawnProportion / totalDawnMembers) * 100)); } } else if (totalDawnMembers == 0) { - writeC(Math.round(((float) duskProportion / totalDuskMembers) * 100)); - writeC(0); + packet.writeC(Math.round(((float) duskProportion / totalDuskMembers) * 100)); + packet.writeC(0); } else { - writeC(Math.round(((float) duskProportion / totalDuskMembers) * 100)); - writeC(Math.round(((float) dawnProportion / totalDawnMembers) * 100)); + packet.writeC(Math.round(((float) duskProportion / totalDuskMembers) * 100)); + packet.writeC(Math.round(((float) dawnProportion / totalDawnMembers) * 100)); } } break; @@ -232,8 +234,8 @@ public class SSQStatus extends GameServerPacket case 4: { // c cc [cc (cchh)] - writeC(winningCabal); // Overall predicted winner - writeC(3); // Total number of seals + packet.writeC(winningCabal); // Overall predicted winner + packet.writeC(3); // Total number of seals for (int i = 1; i < 4; i++) { final int dawnProportion = SevenSigns.getInstance().getSealProportion(i, SevenSigns.CABAL_DAWN); @@ -241,7 +243,7 @@ public class SSQStatus extends GameServerPacket dawnPercent = Math.round((dawnProportion / (totalDawnMembers == 0 ? 1 : (float) totalDawnMembers)) * 100); duskPercent = Math.round((duskProportion / (totalDuskMembers == 0 ? 1 : (float) totalDuskMembers)) * 100); final int sealOwner = SevenSigns.getInstance().getSealOwner(i); - writeC(i); + packet.writeC(i); switch (sealOwner) { case SevenSigns.CABAL_NULL: @@ -250,21 +252,21 @@ public class SSQStatus extends GameServerPacket { case SevenSigns.CABAL_NULL: { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); break; } case SevenSigns.CABAL_DAWN: { if (dawnPercent >= 35) { - writeC(SevenSigns.CABAL_DAWN); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DAWN); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_NOT_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_SINCE_LESS_THAN_35_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_NOT_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_SINCE_LESS_THAN_35_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -272,13 +274,13 @@ public class SSQStatus extends GameServerPacket { if (duskPercent >= 35) { - writeC(SevenSigns.CABAL_DUSK); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DUSK); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_NOT_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_SINCE_LESS_THAN_35_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_NOT_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_SINCE_LESS_THAN_35_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -293,25 +295,25 @@ public class SSQStatus extends GameServerPacket { if (dawnPercent >= 10) { - writeC(SevenSigns.CABAL_DAWN); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DAWN); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); break; } - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); break; } case SevenSigns.CABAL_DAWN: { if (dawnPercent >= 10) { - writeC(sealOwner); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(sealOwner); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -319,18 +321,18 @@ public class SSQStatus extends GameServerPacket { if (duskPercent >= 35) { - writeC(SevenSigns.CABAL_DUSK); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DUSK); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else if (dawnPercent >= 10) { - writeC(SevenSigns.CABAL_DAWN); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DAWN); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -345,30 +347,30 @@ public class SSQStatus extends GameServerPacket { if (duskPercent >= 10) { - writeC(SevenSigns.CABAL_DUSK); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DUSK); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); break; } - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.THE_COMPETITION_HAS_ENDED_IN_A_TIE_THEREFORE_NOBODY_HAS_BEEN_AWARDED_THE_SEAL.getId()); break; } case SevenSigns.CABAL_DAWN: { if (dawnPercent >= 35) { - writeC(SevenSigns.CABAL_DAWN); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_DAWN); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_NOT_OWNED_SINCE_35_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else if (duskPercent >= 10) { - writeC(sealOwner); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(sealOwner); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -376,13 +378,13 @@ public class SSQStatus extends GameServerPacket { if (duskPercent >= 10) { - writeC(sealOwner); - writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(sealOwner); + packet.writeH(SystemMessageId.SINCE_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_AND_10_PERCENT_OR_MORE_PEOPLE_HAVE_VOTED.getId()); } else { - writeC(SevenSigns.CABAL_NULL); - writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); + packet.writeC(SevenSigns.CABAL_NULL); + packet.writeH(SystemMessageId.ALTHOUGH_THE_SEAL_WAS_OWNED_DURING_THE_PREVIOUS_PERIOD_BECAUSE_LESS_THAN_10_PERCENT_OF_PEOPLE_HAVE_VOTED.getId()); } break; } @@ -390,10 +392,11 @@ public class SSQStatus extends GameServerPacket break; } } - writeH(0); + packet.writeH(0); } break; } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SellList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SellList.java index 396ff14f37..f2d63bdd80 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SellList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SellList.java @@ -20,13 +20,15 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.3.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class SellList extends GameServerPacket +public class SellList implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _money; @@ -50,27 +52,28 @@ public class SellList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x10); - writeD(_money); - writeD(0x00); + OutgoingPackets.SELL_LIST.writeId(packet); + packet.writeD(_money); + packet.writeD(0x00); - writeH(_selllist.size()); + packet.writeH(_selllist.size()); for (ItemInstance item : _selllist) { - writeH(item.getItem().getType1()); - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); - writeH(0x00); - writeD(item.getItem().getBodyPart()); - writeH(item.getEnchantLevel()); - writeH(0x00); - writeH(0x00); - writeD(Config.MERCHANT_ZERO_SELL_PRICE ? 0 : item.getItem().getReferencePrice() / 2); + packet.writeH(item.getItem().getType1()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); + packet.writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); + packet.writeH(item.getEnchantLevel()); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeD(Config.MERCHANT_ZERO_SELL_PRICE ? 0 : item.getItem().getReferencePrice() / 2); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SellListProcure.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SellListProcure.java index 620ee35bfe..bad65a4721 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SellListProcure.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SellListProcure.java @@ -22,12 +22,14 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class SellListProcure extends GameServerPacket +public class SellListProcure implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _money; @@ -52,23 +54,24 @@ public class SellListProcure extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xE9); - writeD(_money); // money - writeD(0x00); // lease ? - writeH(_sellList.size()); // list size + OutgoingPackets.SELL_LIST_PROCURE.writeId(packet); + packet.writeD(_money); // money + packet.writeD(0x00); // lease ? + packet.writeH(_sellList.size()); // list size for (Entry entry : _sellList.entrySet()) { final ItemInstance item = entry.getKey(); - writeH(item.getItem().getType1()); - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(entry.getValue()); // count - writeH(item.getItem().getType2()); - writeH(0); // unknown - writeD(0); // price, u shouldnt get any adena for crops, only raw materials + packet.writeH(item.getItem().getType1()); + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(entry.getValue()); // count + packet.writeH(item.getItem().getType2()); + packet.writeH(0); // unknown + packet.writeD(0); // price, u shouldnt get any adena for crops, only raw materials } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendMacroList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendMacroList.java index 782b94aa3f..42d04e3f28 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendMacroList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendMacroList.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Macro; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * packet type id 0xe7 sample e7 d // unknown change of Macro edit,add,delete c // unknown c //count of Macros c // unknown d // id S // macro name S // desc S // acronym c // icon c // count c // entry c // type d // skill id c // shortcut id S // command name format: cdhcdSSScc (ccdcS) */ -public class SendMacroList extends GameServerPacket +public class SendMacroList implements IClientOutgoingPacket { private final int _rev; private final int _count; @@ -35,58 +37,59 @@ public class SendMacroList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xE7); + OutgoingPackets.SEND_MACRO_LIST.writeId(packet); - writeD(_rev); // macro change revision (changes after each macro edition) - writeC(0); // unknown - writeC(_count); // count of Macros - writeC(_macro != null ? 1 : 0); // unknown + packet.writeD(_rev); // macro change revision (changes after each macro edition) + packet.writeC(0); // unknown + packet.writeC(_count); // count of Macros + packet.writeC(_macro != null ? 1 : 0); // unknown if (_macro != null) { - writeD(_macro.id); // Macro ID - writeS(_macro.name); // Macro Name - writeS(_macro.descr); // Desc - writeS(_macro.acronym); // acronym - writeC(_macro.icon); // icon + packet.writeD(_macro.id); // Macro ID + packet.writeS(_macro.name); // Macro Name + packet.writeS(_macro.descr); // Desc + packet.writeS(_macro.acronym); // acronym + packet.writeC(_macro.icon); // icon - writeC(_macro.commands.length); // count + packet.writeC(_macro.commands.length); // count for (int i = 0; i < _macro.commands.length; i++) { final Macro.MacroCmd cmd = _macro.commands[i]; - writeC(i + 1); // i of count - writeC(cmd.type); // type 1 = skill, 3 = action, 4 = shortcut - writeD(cmd.d1); // skill id - writeC(cmd.d2); // shortcut id - writeS(cmd.cmd); // command name + packet.writeC(i + 1); // i of count + packet.writeC(cmd.type); // type 1 = skill, 3 = action, 4 = shortcut + packet.writeD(cmd.d1); // skill id + packet.writeC(cmd.d2); // shortcut id + packet.writeS(cmd.cmd); // command name } } // writeD(1); //unknown change of Macro edit,add,delete - // writeC(0); //unknown - // writeC(1); //count of Macros - // writeC(1); //unknown + // packet.writeC(0); //unknown + // packet.writeC(1); //count of Macros + // packet.writeC(1); //unknown // // writeD(1430); //Macro ID // writeS("Admin"); //Macro Name // writeS("Admin Command"); //Desc // writeS("ADM"); //acronym - // writeC(0); //icon - // writeC(2); //count + // packet.writeC(0); //icon + // packet.writeC(2); //count // - // writeC(1); //i of count - // writeC(3); //type 1 = skill, 3 = action, 4 = shortcut + // packet.writeC(1); //i of count + // packet.writeC(3); //type 1 = skill, 3 = action, 4 = shortcut // writeD(0); // skill id - // writeC(0); // shortcut id + // packet.writeC(0); // shortcut id // writeS("/loc"); // command name // - // writeC(2); //i of count - // writeC(3); //type 1 = skill, 3 = action, 4 = shortcut + // packet.writeC(2); //i of count + // packet.writeC(3); //type 1 = skill, 3 = action, 4 = shortcut // writeD(0); // skill id - // writeC(0); // shortcut id + // packet.writeC(0); // shortcut id // writeS("//admin"); // command name + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeDone.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeDone.java index f6db039d42..31f922d34e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeDone.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeDone.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class SendTradeDone extends GameServerPacket +public class SendTradeDone implements IClientOutgoingPacket { private final int _num; @@ -29,9 +32,10 @@ public class SendTradeDone extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x22); - writeD(_num); + OutgoingPackets.SEND_TRADE_DONE.writeId(packet); + packet.writeD(_num); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeRequest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeRequest.java index 981de69197..b889148eae 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeRequest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SendTradeRequest.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:40 $ */ -public class SendTradeRequest extends GameServerPacket +public class SendTradeRequest implements IClientOutgoingPacket { private final int _senderID; @@ -29,9 +32,10 @@ public class SendTradeRequest extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5e); - writeD(_senderID); + OutgoingPackets.SEND_TRADE_REQUEST.writeId(packet); + packet.writeD(_senderID); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ServerClose.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ServerClose.java index 2e75c7574e..e914eb0da5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ServerClose.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ServerClose.java @@ -16,19 +16,20 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author devScarlet & mrTJO */ -public class ServerClose extends GameServerPacket +public class ServerClose implements IClientOutgoingPacket { public static final ServerClose STATIC_PACKET = new ServerClose(); - /** - * @see org.l2jmobius.gameserver.network.serverpackets.GameServerPacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x26); + OutgoingPackets.SERVER_CLOSE.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetSummonRemainTime.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetSummonRemainTime.java index 68d23e105a..db12dfc8ae 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetSummonRemainTime.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetSummonRemainTime.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * format (c) dd * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:40 $ */ -public class SetSummonRemainTime extends GameServerPacket +public class SetSummonRemainTime implements IClientOutgoingPacket { private final int _maxTime; private final int _remainingTime; @@ -32,10 +35,11 @@ public class SetSummonRemainTime extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xd1); - writeD(_maxTime); - writeD(_remainingTime); + OutgoingPackets.SET_SUMMON_REMAIN_TIME.writeId(packet); + packet.writeD(_maxTime); + packet.writeD(_remainingTime); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetToLocation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetToLocation.java deleted file mode 100644 index 5edd8683a5..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetToLocation.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets; - -import org.l2jmobius.gameserver.model.actor.Creature; - -/** - * 0000: 76 7a 07 80 49 ea 01 00 00 c1 37 fe uz..Ic'.J.....7. - *

    - * 0010: ff 9e c3 03 00 8f f3 ff ff ......... - *

    - *

    - * format dddddd (player id, target id, distance, startx, starty, startz) - *

    - * @version $Revision: 1.3.4.3 $ $Date: 2005/03/27 15:29:57 $ - */ -public class SetToLocation extends GameServerPacket -{ - private final int _objectId; - private final int _x; - private final int _y; - private final int _z; - private final int _heading; - - public SetToLocation(Creature creature) - { - _objectId = creature.getObjectId(); - _x = creature.getX(); - _y = creature.getY(); - _z = creature.getZ(); - _heading = creature.getHeading(); - } - - @Override - protected final void writeImpl() - { - writeC(0x76); - - writeD(_objectId); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetupGauge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetupGauge.java index 9af3f92fd6..b252d90ded 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetupGauge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SetupGauge.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample 0000: 85 00 00 00 00 f0 1a 00 00 * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class SetupGauge extends GameServerPacket +public class SetupGauge implements IClientOutgoingPacket { public static final int BLUE = 0; public static final int RED = 1; @@ -36,12 +39,12 @@ public class SetupGauge extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x6d); - writeD(_dat1); - writeD(_time); - - writeD(_time); // c2 + OutgoingPackets.SETUP_GAUGE.writeId(packet); + packet.writeD(_dat1); + packet.writeD(_time); + packet.writeD(_time); // c2 + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortBuffStatusUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortBuffStatusUpdate.java index 39e89e9129..bc7fc1f221 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortBuffStatusUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortBuffStatusUpdate.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class ShortBuffStatusUpdate extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class ShortBuffStatusUpdate implements IClientOutgoingPacket { private final int _skillId; private final int _skillLevel; @@ -30,11 +33,12 @@ public class ShortBuffStatusUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xF4); - writeD(_skillId); - writeD(_skillLevel); - writeD(_duration); + OutgoingPackets.SHORT_BUFF_STATUS_UPDATE.writeId(packet); + packet.writeD(_skillId); + packet.writeD(_skillLevel); + packet.writeD(_duration); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutInit.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutInit.java index 3e2c77d79d..c5618a3c35 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutInit.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutInit.java @@ -16,14 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ShortCut; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * ShortCutInit format d *(1dddd)/(2ddddd)/(3dddd) * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShortCutInit extends GameServerPacket +public class ShortCutInit implements IClientOutgoingPacket { private ShortCut[] _shortCuts; private PlayerInstance _player; @@ -40,61 +42,62 @@ public class ShortCutInit extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x45); - writeD(_shortCuts.length); + OutgoingPackets.SHORT_CUT_INIT.writeId(packet); + packet.writeD(_shortCuts.length); for (ShortCut sc : _shortCuts) { - writeD(sc.getType()); - writeD(sc.getSlot() + (sc.getPage() * 12)); + packet.writeD(sc.getType()); + packet.writeD(sc.getSlot() + (sc.getPage() * 12)); switch (sc.getType()) { case ShortCut.TYPE_ITEM: // 1 { - writeD(sc.getId()); - writeD(0x01); - writeD(-1); - writeD(0x00); - writeD(0x00); - writeH(0x00); - writeH(0x00); + packet.writeD(sc.getId()); + packet.writeD(0x01); + packet.writeD(-1); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeH(0x00); + packet.writeH(0x00); break; } case ShortCut.TYPE_SKILL: // 2 { - writeD(sc.getId()); - writeD(sc.getLevel()); - writeC(0x00); // C5 - writeD(0x01); // C6 + packet.writeD(sc.getId()); + packet.writeD(sc.getLevel()); + packet.writeC(0x00); // C5 + packet.writeD(0x01); // C6 break; } case ShortCut.TYPE_ACTION: // 3 { - writeD(sc.getId()); - writeD(0x01); // C6 + packet.writeD(sc.getId()); + packet.writeD(0x01); // C6 break; } case ShortCut.TYPE_MACRO: // 4 { - writeD(sc.getId()); - writeD(0x01); // C6 + packet.writeD(sc.getId()); + packet.writeD(0x01); // C6 break; } case ShortCut.TYPE_RECIPE: // 5 { - writeD(sc.getId()); - writeD(0x01); // C6 + packet.writeD(sc.getId()); + packet.writeD(0x01); // C6 break; } default: { - writeD(sc.getId()); - writeD(0x01); // C6 + packet.writeD(sc.getId()); + packet.writeD(0x01); // C6 } } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutRegister.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutRegister.java index a2d87a8689..1a5d161862 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutRegister.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShortCutRegister.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.ShortCut; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample 56 01000000 04000000 dd9fb640 01000000 56 02000000 07000000 38000000 03000000 01000000 56 03000000 00000000 02000000 01000000 format dd d/dd/d d * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShortCutRegister extends GameServerPacket +public class ShortCutRegister implements IClientOutgoingPacket { private final ShortCut _shortcut; @@ -36,47 +38,48 @@ public class ShortCutRegister extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x44); + OutgoingPackets.SHORT_CUT_REGISTER.writeId(packet); - writeD(_shortcut.getType()); - writeD(_shortcut.getSlot() + (_shortcut.getPage() * 12)); // C4 Client + packet.writeD(_shortcut.getType()); + packet.writeD(_shortcut.getSlot() + (_shortcut.getPage() * 12)); // C4 Client switch (_shortcut.getType()) { case ShortCut.TYPE_ITEM: // 1 { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); break; } case ShortCut.TYPE_SKILL: // 2 { - writeD(_shortcut.getId()); - writeD(_shortcut.getLevel()); - writeC(0x00); // C5 + packet.writeD(_shortcut.getId()); + packet.writeD(_shortcut.getLevel()); + packet.writeC(0x00); // C5 break; } case ShortCut.TYPE_ACTION: // 3 { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); break; } case ShortCut.TYPE_MACRO: // 4 { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); break; } case ShortCut.TYPE_RECIPE: // 5 { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); break; } default: { - writeD(_shortcut.getId()); + packet.writeD(_shortcut.getId()); } } - writeD(1); // ?? + packet.writeD(1); // ?? + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowBoard.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowBoard.java index 3791ae5ff0..b130e5a297 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowBoard.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowBoard.java @@ -18,9 +18,11 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.util.StringUtil; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class ShowBoard extends GameServerPacket +public class ShowBoard implements IClientOutgoingPacket { public static final ShowBoard STATIC_SHOWBOARD_102 = new ShowBoard(null, "102"); public static final ShowBoard STATIC_SHOWBOARD_103 = new ShowBoard(null, "103"); @@ -51,18 +53,19 @@ public class ShowBoard extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x6e); - writeC(0x01); // 1 to show, 0 to hide - writeS(TOP); - writeS(FAV); - writeS(REGION); - writeS(CLAN); - writeS(MEMO); - writeS(MAIL); - writeS(FRIENDS); - writeS(ADDFAV); - writeS(_htmlCode.toString()); + OutgoingPackets.SHOW_BOARD.writeId(packet); + packet.writeC(0x01); // 1 to show, 0 to hide + packet.writeS(TOP); + packet.writeS(FAV); + packet.writeS(REGION); + packet.writeS(CLAN); + packet.writeS(MEMO); + packet.writeS(MAIL); + packet.writeS(FRIENDS); + packet.writeS(ADDFAV); + packet.writeS(_htmlCode.toString()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowCalculator.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowCalculator.java index a7cedeeea2..b93ad1825a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowCalculator.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowCalculator.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShowCalculator extends GameServerPacket +public class ShowCalculator implements IClientOutgoingPacket { private final int _calculatorId; @@ -33,9 +36,10 @@ public class ShowCalculator extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xdc); - writeD(_calculatorId); + OutgoingPackets.SHOW_CALCULATOR.writeId(packet); + packet.writeD(_calculatorId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowMiniMap.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowMiniMap.java index 533763b2fe..9abed31a61 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowMiniMap.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowMiniMap.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * sample format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShowMiniMap extends GameServerPacket +public class ShowMiniMap implements IClientOutgoingPacket { private final int _mapId; @@ -35,10 +37,11 @@ public class ShowMiniMap extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x9d); - writeD(_mapId); - writeD(SevenSigns.getInstance().getCurrentPeriod()); + OutgoingPackets.SHOW_MINI_MAP.writeId(packet); + packet.writeD(_mapId); + packet.writeD(SevenSigns.getInstance().getCurrentPeriod()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowPCCafeCouponShowUI.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowPCCafeCouponShowUI.java index 75b7bcb5d4..5b4e7eab78 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowPCCafeCouponShowUI.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowPCCafeCouponShowUI.java @@ -16,16 +16,19 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * Format: (ch) * @author -Wooden- */ -public class ShowPCCafeCouponShowUI extends GameServerPacket +public class ShowPCCafeCouponShowUI implements IClientOutgoingPacket { @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xfe); - writeH(0x43); + OutgoingPackets.SHOW_PC_CAFE_COUPON_SHOW_UI.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowTownMap.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowTownMap.java index af8b9eadc6..0d6c3178c9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowTownMap.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowTownMap.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample format d * @version $Revision: 1.1.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class ShowTownMap extends GameServerPacket +public class ShowTownMap implements IClientOutgoingPacket { private final String _texture; private final int _x; @@ -39,11 +42,12 @@ public class ShowTownMap extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xde); - writeS(_texture); - writeD(_x); - writeD(_y); + OutgoingPackets.SHOW_TOWN_MAP.writeId(packet); + packet.writeS(_texture); + packet.writeD(_x); + packet.writeD(_y); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowXMasSeal.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowXMasSeal.java index f40ffaddc5..49e00c6988 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowXMasSeal.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ShowXMasSeal.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author devScarlet & mrTJO */ -public class ShowXMasSeal extends GameServerPacket +public class ShowXMasSeal implements IClientOutgoingPacket { private final int _item; @@ -29,9 +32,10 @@ public class ShowXMasSeal extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xF2); - writeD(_item); + OutgoingPackets.SHOW_XMAS_SEAL.writeId(packet); + packet.writeD(_item); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeAttackerList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeAttackerList.java index d4769a7450..59f75b1206 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeAttackerList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeAttackerList.java @@ -16,10 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import java.util.Collection; + +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.SiegeClan; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Populates the Siege Attacker List in the SiegeInfo Window
    @@ -46,30 +51,38 @@ import org.l2jmobius.gameserver.model.siege.Castle; * d = AllyCrestID
    * @author KenM */ -public class SiegeAttackerList extends GameServerPacket +public class SiegeAttackerList implements IClientOutgoingPacket { - private final Castle _castle; + private final int _residenceId; + private final Collection _attackers; public SiegeAttackerList(Castle castle) { - _castle = castle; + _residenceId = castle.getCastleId(); + _attackers = castle.getSiege().getAttackerClans(); + } + + public SiegeAttackerList(Fort fort) + { + _residenceId = fort.getFortId(); + _attackers = fort.getSiege().getAttackerClans(); } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xca); - writeD(_castle.getCastleId()); - writeD(0x00); // 0 - writeD(0x01); // 1 - writeD(0x00); // 0 - final int size = _castle.getSiege().getAttackerClans().size(); + OutgoingPackets.SIEGE_ATTACKER_LIST.writeId(packet); + packet.writeD(_residenceId); + packet.writeD(0x00); // 0 + packet.writeD(0x01); // 1 + packet.writeD(0x00); // 0 + final int size = _attackers.size(); if (size > 0) { Clan clan; - writeD(size); - writeD(size); - for (SiegeClan siegeclan : _castle.getSiege().getAttackerClans()) + packet.writeD(size); + packet.writeD(size); + for (SiegeClan siegeclan : _attackers) { clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); if (clan == null) @@ -77,21 +90,22 @@ public class SiegeAttackerList extends GameServerPacket continue; } - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); + packet.writeD(clan.getClanId()); + packet.writeS(clan.getName()); + packet.writeS(clan.getLeaderName()); + packet.writeD(clan.getCrestId()); + packet.writeD(0x00); // signed time (seconds) (not storated by L2J) + packet.writeD(clan.getAllyId()); + packet.writeS(clan.getAllyName()); + packet.writeS(""); // AllyLeaderName + packet.writeD(clan.getAllyCrestId()); } } else { - writeD(0x00); - writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeDefenderList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeDefenderList.java index d857d970d0..b8223d2bb4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeDefenderList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeDefenderList.java @@ -16,10 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import java.util.Collection; + +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.SiegeClan; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Populates the Siege Defender List in the SiegeInfo Window
    @@ -47,31 +52,42 @@ import org.l2jmobius.gameserver.model.siege.Castle; * d = AllyCrestID
    * @author KenM */ -public class SiegeDefenderList extends GameServerPacket +public class SiegeDefenderList implements IClientOutgoingPacket { - private final Castle _castle; + private final int _residenceId; + private final Collection _defenders; + private final Collection _waiting; public SiegeDefenderList(Castle castle) { - _castle = castle; + _residenceId = castle.getCastleId(); + _defenders = castle.getSiege().getDefenderClans(); + _waiting = castle.getSiege().getDefenderWaitingClans(); + } + + public SiegeDefenderList(Fort fort) + { + _residenceId = fort.getFortId(); + _defenders = fort.getSiege().getDefenderClans(); + _waiting = fort.getSiege().getDefenderWaitingClans(); } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xcb); - writeD(_castle.getCastleId()); - writeD(0x00); // 0 - writeD(0x01); // 1 - writeD(0x00); // 0 - final int size = _castle.getSiege().getDefenderClans().size() + _castle.getSiege().getDefenderWaitingClans().size(); + OutgoingPackets.SIEGE_DEFENDER_LIST.writeId(packet); + packet.writeD(_residenceId); + packet.writeD(0x00); // 0 + packet.writeD(0x01); // 1 + packet.writeD(0x00); // 0 + final int size = _defenders.size() + _waiting.size(); if (size > 0) { Clan clan; - writeD(size); - writeD(size); + packet.writeD(size); + packet.writeD(size); // Listing the Lord and the approved clans - for (SiegeClan siegeclan : _castle.getSiege().getDefenderClans()) + for (SiegeClan siegeclan : _defenders) { clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); if (clan == null) @@ -79,58 +95,59 @@ public class SiegeDefenderList extends GameServerPacket continue; } - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) + packet.writeD(clan.getClanId()); + packet.writeS(clan.getName()); + packet.writeS(clan.getLeaderName()); + packet.writeD(clan.getCrestId()); + packet.writeD(0x00); // signed time (seconds) (not storated by L2J) switch (siegeclan.getType()) { case OWNER: { - writeD(0x01); // owner + packet.writeD(0x01); // owner break; } case DEFENDER_PENDING: { - writeD(0x02); // approved + packet.writeD(0x02); // approved break; } case DEFENDER: { - writeD(0x03); // waiting approved + packet.writeD(0x03); // waiting approved break; } default: { - writeD(0x00); + packet.writeD(0x00); break; } } - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); + packet.writeD(clan.getAllyId()); + packet.writeS(clan.getAllyName()); + packet.writeS(""); // AllyLeaderName + packet.writeD(clan.getAllyCrestId()); } - for (SiegeClan siegeclan : _castle.getSiege().getDefenderWaitingClans()) + for (SiegeClan siegeclan : _waiting) { clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); - writeD(clan.getClanId()); - writeS(clan.getName()); - writeS(clan.getLeaderName()); - writeD(clan.getCrestId()); - writeD(0x00); // signed time (seconds) (not storated by L2J) - writeD(0x02); // waiting approval - writeD(clan.getAllyId()); - writeS(clan.getAllyName()); - writeS(""); // AllyLeaderName - writeD(clan.getAllyCrestId()); + packet.writeD(clan.getClanId()); + packet.writeS(clan.getName()); + packet.writeS(clan.getLeaderName()); + packet.writeD(clan.getCrestId()); + packet.writeD(0x00); // signed time (seconds) (not storated by L2J) + packet.writeD(0x02); // waiting approval + packet.writeD(clan.getAllyId()); + packet.writeS(clan.getAllyName()); + packet.writeS(""); // AllyLeaderName + packet.writeD(clan.getAllyCrestId()); } } else { - writeD(0x00); - writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeInfo.java index e7e79369a4..d73a8eb8b4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SiegeInfo.java @@ -17,12 +17,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Calendar; -import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Shows the Siege Info
    @@ -43,54 +45,65 @@ import org.l2jmobius.gameserver.model.siege.Castle; * d = (UNKNOW) Siege Time Select Related? * @author KenM */ -public class SiegeInfo extends GameServerPacket +public class SiegeInfo implements IClientOutgoingPacket { - private static final Logger LOGGER = Logger.getLogger(SiegeInfo.class.getName()); - private final Castle _castle; + private final PlayerInstance _player; + private final int _residenceId; + private final int _ownerId; + private final long _siegeDate; + private final String _name; - public SiegeInfo(Castle castle) + public SiegeInfo(Castle castle, PlayerInstance player) { - _castle = castle; + _player = player; + _residenceId = castle.getCastleId(); + _ownerId = castle.getOwnerId(); + _siegeDate = castle.getSiege().getSiegeDate().getTimeInMillis() / 1000; + _name = castle.getName(); + } + + public SiegeInfo(Fort fort, PlayerInstance player) + { + _player = player; + _residenceId = fort.getFortId(); + _ownerId = fort.getOwnerId(); + _siegeDate = fort.getSiege().getSiegeDate().getTimeInMillis() / 1000; + _name = fort.getName(); } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - final PlayerInstance player = getClient().getPlayer(); - if (player == null) + OutgoingPackets.SIEGE_INFO.writeId(packet); + packet.writeD(_residenceId); + packet.writeD((_ownerId == _player.getClanId()) && _player.isClanLeader() ? 0x01 : 0x00); + packet.writeD(_ownerId); + if (_ownerId > 0) { - return; - } - - writeC(0xc9); - writeD(_castle.getCastleId()); - writeD((_castle.getOwnerId() == player.getClanId()) && player.isClanLeader() ? 0x01 : 0x00); - writeD(_castle.getOwnerId()); - if (_castle.getOwnerId() > 0) - { - final Clan owner = ClanTable.getInstance().getClan(_castle.getOwnerId()); + final Clan owner = ClanTable.getInstance().getClan(_ownerId); if (owner != null) { - writeS(owner.getName()); // Clan Name - writeS(owner.getLeaderName()); // Clan Leader Name - writeD(owner.getAllyId()); // Ally ID - writeS(owner.getAllyName()); // Ally Name + packet.writeS(owner.getName()); // Clan Name + packet.writeS(owner.getLeaderName()); // Clan Leader Name + packet.writeD(owner.getAllyId()); // Ally ID + packet.writeS(owner.getAllyName()); // Ally Name } else { - LOGGER.warning("Null owner for castle: " + _castle.getName()); + LOGGER.warning("Null owner for castle: " + _name); } } else { - writeS("NPC"); // Clan Name - writeS(""); // Clan Leader Name - writeD(0); // Ally ID - writeS(""); // Ally Name + packet.writeS("NPC"); // Clan Name + packet.writeS(""); // Clan Leader Name + packet.writeD(0); // Ally ID + packet.writeS(""); // Ally Name } - writeD((int) (Calendar.getInstance().getTimeInMillis() / 1000)); - writeD((int) (_castle.getSiege().getSiegeDate().getTimeInMillis() / 1000)); - writeD(0x00); // number of choices? + packet.writeD((int) (Calendar.getInstance().getTimeInMillis() / 1000)); + packet.writeD((int) _siegeDate); + packet.writeD(0x00); // number of choices? + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SignsSky.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SignsSky.java index 21e950b53c..216b329277 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SignsSky.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SignsSky.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Changes the sky color depending on the outcome of the Seven Signs competition. packet type id 0xf8 format: c h * @author Tempy */ -public class SignsSky extends GameServerPacket +public class SignsSky implements IClientOutgoingPacket { private int _state = 0; @@ -48,19 +50,20 @@ public class SignsSky extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xf8); + OutgoingPackets.SIGNS_SKY.writeId(packet); if (_state == 2) { - writeH(258); + packet.writeH(258); } else if (_state == 1) { - writeH(257); + packet.writeH(257); // else // writeH(256); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SkillCoolTime.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SkillCoolTime.java index f4bb971687..681aba05f3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SkillCoolTime.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SkillCoolTime.java @@ -18,15 +18,17 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Collection; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.model.Timestamp; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * Skill Cool Time server packet implementation. * @author KenM, Zoey76, Mobius */ -public class SkillCoolTime extends GameServerPacket +public class SkillCoolTime implements IClientOutgoingPacket { private final long _currentTime; public Collection _reuseTimestamps; @@ -38,21 +40,17 @@ public class SkillCoolTime extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - final PlayerInstance player = getClient().getPlayer(); - if (player == null) - { - return; - } - writeC(0xc1); - writeD(_reuseTimestamps.size()); + OutgoingPackets.SKILL_COOL_TIME.writeId(packet); + packet.writeD(_reuseTimestamps.size()); for (Timestamp ts : _reuseTimestamps) { - writeD(ts.getSkillId()); - writeD(ts.getSkillLevel()); - writeD((int) ts.getReuse() / 1000); - writeD((int) Math.max(ts.getStamp() - _currentTime, 0) / 1000); + packet.writeD(ts.getSkillId()); + packet.writeD(ts.getSkillLevel()); + packet.writeD((int) ts.getReuse() / 1000); + packet.writeD((int) Math.max(ts.getStamp() - _currentTime, 0) / 1000); } + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SkillList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SkillList.java index a064265ae0..06d32a0e8d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SkillList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SkillList.java @@ -16,13 +16,16 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * sample 0000: 6d 0c 00 00 00 00 00 00 00 03 00 00 00 f3 03 00 m............... 0010: 00 00 00 00 00 01 00 00 00 f4 03 00 00 00 00 00 ................ 0020: 00 01 00 00 00 10 04 00 00 00 00 00 00 01 00 00 ................ 0030: 00 2c 04 00 00 00 00 00 00 03 00 00 00 99 04 00 .,.............. 0040: * 00 00 00 00 00 02 00 00 00 a0 04 00 00 00 00 00 ................ 0050: 00 01 00 00 00 c0 04 00 00 01 00 00 00 01 00 00 ................ 0060: 00 76 00 00 00 01 00 00 00 01 00 00 00 a3 00 00 .v.............. 0070: 00 01 00 00 00 01 00 00 00 c2 00 00 00 01 00 00 ................ 0080: 00 01 00 00 * 00 d6 00 00 00 01 00 00 00 01 00 00 ................ 0090: 00 f4 00 00 00 format d (ddd) * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/27 15:29:39 $ */ -public class SkillList extends GameServerPacket +public class SkillList implements IClientOutgoingPacket { private Skill[] _skills; @@ -86,17 +89,18 @@ public class SkillList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x58); - writeD(_skills.length); + OutgoingPackets.SKILL_LIST.writeId(packet); + packet.writeD(_skills.length); for (Skill temp : _skills) { - writeD(temp.passive ? 1 : 0); - writeD(temp.level); - writeD(temp.id); - writeC(0x00); // c5 + packet.writeD(temp.passive ? 1 : 0); + packet.writeD(temp.level); + packet.writeD(temp.id); + packet.writeC(0x00); // c5 } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Snoop.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Snoop.java index 36b25c6d18..4a084b01be 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Snoop.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Snoop.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * CDSDDSS -> (0xd5)(objId)(name)(0x00)(type)(speaker)(name) */ -public class Snoop extends GameServerPacket +public class Snoop implements IClientOutgoingPacket { private final PlayerInstance _snooped; private final ChatType _type; @@ -38,14 +40,15 @@ public class Snoop extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xd5); - writeD(_snooped.getObjectId()); - writeS(_snooped.getName()); - writeD(0); // ?? - writeD(_type.getClientId()); - writeS(_speaker); - writeS(_msg); + OutgoingPackets.SNOOP.writeId(packet); + packet.writeD(_snooped.getObjectId()); + packet.writeS(_snooped.getName()); + packet.writeD(0); // ?? + packet.writeD(_type.getClientId()); + packet.writeS(_speaker); + packet.writeS(_msg); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SocialAction.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SocialAction.java index c03794c919..fbba8424c5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SocialAction.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SocialAction.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class SocialAction extends GameServerPacket +public class SocialAction implements IClientOutgoingPacket { private final int _objectId; private final int _actionId; @@ -36,10 +39,11 @@ public class SocialAction extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2d); - writeD(_objectId); - writeD(_actionId); + OutgoingPackets.SOCIAL_ACTION.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_actionId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SpawnItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SpawnItem.java index b37d17d0fd..2b0d226cab 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SpawnItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SpawnItem.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 15 ee cc 11 43 object id 39 00 00 00 item id 8f 14 00 00 x b7 f1 00 00 y 60 f2 ff ff z 01 00 00 00 show item count 7a 00 00 00 count . format dddddddd * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class SpawnItem extends GameServerPacket +public class SpawnItem implements IClientOutgoingPacket { private final int _objectId; private final int _itemId; @@ -44,18 +46,19 @@ public class SpawnItem extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x0b); - writeD(_objectId); - writeD(_itemId); + OutgoingPackets.SPAWN_ITEM.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_itemId); - writeD(_x); - writeD(_y); - writeD(_z); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); // only show item count if it is a stackable item - writeD(_stackable); - writeD(_count); - writeD(0x00); // c2 + packet.writeD(_stackable); + packet.writeD(_count); + packet.writeD(0x00); // c2 + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SpecialCamera.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SpecialCamera.java index 2d05a15d7d..c21a4b353d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SpecialCamera.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SpecialCamera.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class SpecialCamera extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class SpecialCamera implements IClientOutgoingPacket { private final int _id; private final int _dist; @@ -36,14 +39,15 @@ public class SpecialCamera extends GameServerPacket } @Override - public void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xc7); - writeD(_id); - writeD(_dist); - writeD(_yaw); - writeD(_pitch); - writeD(_time); - writeD(_duration); + OutgoingPackets.SPECIAL_CAMERA.writeId(packet); + packet.writeD(_id); + packet.writeD(_dist); + packet.writeD(_yaw); + packet.writeD(_pitch); + packet.writeD(_time); + packet.writeD(_duration); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StartPledgeWar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StartPledgeWar.java index c179472beb..9efe1c7030 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StartPledgeWar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StartPledgeWar.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class StartPledgeWar extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class StartPledgeWar implements IClientOutgoingPacket { private final String _pledgeName; private final String _playerName; @@ -28,10 +31,11 @@ public class StartPledgeWar extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x65); - writeS(_playerName); - writeS(_pledgeName); + OutgoingPackets.START_PLEDGE_WAR.writeId(packet); + packet.writeS(_playerName); + packet.writeS(_pledgeName); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StaticObject.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StaticObject.java index b71a76ffbc..6f8560a321 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StaticObject.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StaticObject.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class StaticObject extends GameServerPacket +public class StaticObject implements IClientOutgoingPacket { private final StaticObjectInstance _staticObject; @@ -32,10 +34,11 @@ public class StaticObject extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x99); - writeD(_staticObject.getStaticObjectId()); // staticObjectId - writeD(_staticObject.getObjectId()); // objectId + OutgoingPackets.STATIC_OBJECT.writeId(packet); + packet.writeD(_staticObject.getStaticObjectId()); // staticObjectId + packet.writeD(_staticObject.getObjectId()); // objectId + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StatusUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StatusUpdate.java index f45a6a2019..75c28e6dca 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StatusUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StatusUpdate.java @@ -19,7 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 01 // Packet Identifier
    @@ -32,7 +34,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; * format d d(dd) * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/27 15:29:39 $ */ -public class StatusUpdate extends GameServerPacket +public class StatusUpdate implements IClientOutgoingPacket { public static final int LEVEL = 0x01; public static final int EXP = 0x02; @@ -102,86 +104,87 @@ public class StatusUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x0e); + OutgoingPackets.STATUS_UPDATE.writeId(packet); if (_actor != null) { - writeD(_actor.getObjectId()); - writeD(28); // all the attributes + packet.writeD(_actor.getObjectId()); + packet.writeD(28); // all the attributes - writeD(LEVEL); - writeD(_actor.getLevel()); - writeD(EXP); - writeD((int) _actor.getExp()); - writeD(STR); - writeD(_actor.getSTR()); - writeD(DEX); - writeD(_actor.getDEX()); - writeD(CON); - writeD(_actor.getCON()); - writeD(INT); - writeD(_actor.getINT()); - writeD(WIT); - writeD(_actor.getWIT()); - writeD(MEN); - writeD(_actor.getMEN()); + packet.writeD(LEVEL); + packet.writeD(_actor.getLevel()); + packet.writeD(EXP); + packet.writeD((int) _actor.getExp()); + packet.writeD(STR); + packet.writeD(_actor.getSTR()); + packet.writeD(DEX); + packet.writeD(_actor.getDEX()); + packet.writeD(CON); + packet.writeD(_actor.getCON()); + packet.writeD(INT); + packet.writeD(_actor.getINT()); + packet.writeD(WIT); + packet.writeD(_actor.getWIT()); + packet.writeD(MEN); + packet.writeD(_actor.getMEN()); - writeD(CUR_HP); - writeD((int) _actor.getCurrentHp()); - writeD(MAX_HP); - writeD(_actor.getMaxHp()); - writeD(CUR_MP); - writeD((int) _actor.getCurrentMp()); - writeD(MAX_MP); - writeD(_actor.getMaxMp()); - writeD(SP); - writeD(_actor.getSp()); - writeD(CUR_LOAD); - writeD(_actor.getCurrentLoad()); - writeD(MAX_LOAD); - writeD(_actor.getMaxLoad()); + packet.writeD(CUR_HP); + packet.writeD((int) _actor.getCurrentHp()); + packet.writeD(MAX_HP); + packet.writeD(_actor.getMaxHp()); + packet.writeD(CUR_MP); + packet.writeD((int) _actor.getCurrentMp()); + packet.writeD(MAX_MP); + packet.writeD(_actor.getMaxMp()); + packet.writeD(SP); + packet.writeD(_actor.getSp()); + packet.writeD(CUR_LOAD); + packet.writeD(_actor.getCurrentLoad()); + packet.writeD(MAX_LOAD); + packet.writeD(_actor.getMaxLoad()); - writeD(P_ATK); - writeD(_actor.getPAtk(null)); - writeD(ATK_SPD); - writeD(_actor.getPAtkSpd()); - writeD(P_DEF); - writeD(_actor.getPDef(null)); - writeD(EVASION); - writeD(_actor.getEvasionRate(null)); - writeD(ACCURACY); - writeD(_actor.getAccuracy()); - writeD(CRITICAL); - writeD(_actor.getCriticalHit(null, null)); - writeD(M_ATK); - writeD(_actor.getMAtk(null, null)); + packet.writeD(P_ATK); + packet.writeD(_actor.getPAtk(null)); + packet.writeD(ATK_SPD); + packet.writeD(_actor.getPAtkSpd()); + packet.writeD(P_DEF); + packet.writeD(_actor.getPDef(null)); + packet.writeD(EVASION); + packet.writeD(_actor.getEvasionRate(null)); + packet.writeD(ACCURACY); + packet.writeD(_actor.getAccuracy()); + packet.writeD(CRITICAL); + packet.writeD(_actor.getCriticalHit(null, null)); + packet.writeD(M_ATK); + packet.writeD(_actor.getMAtk(null, null)); - writeD(CAST_SPD); - writeD(_actor.getMAtkSpd()); - writeD(M_DEF); - writeD(_actor.getMDef(null, null)); - writeD(PVP_FLAG); - writeD(_actor.getPvpFlag()); - writeD(KARMA); - writeD(_actor.getKarma()); - writeD(CUR_CP); - writeD((int) _actor.getCurrentCp()); - writeD(MAX_CP); - writeD(_actor.getMaxCp()); + packet.writeD(CAST_SPD); + packet.writeD(_actor.getMAtkSpd()); + packet.writeD(M_DEF); + packet.writeD(_actor.getMDef(null, null)); + packet.writeD(PVP_FLAG); + packet.writeD(_actor.getPvpFlag()); + packet.writeD(KARMA); + packet.writeD(_actor.getKarma()); + packet.writeD(CUR_CP); + packet.writeD((int) _actor.getCurrentCp()); + packet.writeD(MAX_CP); + packet.writeD(_actor.getMaxCp()); } else { - writeD(_objectId); - writeD(_attributes.size()); + packet.writeD(_objectId); + packet.writeD(_attributes.size()); for (int i = 0; i < _attributes.size(); i++) { final Attribute temp = _attributes.get(i); - writeD(temp.id); - writeD(temp.value); + packet.writeD(temp.id); + packet.writeD(temp.value); } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopMove.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopMove.java index 8f48075757..4f41ac021b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopMove.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopMove.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format ddddd sample 0000: 59 1a 95 20 48 44 17 02 00 03 f0 fc ff 98 f1 ff Y.. HD.......... 0010: ff c1 1a 00 00 ..... * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class StopMove extends GameServerPacket +public class StopMove implements IClientOutgoingPacket { private final int _objectId; private final int _x; @@ -52,13 +54,14 @@ public class StopMove extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x47); - writeD(_objectId); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); + OutgoingPackets.STOP_MOVE.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopMoveInVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopMoveInVehicle.java index 1473966b0e..f47fc3486c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopMoveInVehicle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopMoveInVehicle.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class StopMoveInVehicle extends GameServerPacket +public class StopMoveInVehicle implements IClientOutgoingPacket { private final PlayerInstance _player; private final int _boatId; @@ -36,19 +38,16 @@ public class StopMoveInVehicle extends GameServerPacket _boatId = boatid; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x72); - writeD(_player.getObjectId()); - writeD(_boatId); - writeD(_player.getBoatPosition().getX()); - writeD(_player.getBoatPosition().getY()); - writeD(_player.getBoatPosition().getZ()); - writeD(_player.getPosition().getHeading()); + OutgoingPackets.STOP_MOVE_IN_VEHICLE.writeId(packet); + packet.writeD(_player.getObjectId()); + packet.writeD(_boatId); + packet.writeD(_player.getBoatPosition().getX()); + packet.writeD(_player.getBoatPosition().getY()); + packet.writeD(_player.getBoatPosition().getZ()); + packet.writeD(_player.getPosition().getHeading()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopPledgeWar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopPledgeWar.java index baaed1bfba..99d8a76b25 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopPledgeWar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopPledgeWar.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class StopPledgeWar extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class StopPledgeWar implements IClientOutgoingPacket { private final String _pledgeName; private final String _playerName; @@ -28,10 +31,11 @@ public class StopPledgeWar extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x67); - writeS(_pledgeName); - writeS(_playerName); + OutgoingPackets.STOP_PLEDGE_WAR.writeId(packet); + packet.writeS(_pledgeName); + packet.writeS(_playerName); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopRotation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopRotation.java index 82e27407cf..3e3a06cbc0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopRotation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/StopRotation.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.2.2.1.2.4 $ $Date: 2005/03/27 15:29:57 $ */ -public class StopRotation extends GameServerPacket +public class StopRotation implements IClientOutgoingPacket { private final int _objectId; private final int _degree; @@ -35,12 +37,13 @@ public class StopRotation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x63); - writeD(_objectId); - writeD(_degree); - writeD(_speed); - writeC(0); // ? + OutgoingPackets.STOP_ROTATION.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_degree); + packet.writeD(_speed); + packet.writeC(0); // ? + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SunRise.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SunRise.java index 927ba57f2d..181cf2fa5a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SunRise.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SunRise.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class SunRise extends GameServerPacket +public class SunRise implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x1c); + OutgoingPackets.SUN_RISE.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SunSet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SunSet.java index de7f7dee94..5c1a238533 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SunSet.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SunSet.java @@ -16,14 +16,18 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class SunSet extends GameServerPacket +public class SunSet implements IClientOutgoingPacket { @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x1d); + OutgoingPackets.SUN_SET.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SurrenderPledgeWar.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SurrenderPledgeWar.java index 1801826259..6cb6d7f2e1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SurrenderPledgeWar.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SurrenderPledgeWar.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class SurrenderPledgeWar extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class SurrenderPledgeWar implements IClientOutgoingPacket { private final String _pledgeName; private final String _playerName; @@ -28,10 +31,11 @@ public class SurrenderPledgeWar extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x69); - writeS(_pledgeName); - writeS(_playerName); + OutgoingPackets.SURRENDER_PLEDGE_WAR.writeId(packet); + packet.writeS(_pledgeName); + packet.writeS(_playerName); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SystemMessage.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SystemMessage.java index 229cbaed6f..9481217acc 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SystemMessage.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SystemMessage.java @@ -19,10 +19,12 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.SystemMessageId; -public class SystemMessage extends GameServerPacket +public class SystemMessage implements IClientOutgoingPacket { // Packets d d (d S/d d/d dd) -> 0 - String 1-number 2-textref npcname (1000000-1002655) 3-textref itemname 4-textref skills 5-?? private static final int TYPE_ZONE_NAME = 7; @@ -117,23 +119,23 @@ public class SystemMessage extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x64); + OutgoingPackets.SYSTEM_MESSAGE.writeId(packet); - writeD(_messageId); - writeD(_types.size()); + packet.writeD(_messageId); + packet.writeD(_types.size()); for (int i = 0; i < _types.size(); i++) { final int t = _types.get(i).intValue(); - writeD(t); + packet.writeD(t); switch (t) { case TYPE_TEXT: { - writeS((String) _values.get(i)); + packet.writeS((String) _values.get(i)); break; } case TYPE_NUMBER: @@ -141,14 +143,14 @@ public class SystemMessage extends GameServerPacket case TYPE_ITEM_NAME: { final int t1 = ((Integer) _values.get(i)).intValue(); - writeD(t1); + packet.writeD(t1); break; } case TYPE_SKILL_NAME: { final int t1 = ((Integer) _values.get(i)).intValue(); - writeD(t1); // Skill Id - writeD(_skillLevel); // Skill lvl + packet.writeD(t1); // Skill Id + packet.writeD(_skillLevel); // Skill lvl break; } case TYPE_ZONE_NAME: @@ -156,13 +158,14 @@ public class SystemMessage extends GameServerPacket final int t1 = ((int[]) _values.get(i))[0]; final int t2 = ((int[]) _values.get(i))[1]; final int t3 = ((int[]) _values.get(i))[2]; - writeD(t1); - writeD(t2); - writeD(t3); + packet.writeD(t1); + packet.writeD(t2); + packet.writeD(t3); break; } } } + return true; } public int getMessageID() diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TargetSelected.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TargetSelected.java index 7880ace438..e2914fe218 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TargetSelected.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TargetSelected.java @@ -16,11 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * format ddddd sample 0000: 39 0b 07 10 48 3e 31 10 48 3a f6 00 00 91 5b 00 9...H>1.H:....[. 0010: 00 4c f1 ff ff .L... * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class TargetSelected extends GameServerPacket +public class TargetSelected implements IClientOutgoingPacket { private final int _objectId; private final int _targetObjId; @@ -45,13 +48,14 @@ public class TargetSelected extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x29); - writeD(_objectId); - writeD(_targetObjId); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.TARGET_SELECTED.writeId(packet); + packet.writeD(_objectId); + packet.writeD(_targetObjId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TargetUnselected.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TargetUnselected.java index 69e13a5e01..839a551a93 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TargetUnselected.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TargetUnselected.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * format dddd sample 0000: 3a 69 08 10 48 02 c1 00 00 f7 56 00 00 89 ea ff :i..H.....V..... 0010: ff 0c b2 d8 61 ....a * @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ */ -public class TargetUnselected extends GameServerPacket +public class TargetUnselected implements IClientOutgoingPacket { private final int _targetObjId; private final int _x; @@ -41,13 +43,14 @@ public class TargetUnselected extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x2a); - writeD(_targetObjId); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.TARGET_UNSELECTED.writeId(packet); + packet.writeD(_targetObjId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); // writeD(_target.getTargetId()); //?? probably not used in client + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TeleportToLocation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TeleportToLocation.java index 87f54fcb89..5e31d80225 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TeleportToLocation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TeleportToLocation.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class TeleportToLocation extends GameServerPacket +public class TeleportToLocation implements IClientOutgoingPacket { private final int _targetObjId; private final int _x; @@ -36,14 +38,15 @@ public class TeleportToLocation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x28); - writeD(_targetObjId); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(0x00); // Fade 0, Instant 1. - writeD(_heading); + OutgoingPackets.TELEPORT_TO_LOCATION.writeId(packet); + packet.writeD(_targetObjId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(0x00); // Fade 0, Instant 1. + packet.writeD(_heading); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TitleUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TitleUpdate.java index bc1f710ba1..2b6e830a06 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TitleUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TitleUpdate.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class TitleUpdate extends GameServerPacket +public class TitleUpdate implements IClientOutgoingPacket { private final String _title; private final int _objectId; @@ -29,14 +31,12 @@ public class TitleUpdate extends GameServerPacket _title = player.getTitle(); } - /** - * @see org.l2jmobius.gameserver.network.serverpackets.GameServerPacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xcc); - writeD(_objectId); - writeS(_title); + OutgoingPackets.TITLE_UPDATE.writeId(packet); + packet.writeD(_objectId); + packet.writeS(_title); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeOtherAdd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeOtherAdd.java index 781bceb9b4..1235f0fb56 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeOtherAdd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeOtherAdd.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Yme * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class TradeOtherAdd extends GameServerPacket +public class TradeOtherAdd implements IClientOutgoingPacket { private final TradeList.TradeItem _item; @@ -32,22 +34,23 @@ public class TradeOtherAdd extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x21); + OutgoingPackets.TRADE_OTHER_ADD.writeId(packet); - writeH(1); // item count + packet.writeH(1); // item count - writeH(_item.getItem().getType1()); // item type1 - writeD(_item.getObjectId()); - writeD(_item.getItem().getItemId()); - writeD(_item.getCount()); - writeH(_item.getItem().getType2()); // item type2 - writeH(0x00); // ? + packet.writeH(_item.getItem().getType1()); // item type1 + packet.writeD(_item.getObjectId()); + packet.writeD(_item.getItem().getItemId()); + packet.writeD(_item.getCount()); + packet.writeH(_item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? - writeD(_item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(_item.getEnchant()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(_item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(_item.getEnchant()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeOwnAdd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeOwnAdd.java index cfcfb96065..4b586ebfe6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeOwnAdd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeOwnAdd.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Yme * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class TradeOwnAdd extends GameServerPacket +public class TradeOwnAdd implements IClientOutgoingPacket { private final TradeList.TradeItem _item; @@ -32,22 +34,23 @@ public class TradeOwnAdd extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x20); + OutgoingPackets.TRADE_OWN_ADD.writeId(packet); - writeH(1); // item count + packet.writeH(1); // item count - writeH(_item.getItem().getType1()); // item type1 - writeD(_item.getObjectId()); - writeD(_item.getItem().getItemId()); - writeD(_item.getCount()); - writeH(_item.getItem().getType2()); // item type2 - writeH(0x00); // ? + packet.writeH(_item.getItem().getType1()); // item type1 + packet.writeD(_item.getObjectId()); + packet.writeD(_item.getItem().getItemId()); + packet.writeD(_item.getCount()); + packet.writeH(_item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? - writeD(_item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(_item.getEnchant()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(_item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(_item.getEnchant()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOtherOk.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOtherOk.java index 0ed0a5605f..833d3b0a98 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOtherOk.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOtherOk.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Beetle */ -public class TradePressOtherOk extends GameServerPacket +public class TradePressOtherOk implements IClientOutgoingPacket { public static final TradePressOtherOk STATIC_PACKET = new TradePressOtherOk(); @@ -28,8 +31,9 @@ public class TradePressOtherOk extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x7c); + OutgoingPackets.TRADE_PRESS_OTHER_OK.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOwnOk.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOwnOk.java index 94314ad292..07ac0aa0cb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOwnOk.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradePressOwnOk.java @@ -16,10 +16,13 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + /** * @author Beetle */ -public class TradePressOwnOk extends GameServerPacket +public class TradePressOwnOk implements IClientOutgoingPacket { public static final TradePressOwnOk STATIC_PACKET = new TradePressOwnOk(); @@ -28,8 +31,9 @@ public class TradePressOwnOk extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x75); + OutgoingPackets.TRADE_PRESS_OWN_OK.writeId(packet); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeStart.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeStart.java index 4c5af56fc3..63b05ed971 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeStart.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeStart.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @version $Revision: 1.4.2.1.2.3 $ $Date: 2005/03/27 15:29:39 $ */ -public class TradeStart extends GameServerPacket +public class TradeStart implements IClientOutgoingPacket { private final PlayerInstance _player; private final ItemInstance[] _itemList; @@ -34,30 +36,32 @@ public class TradeStart extends GameServerPacket } @Override - protected final void writeImpl() - {// 0x2e TradeStart d h (h dddhh dhhh) + public boolean write(PacketWriter packet) + { + // 0x2e TradeStart d h (h dddhh dhhh) if ((_player.getActiveTradeList() == null) || (_player.getActiveTradeList().getPartner() == null)) { - return; + return false; } - writeC(0x1E); - writeD(_player.getActiveTradeList().getPartner().getObjectId()); + OutgoingPackets.TRADE_START.writeId(packet); + packet.writeD(_player.getActiveTradeList().getPartner().getObjectId()); // writeD((_activeChar != null || _activeChar.getTransactionRequester() != null)? _activeChar.getTransactionRequester().getObjectId() : 0); - writeH(_itemList.length); + packet.writeH(_itemList.length); for (ItemInstance item : _itemList)// int i = 0; i < count; i++) { - writeH(item.getItem().getType1()); // item type1 - writeD(item.getObjectId()); - writeD(item.getItemId()); - writeD(item.getCount()); - writeH(item.getItem().getType2()); // item type2 - writeH(0x00); // ? + packet.writeH(item.getItem().getType1()); // item type1 + packet.writeD(item.getObjectId()); + packet.writeD(item.getItemId()); + packet.writeD(item.getCount()); + packet.writeH(item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? - writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(item.getEnchantLevel()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getEnchantLevel()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeUpdate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeUpdate.java index dc6bc7f0e8..262a0c3fc9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeUpdate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TradeUpdate.java @@ -16,15 +16,17 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.TradeList.TradeItem; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Beetle */ -public class TradeUpdate extends GameServerPacket +public class TradeUpdate implements IClientOutgoingPacket { private final ItemInstance[] _items; private final TradeItem[] _tradeItems; @@ -48,11 +50,11 @@ public class TradeUpdate extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x74); + OutgoingPackets.TRADE_UPDATE.writeId(packet); - writeH(_tradeItems.length); + packet.writeH(_tradeItems.length); for (TradeItem item : _tradeItems) { int aveCount = getItemCount(item.getObjectId()) - item.getCount(); @@ -62,17 +64,18 @@ public class TradeUpdate extends GameServerPacket aveCount = 1; stackable = false; } - writeH(stackable ? 3 : 2); - writeH(item.getItem().getType1()); // item type1 - writeD(item.getObjectId()); - writeD(item.getItem().getItemId()); - writeD(aveCount); - writeH(item.getItem().getType2()); // item type2 - writeH(0x00); // ? - writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand - writeH(item.getEnchant()); // enchant level - writeH(0x00); // ? - writeH(0x00); + packet.writeH(stackable ? 3 : 2); + packet.writeH(item.getItem().getType1()); // item type1 + packet.writeD(item.getObjectId()); + packet.writeD(item.getItem().getItemId()); + packet.writeD(aveCount); + packet.writeH(item.getItem().getType2()); // item type2 + packet.writeH(0x00); // ? + packet.writeD(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getEnchant()); // enchant level + packet.writeH(0x00); // ? + packet.writeH(0x00); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialCloseHtml.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialCloseHtml.java index d6b69fe32a..c39eb0e606 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialCloseHtml.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialCloseHtml.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class TutorialCloseHtml extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class TutorialCloseHtml implements IClientOutgoingPacket { public static final TutorialCloseHtml STATIC_PACKET = new TutorialCloseHtml(); @@ -25,8 +28,9 @@ public class TutorialCloseHtml extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa3); + OutgoingPackets.TUTORIAL_CLOSE_HTML.writeId(packet); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialEnableClientEvent.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialEnableClientEvent.java index d7050a4d6a..728020c0b1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialEnableClientEvent.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialEnableClientEvent.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class TutorialEnableClientEvent extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class TutorialEnableClientEvent implements IClientOutgoingPacket { private int _eventId = 0; @@ -26,9 +29,10 @@ public class TutorialEnableClientEvent extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa2); - writeD(_eventId); + OutgoingPackets.TUTORIAL_ENABLE_CLIENT_EVENT.writeId(packet); + packet.writeD(_eventId); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowHtml.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowHtml.java index 08ef872d30..396bbd7779 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowHtml.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowHtml.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class TutorialShowHtml extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class TutorialShowHtml implements IClientOutgoingPacket { private final String _html; @@ -25,14 +28,11 @@ public class TutorialShowHtml extends GameServerPacket _html = html; } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa0); - writeS(_html); + OutgoingPackets.TUTORIAL_SHOW_HTML.writeId(packet); + packet.writeS(_html); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java index f7daeb4139..8745e5cd27 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/TutorialShowQuestionMark.java @@ -16,7 +16,10 @@ */ package org.l2jmobius.gameserver.network.serverpackets; -public class TutorialShowQuestionMark extends GameServerPacket +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; + +public class TutorialShowQuestionMark implements IClientOutgoingPacket { private final int _blink; @@ -25,14 +28,11 @@ public class TutorialShowQuestionMark extends GameServerPacket _blink = blink; // this influences the blinking frequancy :S } - /* - * (non-Javadoc) - * @see org.l2jmobius.gameserver.serverpackets.ServerBasePacket#writeImpl() - */ @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xa1); - writeD(_blink); + OutgoingPackets.TUTORIAL_SHOW_QUESTION_MARK.writeId(packet); + packet.writeD(_blink); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/UserInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/UserInfo.java index e4393cb2f8..b67faa9ff1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/UserInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/UserInfo.java @@ -17,12 +17,14 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class UserInfo extends GameServerPacket +public class UserInfo implements IClientOutgoingPacket { private final PlayerInstance _player; private final Inventory _inventory; @@ -54,240 +56,241 @@ public class UserInfo extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x04); + OutgoingPackets.USER_INFO.writeId(packet); - writeD(_player.getX()); - writeD(_player.getY()); - writeD(_player.getZ()); - writeD(_player.getBoat() != null ? _player.getBoat().getObjectId() : 0); + packet.writeD(_player.getX()); + packet.writeD(_player.getY()); + packet.writeD(_player.getZ()); + packet.writeD(_player.getBoat() != null ? _player.getBoat().getObjectId() : 0); - writeD(_player.getObjectId()); - writeS(_player.getName()); - writeD(_player.getRace().ordinal()); - writeD(_player.getAppearance().isFemale() ? 1 : 0); + packet.writeD(_player.getObjectId()); + packet.writeS(_player.getName()); + packet.writeD(_player.getRace().ordinal()); + packet.writeD(_player.getAppearance().isFemale() ? 1 : 0); if (_player.getClassIndex() == 0) { - writeD(_player.getClassId().getId()); + packet.writeD(_player.getClassId().getId()); } else { - writeD(_player.getBaseClass()); + packet.writeD(_player.getBaseClass()); } - writeD(_player.getLevel()); - writeQ(_player.getExp()); - writeD(_player.getSTR()); - writeD(_player.getDEX()); - writeD(_player.getCON()); - writeD(_player.getINT()); - writeD(_player.getWIT()); - writeD(_player.getMEN()); - writeD(_player.getMaxHp()); - writeD((int) _player.getCurrentHp()); - writeD(_player.getMaxMp()); - writeD((int) _player.getCurrentMp()); - writeD(_player.getSp()); - writeD(_player.getCurrentLoad()); - writeD(_player.getMaxLoad()); + packet.writeD(_player.getLevel()); + packet.writeQ(_player.getExp()); + packet.writeD(_player.getSTR()); + packet.writeD(_player.getDEX()); + packet.writeD(_player.getCON()); + packet.writeD(_player.getINT()); + packet.writeD(_player.getWIT()); + packet.writeD(_player.getMEN()); + packet.writeD(_player.getMaxHp()); + packet.writeD((int) _player.getCurrentHp()); + packet.writeD(_player.getMaxMp()); + packet.writeD((int) _player.getCurrentMp()); + packet.writeD(_player.getSp()); + packet.writeD(_player.getCurrentLoad()); + packet.writeD(_player.getMaxLoad()); - writeD(_player.getActiveWeaponItem() != null ? 40 : 20); // 20 no weapon, 40 weapon equipped + packet.writeD(_player.getActiveWeaponItem() != null ? 40 : 20); // 20 no weapon, 40 weapon equipped - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); - writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_FACE)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_REAR)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_NECK)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_inventory.getPaperdollObjectId(Inventory.PAPERDOLL_FACE)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_REAR)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_NECK)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); - writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FACE)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_REAR)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_NECK)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); + packet.writeD(_inventory.getPaperdollItemId(Inventory.PAPERDOLL_FACE)); // c6 new h's - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeD(_inventory.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND)); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeD(_inventory.getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND)); - writeH(0x00); - writeH(0x00); - writeH(0x00); - writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeD(_inventory.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND)); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeD(_inventory.getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND)); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); + packet.writeH(0x00); // end of c6 new h's - writeD(_player.getPAtk(null)); - writeD(_player.getPAtkSpd()); - writeD(_player.getPDef(null)); - writeD(_player.getEvasionRate(null)); - writeD(_player.getAccuracy()); - writeD(_player.getCriticalHit(null, null)); - writeD(_player.getMAtk(null, null)); + packet.writeD(_player.getPAtk(null)); + packet.writeD(_player.getPAtkSpd()); + packet.writeD(_player.getPDef(null)); + packet.writeD(_player.getEvasionRate(null)); + packet.writeD(_player.getAccuracy()); + packet.writeD(_player.getCriticalHit(null, null)); + packet.writeD(_player.getMAtk(null, null)); - writeD(_player.getMAtkSpd()); - writeD(_player.getPAtkSpd()); + packet.writeD(_player.getMAtkSpd()); + packet.writeD(_player.getPAtkSpd()); - writeD(_player.getMDef(null, null)); + packet.writeD(_player.getMDef(null, null)); - writeD(_player.getPvpFlag()); // 0-non-pvp 1-pvp = violett name - writeD(_player.getKarma()); + packet.writeD(_player.getPvpFlag()); // 0-non-pvp 1-pvp = violett name + packet.writeD(_player.getKarma()); - writeD(_runSpd); // base run speed - writeD(_walkSpd); // base walk speed - writeD(_runSpd); // swim run speed (calculated by getter) - writeD(_walkSpd); // swim walk speed (calculated by getter) - writeD(0); - writeD(0); - writeD(_flyRunSpd); - writeD(_flyWalkSpd); - writeF(_player.getMovementSpeedMultiplier()); // run speed multiplier - writeF(_player.getAttackSpeedMultiplier()); // attack speed multiplier - writeF(_player.getCollisionRadius()); - writeF(_player.getCollisionHeight()); - writeD(_player.getAppearance().getHairStyle()); - writeD(_player.getAppearance().getHairColor()); - writeD(_player.getAppearance().getFace()); - writeD(_player.isGM() ? 1 : 0); // builder level + packet.writeD(_runSpd); // base run speed + packet.writeD(_walkSpd); // base walk speed + packet.writeD(_runSpd); // swim run speed (calculated by getter) + packet.writeD(_walkSpd); // swim walk speed (calculated by getter) + packet.writeD(0); + packet.writeD(0); + packet.writeD(_flyRunSpd); + packet.writeD(_flyWalkSpd); + packet.writeF(_player.getMovementSpeedMultiplier()); // run speed multiplier + packet.writeF(_player.getAttackSpeedMultiplier()); // attack speed multiplier + packet.writeF(_player.getCollisionRadius()); + packet.writeF(_player.getCollisionHeight()); + packet.writeD(_player.getAppearance().getHairStyle()); + packet.writeD(_player.getAppearance().getHairColor()); + packet.writeD(_player.getAppearance().getFace()); + packet.writeD(_player.isGM() ? 1 : 0); // builder level String title = _player.getTitle(); if (_player.getAppearance().isInvisible() && _player.isGM()) { title = "[Invisible]"; } - writeS(title); + packet.writeS(title); - writeD(_player.getClanId()); - writeD(_player.getClanCrestId()); - writeD(_player.getAllyId()); - writeD(_player.getAllyCrestId()); // ally crest id + packet.writeD(_player.getClanId()); + packet.writeD(_player.getClanCrestId()); + packet.writeD(_player.getAllyId()); + packet.writeD(_player.getAllyCrestId()); // ally crest id // 0x40 leader rights // siege flags: attacker - 0x180 sword over name, defender - 0x80 shield, 0xC0 crown (|leader), 0x1C0 flag (|leader) - writeD(_relation); - writeC(_player.getMountType()); // mount type - writeC(_player.getPrivateStoreType()); - writeC(_player.hasDwarvenCraft() ? 1 : 0); - writeD(_player.getPkKills()); - writeD(_player.getPvpKills()); + packet.writeD(_relation); + packet.writeC(_player.getMountType()); // mount type + packet.writeC(_player.getPrivateStoreType()); + packet.writeC(_player.hasDwarvenCraft() ? 1 : 0); + packet.writeD(_player.getPkKills()); + packet.writeD(_player.getPvpKills()); - writeH(_player.getCubics().size()); + packet.writeH(_player.getCubics().size()); for (int cubicId : _player.getCubics().keySet()) { - writeH(cubicId); + packet.writeH(cubicId); } - writeC(_player.isInPartyMatchRoom() ? 1 : 0); + packet.writeC(_player.isInPartyMatchRoom() ? 1 : 0); if (_player.getAppearance().isInvisible()) { - writeD((_player.getAbnormalEffect() | Creature.ABNORMAL_EFFECT_STEALTH)); + packet.writeD((_player.getAbnormalEffect() | Creature.ABNORMAL_EFFECT_STEALTH)); } else { - writeD(_player.getAbnormalEffect()); // C2 + packet.writeD(_player.getAbnormalEffect()); // C2 } - writeC(0x00); + packet.writeC(0x00); - writeD(_player.getClanPrivileges()); + packet.writeD(_player.getClanPrivileges()); - writeH(_player.getRecomLeft()); // c2 recommendations remaining - writeH(_player.getRecomHave()); // c2 recommendations received - writeD(0x00); // _player.getMountNpcId() > 0 ? _player.getMountNpcId() + 1000000 : 0 - writeH(_player.getInventoryLimit()); + packet.writeH(_player.getRecomLeft()); // c2 recommendations remaining + packet.writeH(_player.getRecomHave()); // c2 recommendations received + packet.writeD(0x00); // _player.getMountNpcId() > 0 ? _player.getMountNpcId() + 1000000 : 0 + packet.writeH(_player.getInventoryLimit()); - writeD(_player.getClassId().getId()); - writeD(0x00); // special effects? circles around player... - writeD(_player.getMaxCp()); - writeD((int) _player.getCurrentCp()); - writeC(_player.isMounted() ? 0 : _player.getEnchantEffect()); + packet.writeD(_player.getClassId().getId()); + packet.writeD(0x00); // special effects? circles around player... + packet.writeD(_player.getMaxCp()); + packet.writeD((int) _player.getCurrentCp()); + packet.writeC(_player.isMounted() ? 0 : _player.getEnchantEffect()); if (_player.getTeam() == 1) { - writeC(0x01); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x01); // team circle around feet 1= Blue, 2 = red } else if (_player.getTeam() == 2) { - writeC(0x02); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x02); // team circle around feet 1= Blue, 2 = red } else { - writeC(0x00); // team circle around feet 1= Blue, 2 = red + packet.writeC(0x00); // team circle around feet 1= Blue, 2 = red } - writeD(_player.getClanCrestLargeId()); - writeC(_player.isNoble() ? 1 : 0); // 0x01: symbol on char menu ctrl+I - writeC((_player.isHero() || (_player.isGM() && Config.GM_HERO_AURA) || _player.isPVPHero()) ? 1 : 0); // 0x01: Hero Aura + packet.writeD(_player.getClanCrestLargeId()); + packet.writeC(_player.isNoble() ? 1 : 0); // 0x01: symbol on char menu ctrl+I + packet.writeC((_player.isHero() || (_player.isGM() && Config.GM_HERO_AURA) || _player.isPVPHero()) ? 1 : 0); // 0x01: Hero Aura - writeC(_player.isFishing() ? 1 : 0); // Fishing Mode - writeD(_player.getFishX()); // fishing x - writeD(_player.getFishY()); // fishing y - writeD(_player.getFishZ()); // fishing z - writeD(_player.getAppearance().getNameColor()); + packet.writeC(_player.isFishing() ? 1 : 0); // Fishing Mode + packet.writeD(_player.getFishX()); // fishing x + packet.writeD(_player.getFishY()); // fishing y + packet.writeD(_player.getFishZ()); // fishing z + packet.writeD(_player.getAppearance().getNameColor()); // new c5 - writeC(_player.isRunning() ? 0x01 : 0x00); // changes the Speed display on Status Window + packet.writeC(_player.isRunning() ? 0x01 : 0x00); // changes the Speed display on Status Window - writeD(_player.getPledgeClass()); // changes the text above CP on Status Window - writeD(_player.getPledgeType()); + packet.writeD(_player.getPledgeClass()); // changes the text above CP on Status Window + packet.writeD(_player.getPledgeType()); - writeD(_player.getAppearance().getTitleColor()); + packet.writeD(_player.getAppearance().getTitleColor()); if (_player.isCursedWeaponEquiped()) { - writeD(CursedWeaponsManager.getInstance().getLevel(_player.getCursedWeaponEquipedId())); + packet.writeD(CursedWeaponsManager.getInstance().getLevel(_player.getCursedWeaponEquipedId())); } else { - writeD(0x00); + packet.writeD(0x00); } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocation.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocation.java index b1075f8646..7b3c4154db 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocation.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocation.java @@ -16,9 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class ValidateLocation extends GameServerPacket +public class ValidateLocation implements IClientOutgoingPacket { private final int _objectId; private final int _x; @@ -36,14 +38,15 @@ public class ValidateLocation extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x61); + OutgoingPackets.VALIDATE_LOCATION.writeId(packet); - writeD(_objectId); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); + packet.writeD(_objectId); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocationInVehicle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocationInVehicle.java index d28993cdba..efa7f29cc0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocationInVehicle.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ValidateLocationInVehicle.java @@ -16,10 +16,12 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class ValidateLocationInVehicle extends GameServerPacket +public class ValidateLocationInVehicle implements IClientOutgoingPacket { private int _boat = 1343225858; private final int _x; @@ -39,14 +41,15 @@ public class ValidateLocationInVehicle extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x73); - writeD(_playerObj); - writeD(_boat); - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); + OutgoingPackets.VALIDATE_LOCATION_IN_VEHICLE.writeId(packet); + packet.writeD(_playerObj); + packet.writeD(_boat); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + packet.writeD(_heading); + return true; } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/VehicleDeparture.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/VehicleDeparture.java index 8dcb26feeb..54b4297156 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/VehicleDeparture.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/VehicleDeparture.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class VehicleDeparture extends GameServerPacket +public class VehicleDeparture implements IClientOutgoingPacket { private final BoatInstance _boat; private final int _speed1; @@ -49,14 +51,15 @@ public class VehicleDeparture extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x5a); - writeD(_boat.getObjectId()); - writeD(_speed1); - writeD(_speed2); - writeD(_x); - writeD(_y); - writeD(_z); + OutgoingPackets.VEHICLE_DEPARTURE.writeId(packet); + packet.writeD(_boat.getObjectId()); + packet.writeD(_speed1); + packet.writeD(_speed2); + packet.writeD(_x); + packet.writeD(_y); + packet.writeD(_z); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/VehicleInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/VehicleInfo.java index 9fca1f48b6..51d7099470 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/VehicleInfo.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/VehicleInfo.java @@ -16,12 +16,14 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * @author Maktakien */ -public class VehicleInfo extends GameServerPacket +public class VehicleInfo implements IClientOutgoingPacket { private final BoatInstance _boat; @@ -34,13 +36,14 @@ public class VehicleInfo extends GameServerPacket } @Override - protected void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x59); - writeD(_boat.getObjectId()); - writeD(_boat.getX()); - writeD(_boat.getY()); - writeD(_boat.getZ()); - writeD(_boat.getPosition().getHeading()); + OutgoingPackets.VEHICLE_INFO.writeId(packet); + packet.writeD(_boat.getObjectId()); + packet.writeD(_boat.getX()); + packet.writeD(_boat.getY()); + packet.writeD(_boat.getZ()); + packet.writeD(_boat.getPosition().getHeading()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseDepositList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseDepositList.java index 4d1fdcac71..ea25810a38 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseDepositList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseDepositList.java @@ -19,14 +19,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.ArrayList; import java.util.List; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 0x53 WareHouseDepositList dh (h dddhh dhhh d) * @version $Revision: 1.4.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $ */ -public class WareHouseDepositList extends GameServerPacket +public class WareHouseDepositList implements IClientOutgoingPacket { public static final int PRIVATE = 1; public static final int CLAN = 2; @@ -63,38 +65,39 @@ public class WareHouseDepositList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x41); + OutgoingPackets.WARE_HOUSE_DEPOSIT_LIST.writeId(packet); /* * 0x01-Private Warehouse 0x02-Clan Warehouse 0x03-Castle Warehouse 0x04-Warehouse */ - writeH(_whType); - writeD(_playerAdena); - writeH(_items.size()); + packet.writeH(_whType); + packet.writeD(_playerAdena); + packet.writeH(_items.size()); for (ItemInstance item : _items) { - writeH(item.getItem().getType1()); // item type1 //unconfirmed, works - writeD(item.getObjectId()); // unconfirmed, works - writeD(item.getItemId()); // unconfirmed, works - writeD(item.getCount()); // unconfirmed, works - writeH(item.getItem().getType2()); // item type2 //unconfirmed, works - writeH(0x00); // ? 100 - writeD(item.getItem().getBodyPart()); // ? - writeH(item.getEnchantLevel()); // enchant level -confirmed - writeH(0x00); // ? 300 - writeH(0x00); // ? 200 - writeD(item.getObjectId()); // item id - confimed + packet.writeH(item.getItem().getType1()); // item type1 //unconfirmed, works + packet.writeD(item.getObjectId()); // unconfirmed, works + packet.writeD(item.getItemId()); // unconfirmed, works + packet.writeD(item.getCount()); // unconfirmed, works + packet.writeH(item.getItem().getType2()); // item type2 //unconfirmed, works + packet.writeH(0x00); // ? 100 + packet.writeD(item.getItem().getBodyPart()); // ? + packet.writeH(item.getEnchantLevel()); // enchant level -confirmed + packet.writeH(0x00); // ? 300 + packet.writeH(0x00); // ? 200 + packet.writeD(item.getObjectId()); // item id - confimed if (item.isAugmented()) { - writeD(0x0000FFFF & item.getAugmentation().getAugmentationId()); - writeD(item.getAugmentation().getAugmentationId() >> 16); + packet.writeD(0x0000FFFF & item.getAugmentation().getAugmentationId()); + packet.writeD(item.getAugmentation().getAugmentationId() >> 16); } else { - writeQ(0x00); + packet.writeQ(0x00); } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseWithdrawalList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseWithdrawalList.java index 0fdc85d013..a59a8ece4a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseWithdrawalList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WareHouseWithdrawalList.java @@ -18,14 +18,16 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; /** * 0x42 WarehouseWithdrawalList dh (h dddhh dhhh d) * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/29 23:15:10 $ */ -public class WareHouseWithdrawalList extends GameServerPacket +public class WareHouseWithdrawalList implements IClientOutgoingPacket { private static final Logger LOGGER = Logger.getLogger(WareHouseWithdrawalList.class.getName()); @@ -54,38 +56,39 @@ public class WareHouseWithdrawalList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0x42); + OutgoingPackets.WARE_HOUSE_WITHDRAWAL_LIST.writeId(packet); /* * 0x01-Private Warehouse 0x02-Clan Warehouse 0x03-Castle Warehouse 0x04-Warehouse */ - writeH(_whType); - writeD(_playerAdena); - writeH(_items.length); + packet.writeH(_whType); + packet.writeD(_playerAdena); + packet.writeH(_items.length); for (ItemInstance item : _items) { - writeH(item.getItem().getType1()); // item type1 //unconfirmed, works - writeD(0x00); // unconfirmed, works - writeD(item.getItemId()); // unconfirmed, works - writeD(item.getCount()); // unconfirmed, works - writeH(item.getItem().getType2()); // item type2 //unconfirmed, works - writeH(0x00); // ? - writeD(item.getItem().getBodyPart()); // ? - writeH(item.getEnchantLevel()); // enchant level -confirmed - writeH(0x00); // ? - writeH(0x00); // ? - writeD(item.getObjectId()); // item id - confimed + packet.writeH(item.getItem().getType1()); // item type1 //unconfirmed, works + packet.writeD(0x00); // unconfirmed, works + packet.writeD(item.getItemId()); // unconfirmed, works + packet.writeD(item.getCount()); // unconfirmed, works + packet.writeH(item.getItem().getType2()); // item type2 //unconfirmed, works + packet.writeH(0x00); // ? + packet.writeD(item.getItem().getBodyPart()); // ? + packet.writeH(item.getEnchantLevel()); // enchant level -confirmed + packet.writeH(0x00); // ? + packet.writeH(0x00); // ? + packet.writeD(item.getObjectId()); // item id - confimed if (item.isAugmented()) { - writeD(0x0000FFFF & item.getAugmentation().getAugmentationId()); - writeD(item.getAugmentation().getAugmentationId() >> 16); + packet.writeD(0x0000FFFF & item.getAugmentation().getAugmentationId()); + packet.writeD(item.getAugmentation().getAugmentationId() >> 16); } else { - writeQ(0x00); + packet.writeQ(0x00); } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WearList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WearList.java index 9575a0804c..1894283ae6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WearList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/WearList.java @@ -19,11 +19,13 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.List; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.StoreTradeList; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.network.OutgoingPackets; -public class WearList extends GameServerPacket +public class WearList implements IClientOutgoingPacket { private final int _listId; private final ItemInstance[] _list; @@ -47,15 +49,15 @@ public class WearList extends GameServerPacket } @Override - protected final void writeImpl() + public boolean write(PacketWriter packet) { - writeC(0xef); - writeC(0xc0); // ? - writeC(0x13); // ? - writeC(0x00); // ? - writeC(0x00); // ? - writeD(_money); // current money - writeD(_listId); + OutgoingPackets.WEAR_LIST.writeId(packet); + packet.writeC(0xc0); // ? + packet.writeC(0x13); // ? + packet.writeC(0x00); // ? + packet.writeC(0x00); // ? + packet.writeD(_money); // current money + packet.writeD(_listId); int newlength = 0; for (ItemInstance item : _list) @@ -65,26 +67,27 @@ public class WearList extends GameServerPacket newlength++; } } - writeH(newlength); + packet.writeH(newlength); for (ItemInstance item : _list) { if ((item.getItem().getCrystalType() <= _expertise) && item.isEquipable()) { - writeD(item.getItemId()); - writeH(item.getItem().getType2()); // item type2 + packet.writeD(item.getItemId()); + packet.writeH(item.getItem().getType2()); // item type2 if (item.getItem().getType1() != Item.TYPE1_ITEM_QUESTITEM_ADENA) { - writeH(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(item.getItem().getBodyPart()); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand } else { - writeH(0x00); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand + packet.writeH(0x00); // rev 415 slot 0006-lr.ear 0008-neck 0030-lr.finger 0040-head 0080-?? 0100-l.hand 0200-gloves 0400-chest 0800-pants 1000-feet 2000-?? 4000-r.hand 8000-r.hand } - writeD(Config.WEAR_PRICE); + packet.writeD(Config.WEAR_PRICE); } } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java index 825577bab2..1b173b5c7f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java @@ -22,7 +22,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.CharInfo; -import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.RelationChanged; public class Broadcast @@ -38,7 +38,7 @@ public class Broadcast * @param creature * @param mov */ - public static void toPlayersTargettingMyself(Creature creature, GameServerPacket mov) + public static void toPlayersTargettingMyself(Creature creature, IClientOutgoingPacket mov) { for (PlayerInstance player : creature.getKnownList().getKnownPlayers().values()) { @@ -62,7 +62,7 @@ public class Broadcast * @param creature * @param mov */ - public static void toKnownPlayers(Creature creature, GameServerPacket mov) + public static void toKnownPlayers(Creature creature, IClientOutgoingPacket mov) { for (PlayerInstance player : creature.getKnownList().getKnownPlayers().values()) { @@ -107,7 +107,7 @@ public class Broadcast * @param mov * @param radiusValue */ - public static void toKnownPlayersInRadius(Creature creature, GameServerPacket mov, int radiusValue) + public static void toKnownPlayersInRadius(Creature creature, IClientOutgoingPacket mov, int radiusValue) { int radius = radiusValue; if (radius < 0) @@ -139,7 +139,7 @@ public class Broadcast * @param creature * @param mov */ - public static void toSelfAndKnownPlayers(Creature creature, GameServerPacket mov) + public static void toSelfAndKnownPlayers(Creature creature, IClientOutgoingPacket mov) { if (creature instanceof PlayerInstance) { @@ -150,7 +150,7 @@ public class Broadcast } // To improve performance we are comparing values of radius^2 instead of calculating sqrt all the time - public static void toSelfAndKnownPlayersInRadius(Creature creature, GameServerPacket mov, long radiusSqValue) + public static void toSelfAndKnownPlayersInRadius(Creature creature, IClientOutgoingPacket mov, long radiusSqValue) { long radiusSq = radiusSqValue; if (radiusSq < 0) @@ -181,7 +181,7 @@ public class Broadcast * Caution: This method DOESN'T SEND Server->Client packet to this Creature (to do this use method toSelfAndKnownPlayers) * @param packet */ - public static void toAllOnlinePlayers(GameServerPacket packet) + public static void toAllOnlinePlayers(IClientOutgoingPacket packet) { for (PlayerInstance onlinePlayer : World.getInstance().getAllPlayers()) { @@ -200,7 +200,7 @@ public class Broadcast * @param zoneType : The zone type to send packets. * @param packets : The packets to send. */ - public static void toAllPlayersInZoneType(Class zoneType, GameServerPacket... packets) + public static void toAllPlayersInZoneType(Class zoneType, IClientOutgoingPacket... packets) { for (ZoneType zone : ZoneData.getInstance().getAllZones(zoneType)) { @@ -211,7 +211,7 @@ public class Broadcast continue; } - for (GameServerPacket packet : packets) + for (IClientOutgoingPacket packet : packets) { creature.sendPacket(packet); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/FloodProtectorAction.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/FloodProtectorAction.java index ffa96dfe5a..e12568b976 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/FloodProtectorAction.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/FloodProtectorAction.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.util.StringUtil; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance.PunishLevel; +import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.GameClient; /** @@ -304,14 +305,16 @@ public class FloodProtectorAction { if (!client.isDetached()) { - address = client.getConnection().getInetAddress().getHostAddress(); + address = client.getConnectionAddress().getHostAddress(); } } catch (Exception e) { + // Ignore. } - switch (client.getState()) + final ConnectionState state = (ConnectionState) client.getConnectionState(); + switch (state) { case ENTERING: case IN_GAME: diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/log/formatter/AccountingFormatter.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/log/formatter/AccountingFormatter.java new file mode 100644 index 0000000000..2647110243 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/log/formatter/AccountingFormatter.java @@ -0,0 +1,117 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.log.formatter; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.logging.Formatter; +import java.util.logging.LogRecord; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.util.StringUtil; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.network.ConnectionState; +import org.l2jmobius.gameserver.network.GameClient; + +public class AccountingFormatter extends Formatter +{ + private final SimpleDateFormat dateFmt = new SimpleDateFormat("dd MMM H:mm:ss"); + + @Override + public String format(LogRecord record) + { + final Object[] params = record.getParameters(); + final StringBuilder output = StringUtil.startAppend(30 + record.getMessage().length() + (params == null ? 0 : params.length * 10), "[", dateFmt.format(new Date(record.getMillis())), "] ", record.getMessage()); + + if (params != null) + { + for (Object p : params) + { + if (p == null) + { + continue; + } + + StringUtil.append(output, ", "); + + if (p instanceof GameClient) + { + final GameClient client = (GameClient) p; + String address = null; + try + { + if (!client.isDetached()) + { + address = client.getConnectionAddress().getHostAddress(); + } + } + catch (Exception e) + { + // Ignore. + } + + switch ((ConnectionState) client.getConnectionState()) + { + case ENTERING: + case IN_GAME: + { + if (client.getPlayer() != null) + { + StringUtil.append(output, client.getPlayer().getName()); + StringUtil.append(output, "(", String.valueOf(client.getPlayer().getObjectId()), ") "); + } + break; + } + case AUTHENTICATED: + { + if (client.getAccountName() != null) + { + StringUtil.append(output, client.getAccountName(), " "); + } + break; + } + case CONNECTED: + { + if (address != null) + { + StringUtil.append(output, address); + } + break; + } + default: + { + throw new IllegalStateException("Missing state on switch"); + } + } + } + else if (p instanceof PlayerInstance) + { + final PlayerInstance player = (PlayerInstance) p; + StringUtil.append(output, player.getName()); + StringUtil.append(output, "(", String.valueOf(player.getObjectId()), ")"); + } + else + { + StringUtil.append(output, p.toString()); + } + } + } + + output.append(Config.EOL); + return output.toString(); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/log/handler/AccountingLogHandler.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/log/handler/AccountingLogHandler.java new file mode 100644 index 0000000000..ebde983750 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/log/handler/AccountingLogHandler.java @@ -0,0 +1,28 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.log.handler; + +import java.io.IOException; +import java.util.logging.FileHandler; + +public class AccountingLogHandler extends FileHandler +{ + public AccountingLogHandler() throws IOException + { + super(); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/BruteProtector.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/BruteProtector.java deleted file mode 100644 index dae946d050..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/BruteProtector.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.loginserver; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Chronos; - -public class BruteProtector -{ - private static final Logger LOGGER = Logger.getLogger(BruteProtector.class.getName()); - private static final Map> _clients = new HashMap<>(); - - public static boolean canLogin(String ip) - { - if (!_clients.containsKey(ip)) - { - _clients.put(ip, new ArrayList()); - _clients.get(ip).add((int) (Chronos.currentTimeMillis() / 1000)); - return true; - } - - _clients.get(ip).add((int) (Chronos.currentTimeMillis() / 1000)); - - /* - * I am not quite sure because we can have a number of NATed clients with single IP if (currentAttemptTime - lastAttemptTime <= 2) // Time between last login attempt and current less or equal than 2 seconds return false; - */ - if (_clients.get(ip).size() < Config.BRUT_LOGON_ATTEMPTS) - { - return true; - } - - // Calculating average time difference between attempts - int lastTime = 0; - int avg = 0; - for (int i : _clients.get(ip)) - { - if (lastTime == 0) - { - lastTime = i; - continue; - } - avg += i - lastTime; - lastTime = i; - } - avg = avg / (_clients.get(ip).size() - 1); - - // Minimum average time difference (in seconds) between attempts - if (avg < Config.BRUT_AVG_TIME) - { - LOGGER.warning("IP " + ip + " has " + avg + " seconds between login attempts. Possible BruteForce."); - // Deleting 2 first elements because if ban will disappear user should have a possibility to logon - synchronized (_clients.get(ip)) - { - _clients.get(ip).remove(0); - _clients.get(ip).remove(0); - } - - return false; // IP have to be banned - } - - synchronized (_clients.get(ip)) - { - _clients.get(ip).remove(0); - } - - return true; - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/FloodProtectedListener.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/FloodProtectedListener.java index 3d6ee6acb1..e2bbcc1aa3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/FloodProtectedListener.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/FloodProtectedListener.java @@ -20,8 +20,9 @@ import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; -import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Level; import java.util.logging.Logger; import org.l2jmobius.Config; @@ -33,22 +34,18 @@ import org.l2jmobius.commons.util.Chronos; public abstract class FloodProtectedListener extends Thread { private static final Logger LOGGER = Logger.getLogger(FloodProtectedListener.class.getName()); - private final Map _floodProtection = new HashMap<>(); - private final String _listenIp; - private final int _port; + private final Map _floodProtection = new ConcurrentHashMap<>(); private ServerSocket _serverSocket; public FloodProtectedListener(String listenIp, int port) throws IOException { - _port = port; - _listenIp = listenIp; - if (_listenIp.equals("*")) + if (listenIp.equals("*")) { - _serverSocket = new ServerSocket(_port); + _serverSocket = new ServerSocket(port); } else { - _serverSocket = new ServerSocket(_port, 50, InetAddress.getByName(_listenIp)); + _serverSocket = new ServerSocket(port, 50, InetAddress.getByName(listenIp)); } } @@ -56,8 +53,7 @@ public abstract class FloodProtectedListener extends Thread public void run() { Socket connection = null; - - while (true) + while (!isInterrupted()) { try { @@ -72,23 +68,19 @@ public abstract class FloodProtectedListener extends Thread { fConnection.lastConnection = Chronos.currentTimeMillis(); connection.close(); - fConnection.connectionNumber -= 1; if (!fConnection.isFlooding) { LOGGER.warning("Potential Flood from " + connection.getInetAddress().getHostAddress()); } - fConnection.isFlooding = true; continue; } - if (fConnection.isFlooding) // if connection was flooding server but now passed the check { fConnection.isFlooding = false; LOGGER.info(connection.getInetAddress().getHostAddress() + " is not considered as flooding anymore."); } - fConnection.lastConnection = Chronos.currentTimeMillis(); } else @@ -97,20 +89,11 @@ public abstract class FloodProtectedListener extends Thread _floodProtection.put(connection.getInetAddress().getHostAddress(), fConnection); } } + addClient(connection); } catch (Exception e) { - try - { - if (connection != null) - { - connection.close(); - } - } - catch (Exception e2) - { - } if (isInterrupted()) { // shutdown? @@ -120,7 +103,7 @@ public abstract class FloodProtectedListener extends Thread } catch (IOException io) { - LOGGER.warning("fixme: unhandled exception " + io); + LOGGER.log(Level.INFO, "", io); } break; } @@ -152,7 +135,6 @@ public abstract class FloodProtectedListener extends Thread { return; } - final ForeignConnection fConnection = _floodProtection.get(ip); if (fConnection != null) { @@ -176,7 +158,7 @@ public abstract class FloodProtectedListener extends Thread } catch (IOException e) { - LOGGER.warning(e.toString()); + LOGGER.warning(getClass().getSimpleName() + ": " + e.getMessage()); } } -} +} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerListener.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerListener.java index a060a74728..3d2bfc947b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerListener.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerListener.java @@ -18,8 +18,8 @@ package org.l2jmobius.loginserver; import java.io.IOException; import java.net.Socket; -import java.util.ArrayList; -import java.util.List; +import java.util.Collection; +import java.util.concurrent.ConcurrentHashMap; import org.l2jmobius.Config; @@ -28,22 +28,18 @@ import org.l2jmobius.Config; */ public class GameServerListener extends FloodProtectedListener { - private static List _gameServers = new ArrayList<>(); + private static Collection _gameServers = ConcurrentHashMap.newKeySet(); public GameServerListener() throws IOException { super(Config.GAME_SERVER_LOGIN_HOST, Config.GAME_SERVER_LOGIN_PORT); + setName(getClass().getSimpleName()); } - /** - * @see org.l2jmobius.loginserver.FloodProtectedListener#addClient(java.net.Socket) - */ @Override public void addClient(Socket s) { - final GameServerThread gst = new GameServerThread(s); - gst.start(); - _gameServers.add(gst); + _gameServers.add(new GameServerThread(s)); } public void removeGameServer(GameServerThread gst) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerTable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerTable.java index 06e0127b8d..97b0d7d8dd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerTable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerTable.java @@ -18,44 +18,43 @@ package org.l2jmobius.loginserver; import java.io.File; import java.math.BigInteger; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.spec.RSAKeyGenParameterSpec; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; +import org.w3c.dom.NodeList; -import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.commons.util.IPSubnet; +import org.l2jmobius.commons.util.IXmlReader; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.loginserver.network.LoginClient; import org.l2jmobius.loginserver.network.gameserverpackets.ServerStatus; /** - * @author KenM + * The Class GameServerTable loads the game server names and initialize the game server tables. + * @author KenM, Zoey76 */ -public class GameServerTable +public class GameServerTable implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(GameServerTable.class.getName()); - // Server Names Config - private static Map _serverNames = new HashMap<>(); - + // Server Names + private static final Map SERVER_NAMES = new HashMap<>(); // Game Server Table - private final Map _gameServerTable = new ConcurrentHashMap<>(); - + private static final Map GAME_SERVER_TABLE = new HashMap<>(); // RSA Config private static final int KEYS_SIZE = 10; private KeyPair[] _keyPairs; @@ -65,22 +64,42 @@ public class GameServerTable */ public GameServerTable() { - loadServerNames(); - LOGGER.info("Loaded " + _serverNames.size() + " server names."); + load(); + loadRegisteredGameServers(); - LOGGER.info("Loaded " + _gameServerTable.size() + " registered Game Servers."); - loadRSAKeys(); + LOGGER.info("Loaded " + GAME_SERVER_TABLE.size() + " registered Game Servers."); + + initRSAKeys(); LOGGER.info("Cached " + _keyPairs.length + " RSA keys for Game Server communication."); } - private void loadRSAKeys() + @Override + public void load() + { + SERVER_NAMES.clear(); + parseDatapackFile("data/servername.xml"); + LOGGER.info("Loaded " + SERVER_NAMES.size() + " server names."); + } + + @Override + public void parseDocument(Document doc, File f) + { + final NodeList servers = doc.getElementsByTagName("server"); + for (int s = 0; s < servers.getLength(); s++) + { + SERVER_NAMES.put(parseInteger(servers.item(s).getAttributes(), "id"), parseString(servers.item(s).getAttributes(), "name")); + } + } + + /** + * Inits the RSA keys. + */ + private void initRSAKeys() { try { final KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); - final RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(512, RSAKeyGenParameterSpec.F4); - keyGen.initialize(spec); - + keyGen.initialize(new RSAKeyGenParameterSpec(512, RSAKeyGenParameterSpec.F4)); _keyPairs = new KeyPair[KEYS_SIZE]; for (int i = 0; i < KEYS_SIZE; i++) { @@ -93,84 +112,73 @@ public class GameServerTable } } - private void loadServerNames() - { - try - { - final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - final DocumentBuilder db = dbf.newDocumentBuilder(); - final Document doc = db.parse(new File(Config.SERVER_NAME_FILE)); - final Node n = doc.getFirstChild(); - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) - { - if (d.getNodeName().equalsIgnoreCase("server")) - { - final NamedNodeMap attrs = d.getAttributes(); - final int id = Integer.parseInt(attrs.getNamedItem("id").getNodeValue()); - final String name = attrs.getNamedItem("name").getNodeValue(); - _serverNames.put(id, name); - } - } - } - catch (Exception e) - { - LOGGER.warning("GameServerTable: servername.xml could not be loaded."); - } - } - + /** + * Load registered game servers. + */ private void loadRegisteredGameServers() { - PreparedStatement statement = null; - - try (Connection con = DatabaseFactory.getConnection()) + try (Connection con = DatabaseFactory.getConnection(); + Statement ps = con.createStatement(); + ResultSet rs = ps.executeQuery("SELECT * FROM gameservers")) { int id; - statement = con.prepareStatement("SELECT * FROM gameservers"); - final ResultSet rset = statement.executeQuery(); - GameServerInfo gsi; - - while (rset.next()) + while (rs.next()) { - id = rset.getInt("server_id"); - gsi = new GameServerInfo(id, stringToHex(rset.getString("hexid"))); - _gameServerTable.put(id, gsi); + id = rs.getInt("server_id"); + GAME_SERVER_TABLE.put(id, new GameServerInfo(id, stringToHex(rs.getString("hexid")))); } - - rset.close(); - statement.close(); } catch (Exception e) { - LOGGER.warning(e.toString()); + LOGGER.severe("Error loading registered game servers!"); } } + /** + * Gets the registered game servers. + * @return the registered game servers + */ public Map getRegisteredGameServers() { - return _gameServerTable; + return GAME_SERVER_TABLE; } + /** + * Gets the registered game server by id. + * @param id the game server Id + * @return the registered game server by id + */ public GameServerInfo getRegisteredGameServerById(int id) { - return _gameServerTable.get(id); + return GAME_SERVER_TABLE.get(id); } + /** + * Checks for registered game server on id. + * @param id the id + * @return true, if successful + */ public boolean hasRegisteredGameServerOnId(int id) { - return _gameServerTable.containsKey(id); + return GAME_SERVER_TABLE.containsKey(id); } - public boolean registerWithFirstAvaliableId(GameServerInfo gsi) + /** + * Register with first available id. + * @param gsi the game server information DTO + * @return true, if successful + */ + public boolean registerWithFirstAvailableId(GameServerInfo gsi) { // avoid two servers registering with the same "free" id - synchronized (_gameServerTable) + synchronized (GAME_SERVER_TABLE) { - for (Entry entry : _serverNames.entrySet()) + for (Integer serverId : SERVER_NAMES.keySet()) { - if (!_gameServerTable.containsKey(entry.getKey())) + if (!GAME_SERVER_TABLE.containsKey(serverId)) { - _gameServerTable.put(entry.getKey(), gsi); - gsi.setId(entry.getKey()); + GAME_SERVER_TABLE.put(serverId, gsi); + gsi.setId(serverId); return true; } } @@ -178,65 +186,101 @@ public class GameServerTable return false; } + /** + * Register a game server. + * @param id the id + * @param gsi the gsi + * @return true, if successful + */ public boolean register(int id, GameServerInfo gsi) { // avoid two servers registering with the same id - synchronized (_gameServerTable) + synchronized (GAME_SERVER_TABLE) { - if (!_gameServerTable.containsKey(id)) + if (!GAME_SERVER_TABLE.containsKey(id)) { - _gameServerTable.put(id, gsi); - gsi.setId(id); + GAME_SERVER_TABLE.put(id, gsi); return true; } } return false; } + /** + * Wrapper method. + * @param gsi the game server info DTO. + */ public void registerServerOnDB(GameServerInfo gsi) { registerServerOnDB(gsi.getHexId(), gsi.getId(), gsi.getExternalHost()); } + /** + * Register server on db. + * @param hexId the hex id + * @param id the id + * @param externalHost the external host + */ public void registerServerOnDB(byte[] hexId, int id, String externalHost) { - PreparedStatement statement = null; - try (Connection con = DatabaseFactory.getConnection()) + register(id, new GameServerInfo(id, hexId)); + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement("INSERT INTO gameservers (hexid,server_id,host) values (?,?,?)")) { - statement = con.prepareStatement("INSERT INTO gameservers (hexid,server_id,host) values (?,?,?)"); - statement.setString(1, hexToString(hexId)); - statement.setInt(2, id); - statement.setString(3, externalHost); - statement.executeUpdate(); - - statement.close(); + ps.setString(1, hexToString(hexId)); + ps.setInt(2, id); + ps.setString(3, externalHost); + ps.executeUpdate(); } - catch (SQLException e) + catch (Exception e) { - LOGGER.warning("SQL error while saving gameserver: " + e); + LOGGER.severe("Error while saving gameserver!"); } } + /** + * Gets the server name by id. + * @param id the id + * @return the server name by id + */ public String getServerNameById(int id) { - return _serverNames.get(id); + return SERVER_NAMES.get(id); } + /** + * Gets the server names. + * @return the game server names map. + */ public Map getServerNames() { - return _serverNames; + return SERVER_NAMES; } + /** + * Gets the key pair. + * @return a random key pair. + */ public KeyPair getKeyPair() { return _keyPairs[Rnd.get(10)]; } + /** + * String to hex. + * @param string the string to convert. + * @return return the hex representation. + */ private byte[] stringToHex(String string) { return new BigInteger(string, 16).toByteArray(); } + /** + * Hex to string. + * @param hex the hex value to convert. + * @return the string representation. + */ private String hexToString(byte[] hex) { if (hex == null) @@ -246,30 +290,34 @@ public class GameServerTable return new BigInteger(hex).toString(16); } + /** + * The Class GameServerInfo. + */ public static class GameServerInfo { // auth private int _id; private final byte[] _hexId; private boolean _isAuthed; - // status private GameServerThread _gst; private int _status; - // network - private String _internalIp; - private String _externalIp; - private String _externalHost; + private final List _addrs = new ArrayList<>(5); private int _port; - // config - private final boolean _isPvp = true; - private boolean _isTestServer; - private boolean _isShowingClock; + private static final boolean IS_PVP = true; + private int _serverType; + private int _ageLimit; private boolean _isShowingBrackets; private int _maxPlayers; + /** + * Instantiates a new game server info. + * @param id the id + * @param hexId the hex id + * @param gst the gst + */ public GameServerInfo(int id, byte[] hexId, GameServerThread gst) { _id = id; @@ -278,46 +326,89 @@ public class GameServerTable _status = ServerStatus.STATUS_DOWN; } + /** + * Instantiates a new game server info. + * @param id the id + * @param hexId the hex id + */ public GameServerInfo(int id, byte[] hexId) { this(id, hexId, null); } + /** + * Sets the id. + * @param id the new id + */ public void setId(int id) { _id = id; } + /** + * Gets the id. + * @return the id + */ public int getId() { return _id; } + /** + * Gets the hex id. + * @return the hex id + */ public byte[] getHexId() { return _hexId; } + public String getName() + { + // this value can't be stored in a private variable because the ID can be changed by setId() + return getInstance().getServerNameById(_id); + } + + /** + * Sets the authed. + * @param isAuthed the new authed + */ public void setAuthed(boolean isAuthed) { _isAuthed = isAuthed; } + /** + * Checks if is authed. + * @return true, if is authed + */ public boolean isAuthed() { return _isAuthed; } + /** + * Sets the game server thread. + * @param gst the new game server thread + */ public void setGameServerThread(GameServerThread gst) { _gst = gst; } + /** + * Gets the game server thread. + * @return the game server thread + */ public GameServerThread getGameServerThread() { return _gst; } + /** + * Sets the status. + * @param status the new status + */ public void setStatus(int status) { if (LoginServer.getInstance().getStatus() == ServerStatus.STATUS_DOWN) @@ -334,11 +425,54 @@ public class GameServerTable } } + /** + * Gets the status. + * @return the status + */ public int getStatus() { return _status; } + public String getStatusName() + { + switch (_status) + { + case 0: + { + return "Auto"; + } + case 1: + { + return "Good"; + } + case 2: + { + return "Normal"; + } + case 3: + { + return "Full"; + } + case 4: + { + return "Down"; + } + case 5: + { + return "GM Only"; + } + default: + { + return "Unknown"; + } + } + } + + /** + * Gets the current player count. + * @return the current player count + */ public int getCurrentPlayerCount() { if (_gst == null) @@ -348,91 +482,143 @@ public class GameServerTable return _gst.getPlayerCount(); } - public void setInternalIp(String internalIp) + public boolean canLogin(LoginClient client) { - _internalIp = internalIp; - } - - public String getInternalHost() - { - return _internalIp; - } - - public void setExternalIp(String externalIp) - { - _externalIp = externalIp; - } - - public String getExternalIp() - { - return _externalIp; - } - - public void setExternalHost(String externalHost) - { - _externalHost = externalHost; + // DOWN status doesn't allow anyone to login. + if (_status == ServerStatus.STATUS_DOWN) + { + return false; + } + + // GM_ONLY status or full server only allows superior access levels accounts to login. + if ((_status == ServerStatus.STATUS_GM_ONLY) || (getCurrentPlayerCount() >= getMaxPlayers())) + { + return client.getAccessLevel() > 0; + } + + // Otherwise, any positive access level account can login. + return client.getAccessLevel() >= 0; } + /** + * Gets the external host. + * @return the external host + */ public String getExternalHost() { - return _externalHost; + try + { + return getServerAddress(InetAddress.getByName("0.0.0.0")); + } + catch (Exception e) + { + // Ignore. + } + return null; } + /** + * Gets the port. + * @return the port + */ public int getPort() { return _port; } + /** + * Sets the port. + * @param port the new port + */ public void setPort(int port) { _port = port; } + /** + * Sets the max players. + * @param maxPlayers the new max players + */ public void setMaxPlayers(int maxPlayers) { _maxPlayers = maxPlayers; } + /** + * Gets the max players. + * @return the max players + */ public int getMaxPlayers() { return _maxPlayers; } + /** + * Checks if is pvp. + * @return true, if is pvp + */ public boolean isPvp() { - return _isPvp; + return IS_PVP; } - public void setTestServer(boolean value) + /** + * Sets the age limit. + * @param value the new age limit + */ + public void setAgeLimit(int value) { - _isTestServer = value; + _ageLimit = value; } - public boolean isTestServer() + /** + * Gets the age limit. + * @return the age limit + */ + public int getAgeLimit() { - return _isTestServer; + return _ageLimit; } - public void setShowingClock(boolean clock) + /** + * Sets the server type. + * @param value the new server type + */ + public void setServerType(int value) { - _isShowingClock = clock; + _serverType = value; } - public boolean isShowingClock() + /** + * Gets the server type. + * @return the server type + */ + public int getServerType() { - return _isShowingClock; + return _serverType; } + /** + * Sets the showing brackets. + * @param value the new showing brackets + */ public void setShowingBrackets(boolean value) { _isShowingBrackets = value; } + /** + * Checks if is showing brackets. + * @return true, if is showing brackets + */ public boolean isShowingBrackets() { return _isShowingBrackets; } + /** + * Sets the down. + */ public void setDown() { setAuthed(false); @@ -440,6 +626,93 @@ public class GameServerTable setGameServerThread(null); setStatus(ServerStatus.STATUS_DOWN); } + + /** + * Adds the server address. + * @param subnet the subnet + * @param addr the addr + * @throws UnknownHostException the unknown host exception + */ + public void addServerAddress(String subnet, String addr) throws UnknownHostException + { + _addrs.add(new GameServerAddress(subnet, addr)); + } + + /** + * Gets the server address. + * @param addr the addr + * @return the server address + */ + @SuppressWarnings("unlikely-arg-type") + public String getServerAddress(InetAddress addr) + { + for (GameServerAddress a : _addrs) + { + if (a.equals(addr)) + { + return a.getServerAddress(); + } + } + return null; // should not happen + } + + /** + * Gets the server addresses. + * @return the server addresses + */ + public String[] getServerAddresses() + { + final String[] result = new String[_addrs.size()]; + for (int i = 0; i < result.length; i++) + { + result[i] = _addrs.get(i).toString(); + } + + return result; + } + + /** + * Clear server addresses. + */ + public void clearServerAddresses() + { + _addrs.clear(); + } + + /** + * The Class GameServerAddress. + */ + private class GameServerAddress extends IPSubnet + { + private final String _serverAddress; + + /** + * Instantiates a new game server address. + * @param subnet the subnet + * @param address the address + * @throws UnknownHostException the unknown host exception + */ + public GameServerAddress(String subnet, String address) throws UnknownHostException + { + super(subnet); + _serverAddress = address; + } + + /** + * Gets the server address. + * @return the server address + */ + public String getServerAddress() + { + return _serverAddress; + } + + @Override + public String toString() + { + return _serverAddress + super.toString(); + } + } } /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerThread.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerThread.java index 6c5a8cdcf4..29659a939b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerThread.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/GameServerThread.java @@ -20,35 +20,22 @@ import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.net.InetAddress; import java.net.Socket; -import java.net.UnknownHostException; -import java.security.KeyPair; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; -import org.l2jmobius.Config; -import org.l2jmobius.commons.crypt.NewCrypt; -import org.l2jmobius.commons.util.Chronos; +import org.l2jmobius.commons.network.BaseSendablePacket; +import org.l2jmobius.commons.util.crypt.NewCrypt; +import org.l2jmobius.commons.util.crypt.ScrambledKeyPair; import org.l2jmobius.loginserver.GameServerTable.GameServerInfo; -import org.l2jmobius.loginserver.network.gameserverpackets.BlowFishKey; -import org.l2jmobius.loginserver.network.gameserverpackets.ChangeAccessLevel; -import org.l2jmobius.loginserver.network.gameserverpackets.GameServerAuth; -import org.l2jmobius.loginserver.network.gameserverpackets.PlayerAuthRequest; -import org.l2jmobius.loginserver.network.gameserverpackets.PlayerInGame; -import org.l2jmobius.loginserver.network.gameserverpackets.PlayerLogout; -import org.l2jmobius.loginserver.network.gameserverpackets.ServerStatus; -import org.l2jmobius.loginserver.network.loginserverpackets.AuthResponse; +import org.l2jmobius.loginserver.network.GameServerPacketHandler; +import org.l2jmobius.loginserver.network.GameServerPacketHandler.GameServerState; import org.l2jmobius.loginserver.network.loginserverpackets.InitLS; import org.l2jmobius.loginserver.network.loginserverpackets.KickPlayer; import org.l2jmobius.loginserver.network.loginserverpackets.LoginServerFail; -import org.l2jmobius.loginserver.network.loginserverpackets.PlayerAuthResponse; -import org.l2jmobius.loginserver.network.serverpackets.ServerBasePacket; /** * @author -Wooden- @@ -63,22 +50,20 @@ public class GameServerThread extends Thread private final RSAPublicKey _publicKey; private final RSAPrivateKey _privateKey; private NewCrypt _blowfish; - private byte[] _blowfishKey; + private GameServerState _loginConnectionState = GameServerState.CONNECTED; private final String _connectionIp; private GameServerInfo _gsi; /** Authed Clients on a GameServer */ - private final Set _accountsOnGameServer = new HashSet<>(); + private final Set _accountsOnGameServer = ConcurrentHashMap.newKeySet(); private String _connectionIPAddress; @Override public void run() { - boolean checkTime = true; - final long time = Chronos.currentTimeMillis(); _connectionIPAddress = _connection.getInetAddress().getHostAddress(); if (isBannedGameserverIP(_connectionIPAddress)) { @@ -97,43 +82,26 @@ public class GameServerThread extends Thread int lengthLo = 0; int length = 0; boolean checksumOk = false; - while (true) + for (;;) { - if (((time - Chronos.currentTimeMillis()) > 10000) && checkTime) - { - _connection.close(); - break; - } - - try - { - lengthLo = _in.read(); - lengthHi = _in.read(); - length = (lengthHi * 256) + lengthLo; - } - catch (IOException e) - { - lengthHi = -1; - /* - * String serverName = getServerId() != -1 ? "[" + getServerId() + "] " + GameServerTable.getInstance().getServerNameById(getServerId()) : "(" + _connectionIPAddress + ")"; String msg = "GameServer " + serverName + ": Connection lost: " + e.getMessage(); LOGGER.info(msg); - * serverName = null; msg = null; - */ - } - + lengthLo = _in.read(); + lengthHi = _in.read(); + length = (lengthHi * 256) + lengthLo; if ((lengthHi < 0) || _connection.isClosed()) { - LOGGER.info("LoginServerThread: Login terminated the connection."); + LOGGER.finer("LoginServerThread: Login terminated the connection."); break; } - byte[] data = new byte[length - 2]; + final byte[] data = new byte[length - 2]; int receivedBytes = 0; int newBytes = 0; - + int left = length - 2; while ((newBytes != -1) && (receivedBytes < (length - 2))) { - newBytes = _in.read(data, 0, length - 2); - receivedBytes = receivedBytes + newBytes; + newBytes = _in.read(data, receivedBytes, left); + receivedBytes += newBytes; + left -= newBytes; } if (receivedBytes != (length - 2)) @@ -143,7 +111,7 @@ public class GameServerThread extends Thread } // decrypt if we have a key - data = _blowfish.decrypt(data); + _blowfish.decrypt(data, 0, data.length); checksumOk = NewCrypt.verifyChecksum(data); if (!checksumOk) { @@ -151,51 +119,7 @@ public class GameServerThread extends Thread return; } - final int packetType = data[0] & 0xff; - switch (packetType) - { - case 00: - { - checkTime = false; - onReceiveBlowfishKey(data); - break; - } - case 01: - { - onGameServerAuth(data); - break; - } - case 02: - { - onReceivePlayerInGame(data); - break; - } - case 03: - { - onReceivePlayerLogOut(data); - break; - } - case 04: - { - onReceiveChangeAccessLevel(data); - break; - } - case 05: - { - onReceivePlayerAuthRequest(data); - break; - } - case 06: - { - onReceiveServerStatus(data); - break; - } - default: - { - LOGGER.warning("Unknown Opcode (" + Integer.toHexString(packetType).toUpperCase() + ") from GameServer, closing connection."); - forceClose(LoginServerFail.NOT_AUTHED); - } - } + GameServerPacketHandler.handlePacket(data, this); } } catch (IOException e) @@ -208,179 +132,17 @@ public class GameServerThread extends Thread { if (isAuthed()) { - _gsi.setDown(); - LOGGER.info("Server [" + getServerId() + "] " + GameServerTable.getInstance().getServerNameById(getServerId()) + " is now set as disconnected"); + if (_gsi != null) + { + _gsi.setDown(); + } + LOGGER.info("Server [" + getServerId() + "] " + GameServerTable.getInstance().getServerNameById(getServerId()) + " is now set as disconnected."); } - LoginServer.getInstance().getGameServerListener().removeGameServer(this); LoginServer.getInstance().getGameServerListener().removeFloodProtection(_connectionIp); } } - private void onReceiveBlowfishKey(byte[] data) - { - final BlowFishKey bfk = new BlowFishKey(data, _privateKey); - _blowfishKey = bfk.getKey(); - _blowfish = new NewCrypt(_blowfishKey); - } - - private void onGameServerAuth(byte[] data) throws IOException - { - handleRegProcess(new GameServerAuth(data)); - if (isAuthed()) - { - final AuthResponse ar = new AuthResponse(_gsi.getId()); - sendPacket(ar); - } - } - - private void onReceivePlayerInGame(byte[] data) - { - if (isAuthed()) - { - final PlayerInGame pig = new PlayerInGame(data); - final List newAccounts = pig.getAccounts(); - for (String account : newAccounts) - { - _accountsOnGameServer.add(account); - } - } - else - { - forceClose(LoginServerFail.NOT_AUTHED); - } - } - - private void onReceivePlayerLogOut(byte[] data) - { - if (isAuthed()) - { - final PlayerLogout plo = new PlayerLogout(data); - _accountsOnGameServer.remove(plo.getAccount()); - } - else - { - forceClose(LoginServerFail.NOT_AUTHED); - } - } - - private void onReceiveChangeAccessLevel(byte[] data) - { - if (isAuthed()) - { - final ChangeAccessLevel cal = new ChangeAccessLevel(data); - LoginController.getInstance().setAccountAccessLevel(cal.getAccount(), cal.getLevel()); - LOGGER.info("Changed " + cal.getAccount() + " access level to " + cal.getLevel()); - } - else - { - forceClose(LoginServerFail.NOT_AUTHED); - } - } - - private void onReceivePlayerAuthRequest(byte[] data) throws IOException - { - if (isAuthed()) - { - final PlayerAuthRequest par = new PlayerAuthRequest(data); - PlayerAuthResponse authResponse; - final SessionKey key = LoginController.getInstance().getKeyForAccount(par.getAccount()); - if ((key != null) && key.equals(par.getKey())) - { - LoginController.getInstance().removeAuthedLoginClient(par.getAccount()); - authResponse = new PlayerAuthResponse(par.getAccount(), true); - } - else - { - authResponse = new PlayerAuthResponse(par.getAccount(), false); - } - sendPacket(authResponse); - } - else - { - forceClose(LoginServerFail.NOT_AUTHED); - } - } - - private void onReceiveServerStatus(byte[] data) - { - if (isAuthed()) - { - new ServerStatus(data, getServerId()); // server status - } - else - { - forceClose(LoginServerFail.NOT_AUTHED); - } - } - - private void handleRegProcess(GameServerAuth gameServerAuth) - { - final GameServerTable gameServerTable = GameServerTable.getInstance(); - final int id = gameServerAuth.getDesiredID(); - final byte[] hexId = gameServerAuth.getHexID(); - GameServerInfo gsi = gameServerTable.getRegisteredGameServerById(id); - // is there a gameserver registered with this id? - if (gsi != null) - { - // does the hex id match? - if (Arrays.equals(gsi.getHexId(), hexId)) - { - // check to see if this GS is already connected - synchronized (gsi) - { - if (gsi.isAuthed()) - { - forceClose(LoginServerFail.REASON_ALREADY_LOGGED8IN); - } - else - { - attachGameServerInfo(gsi, gameServerAuth); - } - } - } - else // there is already a server registered with the desired id and different hex id - // try to register this one with an alternative id - if (Config.ACCEPT_NEW_GAMESERVER && gameServerAuth.acceptAlternateID()) - { - gsi = new GameServerInfo(id, hexId, this); - if (gameServerTable.registerWithFirstAvaliableId(gsi)) - { - attachGameServerInfo(gsi, gameServerAuth); - gameServerTable.registerServerOnDB(gsi); - } - else - { - forceClose(LoginServerFail.REASON_NO_FREE_ID); - } - } - else - { - // server id is already taken, and we cant get a new one for you - forceClose(LoginServerFail.REASON_WRONG_HEXID); - } - } - else // can we register on this id? - if (Config.ACCEPT_NEW_GAMESERVER) - { - gsi = new GameServerInfo(id, hexId, this); - if (gameServerTable.register(id, gsi)) - { - attachGameServerInfo(gsi, gameServerAuth); - gameServerTable.registerServerOnDB(gsi); - } - else - { - // some one took this ID meanwhile - forceClose(LoginServerFail.REASON_ID_RESERVED); - } - } - else - { - forceClose(LoginServerFail.REASON_WRONG_HEXID); - } - } - public boolean hasAccountOnGameServer(String account) { return _accountsOnGameServer.contains(account); @@ -392,34 +154,29 @@ public class GameServerThread extends Thread } /** - * Attachs a GameServerInfo to this Thread + * Attachs a GameServerInfo to this Thread
    + *

      *
    • Updates the GameServerInfo values based on GameServerAuth packet
    • - *
    • Sets the GameServerInfo as Authed

    • + *
    • Sets the GameServerInfo as Authed
    • + *
    * @param gsi The GameServerInfo to be attached. - * @param gameServerAuth The server info. + * @param port + * @param hosts + * @param maxPlayers */ - private void attachGameServerInfo(GameServerInfo gsi, GameServerAuth gameServerAuth) + public void attachGameServerInfo(GameServerInfo gsi, int port, String[] hosts, int maxPlayers) { setGameServerInfo(gsi); gsi.setGameServerThread(this); - gsi.setPort(gameServerAuth.getPort()); - setGameHosts(gameServerAuth.getExternalHost(), gameServerAuth.getInternalHost()); - gsi.setMaxPlayers(gameServerAuth.getMaxPlayers()); + gsi.setPort(port); + setGameHosts(hosts); + gsi.setMaxPlayers(maxPlayers); gsi.setAuthed(true); } - private void forceClose(int reason) + public void forceClose(int reason) { - final LoginServerFail lsf = new LoginServerFail(reason); - - try - { - sendPacket(lsf); - } - catch (IOException e) - { - LOGGER.warning("GameServerThread: Failed kicking banned server " + e); - } + sendPacket(new LoginServerFail(reason)); try { @@ -427,7 +184,7 @@ public class GameServerThread extends Thread } catch (IOException e) { - LOGGER.warning("GameServerThread: Failed disconnecting banned server, server already disconnected " + e); + LOGGER.finer("GameServerThread: Failed disconnecting banned server, server already disconnected."); } } @@ -451,100 +208,69 @@ public class GameServerThread extends Thread } catch (IOException e) { - LOGGER.warning(e.toString()); + LOGGER.warning(getClass().getSimpleName() + ": " + e.getMessage()); } - - final KeyPair pair = GameServerTable.getInstance().getKeyPair(); - _privateKey = (RSAPrivateKey) pair.getPrivate(); - _publicKey = (RSAPublicKey) pair.getPublic(); + final ScrambledKeyPair pair = LoginController.getInstance().getScrambledRSAKeyPair(); + _privateKey = (RSAPrivateKey) pair.getPrivateKey(); + _publicKey = (RSAPublicKey) pair.getPublicKey(); _blowfish = new NewCrypt("_;v.]05-31!|+-%xT!^[$\00"); + setName(getClass().getSimpleName() + "-" + getId() + "@" + _connectionIp); + start(); } /** * @param sl - * @throws IOException */ - private void sendPacket(ServerBasePacket sl) throws IOException + public void sendPacket(BaseSendablePacket sl) { - byte[] data = sl.getContent(); - NewCrypt.appendChecksum(data); - data = _blowfish.crypt(data); - - final int len = data.length + 2; - synchronized (_out) + try { - _out.write(len & 0xff); - _out.write((len >> 8) & 0xff); - _out.write(data); - _out.flush(); + final byte[] data = sl.getContent(); + NewCrypt.appendChecksum(data); + _blowfish.crypt(data, 0, data.length); + + final int len = data.length + 2; + synchronized (_out) + { + _out.write(len & 0xff); + _out.write((len >> 8) & 0xff); + _out.write(data); + _out.flush(); + } + } + catch (IOException e) + { + LOGGER.severe("IOException while sending packet " + sl.getClass().getSimpleName()); } } public void kickPlayer(String account) { - final KickPlayer kp = new KickPlayer(account); - try - { - sendPacket(kp); - } - catch (IOException e) - { - LOGGER.warning(e.toString()); - } + sendPacket(new KickPlayer(account)); } /** - * @param gameExternalHost - * @param gameInternalHost + * @param hosts The gameHost to set. */ - public void setGameHosts(String gameExternalHost, String gameInternalHost) + public void setGameHosts(String[] hosts) { - final String oldInternal = _gsi.getInternalHost(); - final String oldExternal = _gsi.getExternalHost(); - _gsi.setExternalHost(gameExternalHost); - _gsi.setInternalIp(gameInternalHost); - - if (!gameExternalHost.equals("*")) - { - try - { - _gsi.setExternalIp(InetAddress.getByName(gameExternalHost).getHostAddress()); - } - catch (UnknownHostException e) - { - LOGGER.warning("Couldn't resolve hostname \"" + gameExternalHost + "\""); - } - } - else - { - _gsi.setExternalIp(_connectionIp); - } - - if (!gameInternalHost.equals("*")) - { - try - { - _gsi.setInternalIp(InetAddress.getByName(gameInternalHost).getHostAddress()); - } - catch (UnknownHostException e) - { - LOGGER.warning("Couldn't resolve hostname \"" + gameInternalHost + "\""); - } - } - else - { - _gsi.setInternalIp(_connectionIp); - } - LOGGER.info("Updated Gameserver [" + getServerId() + "] " + GameServerTable.getInstance().getServerNameById(getServerId()) + " IP's:"); - if ((oldInternal == null) || !oldInternal.equalsIgnoreCase(gameInternalHost)) + _gsi.clearServerAddresses(); + for (int i = 0; i < hosts.length; i += 2) { - LOGGER.info("InternalIP: " + gameInternalHost); + try + { + _gsi.addServerAddress(hosts[i], hosts[i + 1]); + } + catch (Exception e) + { + LOGGER.warning("Couldn't resolve hostname \"" + e + "\""); + } } - if ((oldExternal == null) || !oldExternal.equalsIgnoreCase(gameExternalHost)) + for (String s : _gsi.getServerAddresses()) { - LOGGER.info("ExternalIP: " + gameExternalHost); + LOGGER.info(s); } } @@ -578,7 +304,7 @@ public class GameServerThread extends Thread return _connectionIPAddress; } - private int getServerId() + public int getServerId() { if (_gsi != null) { @@ -586,4 +312,34 @@ public class GameServerThread extends Thread } return -1; } + + public RSAPrivateKey getPrivateKey() + { + return _privateKey; + } + + public void SetBlowFish(NewCrypt blowfish) + { + _blowfish = blowfish; + } + + public void addAccountOnGameServer(String account) + { + _accountsOnGameServer.add(account); + } + + public void removeAccountOnGameServer(String account) + { + _accountsOnGameServer.remove(account); + } + + public GameServerState getLoginConnectionState() + { + return _loginConnectionState; + } + + public void setLoginConnectionState(GameServerState state) + { + _loginConnectionState = state; + } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginClient.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginClient.java deleted file mode 100644 index 5fd3a82fad..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginClient.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.loginserver; - -import java.io.IOException; -import java.net.InetAddress; -import java.nio.ByteBuffer; -import java.security.interfaces.RSAPrivateKey; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.crypt.LoginCrypt; -import org.l2jmobius.commons.crypt.ScrambledKeyPair; -import org.l2jmobius.commons.mmocore.MMOClient; -import org.l2jmobius.commons.mmocore.MMOConnection; -import org.l2jmobius.commons.mmocore.SendablePacket; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.loginserver.network.serverpackets.LoginFail; -import org.l2jmobius.loginserver.network.serverpackets.LoginFail.LoginFailReason; -import org.l2jmobius.loginserver.network.serverpackets.LoginServerPacket; -import org.l2jmobius.loginserver.network.serverpackets.PlayFail; -import org.l2jmobius.loginserver.network.serverpackets.PlayFail.PlayFailReason; - -/** - * Represents a client connected into the LoginServer - * @author KenM - */ -public class LoginClient extends MMOClient> -{ - private static final Logger LOGGER = Logger.getLogger(LoginClient.class.getName()); - - public enum LoginClientState - { - CONNECTED, - AUTHED_GG, - AUTHED_LOGIN - } - - private LoginClientState _state; - - // Crypt - private final LoginCrypt _loginCrypt; - private final ScrambledKeyPair _scrambledPair; - private final byte[] _blowfishKey; - - private String _account = ""; - private int _accessLevel; - private int _lastServer; - private boolean _usesInternalIP; - private SessionKey _sessionKey; - private final int _sessionId; - private boolean _joinedGS; - private final String _ip; - private long _connectionStartTime; - - /** - * @param con - */ - public LoginClient(MMOConnection con) - { - super(con); - _state = LoginClientState.CONNECTED; - _ip = getConnection().getInetAddress().getHostAddress(); - final String[] localip = Config.NETWORK_IP_LIST.split(";"); - for (String oneIp : localip) - { - if (_ip.startsWith(oneIp) || _ip.startsWith("127.0")) - { - _usesInternalIP = true; - } - } - - _scrambledPair = LoginController.getInstance().getScrambledRSAKeyPair(); - _blowfishKey = LoginController.getInstance().getBlowfishKey(); - _sessionId = Rnd.get(Integer.MAX_VALUE); - _connectionStartTime = Chronos.currentTimeMillis(); - _loginCrypt = new LoginCrypt(); - _loginCrypt.setKey(_blowfishKey); - LoginController.getInstance().addLoginClient(this); - - // This checkup must go next to BAN because it can cause decrease ban account time - if (!BruteProtector.canLogin(_ip)) - { - LoginController.getInstance().addBanForAddress(getConnection().getInetAddress(), Config.BRUT_BAN_IP_TIME * 1000); - LOGGER.warning("Drop connection from IP " + _ip + " because of BruteForce."); - } - } - - public String getIntetAddress() - { - return _ip; - } - - public boolean usesInternalIP() - { - return _usesInternalIP; - } - - @Override - public boolean decrypt(ByteBuffer buf, int size) - { - boolean ret = false; - try - { - ret = _loginCrypt.decrypt(buf.array(), buf.position(), size); - _connectionStartTime = Chronos.currentTimeMillis(); - } - catch (IOException e) - { - LOGGER.warning(e.toString()); - super.getConnection().close((SendablePacket) null); - return false; - } - - if (!ret) - { - final byte[] dump = new byte[size]; - System.arraycopy(buf.array(), buf.position(), dump, 0, size); - LOGGER.warning("Wrong checksum from client: " + this); - super.getConnection().close((SendablePacket) null); - } - - return ret; - } - - @Override - public boolean encrypt(ByteBuffer buf, int sizeValue) - { - final int offset = buf.position(); - int size = sizeValue; - try - { - size = _loginCrypt.encrypt(buf.array(), offset, size); - } - catch (IOException e) - { - LOGGER.warning(e.toString()); - return false; - } - - buf.position(offset + size); - return true; - } - - public LoginClientState getState() - { - return _state; - } - - public void setState(LoginClientState state) - { - _state = state; - } - - public byte[] getBlowfishKey() - { - return _blowfishKey; - } - - public byte[] getScrambledModulus() - { - return _scrambledPair._scrambledModulus; - } - - public RSAPrivateKey getRSAPrivateKey() - { - return (RSAPrivateKey) _scrambledPair._pair.getPrivate(); - } - - public String getAccount() - { - return _account; - } - - public void setAccount(String account) - { - _account = account; - } - - public void setAccessLevel(int accessLevel) - { - _accessLevel = accessLevel; - } - - public int getAccessLevel() - { - return _accessLevel; - } - - public void setLastServer(int lastServer) - { - _lastServer = lastServer; - } - - public int getLastServer() - { - return _lastServer; - } - - public int getSessionId() - { - return _sessionId; - } - - public boolean hasJoinedGS() - { - return _joinedGS; - } - - public void setJoinedGS(boolean value) - { - _joinedGS = value; - } - - public void setSessionKey(SessionKey sessionKey) - { - _sessionKey = sessionKey; - } - - public SessionKey getSessionKey() - { - return _sessionKey; - } - - public long getConnectionStartTime() - { - return _connectionStartTime; - } - - public void sendPacket(LoginServerPacket lsp) - { - getConnection().sendPacket(lsp); - } - - public void close(LoginFailReason reason) - { - getConnection().close(new LoginFail(reason)); - } - - public void close(PlayFailReason reason) - { - getConnection().close(new PlayFail(reason)); - } - - public void close(LoginServerPacket lsp) - { - getConnection().close(lsp); - } - - @Override - public void onDisconnection() - { - LoginController.getInstance().removeLoginClient(this); - if (!_joinedGS && (_account != null)) - { - LoginController.getInstance().removeAuthedLoginClient(getAccount()); - } - } - - @Override - public String toString() - { - final InetAddress address = getConnection().getInetAddress(); - if (_state == LoginClientState.AUTHED_LOGIN) - { - return "[" + _account + " (" + (address == null ? "disconnected" : address.getHostAddress()) + ")]"; - } - return "[" + (address == null ? "disconnected" : address.getHostAddress()) + "]"; - } - - @Override - protected void onForcedDisconnection() - { - // Empty - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginController.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginController.java index a2d05613d0..78894d54b1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginController.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginController.java @@ -22,7 +22,6 @@ import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; import java.security.KeyPairGenerator; import java.security.MessageDigest; -import java.security.interfaces.RSAPrivateKey; import java.security.spec.RSAKeyGenParameterSpec; import java.sql.Connection; import java.sql.PreparedStatement; @@ -31,229 +30,88 @@ import java.util.Base64; import java.util.Collection; import java.util.HashMap; import java.util.Map; -import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Level; import java.util.logging.Logger; -import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; import org.l2jmobius.Config; -import org.l2jmobius.commons.crypt.ScrambledKeyPair; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.commons.util.crypt.ScrambledKeyPair; import org.l2jmobius.loginserver.GameServerTable.GameServerInfo; -import org.l2jmobius.loginserver.network.gameserverpackets.ServerStatus; +import org.l2jmobius.loginserver.model.data.AccountInfo; +import org.l2jmobius.loginserver.network.LoginClient; import org.l2jmobius.loginserver.network.serverpackets.LoginFail.LoginFailReason; -/** - * @version $Revision: 1.7.4.3 $ $Date: 2005/03/27 15:30:09 $ - */ public class LoginController { - protected class ConnectionChecker extends Thread - { - @Override - public void run() - { - for (;;) - { - final long now = Chronos.currentTimeMillis(); - if (_stopNow) - { - break; - } - for (LoginClient cl : _clients) - { - try - { - if ((cl != null) && ((now - cl.getConnectionStartTime()) > Config.SESSION_TTL)) - { - cl.close(LoginFailReason.REASON_TEMP_PASS_EXPIRED); - } - else - { - _clients.remove(cl); - } - } - catch (Exception e) - { - } - } - try - { - Thread.sleep(2500); - } - catch (Exception e) - { - } - } - } - } - protected static final Logger LOGGER = Logger.getLogger(LoginController.class.getName()); private static LoginController _instance; - /** Time before kicking the client if he didnt logged yet */ - private static final int LOGIN_TIMEOUT = 60 * 1000; - - /** Clients that are on the LS but arent assocated with a account yet */ - protected Collection _clients = ConcurrentHashMap.newKeySet(); + /** Time before kicking the client if he didn't logged yet */ + public static final int LOGIN_TIMEOUT = 60 * 1000; /** Authed Clients on LoginServer */ protected Map _loginServerClients = new ConcurrentHashMap<>(); - private final Map _bannedIps = new ConcurrentHashMap<>(); + private final Map _failedLoginAttemps = new HashMap<>(); + private final Map _bannedIps = new ConcurrentHashMap<>(); - private final Map _hackProtection; - protected ScrambledKeyPair[] _keyPairs; + private final ScrambledKeyPair[] _keyPairs; + private final KeyGenerator _blowfishKeyGenerator; - protected byte[][] _blowfishKeys; - private static final int BLOWFISH_KEYS = 20; - - public static void load() throws GeneralSecurityException - { - if (_instance == null) - { - _instance = new LoginController(); - } - else - { - throw new IllegalStateException("LoginController can only be loaded a single time."); - } - } - - public static LoginController getInstance() - { - return _instance; - } + // SQL Queries + private static final String USER_INFO_SELECT = "SELECT login, password, IF(? > value OR value IS NULL, accessLevel, -1) AS accessLevel, lastServer FROM accounts LEFT JOIN (account_data) ON (account_data.account_name=accounts.login AND account_data.var=\"ban_temp\") WHERE login=?"; + private static final String AUTOCREATE_ACCOUNTS_INSERT = "INSERT INTO accounts (login, password, lastactive, accessLevel, lastIP) values (?, ?, ?, ?, ?)"; + private static final String ACCOUNT_INFO_UPDATE = "UPDATE accounts SET lastactive = ?, lastIP = ? WHERE login = ?"; + private static final String ACCOUNT_LAST_SERVER_UPDATE = "UPDATE accounts SET lastServer = ? WHERE login = ?"; + private static final String ACCOUNT_ACCESS_LEVEL_UPDATE = "UPDATE accounts SET accessLevel = ? WHERE login = ?"; private LoginController() throws GeneralSecurityException { - _hackProtection = new HashMap<>(); + LOGGER.info("Loading LoginController..."); _keyPairs = new ScrambledKeyPair[10]; - KeyPairGenerator keygen = null; - keygen = KeyPairGenerator.getInstance("RSA"); + _blowfishKeyGenerator = KeyGenerator.getInstance("Blowfish"); + final KeyPairGenerator rsaKeyPairGenerator = KeyPairGenerator.getInstance("RSA"); final RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(1024, RSAKeyGenParameterSpec.F4); - keygen.initialize(spec); + rsaKeyPairGenerator.initialize(spec); - // generate the initial set of keys - for (int i = 0; i < 10; i++) + for (int i = 0; i < _keyPairs.length; i++) { - _keyPairs[i] = new ScrambledKeyPair(keygen.generateKeyPair()); + _keyPairs[i] = new ScrambledKeyPair(rsaKeyPairGenerator.generateKeyPair()); } LOGGER.info("Cached 10 KeyPairs for RSA communication."); - testCipher((RSAPrivateKey) _keyPairs[0]._pair.getPrivate()); - // Store keys for blowfish communication - generateBlowFishKeys(); - - new ConnectionChecker().start(); + final Thread purge = new PurgeThread(); + purge.setDaemon(true); + purge.start(); } - /** - * This is mostly to force the initialization of the Crypto Implementation, avoiding it being done on runtime when its first needed.
    - * In short it avoids the worst-case execution time on runtime by doing it on loading. - * @param key Any private RSA Key just for testing purposes. - * @throws GeneralSecurityException if a underlying exception was thrown by the Cipher - */ - private void testCipher(RSAPrivateKey key) throws GeneralSecurityException + public SecretKey generateBlowfishKey() { - // avoid worst-case execution, KenM - final Cipher rsaCipher = Cipher.getInstance("RSA/ECB/nopadding"); - rsaCipher.init(Cipher.DECRYPT_MODE, key); - } - - protected boolean _stopNow = false; - - public void shutdown() - { - _stopNow = true; - } - - private void generateBlowFishKeys() - { - _blowfishKeys = new byte[BLOWFISH_KEYS][16]; - for (int i = 0; i < BLOWFISH_KEYS; i++) - { - for (int j = 0; j < _blowfishKeys[i].length; j++) - { - _blowfishKeys[i][j] = (byte) (Rnd.get(255) + 1); - } - } - LOGGER.info("Stored " + _blowfishKeys.length + " keys for Blowfish communication."); - } - - /** - * @return Returns a random key - */ - public byte[] getBlowfishKey() - { - return _blowfishKeys[(int) (Math.random() * BLOWFISH_KEYS)]; - } - - public void addLoginClient(LoginClient client) - { - if (_clients.size() >= Config.MAX_LOGINSESSIONS) - { - for (LoginClient cl : _clients) - { - try - { - cl.close(LoginFailReason.REASON_DUAL_BOX); - } - catch (Exception e) - { - } - } - } - synchronized (_clients) - { - _clients.add(client); - } - } - - public void removeLoginClient(LoginClient client) - { - if (_clients.contains(client)) - { - synchronized (_clients) - { - try - { - _clients.remove(client); - } - catch (Exception e) - { - } - } - } + return _blowfishKeyGenerator.generateKey(); } public SessionKey assignSessionKeyToClient(String account, LoginClient client) { - SessionKey key; - key = new SessionKey(Rnd.nextInt(), Rnd.nextInt(), Rnd.nextInt(), Rnd.nextInt()); + final SessionKey key = new SessionKey(Rnd.nextInt(), Rnd.nextInt(), Rnd.nextInt(), Rnd.nextInt()); _loginServerClients.put(account, client); return key; } public void removeAuthedLoginClient(String account) { - try + if (account == null) { - _loginServerClients.remove(account); + return; } - catch (Exception e) - { - } - } - - public boolean isAccountInLoginServer(String account) - { - return _loginServerClients.containsKey(account); + _loginServerClients.remove(account); } public LoginClient getAuthedClient(String account) @@ -261,79 +119,182 @@ public class LoginController return _loginServerClients.get(account); } - public enum AuthLoginResult + public AccountInfo retriveAccountInfo(InetAddress clientAddr, String login, String password) { - INVALID_PASSWORD, - ACCOUNT_BANNED, - ALREADY_ON_LS, - ALREADY_ON_GS, - AUTH_SUCCESS + return retriveAccountInfo(clientAddr, login, password, true); } - public AuthLoginResult tryAuthLogin(String account, String password, LoginClient client) + private void recordFailedLoginAttemp(InetAddress addr) { - AuthLoginResult ret = AuthLoginResult.INVALID_PASSWORD; - // check auth - if (loginValid(account, password, client)) + // We need to synchronize this! + // When multiple connections from the same address fail to login at the + // same time, unexpected behavior can happen. + Integer failedLoginAttemps; + synchronized (_failedLoginAttemps) { - // login was successful, verify presence on Gameservers - ret = AuthLoginResult.ALREADY_ON_GS; - if (!isAccountInAnyGameServer(account)) + failedLoginAttemps = _failedLoginAttemps.get(addr); + if (failedLoginAttemps == null) { - // account isnt on any GS verify LS itself - ret = AuthLoginResult.ALREADY_ON_LS; - - // dont allow 2 simultaneous login - synchronized (_loginServerClients) + failedLoginAttemps = 1; + } + else + { + ++failedLoginAttemps; + } + + _failedLoginAttemps.put(addr, failedLoginAttemps); + } + + if (failedLoginAttemps >= Config.LOGIN_TRY_BEFORE_BAN) + { + addBanForAddress(addr, Config.LOGIN_BLOCK_AFTER_BAN * 1000); + // we need to clear the failed login attempts here, so after the ip ban is over the client has another 5 attempts + clearFailedLoginAttemps(addr); + LOGGER.warning("Added banned address " + addr.getHostAddress() + "! Too many login attemps."); + } + } + + private void clearFailedLoginAttemps(InetAddress addr) + { + synchronized (_failedLoginAttemps) + { + _failedLoginAttemps.remove(addr); + } + } + + private AccountInfo retriveAccountInfo(InetAddress addr, String login, String password, boolean autoCreateIfEnabled) + { + try + { + final MessageDigest md = MessageDigest.getInstance("SHA"); + final byte[] raw = password.getBytes(StandardCharsets.UTF_8); + final String hashBase64 = Base64.getEncoder().encodeToString(md.digest(raw)); + + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement(USER_INFO_SELECT)) + { + ps.setString(1, Long.toString(Chronos.currentTimeMillis())); + ps.setString(2, login); + try (ResultSet rset = ps.executeQuery()) { - if (!_loginServerClients.containsKey(account)) + if (rset.next()) { - _loginServerClients.put(account, client); - ret = AuthLoginResult.AUTH_SUCCESS; + final AccountInfo info = new AccountInfo(rset.getString("login"), rset.getString("password"), rset.getInt("accessLevel"), rset.getInt("lastServer")); + if (!info.checkPassHash(hashBase64)) + { + // wrong password + recordFailedLoginAttemp(addr); + return null; + } - // remove him from the non-authed list - removeLoginClient(client); + clearFailedLoginAttemps(addr); + return info; } } } + + if (!autoCreateIfEnabled || !Config.AUTO_CREATE_ACCOUNTS) + { + // account does not exist and auto create account is not desired + recordFailedLoginAttemp(addr); + return null; + } + + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement(AUTOCREATE_ACCOUNTS_INSERT)) + { + ps.setString(1, login); + ps.setString(2, hashBase64); + ps.setLong(3, Chronos.currentTimeMillis()); + ps.setInt(4, 0); + ps.setString(5, addr.getHostAddress()); + ps.execute(); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception while auto creating account for '" + login + "'!", e); + return null; + } + + LOGGER.info("Auto created account '" + login + "'."); + return retriveAccountInfo(addr, login, password, false); } - else if (client.getAccessLevel() < 0) + catch (Exception e) { - ret = AuthLoginResult.ACCOUNT_BANNED; + LOGGER.log(Level.WARNING, "Exception while retriving account info for '" + login + "'!", e); + return null; + } + } + + public AuthLoginResult tryCheckinAccount(LoginClient client, InetAddress address, AccountInfo info) + { + if (info.getAccessLevel() < 0) + { + return AuthLoginResult.ACCOUNT_BANNED; + } + + AuthLoginResult ret = AuthLoginResult.INVALID_PASSWORD; + // check auth + if (canCheckin(client, address, info)) + { + // login was successful, verify presence on Gameservers + ret = AuthLoginResult.ALREADY_ON_GS; + if (!isAccountInAnyGameServer(info.getLogin())) + { + // account isnt on any GS verify LS itself + ret = AuthLoginResult.ALREADY_ON_LS; + if (_loginServerClients.putIfAbsent(info.getLogin(), client) == null) + { + ret = AuthLoginResult.AUTH_SUCCESS; + } + } } return ret; } /** - * Adds the address to the ban list of the login server, with the given duration. + * Adds the address to the ban list of the login server, with the given end time in milliseconds. * @param address The Address to be banned. - * @param expiration Timestamp in miliseconds when this ban expires + * @param expiration Timestamp in milliseconds when this ban expires * @throws UnknownHostException if the address is invalid. */ public void addBanForAddress(String address, long expiration) throws UnknownHostException { - final InetAddress netAddress = InetAddress.getByName(address); - _bannedIps.put(netAddress, new BanInfo(netAddress, expiration)); + _bannedIps.putIfAbsent(InetAddress.getByName(address), expiration); } /** * Adds the address to the ban list of the login server, with the given duration. * @param address The Address to be banned. - * @param duration is miliseconds + * @param duration is milliseconds */ public void addBanForAddress(InetAddress address, long duration) { - _bannedIps.put(address, new BanInfo(address, Chronos.currentTimeMillis() + duration)); + _bannedIps.putIfAbsent(address, Chronos.currentTimeMillis() + duration); } - public boolean isBannedAddress(InetAddress address) + public boolean isBannedAddress(InetAddress address) throws UnknownHostException { - final BanInfo bi = _bannedIps.get(address); + final String[] parts = address.getHostAddress().split("\\."); + Long bi = _bannedIps.get(address); + if (bi == null) + { + bi = _bannedIps.get(InetAddress.getByName(parts[0] + "." + parts[1] + "." + parts[2] + ".0")); + } + if (bi == null) + { + bi = _bannedIps.get(InetAddress.getByName(parts[0] + "." + parts[1] + ".0.0")); + } + if (bi == null) + { + bi = _bannedIps.get(InetAddress.getByName(parts[0] + ".0.0.0")); + } if (bi != null) { - if (bi.hasExpired()) + if ((bi > 0) && (bi < Chronos.currentTimeMillis())) { _bannedIps.remove(address); + LOGGER.info("Removed expired ip address ban " + address.getHostAddress() + "."); return false; } return true; @@ -341,7 +302,7 @@ public class LoginController return false; } - public Map getBannedIps() + public Map getBannedIps() { return _bannedIps; } @@ -383,16 +344,6 @@ public class LoginController return null; } - public int getOnlinePlayerCount(int serverId) - { - final GameServerInfo gsi = GameServerTable.getInstance().getRegisteredGameServerById(serverId); - if ((gsi != null) && gsi.isAuthed()) - { - return gsi.getCurrentPlayerCount(); - } - return 0; - } - public boolean isAccountInAnyGameServer(String account) { final Collection serverList = GameServerTable.getInstance().getRegisteredGameServers().values(); @@ -421,30 +372,6 @@ public class LoginController return null; } - public int getTotalOnlinePlayerCount() - { - int total = 0; - final Collection serverList = GameServerTable.getInstance().getRegisteredGameServers().values(); - for (GameServerInfo gsi : serverList) - { - if (gsi.isAuthed()) - { - total += gsi.getCurrentPlayerCount(); - } - } - return total; - } - - public int getMaxAllowedOnlinePlayers(int id) - { - final GameServerInfo gsi = GameServerTable.getInstance().getRegisteredGameServerById(id); - if (gsi != null) - { - return gsi.getMaxPlayers(); - } - return 0; - } - /** * @param client * @param serverId @@ -453,24 +380,21 @@ public class LoginController public boolean isLoginPossible(LoginClient client, int serverId) { final GameServerInfo gsi = GameServerTable.getInstance().getRegisteredGameServerById(serverId); - final int access = client.getAccessLevel(); if ((gsi != null) && gsi.isAuthed()) { - final boolean loginOk = ((gsi.getCurrentPlayerCount() < gsi.getMaxPlayers()) && (gsi.getStatus() != ServerStatus.STATUS_GM_ONLY)) || (access >= 100); + final boolean loginOk = gsi.canLogin(client); if (loginOk && (client.getLastServer() != serverId)) { - try (Connection con = DatabaseFactory.getConnection()) + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement(ACCOUNT_LAST_SERVER_UPDATE)) { - final String stmt = "UPDATE accounts SET lastServer = ? WHERE login = ?"; - final PreparedStatement statement = con.prepareStatement(stmt); - statement.setInt(1, serverId); - statement.setString(2, client.getAccount()); - statement.executeUpdate(); - statement.close(); + ps.setInt(1, serverId); + ps.setString(2, client.getAccount()); + ps.executeUpdate(); } catch (Exception e) { - LOGGER.warning("Could not set lastServer: " + e); + LOGGER.log(Level.WARNING, "Could not set lastServer: " + e.getMessage(), e); } } return loginOk; @@ -480,49 +404,19 @@ public class LoginController public void setAccountAccessLevel(String account, int banLevel) { - try (Connection con = DatabaseFactory.getConnection()) + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement(ACCOUNT_ACCESS_LEVEL_UPDATE)) { - final String stmt = "UPDATE accounts SET accessLevel=? WHERE login=?"; - final PreparedStatement statement = con.prepareStatement(stmt); - statement.setInt(1, banLevel); - statement.setString(2, account); - statement.executeUpdate(); - statement.close(); + ps.setInt(1, banLevel); + ps.setString(2, account); + ps.executeUpdate(); } catch (Exception e) { - LOGGER.warning("Could not set accessLevel: " + e); + LOGGER.log(Level.WARNING, "Could not set accessLevel: " + e.getMessage(), e); } } - public boolean isGM(String user) - { - boolean ok = false; - try (Connection con = DatabaseFactory.getConnection()) - { - final PreparedStatement statement = con.prepareStatement("SELECT accessLevel FROM accounts WHERE login=?"); - statement.setString(1, user); - final ResultSet rset = statement.executeQuery(); - if (rset.next()) - { - final int accessLevel = rset.getInt(1); - if (accessLevel >= 100) - { - ok = true; - } - } - - rset.close(); - statement.close(); - } - catch (Exception e) - { - LOGGER.warning("could not check GM state:" + e); - ok = false; - } - return ok; - } - /** *

    * This method returns one of the cached {@link ScrambledKeyPair ScrambledKeyPairs} for communication with Login Clients. @@ -535,283 +429,116 @@ public class LoginController } /** - * user name is not case sensitive any more - * @param user - * @param password - * @param client - * @return + * @param client the client + * @param address client host address + * @param info the account info to checkin + * @return true when ok to checkin, false otherwise */ - public synchronized boolean loginValid(String user, String password, LoginClient client) + public boolean canCheckin(LoginClient client, InetAddress address, AccountInfo info) { - boolean ok = false; - final InetAddress address = client.getConnection().getInetAddress(); - - // player disconnected meanwhile - if (address == null) + try + { + client.setAccessLevel(info.getAccessLevel()); + client.setLastServer(info.getLastServer()); + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement(ACCOUNT_INFO_UPDATE)) + { + ps.setLong(1, Chronos.currentTimeMillis()); + ps.setString(2, address.getHostAddress()); + ps.setString(3, info.getLogin()); + ps.execute(); + } + + return true; + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Could not finish login process!", e); + return false; + } + } + + public boolean isValidIPAddress(String ipAddress) + { + final String[] parts = ipAddress.split("\\."); + if (parts.length != 4) { return false; } - try (Connection con = DatabaseFactory.getConnection()) + for (String s : parts) { - final MessageDigest md = MessageDigest.getInstance("SHA"); - final byte[] raw = password.getBytes(StandardCharsets.UTF_8); - final byte[] hash = md.digest(raw); - byte[] expected = null; - int access = 0; - int lastServer = 1; - PreparedStatement statement = con.prepareStatement("SELECT password, accessLevel, lastServer FROM accounts WHERE login=?"); - statement.setString(1, user); - ResultSet rset = statement.executeQuery(); - if (rset.next()) + final int i = Integer.parseInt(s); + if ((i < 0) || (i > 255)) { - expected = Base64.getDecoder().decode(rset.getString("password")); - access = rset.getInt("accessLevel"); - lastServer = rset.getInt("lastServer"); - if (lastServer <= 0) - { - lastServer = 1; // minServerId is 1 in Interlude - } - } - - rset.close(); - statement.close(); - rset = null; - statement = null; - - // if account doesnt exists - if (expected == null) - { - if (Config.AUTO_CREATE_ACCOUNTS) - { - if ((user != null) && ((user.length()) >= 2) && (user.length() <= 14)) - { - statement = con.prepareStatement("INSERT INTO accounts (login,password,lastactive,accessLevel,lastIP) values(?,?,?,?,?)"); - statement.setString(1, user); - statement.setString(2, Base64.getEncoder().encodeToString(hash)); - statement.setLong(3, Chronos.currentTimeMillis()); - statement.setInt(4, 0); - statement.setString(5, address.getHostAddress()); - statement.execute(); - statement.close(); - - LOGGER.info("Created new account : " + user + " on IP : " + address.getHostAddress()); - con.close(); - return true; - } - LOGGER.warning("Invalid username creation/use attempt: " + user); - con.close(); - return false; - } - LOGGER.warning("Account missing for user " + user + " IP: " + address.getHostAddress()); - con.close(); return false; } - - // is this account banned? - if (access < 0) - { - client.setAccessLevel(access); - con.close(); - return false; - } - - // check password hash - ok = true; - for (int i = 0; i < expected.length; i++) - { - if (hash[i] != expected[i]) - { - ok = false; - break; - } - } - - if (ok) - { - client.setAccessLevel(access); - client.setLastServer(lastServer); - statement = con.prepareStatement("UPDATE accounts SET lastactive=?, lastIP=? WHERE login=?"); - statement.setLong(1, Chronos.currentTimeMillis()); - statement.setString(2, address.getHostAddress()); - statement.setString(3, user); - statement.execute(); - statement.close(); - } } - catch (Exception e) + return true; + } + + public static void load() throws GeneralSecurityException + { + synchronized (LoginController.class) { - LOGGER.warning("Could not check password:" + e); - ok = false; - } - - if (!ok) - { - final FailedLoginAttempt failedAttempt = _hackProtection.get(address); - int failedCount; - if (failedAttempt == null) + if (_instance == null) { - _hackProtection.put(address, new FailedLoginAttempt(address, password)); - failedCount = 1; + _instance = new LoginController(); } else { - failedAttempt.increaseCounter(password); - failedCount = failedAttempt.getCount(); + throw new IllegalStateException("LoginController can only be loaded a single time."); } - - if (failedCount >= Config.LOGIN_TRY_BEFORE_BAN) - { - LOGGER.info("Banning '" + address.getHostAddress() + "' for " + Config.LOGIN_BLOCK_AFTER_BAN + " seconds due to " + failedCount + " invalid user/pass attempts"); - addBanForAddress(address, Config.LOGIN_BLOCK_AFTER_BAN * 1000); - } - } - else - { - _hackProtection.remove(address); - } - - return ok; - } - - public boolean loginBanned(String user) - { - boolean ok = false; - - try (Connection con = DatabaseFactory.getConnection()) - { - final PreparedStatement statement = con.prepareStatement("SELECT accessLevel FROM accounts WHERE login=?"); - statement.setString(1, user); - final ResultSet rset = statement.executeQuery(); - if (rset.next()) - { - final int accessLevel = rset.getInt(1); - if (accessLevel < 0) - { - ok = true; - } - } - - rset.close(); - statement.close(); - } - catch (Exception e) - { - // digest algo not found ?? - // out of bounds should not be possible - LOGGER.warning("could not check ban state:" + e); - ok = false; - } - - return ok; - } - - class FailedLoginAttempt - { - // private InetAddress _ipAddress; - private int _count; - private long _lastAttempTime; - private String _lastPassword; - - public FailedLoginAttempt(InetAddress address, String lastPassword) - { - // _ipAddress = address; - _count = 1; - _lastAttempTime = Chronos.currentTimeMillis(); - _lastPassword = lastPassword; - } - - public void increaseCounter(String password) - { - if (!_lastPassword.equals(password)) - { - // check if theres a long time since last wrong try - if ((Chronos.currentTimeMillis() - _lastAttempTime) < (300 * 1000)) - { - _count++; - } - else - { - // restart the status - _count = 1; - } - _lastPassword = password; - _lastAttempTime = Chronos.currentTimeMillis(); - } - else // trying the same password is not brute force - { - _lastAttempTime = Chronos.currentTimeMillis(); - } - } - - public int getCount() - { - return _count; } } - class BanInfo + public static LoginController getInstance() { - private final InetAddress _ipAddress; - // Expiration - private final long _expiration; - - public BanInfo(InetAddress ipAddress, long expiration) - { - _ipAddress = ipAddress; - _expiration = expiration; - } - - public InetAddress getAddress() - { - return _ipAddress; - } - - public boolean hasExpired() - { - return (Chronos.currentTimeMillis() > _expiration) && (_expiration > 0); - } + return _instance; } class PurgeThread extends Thread { + public PurgeThread() + { + setName("PurgeThread"); + } + @Override public void run() { - for (;;) + while (!isInterrupted()) { - synchronized (_clients) + for (LoginClient client : _loginServerClients.values()) { - for (LoginClient client : _clients) + if (client == null) { - if ((client.getConnectionStartTime() + LOGIN_TIMEOUT) >= Chronos.currentTimeMillis()) - { - client.close(LoginFailReason.REASON_ACCESS_FAILED); - } + continue; } - } - - synchronized (_loginServerClients) - { - for (Entry e : _loginServerClients.entrySet()) + if ((client.getConnectionStartTime() + LOGIN_TIMEOUT) < Chronos.currentTimeMillis()) { - final LoginClient client = e.getValue(); - if ((client.getConnectionStartTime() + LOGIN_TIMEOUT) >= Chronos.currentTimeMillis()) - { - client.close(LoginFailReason.REASON_ACCESS_FAILED); - } + client.close(LoginFailReason.REASON_ACCESS_FAILED); } } try { - Thread.sleep(2 * LOGIN_TIMEOUT); + Thread.sleep(LOGIN_TIMEOUT / 2); } - catch (InterruptedException e) + catch (Exception e) { - LOGGER.warning(e.toString()); + // Ignore. } } } } + + public enum AuthLoginResult + { + INVALID_PASSWORD, + ACCOUNT_BANNED, + ALREADY_ON_LS, + ALREADY_ON_GS, + AUTH_SUCCESS + } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginPacketHandler.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginPacketHandler.java deleted file mode 100644 index f131021533..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginPacketHandler.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.loginserver; - -import java.nio.ByteBuffer; -import java.util.logging.Logger; - -import org.l2jmobius.commons.mmocore.IPacketHandler; -import org.l2jmobius.commons.mmocore.ReceivablePacket; -import org.l2jmobius.loginserver.LoginClient.LoginClientState; -import org.l2jmobius.loginserver.network.clientpackets.AuthGameGuard; -import org.l2jmobius.loginserver.network.clientpackets.RequestAuthLogin; -import org.l2jmobius.loginserver.network.clientpackets.RequestServerList; -import org.l2jmobius.loginserver.network.clientpackets.RequestServerLogin; - -/** - * Handler for packets received by Login Server - * @author KenM - */ - -public class LoginPacketHandler implements IPacketHandler -{ - private static final Logger LOGGER = Logger.getLogger(LoginPacketHandler.class.getName()); - - @Override - public ReceivablePacket handlePacket(ByteBuffer buf, LoginClient client) - { - final int opcode = buf.get() & 0xFF; - ReceivablePacket packet = null; - final LoginClientState state = client.getState(); - - switch (state) - { - case CONNECTED: - { - if (opcode == 0x07) - { - packet = new AuthGameGuard(); - } - else - { - debugOpcode(opcode, state); - } - break; - } - case AUTHED_GG: - { - if (opcode == 0x00) - { - packet = new RequestAuthLogin(); - } - else - { - debugOpcode(opcode, state); - } - break; - } - case AUTHED_LOGIN: - { - if (opcode == 0x05) - { - packet = new RequestServerList(); - } - else if (opcode == 0x02) - { - packet = new RequestServerLogin(); - } - else - { - debugOpcode(opcode, state); - } - break; - } - } - return packet; - } - - private void debugOpcode(int opcode, LoginClientState state) - { - LOGGER.info("Unknown Opcode: " + opcode + " for state: " + state.name()); - } -} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginServer.java index 8729acb26d..591e958bea 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginServer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/LoginServer.java @@ -21,9 +21,11 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.net.InetAddress; +import java.io.InputStreamReader; +import java.io.LineNumberReader; import java.net.UnknownHostException; import java.security.GeneralSecurityException; +import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.Logger; @@ -31,11 +33,9 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseBackup; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.enums.ServerMode; -import org.l2jmobius.commons.mmocore.SelectorConfig; -import org.l2jmobius.commons.mmocore.SelectorThread; -import org.l2jmobius.loginserver.network.gameserverpackets.ServerStatus; +import org.l2jmobius.gameserver.network.loginserverpackets.game.ServerStatus; +import org.l2jmobius.loginserver.network.ClientNetworkManager; import org.l2jmobius.loginserver.ui.Gui; -import org.l2jmobius.telnet.TelnetStatusThread; /** * @author KenM @@ -46,12 +46,20 @@ public class LoginServer public static final int PROTOCOL_REV = 0x0102; private static LoginServer INSTANCE; - private Thread _restartLoginServer; private GameServerListener _gameServerListener; - private SelectorThread _selectorThread; - private TelnetStatusThread _statusServer; + private Thread _restartLoginServer; private static int _loginStatus = ServerStatus.STATUS_NORMAL; + public static void main(String[] args) throws Exception + { + INSTANCE = new LoginServer(); + } + + public static LoginServer getInstance() + { + return INSTANCE; + } + private LoginServer() throws Exception { // GUI @@ -88,63 +96,20 @@ public class LoginServer } catch (GeneralSecurityException e) { - LOGGER.severe("FATAL: Failed initializing LoginController. Reason: " + e); + LOGGER.log(Level.SEVERE, "FATAL: Failed initializing LoginController. Reason: " + e.getMessage(), e); System.exit(1); } - try - { - GameServerTable.getInstance(); - } - catch (Exception e) - { - LOGGER.severe("Failed to load GameServerTable" + e); - System.exit(1); - } + GameServerTable.getInstance(); - InetAddress bindAddress = null; - if (!Config.LOGIN_BIND_ADDRESS.equals("*")) - { - try - { - bindAddress = InetAddress.getByName(Config.LOGIN_BIND_ADDRESS); - } - catch (UnknownHostException e1) - { - LOGGER.warning("WARNING: The LoginServer bind address is invalid, using all avaliable IPs " + e1); - } - } + loadBanFile(); - // Load telnet status - if (Config.IS_TELNET_ENABLED) + if (Config.LOGIN_SERVER_SCHEDULE_RESTART) { - try - { - _statusServer = new TelnetStatusThread(); - _statusServer.start(); - } - catch (IOException e) - { - LOGGER.warning("Failed to start the Telnet Server. Reason: " + e.getMessage()); - } - } - - final SelectorConfig sc = new SelectorConfig(); - sc.MAX_READ_PER_PASS = Config.MMO_MAX_READ_PER_PASS; - sc.MAX_SEND_PER_PASS = Config.MMO_MAX_SEND_PER_PASS; - sc.SLEEP_TIME = Config.MMO_SELECTOR_SLEEP_TIME; - sc.HELPER_BUFFER_COUNT = Config.MMO_HELPER_BUFFER_COUNT; - - final LoginPacketHandler lph = new LoginPacketHandler(); - final SelectorHelper sh = new SelectorHelper(); - try - { - _selectorThread = new SelectorThread<>(sc, sh, lph, sh); - } - catch (IOException e) - { - LOGGER.severe("Failed to open Selector " + e); - System.exit(1); + LOGGER.info("Scheduled LS restart after " + Config.LOGIN_SERVER_SCHEDULE_RESTART_TIME + " hours"); + _restartLoginServer = new LoginServerRestart(); + _restartLoginServer.setDaemon(true); + _restartLoginServer.start(); } try @@ -155,31 +120,72 @@ public class LoginServer } catch (IOException e) { - LOGGER.severe("Failed to start the Game Server Listener" + e); + LOGGER.log(Level.SEVERE, "FATAL: Failed to start the Game Server Listener. Reason: " + e.getMessage(), e); System.exit(1); } - try + ClientNetworkManager.getInstance().start(); + } + + public GameServerListener getGameServerListener() + { + return _gameServerListener; + } + + public void loadBanFile() + { + final File bannedFile = new File("./banned_ip.cfg"); + if (bannedFile.exists() && bannedFile.isFile()) { - _selectorThread.openServerSocket(bindAddress, Config.PORT_LOGIN); - _selectorThread.start(); - LOGGER.info("Login Server ready on " + (bindAddress == null ? "*" : bindAddress.getHostAddress()) + ":" + Config.PORT_LOGIN); + try (FileInputStream fis = new FileInputStream(bannedFile); + InputStreamReader is = new InputStreamReader(fis); + LineNumberReader lnr = new LineNumberReader(is)) + { + //@formatter:off + lnr.lines() + .map(String::trim) + .filter(l -> !l.isEmpty() && (l.charAt(0) != '#')) + .forEach(lineValue -> + { + String line = lineValue; + String[] parts = line.split("#", 2); // address[ duration][ # comments] + line = parts[0]; + parts = line.split("\\s+"); // durations might be aligned via multiple spaces + final String address = parts[0]; + long duration = 0; + if (parts.length > 1) + { + try + { + duration = Long.parseLong(parts[1]); + } + catch (NumberFormatException nfe) + { + LOGGER.warning("Skipped: Incorrect ban duration (" + parts[1] + ") on (" + bannedFile.getName() + "). Line: " + lnr.getLineNumber()); + return; + } + } + + try + { + LoginController.getInstance().addBanForAddress(address, duration); + } + catch (UnknownHostException e) + { + LOGGER.warning("Skipped: Invalid address (" + address + ") on (" + bannedFile.getName() + "). Line: " + lnr.getLineNumber()); + } + }); + //@formatter:on + } + catch (IOException e) + { + LOGGER.log(Level.WARNING, "Error while reading the bans file (" + bannedFile.getName() + "). Details: " + e.getMessage(), e); + } + LOGGER.info("Loaded " + LoginController.getInstance().getBannedIps().size() + " IP Bans."); } - catch (IOException e) + else { - LOGGER.warning("Failed to open server socket" + e); - System.exit(1); - } - - // load bannedIps - Config.loadBanFile(); - - if (Config.LOGIN_SERVER_SCHEDULE_RESTART) - { - LOGGER.info("Scheduled LS restart after " + Config.LOGIN_SERVER_SCHEDULE_RESTART_TIME + " hours"); - _restartLoginServer = new LoginServerRestart(); - _restartLoginServer.setDaemon(true); - _restartLoginServer.start(); + LOGGER.warning("IP Bans file (" + bannedFile.getName() + ") is missing or is a directory, skipped."); } } @@ -210,21 +216,13 @@ public class LoginServer public void shutdown(boolean restart) { - // Backup database. if (Config.BACKUP_DATABASE) { DatabaseBackup.performBackup(); } - - LoginController.getInstance().shutdown(); Runtime.getRuntime().exit(restart ? 2 : 0); } - public GameServerListener getGameServerListener() - { - return _gameServerListener; - } - public int getStatus() { return _loginStatus; @@ -234,14 +232,4 @@ public class LoginServer { _loginStatus = status; } - - public static void main(String[] args) throws Exception - { - INSTANCE = new LoginServer(); - } - - public static LoginServer getInstance() - { - return INSTANCE; - } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/SelectorHelper.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/SelectorHelper.java deleted file mode 100644 index a4d07a46c9..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/SelectorHelper.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.loginserver; - -import java.nio.channels.SocketChannel; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -import org.l2jmobius.commons.mmocore.IAcceptFilter; -import org.l2jmobius.commons.mmocore.IClientFactory; -import org.l2jmobius.commons.mmocore.IMMOExecutor; -import org.l2jmobius.commons.mmocore.MMOConnection; -import org.l2jmobius.commons.mmocore.ReceivablePacket; -import org.l2jmobius.loginserver.network.serverpackets.Init; - -/** - * @author KenM - */ -public class SelectorHelper implements IMMOExecutor, IClientFactory, IAcceptFilter -{ - private final ThreadPoolExecutor _generalPacketsThreadPool; - - public SelectorHelper() - { - _generalPacketsThreadPool = new ThreadPoolExecutor(4, 6, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue()); - } - - @Override - public void execute(ReceivablePacket packet) - { - _generalPacketsThreadPool.execute(packet); - } - - @Override - public LoginClient create(MMOConnection con) - { - final LoginClient client = new LoginClient(con); - client.sendPacket(new Init(client)); - return client; - } - - @Override - public boolean accept(SocketChannel sc) - { - return !LoginController.getInstance().isBannedAddress(sc.socket().getInetAddress()); - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/SessionKey.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/SessionKey.java index 33cd7e54a3..b4730cdcd1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/SessionKey.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/SessionKey.java @@ -23,7 +23,7 @@ import org.l2jmobius.Config; * This class is used to represent session keys used by the client to authenticate in the gameserver *

    *

    - * A SessionKey is made up of two 8 bytes keys. One is send in the org.l2jmobius.loginserver.serverpacket.LoginOk packet and the other is sent in org.l2jmobius.loginserver.serverpacket.PlayOk + * A SessionKey is made up of two 8 bytes keys. One is send in the {@link org.l2jmobius.loginserver.network.serverpackets.LoginOk#LoginOk} packet and the other is sent in {@link org.l2jmobius.loginserver.network.serverpackets.PlayOk#PlayOk} *

    * @author -Wooden- */ @@ -54,17 +54,22 @@ public class SessionKey } /** - *

    - * Returns true if keys are equal. - *

    - *

    * Only checks the PlayOk part of the session key if server doesn't show the license when player logs in. - *

    - * @param key - * @return + * @param o + * @return true if keys are equal. */ - public boolean equals(SessionKey key) + @Override + public boolean equals(Object o) { + if (this == o) + { + return true; + } + if (!(o instanceof SessionKey)) + { + return false; + } + final SessionKey key = (SessionKey) o; // when server doesn't show license it doesn't send the LoginOk packet, client doesn't have this part of the key then. if (Config.SHOW_LICENCE) { @@ -72,4 +77,4 @@ public class SessionKey } return (playOkID1 == key.playOkID1) && (playOkID2 == key.playOkID2); } -} +} \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/model/data/AccountInfo.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/model/data/AccountInfo.java new file mode 100644 index 0000000000..d963ebd03c --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/model/data/AccountInfo.java @@ -0,0 +1,69 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.loginserver.model.data; + +import java.util.Objects; + +/** + * @author HorridoJoho + */ +public class AccountInfo +{ + private final String _login; + private final String _passHash; + private final int _accessLevel; + private final int _lastServer; + + public AccountInfo(String login, String passHash, int accessLevel, int lastServer) + { + Objects.requireNonNull(login, "login"); + Objects.requireNonNull(passHash, "passHash"); + if (login.isEmpty()) + { + throw new IllegalArgumentException("login"); + } + if (passHash.isEmpty()) + { + throw new IllegalArgumentException("passHash"); + } + + _login = login.toLowerCase(); + _passHash = passHash; + _accessLevel = accessLevel; + _lastServer = lastServer; + } + + public boolean checkPassHash(String passHash) + { + return _passHash.equals(passHash); + } + + public String getLogin() + { + return _login; + } + + public int getAccessLevel() + { + return _accessLevel; + } + + public int getLastServer() + { + return _lastServer; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/BannedIpFilter.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/BannedIpFilter.java new file mode 100644 index 0000000000..b7e2f1a9af --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/BannedIpFilter.java @@ -0,0 +1,39 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.loginserver.network; + +import java.net.InetSocketAddress; +import java.net.UnknownHostException; + +import org.l2jmobius.loginserver.LoginController; + +import io.netty.channel.ChannelHandler.Sharable; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.ipfilter.AbstractRemoteAddressFilter; + +/** + * @author lord_rex + */ +@Sharable +public class BannedIpFilter extends AbstractRemoteAddressFilter +{ + @Override + protected boolean accept(ChannelHandlerContext ctx, InetSocketAddress remoteAddress) throws UnknownHostException + { + return !LoginController.getInstance().isBannedAddress(remoteAddress.getAddress()); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/ClientInitializer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/ClientInitializer.java new file mode 100644 index 0000000000..af12a738c2 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/ClientInitializer.java @@ -0,0 +1,56 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.loginserver.network; + +import java.nio.ByteOrder; + +import javax.crypto.SecretKey; + +import org.l2jmobius.commons.network.codecs.CryptCodec; +import org.l2jmobius.commons.network.codecs.LengthFieldBasedFrameEncoder; +import org.l2jmobius.commons.network.codecs.PacketDecoder; +import org.l2jmobius.commons.network.codecs.PacketEncoder; +import org.l2jmobius.commons.util.crypt.LoginCrypt; +import org.l2jmobius.loginserver.LoginController; + +import io.netty.channel.ChannelInitializer; +import io.netty.channel.socket.SocketChannel; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; + +/** + * @author Nos + */ +public class ClientInitializer extends ChannelInitializer +{ + private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); + private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2); + + @Override + protected void initChannel(SocketChannel ch) + { + final SecretKey newKey = LoginController.getInstance().generateBlowfishKey(); + final LoginClient client = new LoginClient(newKey); + ch.pipeline().addLast(new BannedIpFilter()); + ch.pipeline().addLast("length-decoder", new LengthFieldBasedFrameDecoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2, 0, 2, -2, 2, false)); + ch.pipeline().addLast("length-encoder", LENGTH_ENCODER); + ch.pipeline().addLast("crypt-codec", new CryptCodec(new LoginCrypt(newKey))); + // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); + ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, client)); + ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); + ch.pipeline().addLast(client); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/ClientNetworkManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/ClientNetworkManager.java new file mode 100644 index 0000000000..c39f9e6c05 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/ClientNetworkManager.java @@ -0,0 +1,41 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.loginserver.network; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.network.NetworkManager; + +/** + * @author Nos + */ +public class ClientNetworkManager extends NetworkManager +{ + protected ClientNetworkManager() + { + super(EventLoopGroupManager.getInstance().getBossGroup(), EventLoopGroupManager.getInstance().getWorkerGroup(), new ClientInitializer(), Config.LOGIN_BIND_ADDRESS, Config.PORT_LOGIN); + } + + public static ClientNetworkManager getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final ClientNetworkManager INSTANCE = new ClientNetworkManager(); + } +} diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IPacketHandler.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/ConnectionState.java similarity index 74% rename from L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IPacketHandler.java rename to L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/ConnectionState.java index 020d3c6d7c..70852dc4a7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/commons/mmocore/IPacketHandler.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/ConnectionState.java @@ -14,15 +14,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.commons.mmocore; +package org.l2jmobius.loginserver.network; -import java.nio.ByteBuffer; +import org.l2jmobius.commons.network.IConnectionState; /** - * @author KenM - * @param + * @author Mobius */ -public interface IPacketHandler> +public enum ConnectionState implements IConnectionState { - ReceivablePacket handlePacket(ByteBuffer buf, T client); -} \ No newline at end of file + CONNECTED, + AUTHED_GG, + AUTHED_LOGIN; +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/EventLoopGroupManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/EventLoopGroupManager.java new file mode 100644 index 0000000000..23bc038797 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/EventLoopGroupManager.java @@ -0,0 +1,56 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.loginserver.network; + +import org.l2jmobius.Config; + +import io.netty.channel.nio.NioEventLoopGroup; + +/** + * @author Nos + */ +public class EventLoopGroupManager +{ + private final NioEventLoopGroup _bossGroup = new NioEventLoopGroup(1); + private final NioEventLoopGroup _workerGroup = new NioEventLoopGroup(Config.IO_PACKET_THREAD_CORE_SIZE); + + public NioEventLoopGroup getBossGroup() + { + return _bossGroup; + } + + public NioEventLoopGroup getWorkerGroup() + { + return _workerGroup; + } + + public void shutdown() + { + _bossGroup.shutdownGracefully(); + _workerGroup.shutdownGracefully(); + } + + public static EventLoopGroupManager getInstance() + { + return SingletonHolder.INSTANCE; + } + + private static class SingletonHolder + { + protected static final EventLoopGroupManager INSTANCE = new EventLoopGroupManager(); + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/GameServerPacketHandler.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/GameServerPacketHandler.java new file mode 100644 index 0000000000..c3bed97079 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/GameServerPacketHandler.java @@ -0,0 +1,155 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.loginserver.network; + +import java.util.logging.Logger; + +import org.l2jmobius.commons.network.BaseRecievePacket; +import org.l2jmobius.loginserver.GameServerThread; +import org.l2jmobius.loginserver.network.gameserverpackets.BlowFishKey; +import org.l2jmobius.loginserver.network.gameserverpackets.ChangeAccessLevel; +import org.l2jmobius.loginserver.network.gameserverpackets.GameServerAuth; +import org.l2jmobius.loginserver.network.gameserverpackets.PlayerAuthRequest; +import org.l2jmobius.loginserver.network.gameserverpackets.PlayerInGame; +import org.l2jmobius.loginserver.network.gameserverpackets.PlayerLogout; +import org.l2jmobius.loginserver.network.gameserverpackets.ServerStatus; +import org.l2jmobius.loginserver.network.loginserverpackets.LoginServerFail; + +/** + * @author mrTJO + */ +public class GameServerPacketHandler +{ + protected static final Logger LOGGER = Logger.getLogger(GameServerPacketHandler.class.getName()); + + public enum GameServerState + { + CONNECTED, + BF_CONNECTED, + AUTHED + } + + public static BaseRecievePacket handlePacket(byte[] data, GameServerThread server) + { + BaseRecievePacket msg = null; + final int opcode = data[0] & 0xff; + final GameServerState state = server.getLoginConnectionState(); + switch (state) + { + case CONNECTED: + { + switch (opcode) + { + case 0x00: + { + msg = new BlowFishKey(data, server); + break; + } + default: + { + LOGGER.warning("Unknown Opcode (" + Integer.toHexString(opcode).toUpperCase() + ") in state " + state.name() + " from GameServer, closing connection."); + server.forceClose(LoginServerFail.NOT_AUTHED); + break; + } + } + break; + } + case BF_CONNECTED: + { + switch (opcode) + { + case 0x01: + { + msg = new GameServerAuth(data, server); + break; + } + default: + { + LOGGER.warning("Unknown Opcode (" + Integer.toHexString(opcode).toUpperCase() + ") in state " + state.name() + " from GameServer, closing connection."); + server.forceClose(LoginServerFail.NOT_AUTHED); + break; + } + } + break; + } + case AUTHED: + { + switch (opcode) + { + case 0x02: + { + msg = new PlayerInGame(data, server); + break; + } + case 0x03: + { + msg = new PlayerLogout(data, server); + break; + } + case 0x04: + { + msg = new ChangeAccessLevel(data, server); + break; + } + case 0x05: + { + msg = new PlayerAuthRequest(data, server); + break; + } + case 0x06: + { + msg = new ServerStatus(data, server); + break; + } + case 0x07: + { + // msg = new PlayerTracert(data); + break; + } + case 0x08: + { + // msg = new ReplyCharacters(data, server); + break; + } + case 0x09: + { + // msg = new RequestSendMail(data); + break; + } + case 0x0A: + { + // msg = new RequestTempBan(data); + break; + } + case 0x0B: + { + // new ChangePassword(data); + break; + } + default: + { + LOGGER.warning("Unknown Opcode (" + Integer.toHexString(opcode).toUpperCase() + ") in state " + state.name() + " from GameServer, closing connection."); + server.forceClose(LoginServerFail.NOT_AUTHED); + break; + } + } + break; + } + } + return msg; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/IncomingPackets.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/IncomingPackets.java new file mode 100644 index 0000000000..3d36f0fe3f --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/IncomingPackets.java @@ -0,0 +1,90 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.loginserver.network; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Supplier; + +import org.l2jmobius.commons.network.IConnectionState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IIncomingPackets; +import org.l2jmobius.loginserver.network.clientpackets.AuthGameGuard; +import org.l2jmobius.loginserver.network.clientpackets.RequestAuthLogin; +import org.l2jmobius.loginserver.network.clientpackets.RequestServerList; +import org.l2jmobius.loginserver.network.clientpackets.RequestServerLogin; + +/** + * @author Mobius + */ +public enum IncomingPackets implements IIncomingPackets +{ + AUTH_GAME_GUARD(0x07, AuthGameGuard::new, ConnectionState.CONNECTED), + REQUEST_AUTH_LOGIN(0x00, RequestAuthLogin::new, ConnectionState.AUTHED_GG), + REQUEST_SERVER_LOGIN(0x02, RequestServerLogin::new, ConnectionState.AUTHED_LOGIN), + REQUEST_SERVER_LIST(0x05, RequestServerList::new, ConnectionState.AUTHED_LOGIN), + REQUEST_PI_AGREEMENT_CHECK(0x0E, null, ConnectionState.AUTHED_LOGIN), + REQUEST_PI_AGREEMENT(0x0F, null, ConnectionState.AUTHED_LOGIN); + + public static final IncomingPackets[] PACKET_ARRAY; + + static + { + final short maxPacketId = (short) Arrays.stream(values()).mapToInt(IIncomingPackets::getPacketId).max().orElse(0); + PACKET_ARRAY = new IncomingPackets[maxPacketId + 1]; + for (IncomingPackets incomingPacket : values()) + { + PACKET_ARRAY[incomingPacket.getPacketId()] = incomingPacket; + } + } + + private short _packetId; + private Supplier> _incomingPacketFactory; + private Set _connectionStates; + + IncomingPackets(int packetId, Supplier> incomingPacketFactory, IConnectionState... connectionStates) + { + // packetId is an unsigned byte + if (packetId > 0xFF) + { + throw new IllegalArgumentException("packetId must not be bigger than 0xFF"); + } + + _packetId = (short) packetId; + _incomingPacketFactory = incomingPacketFactory != null ? incomingPacketFactory : () -> null; + _connectionStates = new HashSet<>(Arrays.asList(connectionStates)); + } + + @Override + public int getPacketId() + { + return _packetId; + } + + @Override + public IIncomingPacket newIncomingPacket() + { + return _incomingPacketFactory.get(); + } + + @Override + public Set getConnectionStates() + { + return _connectionStates; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/LoginClient.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/LoginClient.java new file mode 100644 index 0000000000..93194a11c0 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/LoginClient.java @@ -0,0 +1,249 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.loginserver.network; + +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Logger; + +import javax.crypto.SecretKey; + +import org.l2jmobius.commons.network.ChannelInboundHandler; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.util.Chronos; +import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.commons.util.crypt.ScrambledKeyPair; +import org.l2jmobius.loginserver.LoginController; +import org.l2jmobius.loginserver.SessionKey; +import org.l2jmobius.loginserver.network.serverpackets.Init; +import org.l2jmobius.loginserver.network.serverpackets.LoginFail; +import org.l2jmobius.loginserver.network.serverpackets.LoginFail.LoginFailReason; +import org.l2jmobius.loginserver.network.serverpackets.PlayFail; +import org.l2jmobius.loginserver.network.serverpackets.PlayFail.PlayFailReason; + +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; + +/** + * Represents a client connected into the LoginServer + * @author KenM + */ +public class LoginClient extends ChannelInboundHandler +{ + private static final Logger LOGGER = Logger.getLogger(LoginClient.class.getName()); + + // Crypt + private final ScrambledKeyPair _scrambledPair; + private final SecretKey _blowfishKey; + private InetAddress _addr; + private Channel _channel; + + private String _account; + private int _accessLevel; + private int _lastServer; + private SessionKey _sessionKey; + private int _sessionId; + private boolean _joinedGS; + private Map _charsOnServers; + private Map _charsToDelete; + + private long _connectionStartTime; + + public LoginClient(SecretKey blowfishKey) + { + super(); + _blowfishKey = blowfishKey; + _scrambledPair = LoginController.getInstance().getScrambledRSAKeyPair(); + } + + @Override + public void channelActive(ChannelHandlerContext ctx) + { + super.channelActive(ctx); + + setConnectionState(ConnectionState.CONNECTED); + final InetSocketAddress address = (InetSocketAddress) ctx.channel().remoteAddress(); + _addr = address.getAddress(); + _channel = ctx.channel(); + _sessionId = Rnd.nextInt(); + _connectionStartTime = Chronos.currentTimeMillis(); + sendPacket(new Init(_scrambledPair.getScrambledModulus(), _blowfishKey.getEncoded(), _sessionId)); + } + + @Override + public void channelInactive(ChannelHandlerContext ctx) + { + if (!_joinedGS || ((_connectionStartTime + LoginController.LOGIN_TIMEOUT) < Chronos.currentTimeMillis())) + { + LoginController.getInstance().removeAuthedLoginClient(getAccount()); + } + } + + @Override + protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket packet) + { + try + { + packet.run(this); + } + catch (Exception e) + { + LOGGER.warning(getClass().getSimpleName() + ": " + e.getMessage()); + } + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) + { + } + + public InetAddress getConnectionAddress() + { + return _addr; + } + + public String getAccount() + { + return _account; + } + + public void setAccount(String account) + { + _account = account; + } + + public void setAccessLevel(int accessLevel) + { + _accessLevel = accessLevel; + } + + public int getAccessLevel() + { + return _accessLevel; + } + + public void setLastServer(int lastServer) + { + _lastServer = lastServer; + } + + public int getLastServer() + { + return _lastServer; + } + + public int getSessionId() + { + return _sessionId; + } + + public ScrambledKeyPair getScrambledKeyPair() + { + return _scrambledPair; + } + + public boolean hasJoinedGS() + { + return _joinedGS; + } + + public void setJoinedGS(boolean value) + { + _joinedGS = value; + } + + public void setSessionKey(SessionKey sessionKey) + { + _sessionKey = sessionKey; + } + + public SessionKey getSessionKey() + { + return _sessionKey; + } + + public long getConnectionStartTime() + { + return _connectionStartTime; + } + + public void sendPacket(IOutgoingPacket packet) + { + if ((packet == null)) + { + return; + } + + // Write into the channel. + _channel.writeAndFlush(packet); + } + + public void close(LoginFailReason reason) + { + close(new LoginFail(reason)); + } + + public void close(PlayFailReason reason) + { + close(new PlayFail(reason)); + } + + public void close(IOutgoingPacket packet) + { + sendPacket(packet); + closeNow(); + } + + public void closeNow() + { + if (_channel != null) + { + _channel.close(); + } + } + + public void setCharsOnServ(int servId, int chars) + { + if (_charsOnServers == null) + { + _charsOnServers = new HashMap<>(); + } + _charsOnServers.put(servId, chars); + } + + public Map getCharsOnServ() + { + return _charsOnServers; + } + + public void serCharsWaitingDelOnServ(int servId, long[] charsToDel) + { + if (_charsToDelete == null) + { + _charsToDelete = new HashMap<>(); + } + _charsToDelete.put(servId, charsToDel); + } + + public Map getCharsWaitingDelOnServ() + { + return _charsToDelete; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/OutgoingPackets.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/OutgoingPackets.java new file mode 100644 index 0000000000..ec70562b15 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/OutgoingPackets.java @@ -0,0 +1,83 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.loginserver.network; + +import org.l2jmobius.commons.network.PacketWriter; + +/** + * @author Mobius + */ +public enum OutgoingPackets +{ + INIT(0x00), + LOGIN_FAIL(0x01), + ACCOUNT_KICKED(0x02), + LOGIN_OK(0x03), + SERVER_LIST(0x04), + PLAY_FAIL(0x06), + PLAY_OK(0x07), + + PI_AGREEMENT_CHECK(0x11), + PI_AGREEMENT_ACK(0x12), + GG_AUTH(0x0b), + LOGIN_OPT_FAIL(0x0D); + + private final int _id1; + private final int _id2; + + OutgoingPackets(int id1) + { + this(id1, -1); + } + + OutgoingPackets(int id1, int id2) + { + _id1 = id1; + _id2 = id2; + } + + public int getId1() + { + return _id1; + } + + public int getId2() + { + return _id2; + } + + public void writeId(PacketWriter packet) + { + packet.writeC(_id1); + if (_id2 > 0) + { + packet.writeH(_id2); + } + } + + public static OutgoingPackets getPacket(int id1, int id2) + { + for (OutgoingPackets packet : values()) + { + if ((packet.getId1() == id1) && (packet.getId2() == id2)) + { + return packet; + } + } + return null; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/AuthGameGuard.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/AuthGameGuard.java index 8d625adbd9..1446ac3e7b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/AuthGameGuard.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/AuthGameGuard.java @@ -16,75 +16,56 @@ */ package org.l2jmobius.loginserver.network.clientpackets; -import org.l2jmobius.loginserver.LoginClient.LoginClientState; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.loginserver.network.ConnectionState; +import org.l2jmobius.loginserver.network.LoginClient; import org.l2jmobius.loginserver.network.serverpackets.GGAuth; import org.l2jmobius.loginserver.network.serverpackets.LoginFail.LoginFailReason; /** - * @author -Wooden- Format: ddddd + * Format: ddddd + * @author -Wooden- */ -public class AuthGameGuard extends LoginClientPacket +public class AuthGameGuard implements IIncomingPacket { private int _sessionId; + + @SuppressWarnings("unused") private int _data1; + @SuppressWarnings("unused") private int _data2; + @SuppressWarnings("unused") private int _data3; + @SuppressWarnings("unused") private int _data4; - public int getSessionId() - { - return _sessionId; - } - - public int getData1() - { - return _data1; - } - - public int getData2() - { - return _data2; - } - - public int getData3() - { - return _data3; - } - - public int getData4() - { - return _data4; - } - - /** - * @see org.l2jmobius.loginserver.network.clientpackets.LoginClientPacket#readImpl() - */ @Override - protected boolean readImpl() + public boolean read(LoginClient client, PacketReader packet) { - if (super._buf.remaining() >= 20) + if (packet.getReadableBytes() >= 20) { - _sessionId = readD(); - _data1 = readD(); - _data2 = readD(); - _data3 = readD(); - _data4 = readD(); + _sessionId = packet.readD(); + _data1 = packet.readD(); + _data2 = packet.readD(); + _data3 = packet.readD(); + _data4 = packet.readD(); return true; } return false; } @Override - public void run() + public void run(LoginClient client) { - if (_sessionId == getClient().getSessionId()) + if (_sessionId == client.getSessionId()) { - getClient().setState(LoginClientState.AUTHED_GG); - getClient().sendPacket(new GGAuth(getClient().getSessionId())); + client.setConnectionState(ConnectionState.AUTHED_GG); + client.sendPacket(new GGAuth(client.getSessionId())); } else { - getClient().close(LoginFailReason.REASON_ACCESS_FAILED); + client.close(LoginFailReason.REASON_ACCESS_FAILED); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java index c60980bb17..3b73d65cb1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java @@ -18,16 +18,20 @@ package org.l2jmobius.loginserver.network.clientpackets; import java.net.InetAddress; import java.security.GeneralSecurityException; +import java.util.logging.Level; import java.util.logging.Logger; import javax.crypto.Cipher; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.loginserver.GameServerTable.GameServerInfo; -import org.l2jmobius.loginserver.LoginClient; -import org.l2jmobius.loginserver.LoginClient.LoginClientState; import org.l2jmobius.loginserver.LoginController; import org.l2jmobius.loginserver.LoginController.AuthLoginResult; +import org.l2jmobius.loginserver.model.data.AccountInfo; +import org.l2jmobius.loginserver.network.ConnectionState; +import org.l2jmobius.loginserver.network.LoginClient; import org.l2jmobius.loginserver.network.serverpackets.AccountKicked; import org.l2jmobius.loginserver.network.serverpackets.AccountKicked.AccountKickedReason; import org.l2jmobius.loginserver.network.serverpackets.LoginFail.LoginFailReason; @@ -35,101 +39,97 @@ import org.l2jmobius.loginserver.network.serverpackets.LoginOk; import org.l2jmobius.loginserver.network.serverpackets.ServerList; /** - * Format: x 0 (a leading null) x: the rsa encrypted block with the login an password + *
    + * Format: x 0 (a leading null) x: the rsa encrypted block with the login an password.
    + * 
    + * 
      */
    -public class RequestAuthLogin extends LoginClientPacket
    +public class RequestAuthLogin implements IIncomingPacket
     {
     	private static final Logger LOGGER = Logger.getLogger(RequestAuthLogin.class.getName());
     	
    -	private final byte[] _raw = new byte[128];
    -	
    -	private String _user;
    -	private String _password;
    -	private int _ncotp;
    -	
    -	/**
    -	 * @return
    -	 */
    -	public String getPassword()
    -	{
    -		return _password;
    -	}
    -	
    -	/**
    -	 * @return
    -	 */
    -	public String getUser()
    -	{
    -		return _user;
    -	}
    -	
    -	public int getOneTimePassword()
    -	{
    -		return _ncotp;
    -	}
    +	private final byte[] _raw1 = new byte[128];
    +	private final byte[] _raw2 = new byte[128];
    +	private boolean _newAuthMethod = false;
     	
     	@Override
    -	public boolean readImpl()
    +	public boolean read(LoginClient client, PacketReader packet)
     	{
    -		if (super._buf.remaining() >= 128)
    +		if (packet.getReadableBytes() >= 256)
     		{
    -			readB(_raw);
    +			_newAuthMethod = true;
    +			packet.readB(_raw1, 0, _raw1.length);
    +			packet.readB(_raw2, 0, _raw2.length);
    +			return true;
    +		}
    +		else if (packet.getReadableBytes() >= 128)
    +		{
    +			packet.readB(_raw1, 0, _raw1.length);
     			return true;
     		}
     		return false;
     	}
     	
     	@Override
    -	public void run()
    +	public void run(LoginClient client)
     	{
    -		byte[] decrypted = null;
    +		final byte[] decrypted = new byte[_newAuthMethod ? 256 : 128];
     		try
     		{
     			final Cipher rsaCipher = Cipher.getInstance("RSA/ECB/nopadding");
    -			rsaCipher.init(Cipher.DECRYPT_MODE, getClient().getRSAPrivateKey());
    -			decrypted = rsaCipher.doFinal(_raw, 0x00, 0x80);
    +			rsaCipher.init(Cipher.DECRYPT_MODE, client.getScrambledKeyPair().getPrivateKey());
    +			rsaCipher.doFinal(_raw1, 0, 128, decrypted, 0);
    +			if (_newAuthMethod)
    +			{
    +				rsaCipher.doFinal(_raw2, 0, 128, decrypted, 128);
    +			}
     		}
     		catch (GeneralSecurityException e)
     		{
    -			LOGGER.warning(e.toString());
    +			LOGGER.log(Level.INFO, "", e);
     			return;
     		}
     		
    -		_user = new String(decrypted, 0x5E, 14).trim();
    -		_user = _user.toLowerCase();
    -		_password = new String(decrypted, 0x6C, 16).trim();
    -		_ncotp = decrypted[0x7c];
    -		_ncotp |= decrypted[0x7d] << 8;
    -		_ncotp |= decrypted[0x7e] << 16;
    -		_ncotp |= decrypted[0x7f] << 24;
    +		final String user;
    +		final String password;
    +		try
    +		{
    +			if (_newAuthMethod)
    +			{
    +				user = new String(decrypted, 0x4E, 50).trim() + new String(decrypted, 0xCE, 14).trim();
    +				password = new String(decrypted, 0xDC, 16).trim();
    +			}
    +			else
    +			{
    +				user = new String(decrypted, 0x5E, 14).trim();
    +				password = new String(decrypted, 0x6C, 16).trim();
    +			}
    +		}
    +		catch (Exception e)
    +		{
    +			LOGGER.log(Level.WARNING, "", e);
    +			return;
    +		}
     		
    +		final InetAddress clientAddr = client.getConnectionAddress();
     		final LoginController lc = LoginController.getInstance();
    -		final LoginClient client = getClient();
    -		
    -		final InetAddress address = client.getConnection().getInetAddress();
    -		if (address == null)
    +		final AccountInfo info = lc.retriveAccountInfo(clientAddr, user, password);
    +		if (info == null)
     		{
    -			LOGGER.warning("Socket is not connected: " + client.getAccount());
    -			client.close(LoginFailReason.REASON_SYSTEM_ERROR);
    +			// user or pass wrong
    +			client.close(LoginFailReason.REASON_USER_OR_PASS_WRONG);
     			return;
     		}
     		
    -		// IP banned or entering wrong password many times.
    -		if (lc.isBannedAddress(address))
    -		{
    -			client.close(new AccountKicked(AccountKickedReason.REASON_PERMANENTLY_BANNED));
    -			return;
    -		}
    -		
    -		final AuthLoginResult result = lc.tryAuthLogin(_user, _password, client);
    -		
    +		final AuthLoginResult result = lc.tryCheckinAccount(client, clientAddr, info);
     		switch (result)
     		{
     			case AUTH_SUCCESS:
     			{
    -				client.setAccount(_user);
    -				client.setState(LoginClientState.AUTHED_LOGIN);
    -				client.setSessionKey(lc.assignSessionKeyToClient(_user, client));
    +				client.setAccount(info.getLogin());
    +				client.setConnectionState(ConnectionState.AUTHED_LOGIN);
    +				client.setSessionKey(lc.assignSessionKeyToClient(info.getLogin(), client));
    +				// lc.getCharactersOnAccount(info.getLogin());
     				if (Config.SHOW_LICENCE)
     				{
     					client.sendPacket(new LoginOk(client.getSessionKey()));
    @@ -148,29 +148,31 @@ public class RequestAuthLogin extends LoginClientPacket
     			case ACCOUNT_BANNED:
     			{
     				client.close(new AccountKicked(AccountKickedReason.REASON_PERMANENTLY_BANNED));
    -				break;
    +				return;
     			}
     			case ALREADY_ON_LS:
     			{
    -				final LoginClient oldClient = lc.getAuthedClient(_user);
    +				final LoginClient oldClient = lc.getAuthedClient(info.getLogin());
     				if (oldClient != null)
     				{
     					// kick the other client
     					oldClient.close(LoginFailReason.REASON_ACCOUNT_IN_USE);
    -					lc.removeAuthedLoginClient(_user);
    +					lc.removeAuthedLoginClient(info.getLogin());
     				}
    +				// kick also current client
    +				client.close(LoginFailReason.REASON_ACCOUNT_IN_USE);
     				break;
     			}
     			case ALREADY_ON_GS:
     			{
    -				final GameServerInfo gsi = lc.getAccountOnGameServer(_user);
    +				final GameServerInfo gsi = lc.getAccountOnGameServer(info.getLogin());
     				if (gsi != null)
     				{
     					client.close(LoginFailReason.REASON_ACCOUNT_IN_USE);
     					// kick from there
     					if (gsi.isAuthed())
     					{
    -						gsi.getGameServerThread().kickPlayer(_user);
    +						gsi.getGameServerThread().kickPlayer(info.getLogin());
     					}
     				}
     				break;
    diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerList.java
    index 7ee1307ba1..fa62911d8e 100644
    --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerList.java
    +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerList.java
    @@ -16,64 +16,49 @@
      */
     package org.l2jmobius.loginserver.network.clientpackets;
     
    +import org.l2jmobius.commons.network.IIncomingPacket;
    +import org.l2jmobius.commons.network.PacketReader;
    +import org.l2jmobius.loginserver.network.LoginClient;
     import org.l2jmobius.loginserver.network.serverpackets.LoginFail.LoginFailReason;
     import org.l2jmobius.loginserver.network.serverpackets.ServerList;
     
     /**
    - * Format: ddc d: fist part of session id d: second part of session id c: ?
    + * 
    + * Format: ddc
    + * d: fist part of session id
    + * d: second part of session id
    + * c: ?
    + * 
    */ -public class RequestServerList extends LoginClientPacket +public class RequestServerList implements IIncomingPacket { private int _skey1; private int _skey2; + @SuppressWarnings("unused") private int _data3; - /** - * @return - */ - public int getSessionKey1() - { - return _skey1; - } - - /** - * @return - */ - public int getSessionKey2() - { - return _skey2; - } - - /** - * @return - */ - public int getData3() - { - return _data3; - } - @Override - public boolean readImpl() + public boolean read(LoginClient client, PacketReader packet) { - if (super._buf.remaining() >= 8) + if (packet.getReadableBytes() >= 8) { - _skey1 = readD(); // loginOk 1 - _skey2 = readD(); // loginOk 2 + _skey1 = packet.readD(); // loginOk 1 + _skey2 = packet.readD(); // loginOk 2 return true; } return false; } @Override - public void run() + public void run(LoginClient client) { - if (getClient().getSessionKey().checkLoginPair(_skey1, _skey2)) + if (client.getSessionKey().checkLoginPair(_skey1, _skey2)) { - getClient().sendPacket(new ServerList(getClient())); + client.sendPacket(new ServerList(client)); } else { - getClient().close(LoginFailReason.REASON_ACCESS_FAILED); + client.close(LoginFailReason.REASON_ACCESS_FAILED); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerLogin.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerLogin.java index 84a1080e13..a5c50d5f25 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerLogin.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestServerLogin.java @@ -17,85 +17,69 @@ package org.l2jmobius.loginserver.network.clientpackets; import org.l2jmobius.Config; +import org.l2jmobius.commons.network.IIncomingPacket; +import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.loginserver.LoginController; import org.l2jmobius.loginserver.LoginServer; import org.l2jmobius.loginserver.SessionKey; +import org.l2jmobius.loginserver.network.LoginClient; import org.l2jmobius.loginserver.network.gameserverpackets.ServerStatus; import org.l2jmobius.loginserver.network.serverpackets.LoginFail.LoginFailReason; import org.l2jmobius.loginserver.network.serverpackets.PlayFail.PlayFailReason; import org.l2jmobius.loginserver.network.serverpackets.PlayOk; /** - * Fromat is ddc d: first part of session id d: second part of session id c: server ID + *
    + * Format is ddc
    + * d: first part of session id
    + * d: second part of session id
    + * c: server ID
    + * 
    */ -public class RequestServerLogin extends LoginClientPacket +public class RequestServerLogin implements IIncomingPacket { private int _skey1; private int _skey2; private int _serverId; - /** - * @return - */ - public int getSessionKey1() - { - return _skey1; - } - - /** - * @return - */ - public int getSessionKey2() - { - return _skey2; - } - - /** - * @return - */ - public int getServerID() - { - return _serverId; - } - @Override - public boolean readImpl() + public boolean read(LoginClient client, PacketReader packet) { - if (super._buf.remaining() >= 9) + if (packet.getReadableBytes() >= 9) { - _skey1 = readD(); - _skey2 = readD(); - _serverId = readC(); + _skey1 = packet.readD(); + _skey2 = packet.readD(); + _serverId = packet.readC(); return true; } return false; } @Override - public void run() + public void run(LoginClient client) { - final SessionKey sk = getClient().getSessionKey(); + final SessionKey sk = client.getSessionKey(); // if we didnt showed the license we cant check these values if (!Config.SHOW_LICENCE || sk.checkLoginPair(_skey1, _skey2)) { - if ((LoginServer.getInstance().getStatus() == ServerStatus.STATUS_DOWN) || ((LoginServer.getInstance().getStatus() == ServerStatus.STATUS_GM_ONLY) && (getClient().getAccessLevel() < 1))) + if ((LoginServer.getInstance().getStatus() == ServerStatus.STATUS_DOWN) || ((LoginServer.getInstance().getStatus() == ServerStatus.STATUS_GM_ONLY) && (client.getAccessLevel() < 1))) { - getClient().close(LoginFailReason.REASON_ACCESS_FAILED); + client.close(LoginFailReason.REASON_ACCESS_FAILED); } - else if (LoginController.getInstance().isLoginPossible(getClient(), _serverId)) + else if (LoginController.getInstance().isLoginPossible(client, _serverId)) { - getClient().setJoinedGS(true); - getClient().sendPacket(new PlayOk(sk)); + client.setJoinedGS(true); + client.sendPacket(new PlayOk(sk)); } else { - getClient().close(PlayFailReason.REASON_TOO_MANY_PLAYERS); + client.close(PlayFailReason.REASON_SERVER_OVERLOADED); } } else { - getClient().close(LoginFailReason.REASON_ACCESS_FAILED); + client.close(LoginFailReason.REASON_ACCESS_FAILED); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/BlowFishKey.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/BlowFishKey.java index 86891dffda..3039a3e04d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/BlowFishKey.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/BlowFishKey.java @@ -17,39 +17,38 @@ package org.l2jmobius.loginserver.network.gameserverpackets; import java.security.GeneralSecurityException; -import java.security.interfaces.RSAPrivateKey; +import java.util.logging.Level; import java.util.logging.Logger; import javax.crypto.Cipher; -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; +import org.l2jmobius.commons.network.BaseRecievePacket; +import org.l2jmobius.commons.util.crypt.NewCrypt; +import org.l2jmobius.loginserver.GameServerThread; +import org.l2jmobius.loginserver.network.GameServerPacketHandler.GameServerState; /** * @author -Wooden- */ -public class BlowFishKey extends ClientBasePacket +public class BlowFishKey extends BaseRecievePacket { - byte[] _key; protected static final Logger LOGGER = Logger.getLogger(BlowFishKey.class.getName()); /** * @param decrypt - * @param privateKey + * @param server */ - public BlowFishKey(byte[] decrypt, RSAPrivateKey privateKey) + public BlowFishKey(byte[] decrypt, GameServerThread server) { super(decrypt); final int size = readD(); final byte[] tempKey = readB(size); - try { byte[] tempDecryptKey; - final Cipher rsaCipher = Cipher.getInstance("RSA/ECB/nopadding"); - rsaCipher.init(Cipher.DECRYPT_MODE, privateKey); + rsaCipher.init(Cipher.DECRYPT_MODE, server.getPrivateKey()); tempDecryptKey = rsaCipher.doFinal(tempKey); - // there are nulls before the key we must remove them int i = 0; final int len = tempDecryptKey.length; @@ -60,18 +59,14 @@ public class BlowFishKey extends ClientBasePacket break; } } - - _key = new byte[len - i]; - System.arraycopy(tempDecryptKey, i, _key, 0, len - i); + final byte[] key = new byte[len - i]; + System.arraycopy(tempDecryptKey, i, key, 0, len - i); + server.SetBlowFish(new NewCrypt(key)); + server.setLoginConnectionState(GameServerState.BF_CONNECTED); } catch (GeneralSecurityException e) { - LOGGER.warning("Error While decrypting blowfish key (RSA) " + e); + LOGGER.log(Level.SEVERE, "Error While decrypting blowfish key (RSA): " + e.getMessage(), e); } } - - public byte[] getKey() - { - return _key; - } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/ChangeAccessLevel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/ChangeAccessLevel.java index 6a84cc6510..72ed9671ff 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/ChangeAccessLevel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/ChangeAccessLevel.java @@ -16,39 +16,29 @@ */ package org.l2jmobius.loginserver.network.gameserverpackets; -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; +import java.util.logging.Logger; + +import org.l2jmobius.commons.network.BaseRecievePacket; +import org.l2jmobius.loginserver.GameServerThread; +import org.l2jmobius.loginserver.LoginController; /** * @author -Wooden- */ -public class ChangeAccessLevel extends ClientBasePacket +public class ChangeAccessLevel extends BaseRecievePacket { - private final int _level; - private final String _account; + protected static final Logger LOGGER = Logger.getLogger(ChangeAccessLevel.class.getName()); /** * @param decrypt + * @param server */ - public ChangeAccessLevel(byte[] decrypt) + public ChangeAccessLevel(byte[] decrypt, GameServerThread server) { super(decrypt); - _level = readD(); - _account = readS(); - } - - /** - * @return Returns the account. - */ - public String getAccount() - { - return _account; - } - - /** - * @return Returns the level. - */ - public int getLevel() - { - return _level; + final int level = readD(); + final String account = readS(); + LoginController.getInstance().setAccountAccessLevel(account, level); + LOGGER.info("Changed " + account + " access level to " + level); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerAuth.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerAuth.java index bc3f9bcbf4..b40c0256c2 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerAuth.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/GameServerAuth.java @@ -16,97 +16,149 @@ */ package org.l2jmobius.loginserver.network.gameserverpackets; +import java.util.Arrays; import java.util.logging.Logger; -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; +import org.l2jmobius.Config; +import org.l2jmobius.commons.network.BaseRecievePacket; +import org.l2jmobius.loginserver.GameServerTable; +import org.l2jmobius.loginserver.GameServerTable.GameServerInfo; +import org.l2jmobius.loginserver.GameServerThread; +import org.l2jmobius.loginserver.network.GameServerPacketHandler.GameServerState; +import org.l2jmobius.loginserver.network.loginserverpackets.AuthResponse; +import org.l2jmobius.loginserver.network.loginserverpackets.LoginServerFail; /** - * Format: cccddb c desired ID c accept alternative ID c reserve Host s ExternalHostName s InetranlHostName d max players d hexid size b hexid + *
    + * Format: cccddb
    + * c desired ID
    + * c accept alternative ID
    + * c reserve Host
    + * s ExternalHostName
    + * s InetranlHostName
    + * d max players
    + * d hexid size
    + * b hexid
    + * 
    + * * @author -Wooden- */ -public class GameServerAuth extends ClientBasePacket +public class GameServerAuth extends BaseRecievePacket { protected static final Logger LOGGER = Logger.getLogger(GameServerAuth.class.getName()); + GameServerThread _server; private final byte[] _hexId; private final int _desiredId; + @SuppressWarnings("unused") private final boolean _hostReserved; private final boolean _acceptAlternativeId; private final int _maxPlayers; private final int _port; - private final String _externalHost; - private final String _internalHost; + private final String[] _hosts; /** * @param decrypt + * @param server */ - public GameServerAuth(byte[] decrypt) + public GameServerAuth(byte[] decrypt, GameServerThread server) { super(decrypt); - + _server = server; _desiredId = readC(); _acceptAlternativeId = readC() != 0; _hostReserved = readC() != 0; - _externalHost = readS(); - _internalHost = readS(); _port = readH(); _maxPlayers = readD(); - - final int size = readD(); + int size = readD(); _hexId = readB(size); + size = 2 * readD(); + _hosts = new String[size]; + for (int i = 0; i < size; i++) + { + _hosts[i] = readS(); + } + + if (handleRegProcess()) + { + final AuthResponse ar = new AuthResponse(server.getGameServerInfo().getId()); + server.sendPacket(ar); + server.setLoginConnectionState(GameServerState.AUTHED); + } } - /** - * @return - */ - public byte[] getHexID() + private boolean handleRegProcess() { - return _hexId; - } - - public boolean getHostReserved() - { - return _hostReserved; - } - - public int getDesiredID() - { - return _desiredId; - } - - public boolean acceptAlternateID() - { - return _acceptAlternativeId; - } - - /** - * @return Returns the max players. - */ - public int getMaxPlayers() - { - return _maxPlayers; - } - - /** - * @return Returns the externalHost. - */ - public String getExternalHost() - { - return _externalHost; - } - - /** - * @return Returns the internalHost. - */ - public String getInternalHost() - { - return _internalHost; - } - - /** - * @return Returns the port. - */ - public int getPort() - { - return _port; + final GameServerTable gameServerTable = GameServerTable.getInstance(); + final int id = _desiredId; + final byte[] hexId = _hexId; + GameServerInfo gsi = gameServerTable.getRegisteredGameServerById(id); + // is there a gameserver registered with this id? + if (gsi != null) + { + // does the hex id match? + if (Arrays.equals(gsi.getHexId(), hexId)) + { + // check to see if this GS is already connected + synchronized (gsi) + { + if (gsi.isAuthed()) + { + _server.forceClose(LoginServerFail.REASON_ALREADY_LOGGED8IN); + return false; + } + _server.attachGameServerInfo(gsi, _port, _hosts, _maxPlayers); + } + } + else + { + // there is already a server registered with the desired id and different hex id + // try to register this one with an alternative id + if (Config.ACCEPT_NEW_GAMESERVER && _acceptAlternativeId) + { + gsi = new GameServerInfo(id, hexId, _server); + if (gameServerTable.registerWithFirstAvailableId(gsi)) + { + _server.attachGameServerInfo(gsi, _port, _hosts, _maxPlayers); + gameServerTable.registerServerOnDB(gsi); + } + else + { + _server.forceClose(LoginServerFail.REASON_NO_FREE_ID); + return false; + } + } + else + { + // server id is already taken, and we cant get a new one for you + _server.forceClose(LoginServerFail.REASON_WRONG_HEXID); + return false; + } + } + } + else + { + // can we register on this id? + if (Config.ACCEPT_NEW_GAMESERVER) + { + gsi = new GameServerInfo(id, hexId, _server); + if (gameServerTable.register(id, gsi)) + { + _server.attachGameServerInfo(gsi, _port, _hosts, _maxPlayers); + gameServerTable.registerServerOnDB(gsi); + } + else + { + // some one took this ID meanwhile + _server.forceClose(LoginServerFail.REASON_ID_RESERVED); + return false; + } + } + else + { + _server.forceClose(LoginServerFail.REASON_WRONG_HEXID); + return false; + } + } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerAuthRequest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerAuthRequest.java index 23dba0b34e..e00b38bb0e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerAuthRequest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerAuthRequest.java @@ -16,46 +16,41 @@ */ package org.l2jmobius.loginserver.network.gameserverpackets; +import org.l2jmobius.commons.network.BaseRecievePacket; +import org.l2jmobius.loginserver.GameServerThread; +import org.l2jmobius.loginserver.LoginController; import org.l2jmobius.loginserver.SessionKey; -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; +import org.l2jmobius.loginserver.network.loginserverpackets.PlayerAuthResponse; /** * @author -Wooden- */ -public class PlayerAuthRequest extends ClientBasePacket +public class PlayerAuthRequest extends BaseRecievePacket { - private final String _account; - private final SessionKey _sessionKey; - /** * @param decrypt + * @param server */ - public PlayerAuthRequest(byte[] decrypt) + public PlayerAuthRequest(byte[] decrypt, GameServerThread server) { super(decrypt); - - _account = readS(); - + final String account = readS(); final int playKey1 = readD(); final int playKey2 = readD(); final int loginKey1 = readD(); final int loginKey2 = readD(); - _sessionKey = new SessionKey(loginKey1, loginKey2, playKey1, playKey2); - } - - /** - * @return Returns the account. - */ - public String getAccount() - { - return _account; - } - - /** - * @return Returns the key. - */ - public SessionKey getKey() - { - return _sessionKey; + final SessionKey sessionKey = new SessionKey(loginKey1, loginKey2, playKey1, playKey2); + PlayerAuthResponse authResponse; + final SessionKey key = LoginController.getInstance().getKeyForAccount(account); + if ((key != null) && key.equals(sessionKey)) + { + LoginController.getInstance().removeAuthedLoginClient(account); + authResponse = new PlayerAuthResponse(account, true); + } + else + { + authResponse = new PlayerAuthResponse(account, false); + } + server.sendPacket(authResponse); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerInGame.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerInGame.java index 08ec4cc57f..243207f54b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerInGame.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerInGame.java @@ -16,39 +16,26 @@ */ package org.l2jmobius.loginserver.network.gameserverpackets; -import java.util.ArrayList; -import java.util.List; - -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; +import org.l2jmobius.commons.network.BaseRecievePacket; +import org.l2jmobius.loginserver.GameServerThread; /** * @author -Wooden- */ -public class PlayerInGame extends ClientBasePacket +public class PlayerInGame extends BaseRecievePacket { - private final List _accounts; - /** * @param decrypt + * @param server */ - public PlayerInGame(byte[] decrypt) + public PlayerInGame(byte[] decrypt, GameServerThread server) { super(decrypt); - - _accounts = new ArrayList<>(); - final int size = readH(); for (int i = 0; i < size; i++) { - _accounts.add(readS()); + final String account = readS(); + server.addAccountOnGameServer(account); } } - - /** - * @return Returns the accounts. - */ - public List getAccounts() - { - return _accounts; - } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerLogout.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerLogout.java index d645127c60..259a900007 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerLogout.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/PlayerLogout.java @@ -16,29 +16,26 @@ */ package org.l2jmobius.loginserver.network.gameserverpackets; -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; +import java.util.logging.Logger; + +import org.l2jmobius.commons.network.BaseRecievePacket; +import org.l2jmobius.loginserver.GameServerThread; /** * @author -Wooden- */ -public class PlayerLogout extends ClientBasePacket +public class PlayerLogout extends BaseRecievePacket { - private final String _account; + protected static final Logger LOGGER = Logger.getLogger(PlayerLogout.class.getName()); /** * @param decrypt + * @param server */ - public PlayerLogout(byte[] decrypt) + public PlayerLogout(byte[] decrypt, GameServerThread server) { super(decrypt); - _account = readS(); - } - - /** - * @return Returns the account. - */ - public String getAccount() - { - return _account; + final String account = readS(); + server.removeAccountOnGameServer(account); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/ServerStatus.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/ServerStatus.java index b98f53bf73..2a9624fa76 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/ServerStatus.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/gameserverpackets/ServerStatus.java @@ -18,33 +18,26 @@ package org.l2jmobius.loginserver.network.gameserverpackets; import java.util.logging.Logger; +import org.l2jmobius.commons.network.BaseRecievePacket; import org.l2jmobius.loginserver.GameServerTable; import org.l2jmobius.loginserver.GameServerTable.GameServerInfo; -import org.l2jmobius.loginserver.network.clientpackets.ClientBasePacket; +import org.l2jmobius.loginserver.GameServerThread; /** * @author -Wooden- */ -public class ServerStatus extends ClientBasePacket +public class ServerStatus extends BaseRecievePacket { protected static final Logger LOGGER = Logger.getLogger(ServerStatus.class.getName()); - public static final String[] STATUS_STRING = - { - "Auto", - "Good", - "Normal", - "Full", - "Down", - "Gm Only" - }; - public static final int SERVER_LIST_STATUS = 0x01; - public static final int SERVER_LIST_CLOCK = 0x02; + public static final int SERVER_TYPE = 0x02; public static final int SERVER_LIST_SQUARE_BRACKET = 0x03; public static final int MAX_PLAYERS = 0x04; public static final int TEST_SERVER = 0x05; + public static final int SERVER_AGE = 0x06; + // Server Status public static final int STATUS_AUTO = 0x00; public static final int STATUS_GOOD = 0x01; public static final int STATUS_NORMAL = 0x02; @@ -52,18 +45,32 @@ public class ServerStatus extends ClientBasePacket public static final int STATUS_DOWN = 0x04; public static final int STATUS_GM_ONLY = 0x05; + // Server Types + public static final int SERVER_NORMAL = 0x01; + public static final int SERVER_RELAX = 0x02; + public static final int SERVER_TEST = 0x04; + public static final int SERVER_NOLABEL = 0x08; + public static final int SERVER_CREATION_RESTRICTED = 0x10; + public static final int SERVER_EVENT = 0x20; + public static final int SERVER_FREE = 0x40; + + // Server Ages + public static final int SERVER_AGE_ALL = 0x00; + public static final int SERVER_AGE_15 = 0x0F; + public static final int SERVER_AGE_18 = 0x12; + public static final int ON = 0x01; public static final int OFF = 0x00; /** * @param decrypt - * @param serverId + * @param server */ - public ServerStatus(byte[] decrypt, int serverId) + public ServerStatus(byte[] decrypt, GameServerThread server) { super(decrypt); - final GameServerInfo gsi = GameServerTable.getInstance().getRegisteredGameServerById(serverId); + final GameServerInfo gsi = GameServerTable.getInstance().getRegisteredGameServerById(server.getServerId()); if (gsi != null) { final int size = readD(); @@ -71,7 +78,6 @@ public class ServerStatus extends ClientBasePacket { final int type = readD(); final int value = readD(); - switch (type) { case SERVER_LIST_STATUS: @@ -79,26 +85,26 @@ public class ServerStatus extends ClientBasePacket gsi.setStatus(value); break; } - case SERVER_LIST_CLOCK: - { - gsi.setShowingClock(value == ON); - break; - } case SERVER_LIST_SQUARE_BRACKET: { gsi.setShowingBrackets(value == ON); break; } - case TEST_SERVER: - { - gsi.setTestServer(value == ON); - break; - } case MAX_PLAYERS: { gsi.setMaxPlayers(value); break; } + case SERVER_TYPE: + { + gsi.setServerType(value); + break; + } + case SERVER_AGE: + { + gsi.setAgeLimit(value); + break; + } } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/AuthResponse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/AuthResponse.java index 81f8401c27..91ba3df21d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/AuthResponse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/AuthResponse.java @@ -16,13 +16,13 @@ */ package org.l2jmobius.loginserver.network.loginserverpackets; +import org.l2jmobius.commons.network.BaseSendablePacket; import org.l2jmobius.loginserver.GameServerTable; -import org.l2jmobius.loginserver.network.serverpackets.ServerBasePacket; /** * @author -Wooden- */ -public class AuthResponse extends ServerBasePacket +public class AuthResponse extends BaseSendablePacket { /** * @param serverId diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/InitLS.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/InitLS.java index b95fa0e7d3..9ce94522cb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/InitLS.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/InitLS.java @@ -16,13 +16,13 @@ */ package org.l2jmobius.loginserver.network.loginserverpackets; +import org.l2jmobius.commons.network.BaseSendablePacket; import org.l2jmobius.loginserver.LoginServer; -import org.l2jmobius.loginserver.network.serverpackets.ServerBasePacket; /** * @author -Wooden- */ -public class InitLS extends ServerBasePacket +public class InitLS extends BaseSendablePacket { // ID 0x00 // format diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/KickPlayer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/KickPlayer.java index d959edb94e..815c35d038 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/KickPlayer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/KickPlayer.java @@ -16,12 +16,12 @@ */ package org.l2jmobius.loginserver.network.loginserverpackets; -import org.l2jmobius.loginserver.network.serverpackets.ServerBasePacket; +import org.l2jmobius.commons.network.BaseSendablePacket; /** * @author -Wooden- */ -public class KickPlayer extends ServerBasePacket +public class KickPlayer extends BaseSendablePacket { public KickPlayer(String account) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/LoginServerFail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/LoginServerFail.java index a0fe8e6c7b..e0289e8eda 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/LoginServerFail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/LoginServerFail.java @@ -16,12 +16,12 @@ */ package org.l2jmobius.loginserver.network.loginserverpackets; -import org.l2jmobius.loginserver.network.serverpackets.ServerBasePacket; +import org.l2jmobius.commons.network.BaseSendablePacket; /** * @author -Wooden- */ -public class LoginServerFail extends ServerBasePacket +public class LoginServerFail extends BaseSendablePacket { /** * @param reason diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/PlayerAuthResponse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/PlayerAuthResponse.java index 3200ab273d..52539a3adb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/PlayerAuthResponse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/loginserverpackets/PlayerAuthResponse.java @@ -16,12 +16,12 @@ */ package org.l2jmobius.loginserver.network.loginserverpackets; -import org.l2jmobius.loginserver.network.serverpackets.ServerBasePacket; +import org.l2jmobius.commons.network.BaseSendablePacket; /** * @author -Wooden- */ -public class PlayerAuthResponse extends ServerBasePacket +public class PlayerAuthResponse extends BaseSendablePacket { public PlayerAuthResponse(String account, boolean response) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/AccountKicked.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/AccountKicked.java index bf028c6dda..1d59c6d002 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/AccountKicked.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/AccountKicked.java @@ -16,10 +16,14 @@ */ package org.l2jmobius.loginserver.network.serverpackets; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.loginserver.network.OutgoingPackets; + /** * @author KenM */ -public class AccountKicked extends LoginServerPacket +public class AccountKicked implements IOutgoingPacket { public enum AccountKickedReason { @@ -41,17 +45,22 @@ public class AccountKicked extends LoginServerPacket } } - private final int _reason; + private final AccountKickedReason _reason; + /** + * @param reason + */ public AccountKicked(AccountKickedReason reason) { - _reason = reason.getCode(); + _reason = reason; } @Override - protected void write() + public boolean write(PacketWriter packet) { - writeC(0x02); - writeD(_reason); + OutgoingPackets.ACCOUNT_KICKED.writeId(packet); + packet.writeD(_reason.getCode()); + + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/GGAuth.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/GGAuth.java index 6cc5e50e05..2e3a1f6163 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/GGAuth.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/GGAuth.java @@ -16,13 +16,15 @@ */ package org.l2jmobius.loginserver.network.serverpackets; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.loginserver.network.OutgoingPackets; + /** * Fromat: d d: response */ -public class GGAuth extends LoginServerPacket +public class GGAuth implements IOutgoingPacket { - public static final int SKIP_GG_AUTH_REQUEST = 0x0b; - private final int _response; public GGAuth(int response) @@ -31,13 +33,14 @@ public class GGAuth extends LoginServerPacket } @Override - protected void write() + public boolean write(PacketWriter packet) { - writeC(0x0b); - writeD(_response); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeD(0x00); + OutgoingPackets.GG_AUTH.writeId(packet); + packet.writeD(_response); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/Init.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/Init.java index 36319e947e..4b3f71f30e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/Init.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/Init.java @@ -16,23 +16,31 @@ */ package org.l2jmobius.loginserver.network.serverpackets; -import org.l2jmobius.loginserver.LoginClient; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.loginserver.network.OutgoingPackets; /** - * Format: dd b dddd s d: session id d: protocol revision b: 0x90 bytes : 0x80 bytes for the scrambled RSA public key 0x10 bytes at 0x00 d: unknow d: unknow d: unknow d: unknow s: blowfish key + *
    + * Format: dd b dddd s
    + * d: session id
    + * d: protocol revision
    + * b: 0x90 bytes : 0x80 bytes for the scrambled RSA public key
    + *                 0x10 bytes at 0x00
    + * d: unknow
    + * d: unknow
    + * d: unknow
    + * d: unknow
    + * s: blowfish key
    + * 
    */ -public class Init extends LoginServerPacket +public class Init implements IOutgoingPacket { private final int _sessionId; private final byte[] _publicKey; private final byte[] _blowfishKey; - public Init(LoginClient client) - { - this(client.getScrambledModulus(), client.getBlowfishKey(), client.getSessionId()); - } - public Init(byte[] publickey, byte[] blowfishkey, int sessionId) { _sessionId = sessionId; @@ -41,22 +49,24 @@ public class Init extends LoginServerPacket } @Override - protected void write() + public boolean write(PacketWriter packet) { - writeC(0x00); // init packet id + OutgoingPackets.INIT.writeId(packet); - writeD(_sessionId); // session id - writeD(0x0000c621); // protocol revision + packet.writeD(_sessionId); // session id + packet.writeD(0x0000c621); // protocol revision - writeB(_publicKey); // RSA Public Key + packet.writeB(_publicKey); // RSA Public Key // unk GG related? - writeD(0x29DD954E); - writeD(0x77C39CFC); - writeD(0x97ADB620); - writeD(0x07BDE0F7); + packet.writeD(0x29DD954E); + packet.writeD(0x77C39CFC); + packet.writeD(0x97ADB620); + packet.writeD(0x07BDE0F7); - writeB(_blowfishKey); // BlowFish key - writeC(0x00); // null termination ;) + packet.writeB(_blowfishKey); // BlowFish key + packet.writeC(0x00); // null termination ;) + + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginFail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginFail.java index 7a09ec052c..8c534554a8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginFail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginFail.java @@ -16,22 +16,56 @@ */ package org.l2jmobius.loginserver.network.serverpackets; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.loginserver.network.OutgoingPackets; + /** * Fromat: d d: the failure reason */ -public class LoginFail extends LoginServerPacket +public class LoginFail implements IOutgoingPacket { public enum LoginFailReason { - REASON_SYSTEM_ERROR(0x01), - REASON_PASS_WRONG(0x02), - REASON_USER_OR_PASS_WRONG(0x03), - REASON_ACCESS_FAILED(0x04), + REASON_NO_MESSAGE(0x00), + REASON_SYSTEM_ERROR_LOGIN_LATER(0x01), + REASON_USER_OR_PASS_WRONG(0x02), + REASON_ACCESS_FAILED_TRY_AGAIN_LATER(0x04), + REASON_ACCOUNT_INFO_INCORRECT_CONTACT_SUPPORT(0x05), REASON_ACCOUNT_IN_USE(0x07), - REASON_SERVER_OVERLOADED(0x0f), + REASON_UNDER_18_YEARS_KR(0x0C), + REASON_SERVER_OVERLOADED(0x0F), REASON_SERVER_MAINTENANCE(0x10), REASON_TEMP_PASS_EXPIRED(0x11), - REASON_DUAL_BOX(0x23); + REASON_GAME_TIME_EXPIRED(0x12), + REASON_NO_TIME_LEFT(0x13), + REASON_SYSTEM_ERROR(0x14), + REASON_ACCESS_FAILED(0x15), + REASON_RESTRICTED_IP(0x16), + REASON_WEEK_USAGE_FINISHED(0x1E), + REASON_SECURITY_CARD_NUMBER_INVALID(0x1F), + REASON_AGE_NOT_VERIFIED_CANT_LOG_BEETWEEN_10PM_6AM(0x20), + REASON_SERVER_CANNOT_BE_ACCESSED_BY_YOUR_COUPON(0x21), + REASON_DUAL_BOX(0x23), + REASON_INACTIVE(0x24), + REASON_USER_AGREEMENT_REJECTED_ON_WEBSITE(0x25), + REASON_GUARDIAN_CONSENT_REQUIRED(0x26), + REASON_USER_AGREEMENT_DECLINED_OR_WITHDRAWL_REQUEST(0x27), + REASON_ACCOUNT_SUSPENDED_CALL(0x28), + REASON_CHANGE_PASSWORD_AND_QUIZ_ON_WEBSITE(0x29), + REASON_ALREADY_LOGGED_INTO_10_ACCOUNTS(0x2A), + REASON_MASTER_ACCOUNT_RESTRICTED(0x2B), + REASON_CERTIFICATION_FAILED(0x2E), + REASON_TELEPHONE_CERTIFICATION_UNAVAILABLE(0x2F), + REASON_TELEPHONE_SIGNALS_DELAYED(0x30), + REASON_CERTIFICATION_FAILED_LINE_BUSY(0x31), + REASON_CERTIFICATION_SERVICE_NUMBER_EXPIRED_OR_INCORRECT(0x32), + REASON_CERTIFICATION_SERVICE_CURRENTLY_BEING_CHECKED(0x33), + REASON_CERTIFICATION_SERVICE_CANT_BE_USED_HEAVY_VOLUME(0x34), + REASON_CERTIFICATION_SERVICE_EXPIRED_GAMEPLAY_BLOCKED(0x35), + REASON_CERTIFICATION_FAILED_3_TIMES_GAMEPLAY_BLOCKED_30_MIN(0x36), + REASON_CERTIFICATION_DAILY_USE_EXCEEDED(0x37), + REASON_CERTIFICATION_UNDERWAY_TRY_AGAIN_LATER(0x38); private final int _code; @@ -54,9 +88,10 @@ public class LoginFail extends LoginServerPacket } @Override - protected void write() + public boolean write(PacketWriter packet) { - writeC(0x01); - writeD(_reason.getCode()); + OutgoingPackets.LOGIN_FAIL.writeId(packet); + packet.writeC(_reason.getCode()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginOk.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginOk.java index 75aa750360..2637075acd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginOk.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/LoginOk.java @@ -16,12 +16,25 @@ */ package org.l2jmobius.loginserver.network.serverpackets; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.loginserver.SessionKey; +import org.l2jmobius.loginserver.network.OutgoingPackets; /** - * Format: dddddddd f: the session key d: ? d: ? d: ? d: ? d: ? d: ? b: 16 bytes - unknown + *
    + * Format: dddddddd
    + * f: the session key
    + * d: ?
    + * d: ?
    + * d: ?
    + * d: ?
    + * d: ?
    + * d: ?
    + * b: 16 bytes - unknown
    + * 
    */ -public class LoginOk extends LoginServerPacket +public class LoginOk implements IOutgoingPacket { private final int _loginOk1; private final int _loginOk2; @@ -33,17 +46,18 @@ public class LoginOk extends LoginServerPacket } @Override - protected void write() + public boolean write(PacketWriter packet) { - writeC(0x03); - writeD(_loginOk1); - writeD(_loginOk2); - writeD(0x00); - writeD(0x00); - writeD(0x000003ea); - writeD(0x00); - writeD(0x00); - writeD(0x00); - writeB(new byte[16]); + OutgoingPackets.LOGIN_OK.writeId(packet); + packet.writeD(_loginOk1); + packet.writeD(_loginOk2); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x000003ea); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeD(0x00); + packet.writeB(new byte[16]); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/PlayFail.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/PlayFail.java index 704271da80..ac15ad3239 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/PlayFail.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/PlayFail.java @@ -16,18 +16,56 @@ */ package org.l2jmobius.loginserver.network.serverpackets; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.loginserver.network.OutgoingPackets; + /** * @version $Revision: 1.2.4.1 $ $Date: 2005/03/27 15:30:11 $ */ -public class PlayFail extends LoginServerPacket +public class PlayFail implements IOutgoingPacket { public enum PlayFailReason { - REASON_SYSTEM_ERROR(0x01), + REASON_NO_MESSAGE(0x00), + REASON_SYSTEM_ERROR_LOGIN_LATER(0x01), REASON_USER_OR_PASS_WRONG(0x02), - REASON3(0x03), - REASON4(0x04), - REASON_TOO_MANY_PLAYERS(0x0f); + REASON_ACCESS_FAILED_TRY_AGAIN_LATER(0x04), + REASON_ACCOUNT_INFO_INCORRECT_CONTACT_SUPPORT(0x05), + REASON_ACCOUNT_IN_USE(0x07), + REASON_UNDER_18_YEARS_KR(0x0C), + REASON_SERVER_OVERLOADED(0x0F), + REASON_SERVER_MAINTENANCE(0x10), + REASON_TEMP_PASS_EXPIRED(0x11), + REASON_GAME_TIME_EXPIRED(0x12), + REASON_NO_TIME_LEFT(0x13), + REASON_SYSTEM_ERROR(0x14), + REASON_ACCESS_FAILED(0x15), + REASON_RESTRICTED_IP(0x16), + REASON_WEEK_USAGE_FINISHED(0x1E), + REASON_SECURITY_CARD_NUMBER_INVALID(0x1F), + REASON_AGE_NOT_VERIFIED_CANT_LOG_BEETWEEN_10PM_6AM(0x20), + REASON_SERVER_CANNOT_BE_ACCESSED_BY_YOUR_COUPON(0x21), + REASON_DUAL_BOX(0x23), + REASON_INACTIVE(0x24), + REASON_USER_AGREEMENT_REJECTED_ON_WEBSITE(0x25), + REASON_GUARDIAN_CONSENT_REQUIRED(0x26), + REASON_USER_AGREEMENT_DECLINED_OR_WITHDRAWL_REQUEST(0x27), + REASON_ACCOUNT_SUSPENDED_CALL(0x28), + REASON_CHANGE_PASSWORD_AND_QUIZ_ON_WEBSITE(0x29), + REASON_ALREADY_LOGGED_INTO_10_ACCOUNTS(0x2A), + REASON_MASTER_ACCOUNT_RESTRICTED(0x2B), + REASON_CERTIFICATION_FAILED(0x2E), + REASON_TELEPHONE_CERTIFICATION_UNAVAILABLE(0x2F), + REASON_TELEPHONE_SIGNALS_DELAYED(0x30), + REASON_CERTIFICATION_FAILED_LINE_BUSY(0x31), + REASON_CERTIFICATION_SERVICE_NUMBER_EXPIRED_OR_INCORRECT(0x32), + REASON_CERTIFICATION_SERVICE_CURRENTLY_BEING_CHECKED(0x33), + REASON_CERTIFICATION_SERVICE_CANT_BE_USED_HEAVY_VOLUME(0x34), + REASON_CERTIFICATION_SERVICE_EXPIRED_GAMEPLAY_BLOCKED(0x35), + REASON_CERTIFICATION_FAILED_3_TIMES_GAMEPLAY_BLOCKED_30_MIN(0x36), + REASON_CERTIFICATION_DAILY_USE_EXCEEDED(0x37), + REASON_CERTIFICATION_UNDERWAY_TRY_AGAIN_LATER(0x38); private final int _code; @@ -50,9 +88,10 @@ public class PlayFail extends LoginServerPacket } @Override - protected void write() + public boolean write(PacketWriter packet) { - writeC(0x06); - writeC(_reason.getCode()); + OutgoingPackets.PLAY_FAIL.writeId(packet); + packet.writeC(_reason.getCode()); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/PlayOk.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/PlayOk.java index 9f9a2ee84b..ca384aa477 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/PlayOk.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/PlayOk.java @@ -16,9 +16,12 @@ */ package org.l2jmobius.loginserver.network.serverpackets; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.loginserver.SessionKey; +import org.l2jmobius.loginserver.network.OutgoingPackets; -public class PlayOk extends LoginServerPacket +public class PlayOk implements IOutgoingPacket { private final int _playOk1; private final int _playOk2; @@ -30,10 +33,11 @@ public class PlayOk extends LoginServerPacket } @Override - protected void write() + public boolean write(PacketWriter packet) { - writeC(0x07); - writeD(_playOk1); - writeD(_playOk2); + OutgoingPackets.PLAY_OK.writeId(packet); + packet.writeD(_playOk1); + packet.writeD(_playOk2); + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 11b8b8d1e4..90ca7077ee 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -20,128 +20,162 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.logging.Logger; +import org.l2jmobius.commons.network.IOutgoingPacket; +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.loginserver.GameServerTable; import org.l2jmobius.loginserver.GameServerTable.GameServerInfo; -import org.l2jmobius.loginserver.LoginClient; +import org.l2jmobius.loginserver.network.LoginClient; +import org.l2jmobius.loginserver.network.OutgoingPackets; import org.l2jmobius.loginserver.network.gameserverpackets.ServerStatus; /** - * ServerList Format: cc [cddcchhcdc] c: server list size (number of servers) c: ? [ (repeat for each servers) c: server id (ignored by client?) d: server ip d: server port c: age limit (used by client?) c: pvp or not (used by client?) h: current number of players h: max number of players c: 0 if - * server is down d: 2nd bit: clock 3rd bit: wont dsiplay server name 4th bit: test server (used by client?) c: 0 if you dont want to display brackets in front of sever name ] Server will be considered as Good when the number of online players is less than half the maximum. as Normal between half - * and 4/5 and Full when there's more than 4/5 of the maximum number of players + * ServerList + * + *
    + * Format: cc [cddcchhcdc]
    + * 
    + * c: server list size (number of servers)
    + * c: ?
    + * [ (repeat for each servers)
    + * c: server id (ignored by client?)
    + * d: server ip
    + * d: server port
    + * c: age limit (used by client?)
    + * c: pvp or not (used by client?)
    + * h: current number of players
    + * h: max number of players
    + * c: 0 if server is down
    + * d: 2nd bit: clock
    + *    3rd bit: won't display server name
    + *    4th bit: test server (used by client?)
    + * c: 0 if you don't want to display brackets in front of sever name
    + * ]
    + * 
    + * + * Server will be considered as Good when the number of online players
    + * is less than half the maximum. as Normal between half and 4/5
    + * and Full when there's more than 4/5 of the maximum number of players. */ -public class ServerList extends LoginServerPacket +public class ServerList implements IOutgoingPacket { + protected static final Logger LOGGER = Logger.getLogger(ServerList.class.getName()); + private final List _servers; private final int _lastServer; + private final Map _charsOnServers; + private final Map _charsToDelete; class ServerData { - protected String _ip; + protected byte[] _ip; protected int _port; + protected int _ageLimit; protected boolean _pvp; protected int _currentPlayers; protected int _maxPlayers; - protected boolean _testServer; protected boolean _brackets; protected boolean _clock; protected int _status; protected int _serverId; + protected int _serverType; - ServerData(String pIp, int pPort, boolean pPvp, boolean pTestServer, int pCurrentPlayers, int pMaxPlayers, boolean pBrackets, boolean pClock, int pStatus, int pServerId) + ServerData(LoginClient client, GameServerInfo gsi) { - _ip = pIp; - _port = pPort; - _pvp = pPvp; - _testServer = pTestServer; - _currentPlayers = pCurrentPlayers; - _maxPlayers = pMaxPlayers; - _brackets = pBrackets; - _clock = pClock; - _status = pStatus; - _serverId = pServerId; + try + { + _ip = InetAddress.getByName(gsi.getServerAddress(client.getConnectionAddress())).getAddress(); + } + catch (UnknownHostException e) + { + LOGGER.warning(getClass().getSimpleName() + ": " + e.getMessage()); + _ip = new byte[4]; + _ip[0] = 127; + _ip[1] = 0; + _ip[2] = 0; + _ip[3] = 1; + } + + _port = gsi.getPort(); + _pvp = gsi.isPvp(); + _serverType = gsi.getServerType(); + _currentPlayers = gsi.getCurrentPlayerCount(); + _maxPlayers = gsi.getMaxPlayers(); + _ageLimit = 0; + _brackets = gsi.isShowingBrackets(); + // If server GM-only - show status only to GMs + _status = (client.getAccessLevel() < 0) || ((gsi.getStatus() == ServerStatus.STATUS_GM_ONLY) && (client.getAccessLevel() <= 0)) ? ServerStatus.STATUS_DOWN : gsi.getStatus(); + _serverId = gsi.getId(); } } public ServerList(LoginClient client) { - _servers = new ArrayList<>(); + _servers = new ArrayList<>(GameServerTable.getInstance().getRegisteredGameServers().size()); _lastServer = client.getLastServer(); for (GameServerInfo gsi : GameServerTable.getInstance().getRegisteredGameServers().values()) { - if ((gsi.getStatus() == ServerStatus.STATUS_GM_ONLY) && (client.getAccessLevel() >= 100)) - { - // Server is GM-Only but you've got GM Status - addServer(client.usesInternalIP() ? gsi.getInternalHost() : gsi.getExternalHost(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId()); - } - else if (gsi.getStatus() != ServerStatus.STATUS_GM_ONLY) - { - // Server is not GM-Only - addServer(client.usesInternalIP() ? gsi.getInternalHost() : gsi.getExternalHost(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId()); - } - else - { - // Server's GM-Only and you've got no GM-Status - addServer(client.usesInternalIP() ? gsi.getInternalHost() : gsi.getExternalHost(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), ServerStatus.STATUS_DOWN, gsi.getId()); - } + _servers.add(new ServerData(client, gsi)); } - } - - public void addServer(String ip, int port, boolean pvp, boolean testServer, int currentPlayer, int maxPlayer, boolean brackets, boolean clock, int status, int serverId) - { - _servers.add(new ServerData(ip, port, pvp, testServer, currentPlayer, maxPlayer, brackets, clock, status, serverId)); + _charsOnServers = client.getCharsOnServ(); + _charsToDelete = client.getCharsWaitingDelOnServ(); } @Override - public void write() + public boolean write(PacketWriter packet) { - writeC(0x04); - writeC(_servers.size()); - writeC(_lastServer); - + OutgoingPackets.SERVER_LIST.writeId(packet); + packet.writeC(_servers.size()); + packet.writeC(_lastServer); for (ServerData server : _servers) { - writeC(server._serverId); // server id + packet.writeC(server._serverId); // server id - try - { - final InetAddress i4 = InetAddress.getByName(server._ip); - final byte[] raw = i4.getAddress(); - writeC(raw[0] & 0xff); - writeC(raw[1] & 0xff); - writeC(raw[2] & 0xff); - writeC(raw[3] & 0xff); - } - catch (UnknownHostException e) - { - e.printStackTrace(); - writeC(127); - writeC(0); - writeC(0); - writeC(1); - } + packet.writeC(server._ip[0] & 0xff); + packet.writeC(server._ip[1] & 0xff); + packet.writeC(server._ip[2] & 0xff); + packet.writeC(server._ip[3] & 0xff); - writeD(server._port); - writeC(0x00); // age limit - writeC(server._pvp ? 0x01 : 0x00); - writeH(server._currentPlayers); - writeH(server._maxPlayers); - writeC(server._status == ServerStatus.STATUS_DOWN ? 0x00 : 0x01); - - int bits = 0; - if (server._testServer) - { - bits |= 0x04; - } - - if (server._clock) - { - bits |= 0x02; - } - - writeD(bits); - writeC(server._brackets ? 0x01 : 0x00); + packet.writeD(server._port); + packet.writeC(server._ageLimit); // Age Limit 0, 15, 18 + packet.writeC(server._pvp ? 0x01 : 0x00); + packet.writeH(server._currentPlayers); + packet.writeH(server._maxPlayers); + packet.writeC(server._status == ServerStatus.STATUS_DOWN ? 0x00 : 0x01); + packet.writeD(server._serverType); // 1: Normal, 2: Relax, 4: Public Test, 8: No Label, 16: Character Creation Restricted, 32: Event, 64: Free + packet.writeC(server._brackets ? 0x01 : 0x00); } + packet.writeH(0x00); // unknown + if (_charsOnServers != null) + { + packet.writeC(_charsOnServers.size()); + for (Entry entry : _charsOnServers.entrySet()) + { + final int servId = entry.getKey(); + packet.writeC(servId); + packet.writeC(entry.getValue()); + if ((_charsToDelete == null) || !_charsToDelete.containsKey(servId)) + { + packet.writeC(0x00); + } + else + { + packet.writeC(_charsToDelete.get(servId).length); + for (long deleteTime : _charsToDelete.get(servId)) + { + packet.writeD((int) ((deleteTime - Chronos.currentTimeMillis()) / 1000)); + } + } + } + } + else + { + packet.writeC(0x00); + } + return true; } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/ui/Gui.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/ui/Gui.java index 8b69b47de7..bc4249e20f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/ui/Gui.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/ui/Gui.java @@ -43,7 +43,6 @@ import javax.swing.JTextArea; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; -import org.l2jmobius.Config; import org.l2jmobius.commons.util.LimitLinesDocumentListener; import org.l2jmobius.commons.util.SplashScreen; import org.l2jmobius.loginserver.GameServerTable; @@ -124,7 +123,7 @@ public class Gui mntmBannedIps.addActionListener(arg0 -> { LoginController.getInstance().getBannedIps().clear(); - Config.loadBanFile(); + LoginServer.getInstance().loadBanFile(); }); mnReload.add(mntmBannedIps); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/telnet/GameStatusThread.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/telnet/GameStatusThread.java index bc8d9c2a86..539ad5e065 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/telnet/GameStatusThread.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/telnet/GameStatusThread.java @@ -77,11 +77,9 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.CharInfo; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.taskmanager.DecayTaskManager; import org.l2jmobius.gameserver.util.GMAudit; @@ -877,9 +875,7 @@ public class GameStatusThread extends Thread final InventoryUpdate iu = new InventoryUpdate(); iu.addModifiedItem(itemInstance); player.sendPacket(iu); - player.broadcastPacket(new CharInfo(player)); - player.sendPacket(new UserInfo(player)); - // player.broadcastPacket(new ExBrExtraUserInfo(player)); + player.broadcastUserInfo(); // informations player.sendMessage("Changed enchantment of " + player.getName() + "'s " + itemInstance.getItem().getName() + " from " + curEnchant + " to " + ench + "."); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/tools/accountmanager/SQLAccountManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/tools/accountmanager/SQLAccountManager.java index a3e870739d..047c073770 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/tools/accountmanager/SQLAccountManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/tools/accountmanager/SQLAccountManager.java @@ -16,18 +16,13 @@ */ package org.l2jmobius.tools.accountmanager; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.LineNumberReader; import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; import java.util.Base64; -import java.util.List; +import java.util.Scanner; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; @@ -36,7 +31,6 @@ import org.l2jmobius.commons.enums.ServerMode; /** * This class SQL Account Manager * @author netimperia - * @version $Revision: 2.3.2.1.2.3 $ $Date: 2005/08/08 22:47:12 $ */ public class SQLAccountManager { @@ -45,124 +39,118 @@ public class SQLAccountManager private static String _level = ""; private static String _mode = ""; - public static void main(String[] args) throws SQLException, IOException, NoSuchAlgorithmException + public static void main(String[] args) { Config.load(ServerMode.LOGIN); DatabaseFactory.init(); - while (true) + try (Scanner scn = new Scanner(System.in)) { - System.out.println("Please choose an option:"); - System.out.println(""); - System.out.println("1 - Create new account or update existing one (change pass and access level)."); - System.out.println("2 - Change access level."); - System.out.println("3 - Delete existing account."); - System.out.println("4 - List accounts & access levels."); - System.out.println("5 - Exit."); - final LineNumberReader _in = new LineNumberReader(new InputStreamReader(System.in)); - while ((!_mode.equals("1") && !_mode.equals("2") && !_mode.equals("3") && !_mode.equals("4") && !_mode.equals("5"))) + while (true) { - System.out.print("Your choice: "); - _mode = _in.readLine(); - } - - if (_mode.equals("1") || _mode.equals("2") || _mode.equals("3")) - { - if (_mode.equals("1") || _mode.equals("2")) + System.out.println("Please choose an option"); + System.out.println(); + System.out.println("1 - Create new account or update existing one (change pass and access level)"); + System.out.println("2 - Change access level"); + System.out.println("3 - Delete existing account"); + System.out.println("4 - List accounts and access levels"); + System.out.println("5 - Exit"); + while (!_mode.equals("1") && !_mode.equals("2") && !_mode.equals("3") && !_mode.equals("4") && !_mode.equals("5")) { - while (_uname.trim().length() == 0) + System.out.print("Your choice: "); + _mode = scn.next(); + } + + if (_mode.equals("1") || _mode.equals("2") || _mode.equals("3")) + { + while (_uname.trim().isEmpty()) { System.out.print("Username: "); - _uname = _in.readLine().toLowerCase(); + _uname = scn.next().toLowerCase(); } + + if (_mode.equals("1")) + { + while (_pass.trim().isEmpty()) + { + System.out.print("Password: "); + _pass = scn.next(); + } + } + + if (_mode.equals("1") || _mode.equals("2")) + { + while (_level.trim().isEmpty()) + { + System.out.print("Access level: "); + _level = scn.next(); + } + } + } + + if (_mode.equals("1")) + { + // Add or Update + addOrUpdateAccount(_uname.trim(), _pass.trim(), _level.trim()); + } + else if (_mode.equals("2")) + { + // Change Level + changeAccountLevel(_uname.trim(), _level.trim()); } else if (_mode.equals("3")) { - while (_uname.trim().length() == 0) + // Delete + System.out.print("WARNING: This will not delete the gameserver data (characters, items, etc..)"); + System.out.print(" it will only delete the account login server data."); + System.out.println(); + System.out.print("Do you really want to delete this account? Y/N: "); + final String yesno = scn.next(); + if ((yesno != null) && yesno.equalsIgnoreCase("Y")) { - System.out.print("Account name: "); - _uname = _in.readLine().toLowerCase(); + deleteAccount(_uname.trim()); + } + else + { + System.out.println("Deletion cancelled."); } } - if (_mode.equals("1")) + else if (_mode.equals("4")) { - while (_pass.trim().length() == 0) + // List + _mode = ""; + System.out.println(); + System.out.println("Please choose a listing mode"); + System.out.println(); + System.out.println("1 - Banned accounts only (accessLevel < 0)"); + System.out.println("2 - GM/privileged accounts (accessLevel > 0"); + System.out.println("3 - Regular accounts only (accessLevel = 0)"); + System.out.println("4 - List all"); + while (!_mode.equals("1") && !_mode.equals("2") && !_mode.equals("3") && !_mode.equals("4")) { - System.out.print("Password: "); - _pass = _in.readLine(); + System.out.print("Your choice: "); + _mode = scn.next(); } + System.out.println(); + printAccInfo(_mode); } - if (_mode.equals("1") || _mode.equals("2")) + else if (_mode.equals("5")) { - while (_level.trim().length() == 0) - { - System.out.print("Access level: "); - _level = _in.readLine(); - } + System.exit(0); } - } - - if (_mode.equals("1")) - { - // Add or Update - addOrUpdateAccount(_uname.trim(), _pass.trim(), _level.trim()); - } - else if (_mode.equals("2")) - { - // Change Level - changeAccountLevel(_uname.trim(), _level.trim()); - } - else if (_mode.equals("3")) - { - // Delete - System.out.print("Do you really want to delete this account ? Y/N : "); - final String yesno = _in.readLine(); - if (yesno.equalsIgnoreCase("Y")) - { - deleteAccount(_uname.trim()); - } - else - { - System.out.println("Deletion cancelled"); - } - } - else if (_mode.equals("4")) - { - // List + + _uname = ""; + _pass = ""; + _level = ""; _mode = ""; - System.out.println(""); - System.out.println("Please choose a listing mode:"); - System.out.println(""); - System.out.println("1 - Banned accounts only (accessLevel < 0)"); - System.out.println("2 - GM/privileged accounts (accessLevel > 0)"); - System.out.println("3 - Regular accounts only (accessLevel = 0)"); - System.out.println("4 - List all"); - while ((!_mode.equals("1") && !_mode.equals("2") && !_mode.equals("3") && !_mode.equals("4"))) - { - System.out.print("Your choice: "); - _mode = _in.readLine(); - } - System.out.println(""); - printAccInfo(_mode); + System.out.println(); } - else if (_mode.equals("5")) - { - System.exit(0); - } - - _uname = ""; - _pass = ""; - _level = ""; - _mode = ""; - System.out.println(); } } - private static void printAccInfo(String m) throws SQLException + private static void printAccInfo(String m) { int count = 0; - Connection con = null; - con = DatabaseFactory.getConnection(); String q = "SELECT login, accessLevel FROM accounts "; if (m.equals("1")) { @@ -178,298 +166,93 @@ public class SQLAccountManager } q += " ORDER BY login ASC"; - final PreparedStatement statement = con.prepareStatement(q); - final ResultSet rset = statement.executeQuery(); - while (rset.next()) + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement(q); + ResultSet rset = ps.executeQuery()) { - System.out.println(rset.getString("login") + " -> " + rset.getInt("accessLevel")); - count++; - } - rset.close(); - statement.close(); - con.close(); - System.out.println("Displayed accounts: " + count + "."); - } - - private static void addOrUpdateAccount(String account, String password, String level) throws IOException, SQLException, NoSuchAlgorithmException - { - // Encode Password - final MessageDigest md = MessageDigest.getInstance("SHA"); - byte[] newpass; - newpass = password.getBytes("UTF-8"); - newpass = md.digest(newpass); - - // Add to Base - Connection con = null; - con = DatabaseFactory.getConnection(); - final PreparedStatement statement = con.prepareStatement("REPLACE accounts (login, password, accessLevel) VALUES (?,?,?)"); - statement.setString(1, account); - statement.setString(2, Base64.getEncoder().encodeToString(newpass)); - statement.setString(3, level); - statement.executeUpdate(); - statement.close(); - con.close(); - } - - private static void changeAccountLevel(String account, String level) throws SQLException - { - Connection con = null; - con = DatabaseFactory.getConnection(); - - // Check Account Exist - PreparedStatement statement = con.prepareStatement("SELECT COUNT(*) FROM accounts WHERE login=?;"); - statement.setString(1, account); - final ResultSet rset = statement.executeQuery(); - if (!rset.next()) - { - System.out.println("False"); - } - else if (rset.getInt(1) > 0) - { - // Exist - // Update - statement = con.prepareStatement("UPDATE accounts SET accessLevel=? WHERE login=?;"); - statement.setEscapeProcessing(true); - statement.setString(1, level); - statement.setString(2, account); - statement.executeUpdate(); - - System.out.println("Account " + account + " has been updated."); - } - else - { - // Not Exist - System.out.println("Account " + account + " does not exist."); - } - rset.close(); - statement.close(); - con.close(); - } - - private static void deleteAccount(String account) throws SQLException - { - Connection con = null; - con = DatabaseFactory.getConnection(); - - // Check Account Exist - PreparedStatement statement = con.prepareStatement("SELECT COUNT(*) FROM accounts WHERE login=?;"); - statement.setString(1, account); - ResultSet rset = statement.executeQuery(); - if (!rset.next()) - { - System.out.println("False"); - rset.close(); - } - else if (rset.getInt(1) > 0) - { - rset.close(); - // Account exist - // Get Accounts ID - ResultSet rcln; - statement = con.prepareStatement("SELECT charId, char_name, clanid FROM characters WHERE account_name=?;"); - statement.setEscapeProcessing(true); - statement.setString(1, account); - rset = statement.executeQuery(); - - final List objIds = new ArrayList<>(); - final List charNames = new ArrayList<>(); - final List clanIds = new ArrayList<>(); - while (rset.next()) { - objIds.add(rset.getString("charId")); - charNames.add(rset.getString("char_name")); - clanIds.add(rset.getString("clanid")); - } - rset.close(); - - for (int index = 0; index < objIds.size(); index++) - { - System.out.println("Deleting character " + charNames.get(index) + "."); - - // Check If clan leader Remove Clan and remove all from it - statement.close(); - statement = con.prepareStatement("SELECT COUNT(*) FROM clan_data WHERE leader_id=?;"); - statement.setString(1, clanIds.get(index)); - rcln = statement.executeQuery(); - rcln.next(); - if (rcln.getInt(1) > 0) - { - rcln.close(); - // Clan Leader - - // Get Clan Name - statement.close(); - statement = con.prepareStatement("SELECT clan_name FROM clan_data WHERE leader_id=?;"); - statement.setString(1, clanIds.get(index)); - rcln = statement.executeQuery(); - rcln.next(); - - final String clanName = rcln.getString("clan_name"); - System.out.println("Deleting clan " + clanName + "."); - - // Delete Clan Wars - statement.close(); - statement = con.prepareStatement("DELETE FROM clan_wars WHERE clan1=? OR clan2=?;"); - statement.setEscapeProcessing(true); - statement.setString(1, clanName); - statement.setString(2, clanName); - statement.executeUpdate(); - - rcln.close(); - - // Remove All From clan - statement.close(); - statement = con.prepareStatement("UPDATE characters SET clanid=0 WHERE clanid=?;"); - statement.setString(1, clanIds.get(index)); - statement.executeUpdate(); - // Free Clan Halls - statement.close(); - statement = con.prepareStatement("UPDATE clanhall SET ownerId=0, paidUntil=0, paid=0 WHERE ownerId=?;"); - statement.setString(1, clanIds.get(index)); - statement.executeUpdate(); - // Delete Clan - statement.close(); - statement = con.prepareStatement("DELETE FROM clan_data WHERE clan_id=?;"); - statement.setString(1, clanIds.get(index)); - statement.executeUpdate(); - // Clan privileges - statement.close(); - statement = con.prepareStatement("DELETE FROM clan_privs WHERE clan_id=?;"); - statement.setString(1, clanIds.get(index)); - statement.executeUpdate(); - // Clan subpledges - statement.close(); - statement = con.prepareStatement("DELETE FROM clan_subpledges WHERE clan_id=?;"); - statement.setString(1, clanIds.get(index)); - statement.executeUpdate(); - // Clan skills - statement.close(); - statement = con.prepareStatement("DELETE FROM clan_skills WHERE clan_id=?;"); - statement.setString(1, clanIds.get(index)); - statement.executeUpdate(); - } - else - { - rcln.close(); - } - - // skills - statement.close(); - statement = con.prepareStatement("DELETE FROM character_skills WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // skills save - statement.close(); - statement = con.prepareStatement("DELETE FROM character_skills_save WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // subclasses - statement.close(); - statement = con.prepareStatement("DELETE FROM character_subclasses WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // shortcuts - statement.close(); - statement = con.prepareStatement("DELETE FROM character_shortcuts WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // items - statement.close(); - statement = con.prepareStatement("DELETE FROM items WHERE owner_id=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // recipebook - statement.close(); - statement = con.prepareStatement("DELETE FROM character_recipebook WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // quests - statement.close(); - statement = con.prepareStatement("DELETE FROM character_quests WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // macroses - statement.close(); - statement = con.prepareStatement("DELETE FROM character_macroses WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // friends - statement.close(); - statement = con.prepareStatement("DELETE FROM character_friends WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // merchant_lease - statement.close(); - statement = con.prepareStatement("DELETE FROM merchant_lease WHERE player_id=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // boxaccess - statement.close(); - statement = con.prepareStatement("DELETE FROM boxaccess WHERE charname=?;"); - statement.setString(1, charNames.get(index)); - statement.executeUpdate(); - - // hennas - statement.close(); - statement = con.prepareStatement("DELETE FROM character_hennas WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // recommends - statement.close(); - statement = con.prepareStatement("DELETE FROM character_recommends WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // ui categories - statement.close(); - statement = con.prepareStatement("DELETE FROM character_ui_categories WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // ui keys - statement.close(); - statement = con.prepareStatement("DELETE FROM character_ui_keys WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // characters - statement.close(); - statement = con.prepareStatement("DELETE FROM characters WHERE charId=?;"); - statement.setString(1, objIds.get(index)); - statement.executeUpdate(); - - // TODO: delete pets, olympiad/noble/hero stuff + System.out.println(rset.getString("login") + " -> " + rset.getInt("accessLevel")); + count++; } - // Delete Account - statement.close(); - statement = con.prepareStatement("DELETE FROM accounts WHERE login=?;"); - statement.setEscapeProcessing(true); - statement.setString(1, account); - statement.executeUpdate(); - - System.out.println("Account " + account + " has been deleted."); + System.out.println("Displayed accounts: " + count); } - else + catch (SQLException e) { - // Not Exist - System.out.println("Account " + account + " does not exist."); + System.out.println("There was error while displaying accounts:"); + System.out.println(e.getMessage()); + } + } + + private static void addOrUpdateAccount(String account, String password, String level) + { + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement("REPLACE accounts(login, password, accessLevel) VALUES (?, ?, ?)")) + { + final MessageDigest md = MessageDigest.getInstance("SHA"); + final byte[] newPassword = md.digest(password.getBytes("UTF-8")); + ps.setString(1, account); + ps.setString(2, Base64.getEncoder().encodeToString(newPassword)); + ps.setString(3, level); + if (ps.executeUpdate() > 0) + { + System.out.println("Account " + account + " has been created or updated"); + } + else + { + System.out.println("Account " + account + " does not exist"); + } + } + catch (Exception e) + { + System.out.println("There was error while adding/updating account:"); + System.out.println(e.getMessage()); + } + } + + private static void changeAccountLevel(String account, String level) + { + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement("UPDATE accounts SET accessLevel = ? WHERE login = ?")) + { + ps.setString(1, level); + ps.setString(2, account); + if (ps.executeUpdate() > 0) + { + System.out.println("Account " + account + " has been updated"); + } + else + { + System.out.println("Account " + account + " does not exist"); + } + } + catch (SQLException e) + { + System.out.println("There was error while updating account:"); + System.out.println(e.getMessage()); + } + } + + private static void deleteAccount(String account) + { + try (Connection con = DatabaseFactory.getConnection(); + PreparedStatement ps = con.prepareStatement("DELETE FROM accounts WHERE login = ?")) + { + ps.setString(1, account); + if (ps.executeUpdate() > 0) + { + System.out.println("Account " + account + " has been deleted"); + } + else + { + System.out.println("Account " + account + " does not exist"); + } + } + catch (SQLException e) + { + System.out.println("There was error while deleting account:"); + System.out.println(e.getMessage()); } - - // Close Connection - statement.close(); - con.close(); } } diff --git a/L2J_Mobius_C6_Interlude/readme.txt b/L2J_Mobius_C6_Interlude/readme.txt index 53dbe390b5..7a228ea7f1 100644 --- a/L2J_Mobius_C6_Interlude/readme.txt +++ b/L2J_Mobius_C6_Interlude/readme.txt @@ -89,4 +89,3 @@ Herb item drops. https://lineage.pmfun.com/list/c5c6 TODO: Drop knownlists -> Use World. -Drop MmoCore -> Use Netty.