From 0404ca1a949fb494eff7c961e278906fc56d546e Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Thu, 8 Jan 2026 11:51:12 -0600 Subject: [PATCH 1/4] Allow management of guild mines that are still active --- src/engine/objects/Mine.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/engine/objects/Mine.java b/src/engine/objects/Mine.java index dabfb557..553c1036 100644 --- a/src/engine/objects/Mine.java +++ b/src/engine/objects/Mine.java @@ -220,8 +220,7 @@ public class Mine extends AbstractGameObject { // Only inactive mines are returned. for (Mine mine : Mine.mineMap.keySet()) { - if (mine.owningGuild.getObjectUUID() == guildID && - mine.isActive == false) + if (mine.owningGuild.getObjectUUID() == guildID) mineList.add(mine); } return mineList; From e5b2247204abfa2c705fab4b8d3b88f2e3aa4caa Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Thu, 8 Jan 2026 11:52:52 -0600 Subject: [PATCH 2/4] disable teleports to cities that are destroyed or errant --- src/engine/objects/City.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/engine/objects/City.java b/src/engine/objects/City.java index 8f674de8..eb173614 100644 --- a/src/engine/objects/City.java +++ b/src/engine/objects/City.java @@ -306,8 +306,22 @@ public class City extends AbstractWorldObject { if (city.parentZone == null) continue; - //can't repledge to a guild you're already part of + // Can't teleport to something without a tree + + if (city.getTOL() == null) + continue; + + // No abandoned cities + + if (city.getTOL().getGuild().isEmptyGuild()) + continue; + + // No destroyed cities + if (city.getTOL().getRank() == -1) + continue; + + //can't repledge to a guild you're already part of if (repledge && city.getGuild().equals(playerCharacter.guild)) continue; From 5511dc7899eee9e759f9cbbf33ca3a0b378c1f84 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Thu, 8 Jan 2026 11:53:54 -0600 Subject: [PATCH 3/4] update lumber hash in mbEnums --- src/engine/mbEnums.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/mbEnums.java b/src/engine/mbEnums.java index c75d7a05..1ef6443e 100644 --- a/src/engine/mbEnums.java +++ b/src/engine/mbEnums.java @@ -2732,7 +2732,7 @@ public class mbEnums { DIAMOND(1580010, 1540225085, -1730704107, 2000, 20), GALVOR(1580017, -1683992404, -1596311545, 2000, 5), IRON(1580002, -1673518119, 2504297, 2000, 20), - LUMBER(1580004, 1628412684, -1603256692, 10000, 100), + LUMBER(1580004, -1628412684, -1603256692, 10000, 100), MANDRAKE(1580007, 1519910613, 1191391799, 1000, 10), MITHRIL(1580021, 626743397, -1761257186, 500, 5), OAK(1580005, -1653034775, 74767, 3000, 30), From 28836a7a4f63bb50073ebdbd1d463233abec42ae Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Thu, 8 Jan 2026 12:38:42 -0600 Subject: [PATCH 4/4] log null blueprint in destroy city thread --- src/engine/workthreads/DestroyCityThread.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/engine/workthreads/DestroyCityThread.java b/src/engine/workthreads/DestroyCityThread.java index 9c5b2050..0a9dd5f7 100644 --- a/src/engine/workthreads/DestroyCityThread.java +++ b/src/engine/workthreads/DestroyCityThread.java @@ -95,6 +95,12 @@ public class DestroyCityThread implements Runnable { if (cityBuilding == null) continue; + // check null bluepritn and log error + if (cityBuilding.getBlueprint() == null){ + Logger.error("Null Blueprint for building ID: " + cityBuilding.getObjectUUID()); + continue; + } + // Do nothing with the banestone. It will be removed elsewhere if (cityBuilding.getBlueprint().getBuildingGroup().equals(mbEnums.BuildingGroup.BANESTONE))