From fed626df0b7646c64da710763f3b9605e0e206c7 Mon Sep 17 00:00:00 2001 From: Chicken Bones Date: Mon, 22 Jul 2013 15:12:29 +1000 Subject: [PATCH] Added safeguard to WorldExtensionManager.saveWorld for when someone force closes the client. Made config files save themselves on tag remove Removed ' ' -> '_' mapping in config file keys --- codechicken/lib/config/ConfigTag.java | 5 ++--- codechicken/lib/config/ConfigTagParent.java | 8 ++++++-- codechicken/lib/world/WorldExtensionManager.java | 5 +++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/codechicken/lib/config/ConfigTag.java b/codechicken/lib/config/ConfigTag.java index 82987d3..98472a4 100644 --- a/codechicken/lib/config/ConfigTag.java +++ b/codechicken/lib/config/ConfigTag.java @@ -200,10 +200,9 @@ public class ConfigTag extends ConfigTagParent { String vname; if(qualifiedname.contains(".") && bracequalifier.length() > 0) - vname = qualifiedname.substring(bracequalifier.length() + 1).replace(' ', '_'); + vname = qualifiedname.substring(bracequalifier.length() + 1); else vname = qualifiedname; - vname.replace(' ', '_'); if(newline && !first) ConfigFile.writeLine(writer, "", tabs); @@ -220,7 +219,7 @@ public class ConfigTag extends ConfigTagParent if(value == null) ConfigFile.writeLine(writer, vname, tabs); ConfigFile.writeLine(writer, "{", tabs); - saveTagTree(writer, tabs+1, qualifiedname.replace(' ', '_')); + saveTagTree(writer, tabs+1, qualifiedname); ConfigFile.writeLine(writer, "}", tabs); } else diff --git a/codechicken/lib/config/ConfigTagParent.java b/codechicken/lib/config/ConfigTagParent.java index f3ab8d7..0db27f9 100644 --- a/codechicken/lib/config/ConfigTagParent.java +++ b/codechicken/lib/config/ConfigTagParent.java @@ -117,7 +117,6 @@ public abstract class ConfigTagParent public ConfigTag getTag(String tagname, boolean create) { - tagname = tagname.replace('_', ' '); int dotpos = tagname.indexOf("."); String basetagname = dotpos == -1 ? tagname : tagname.substring(0, dotpos); ConfigTag basetag = childtags.get(basetagname); @@ -149,7 +148,12 @@ public abstract class ConfigTagParent int dotpos = tagname.lastIndexOf("."); String lastpart = dotpos == -1 ? tagname : tagname.substring(dotpos+1, tagname.length()); if(tag.parent != null) - return tag.parent.childtags.remove(lastpart) != null; + { + boolean ret = tag.parent.childtags.remove(lastpart) != null; + if(ret) + saveConfig(); + return ret; + } return false; } diff --git a/codechicken/lib/world/WorldExtensionManager.java b/codechicken/lib/world/WorldExtensionManager.java index 95d5651..536a190 100644 --- a/codechicken/lib/world/WorldExtensionManager.java +++ b/codechicken/lib/world/WorldExtensionManager.java @@ -76,8 +76,9 @@ public class WorldExtensionManager @ForgeSubscribe public void onWorldSave(WorldEvent.Save event) { - for(WorldExtension extension : worldMap.get(event.world)) - extension.save(); + if(worldMap.containsKey(event.world)) + for(WorldExtension extension : worldMap.get(event.world)) + extension.save(); } @ForgeSubscribe