Updated Netty library.
This commit is contained in:
		| @@ -8,7 +8,7 @@ | ||||
| 	<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/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 kind="src" path="java"/> | ||||
| 	<classpathentry kind="output" path="bin"/> | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								L2J_Mobius_Classic/dist/libs/netty-all-4.1.14.Final.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								L2J_Mobius_Classic/dist/libs/netty-all-4.1.14.Final.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -56,7 +56,7 @@ public final class PacketReader | ||||
| 	 */ | ||||
| 	public int readH() | ||||
| 	{ | ||||
| 		return _buf.readUnsignedShort(); | ||||
| 		return _buf.readUnsignedShortLE(); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| @@ -66,7 +66,7 @@ public final class PacketReader | ||||
| 	 */ | ||||
| 	public int readD() | ||||
| 	{ | ||||
| 		return _buf.readInt(); | ||||
| 		return _buf.readIntLE(); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| @@ -76,7 +76,7 @@ public final class PacketReader | ||||
| 	 */ | ||||
| 	public long readQ() | ||||
| 	{ | ||||
| 		return _buf.readLong(); | ||||
| 		return _buf.readLongLE(); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| @@ -86,7 +86,7 @@ public final class PacketReader | ||||
| 	 */ | ||||
| 	public float readE() | ||||
| 	{ | ||||
| 		return _buf.readFloat(); | ||||
| 		return Float.intBitsToFloat(_buf.readIntLE()); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| @@ -96,7 +96,7 @@ public final class PacketReader | ||||
| 	 */ | ||||
| 	public double readF() | ||||
| 	{ | ||||
| 		return _buf.readDouble(); | ||||
| 		return Double.longBitsToDouble(_buf.readLongLE()); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| @@ -108,7 +108,7 @@ public final class PacketReader | ||||
| 	{ | ||||
| 		final StringBuilder sb = new StringBuilder(); | ||||
| 		char chr; | ||||
| 		while ((chr = _buf.readChar()) != 0) | ||||
| 		while ((chr = Character.reverseBytes(_buf.readChar())) != 0) | ||||
| 		{ | ||||
| 			sb.append(chr); | ||||
| 		} | ||||
| @@ -123,7 +123,7 @@ public final class PacketReader | ||||
| 	public String readString() | ||||
| 	{ | ||||
| 		final StringBuilder sb = new StringBuilder(); | ||||
| 		final int stringLength = _buf.readShort(); | ||||
| 		final int stringLength = _buf.readShortLE(); | ||||
| 		if ((stringLength * 2) > getReadableBytes()) | ||||
| 		{ | ||||
| 			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++) | ||||
| 		{ | ||||
| 			sb.append(_buf.readChar()); | ||||
| 			sb.append(Character.reverseBytes(_buf.readChar())); | ||||
| 		} | ||||
| 		return sb.toString(); | ||||
| 	} | ||||
|   | ||||
| @@ -54,7 +54,7 @@ public final class PacketWriter | ||||
| 	 */ | ||||
| 	public void writeH(int value) | ||||
| 	{ | ||||
| 		_buf.writeShort(value); | ||||
| 		_buf.writeShortLE(value); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| @@ -63,7 +63,7 @@ public final class PacketWriter | ||||
| 	 */ | ||||
| 	public void writeD(int value) | ||||
| 	{ | ||||
| 		_buf.writeInt(value); | ||||
| 		_buf.writeIntLE(value); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| @@ -72,7 +72,7 @@ public final class PacketWriter | ||||
| 	 */ | ||||
| 	public void writeQ(long value) | ||||
| 	{ | ||||
| 		_buf.writeLong(value); | ||||
| 		_buf.writeLongLE(value); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| @@ -81,7 +81,7 @@ public final class PacketWriter | ||||
| 	 */ | ||||
| 	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) | ||||
| 	{ | ||||
| 		_buf.writeDouble(value); | ||||
| 		_buf.writeLongLE(Double.doubleToLongBits(value)); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| @@ -103,7 +103,7 @@ public final class PacketWriter | ||||
| 		{ | ||||
| 			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) | ||||
| 		{ | ||||
| 			_buf.writeShort(value.length()); | ||||
| 			_buf.writeShortLE(value.length()); | ||||
| 			for (int i = 0; i < value.length(); i++) | ||||
| 			{ | ||||
| 				_buf.writeChar(value.charAt(i)); | ||||
| 				_buf.writeChar(Character.reverseBytes(value.charAt(i))); | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
|   | ||||
| @@ -16,7 +16,6 @@ | ||||
|  */ | ||||
| package com.l2jmobius.commons.network.codecs; | ||||
|  | ||||
| import java.nio.ByteOrder; | ||||
| import java.util.List; | ||||
|  | ||||
| import io.netty.buffer.ByteBuf; | ||||
| @@ -35,7 +34,7 @@ public class LengthFieldBasedFrameEncoder extends MessageToMessageEncoder<ByteBu | ||||
| 	{ | ||||
| 		final ByteBuf buf = ctx.alloc().buffer(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(msg.retain()); | ||||
| 	} | ||||
|   | ||||
| @@ -16,7 +16,6 @@ | ||||
|  */ | ||||
| package com.l2jmobius.commons.network.codecs; | ||||
|  | ||||
| import java.nio.ByteOrder; | ||||
| import java.util.List; | ||||
| 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 final ByteOrder _byteOrder; | ||||
| 	private final IIncomingPackets<T>[] _incomingPackets; | ||||
| 	private final T _client; | ||||
| 	 | ||||
| 	public PacketDecoder(ByteOrder byteOrder, IIncomingPackets<T>[] incomingPackets, T client) | ||||
| 	public PacketDecoder(IIncomingPackets<T>[] incomingPackets, T client) | ||||
| 	{ | ||||
| 		_byteOrder = byteOrder; | ||||
| 		_incomingPackets = incomingPackets; | ||||
| 		_client = client; | ||||
| 	} | ||||
| @@ -56,11 +53,6 @@ public class PacketDecoder<T>extends ByteToMessageDecoder | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		if (in.order() != _byteOrder) | ||||
| 		{ | ||||
| 			in = in.order(_byteOrder); | ||||
| 		} | ||||
| 		 | ||||
| 		try | ||||
| 		{ | ||||
| 			final short packetId = in.readUnsignedByte(); | ||||
|   | ||||
| @@ -16,7 +16,6 @@ | ||||
|  */ | ||||
| package com.l2jmobius.commons.network.codecs; | ||||
|  | ||||
| import java.nio.ByteOrder; | ||||
| import java.util.logging.Level; | ||||
| 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 final ByteOrder _byteOrder; | ||||
| 	private final int _maxPacketSize; | ||||
| 	 | ||||
| 	public PacketEncoder(ByteOrder byteOrder, int maxPacketSize) | ||||
| 	public PacketEncoder(int maxPacketSize) | ||||
| 	{ | ||||
| 		super(); | ||||
| 		_byteOrder = byteOrder; | ||||
| 		_maxPacketSize = maxPacketSize; | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	protected void encode(ChannelHandlerContext ctx, IOutgoingPacket packet, ByteBuf out) | ||||
| 	{ | ||||
| 		if (out.order() != _byteOrder) | ||||
| 		{ | ||||
| 			out = out.order(_byteOrder); | ||||
| 		} | ||||
| 		 | ||||
| 		try | ||||
| 		{ | ||||
| 			if (packet.write(new PacketWriter(out))) | ||||
|   | ||||
| @@ -33,7 +33,7 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder; | ||||
| public class ClientInitializer extends ChannelInitializer<SocketChannel> | ||||
| { | ||||
| 	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 | ||||
| 	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("crypt-codec", new CryptCodec(client.getCrypt())); | ||||
| 		// 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(client); | ||||
| 	} | ||||
|   | ||||
| @@ -155,7 +155,7 @@ public final class L2GameClient extends ChannelInboundHandler<L2GameClient> | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	protected void messageReceived(ChannelHandlerContext ctx, IIncomingPacket<L2GameClient> packet) | ||||
| 	protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket<L2GameClient> packet) | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
|   | ||||
| @@ -27,7 +27,7 @@ import io.netty.channel.ChannelHandlerContext; | ||||
| public class LoginServerHandler extends ChannelInboundHandler<LoginServerHandler> | ||||
| { | ||||
| 	@Override | ||||
| 	protected void messageReceived(ChannelHandlerContext ctx, IIncomingPacket<LoginServerHandler> msg) throws Exception | ||||
| 	protected void channelRead0(ChannelHandlerContext ctx, IIncomingPacket<LoginServerHandler> msg) throws Exception | ||||
| 	{ | ||||
| 		msg.run(this); | ||||
| 	} | ||||
|   | ||||
| @@ -32,7 +32,7 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder; | ||||
| public class LoginServerInitializer extends ChannelInitializer<SocketChannel> | ||||
| { | ||||
| 	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 | ||||
| 	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-encoder", LENGTH_ENCODER); | ||||
| 		// 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(loginServerHandler); | ||||
| 	} | ||||
|   | ||||
| @@ -27,15 +27,15 @@ import com.l2jmobius.Config; | ||||
| import io.netty.channel.ChannelFuture; | ||||
| import io.netty.channel.ChannelFutureListener; | ||||
| import io.netty.channel.ChannelHandler.Sharable; | ||||
| import io.netty.channel.ChannelHandlerAdapter; | ||||
| import io.netty.channel.ChannelHandlerContext; | ||||
| import io.netty.channel.ChannelInboundHandlerAdapter; | ||||
| import io.netty.util.AttributeKey; | ||||
|  | ||||
| /** | ||||
|  * @author UnAfraid | ||||
|  */ | ||||
| @Sharable | ||||
| public class TelnetServerHandler extends ChannelHandlerAdapter | ||||
| public class TelnetServerHandler extends ChannelInboundHandlerAdapter | ||||
| { | ||||
| 	private static final Pattern COMMAND_ARGS_PATTERN = Pattern.compile("\"([^\"]*)\"|([^\\s]+)"); | ||||
| 	private static final AttributeKey<Boolean> AUTHORIZED = AttributeKey.valueOf(TelnetServerHandler.class, "AUTHORIZED"); | ||||
| @@ -58,7 +58,7 @@ public class TelnetServerHandler extends ChannelHandlerAdapter | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void channelActive(ChannelHandlerContext ctx) | ||||
| 	public void handlerAdded(ChannelHandlerContext ctx) | ||||
| 	{ | ||||
| 		String ip = ctx.channel().remoteAddress().toString(); | ||||
| 		ip = ip.substring(1, ip.lastIndexOf(':')); // Trim out /127.0.0.1:14013 | ||||
| @@ -79,12 +79,12 @@ public class TelnetServerHandler extends ChannelHandlerAdapter | ||||
| 		{ | ||||
| 			// Ask password | ||||
| 			ctx.write("Password:"); | ||||
| 			ctx.attr(AUTHORIZED).set(Boolean.FALSE); | ||||
| 			ctx.channel().attr(AUTHORIZED).set(Boolean.FALSE); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			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(); | ||||
| 	} | ||||
| @@ -100,11 +100,11 @@ public class TelnetServerHandler extends ChannelHandlerAdapter | ||||
| 		String response = null; | ||||
| 		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)) | ||||
| 			{ | ||||
| 				ctx.attr(AUTHORIZED).set(Boolean.TRUE); | ||||
| 				ctx.channel().attr(AUTHORIZED).set(Boolean.TRUE); | ||||
| 				request = ""; | ||||
| 			} | ||||
| 			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()) | ||||
| 			{ | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| <listEntry value="1"/> | ||||
| </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_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sourceLookupDirector>
<sourceContainers duplicates="false">
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/c3p0-0.9.5.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/cron4j-2.2.5.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/ecj-4.4.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/exp4j-0.4.7.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mail-1.5.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mchange-commons-java-0.2.11.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mysql-connector-java-5.1.38-bin.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/netty-all-5.0.0.Alpha2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.default"/>
</sourceContainers>
</sourceLookupDirector>
"/> | ||||
| <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sourceLookupDirector>
<sourceContainers duplicates="false">
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/c3p0-0.9.5.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/cron4j-2.2.5.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/ecj-4.4.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/exp4j-0.4.7.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mail-1.5.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mchange-commons-java-0.2.11.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mysql-connector-java-5.1.38-bin.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/netty-all-4.1.14.Final.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.default"/>
</sourceContainers>
</sourceLookupDirector>
"/> | ||||
| <listAttribute key="org.eclipse.debug.ui.favoriteGroups"> | ||||
| <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> | ||||
| </listAttribute> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| <listEntry value="1"/> | ||||
| </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_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sourceLookupDirector>
<sourceContainers duplicates="false">
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/c3p0-0.9.5.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/cron4j-2.2.5.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/ecj-4.4.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/exp4j-0.4.7.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mail-1.5.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mchange-commons-java-0.2.11.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mysql-connector-java-5.1.38-bin.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/netty-all-5.0.0.Alpha2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.default"/>
</sourceContainers>
</sourceLookupDirector>
"/> | ||||
| <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sourceLookupDirector>
<sourceContainers duplicates="false">
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/c3p0-0.9.5.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/cron4j-2.2.5.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/ecj-4.4.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/exp4j-0.4.7.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mail-1.5.2.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mchange-commons-java-0.2.11.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/mysql-connector-java-5.1.38-bin.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;archive detectRoot=&quot;true&quot; path=&quot;/L2J_Mobius_Classic/dist/libs/netty-all-4.1.14.Final.jar&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.archive"/>
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.default"/>
</sourceContainers>
</sourceLookupDirector>
"/> | ||||
| <listAttribute key="org.eclipse.debug.ui.favoriteGroups"> | ||||
| <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> | ||||
| </listAttribute> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDev
					MobiusDev