Legacy ping

This commit is contained in:
Dereku 2023-03-10 05:43:24 +07:00
parent 3e4f244552
commit e9e772f229

View file

@ -14,7 +14,7 @@ public class ServerThread extends Thread {
// Queries start
private static final byte[] RUBETA_MODDED_CLIENT = new byte[]{0, 0, 0, 1, (byte) 254};
private static final byte[] LEGACY_PING_B1_8_TO_R1_2_5 = new byte[]{(byte) 254};
// Queries end
private final ServerSocket serverSocket;
private final AtomicBoolean working = new AtomicBoolean(false);
@ -43,9 +43,9 @@ public class ServerThread extends Thread {
final OutputStream outputStream = newConnection.getOutputStream();
if (Arrays.equals(RUBETA_MODDED_CLIENT, query)) {
this.responseForRuBetaModdedClient(outputStream);
} else if (false) {
}
} else if (Arrays.equals(LEGACY_PING_B1_8_TO_R1_2_5, query)) {
this.responseForLegacyPing(outputStream);
}
newConnection.close();
} catch (IOException ignore) {
}
@ -76,4 +76,17 @@ public class ServerThread extends Thread {
clientOutput.writeInt(result.size());
clientOutput.write(result.toByteArray());
}
private void responseForLegacyPing(final OutputStream outputStream) throws IOException {
final DataOutputStream clientOutput = new DataOutputStream(outputStream);
clientOutput.write(255); // Packet 0xFF (PacketDisconnect)
final String response = this.minecraftServer.getMotd()
+ '\u0000' + this.minecraftServer.getOnlinePlayers().size()
+ '\u0000' + this.minecraftServer.getMaxPlayers();
clientOutput.writeShort(response.length());
for (char c : response.toCharArray()) {
clientOutput.writeChar(c);
}
// Packet data end
}
}