Просмотр исходного кода

Add more configuration to shake treasures

t00thpick1 8 лет назад
Родитель
Сommit
ee02a19e9a

+ 9 - 87
src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java

@@ -36,33 +36,7 @@ public class TreasureConfig extends ConfigLoader {
     public List<HylianTreasure> hylianFromFlowers = new ArrayList<HylianTreasure>();
     public List<HylianTreasure> hylianFromPots    = new ArrayList<HylianTreasure>();
 
-    public List<ShakeTreasure> shakeFromBlaze          = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromCaveSpider     = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromSpider         = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromChicken        = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromCow            = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromCreeper        = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromEnderman       = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromGhast          = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromHorse          = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromIronGolem      = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromMagmaCube      = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromMushroomCow    = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromPig            = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromPigZombie      = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromPlayer         = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromSheep          = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromShulker        = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromSkeleton       = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromSlime          = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromSnowman        = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromSquid          = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromWitch          = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromWitherSkeleton = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromZombie         = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromRabbit         = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromElderGuardian  = new ArrayList<ShakeTreasure>();
-    public List<ShakeTreasure> shakeFromGuardian       = new ArrayList<ShakeTreasure>();
+    public HashMap<EntityType, List<ShakeTreasure>> shakeMap = new HashMap<EntityType, List<ShakeTreasure>>();
 
     public HashMap<Rarity, List<FishingTreasure>>     fishingRewards      = new HashMap<Rarity, List<FishingTreasure>>();
     public HashMap<Rarity, List<EnchantmentTreasure>> fishingEnchantments = new HashMap<Rarity, List<EnchantmentTreasure>>();
@@ -174,7 +148,9 @@ public class TreasureConfig extends ConfigLoader {
             	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
-                shakeFromPlayer.add(new ShakeTreasure(new ItemStack(Material.BED_BLOCK, 1, (byte) 0), 1, getInventoryStealDropChance(), getInventoryStealDropLevel()));
+                if (!shakeMap.containsKey(EntityType.PLAYER))
+                    shakeMap.put(EntityType.PLAYER, new ArrayList<ShakeTreasure>());
+                shakeMap.get(EntityType.PLAYER).add(new ShakeTreasure(new ItemStack(Material.BED_BLOCK, 1, (byte) 0), 1, getInventoryStealDropChance(), getInventoryStealDropLevel()));
                 continue;
             } else {
                 material = Material.matchMaterial(materialName);
@@ -316,62 +292,11 @@ public class TreasureConfig extends ConfigLoader {
                     fishingRewards.get(rarity).add(new FishingTreasure(item, xp));
                 } else if (isShake) {
                     ShakeTreasure shakeTreasure = new ShakeTreasure(item, xp, dropChance, dropLevel);
-
-                    if (type.equals("Shake.BLAZE")) {
-                        shakeFromBlaze.add(shakeTreasure);
-                    } else if (type.equals("Shake.CAVE_SPIDER")) {
-                        shakeFromCaveSpider.add(shakeTreasure);
-                    } else if (type.equals("Shake.CHICKEN")) {
-                        shakeFromChicken.add(shakeTreasure);
-                    } else if (type.equals("Shake.COW")) {
-                        shakeFromCow.add(shakeTreasure);
-                    } else if (type.equals("Shake.CREEPER")) {
-                        shakeFromCreeper.add(shakeTreasure);
-                    } else if (type.equals("Shake.ENDERMAN")) {
-                        shakeFromEnderman.add(shakeTreasure);
-                    } else if (type.equals("Shake.GHAST")) {
-                        shakeFromGhast.add(shakeTreasure);
-                    } else if (type.equals("Shake.HORSE")) {
-                        shakeFromHorse.add(shakeTreasure);
-                    } else if (type.equals("Shake.IRON_GOLEM")) {
-                        shakeFromIronGolem.add(shakeTreasure);
-                    } else if (type.equals("Shake.MAGMA_CUBE")) {
-                        shakeFromMagmaCube.add(shakeTreasure);
-                    } else if (type.equals("Shake.MUSHROOM_COW")) {
-                        shakeFromMushroomCow.add(shakeTreasure);
-                    } else if (type.equals("Shake.PIG")) {
-                        shakeFromPig.add(shakeTreasure);
-                    } else if (type.equals("Shake.PIG_ZOMBIE")) {
-                        shakeFromPigZombie.add(shakeTreasure);
-                    } else if (type.equals("Shake.PLAYER")) {
-                        shakeFromPlayer.add(shakeTreasure);
-                    } else if (type.equals("Shake.SHEEP")) {
-                        shakeFromSheep.add(shakeTreasure);
-                    } else if (type.equals("Shake.SHULKER")) {
-                        shakeFromShulker.add(shakeTreasure);
-                    } else if (type.equals("Shake.SKELETON")) {
-                        shakeFromSkeleton.add(shakeTreasure);
-                    } else if (type.equals("Shake.SLIME")) {
-                        shakeFromSlime.add(shakeTreasure);
-                    } else if (type.equals("Shake.SPIDER")) {
-                        shakeFromSpider.add(shakeTreasure);
-                    } else if (type.equals("Shake.SNOWMAN")) {
-                        shakeFromSnowman.add(shakeTreasure);
-                    } else if (type.equals("Shake.SQUID")) {
-                        shakeFromSquid.add(shakeTreasure);
-                    } else if (type.equals("Shake.WITCH")) {
-                        shakeFromWitch.add(shakeTreasure);
-                    } else if (type.equals("Shake.WITHER_SKELETON")) {
-                        shakeFromWitherSkeleton.add(shakeTreasure);
-                    } else if (type.equals("Shake.ZOMBIE")) {
-                        shakeFromZombie.add(shakeTreasure);
-                    } else if (type.equals("Shake.RABBIT")) {
-                        shakeFromRabbit.add(shakeTreasure);
-                    } else if (type.equals("Shake.GUARDIAN")) {
-                        shakeFromGuardian.add(shakeTreasure);
-                    } else if (type.equals("Shake.ELDER_GUARDIAN")) {
-                        shakeFromElderGuardian.add(shakeTreasure);
-                    }
+                    
+                    EntityType entityType = EntityType.valueOf(type.substring(6));
+                    if (!shakeMap.containsKey(entityType))
+                        shakeMap.put(entityType, new ArrayList<ShakeTreasure>());
+                    shakeMap.get(entityType).add(shakeTreasure);
                 } else if (isExcavation) {
                     ExcavationTreasure excavationTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel);
                     List<String> dropList = config.getStringList(type + "." + treasureName + ".Drops_From");
@@ -401,9 +326,6 @@ public class TreasureConfig extends ConfigLoader {
                 }
             }
         }
