From 5cd3eac7ff66c01fa8b30ca6a64c06e12916d44f Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Wed, 2 Nov 2022 23:00:18 +0100 Subject: [PATCH] Makes sure to only update quest markers if necessary --- .../handler/trait/quests/QuestsHandler.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestsHandler.java b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestsHandler.java index 61ff58b..68f37bd 100644 --- a/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestsHandler.java +++ b/src/main/java/net/knarcraft/dynmapcitizens/handler/trait/quests/QuestsHandler.java @@ -15,6 +15,7 @@ import org.bukkit.World; import org.dynmap.DynmapAPI; import org.dynmap.markers.CircleMarker; import org.dynmap.markers.GenericMarker; +import org.dynmap.markers.Marker; import org.dynmap.markers.MarkerIcon; import org.dynmap.markers.MarkerSet; @@ -50,6 +51,8 @@ public class QuestsHandler extends AbstractTraitHandler { questMarkerSet.setLayerPriority(3); questAreaMarkerSet.setLayerPriority(2); isEnabled = true; + //Remove old quest markers + questMarkerSet.getMarkers().forEach(GenericMarker::deleteMarker); return; } } @@ -62,15 +65,19 @@ public class QuestsHandler extends AbstractTraitHandler { return; } - //Remove old quest markers - questMarkerSet.getMarkers().forEach(GenericMarker::deleteMarker); - //Update all area markers for quests updateQuestAreas(); //Generate information about all NPCs involved in quests generateQuestNPCInfo(); + //Remove any markers for deleted quests + for (Marker marker : questMarkerSet.getMarkers()) { + if (!questGiverInfo.containsKey(UUID.fromString(marker.getMarkerID()))) { + marker.deleteMarker(); + } + } + //Generate markers based on the generated info generateAllMarkers(); } @@ -129,7 +136,15 @@ public class QuestsHandler extends AbstractTraitHandler { markerDescription.append(getInvolvedInQuestsString(info)); - addNPCMarker(npcId, QuestsHelper.getMarkerTitle(info.getQuestNPCType()), markerDescription.toString(), icon, questMarkerSet); + Marker existingMarker = questMarkerSet.findMarker(npcId.toString()); + String newDescription = markerDescription.toString(); + if (existingMarker != null) { + if (!existingMarker.getDescription().equals(newDescription)) { + existingMarker.setDescription(newDescription); + } + } else { + addNPCMarker(npcId, QuestsHelper.getMarkerTitle(info.getQuestNPCType()), newDescription, icon, questMarkerSet); + } } }