From 24f8b2fbd5d4b12e5ad19dc598b3c1177eafaa4d Mon Sep 17 00:00:00 2001 From: t00thpick1 Date: Sat, 10 Jun 2017 14:16:31 -0400 Subject: [PATCH] More configuration for hylian luck --- .../config/treasure/TreasureConfig.java | 58 ++++++++++++------- .../skills/herbalism/HerbalismManager.java | 30 ++-------- 2 files changed, 41 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java b/src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java index f78943122..64e786259 100755 --- a/src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java +++ b/src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java @@ -14,6 +14,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.material.Dye; +import org.bukkit.material.MaterialData; import org.bukkit.potion.PotionData; import org.bukkit.potion.PotionType; @@ -25,6 +26,7 @@ import com.gmail.nossr50.datatypes.treasure.HylianTreasure; import com.gmail.nossr50.datatypes.treasure.Rarity; import com.gmail.nossr50.datatypes.treasure.ShakeTreasure; import com.gmail.nossr50.util.EnchantmentUtils; +import com.gmail.nossr50.util.StringUtils; public class TreasureConfig extends ConfigLoader { @@ -32,11 +34,8 @@ public class TreasureConfig extends ConfigLoader { public HashMap> excavationMap = new HashMap>(); - public List hylianFromBushes = new ArrayList(); - public List hylianFromFlowers = new ArrayList(); - public List hylianFromPots = new ArrayList(); - - public HashMap> shakeMap = new HashMap>(); + public HashMap> shakeMap = new HashMap>(); + public HashMap> hylianMap = new HashMap>(); public HashMap> fishingRewards = new HashMap>(); public HashMap> fishingEnchantments = new HashMap>(); @@ -144,9 +143,9 @@ public class TreasureConfig extends ConfigLoader { if (materialName.contains("INK_SACK")) { material = Material.INK_SACK; - } else if(materialName.contains("COAL")){ - material = Material.COAL; - } else if (materialName.contains("INVENTORY")) { + } else if (materialName.contains("COAL")) { + material = Material.COAL; + } else if (materialName.contains("INVENTORY")) { // Use magic material BED_BLOCK to know that we're grabbing something from the inventory and not a normal treasure if (!shakeMap.containsKey(EntityType.PLAYER)) shakeMap.put(EntityType.PLAYER, new ArrayList()); @@ -292,7 +291,7 @@ public class TreasureConfig extends ConfigLoader { fishingRewards.get(rarity).add(new FishingTreasure(item, xp)); } else if (isShake) { ShakeTreasure shakeTreasure = new ShakeTreasure(item, xp, dropChance, dropLevel); - + EntityType entityType = EntityType.valueOf(type.substring(6)); if (!shakeMap.containsKey(entityType)) shakeMap.put(entityType, new ArrayList()); @@ -301,8 +300,7 @@ public class TreasureConfig extends ConfigLoader { ExcavationTreasure excavationTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel); List dropList = config.getStringList(type + "." + treasureName + ".Drops_From"); - for (String blockType : dropList) - { + for (String blockType : dropList) { Material mat = Material.matchMaterial(blockType); if (!excavationMap.containsKey(mat)) excavationMap.put(mat, new ArrayList()); @@ -312,22 +310,40 @@ public class TreasureConfig extends ConfigLoader { HylianTreasure hylianTreasure = new HylianTreasure(item, xp, dropChance, dropLevel); List dropList = config.getStringList(type + "." + treasureName + ".Drops_From"); - if (dropList.contains("Bushes")) { - hylianFromBushes.add(hylianTreasure); - } - - if (dropList.contains("Flowers")) { - hylianFromFlowers.add(hylianTreasure); - } - - if (dropList.contains("Pots")) { - hylianFromPots.add(hylianTreasure); + for (String dropper : dropList) { + if (dropper.equals("Bushes")) { + AddHylianTreasure("Small_Fern", hylianTreasure); + AddHylianTreasure("Small_Grass", hylianTreasure); + AddHylianTreasure(StringUtils.getPrettyItemString(Material.SAPLING), hylianTreasure); + AddHylianTreasure(StringUtils.getPrettyItemString(Material.DEAD_BUSH), hylianTreasure); + continue; + } + if (dropper.equals("Flowers")) { + for (int i = 0; i < 9; i++) { + AddHylianTreasure(StringUtils.getFriendlyConfigMaterialDataString(new MaterialData(Material.RED_ROSE, (byte) i)), hylianTreasure); + } + AddHylianTreasure(StringUtils.getPrettyItemString(Material.YELLOW_FLOWER), hylianTreasure); + continue; + } + if (dropper.equals("Pots")) { + for (int i = 0; i < 14; i++) { + AddHylianTreasure(StringUtils.getFriendlyConfigMaterialDataString(new MaterialData(Material.FLOWER_POT, (byte) i)), hylianTreasure); + } + continue; + } + AddHylianTreasure(dropper, hylianTreasure); } } } } } + private void AddHylianTreasure(String dropper, HylianTreasure treasure) { + if (!hylianMap.containsKey(dropper)) + hylianMap.put(dropper, new ArrayList()); + hylianMap.get(dropper).add(treasure); + } + private void loadEnchantments() { for (Rarity rarity : Rarity.values()) { if (rarity == Rarity.TRAP || rarity == Rarity.RECORD) { diff --git a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java index 2e11a35af..1ee27761f 100644 --- a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java +++ b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java @@ -207,32 +207,10 @@ public class HerbalismManager extends SkillManager { return false; } - List treasures; - - switch (blockState.getType()) { - case DEAD_BUSH: - case LONG_GRASS: - case SAPLING: - treasures = TreasureConfig.getInstance().hylianFromBushes; - break; - - case RED_ROSE: - case YELLOW_FLOWER: - if (mcMMO.getPlaceStore().isTrue(blockState)) { - mcMMO.getPlaceStore().setFalse(blockState); - return false; - } - - treasures = TreasureConfig.getInstance().hylianFromFlowers; - break; - - case FLOWER_POT: - treasures = TreasureConfig.getInstance().hylianFromPots; - break; - - default: - return false; - } + String friendly = StringUtils.getFriendlyConfigMaterialDataString(blockState.getData()); + if (!TreasureConfig.getInstance().hylianMap.containsKey(friendly)) + return false; + List treasures = TreasureConfig.getInstance().hylianMap.get(friendly); Player player = getPlayer();