diff options
Diffstat (limited to 'EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/NoCheatConfiguration.java')
-rw-r--r-- | EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/NoCheatConfiguration.java | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/NoCheatConfiguration.java b/EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/NoCheatConfiguration.java new file mode 100644 index 000000000..e137ff480 --- /dev/null +++ b/EssentialsAntiCheat/src/com/earth2me/essentials/anticheat/config/NoCheatConfiguration.java @@ -0,0 +1,82 @@ +package com.earth2me.essentials.anticheat.config; + +import com.earth2me.essentials.anticheat.actions.Action; +import com.earth2me.essentials.anticheat.actions.types.ActionList; +import java.lang.reflect.Field; +import org.bukkit.configuration.MemorySection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.yaml.snakeyaml.DumperOptions; + + +public class NoCheatConfiguration extends YamlConfiguration +{ + private ActionFactory factory; + + @Override + public String saveToString() + { + // Some reflection wizardry to avoid having a lot of + // linebreaks in the yml file, and get a "footer" into the file + try + { + Field op; + op = YamlConfiguration.class.getDeclaredField("yamlOptions"); + op.setAccessible(true); + DumperOptions options = (DumperOptions)op.get(this); + options.setWidth(200); + } + catch (Exception e) + { + } + + String result = super.saveToString(); + + return result; + } + + /** + * Do this after reading new data + */ + public void regenerateActionLists() + { + factory = new ActionFactory(((MemorySection)this.get(ConfPaths.STRINGS)).getValues(false)); + } + + /** + * A convenience method to get action lists from the config + * + * @param path + * @return + */ + public ActionList getActionList(String path, String permission) + { + + String value = this.getString(path); + return factory.createActionList(value, permission); + } + + /** + * Savely store ActionLists back into the yml file + * + * @param path + * @param list + */ + public void set(String path, ActionList list) + { + StringBuilder string = new StringBuilder(); + + for (int treshold : list.getTresholds()) + { + if (treshold > 0) + { + string.append(" vl>").append(treshold); + } + for (Action action : list.getActions(treshold)) + { + string.append(" ").append(action); + } + } + + set(path, string.toString().trim()); + } +} |