mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 22:56:45 +01:00
Added ability to configure drops from Shake in treasures.yml
This commit is contained in:
parent
5ad7716137
commit
875091a1ce
@ -8,6 +8,7 @@ Key:
|
|||||||
- Removal
|
- Removal
|
||||||
|
|
||||||
Version 1.4.06-dev
|
Version 1.4.06-dev
|
||||||
|
+ Added ability to configure drops from Shake in treasures.yml
|
||||||
+ Added "Master Angler" ability to Fishing.
|
+ Added "Master Angler" ability to Fishing.
|
||||||
+ Added health display for mobs during combat.
|
+ Added health display for mobs during combat.
|
||||||
+ Added new API method to McMMOPlayerLevelUpEvent to set levels gained
|
+ Added new API method to McMMOPlayerLevelUpEvent to set levels gained
|
||||||
|
@ -9,13 +9,17 @@ import java.util.Set;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.material.MaterialData;
|
import org.bukkit.material.MaterialData;
|
||||||
|
import org.bukkit.potion.Potion;
|
||||||
|
import org.bukkit.potion.PotionType;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.ConfigLoader;
|
import com.gmail.nossr50.config.ConfigLoader;
|
||||||
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
|
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
|
||||||
import com.gmail.nossr50.datatypes.treasure.FishingTreasure;
|
import com.gmail.nossr50.datatypes.treasure.FishingTreasure;
|
||||||
import com.gmail.nossr50.datatypes.treasure.HylianTreasure;
|
import com.gmail.nossr50.datatypes.treasure.HylianTreasure;
|
||||||
|
import com.gmail.nossr50.datatypes.treasure.ShakeTreasure;
|
||||||
import com.gmail.nossr50.datatypes.treasure.Treasure;
|
import com.gmail.nossr50.datatypes.treasure.Treasure;
|
||||||
|
|
||||||
public class TreasureConfig extends ConfigLoader {
|
public class TreasureConfig extends ConfigLoader {
|
||||||
@ -33,6 +37,27 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
public List<HylianTreasure> hylianFromFlowers = new ArrayList<HylianTreasure>();
|
public List<HylianTreasure> hylianFromFlowers = new ArrayList<HylianTreasure>();
|
||||||
public List<HylianTreasure> hylianFromPots = 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> 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> shakeFromSheep = 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> shakeFromZombie = new ArrayList<ShakeTreasure>();
|
||||||
|
|
||||||
public List<FishingTreasure> fishingRewards = new ArrayList<FishingTreasure>();
|
public List<FishingTreasure> fishingRewards = new ArrayList<FishingTreasure>();
|
||||||
|
|
||||||
private TreasureConfig() {
|
private TreasureConfig() {
|
||||||
@ -128,15 +153,32 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
reason.add("Invalid Drop_Level: " + dropLevel);
|
reason.add("Invalid Drop_Level: " + dropLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Potions
|
||||||
|
*/
|
||||||
|
|
||||||
|
ItemStack item = null;
|
||||||
|
|
||||||
|
if (config.contains("Treasures." + treasureName + ".Potion_Type")) {
|
||||||
|
String potionType = config.getString("Treasures." + treasureName + ".Potion_Type");
|
||||||
|
try {
|
||||||
|
item = new Potion(PotionType.valueOf(potionType.toUpperCase())).toItemStack(amount);
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException ex) {
|
||||||
|
reason.add("Invalid Potion_Type: " + potionType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
item = (new MaterialData(id, (byte) data)).toItemStack(amount);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Drops From & Max Level
|
* Drops From & Max Level
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ItemStack item = (new MaterialData(id, (byte) data)).toItemStack(amount);
|
|
||||||
|
|
||||||
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) {
|
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) {
|
||||||
if (config.getConfigurationSection("Treasures." + treasureName + ".Drops_From").getKeys(false).size() != 1) {
|
if (config.getConfigurationSection("Treasures." + treasureName + ".Drops_From").getKeys(false).size() != 1) {
|
||||||
reason.add("Fishing drops cannot also be excavation drops");
|
reason.add("This can only be a fishing drop.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!config.contains("Treasures." + treasureName + ".Max_Level")) {
|
if (!config.contains("Treasures." + treasureName + ".Max_Level")) {
|
||||||
@ -150,6 +192,30 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
treasures.put(treasureName, fTreasure);
|
treasures.put(treasureName, fTreasure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (config.getBoolean("Treasures." + treasureName + "Drops_From.Shake", false)) {
|
||||||
|
if (config.getConfigurationSection("Treasures." + treasureName + ".Drops_From").getKeys(false).size() != 1) {
|
||||||
|
reason.add("This can only be a shake drop.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!config.contains("Treasures." + treasureName + ".Mob")) {
|
||||||
|
reason.add("Missing Mob");
|
||||||
|
}
|
||||||
|
|
||||||
|
String mobType = config.getString("Treasures." + treasureName + ".Mob");
|
||||||
|
EntityType mob = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
mob = EntityType.valueOf(mobType.toUpperCase().trim());
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException ex){
|
||||||
|
reason.add("Invalid Mob: " + mobType);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (noErrorsInTreasure(reason)) {
|
||||||
|
ShakeTreasure sTreasure = new ShakeTreasure(item, xp, dropChance, dropLevel, mob);
|
||||||
|
treasures.put(treasureName, sTreasure);
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
ExcavationTreasure eTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel);
|
ExcavationTreasure eTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel);
|
||||||
HylianTreasure hTreasure = new HylianTreasure(item, xp, dropChance, dropLevel);
|
HylianTreasure hTreasure = new HylianTreasure(item, xp, dropChance, dropLevel);
|
||||||
@ -195,7 +261,11 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) {
|
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) {
|
||||||
reason.add("Excavation drops cannot also be fishing drops");
|
reason.add("This cannot also be a fishing drop.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Shake", false)) {
|
||||||
|
reason.add("This cannot also be a shake drop.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (noErrorsInTreasure(reason) && hTreasure.getDropsFrom() == (byte) 0x0) {
|
if (noErrorsInTreasure(reason) && hTreasure.getDropsFrom() == (byte) 0x0) {
|
||||||
@ -210,6 +280,7 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
List<String> excavationTreasures = config.getStringList("Excavation.Treasure");
|
List<String> excavationTreasures = config.getStringList("Excavation.Treasure");
|
||||||
List<String> fishingTreasures = config.getStringList("Fishing.Treasure");
|
List<String> fishingTreasures = config.getStringList("Fishing.Treasure");
|
||||||
List<String> hylianTreasures = config.getStringList("Hylian_Luck.Treasure");
|
List<String> hylianTreasures = config.getStringList("Hylian_Luck.Treasure");
|
||||||
|
List<String> shakeTreasures = config.getStringList("Shake.Treasure");
|
||||||
|
|
||||||
for (Entry<String, Treasure> nextEntry : treasures.entrySet()) {
|
for (Entry<String, Treasure> nextEntry : treasures.entrySet()) {
|
||||||
String treasureKey = nextEntry.getKey();
|
String treasureKey = nextEntry.getKey();
|
||||||
@ -222,6 +293,97 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
|
|
||||||
fishingRewards.add((FishingTreasure) treasure);
|
fishingRewards.add((FishingTreasure) treasure);
|
||||||
}
|
}
|
||||||
|
else if (treasure instanceof ShakeTreasure) {
|
||||||
|
if (shakeTreasures == null || !shakeTreasures.contains(treasureKey)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShakeTreasure e = (ShakeTreasure) treasure;
|
||||||
|
switch (e.getMob()) {
|
||||||
|
case BLAZE:
|
||||||
|
shakeFromBlaze.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CAVE_SPIDER:
|
||||||
|
shakeFromCaveSpider.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CHICKEN:
|
||||||
|
shakeFromChicken.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COW:
|
||||||
|
shakeFromCow.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CREEPER:
|
||||||
|
shakeFromCreeper.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENDERMAN:
|
||||||
|
shakeFromEnderman.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GHAST:
|
||||||
|
shakeFromGhast.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IRON_GOLEM:
|
||||||
|
shakeFromIronGolem.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MAGMA_CUBE:
|
||||||
|
shakeFromMagmaCube.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSHROOM_COW:
|
||||||
|
shakeFromMushroomCow.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PIG:
|
||||||
|
shakeFromPig.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PIG_ZOMBIE:
|
||||||
|
shakeFromPigZombie.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SHEEP:
|
||||||
|
shakeFromSheep.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SKELETON:
|
||||||
|
shakeFromSkeleton.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SLIME:
|
||||||
|
shakeFromSlime.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SPIDER:
|
||||||
|
shakeFromSpider.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SNOWMAN:
|
||||||
|
shakeFromSnowman.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SQUID:
|
||||||
|
shakeFromSquid.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WITCH:
|
||||||
|
shakeFromWitch.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ZOMBIE:
|
||||||
|
shakeFromZombie.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (treasure instanceof HylianTreasure) {
|
else if (treasure instanceof HylianTreasure) {
|
||||||
if (hylianTreasures == null || !hylianTreasures.contains(treasureKey)) {
|
if (hylianTreasures == null || !hylianTreasures.contains(treasureKey)) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.gmail.nossr50.datatypes.treasure;
|
||||||
|
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class ShakeTreasure extends Treasure {
|
||||||
|
private EntityType mob;
|
||||||
|
|
||||||
|
public ShakeTreasure(ItemStack drop, int xp, double dropChance, int dropLevel, EntityType mob) {
|
||||||
|
super(drop, xp, dropChance, dropLevel);
|
||||||
|
this.mob = mob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityType getMob() {
|
||||||
|
return mob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMob(EntityType mob) {
|
||||||
|
this.mob = mob;
|
||||||
|
}
|
||||||
|
}
|
@ -1,16 +1,13 @@
|
|||||||
package com.gmail.nossr50.skills.fishing;
|
package com.gmail.nossr50.skills.fishing;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import org.bukkit.DyeColor;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.inventory.ItemStack;
|
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.AdvancedConfig;
|
||||||
|
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||||
|
import com.gmail.nossr50.datatypes.treasure.ShakeTreasure;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
|
|
||||||
public final class Fishing {
|
public final class Fishing {
|
||||||
@ -66,115 +63,70 @@ public final class Fishing {
|
|||||||
* @param target Targeted entity
|
* @param target Targeted entity
|
||||||
* @param possibleDrops List of ItemStack that can be dropped
|
* @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()) {
|
switch (target.getType()) {
|
||||||
case BLAZE:
|
case BLAZE:
|
||||||
possibleDrops.put(new ItemStack(Material.BLAZE_ROD), 100);
|
return TreasureConfig.getInstance().shakeFromBlaze;
|
||||||
break;
|
|
||||||
|
|
||||||
case CAVE_SPIDER:
|
case CAVE_SPIDER:
|
||||||
case SPIDER:
|
return TreasureConfig.getInstance().shakeFromCaveSpider;
|
||||||
possibleDrops.put(new ItemStack(Material.SPIDER_EYE), 50);
|
|
||||||
possibleDrops.put(new ItemStack(Material.STRING), 50);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CHICKEN:
|
case CHICKEN:
|
||||||
possibleDrops.put(new ItemStack(Material.FEATHER), 34);
|
return TreasureConfig.getInstance().shakeFromChicken;
|
||||||
possibleDrops.put(new ItemStack(Material.RAW_CHICKEN), 33);
|
|
||||||
possibleDrops.put(new ItemStack(Material.EGG), 33);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case COW:
|
case COW:
|
||||||
possibleDrops.put(new ItemStack(Material.MILK_BUCKET), 2);
|
return TreasureConfig.getInstance().shakeFromCow;
|
||||||
possibleDrops.put(new ItemStack(Material.LEATHER), 49);
|
|
||||||
possibleDrops.put(new ItemStack(Material.RAW_BEEF), 49);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CREEPER:
|
case CREEPER:
|
||||||
possibleDrops.put(new ItemStack(Material.SKULL_ITEM, 1, (short) 4), 1);
|
return TreasureConfig.getInstance().shakeFromCreeper;
|
||||||
possibleDrops.put(new ItemStack(Material.SULPHUR), 99);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ENDERMAN:
|
case ENDERMAN:
|
||||||
possibleDrops.put(new ItemStack(Material.ENDER_PEARL), 100);
|
return TreasureConfig.getInstance().shakeFromEnderman;
|
||||||
break;
|
|
||||||
|
|
||||||
case GHAST:
|
case GHAST:
|
||||||
possibleDrops.put(new ItemStack(Material.SULPHUR), 50);
|
return TreasureConfig.getInstance().shakeFromGhast;
|
||||||
possibleDrops.put(new ItemStack(Material.GHAST_TEAR), 50);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IRON_GOLEM:
|
case IRON_GOLEM:
|
||||||
possibleDrops.put(new ItemStack(Material.PUMPKIN), 3);
|
return TreasureConfig.getInstance().shakeFromIronGolem;
|
||||||
possibleDrops.put(new ItemStack(Material.IRON_INGOT), 12);
|
|
||||||
possibleDrops.put(new ItemStack(Material.RED_ROSE), 85);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MAGMA_CUBE:
|
case MAGMA_CUBE:
|
||||||
possibleDrops.put(new ItemStack(Material.MAGMA_CREAM), 100);
|
return TreasureConfig.getInstance().shakeFromMagmaCube;
|
||||||
break;
|
|
||||||
|
|
||||||
case MUSHROOM_COW:
|
case MUSHROOM_COW:
|
||||||
possibleDrops.put(new ItemStack(Material.MILK_BUCKET), 5);
|
return TreasureConfig.getInstance().shakeFromMushroomCow;
|
||||||
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;
|
|
||||||
|
|
||||||
case PIG:
|
case PIG:
|
||||||
possibleDrops.put(new ItemStack(Material.PORK), 100);
|
return TreasureConfig.getInstance().shakeFromPig;
|
||||||
break;
|
|
||||||
|
|
||||||
case PIG_ZOMBIE:
|
case PIG_ZOMBIE:
|
||||||
possibleDrops.put(new ItemStack(Material.ROTTEN_FLESH), 50);
|
return TreasureConfig.getInstance().shakeFromPigZombie;
|
||||||
possibleDrops.put(new ItemStack(Material.GOLD_NUGGET), 50);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SHEEP:
|
case SHEEP:
|
||||||
possibleDrops.put(new ItemStack(Material.WOOL, Misc.getRandom().nextInt(6) + 1), 100);
|
return TreasureConfig.getInstance().shakeFromSheep;
|
||||||
break;
|
|
||||||
|
|
||||||
case SKELETON:
|
case SKELETON:
|
||||||
possibleDrops.put(new ItemStack(Material.SKULL_ITEM, 1, (short) 0), 2);
|
return TreasureConfig.getInstance().shakeFromSkeleton;
|
||||||
possibleDrops.put(new ItemStack(Material.BONE), 49);
|
|
||||||
possibleDrops.put(new ItemStack(Material.ARROW, Misc.getRandom().nextInt(3) + 1), 49);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SLIME:
|
case SLIME:
|
||||||
possibleDrops.put(new ItemStack(Material.SLIME_BALL), 100);
|
return TreasureConfig.getInstance().shakeFromSlime;
|
||||||
break;
|
|
||||||
|
|
||||||
case SNOWMAN:
|
case SNOWMAN:
|
||||||
possibleDrops.put(new ItemStack(Material.PUMPKIN), 3);
|
return TreasureConfig.getInstance().shakeFromSnowman;
|
||||||
possibleDrops.put(new ItemStack(Material.SNOW_BALL, Misc.getRandom().nextInt(4) + 1), 97);
|
|
||||||
break;
|
case SPIDER:
|
||||||
|
return TreasureConfig.getInstance().shakeFromSpider;
|
||||||
|
|
||||||
case SQUID:
|
case SQUID:
|
||||||
possibleDrops.put(new ItemStack(Material.INK_SACK, 1, DyeColor.BLACK.getDyeData()), 100);
|
return TreasureConfig.getInstance().shakeFromSquid;
|
||||||
break;
|
|
||||||
|
|
||||||
case WITCH:
|
case WITCH:
|
||||||
possibleDrops.put(new Potion(PotionType.INSTANT_HEAL).toItemStack(1), 1);
|
return TreasureConfig.getInstance().shakeFromWitch;
|
||||||
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;
|
|
||||||
|
|
||||||
case ZOMBIE:
|
case ZOMBIE:
|
||||||
possibleDrops.put(new ItemStack(Material.SKULL_ITEM, 1, (short) 2), 2);
|
return TreasureConfig.getInstance().shakeFromZombie;
|
||||||
possibleDrops.put(new ItemStack(Material.ROTTEN_FLESH), 98);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,15 +136,15 @@ public final class Fishing {
|
|||||||
* @param possibleDrops List of ItemStack that can be dropped
|
* @param possibleDrops List of ItemStack that can be dropped
|
||||||
* @return Chosen ItemStack
|
* @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 dropProbability = Misc.getRandom().nextInt(100);
|
||||||
int cumulatedProbability = 0;
|
double cumulatedProbability = 0;
|
||||||
|
|
||||||
for (Entry<ItemStack, Integer> entry : possibleDrops.entrySet()) {
|
for (ShakeTreasure treasure : possibleDrops) {
|
||||||
cumulatedProbability += entry.getValue();
|
cumulatedProbability += treasure.getDropChance();
|
||||||
|
|
||||||
if (dropProbability < cumulatedProbability) {
|
if (dropProbability < cumulatedProbability) {
|
||||||
return entry.getKey();
|
return treasure.getDrop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,9 +2,7 @@ package com.gmail.nossr50.skills.fishing;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
@ -24,6 +22,7 @@ import com.gmail.nossr50.config.treasure.TreasureConfig;
|
|||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.datatypes.treasure.FishingTreasure;
|
import com.gmail.nossr50.datatypes.treasure.FishingTreasure;
|
||||||
|
import com.gmail.nossr50.datatypes.treasure.ShakeTreasure;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.skills.SkillManager;
|
import com.gmail.nossr50.skills.SkillManager;
|
||||||
import com.gmail.nossr50.skills.fishing.Fishing.Tier;
|
import com.gmail.nossr50.skills.fishing.Fishing.Tier;
|
||||||
@ -144,11 +143,9 @@ public class FishingManager extends SkillManager {
|
|||||||
*/
|
*/
|
||||||
public void shakeCheck(LivingEntity target) {
|
public void shakeCheck(LivingEntity target) {
|
||||||
if (getShakeProbability() > Misc.getRandom().nextInt(getActivationChance())) {
|
if (getShakeProbability() > Misc.getRandom().nextInt(getActivationChance())) {
|
||||||
Map<ItemStack, Integer> possibleDrops = new HashMap<ItemStack, Integer>();
|
List<ShakeTreasure> possibleDrops = Fishing.findPossibleDrops(target);
|
||||||
|
|
||||||
Fishing.findPossibleDrops(target, possibleDrops);
|
if (possibleDrops == null || possibleDrops.isEmpty()) {
|
||||||
|
|
||||||
if (possibleDrops.isEmpty()) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,6 +100,62 @@ Hylian_Luck:
|
|||||||
- Diamond_Gem
|
- Diamond_Gem
|
||||||
- Gold_Nuggets
|
- Gold_Nuggets
|
||||||
#
|
#
|
||||||
|
# Settings for Shake
|
||||||
|
###
|
||||||
|
Shake:
|
||||||
|
Treasure:
|
||||||
|
- Blaze_Blaze_Rod
|
||||||
|
- Cave_Spider_Cobweb
|
||||||
|
- Cave_Spider_Potion
|
||||||
|
- Cave_Spider_Spider_Eye
|
||||||
|
- Cave_Spider_String
|
||||||
|
- Spider_Spider_Eye
|
||||||
|
- Spider_String
|
||||||
|
- Chicken_Feather
|
||||||
|
- Chicken_Raw_Chicken
|
||||||
|
- Chicken_Egg
|
||||||
|
- Cow_Milk_Bucket
|
||||||
|
- Cow_Leather
|
||||||
|
- Cow_Raw_Beef
|
||||||
|
- Creeper_Skull
|
||||||
|
- Creeper_Sulphur
|
||||||
|
- Enderman_Ender_Pearl
|
||||||
|
- Ghast_Sulphur
|
||||||
|
- Ghast_Ghast_Tear
|
||||||
|
- Iron_Golem_Pumpkin
|
||||||
|
- Iron_Golem_Iron_Ingot
|
||||||
|
- Iron_Golem_Red_Rose
|
||||||
|
- Magma_Cube_Magma_Cream
|
||||||
|
- Mushroom_Cow_Milk_Bucket
|
||||||
|
- Mushroom_Cow_Mushroom_Soup
|
||||||
|
- Mushroom_Cow_Leather
|
||||||
|
- Mushroom_Cow_Raw_Beef
|
||||||
|
- Mushroom_Cow_Red_Mushroom
|
||||||
|
- Pig_Pork
|
||||||
|
- Pig_Zombie_Rotten_Flesh
|
||||||
|
- Pig_Zombie_Gold_Nugget
|
||||||
|
- Sheep_Wool
|
||||||
|
- Skeleton_Skull
|
||||||
|
- Skeleton_Bone
|
||||||
|
- Skeleton_Arrow
|
||||||
|
- Slime_Slime_Ball
|
||||||
|
- Snowman_Pumpkin
|
||||||
|
- Snowman_Snowball
|
||||||
|
- Squid_Ink_Sack
|
||||||
|
- Witch_Heal_Potion
|
||||||
|
- Witch_Fire_Potion
|
||||||
|
- Witch_Speed_Potion
|
||||||
|
- Witch_Glass_Bottle
|
||||||
|
- Witch_Glowstone_Dust
|
||||||
|
- Witch_Sulphur
|
||||||
|
- Witch_Redstone
|
||||||
|
- Witch_Spider_Eye
|
||||||
|
- Witch_Stick
|
||||||
|
- Witch_Sugar
|
||||||
|
- Witch_Potion
|
||||||
|
- Zombie_Skull
|
||||||
|
- Zombie_Rotten_Flesh
|
||||||
|
#
|
||||||
# Configuration to define Treasures
|
# Configuration to define Treasures
|
||||||
###
|
###
|
||||||
Treasures:
|
Treasures:
|
||||||
@ -969,3 +1025,517 @@ Treasures:
|
|||||||
Drop_Level: 0
|
Drop_Level: 0
|
||||||
Drops_From:
|
Drops_From:
|
||||||
Pots: true
|
Pots: true
|
||||||
|
Blaze_Blaze_Rod:
|
||||||
|
ID: 369
|
||||||
|
Mob: BLAZE
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 100.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Cave_Spider_Spider_Eye:
|
||||||
|
ID: 375
|
||||||
|
Mob: CAVE_SPIDER
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 49.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Cave_Spider_String:
|
||||||
|
ID: 287
|
||||||
|
Mob: CAVE_SPIDER
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 49.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Cave_Spider_Cobweb:
|
||||||
|
ID: 30
|
||||||
|
Mob: CAVE_SPIDER
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 1.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Cave_Spider_Potion:
|
||||||
|
ID: 373
|
||||||
|
Mob: CAVE_SPIDER
|
||||||
|
Potion_Type: POISON
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 1.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Spider_Spider_Eye:
|
||||||
|
ID: 375
|
||||||
|
Mob: SPIDER
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 50.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Spider_String:
|
||||||
|
ID: 287
|
||||||
|
Mob: SPIDER
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 50.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Chicken_Feather:
|
||||||
|
ID: 288
|
||||||
|
Mob: CHICKEN
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 33.3
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Chicken_Raw_Chicken:
|
||||||
|
ID: 365
|
||||||
|
Mob: CHICKEN
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 33.3
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Chicken_Egg:
|
||||||
|
ID: 344
|
||||||
|
Mob: CHICKEN
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 33.3
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Cow_Milk_Bucket:
|
||||||
|
ID: 335
|
||||||
|
Mob: COW
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 2.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Cow_Leather:
|
||||||
|
ID: 334
|
||||||
|
Mob: COW
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 49.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Cow_Raw_Beef:
|
||||||
|
ID: 363
|
||||||
|
Mob: COW
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 49.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Creeper_Skull:
|
||||||
|
ID: 397
|
||||||
|
Mob: CREEPER
|
||||||
|
Data: 4
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 1.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Creeper_Sulphur:
|
||||||
|
ID: 289
|
||||||
|
Mob: CREEPER
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 99.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Enderman_Ender_Pearl:
|
||||||
|
ID: 368
|
||||||
|
Mob: ENDERMAN
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 100.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Ghast_Sulphur:
|
||||||
|
ID: 289
|
||||||
|
Mob: GHAST
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 50.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Ghast_Ghast_Tear:
|
||||||
|
ID: 370
|
||||||
|
Mob: GHAST
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 50.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Iron_Golem_Pumpkin:
|
||||||
|
ID: 86
|
||||||
|
Mob: IRON_GOLEM
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 3.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Iron_Golem_Iron_Ingot:
|
||||||
|
ID: 265
|
||||||
|
Mob: IRON_GOLEM
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 12.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Iron_Golem_Red_Rose:
|
||||||
|
ID: 38
|
||||||
|
Mob: IRON_GOLEM
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 85.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Magma_Cube_Magma_Cream:
|
||||||
|
ID: 378
|
||||||
|
Mob: MAGMA_CUBE
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 100.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Mushroom_Cow_Milk_Bucket:
|
||||||
|
ID: 335
|
||||||
|
Mob: MUSHROOM_COW
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 5.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Mushroom_Cow_Mushroom_Soup:
|
||||||
|
ID: 282
|
||||||
|
Mob: MUSHROOM_COW
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 5.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Mushroom_Cow_Leather:
|
||||||
|
ID: 334
|
||||||
|
Mob: MUSHROOM_COW
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 30.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Mushroom_Cow_Raw_Beef:
|
||||||
|
ID: 363
|
||||||
|
Mob: MUSHROOM_COW
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 30.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Mushroom_Cow_Red_Mushroom:
|
||||||
|
ID: 40
|
||||||
|
Mob: MUSHROOM_COW
|
||||||
|
Data: 0
|
||||||
|
Amount: 2
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 30.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Pig_Pork:
|
||||||
|
ID: 319
|
||||||
|
Mob: PIG
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 100.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Pig_Zombie_Rotten_Flesh:
|
||||||
|
ID: 367
|
||||||
|
Mob: PIG_ZOMBIE
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 50.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Pig_Zombie_Gold_Nugget:
|
||||||
|
ID: 371
|
||||||
|
Mob: PIG_ZOMBIE
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 50.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Sheep_Wool:
|
||||||
|
ID: 35
|
||||||
|
Mob: SHEEP
|
||||||
|
Data: 0
|
||||||
|
Amount: 3
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 100.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Skeleton_Skull:
|
||||||
|
ID: 397
|
||||||
|
Mob: SKELETON
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 2.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Skeleton_Bone:
|
||||||
|
ID: 352
|
||||||
|
Mob: SKELETON
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 49.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Skeleton_Arrow:
|
||||||
|
ID: 262
|
||||||
|
Mob: SKELETON
|
||||||
|
Data: 0
|
||||||
|
Amount: 2
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 49.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Slime_Slime_Ball:
|
||||||
|
ID: 341
|
||||||
|
Mob: SLIME
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 100.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Snowman_Pumpkin:
|
||||||
|
ID: 86
|
||||||
|
Mob: SNOWMAN
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 3.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Snowman_Snowball:
|
||||||
|
ID: 341
|
||||||
|
Mob: SNOWMAN
|
||||||
|
Data: 0
|
||||||
|
Amount: 2
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 97.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Squid_Ink_Sack:
|
||||||
|
ID: 351
|
||||||
|
Mob: SQUID
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 100.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Heal_Potion:
|
||||||
|
ID: 373
|
||||||
|
Mob: WITCH
|
||||||
|
Potion_Type: INSTANT_HEAL
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 1.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Fire_Potion:
|
||||||
|
ID: 373
|
||||||
|
Mob: WITCH
|
||||||
|
Potion_Type: FIRE_RESISTANCE
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 1.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Speed_Potion:
|
||||||
|
ID: 373
|
||||||
|
Mob: WITCH
|
||||||
|
Potion_Type: SPEED
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 1.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Glass_Bottle:
|
||||||
|
ID: 374
|
||||||
|
Mob: WITCH
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 9.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Glowstone_Dust:
|
||||||
|
ID: 348
|
||||||
|
Mob: WITCH
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 13.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Sulphur:
|
||||||
|
ID: 289
|
||||||
|
Mob: WITCH
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 12.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Redstone:
|
||||||
|
ID: 331
|
||||||
|
Mob: WITCH
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 13.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Spider_Eye:
|
||||||
|
ID: 375
|
||||||
|
Mob: WITCH
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 12.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Stick:
|
||||||
|
ID: 380
|
||||||
|
Mob: WITCH
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 13.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Sugar:
|
||||||
|
ID: 353
|
||||||
|
Mob: WITCH
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 12.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Witch_Potion:
|
||||||
|
ID: 373
|
||||||
|
Mob: WITCH
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 13.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Zombie_Skull:
|
||||||
|
ID: 397
|
||||||
|
Mob: ZOMBIE
|
||||||
|
Data: 2
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 2.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
||||||
|
Zombie_Rotten_Flesh:
|
||||||
|
ID: 367
|
||||||
|
Mob: ZOMBIE
|
||||||
|
Data: 0
|
||||||
|
Amount: 1
|
||||||
|
XP: 0
|
||||||
|
Drop_Chance: 98.0
|
||||||
|
Drop_Level: 0
|
||||||
|
Drops_From:
|
||||||
|
Shake: true
|
Loading…
Reference in New Issue
Block a user