diff --git a/CompatNoCheatPlus/cncp_lists.txt b/CompatNoCheatPlus/cncp_lists.txt index ea8e36f..1409b9a 100644 --- a/CompatNoCheatPlus/cncp_lists.txt +++ b/CompatNoCheatPlus/cncp_lists.txt @@ -24,5 +24,6 @@ VERSION HISTORY - (add) List to enable plugins: plugins.ensure-enable [Forces their events to be processed before NoCheatPlus gets them!] - (bugfix) Remove import of mcMMO-hook (use direct package reference instead). - (bugfix) Preserve order of entries in the lists read from the configuration. +- (update) config/comaptlayer (0.0.0) [initial version] diff --git a/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/AbstractNewConfig.java b/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/AbstractNewConfig.java index 469ea53..fe411da 100644 --- a/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/AbstractNewConfig.java +++ b/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/AbstractNewConfig.java @@ -118,17 +118,30 @@ public abstract class AbstractNewConfig extends AbstractConfig { @Override public void removeProperty(String path) { + if (path.startsWith(".")) path = path.substring(1); // VERY EXPENSIVE MemoryConfiguration temp = new MemoryConfiguration(); setOptions(temp); Map values = config.getValues(true); - values.remove(path); - for ( String p : values.keySet()){ - temp.set(p, values.get(p)); + if (values.containsKey(path)) values.remove(path); + else{ + final String altPath = "."+path; + if (values.containsKey(altPath)) values.remove(altPath); + } + for ( String _p : values.keySet()){ + Object v = values.get(_p); + if (v == null) continue; + else if (v instanceof ConfigurationSection) continue; + String p; + if (_p.startsWith(".")) p = _p.substring(1); + else p = _p; + if (p.startsWith(path)) continue; + temp.set(p, v); } config = temp; } + @Override public Boolean getBoolean(String path, Boolean defaultValue) { if (!config.contains(path)) return defaultValue; diff --git a/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/CompatConfig.java b/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/CompatConfig.java index 15230f4..f6a1024 100644 --- a/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/CompatConfig.java +++ b/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/CompatConfig.java @@ -60,7 +60,17 @@ public interface CompatConfig { public Object getProperty(String path, Object defaultValue); public void set(String path, Object value); public void setProperty(String path, Object value); + + /** + * Remove a path (would also remove sub sections, unless for path naming problems). + * @param path + */ public void remove(String path); + + /** + * Works same as remove(path): removes properties and sections alike. + * @param path + */ public void removeProperty(String path); // Contains/has diff --git a/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/CompatConfigFactory.java b/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/CompatConfigFactory.java index 158219f..190d4d8 100644 --- a/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/CompatConfigFactory.java +++ b/CompatNoCheatPlus/src/me/asofold/bukkit/cncp/config/compatlayer/CompatConfigFactory.java @@ -4,7 +4,7 @@ import java.io.File; public class CompatConfigFactory { - public static final String version = "0.8.0"; + public static final String version = "0.8.1"; /** * Attempt to get a working file configuration.