From fbf981e36ac3270340fddc0beb5f217dd88f998d Mon Sep 17 00:00:00 2001 From: aPunch Date: Sat, 21 Jan 2012 07:56:50 -0600 Subject: [PATCH] implemented settings --- src/net/citizensnpcs/Citizens.java | 35 +++++---- src/net/citizensnpcs/Settings.java | 77 +++++++++++++++++++ .../citizensnpcs/npc/CitizensNPCManager.java | 4 +- src/net/citizensnpcs/util/Messaging.java | 6 +- 4 files changed, 105 insertions(+), 17 deletions(-) create mode 100644 src/net/citizensnpcs/Settings.java diff --git a/src/net/citizensnpcs/Citizens.java b/src/net/citizensnpcs/Citizens.java index 8d670049b..74561e4ea 100644 --- a/src/net/citizensnpcs/Citizens.java +++ b/src/net/citizensnpcs/Citizens.java @@ -23,20 +23,14 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class Citizens extends JavaPlugin { - private CitizensNPCManager npcManager; - private CitizensCharacterManager characterManager; - private CitizensTraitManager traitManager; + private final CitizensNPCManager npcManager; + private final CitizensCharacterManager characterManager; + private final CitizensTraitManager traitManager; private Storage saves; + private Settings config; - @Override - public void onDisable() { - save(); - - Messaging.log("v" + getDescription().getVersion() + " disabled."); - } - - @Override - public void onEnable() { + public Citizens() { + super(); // Register API managers npcManager = new CitizensNPCManager(); characterManager = new CitizensCharacterManager(); @@ -44,6 +38,21 @@ public class Citizens extends JavaPlugin { CitizensAPI.setNPCManager(npcManager); CitizensAPI.setCharacterManager(characterManager); CitizensAPI.setTraitManager(traitManager); + } + + @Override + public void onDisable() { + config.save(); + saveNPCs(); + + Messaging.log("v" + getDescription().getVersion() + " disabled."); + } + + @Override + public void onEnable() { + // Configuration file + config = new Settings(this); + config.load(); // TODO database support saves = new YamlStorage(getDataFolder() + File.separator + "saves.yml"); @@ -127,7 +136,7 @@ public class Citizens extends JavaPlugin { Messaging.log("Loaded " + npcManager.getNPCs().size() + " NPCs (" + spawned + " spawned)."); } - private void save() { + private void saveNPCs() { for (NPC npc : npcManager.getNPCs()) { DataKey root = saves.getKey("npc." + npc.getId()); root.setString("name", npc.getFullName()); diff --git a/src/net/citizensnpcs/Settings.java b/src/net/citizensnpcs/Settings.java new file mode 100644 index 000000000..53291dabe --- /dev/null +++ b/src/net/citizensnpcs/Settings.java @@ -0,0 +1,77 @@ +package net.citizensnpcs; + +import java.io.File; + +import net.citizensnpcs.api.DataKey; +import net.citizensnpcs.storage.flatfile.YamlStorage; +import net.citizensnpcs.util.Messaging; + +public class Settings { + public enum Setting { + DEBUG_MODE("general.debug-mode", false), + TEST_DOUBLE("hi", 3.4); + + private String path; + private Object value; + + Setting(String path, Object value) { + this.path = path; + this.value = value; + } + + public String getPath() { + return path; + } + + public int getInt() { + return (Integer) value; + } + + public double getDouble() { + return (Double) value; + } + + public long getLong() { + return (Long) value; + } + + public boolean getBoolean() { + return (Boolean) value; + } + + public String getString() { + return value.toString(); + } + + private Object get() { + return value; + } + + private void set(Object value) { + this.value = value; + } + } + + private YamlStorage config; + private final DataKey root; + + public Settings(Citizens plugin) { + config = new YamlStorage(plugin.getDataFolder() + File.separator + "config.yml"); + root = config.getKey(""); + } + + public void load() { + for (Setting setting : Setting.values()) { + if (!root.keyExists(setting.getPath())) { + Messaging.log("Writing default setting: '" + setting.getPath() + "'"); + root.setRaw(setting.getPath(), setting.get()); + } else + setting.set(root.getRaw(setting.getPath())); + } + save(); + } + + public void save() { + config.save(); + } +} \ No newline at end of file diff --git a/src/net/citizensnpcs/npc/CitizensNPCManager.java b/src/net/citizensnpcs/npc/CitizensNPCManager.java index 8358418ce..09fcf0e22 100644 --- a/src/net/citizensnpcs/npc/CitizensNPCManager.java +++ b/src/net/citizensnpcs/npc/CitizensNPCManager.java @@ -29,8 +29,8 @@ import net.minecraft.server.Packet29DestroyEntity; import net.minecraft.server.WorldServer; public class CitizensNPCManager implements NPCManager { - private Map spawned = new ConcurrentHashMap(); - private Map byID = new ConcurrentHashMap(); + private final Map spawned = new ConcurrentHashMap(); + private final Map byID = new ConcurrentHashMap(); @Override public NPC createNPC(String name) { diff --git a/src/net/citizensnpcs/util/Messaging.java b/src/net/citizensnpcs/util/Messaging.java index bec8c173a..b53cfcf85 100644 --- a/src/net/citizensnpcs/util/Messaging.java +++ b/src/net/citizensnpcs/util/Messaging.java @@ -2,6 +2,8 @@ package net.citizensnpcs.util; import java.util.logging.Level; +import net.citizensnpcs.Settings.Setting; + import org.bukkit.Bukkit; public class Messaging { @@ -15,7 +17,7 @@ public class Messaging { } public static void debug(Object msg) { - // TODO add debug setting - log(msg); + if (Setting.DEBUG_MODE.getBoolean()) + log(msg); } } \ No newline at end of file