From b10f599a871fff259f54086088b1a245e9534bc1 Mon Sep 17 00:00:00 2001 From: GJ Date: Sun, 18 Mar 2012 16:35:47 -0400 Subject: [PATCH] Updates to configs. --- .../gmail/nossr50/config/ConfigLoader.java | 55 +++ .../gmail/nossr50/config/LoadProperties.java | 48 +- .../gmail/nossr50/config/LoadTreasures.java | 412 ++++++++++-------- src/main/java/com/gmail/nossr50/mcMMO.java | 6 - 4 files changed, 301 insertions(+), 220 deletions(-) create mode 100644 src/main/java/com/gmail/nossr50/config/ConfigLoader.java diff --git a/src/main/java/com/gmail/nossr50/config/ConfigLoader.java b/src/main/java/com/gmail/nossr50/config/ConfigLoader.java new file mode 100644 index 000000000..37c94d18f --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/ConfigLoader.java @@ -0,0 +1,55 @@ +package com.gmail.nossr50.config; + +import java.io.File; +import java.io.IOException; + +import org.bukkit.configuration.file.FileConfiguration; + +import com.gmail.nossr50.mcMMO; + +public abstract class ConfigLoader { + + protected static File configFile; + protected static File dataFolder; + protected final mcMMO plugin; + protected static FileConfiguration config; + + public ConfigLoader(mcMMO plugin, String fileName){ + this.plugin = plugin; + dataFolder = plugin.getDataFolder(); + configFile = new File(dataFolder, File.separator + fileName); + } + + /** + * Load this config file. + */ + protected abstract void load(); + + /** + * Save this config file. + */ + private static void saveConfig() { + try { + config.save(configFile); + } + catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Add the defaults to this config file. + */ + protected void addDefaults() { + + // Load from included config.yml + config.options().copyDefaults(true); + saveConfig(); + } + + /** + * Load the keys from this config file. + */ + protected abstract void loadKeys(); + +} diff --git a/src/main/java/com/gmail/nossr50/config/LoadProperties.java b/src/main/java/com/gmail/nossr50/config/LoadProperties.java index 404de11a7..88e7540f9 100644 --- a/src/main/java/com/gmail/nossr50/config/LoadProperties.java +++ b/src/main/java/com/gmail/nossr50/config/LoadProperties.java @@ -1,18 +1,15 @@ package com.gmail.nossr50.config; import com.gmail.nossr50.mcMMO; -import java.io.File; -import java.io.IOException; - -import org.bukkit.configuration.file.FileConfiguration; import com.gmail.nossr50.datatypes.HUDType; -public class LoadProperties { +public class LoadProperties extends ConfigLoader{ /* * GENERAL SETTINGS */ + /* General Settings */ public static String locale; public static Boolean enableMotd, statsTracking, eventCallback; public static int saveInterval; @@ -115,6 +112,7 @@ public class LoadProperties { * XP SETTINGS */ + /* General Settings */ public static Boolean xpGainsMobSpawners, pvpxp; public static int xpGainMultiplier; @@ -163,21 +161,13 @@ public class LoadProperties { */ public static HUDType defaulthud; - protected static File configFile; - protected static File dataFolder; - protected final mcMMO plugin; - protected static FileConfiguration config; public LoadProperties(mcMMO plugin) { - this.plugin = plugin; - dataFolder = plugin.getDataFolder(); - configFile = new File(dataFolder, File.separator + "config.yml"); + super(plugin, "config.yml"); config = plugin.getConfig(); } - /** - * Load this config file. - */ + @Override public void load() { // If it doesn't exist, copy it from the .jar @@ -190,32 +180,8 @@ public class LoadProperties { loadKeys(); } - /** - * Save this config file. - */ - private static void saveConfig() { - try { - config.save(configFile); - } - catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Add the defaults to this config file. - */ - private void addDefaults() { - - // Load from included config.yml - config.options().copyDefaults(true); - saveConfig(); - } - - /** - * Load the keys from this config file. - */ - private void loadKeys() { + @Override + protected void loadKeys() { plugin.getLogger().info("Loading mcMMO config.yml File..."); // Setup default HUD diff --git a/src/main/java/com/gmail/nossr50/config/LoadTreasures.java b/src/main/java/com/gmail/nossr50/config/LoadTreasures.java index a6b6f7a31..3a155310b 100644 --- a/src/main/java/com/gmail/nossr50/config/LoadTreasures.java +++ b/src/main/java/com/gmail/nossr50/config/LoadTreasures.java @@ -1,7 +1,5 @@ package com.gmail.nossr50.config; -import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -12,7 +10,6 @@ import java.util.Set; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.mcMMO; @@ -20,201 +17,270 @@ import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure; import com.gmail.nossr50.datatypes.treasure.FishingTreasure; import com.gmail.nossr50.datatypes.treasure.Treasure; -public class LoadTreasures { +public class LoadTreasures extends ConfigLoader{ - public static List excavationFromDirt = new ArrayList(); - public static List excavationFromGrass = new ArrayList(); - public static List excavationFromSand = new ArrayList(); - public static List excavationFromGravel = new ArrayList(); - public static List excavationFromClay = new ArrayList(); - public static List excavationFromMycel = new ArrayList(); - public static List excavationFromSoulSand = new ArrayList(); - public static List fishingRewardsTier1 = new ArrayList(); - public static List fishingRewardsTier2 = new ArrayList(); - public static List fishingRewardsTier3 = new ArrayList(); - public static List fishingRewardsTier4 = new ArrayList(); - public static List fishingRewardsTier5 = new ArrayList(); - - protected static File configFile; - protected static File dataFolder; - protected final mcMMO plugin; - protected static FileConfiguration config; + public static List excavationFromDirt = new ArrayList(); + public static List excavationFromGrass = new ArrayList(); + public static List excavationFromSand = new ArrayList(); + public static List excavationFromGravel = new ArrayList(); + public static List excavationFromClay = new ArrayList(); + public static List excavationFromMycel = new ArrayList(); + public static List excavationFromSoulSand = new ArrayList(); + public static List fishingRewardsTier1 = new ArrayList(); + public static List fishingRewardsTier2 = new ArrayList(); + public static List fishingRewardsTier3 = new ArrayList(); + public static List fishingRewardsTier4 = new ArrayList(); + public static List fishingRewardsTier5 = new ArrayList(); - public LoadTreasures(mcMMO plugin) { - this.plugin = plugin; - dataFolder = plugin.getDataFolder(); - configFile = new File(dataFolder, File.separator + "treasures.yml"); - config = plugin.getTreasuresConfig(); - } + public LoadTreasures(mcMMO plugin) { + super(plugin, "treasures.yml"); + config = plugin.getTreasuresConfig(); + } - public void load() { - // If not exist, copy from the jar - if (!configFile.exists()) { - dataFolder.mkdir(); - plugin.saveTreasuresConfig(); - } - addDefaults(); - loadKeys(); - } - - private static void saveConfig() { - try { - config.save(configFile); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private void addDefaults() { - // Load from included config.yml - config.options().copyDefaults(true); - saveConfig(); - } - - private Boolean readBoolean(String root, Boolean def) { - Boolean result = config.getBoolean(root, def); - return result; - } - - private void loadKeys() - { - plugin.getLogger().info("Loading mcMMO treasures.yml File..."); - - // Load treasures - Map treasures = new HashMap(); + @Override + public void load() { - ConfigurationSection treasureSection = config.getConfigurationSection("Treasures"); + // If it doesn't exist, copy it from the .jar + if (!configFile.exists()) { + dataFolder.mkdir(); + plugin.saveTreasuresConfig(); + } + + addDefaults(); + loadKeys(); + } + + @Override + protected void loadKeys() { + plugin.getLogger().info("Loading mcMMO treasures.yml File..."); + + Map treasures = new HashMap(); + ConfigurationSection treasureSection = config.getConfigurationSection("Treasures"); Set treasureConfigSet = treasureSection.getKeys(false); Iterator iterator = treasureConfigSet.iterator(); - while(iterator.hasNext()) - { - String treasureName = iterator.next(); - // Validate all the things! - List reason = new ArrayList(); + while (iterator.hasNext()) { + String treasureName = iterator.next(); - if(!config.contains("Treasures." + treasureName + ".ID")) reason.add("Missing ID"); - if(!config.contains("Treasures." + treasureName + ".Amount")) reason.add("Missing Amount"); - if(!config.contains("Treasures." + treasureName + ".Data")) reason.add("Missing Data"); + // Validate all the things! + List reason = new ArrayList(); - int id = config.getInt("Treasures." + treasureName + ".ID"); - int amount = config.getInt("Treasures." + treasureName + ".Amount"); - int data = config.getInt("Treasures." + treasureName + ".Data"); + /* + * ID, Amount, and Data + */ - if(Material.getMaterial(id) == null) reason.add("Invlid id: " + id); - if(amount < 1) reason.add("Invalid amount: " + amount); - if(data > 127 || data < -128) reason.add("Invalid data: " + data); + if (!config.contains("Treasures." + treasureName + ".ID")) { + reason.add("Missing ID"); + } - if(!config.contains("Treasures." + treasureName + ".XP")) reason.add("Missing XP"); - if(!config.contains("Treasures." + treasureName + ".Drop_Chance")) reason.add("Missing Drop_Chance"); - if(!config.contains("Treasures." + treasureName + ".Drop_Level")) reason.add("Missing Drop_Level"); + if (!config.contains("Treasures." + treasureName + ".Amount")) { + reason.add("Missing Amount"); + } - int xp = config.getInt("Treasures." + treasureName + ".XP"); - Double dropChance = config.getDouble("Treasures." + treasureName + ".Drop_Chance"); - int dropLevel = config.getInt("Treasures." + treasureName + ".Drop_Level"); + if (!config.contains("Treasures." + treasureName + ".Data")) { + reason.add("Missing Data"); + } - if(xp < 0) reason.add("Invalid xp: " + xp); - if(dropChance < 0) reason.add("Invalid Drop_Chance: " + dropChance); - if(dropLevel < 0) reason.add("Invalid Drop_Level: " + dropLevel); + int id = config.getInt("Treasures." + treasureName + ".ID"); + int amount = config.getInt("Treasures." + treasureName + ".Amount"); + int data = config.getInt("Treasures." + treasureName + ".Data"); - ItemStack item = new ItemStack(id, amount, (short) 0, (byte) data); + if (Material.getMaterial(id) == null) { + reason.add("Invlid id: " + id); + } - if(readBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) { - if(config.getConfigurationSection("Treasures." + treasureName + ".Drops_From").getKeys(false).size() != 1) - reason.add("Fishing drops cannot also be excavation drops"); + if (amount < 1) { + reason.add("Invalid amount: " + amount); + } - if(!config.contains("Treasures." + treasureName + ".Max_Level")) reason.add("Missing Max_Level"); - int maxLevel = config.getInt("Treasures." + treasureName + ".Max_Level"); + if (data > 127 || data < -128) { + reason.add("Invalid data: " + data); + } - if(maxLevel < 0) reason.add("Invalid Max_Level: " + maxLevel); + /* + * XP, Drop Chance, and Drop Level + */ - if(noErrorsInTreasure(reason)) { - FishingTreasure fTreasure = new FishingTreasure(item, xp, dropChance, dropLevel, maxLevel); - treasures.put(treasureName, fTreasure); - } - } else { - ExcavationTreasure eTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel); - if(readBoolean("Treasures." + treasureName + ".Drops_From.Dirt", false)) - eTreasure.setDropsFromDirt(); - if(readBoolean("Treasures." + treasureName + ".Drops_From.Grass", false)) - eTreasure.setDropsFromGrass(); - if(readBoolean("Treasures." + treasureName + ".Drops_From.Sand", false)) - eTreasure.setDropsFromSand(); - if(readBoolean("Treasures." + treasureName + ".Drops_From.Gravel", false)) - eTreasure.setDropsFromGravel(); - if(readBoolean("Treasures." + treasureName + ".Drops_From.Clay", false)) - eTreasure.setDropsFromClay(); - if(readBoolean("Treasures." + treasureName + ".Drops_From.Mycelium", false)) - eTreasure.setDropsFromMycel(); - if(readBoolean("Treasures." + treasureName + ".Drops_From.Soul_Sand", false)) - eTreasure.setDropsFromSoulSand(); + if (!config.contains("Treasures." + treasureName + ".XP")) { + reason.add("Missing XP"); + } - if(readBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) { - reason.add("Excavation drops cannot also be fishing drops"); - } + if (!config.contains("Treasures." + treasureName + ".Drop_Chance")) { + reason.add("Missing Drop_Chance"); + } - if(noErrorsInTreasure(reason)) { - treasures.put(treasureName, eTreasure); - } - } - } + if (!config.contains("Treasures." + treasureName + ".Drop_Level")) { + reason.add("Missing Drop_Level"); + } - List excavationTreasures = config.getStringList("Excavation.Treasure"); - List fishingTreasures = config.getStringList("Fishing.Treasure"); + int xp = config.getInt("Treasures." + treasureName + ".XP"); + Double dropChance = config.getDouble("Treasures." + treasureName + ".Drop_Chance"); + int dropLevel = config.getInt("Treasures." + treasureName + ".Drop_Level"); - Iterator treasureIterator = treasures.keySet().iterator(); - while(treasureIterator.hasNext()) { - String treasureKey = treasureIterator.next(); - Treasure treasure = treasures.get(treasureKey); + if (xp < 0) { + reason.add("Invalid xp: " + xp); + } - if(treasure instanceof FishingTreasure) { - if(!fishingTreasures.contains(treasureKey)) continue; - - FishingTreasure fTreasure = (FishingTreasure) treasure; - int dropLevel = fTreasure.getDropLevel(); - int maxLevel = fTreasure.getMaxLevel(); - - if(dropLevel <= LoadProperties.fishingTier1 && maxLevel >= LoadProperties.fishingTier1) - fishingRewardsTier1.add(fTreasure); - if(dropLevel <= LoadProperties.fishingTier2 && maxLevel >= LoadProperties.fishingTier2) - fishingRewardsTier2.add(fTreasure); - if(dropLevel <= LoadProperties.fishingTier3 && maxLevel >= LoadProperties.fishingTier3) - fishingRewardsTier3.add(fTreasure); - if(dropLevel <= LoadProperties.fishingTier4 && maxLevel >= LoadProperties.fishingTier4) - fishingRewardsTier4.add(fTreasure); - if(dropLevel <= LoadProperties.fishingTier5 && maxLevel >= LoadProperties.fishingTier5) - fishingRewardsTier5.add(fTreasure); - - } else if(treasure instanceof ExcavationTreasure) { - if(!excavationTreasures.contains(treasureKey)) continue; + if (dropChance < 0) { + reason.add("Invalid Drop_Chance: " + dropChance); + } - ExcavationTreasure eTreasure = (ExcavationTreasure) treasure; - if(eTreasure.getDropsFromDirt()) - excavationFromDirt.add(eTreasure); - if(eTreasure.getDropsFromGrass()) - excavationFromGrass.add(eTreasure); - if(eTreasure.getDropsFromSand()) - excavationFromSand.add(eTreasure); - if(eTreasure.getDropsFromGravel()) - excavationFromGravel.add(eTreasure); - if(eTreasure.getDropsFromClay()) - excavationFromClay.add(eTreasure); - if(eTreasure.getDropsFromMycel()) - excavationFromMycel.add(eTreasure); - if(eTreasure.getDropsFromSoulSand()) - excavationFromSoulSand.add(eTreasure); - } - } - } + if (dropLevel < 0) { + reason.add("Invalid Drop_Level: " + dropLevel); + } - private boolean noErrorsInTreasure(List issues) { - if(issues.isEmpty()) return true; + /* + * Drops From & Max Level + */ - for(String issue : issues) { - Bukkit.getLogger().warning(issue); - } + ItemStack item = new ItemStack(id, amount, (short) 0, (byte) data); - return false; - } - + if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) { + if (config.getConfigurationSection("Treasures." + treasureName + ".Drops_From").getKeys(false).size() != 1) { + reason.add("Fishing drops cannot also be excavation drops"); + } + + if (!config.contains("Treasures." + treasureName + ".Max_Level")) { + reason.add("Missing Max_Level"); + } + + int maxLevel = config.getInt("Treasures." + treasureName + ".Max_Level"); + + if (maxLevel < 0) { + reason.add("Invalid Max_Level: " + maxLevel); + } + + if (noErrorsInTreasure(reason)) { + FishingTreasure fTreasure = new FishingTreasure(item, xp, dropChance, dropLevel, maxLevel); + treasures.put(treasureName, fTreasure); + } + } + else { + ExcavationTreasure eTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel); + + if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Dirt", false)) { + eTreasure.setDropsFromDirt(); + } + + if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Grass", false)) { + eTreasure.setDropsFromGrass(); + } + + if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Sand", false)) { + eTreasure.setDropsFromSand(); + } + + if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Gravel", false)) { + eTreasure.setDropsFromGravel(); + } + + if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Clay", false)) { + eTreasure.setDropsFromClay(); + } + + if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Mycelium", false)) { + eTreasure.setDropsFromMycel(); + } + + if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Soul_Sand", false)) { + eTreasure.setDropsFromSoulSand(); + } + + if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) { + reason.add("Excavation drops cannot also be fishing drops"); + } + + if (noErrorsInTreasure(reason)) { + treasures.put(treasureName, eTreasure); + } + } + } + + List excavationTreasures = config.getStringList("Excavation.Treasure"); + List fishingTreasures = config.getStringList("Fishing.Treasure"); + Iterator treasureIterator = treasures.keySet().iterator(); + + while (treasureIterator.hasNext()) { + String treasureKey = treasureIterator.next(); + Treasure treasure = treasures.get(treasureKey); + + if (treasure instanceof FishingTreasure) { + if (!fishingTreasures.contains(treasureKey)) { + continue; + } + + FishingTreasure fTreasure = (FishingTreasure) treasure; + int dropLevel = fTreasure.getDropLevel(); + int maxLevel = fTreasure.getMaxLevel(); + + if(dropLevel <= LoadProperties.fishingTier1 && maxLevel >= LoadProperties.fishingTier1) { + fishingRewardsTier1.add(fTreasure); + } + + if(dropLevel <= LoadProperties.fishingTier2 && maxLevel >= LoadProperties.fishingTier2) { + fishingRewardsTier2.add(fTreasure); + } + + if (dropLevel <= LoadProperties.fishingTier3 && maxLevel >= LoadProperties.fishingTier3) { + fishingRewardsTier3.add(fTreasure); + } + + if (dropLevel <= LoadProperties.fishingTier4 && maxLevel >= LoadProperties.fishingTier4) { + fishingRewardsTier4.add(fTreasure); + } + + if (dropLevel <= LoadProperties.fishingTier5 && maxLevel >= LoadProperties.fishingTier5) { + fishingRewardsTier5.add(fTreasure); + } + + } + else if (treasure instanceof ExcavationTreasure) { + if (!excavationTreasures.contains(treasureKey)) { + continue; + } + + ExcavationTreasure eTreasure = (ExcavationTreasure) treasure; + + if (eTreasure.getDropsFromDirt()) { + excavationFromDirt.add(eTreasure); + } + + if (eTreasure.getDropsFromGrass()) { + excavationFromGrass.add(eTreasure); + } + + if (eTreasure.getDropsFromSand()) { + excavationFromSand.add(eTreasure); + } + + if (eTreasure.getDropsFromGravel()) { + excavationFromGravel.add(eTreasure); + } + + if (eTreasure.getDropsFromClay()) { + excavationFromClay.add(eTreasure); + } + + if (eTreasure.getDropsFromMycel()) { + excavationFromMycel.add(eTreasure); + } + + if (eTreasure.getDropsFromSoulSand()) { + excavationFromSoulSand.add(eTreasure); + } + } + } + } + + private boolean noErrorsInTreasure(List issues) { + if (issues.isEmpty()) { + return true; + } + else { + for (String issue : issues) { + Bukkit.getLogger().warning(issue); + } + return false; + } + } } diff --git a/src/main/java/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java index 414352039..0cb1b752c 100644 --- a/src/main/java/com/gmail/nossr50/mcMMO.java +++ b/src/main/java/com/gmail/nossr50/mcMMO.java @@ -27,7 +27,6 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayDeque; import java.util.ArrayList; import java.util.HashMap; @@ -36,7 +35,6 @@ import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.PluginManager; -import org.bukkit.block.Block; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; @@ -53,10 +51,6 @@ public class mcMMO extends JavaPlugin { private final mcBlockListener blockListener = new mcBlockListener(this); private final mcEntityListener entityListener = new mcEntityListener(this); - //Queue for block data change for R2+ fix - public ArrayDeque changeQueue = new ArrayDeque(); - public ArrayDeque fastChangeQueue = new ArrayDeque(); - private Runnable mcMMO_Timer = new mcTimer(this); //BLEED AND REGENERATION private Runnable mcMMO_SaveTimer = new mcSaveTimer(this); //Periodic saving of Player Data