diff --git a/lib/java.js b/lib/java.js index fa339b9..c81490c 100644 --- a/lib/java.js +++ b/lib/java.js @@ -8,16 +8,15 @@ import net from 'net'; import varint from './varint.js'; -const PROTOCOL_VERSION = 0; - /** * Ping a Minecraft Java server. * @param {string} host The host of the Java server. * @param {number} [port=25565] The port of the Java server. * @param {function} cb The callback function to handle the ping response. * @param {number} [timeout=5000] The timeout duration in milliseconds. + * @param {number} [protocolVersion=0] The protocol version of the Java client. */ -function ping(host, port = 25565, cb, timeout = 5000) { +function ping(host, port = 25565, cb, timeout = 5000, protocolVersion = 0) { const socket = net.createConnection(({ host, port })); // Set manual timeout interval. @@ -56,7 +55,7 @@ function ping(host, port = 25565, cb, timeout = 5000) { socket.on('connect', () => { const handshake = varint.concat([ varint.encodeInt(0), - varint.encodeInt(PROTOCOL_VERSION), + varint.encodeInt(protocolVersion), varint.encodeInt(host.length), varint.encodeString(host), varint.encodeUShort(port), @@ -118,7 +117,7 @@ function ping(host, port = 25565, cb, timeout = 5000) { /** * Asynchronously ping Minecraft Java server. - * The optional `options` argument can be an object with a `ping` (default is `25565`) or/and `timeout` (default is `5000`) property. + * The optional `options` argument can be an object with a `port` (default is `25565`) or/and `timeout` (default is `5000`) or/and `protocolVersion` (default is `0`) property. * @param {string} host The Java server address. * @param {import('../types/index.js').PingOptions} options The configuration for pinging Minecraft Java server. * @returns {Promise} @@ -126,11 +125,11 @@ function ping(host, port = 25565, cb, timeout = 5000) { export function pingJava(host, options = {}) { if (!host) throw new Error('Host argument is not provided'); - const { port = 25565, timeout = 5000 } = options; + const { port = 25565, timeout = 5000, protocolVersion = 0 } = options; return new Promise((resolve, reject) => { ping(host, port, (res, err) => { err ? reject(err) : resolve(res); - }, timeout); + }, timeout, protocolVersion); }); -} \ No newline at end of file +}