|
@@ -1,16 +1,13 @@
|
|
|
package com.gmail.nossr50.skills.fishing;
|
|
|
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Map.Entry;
|
|
|
+import java.util.List;
|
|
|
|
|
|
-import org.bukkit.DyeColor;
|
|
|
-import org.bukkit.Material;
|
|
|
import org.bukkit.entity.LivingEntity;
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
-import org.bukkit.potion.Potion;
|
|
|
-import org.bukkit.potion.PotionType;
|
|
|
|
|
|
import com.gmail.nossr50.config.AdvancedConfig;
|
|
|
+import com.gmail.nossr50.config.treasure.TreasureConfig;
|
|
|
+import com.gmail.nossr50.datatypes.treasure.ShakeTreasure;
|
|
|
import com.gmail.nossr50.util.Misc;
|
|
|
|
|
|
public final class Fishing {
|
|
@@ -66,115 +63,70 @@ public final class Fishing {
|
|
|
* @param target Targeted entity
|
|
|
* @param possibleDrops List of ItemStack that can be dropped
|
|
|
*/
|
|
|
- protected static void findPossibleDrops(LivingEntity target, Map<ItemStack, Integer> possibleDrops) {
|
|
|
+ protected static List<ShakeTreasure> findPossibleDrops(LivingEntity target) {
|
|
|
switch (target.getType()) {
|
|
|
case BLAZE:
|
|
|
- possibleDrops.put(new ItemStack(Material.BLAZE_ROD), 100);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromBlaze;
|
|
|
|
|
|
case CAVE_SPIDER:
|
|
|
- case SPIDER:
|
|
|
- possibleDrops.put(new ItemStack(Material.SPIDER_EYE), 50);
|
|
|
- possibleDrops.put(new ItemStack(Material.STRING), 50);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromCaveSpider;
|
|
|
|
|
|
case CHICKEN:
|
|
|
- possibleDrops.put(new ItemStack(Material.FEATHER), 34);
|
|
|
- possibleDrops.put(new ItemStack(Material.RAW_CHICKEN), 33);
|
|
|
- possibleDrops.put(new ItemStack(Material.EGG), 33);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromChicken;
|
|
|
|
|
|
case COW:
|
|
|
- possibleDrops.put(new ItemStack(Material.MILK_BUCKET), 2);
|
|
|
- possibleDrops.put(new ItemStack(Material.LEATHER), 49);
|
|
|
- possibleDrops.put(new ItemStack(Material.RAW_BEEF), 49);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromCow;
|
|
|
|
|
|
case CREEPER:
|
|
|
- possibleDrops.put(new ItemStack(Material.SKULL_ITEM, 1, (short) 4), 1);
|
|
|
- possibleDrops.put(new ItemStack(Material.SULPHUR), 99);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromCreeper;
|
|
|
|
|
|
case ENDERMAN:
|
|
|
- possibleDrops.put(new ItemStack(Material.ENDER_PEARL), 100);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromEnderman;
|
|
|
|
|
|
case GHAST:
|
|
|
- possibleDrops.put(new ItemStack(Material.SULPHUR), 50);
|
|
|
- possibleDrops.put(new ItemStack(Material.GHAST_TEAR), 50);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromGhast;
|
|
|
|
|
|
case IRON_GOLEM:
|
|
|
- possibleDrops.put(new ItemStack(Material.PUMPKIN), 3);
|
|
|
- possibleDrops.put(new ItemStack(Material.IRON_INGOT), 12);
|
|
|
- possibleDrops.put(new ItemStack(Material.RED_ROSE), 85);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromIronGolem;
|
|
|
|
|
|
case MAGMA_CUBE:
|
|
|
- possibleDrops.put(new ItemStack(Material.MAGMA_CREAM), 100);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromMagmaCube;
|
|
|
|
|
|
case MUSHROOM_COW:
|
|
|
- possibleDrops.put(new ItemStack(Material.MILK_BUCKET), 5);
|
|
|
- possibleDrops.put(new ItemStack(Material.MUSHROOM_SOUP), 5);
|
|
|
- possibleDrops.put(new ItemStack(Material.LEATHER), 30);
|
|
|
- possibleDrops.put(new ItemStack(Material.RAW_BEEF), 30);
|
|
|
- possibleDrops.put(new ItemStack(Material.RED_MUSHROOM, Misc.getRandom().nextInt(3) + 1), 30);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromMushroomCow;
|
|
|
|
|
|
case PIG:
|
|
|
- possibleDrops.put(new ItemStack(Material.PORK), 100);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromPig;
|
|
|
|
|
|
case PIG_ZOMBIE:
|
|
|
- possibleDrops.put(new ItemStack(Material.ROTTEN_FLESH), 50);
|
|
|
- possibleDrops.put(new ItemStack(Material.GOLD_NUGGET), 50);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromPigZombie;
|
|
|
|
|
|
case SHEEP:
|
|
|
- possibleDrops.put(new ItemStack(Material.WOOL, Misc.getRandom().nextInt(6) + 1), 100);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromSheep;
|
|
|
|
|
|
case SKELETON:
|
|
|
- possibleDrops.put(new ItemStack(Material.SKULL_ITEM, 1, (short) 0), 2);
|
|
|
- possibleDrops.put(new ItemStack(Material.BONE), 49);
|
|
|
- possibleDrops.put(new ItemStack(Material.ARROW, Misc.getRandom().nextInt(3) + 1), 49);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromSkeleton;
|
|
|
|
|
|
case SLIME:
|
|
|
- possibleDrops.put(new ItemStack(Material.SLIME_BALL), 100);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromSlime;
|
|
|
|
|
|
case SNOWMAN:
|
|
|
- possibleDrops.put(new ItemStack(Material.PUMPKIN), 3);
|
|
|
- possibleDrops.put(new ItemStack(Material.SNOW_BALL, Misc.getRandom().nextInt(4) + 1), 97);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromSnowman;
|
|
|
+
|
|
|
+ case SPIDER:
|
|
|
+ return TreasureConfig.getInstance().shakeFromSpider;
|
|
|
|
|
|
case SQUID:
|
|
|
- possibleDrops.put(new ItemStack(Material.INK_SACK, 1, DyeColor.BLACK.getDyeData()), 100);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromSquid;
|
|
|
|
|
|
case WITCH:
|
|
|
- possibleDrops.put(new Potion(PotionType.INSTANT_HEAL).toItemStack(1), 1);
|
|
|
- possibleDrops.put(new Potion(PotionType.FIRE_RESISTANCE).toItemStack(1), 1);
|
|
|
- possibleDrops.put(new Potion(PotionType.SPEED).toItemStack(1), 1);
|
|
|
- possibleDrops.put(new ItemStack(Material.GLASS_BOTTLE), 9);
|
|
|
- possibleDrops.put(new ItemStack(Material.GLOWSTONE_DUST), 13);
|
|
|
- possibleDrops.put(new ItemStack(Material.SULPHUR), 12);
|
|
|
- possibleDrops.put(new ItemStack(Material.REDSTONE), 13);
|
|
|
- possibleDrops.put(new ItemStack(Material.SPIDER_EYE), 12);
|
|
|
- possibleDrops.put(new ItemStack(Material.STICK), 13);
|
|
|
- possibleDrops.put(new ItemStack(Material.SUGAR), 12);
|
|
|
- possibleDrops.put(new ItemStack(Material.POTION), 13);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromWitch;
|
|
|
|
|
|
case ZOMBIE:
|
|
|
- possibleDrops.put(new ItemStack(Material.SKULL_ITEM, 1, (short) 2), 2);
|
|
|
- possibleDrops.put(new ItemStack(Material.ROTTEN_FLESH), 98);
|
|
|
- break;
|
|
|
+ return TreasureConfig.getInstance().shakeFromZombie;
|
|
|
|
|
|
default:
|
|
|
- return;
|
|
|
+ return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -184,15 +136,15 @@ public final class Fishing {
|
|
|
* @param possibleDrops List of ItemStack that can be dropped
|
|
|
* @return Chosen ItemStack
|
|
|
*/
|
|
|
- protected static ItemStack chooseDrop(Map<ItemStack, Integer> possibleDrops) {
|
|
|
+ protected static ItemStack chooseDrop(List<ShakeTreasure> possibleDrops) {
|
|
|
int dropProbability = Misc.getRandom().nextInt(100);
|
|
|
- int cumulatedProbability = 0;
|
|
|
+ double cumulatedProbability = 0;
|
|
|
|
|
|
- for (Entry<ItemStack, Integer> entry : possibleDrops.entrySet()) {
|
|
|
- cumulatedProbability += entry.getValue();
|
|
|
+ for (ShakeTreasure treasure : possibleDrops) {
|
|
|
+ cumulatedProbability += treasure.getDropChance();
|
|
|
|
|
|
if (dropProbability < cumulatedProbability) {
|
|
|
- return entry.getKey();
|
|
|
+ return treasure.getDrop();
|
|
|
}
|
|
|
}
|
|
|
|