-        // Fallthrough if not specified
-        if (shakeFromElderGuardian.isEmpty())
-            shakeFromElderGuardian = shakeFromGuardian;
     }
 
     private void loadEnchantments() {

+ 10 - 90
src/main/java/com/gmail/nossr50/skills/fishing/Fishing.java

@@ -18,16 +18,10 @@ import com.gmail.nossr50.util.Misc;
 import com.gmail.nossr50.util.adapter.BiomeAdapter;
 
 public final class Fishing {
+
     // The order of the values is extremely important, a few methods depend on it to work properly
     public enum Tier {
-        EIGHT(8),
-        SEVEN(7),
-        SIX(6),
-        FIVE(5),
-        FOUR(4),
-        THREE(3),
-        TWO(2),
-        ONE(1);
+        EIGHT(8), SEVEN(7), SIX(6), FIVE(5), FOUR(4), THREE(3), TWO(2), ONE(1);
 
         int numerical;
 
@@ -59,103 +53,29 @@ public final class Fishing {
     public static int fishermansDietMaxLevel   = fishermansDietRankLevel1 * 5;
 
     public static Set<Biome> masterAnglerBiomes = BiomeAdapter.WATER_BIOMES;
-    public static Set<Biome> iceFishingBiomes = BiomeAdapter.ICE_BIOMES;
+    public static Set<Biome> iceFishingBiomes   = BiomeAdapter.ICE_BIOMES;
 
     private Fishing() {}
 
     /**
      * Finds the possible drops of an entity
      *
-     * @param target Targeted entity
+     * @param target
+     *            Targeted entity
      * @return possibleDrops List of ItemStack that can be dropped
      */
     protected static List<ShakeTreasure> findPossibleDrops(LivingEntity target) {
-        switch (target.getType()) {
-            case BLAZE:
-                return TreasureConfig.getInstance().shakeFromBlaze;
-
-            case CAVE_SPIDER:
-                return TreasureConfig.getInstance().shakeFromCaveSpider;
-
-            case CHICKEN:
-                return TreasureConfig.getInstance().shakeFromChicken;
-
-            case COW:
-                return TreasureConfig.getInstance().shakeFromCow;
-
-            case CREEPER:
-                return TreasureConfig.getInstance().shakeFromCreeper;
-
-            case ENDERMAN:
-                return TreasureConfig.getInstance().shakeFromEnderman;
-
-            case GHAST:
-                return TreasureConfig.getInstance().shakeFromGhast;
-
-            case IRON_GOLEM:
-                return TreasureConfig.getInstance().shakeFromIronGolem;
-
-            case MAGMA_CUBE:
-                return TreasureConfig.getInstance().shakeFromMagmaCube;
-
-            case MUSHROOM_COW:
-                return TreasureConfig.getInstance().shakeFromMushroomCow;
-
-            case PIG:
-                return TreasureConfig.getInstance().shakeFromPig;
-
-            case PIG_ZOMBIE:
-                return TreasureConfig.getInstance().shakeFromPigZombie;
-
-            case PLAYER:
-                return TreasureConfig.getInstance().shakeFromPlayer;
+        if (TreasureConfig.getInstance().shakeMap.containsKey(target.getType()))
+            return TreasureConfig.getInstance().shakeMap.get(target.getType());
 
-            case SHEEP:
-                return TreasureConfig.getInstance().shakeFromSheep;
-
-            case SHULKER:
-                return TreasureConfig.getInstance().shakeFromShulker;
-
-            case SKELETON:
-                return TreasureConfig.getInstance().shakeFromSkeleton;
-
-            case SLIME:
-                return TreasureConfig.getInstance().shakeFromSlime;
-
-            case SNOWMAN:
-                return TreasureConfig.getInstance().shakeFromSnowman;
-
-            case SPIDER:
-                return TreasureConfig.getInstance().shakeFromSpider;
-
-            case SQUID:
-                return TreasureConfig.getInstance().shakeFromSquid;
-
-            case WITCH:
-                return TreasureConfig.getInstance().shakeFromWitch;
-            case WITHER_SKELETON:
-            	return TreasureConfig.getInstance().shakeFromWitherSkeleton;
-
-            case ZOMBIE:
-                return TreasureConfig.getInstance().shakeFromZombie;
-
-            case RABBIT:
-                return TreasureConfig.getInstance().shakeFromRabbit;
-
-            case GUARDIAN:
-                if (((Guardian) target).isElder())
-                    return TreasureConfig.getInstance().shakeFromElderGuardian;
-                return TreasureConfig.getInstance().shakeFromGuardian;
-
-            default:
-                return null;
-        }
+        return null;
     }
 
     /**
      * Randomly chooses a drop among the list
      *
-     * @param possibleDrops List of ItemStack that can be dropped
+     * @param possibleDrops
+     *            List of ItemStack that can be dropped
      * @return Chosen ItemStack
      */
     protected static ItemStack chooseDrop(List<ShakeTreasure> possibleDrops) {