From 2eea7e0785d6cd09b60f4ef6ccedf946e72ce236 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 7 May 2026 18:32:04 +0000 Subject: [PATCH 1/2] Fix incorrect NPC map list registration during transitions - Reordered entity update and map switch in MapManager to prevent old entities from being associated with new map IDs. - Added validation in ConfigEntity to ensure only positive map IDs are added to NpcInfo mapList. Co-authored-by: dm94 <7419213+dm94@users.noreply.github.com> --- .../java/com/github/manolo8/darkbot/config/ConfigEntity.java | 4 ++-- .../com/github/manolo8/darkbot/core/manager/MapManager.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/config/ConfigEntity.java b/src/main/java/com/github/manolo8/darkbot/config/ConfigEntity.java index 7011db470..4a5f26d1b 100644 --- a/src/main/java/com/github/manolo8/darkbot/config/ConfigEntity.java +++ b/src/main/java/com/github/manolo8/darkbot/config/ConfigEntity.java @@ -50,7 +50,7 @@ public NpcInfo getOrCreateNpcInfo(String name) { info.name = name; info.radius = 560; - info.mapList.add(mapId); + if (mapId > 0) info.mapList.add(mapId); if (!name.isEmpty()) { npcs.put(name, info); @@ -58,7 +58,7 @@ public NpcInfo getOrCreateNpcInfo(String name) { npcInfos.setValue(npcs); changed(); } - } else if (info.mapList.add(mapId)) { + } else if (mapId > 0 && info.mapList.add(mapId)) { npcInfos.setValue(npcs); changed(); } diff --git a/src/main/java/com/github/manolo8/darkbot/core/manager/MapManager.java b/src/main/java/com/github/manolo8/darkbot/core/manager/MapManager.java index 02d2fb14f..dd499623e 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/manager/MapManager.java +++ b/src/main/java/com/github/manolo8/darkbot/core/manager/MapManager.java @@ -145,10 +145,10 @@ private void update(long address) { int currMap = API.readInt(address + 84); boolean switched = currMap != id; + entities.update(address); + if (switched) switchMap(main.starManager.byId(currMap)); - - entities.update(address); } private int lastNextMap; From 2f05d852643d2360b676d831d51a559c87414836 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 26 May 2026 19:44:27 +0000 Subject: [PATCH 2/2] Fix NPC map list pollution and synchronization during transitions - Moved mapManager.tick() before hero.tick() in Main.java to ensure map ID is updated before hero/pet processing. - Added entities.clear() before switchMap in MapManager.update to purge stale entities during transitions. - Added mapId > 0 validation in ConfigEntity when adding to NpcInfo mapList to prevent invalid map IDs from being recorded. Co-authored-by: dm94 <7419213+dm94@users.noreply.github.com> --- src/main/java/com/github/manolo8/darkbot/Main.java | 2 +- .../github/manolo8/darkbot/core/manager/MapManager.java | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/Main.java b/src/main/java/com/github/manolo8/darkbot/Main.java index 2a541f455..7eb28a4be 100644 --- a/src/main/java/com/github/manolo8/darkbot/Main.java +++ b/src/main/java/com/github/manolo8/darkbot/Main.java @@ -263,8 +263,8 @@ private boolean isInvalid() { private void validTick() { settingsManager.tick(); - hero.tick(); mapManager.tick(); + hero.tick(); facadeManager.tick(); effectManager.tick(); guiManager.tick(); diff --git a/src/main/java/com/github/manolo8/darkbot/core/manager/MapManager.java b/src/main/java/com/github/manolo8/darkbot/core/manager/MapManager.java index dd499623e..4bb3f3dad 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/manager/MapManager.java +++ b/src/main/java/com/github/manolo8/darkbot/core/manager/MapManager.java @@ -145,10 +145,12 @@ private void update(long address) { int currMap = API.readInt(address + 84); boolean switched = currMap != id; - entities.update(address); - - if (switched) + if (switched) { + entities.clear(); switchMap(main.starManager.byId(currMap)); + } + + entities.update(address); } private int lastNextMap;