From c36265847a6ee5cef033c9a9e6704c92dff1f353 Mon Sep 17 00:00:00 2001 From: Ic3Tank <61137113+IceTank@users.noreply.github.com> Date: Thu, 21 Nov 2024 20:40:12 +0100 Subject: [PATCH] Fix gamemode tests Add test function to kill the bot --- lib/plugins/game.js | 7 ++++--- test/externalTests/gamemode.js | 6 ++---- test/externalTests/plugins/testCommon.js | 5 +++++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/plugins/game.js b/lib/plugins/game.js index 1a6522907..daf9533b4 100644 --- a/lib/plugins/game.js +++ b/lib/plugins/game.js @@ -25,10 +25,11 @@ function inject (bot, options) { function handleRespawnPacketData (packet) { bot.game.levelType = packet.levelType ?? (packet.isFlat ? 'flat' : 'default') bot.game.hardcore = packet.isHardcore ?? Boolean(packet.gameMode & 0b100) - if (bot.registry.isOlderThan('1.10')) { // gamemode is used pre 1.10 and post 1.20 but in between it's gameMode - bot.game.gameMode = parseGameMode(packet.gamemode) + // Either a respawn packet or a login packet. Depending on the packet it can be "gamemode" or "gameMode" + if (bot.registry.isNewerOrEqualTo('1.20.5')) { + bot.game.gameMode = packet.gamemode || parseGameMode(packet.gameMode) } else { - bot.game.gameMode = packet.gamemode || parseGameMode(packet.gameMode & 0b1111) // lower four bits + bot.game.gameMode = parseGameMode(packet.gamemode ?? packet.gameMode) } if (bot.supportFeature('segmentedRegistryCodecData')) { // 1.20.5 if (typeof packet.dimension === 'number') { diff --git a/test/externalTests/gamemode.js b/test/externalTests/gamemode.js index e708a3daf..ebf2d1487 100644 --- a/test/externalTests/gamemode.js +++ b/test/externalTests/gamemode.js @@ -19,10 +19,8 @@ module.exports = () => { addTest('after respawn', async (bot) => { await bot.test.becomeCreative() - - bot.chat('/kill') - - await onceWithCleanup(bot, 'respawn', { timeout: 2000 }) + bot.test.selfKill() + await onceWithCleanup(bot, 'respawn', { timeout: 5000 }) // Respawn packets send the gamemode. If the bot is in creative mode, it should respawn in creative mode. Tested <1.20 assert.strictEqual(bot.game.gameMode, 'creative', 'Wrong gamemode after respawn') }) diff --git a/test/externalTests/plugins/testCommon.js b/test/externalTests/plugins/testCommon.js index 0309fa4bf..0b25a918e 100644 --- a/test/externalTests/plugins/testCommon.js +++ b/test/externalTests/plugins/testCommon.js @@ -25,6 +25,7 @@ function inject (bot) { bot.test.placeBlock = placeBlock bot.test.runExample = runExample bot.test.tellAndListen = tellAndListen + bot.test.selfKill = selfKill bot.test.wait = function (ms) { return new Promise((resolve) => { setTimeout(resolve, ms) }) } @@ -232,4 +233,8 @@ function inject (bot) { } return closeExample() } + + function selfKill () { + bot.chat('/kill @p') + } }