Updated Netty library.

This commit is contained in:
MobiusDev
2017-08-07 00:33:38 +00:00
parent 5bcfc9ed76
commit bcee886363
44 changed files with 108 additions and 159 deletions

View File

@@ -8,7 +8,7 @@
<classpathentry kind="lib" path="dist/libs/mail-1.5.2.jar"/> <classpathentry kind="lib" path="dist/libs/mail-1.5.2.jar"/>
<classpathentry kind="lib" path="dist/libs/mchange-commons-java-0.2.11.jar"/> <classpathentry kind="lib" path="dist/libs/mchange-commons-java-0.2.11.jar"/>
<classpathentry kind="lib" path="dist/libs/mysql-connector-java-5.1.38-bin.jar"/> <classpathentry kind="lib" path="dist/libs/mysql-connector-java-5.1.38-bin.jar"/>
<classpathentry kind="lib" path="dist/libs/netty-all-5.0.0.Alpha2.jar"/> <classpathentry kind="lib" path="dist/libs/netty-all-4.1.14.Final.jar"/>
<classpathentry including="**/*.java" kind="src" path="dist/game/data/scripts"/> <classpathentry including="**/*.java" kind="src" path="dist/game/data/scripts"/>
<classpathentry kind="src" path="java"/> <classpathentry kind="src" path="java"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>

Binary file not shown.

View File

@@ -56,7 +56,7 @@ public final class PacketReader
*/ */
public int readH() public int readH()
{ {
return _buf.readUnsignedShort(); return _buf.readUnsignedShortLE();
} }
/** /**
@@ -66,7 +66,7 @@ public final class PacketReader
*/ */
public int readD() public int readD()
{ {
return _buf.readInt(); return _buf.readIntLE();
} }
/** /**
@@ -76,7 +76,7 @@ public final class PacketReader
*/ */
public long readQ() public long readQ()
{ {
return _buf.readLong(); return _buf.readLongLE();
} }
/** /**
@@ -86,7 +86,7 @@ public final class PacketReader
*/ */
public float readE() public float readE()
{ {
return _buf.readFloat(); return Float.intBitsToFloat(_buf.readIntLE());
} }
/** /**
@@ -96,7 +96,7 @@ public final class PacketReader
*/ */
public double readF() public double readF()
{ {
return _buf.readDouble(); return Double.longBitsToDouble(_buf.readLongLE());
} }
/** /**
@@ -108,7 +108,7 @@ public final class PacketReader
{ {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
char chr; char chr;
while ((chr = _buf.readChar()) != 0) while ((chr = Character.reverseBytes(_buf.readChar())) != 0)
{ {
sb.append(chr); sb.append(chr);
} }
@@ -123,7 +123,7 @@ public final class PacketReader
public String readString() public String readString()
{ {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
final int stringLength = _buf.readShort(); final int stringLength = _buf.readShortLE();
if ((stringLength * 2) > getReadableBytes()) if ((stringLength * 2) > getReadableBytes())
{ {
throw new IndexOutOfBoundsException("readerIndex(" + _buf.readerIndex() + ") + length(" + (stringLength * 2) + ") exceeds writerIndex(" + _buf.writerIndex() + "): " + _buf); throw new IndexOutOfBoundsException("readerIndex(" + _buf.readerIndex() + ") + length(" + (stringLength * 2) + ") exceeds writerIndex(" + _buf.writerIndex() + "): " + _buf);
@@ -131,7 +131,7 @@ public final class PacketReader
for (int i = 0; i < stringLength; i++) for (int i = 0; i < stringLength; i++)
{ {
sb.append(_buf.readChar()); sb.append(Character.reverseBytes(_buf.readChar()));
} }
return sb.toString(); return sb.toString();
} }

View File

@@ -54,7 +54,7 @@ public final class PacketWriter
*/ */
public void writeH(int value) public void writeH(int value)
{ {
_buf.writeShort(value); _buf.writeShortLE(value);
} }
/** /**
@@ -63,7 +63,7 @@ public final class PacketWriter
*/ */
public void writeD(int value) public void writeD(int value)
{ {
_buf.writeInt(value); _buf.writeIntLE(value);
} }
/** /**
@@ -72,7 +72,7 @@ public final class PacketWriter
*/ */
public void writeQ(long value) public void writeQ(long value)
{ {
_buf.writeLong(value); _buf.writeLongLE(value);
} }
/** /**
@@ -81,7 +81,7 @@ public final class PacketWriter
*/ */
public void writeE(float value) public void writeE(float value)
{ {
_buf.writeFloat(value); _buf.writeIntLE(Float.floatToIntBits(value));
} }
/** /**
@@ -90,7 +90,7 @@ public final class PacketWriter
*/ */
public void writeF(double value) public void writeF(double value)
{ {
_buf.writeDouble(value); _buf.writeLongLE(Double.doubleToLongBits(value));
} }
/** /**
@@ -103,7 +103,7 @@ public final class PacketWriter
{ {
for (int i = 0; i < value.length(); i++) for (int i = 0; i < value.length(); i++)
{ {
_buf.writeChar(value.charAt(i)); _buf.writeChar(Character.reverseBytes(value.charAt(i)));
} }
} }
@@ -118,10 +118,10 @@ public final class PacketWriter
{ {
if (value != null) if (value != null)
{ {
_buf.writeShort(value.length()); _buf.writeShortLE(value.length());
for (int i = 0; i < value.length(); i++) for (int i = 0; i < value.length(); i++)
{ {
_buf.writeChar(value.charAt(i)); _buf.writeChar(Character.reverseBytes(value.charAt(i)));
} }
} }
else else

View File

@@ -16,7 +16,6 @@
*/ */
package com.l2jmobius.commons.network.codecs; package com.l2jmobius.commons.network.codecs;
import java.nio.ByteOrder;
import java.util.List; import java.util.List;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
@@ -35,7 +34,7 @@ public class LengthFieldBasedFrameEncoder extends MessageToMessageEncoder<ByteBu
{ {
final ByteBuf buf = ctx.alloc().buffer(2); final ByteBuf buf = ctx.alloc().buffer(2);
final short length = (short) (msg.readableBytes() + 2); final short length = (short) (msg.readableBytes() + 2);
buf.writeShort(buf.order() != ByteOrder.LITTLE_ENDIAN ? Short.reverseBytes(length) : length); buf.writeShortLE(length);
out.add(buf); out.add(buf);
out.add(msg.retain()); out.add(msg.retain());
} }

