diff --git a/LaunchServer/resources/launchserver/defaults/profile1.4.7.cfg b/LaunchServer/resources/launchserver/defaults/profile1.4.7.cfg new file mode 100644 index 0000000..ebaf2e3 --- /dev/null +++ b/LaunchServer/resources/launchserver/defaults/profile1.4.7.cfg @@ -0,0 +1,40 @@ +version: "1.4.7"; +assetIndex: "---"; # 1.7.10+ only + +# Runtime-dependent params +dir: "XXXXX"; +assetDir: "asset1.4.7"; + +# Client params +sortIndex: 0; +title: "XXXXX"; +serverAddress: "server.tld"; +serverPort: 25565; + +# Updater and client watch service +update: [ + "servers\\.dat" +]; +updateVerify: [ + "libraries", "natives", "mods", "minecraft\\.jar" +]; +updateExclusions: []; + +# Client launcher params +mainClass: "net.minecraft.launchwrapper.Launch"; +classPath: [ "minecraft.jar", "libraries" ]; +jvmArgs: [ + # Some options from Mojang's launcher + "-XX:+UseConcMarkSweepGC", + "-XX:+CMSIncrementalMode", + "-XX:-UseAdaptiveSizePolicy", + "-Xmn128M", + + # JVM Attach protection + "-XX:+DisableAttachMechanism", + + # Legacy bridge (for 1.6.4 & lower) settings + "-Dlauncher.legacy.skinsURL=http://skins.minecraft.net/MinecraftSkins/%username%.png", + "-Dlauncher.legacy.cloaksURL=http://skins.minecraft.net/MinecraftCloaks/%username%.png" +]; +clientArgs: []; diff --git a/Launcher/source/client/ClientLauncher.java b/Launcher/source/client/ClientLauncher.java index 7a95e22..f54eaa2 100644 --- a/Launcher/source/client/ClientLauncher.java +++ b/Launcher/source/client/ClientLauncher.java @@ -288,7 +288,7 @@ // Add client args Collection args = new LinkedList<>(); - if (profile.getVersion().compareTo(Version.MC152) > 0) { + if (profile.getVersion().compareTo(Version.MC164) >= 0) { addClientArgs(args, profile, params); } else { addClientLegacyArgs(args, profile, params); diff --git a/Launcher/source/client/ClientProfile.java b/Launcher/source/client/ClientProfile.java index 7c18abf..72d6dfe 100644 --- a/Launcher/source/client/ClientProfile.java +++ b/Launcher/source/client/ClientProfile.java @@ -189,6 +189,7 @@ @LauncherAPI public enum Version { + MC147("1.4.7", 51), MC152("1.5.2", 61), MC164("1.6.4", 78), MC172("1.7.2", 4), diff --git a/Launcher/source/client/ServerPinger.java b/Launcher/source/client/ServerPinger.java index c5ccdb3..2755f1e 100644 --- a/Launcher/source/client/ServerPinger.java +++ b/Launcher/source/client/ServerPinger.java @@ -58,32 +58,33 @@ socket.connect(IOHelper.resolve(address), IOHelper.SOCKET_TIMEOUT); try (HInput input = new HInput(socket.getInputStream()); HOutput output = new HOutput(socket.getOutputStream())) { - return version.compareTo(Version.MC172) >= 0 ? - modernPing(input, output) : legacyPing(input, output); + return version.compareTo(Version.MC172) >= 0 ? modernPing(input, output) : legacyPing(input, output, version.compareTo(Version.MC164) >= 0); } } } - private Result legacyPing(HInput input, HOutput output) throws IOException { + private Result legacyPing(HInput input, HOutput output, boolean mc16) throws IOException { output.writeUnsignedByte(0xFE); // 254 packet ID, Server list ping output.writeUnsignedByte(0x01); // Server ping payload - output.writeUnsignedByte(0xFA); // 250 packet ID, Custom payload - writeUTF16String(output, LEGACY_PING_HOST_CHANNEL); // Custom payload name + if (mc16) { + output.writeUnsignedByte(0xFA); // 250 packet ID, Custom payload + writeUTF16String(output, LEGACY_PING_HOST_CHANNEL); // Custom payload name - // Prepare custom payload packet - byte[] customPayloadPacket; - try (ByteArrayOutputStream packetArray = IOHelper.newByteArrayOutput()) { - try (HOutput packetOutput = new HOutput(packetArray)) { - packetOutput.writeUnsignedByte(version.protocol); // Protocol version - writeUTF16String(packetOutput, address.getHostString()); // Server address - packetOutput.writeInt(address.getPort()); // Server port + // Prepare custom payload packet + byte[] customPayloadPacket; + try (ByteArrayOutputStream packetArray = IOHelper.newByteArrayOutput()) { + try (HOutput packetOutput = new HOutput(packetArray)) { + packetOutput.writeUnsignedByte(version.protocol); // Protocol version + writeUTF16String(packetOutput, address.getHostString()); // Server address + packetOutput.writeInt(address.getPort()); // Server port + } + customPayloadPacket = packetArray.toByteArray(); } - customPayloadPacket = packetArray.toByteArray(); - } - // Write custom payload packet - output.writeShort((short) customPayloadPacket.length); - output.stream.write(customPayloadPacket); + // Write custom payload packet + output.writeShort((short) customPayloadPacket.length); + output.stream.write(customPayloadPacket); + } output.flush(); // Raed kick (response) packet