From 8828981f1c4b999d438af61fd6acb52ee8bb5950 Mon Sep 17 00:00:00 2001 From: EtlamGit Date: Fri, 26 Dec 2025 16:51:50 +0100 Subject: [PATCH] fix parsing of player spawn location starting with 1.21.9 players spawn location is stored in a sub Tag "respawn" --- minutor.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/minutor.cpp b/minutor.cpp index e6c206e..98e1530 100644 --- a/minutor.cpp +++ b/minutor.cpp @@ -878,7 +878,7 @@ void Minutor::loadWorld(QDir path) { playerActions.append(p); // spawn location (bed) - if (player.has("SpawnX")) { + if (player.has("SpawnX") && player.has("SpawnZ")) { dimension = "minecraft:overworld"; if (player.has("SpawnDimension")) dimension = player.at("SpawnDimension")->toString(); @@ -893,6 +893,24 @@ void Minutor::loadWorld(QDir path) { this, SLOT(jumpToLocation())); playerActions.append(p); } + // starting with 1.21.9 player spawn is in sub-Tag "respawn" + if (player.has("respawn")) { + auto respawn = player.at("respawn"); + dimension = "minecraft:overworld"; + if (respawn->has("dimension")) + dimension = respawn->at("dimension")->toString(); + if (respawn->has("pos")) { + auto pos = respawn->at("pos")->toIntArray(); + p = new QAction(this); + p->setText(playerName+"'s Bed"); + p->setIcon(playerIcon); + p->setData(locations.count()); + locations.append(Location(pos[0], pos[2], dimension)); + connect(p, SIGNAL(triggered()), + this, SLOT(jumpToLocation())); + playerActions.append(p); + } + } } } m_ui.menu_JumpPlayer->addActions(playerActions);