View File

@@ -16,7 +16,6 @@
*/ */
package com.l2jmobius.commons.network.codecs; package com.l2jmobius.commons.network.codecs;
import java.nio.ByteOrder;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -37,13 +36,11 @@ public class PacketDecoder<T>extends ByteToMessageDecoder
{ {
private static final Logger LOGGER = Logger.getLogger(PacketDecoder.class.getName()); private static final Logger LOGGER = Logger.getLogger(PacketDecoder.class.getName());
private final ByteOrder _byteOrder;
private final IIncomingPackets<T>[] _incomingPackets; private final IIncomingPackets<T>[] _incomingPackets;
private final T _client; private final T _client;
public PacketDecoder(ByteOrder byteOrder, IIncomingPackets<T>[] incomingPackets, T client) public PacketDecoder(IIncomingPackets<T>[] incomingPackets, T client)
{ {
_byteOrder = byteOrder;
_incomingPackets = incomingPackets; _incomingPackets = incomingPackets;
_client = client; _client = client;
} }
@@ -56,11 +53,6 @@ public class PacketDecoder<T>extends ByteToMessageDecoder
return; return;
} }
if (in.order() != _byteOrder)
{
in = in.order(_byteOrder);
}
try try
{ {
final short packetId = in.readUnsignedByte(); final short packetId = in.readUnsignedByte();

View File

@@ -16,7 +16,6 @@
*/ */
package com.l2jmobius.commons.network.codecs; package com.l2jmobius.commons.network.codecs;
import java.nio.ByteOrder;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -36,24 +35,17 @@ public class PacketEncoder extends MessageToByteEncoder<IOutgoingPacket>
{ {
private static final Logger LOGGER = Logger.getLogger(PacketEncoder.class.getName()); private static final Logger LOGGER = Logger.getLogger(PacketEncoder.class.getName());
private final ByteOrder _byteOrder;
private final int _maxPacketSize; private final int _maxPacketSize;
public PacketEncoder(ByteOrder byteOrder, int maxPacketSize) public PacketEncoder(int maxPacketSize)
{ {
super(); super();
_byteOrder = byteOrder;
_maxPacketSize = maxPacketSize; _maxPacketSize = maxPacketSize;
} }
@Override @Override
protected void encode(ChannelHandlerContext ctx, IOutgoingPacket packet, ByteBuf out) protected void encode(ChannelHandlerContext ctx, IOutgoingPacket packet, ByteBuf out)
{ {
if (out.order() != _byteOrder)
{
out = out.order(_byteOrder);
}
try try
{ {
if (packet.write(new PacketWriter(out))) if (packet.write(new PacketWriter(out)))

View File

@@ -33,7 +33,7 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
public class ClientInitializer extends ChannelInitializer<SocketChannel> public class ClientInitializer extends ChannelInitializer<SocketChannel>
{ {
private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder();
private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2); private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2);
@Override @Override
protected void initChannel(SocketChannel ch) protected void initChannel(SocketChannel ch)
@@ -43,7 +43,7 @@ public class ClientInitializer extends ChannelInitializer<SocketChannel>
ch.pipeline().addLast("length-encoder", LENGTH_ENCODER); ch.pipeline().addLast("length-encoder", LENGTH_ENCODER);
ch.pipeline().addLast("crypt-codec", new CryptCodec(client.getCrypt())); ch.pipeline().addLast("crypt-codec", new CryptCodec(client.getCrypt()));
// ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO));
ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(ByteOrder.LITTLE_ENDIAN, IncomingPackets.PACKET_ARRAY, client)); ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, client));
ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); ch.pipeline().addLast("packet-encoder", PACKET_ENCODER);
ch.pipeline().addLast(client); ch.pipeline().addLast(client);
} }

View File

@@ -155,7 +155,7 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient>
} }
@Override @Override
protected void messageReceived(ChannelHandlerContext ctx, IIncomingPacket<L2GameClient> packet) protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket<L2GameClient> packet)
{ {
try try
{ {

View File

@@ -27,7 +27,7 @@ import io.netty.channel.ChannelHandlerContext;
public class LoginServerHandler extends ChannelInboundHandler<LoginServerHandler> public class LoginServerHandler extends ChannelInboundHandler<LoginServerHandler>
{ {
@Override @Override
protected void messageReceived(ChannelHandlerContext ctx, IIncomingPacket<LoginServerHandler> msg) throws Exception protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket<LoginServerHandler> msg) throws Exception
{ {
msg.run(this); msg.run(this);
} }

View File

@@ -32,7 +32,7 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
public class LoginServerInitializer extends ChannelInitializer<SocketChannel> public class LoginServerInitializer extends ChannelInitializer<SocketChannel>
{ {
private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder();
private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2); private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2);
@Override @Override
protected void initChannel(SocketChannel ch) protected void initChannel(SocketChannel ch)
@@ -41,7 +41,7 @@ public class LoginServerInitializer extends ChannelInitializer<SocketChannel>
ch.pipeline().addLast("length-decoder", new LengthFieldBasedFrameDecoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2, 0, 2, -2, 2, false)); 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("length-encoder", LENGTH_ENCODER);
// ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO));
ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(ByteOrder.LITTLE_ENDIAN, IncomingPackets.PACKET_ARRAY, loginServerHandler)); ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, loginServerHandler));
ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); ch.pipeline().addLast("packet-encoder", PACKET_ENCODER);
ch.pipeline().addLast(loginServerHandler); ch.pipeline().addLast(loginServerHandler);
} }

