From aea2d29c981edc45f82ee30fac9ade46776decf8 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Fri, 9 Dec 2011 12:21:11 +0800 Subject: [PATCH] Fix config hashcode inconsistency on world loads (UI reload loop in JSON mode) --- src/main/java/org/dynmap/DynmapPlugin.java | 2 +- src/main/java/org/dynmap/JsonFileClientUpdateComponent.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/dynmap/DynmapPlugin.java b/src/main/java/org/dynmap/DynmapPlugin.java index c88a5082..8ffe6806 100644 --- a/src/main/java/org/dynmap/DynmapPlugin.java +++ b/src/main/java/org/dynmap/DynmapPlugin.java @@ -665,8 +665,8 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI { } @Override public void onWorldLoad(WorldLoadEvent event) { - mapManager.activateWorld(event.getWorld()); updateConfigHashcode(); + mapManager.activateWorld(event.getWorld()); } }; diff --git a/src/main/java/org/dynmap/JsonFileClientUpdateComponent.java b/src/main/java/org/dynmap/JsonFileClientUpdateComponent.java index 5ca77b32..2c5adede 100644 --- a/src/main/java/org/dynmap/JsonFileClientUpdateComponent.java +++ b/src/main/java/org/dynmap/JsonFileClientUpdateComponent.java @@ -30,6 +30,7 @@ public class JsonFileClientUpdateComponent extends ClientUpdateComponent { private HashMap useralias = new HashMap(); private int aliasindex = 1; + private long last_confighash; private Charset cs_utf8 = Charset.forName("UTF-8"); public JsonFileClientUpdateComponent(final DynmapPlugin plugin, final ConfigurationNode configuration) { @@ -41,6 +42,8 @@ public class JsonFileClientUpdateComponent extends ClientUpdateComponent { @Override public void run() { currentTimestamp = System.currentTimeMillis(); + if(last_confighash != plugin.getConfigHashcode()) + writeConfiguration(); writeUpdates(); if (allowwebchat) { handleWebChat(); @@ -89,6 +92,7 @@ public class JsonFileClientUpdateComponent extends ClientUpdateComponent { plugin.events.trigger("buildclientconfiguration", clientConfiguration); outputFile = getStandaloneFile("dynmap_config.json"); outputTempFile = getStandaloneFile("dynmap_config.json.new"); + last_confighash = plugin.getConfigHashcode(); int retrycnt = 0; boolean done = false;