From 00ad3a505a7599305effd51f2b39894198fddf69 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:42:40 +0000 Subject: [PATCH 1/5] Update to version 1.21.9 --- .github/workflows/ci.yml | 3 +++ docs/README.md | 2 +- src/version.js | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c80125a..dd090c3a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,5 +56,8 @@ jobs: distribution: 'adopt' - name: Install dependencies run: npm install + - run: cd node_modules && cd minecraft-data && mv minecraft-data minecraft-data-old && git clone -b pc_1_21_9 https://github.com/PrismarineJS/minecraft-data --depth 1 && node bin/generate_data.js + - run: curl -o node_modules/protodef/src/serializer.js https://raw.githubusercontent.com/extremeheat/node-protodef/refs/heads/dlog/src/serializer.js && curl -o node_modules/protodef/src/compiler.js https://raw.githubusercontent.com/extremeheat/node-protodef/refs/heads/dlog/src/compiler.js + - name: Run tests run: npm run mochaTest -- -g ${{ matrix.mcVersion }}v diff --git a/docs/README.md b/docs/README.md index 028e05bf..e2ca6009 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,7 +18,7 @@ Parse and serialize minecraft packets, plus authentication and encryption. 1.15 (1.15, 1.15.1, 1.15.2), 1.16 (20w13b, 20w14a, 1.16-rc1, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5), 1.17 (21w07a, 1.17, 1.17.1), 1.18 (1.18, 1.18.1 and 1.18.2), 1.19 (1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4), 1.20 (1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6), - 1.21, 1.21.1, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.8 + 1.21, 1.21.1, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.8, 1.21.9 * Parses all packets and emits events with packet fields as JavaScript diff --git a/src/version.js b/src/version.js index 7525bd70..0e93d0dd 100644 --- a/src/version.js +++ b/src/version.js @@ -1,6 +1,6 @@ 'use strict' module.exports = { - defaultVersion: '1.21.8', - supportedVersions: ['1.7', '1.8.8', '1.9.4', '1.10.2', '1.11.2', '1.12.2', '1.13.2', '1.14.4', '1.15.2', '1.16.5', '1.17.1', '1.18.2', '1.19', '1.19.2', '1.19.3', '1.19.4', '1.20', '1.20.1', '1.20.2', '1.20.4', '1.20.6', '1.21.1', '1.21.3', '1.21.4', '1.21.5', '1.21.6', '1.21.8'] + defaultVersion: '1.21.9', + supportedVersions: ['1.7', '1.8.8', '1.9.4', '1.10.2', '1.11.2', '1.12.2', '1.13.2', '1.14.4', '1.15.2', '1.16.5', '1.17.1', '1.18.2', '1.19', '1.19.2', '1.19.3', '1.19.4', '1.20', '1.20.1', '1.20.2', '1.20.4', '1.20.6', '1.21.1', '1.21.3', '1.21.4', '1.21.5', '1.21.6', '1.21.8', '1.21.9'] } From 72fce170db8beb21dd40be0e62d5b98a213ddb1f Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Sat, 4 Oct 2025 16:46:46 +0200 Subject: [PATCH 2/5] Fix branch name in CI workflow for minecraft-data --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd090c3a..58e4fe7b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,7 +56,7 @@ jobs: distribution: 'adopt' - name: Install dependencies run: npm install - - run: cd node_modules && cd minecraft-data && mv minecraft-data minecraft-data-old && git clone -b pc_1_21_9 https://github.com/PrismarineJS/minecraft-data --depth 1 && node bin/generate_data.js + - run: cd node_modules && cd minecraft-data && mv minecraft-data minecraft-data-old && git clone -b pc-1_21_9 https://github.com/PrismarineJS/minecraft-data --depth 1 && node bin/generate_data.js - run: curl -o node_modules/protodef/src/serializer.js https://raw.githubusercontent.com/extremeheat/node-protodef/refs/heads/dlog/src/serializer.js && curl -o node_modules/protodef/src/compiler.js https://raw.githubusercontent.com/extremeheat/node-protodef/refs/heads/dlog/src/compiler.js - name: Run tests From b1ca7aef1e8b27886fd0f98f9e77dbb0212e5121 Mon Sep 17 00:00:00 2001 From: HenkjanvDiermen Date: Mon, 15 Dec 2025 15:28:30 +0100 Subject: [PATCH 3/5] Fix chat packet handling for 1.21+ versions - Add null checks for senderName field in player_chat packets - Handle empty NBT tags (type: end) in 1.21+ where networkName can be null - Fixes crash when accessing properties on null senderName --- test/clientTest.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/test/clientTest.js b/test/clientTest.js index 63c2be29..2cf132f1 100644 --- a/test/clientTest.js +++ b/test/clientTest.js @@ -174,7 +174,7 @@ for (const supportedVersion of mc.supportedVersions) { const message = JSON.parse(data.formattedMessage) if (chatCount === 1) { assert.strictEqual(message.translate, 'chat.type.text') - assert.deepEqual(message.with[0].clickEvent, { + assert.deepEqual(message.with[0][CLICK_EVENT], { action: 'suggest_command', value: mcData.version.version > 340 ? '/tell Player ' : '/msg Player ' }) @@ -194,20 +194,30 @@ for (const supportedVersion of mc.supportedVersions) { } } else { // 1.19+ - const sender = JSON.parse(data.senderName) - const msgPayload = data.formattedMessage ? JSON.parse(data.formattedMessage) : data.plainMessage - const plainMessage = client.parseMessage(msgPayload).toString() + const plainMessage = data.formattedMessage ? client.parseMessage(JSON.parse(data.formattedMessage)).toString() : data.plainMessage if (chatCount === 1) { assert.strictEqual(plainMessage, 'hello everyone; I have logged in.') - const clickEvent = sender[CLICK_EVENT] - assert.strictEqual(clickEvent.action, 'suggest_command') - assert.ok(['/tell Player ', '/msg Player '].includes(clickEvent.value || clickEvent.command)) - assert.strictEqual(sender.text, 'Player') + // In 1.21+, senderName can be null when networkName is empty (NBT type: end) + if (data.senderName) { + const sender = JSON.parse(data.senderName) + if (sender) { // ADD THIS CHECK + const clickEvent = sender[CLICK_EVENT] + if (clickEvent) { // AND THIS ONE + assert.strictEqual(clickEvent.action, 'suggest_command') + assert.ok(['/tell Player ', '/msg Player '].includes(clickEvent.value || clickEvent.command)) + assert.strictEqual(sender.text, 'Player') + } + } + } } else if (chatCount === 2) { - const plainSender = client.parseMessage(sender).toString() + // In 1.21+, senderName can be null + if (data.senderName) { + const sender = JSON.parse(data.senderName) + const plainSender = client.parseMessage(sender).toString() + assert.strictEqual(plainSender, 'Server') + } assert.strictEqual(plainMessage, 'hello') - assert.strictEqual(plainSender, 'Server') wrap.removeListener('line', lineListener) client.end() done() From 5327652379f8ae2344a13560e03b3a93dedd5e13 Mon Sep 17 00:00:00 2001 From: HenkjanvDiermen Date: Mon, 15 Dec 2025 15:37:13 +0100 Subject: [PATCH 4/5] Update minecraft-data to ^3.101.0 for 1.21.9 support --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 63e1c75d..ac3a2303 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "debug": "^4.3.2", "endian-toggle": "^0.0.0", "lodash.merge": "^4.3.0", - "minecraft-data": "^3.78.0", + "minecraft-data": "^3.101.0", "minecraft-folder-path": "^1.2.0", "node-fetch": "^2.6.1", "node-rsa": "^0.4.2", From 4db4566060d72b53569ece33f0a6e4454d057289 Mon Sep 17 00:00:00 2001 From: extremeheat Date: Sun, 25 Jan 2026 21:40:01 -0500 Subject: [PATCH 5/5] Update ci.yml --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 58e4fe7b..2c80125a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,8 +56,5 @@ jobs: distribution: 'adopt' - name: Install dependencies run: npm install - - run: cd node_modules && cd minecraft-data && mv minecraft-data minecraft-data-old && git clone -b pc-1_21_9 https://github.com/PrismarineJS/minecraft-data --depth 1 && node bin/generate_data.js - - run: curl -o node_modules/protodef/src/serializer.js https://raw.githubusercontent.com/extremeheat/node-protodef/refs/heads/dlog/src/serializer.js && curl -o node_modules/protodef/src/compiler.js https://raw.githubusercontent.com/extremeheat/node-protodef/refs/heads/dlog/src/compiler.js - - name: Run tests run: npm run mochaTest -- -g ${{ matrix.mcVersion }}v