View File

@@ -27,15 +27,15 @@ import com.l2jmobius.Config;
import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandler.Sharable; import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerAdapter;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.AttributeKey; import io.netty.util.AttributeKey;
/** /**
* @author UnAfraid * @author UnAfraid
*/ */
@Sharable @Sharable
public class TelnetServerHandler extends ChannelHandlerAdapter public class TelnetServerHandler extends ChannelInboundHandlerAdapter
{ {
private static final Pattern COMMAND_ARGS_PATTERN = Pattern.compile("\"([^\"]*)\"|([^\\s]+)"); private static final Pattern COMMAND_ARGS_PATTERN = Pattern.compile("\"([^\"]*)\"|([^\\s]+)");
private static final AttributeKey<Boolean> AUTHORIZED = AttributeKey.valueOf(TelnetServerHandler.class, "AUTHORIZED"); private static final AttributeKey<Boolean> AUTHORIZED = AttributeKey.valueOf(TelnetServerHandler.class, "AUTHORIZED");
@@ -58,7 +58,7 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
} }
@Override @Override
public void channelActive(ChannelHandlerContext ctx) public void handlerAdded(ChannelHandlerContext ctx)
{ {
String ip = ctx.channel().remoteAddress().toString(); String ip = ctx.channel().remoteAddress().toString();
ip = ip.substring(1, ip.lastIndexOf(':')); // Trim out /127.0.0.1:14013 ip = ip.substring(1, ip.lastIndexOf(':')); // Trim out /127.0.0.1:14013
@@ -79,12 +79,12 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
{ {
// Ask password // Ask password
ctx.write("Password:"); ctx.write("Password:");
ctx.attr(AUTHORIZED).set(Boolean.FALSE); ctx.channel().attr(AUTHORIZED).set(Boolean.FALSE);
} }
else else
{ {
ctx.write("Type 'help' to see all available commands." + Config.EOL); ctx.write("Type 'help' to see all available commands." + Config.EOL);
ctx.attr(AUTHORIZED).set(Boolean.TRUE); ctx.channel().attr(AUTHORIZED).set(Boolean.TRUE);
} }
ctx.flush(); ctx.flush();
} }
@@ -100,11 +100,11 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
String response = null; String response = null;
boolean close = false; boolean close = false;
if (Boolean.FALSE.equals(ctx.attr(AUTHORIZED).get())) if (Boolean.FALSE.equals(ctx.channel().attr(AUTHORIZED).get()))
{ {
if (Config.TELNET_PASSWORD.equals(request)) if (Config.TELNET_PASSWORD.equals(request))
{ {
ctx.attr(AUTHORIZED).set(Boolean.TRUE); ctx.channel().attr(AUTHORIZED).set(Boolean.TRUE);
request = ""; request = "";
} }
else else
@@ -114,7 +114,7 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
} }
} }
if (Boolean.TRUE.equals(ctx.attr(AUTHORIZED).get())) if (Boolean.TRUE.equals(ctx.channel().attr(AUTHORIZED).get()))
{ {
if (request.isEmpty()) if (request.isEmpty())
{ {

View File

@@ -7,7 +7,7 @@
<listEntry value="1"/> <listEntry value="1"/>
</listAttribute> </listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/> <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/netty-all-5.0.0.Alpha2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/> <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/netty-all-4.1.14.Final.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
</listAttribute> </listAttribute>

View File

@@ -7,7 +7,7 @@
<listEntry value="1"/> <listEntry value="1"/>
</listAttribute> </listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/> <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/netty-all-5.0.0.Alpha2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/> <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Classic/dist/libs/netty-all-4.1.14.Final.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
</listAttribute> </listAttribute>

View File

@@ -8,7 +8,7 @@
<classpathentry kind="lib" path="dist/libs/mail-1.5.2.jar"/> <classpathentry kind="lib" path="dist/libs/mail-1.5.2.jar"/>
<classpathentry kind="lib" path="dist/libs/mchange-commons-java-0.2.11.jar"/> <classpathentry kind="lib" path="dist/libs/mchange-commons-java-0.2.11.jar"/>
<classpathentry kind="lib" path="dist/libs/mysql-connector-java-5.1.38-bin.jar"/> <classpathentry kind="lib" path="dist/libs/mysql-connector-java-5.1.38-bin.jar"/>
<classpathentry kind="lib" path="dist/libs/netty-all-5.0.0.Alpha2.jar"/> <classpathentry kind="lib" path="dist/libs/netty-all-4.1.14.Final.jar"/>
<classpathentry including="**/*.java" kind="src" path="dist/game/data/scripts"/> <classpathentry including="**/*.java" kind="src" path="dist/game/data/scripts"/>
<classpathentry kind="src" path="java"/> <classpathentry kind="src" path="java"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>

Binary file not shown.

View File

@@ -56,7 +56,7 @@ public final class PacketReader
*/ */
public int readH() public int readH()
{ {
return _buf.readUnsignedShort(); return _buf.readUnsignedShortLE();
} }
/** /**
@@ -66,7 +66,7 @@ public final class PacketReader
*/ */
public int readD() public int readD()
{ {
return _buf.readInt(); return _buf.readIntLE();
} }
/** /**
@@ -76,7 +76,7 @@ public final class PacketReader
*/ */
public long readQ() public long readQ()
{ {
return _buf.readLong(); return _buf.readLongLE();
} }
/** /**
@@ -86,7 +86,7 @@ public final class PacketReader
*/ */
public float readE() public float readE()
{ {
return _buf.readFloat(); return Float.intBitsToFloat(_buf.readIntLE());
} }
/** /**
@@ -96,7 +96,7 @@ public final class PacketReader
*/ */
public double readF() public double readF()
{ {
return _buf.readDouble(); return Double.longBitsToDouble(_buf.readLongLE());
} }
/** /**
@@ -108,7 +108,7 @@ public final class PacketReader
{ {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
char chr; char chr;
while ((chr = _buf.readChar()) != 0) while ((chr = Character.reverseBytes(_buf.readChar())) != 0)
{ {
sb.append(chr); sb.append(chr);
} }
@@ -123,7 +123,7 @@ public final class PacketReader
public String readString() public String readString()
{ {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
final int stringLength = _buf.readShort(); final int stringLength = _buf.readShortLE();
if ((stringLength * 2) > getReadableBytes()) if ((stringLength * 2) > getReadableBytes())
{ {
throw new IndexOutOfBoundsException("readerIndex(" + _buf.readerIndex() + ") + length(" + (stringLength * 2) + ") exceeds writerIndex(" + _buf.writerIndex() + "): " + _buf); throw new IndexOutOfBoundsException("readerIndex(" + _buf.readerIndex() + ") + length(" + (stringLength * 2) + ") exceeds writerIndex(" + _buf.writerIndex() + "): " + _buf);
@@ -131,7 +131,7 @@ public final class PacketReader
for (int i = 0; i < stringLength; i++) for (int i = 0; i < stringLength; i++)
{ {
sb.append(_buf.readChar()); sb.append(Character.reverseBytes(_buf.readChar()));
} }
return sb.toString(); return sb.toString();
} }

View File

@@ -54,7 +54,7 @@ public final class PacketWriter
*/ */
public void writeH(int value) public void writeH(int value)
{ {
_buf.writeShort(value); _buf.writeShortLE(value);
} }
/** /**
@@ -63,7 +63,7 @@ public final class PacketWriter
*/ */
public void writeD(int value) public void writeD(int value)
{ {
_buf.writeInt(value); _buf.writeIntLE(value);
} }
/** /**
@@ -72,7 +72,7 @@ public final class PacketWriter
*/ */
public void writeQ(long value) public void writeQ(long value)
{ {
_buf.writeLong(value); _buf.writeLongLE(value);
} }
/** /**
@@ -81,7 +81,7 @@ public final class PacketWriter
*/ */
public void writeE(float value) public void writeE(float value)
{ {
_buf.writeFloat(value); _buf.writeIntLE(Float.floatToIntBits(value));
} }
/** /**
@@ -90,7 +90,7 @@ public final class PacketWriter
*/ */
public void writeF(double value) public void writeF(double value)
{ {
_buf.writeDouble(value); _buf.writeLongLE(Double.doubleToLongBits(value));
} }
/** /**
@@ -103,7 +103,7 @@ public final class PacketWriter
{ {
for (int i = 0; i < value.length(); i++) for (int i = 0; i < value.length(); i++)
{ {
_buf.writeChar(value.charAt(i)); _buf.writeChar(Character.reverseBytes(value.charAt(i)));
} }
} }
@@ -118,10 +118,10 @@ public final class PacketWriter
{ {
if (value != null) if (value != null)
{ {
_buf.writeShort(value.length()); _buf.writeShortLE(value.length());
for (int i = 0; i < value.length(); i++) for (int i = 0; i < value.length(); i++)
{ {
_buf.writeChar(value.charAt(i)); _buf.writeChar(Character.reverseBytes(value.charAt(i)));
} }
} }
else else

View File

@@ -16,7 +16,6 @@
*/ */
package com.l2jmobius.commons.network.codecs; package com.l2jmobius.commons.network.codecs;
import java.nio.ByteOrder;
import java.util.List; import java.util.List;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
@@ -35,7 +34,7 @@ public class LengthFieldBasedFrameEncoder extends MessageToMessageEncoder<ByteBu
{ {
final ByteBuf buf = ctx.alloc().buffer(2); final ByteBuf buf = ctx.alloc().buffer(2);
final short length = (short) (msg.readableBytes() + 2); final short length = (short) (msg.readableBytes() + 2);
buf.writeShort(buf.order() != ByteOrder.LITTLE_ENDIAN ? Short.reverseBytes(length) : length); buf.writeShortLE(length);
out.add(buf); out.add(buf);
out.add(msg.retain()); out.add(msg.retain());
} }

View File

@@ -16,7 +16,6 @@
*/ */
package com.l2jmobius.commons.network.codecs; package com.l2jmobius.commons.network.codecs;
import java.nio.ByteOrder;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -37,13 +36,11 @@ public class PacketDecoder<T>extends ByteToMessageDecoder
{ {
private static final Logger LOGGER = Logger.getLogger(PacketDecoder.class.getName()); private static final Logger LOGGER = Logger.getLogger(PacketDecoder.class.getName());
private final ByteOrder _byteOrder;
private final IIncomingPackets<T>[] _incomingPackets; private final IIncomingPackets<T>[] _incomingPackets;
private final T _client; private final T _client;
public PacketDecoder(ByteOrder byteOrder, IIncomingPackets<T>[] incomingPackets, T client) public PacketDecoder(IIncomingPackets<T>[] incomingPackets, T client)
{ {
_byteOrder = byteOrder;
_incomingPackets = incomingPackets; _incomingPackets = incomingPackets;
_client = client; _client = client;
} }
@@ -56,11 +53,6 @@ public class PacketDecoder<T>extends ByteToMessageDecoder
return; return;
} }
if (in.order() != _byteOrder)
{
in = in.order(_byteOrder);
}
try try
{ {
final short packetId = in.readUnsignedByte(); final short packetId = in.readUnsignedByte();

View File

@@ -16,7 +16,6 @@
*/ */
package com.l2jmobius.commons.network.codecs; package com.l2jmobius.commons.network.codecs;
import java.nio.ByteOrder;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -36,24 +35,17 @@ public class PacketEncoder extends MessageToByteEncoder<IOutgoingPacket>
{ {
private static final Logger LOGGER = Logger.getLogger(PacketEncoder.class.getName()); private static final Logger LOGGER = Logger.getLogger(PacketEncoder.class.getName());
private final ByteOrder _byteOrder;
private final int _maxPacketSize; private final int _maxPacketSize;
public PacketEncoder(ByteOrder byteOrder, int maxPacketSize) public PacketEncoder(int maxPacketSize)
{ {
super(); super();
_byteOrder = byteOrder;
_maxPacketSize = maxPacketSize; _maxPacketSize = maxPacketSize;
} }
@Override @Override
protected void encode(ChannelHandlerContext ctx, IOutgoingPacket packet, ByteBuf out) protected void encode(ChannelHandlerContext ctx, IOutgoingPacket packet, ByteBuf out)
{ {
if (out.order() != _byteOrder)
{
out = out.order(_byteOrder);
}
try try
{ {
if (packet.write(new PacketWriter(out))) if (packet.write(new PacketWriter(out)))

View File

@@ -33,7 +33,7 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
public class ClientInitializer extends ChannelInitializer<SocketChannel> public class ClientInitializer extends ChannelInitializer<SocketChannel>
{ {
private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder();
private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2); private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2);
@Override @Override
protected void initChannel(SocketChannel ch) protected void initChannel(SocketChannel ch)
@@ -43,7 +43,7 @@ public class ClientInitializer extends ChannelInitializer<SocketChannel>
ch.pipeline().addLast("length-encoder", LENGTH_ENCODER); ch.pipeline().addLast("length-encoder", LENGTH_ENCODER);
ch.pipeline().addLast("crypt-codec", new CryptCodec(client.getCrypt())); ch.pipeline().addLast("crypt-codec", new CryptCodec(client.getCrypt()));
// ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO));
ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(ByteOrder.LITTLE_ENDIAN, IncomingPackets.PACKET_ARRAY, client)); ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, client));
ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); ch.pipeline().addLast("packet-encoder", PACKET_ENCODER);
ch.pipeline().addLast(client); ch.pipeline().addLast(client);
} }

View File

@@ -155,7 +155,7 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient>
} }
@Override @Override
protected void messageReceived(ChannelHandlerContext ctx, IIncomingPacket<L2GameClient> packet) protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket<L2GameClient> packet)
{ {
try try
{ {

View File

@@ -27,7 +27,7 @@ import io.netty.channel.ChannelHandlerContext;
public class LoginServerHandler extends ChannelInboundHandler<LoginServerHandler> public class LoginServerHandler extends ChannelInboundHandler<LoginServerHandler>
{ {
@Override @Override
protected void messageReceived(ChannelHandlerContext ctx, IIncomingPacket<LoginServerHandler> msg) throws Exception protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket<LoginServerHandler> msg) throws Exception
{ {
msg.run(this); msg.run(this);
} }

View File

@@ -32,7 +32,7 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
public class LoginServerInitializer extends ChannelInitializer<SocketChannel> public class LoginServerInitializer extends ChannelInitializer<SocketChannel>
{ {
private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder();
private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2); private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2);
@Override @Override
protected void initChannel(SocketChannel ch) protected void initChannel(SocketChannel ch)
@@ -41,7 +41,7 @@ public class LoginServerInitializer extends ChannelInitializer<SocketChannel>
ch.pipeline().addLast("length-decoder", new LengthFieldBasedFrameDecoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2, 0, 2, -2, 2, false)); 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("length-encoder", LENGTH_ENCODER);
// ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO));
ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(ByteOrder.LITTLE_ENDIAN, IncomingPackets.PACKET_ARRAY, loginServerHandler)); ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, loginServerHandler));
ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); ch.pipeline().addLast("packet-encoder", PACKET_ENCODER);
ch.pipeline().addLast(loginServerHandler); ch.pipeline().addLast(loginServerHandler);
} }

View File

@@ -27,15 +27,15 @@ import com.l2jmobius.Config;
import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandler.Sharable; import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerAdapter;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.AttributeKey; import io.netty.util.AttributeKey;
/** /**
* @author UnAfraid * @author UnAfraid
*/ */
@Sharable @Sharable
public class TelnetServerHandler extends ChannelHandlerAdapter public class TelnetServerHandler extends ChannelInboundHandlerAdapter
{ {
private static final Pattern COMMAND_ARGS_PATTERN = Pattern.compile("\"([^\"]*)\"|([^\\s]+)"); private static final Pattern COMMAND_ARGS_PATTERN = Pattern.compile("\"([^\"]*)\"|([^\\s]+)");
private static final AttributeKey<Boolean> AUTHORIZED = AttributeKey.valueOf(TelnetServerHandler.class, "AUTHORIZED"); private static final AttributeKey<Boolean> AUTHORIZED = AttributeKey.valueOf(TelnetServerHandler.class, "AUTHORIZED");
@@ -58,7 +58,7 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
} }
@Override @Override
public void channelActive(ChannelHandlerContext ctx) public void handlerAdded(ChannelHandlerContext ctx)
{ {
String ip = ctx.channel().remoteAddress().toString(); String ip = ctx.channel().remoteAddress().toString();
ip = ip.substring(1, ip.lastIndexOf(':')); // Trim out /127.0.0.1:14013 ip = ip.substring(1, ip.lastIndexOf(':')); // Trim out /127.0.0.1:14013
@@ -79,12 +79,12 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
{ {
// Ask password // Ask password
ctx.write("Password:"); ctx.write("Password:");
ctx.attr(AUTHORIZED).set(Boolean.FALSE); ctx.channel().attr(AUTHORIZED).set(Boolean.FALSE);
} }
else else
{ {
ctx.write("Type 'help' to see all available commands." + Config.EOL); ctx.write("Type 'help' to see all available commands." + Config.EOL);
ctx.attr(AUTHORIZED).set(Boolean.TRUE); ctx.channel().attr(AUTHORIZED).set(Boolean.TRUE);
} }
ctx.flush(); ctx.flush();
} }
@@ -100,11 +100,11 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
String response = null; String response = null;
boolean close = false; boolean close = false;
if (Boolean.FALSE.equals(ctx.attr(AUTHORIZED).get())) if (Boolean.FALSE.equals(ctx.channel().attr(AUTHORIZED).get()))
{ {
if (Config.TELNET_PASSWORD.equals(request)) if (Config.TELNET_PASSWORD.equals(request))
{ {
ctx.attr(AUTHORIZED).set(Boolean.TRUE); ctx.channel().attr(AUTHORIZED).set(Boolean.TRUE);
request = ""; request = "";
} }
else else
@@ -114,7 +114,7 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
} }
} }
if (Boolean.TRUE.equals(ctx.attr(AUTHORIZED).get())) if (Boolean.TRUE.equals(ctx.channel().attr(AUTHORIZED).get()))
{ {
if (request.isEmpty()) if (request.isEmpty())
{ {

View File

@@ -7,7 +7,7 @@
<listEntry value="1"/> <listEntry value="1"/>
</listAttribute> </listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/> <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/netty-all-5.0.0.Alpha2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/> <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/netty-all-4.1.14.Final.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
</listAttribute> </listAttribute>

View File

@@ -7,7 +7,7 @@
<listEntry value="1"/> <listEntry value="1"/>
</listAttribute> </listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/> <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/netty-all-5.0.0.Alpha2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/> <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Helios/dist/libs/netty-all-4.1.14.Final.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
</listAttribute> </listAttribute>

View File

@@ -8,7 +8,7 @@
<classpathentry kind="lib" path="dist/libs/mail-1.5.2.jar"/> <classpathentry kind="lib" path="dist/libs/mail-1.5.2.jar"/>
<classpathentry kind="lib" path="dist/libs/mchange-commons-java-0.2.11.jar"/> <classpathentry kind="lib" path="dist/libs/mchange-commons-java-0.2.11.jar"/>
<classpathentry kind="lib" path="dist/libs/mysql-connector-java-5.1.38-bin.jar"/> <classpathentry kind="lib" path="dist/libs/mysql-connector-java-5.1.38-bin.jar"/>
<classpathentry kind="lib" path="dist/libs/netty-all-5.0.0.Alpha2.jar"/> <classpathentry kind="lib" path="dist/libs/netty-all-4.1.14.Final.jar"/>
<classpathentry including="**/*.java" kind="src" path="dist/game/data/scripts"/> <classpathentry including="**/*.java" kind="src" path="dist/game/data/scripts"/>
<classpathentry kind="src" path="java"/> <classpathentry kind="src" path="java"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>

Binary file not shown.

View File

@@ -56,7 +56,7 @@ public final class PacketReader
*/ */
public int readH() public int readH()
{ {
return _buf.readUnsignedShort(); return _buf.readUnsignedShortLE();
} }
/** /**
@@ -66,7 +66,7 @@ public final class PacketReader
*/ */
public int readD() public int readD()
{ {
return _buf.readInt(); return _buf.readIntLE();
} }
/** /**
@@ -76,7 +76,7 @@ public final class PacketReader
*/ */
public long readQ() public long readQ()
{ {
return _buf.readLong(); return _buf.readLongLE();
} }
/** /**
@@ -86,7 +86,7 @@ public final class PacketReader
*/ */
public float readE() public float readE()
{ {
return _buf.readFloat(); return Float.intBitsToFloat(_buf.readIntLE());
} }
/** /**
@@ -96,7 +96,7 @@ public final class PacketReader
*/ */
public double readF() public double readF()
{ {
return _buf.readDouble(); return Double.longBitsToDouble(_buf.readLongLE());
} }
/** /**
@@ -108,7 +108,7 @@ public final class PacketReader
{ {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
char chr; char chr;
while ((chr = _buf.readChar()) != 0) while ((chr = Character.reverseBytes(_buf.readChar())) != 0)
{ {
sb.append(chr); sb.append(chr);
} }
@@ -123,7 +123,7 @@ public final class PacketReader
public String readString() public String readString()
{ {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
final int stringLength = _buf.readShort(); final int stringLength = _buf.readShortLE();
if ((stringLength * 2) > getReadableBytes()) if ((stringLength * 2) > getReadableBytes())
{ {
throw new IndexOutOfBoundsException("readerIndex(" + _buf.readerIndex() + ") + length(" + (stringLength * 2) + ") exceeds writerIndex(" + _buf.writerIndex() + "): " + _buf); throw new IndexOutOfBoundsException("readerIndex(" + _buf.readerIndex() + ") + length(" + (stringLength * 2) + ") exceeds writerIndex(" + _buf.writerIndex() + "): " + _buf);
@@ -131,7 +131,7 @@ public final class PacketReader
for (int i = 0; i < stringLength; i++) for (int i = 0; i < stringLength; i++)
{ {
sb.append(_buf.readChar()); sb.append(Character.reverseBytes(_buf.readChar()));
} }
return sb.toString(); return sb.toString();
} }

View File

@@ -54,7 +54,7 @@ public final class PacketWriter
*/ */
public void writeH(int value) public void writeH(int value)
{ {
_buf.writeShort(value); _buf.writeShortLE(value);
} }
/** /**
@@ -63,7 +63,7 @@ public final class PacketWriter
*/ */
public void writeD(int value) public void writeD(int value)
{ {
_buf.writeInt(value); _buf.writeIntLE(value);
} }
/** /**
@@ -72,7 +72,7 @@ public final class PacketWriter
*/ */
public void writeQ(long value) public void writeQ(long value)
{ {
_buf.writeLong(value); _buf.writeLongLE(value);
} }
/** /**
@@ -81,7 +81,7 @@ public final class PacketWriter
*/ */
public void writeE(float value) public void writeE(float value)
{ {
_buf.writeFloat(value); _buf.writeIntLE(Float.floatToIntBits(value));
} }
/** /**
@@ -90,7 +90,7 @@ public final class PacketWriter
*/ */
public void writeF(double value) public void writeF(double value)
{ {
_buf.writeDouble(value); _buf.writeLongLE(Double.doubleToLongBits(value));
} }
/** /**
@@ -103,7 +103,7 @@ public final class PacketWriter
{ {
for (int i = 0; i < value.length(); i++) for (int i = 0; i < value.length(); i++)
{ {
_buf.writeChar(value.charAt(i)); _buf.writeChar(Character.reverseBytes(value.charAt(i)));
} }
} }
@@ -118,10 +118,10 @@ public final class PacketWriter
{ {
if (value != null) if (value != null)
{ {
_buf.writeShort(value.length()); _buf.writeShortLE(value.length());
for (int i = 0; i < value.length(); i++) for (int i = 0; i < value.length(); i++)
{ {
_buf.writeChar(value.charAt(i)); _buf.writeChar(Character.reverseBytes(value.charAt(i)));
} }
} }
else else

View File

@@ -16,7 +16,6 @@
*/ */
package com.l2jmobius.commons.network.codecs; package com.l2jmobius.commons.network.codecs;
import java.nio.ByteOrder;
import java.util.List; import java.util.List;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
@@ -35,7 +34,7 @@ public class LengthFieldBasedFrameEncoder extends MessageToMessageEncoder<ByteBu
{ {
final ByteBuf buf = ctx.alloc().buffer(2); final ByteBuf buf = ctx.alloc().buffer(2);
final short length = (short) (msg.readableBytes() + 2); final short length = (short) (msg.readableBytes() + 2);
buf.writeShort(buf.order() != ByteOrder.LITTLE_ENDIAN ? Short.reverseBytes(length) : length); buf.writeShortLE(length);
out.add(buf); out.add(buf);
out.add(msg.retain()); out.add(msg.retain());
} }

View File

@@ -16,7 +16,6 @@
*/ */
package com.l2jmobius.commons.network.codecs; package com.l2jmobius.commons.network.codecs;
import java.nio.ByteOrder;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -37,13 +36,11 @@ public class PacketDecoder<T>extends ByteToMessageDecoder
{ {
private static final Logger LOGGER = Logger.getLogger(PacketDecoder.class.getName()); private static final Logger LOGGER = Logger.getLogger(PacketDecoder.class.getName());
private final ByteOrder _byteOrder;
private final IIncomingPackets<T>[] _incomingPackets; private final IIncomingPackets<T>[] _incomingPackets;
private final T _client; private final T _client;
public PacketDecoder(ByteOrder byteOrder, IIncomingPackets<T>[] incomingPackets, T client) public PacketDecoder(IIncomingPackets<T>[] incomingPackets, T client)
{ {
_byteOrder = byteOrder;
_incomingPackets = incomingPackets; _incomingPackets = incomingPackets;
_client = client; _client = client;
} }
@@ -56,11 +53,6 @@ public class PacketDecoder<T>extends ByteToMessageDecoder
return; return;
} }
if (in.order() != _byteOrder)
{
in = in.order(_byteOrder);
}
try try
{ {
final short packetId = in.readUnsignedByte(); final short packetId = in.readUnsignedByte();

View File

@@ -16,7 +16,6 @@
*/ */
package com.l2jmobius.commons.network.codecs; package com.l2jmobius.commons.network.codecs;
import java.nio.ByteOrder;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -36,24 +35,17 @@ public class PacketEncoder extends MessageToByteEncoder<IOutgoingPacket>
{ {
private static final Logger LOGGER = Logger.getLogger(PacketEncoder.class.getName()); private static final Logger LOGGER = Logger.getLogger(PacketEncoder.class.getName());
private final ByteOrder _byteOrder;
private final int _maxPacketSize; private final int _maxPacketSize;
public PacketEncoder(ByteOrder byteOrder, int maxPacketSize) public PacketEncoder(int maxPacketSize)
{ {
super(); super();
_byteOrder = byteOrder;
_maxPacketSize = maxPacketSize; _maxPacketSize = maxPacketSize;
} }
@Override @Override
protected void encode(ChannelHandlerContext ctx, IOutgoingPacket packet, ByteBuf out) protected void encode(ChannelHandlerContext ctx, IOutgoingPacket packet, ByteBuf out)
{ {
if (out.order() != _byteOrder)
{
out = out.order(_byteOrder);
}
try try
{ {
if (packet.write(new PacketWriter(out))) if (packet.write(new PacketWriter(out)))

View File

@@ -33,7 +33,7 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
public class ClientInitializer extends ChannelInitializer<SocketChannel> public class ClientInitializer extends ChannelInitializer<SocketChannel>
{ {
private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder();
private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2); private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2);
@Override @Override
protected void initChannel(SocketChannel ch) protected void initChannel(SocketChannel ch)
@@ -43,7 +43,7 @@ public class ClientInitializer extends ChannelInitializer<SocketChannel>
ch.pipeline().addLast("length-encoder", LENGTH_ENCODER); ch.pipeline().addLast("length-encoder", LENGTH_ENCODER);
ch.pipeline().addLast("crypt-codec", new CryptCodec(client.getCrypt())); ch.pipeline().addLast("crypt-codec", new CryptCodec(client.getCrypt()));
// ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO));
ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(ByteOrder.LITTLE_ENDIAN, IncomingPackets.PACKET_ARRAY, client)); ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, client));
ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); ch.pipeline().addLast("packet-encoder", PACKET_ENCODER);
ch.pipeline().addLast(client); ch.pipeline().addLast(client);
} }

View File

@@ -155,7 +155,7 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient>
} }
@Override @Override
protected void messageReceived(ChannelHandlerContext ctx, IIncomingPacket<L2GameClient> packet) protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket<L2GameClient> packet)
{ {
try try
{ {

View File

@@ -27,7 +27,7 @@ import io.netty.channel.ChannelHandlerContext;
public class LoginServerHandler extends ChannelInboundHandler<LoginServerHandler> public class LoginServerHandler extends ChannelInboundHandler<LoginServerHandler>
{ {
@Override @Override
protected void messageReceived(ChannelHandlerContext ctx, IIncomingPacket<LoginServerHandler> msg) throws Exception protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket<LoginServerHandler> msg) throws Exception
{ {
msg.run(this); msg.run(this);
} }

View File

@@ -32,7 +32,7 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
public class LoginServerInitializer extends ChannelInitializer<SocketChannel> public class LoginServerInitializer extends ChannelInitializer<SocketChannel>
{ {
private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder(); private static final LengthFieldBasedFrameEncoder LENGTH_ENCODER = new LengthFieldBasedFrameEncoder();
private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2); private static final PacketEncoder PACKET_ENCODER = new PacketEncoder(0x8000 - 2);
@Override @Override
protected void initChannel(SocketChannel ch) protected void initChannel(SocketChannel ch)
@@ -41,7 +41,7 @@ public class LoginServerInitializer extends ChannelInitializer<SocketChannel>
ch.pipeline().addLast("length-decoder", new LengthFieldBasedFrameDecoder(ByteOrder.LITTLE_ENDIAN, 0x8000 - 2, 0, 2, -2, 2, false)); 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("length-encoder", LENGTH_ENCODER);
// ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); // ch.pipeline().addLast(new LoggingHandler(LogLevel.INFO));
ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(ByteOrder.LITTLE_ENDIAN, IncomingPackets.PACKET_ARRAY, loginServerHandler)); ch.pipeline().addLast("packet-decoder", new PacketDecoder<>(IncomingPackets.PACKET_ARRAY, loginServerHandler));
ch.pipeline().addLast("packet-encoder", PACKET_ENCODER); ch.pipeline().addLast("packet-encoder", PACKET_ENCODER);
ch.pipeline().addLast(loginServerHandler); ch.pipeline().addLast(loginServerHandler);
} }

View File

@@ -27,15 +27,15 @@ import com.l2jmobius.Config;
import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandler.Sharable; import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerAdapter;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.AttributeKey; import io.netty.util.AttributeKey;
/** /**
* @author UnAfraid * @author UnAfraid
*/ */
@Sharable @Sharable
public class TelnetServerHandler extends ChannelHandlerAdapter public class TelnetServerHandler extends ChannelInboundHandlerAdapter
{ {
private static final Pattern COMMAND_ARGS_PATTERN = Pattern.compile("\"([^\"]*)\"|([^\\s]+)"); private static final Pattern COMMAND_ARGS_PATTERN = Pattern.compile("\"([^\"]*)\"|([^\\s]+)");
private static final AttributeKey<Boolean> AUTHORIZED = AttributeKey.valueOf(TelnetServerHandler.class, "AUTHORIZED"); private static final AttributeKey<Boolean> AUTHORIZED = AttributeKey.valueOf(TelnetServerHandler.class, "AUTHORIZED");
@@ -58,7 +58,7 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
} }
@Override @Override
public void channelActive(ChannelHandlerContext ctx) public void handlerAdded(ChannelHandlerContext ctx)
{ {
String ip = ctx.channel().remoteAddress().toString(); String ip = ctx.channel().remoteAddress().toString();
ip = ip.substring(1, ip.lastIndexOf(':')); // Trim out /127.0.0.1:14013 ip = ip.substring(1, ip.lastIndexOf(':')); // Trim out /127.0.0.1:14013
@@ -79,12 +79,12 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
{ {
// Ask password // Ask password
ctx.write("Password:"); ctx.write("Password:");
ctx.attr(AUTHORIZED).set(Boolean.FALSE); ctx.channel().attr(AUTHORIZED).set(Boolean.FALSE);
} }
else else
{ {
ctx.write("Type 'help' to see all available commands." + Config.EOL); ctx.write("Type 'help' to see all available commands." + Config.EOL);
ctx.attr(AUTHORIZED).set(Boolean.TRUE); ctx.channel().attr(AUTHORIZED).set(Boolean.TRUE);
} }
ctx.flush(); ctx.flush();
} }
@@ -100,11 +100,11 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
String response = null; String response = null;
boolean close = false; boolean close = false;
if (Boolean.FALSE.equals(ctx.attr(AUTHORIZED).get())) if (Boolean.FALSE.equals(ctx.channel().attr(AUTHORIZED).get()))
{ {
if (Config.TELNET_PASSWORD.equals(request)) if (Config.TELNET_PASSWORD.equals(request))
{ {
ctx.attr(AUTHORIZED).set(Boolean.TRUE); ctx.channel().attr(AUTHORIZED).set(Boolean.TRUE);
request = ""; request = "";
} }
else else
@@ -114,7 +114,7 @@ public class TelnetServerHandler extends ChannelHandlerAdapter
} }
} }
if (Boolean.TRUE.equals(ctx.attr(AUTHORIZED).get())) if (Boolean.TRUE.equals(ctx.channel().attr(AUTHORIZED).get()))
{ {
if (request.isEmpty()) if (request.isEmpty())
{ {

View File

@@ -7,7 +7,7 @@
<listEntry value="1"/> <listEntry value="1"/>
</listAttribute> </listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/> <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/netty-all-5.0.0.Alpha2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/> <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/netty-all-4.1.14.Final.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
</listAttribute> </listAttribute>

View File

@@ -7,7 +7,7 @@
<listEntry value="1"/> <listEntry value="1"/>
</listAttribute> </listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/> <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/netty-all-5.0.0.Alpha2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/> <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/c3p0-0.9.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/cron4j-2.2.5.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/ecj-4.4.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/exp4j-0.4.7.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mail-1.5.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mchange-commons-java-0.2.11.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/mysql-connector-java-5.1.38-bin.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/L2J_Mobius_Underground/dist/libs/netty-all-4.1.14.Final.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
</listAttribute> </listAttribute>