New Loot Tables implemented properly.

->Buffs and Debuff icons now show up properly for all monsters and
players when there are more than 5 levels of a buff applied.
->Added getActualCustomName(), getEntityName(), and getActionBarSuffix()
to API.
->Death marks can now only be applied when the Death Mark ability is off
cooldown.
->Death mark reset cooldown reduced from 1 second to 0.5 seconds.
->Fixed a bug where the Backstab noise would play for non-Slayer modes.
->Updated '/loot' command output.
->New Loot Tables implemented. All previous bugs regarding getting wrong
gear in the wrong modes have disappeared. Drops have been modernized.
dev
sigonasr2 9 years ago
parent fedf0343aa
commit 8b2aa239da
  1. BIN
      TwosideKeeper.jar
  2. 2
      src/plugin.yml
  3. 3
      src/sig/plugin/TwosideKeeper/CustomDamage.java
  4. 24
      src/sig/plugin/TwosideKeeper/Drops/GenericDrop.java
  5. 146
      src/sig/plugin/TwosideKeeper/Drops/SigDrop.java
  6. 149
      src/sig/plugin/TwosideKeeper/HelperStructures/Loot.java
  7. 254
      src/sig/plugin/TwosideKeeper/HelperStructures/MonsterDifficulty.java
  8. 6
      src/sig/plugin/TwosideKeeper/Logging/LootLogger.java
  9. 22
      src/sig/plugin/TwosideKeeper/TwosideKeeperAPI.java

Binary file not shown.

@ -1,6 +1,6 @@
name: TwosideKeeper name: TwosideKeeper
main: sig.plugin.TwosideKeeper.TwosideKeeper main: sig.plugin.TwosideKeeper.TwosideKeeper
version: 3.8.6a version: 3.8.6b
commands: commands:
money: money:
description: Tells the player the amount of money they are holding. description: Tells the player the amount of money they are holding.

@ -421,7 +421,8 @@ public class CustomDamage {
boolean applyDeathMark=false; boolean applyDeathMark=false;
if (ArtifactAbility.getEnchantmentLevel(ArtifactAbility.DEATHMARK, p.getEquipment().getItemInMainHand())>0) { if (ArtifactAbility.getEnchantmentLevel(ArtifactAbility.DEATHMARK, p.getEquipment().getItemInMainHand())>0 &&
pd.last_deathmark+GenericFunctions.GetModifiedCooldown(TwosideKeeper.DEATHMARK_COOLDOWN,p)<TwosideKeeper.getServerTickTime()) {
applyDeathMark=true; applyDeathMark=true;
} }

@ -1,24 +0,0 @@
package sig.plugin.TwosideKeeper.Drops;
import org.bukkit.inventory.ItemStack;
import aPlugin.Drop;
public class GenericDrop extends Drop{
ItemStack item;
short data;
public GenericDrop(int amount, int weight, String description, ItemStack item, short data) {
super(amount, weight, description);
this.item=item;
this.data=data;
}
@Override
public ItemStack getItemStack() {
this.item.setDurability(data);
return this.item;
}
}

@ -0,0 +1,146 @@
package sig.plugin.TwosideKeeper.Drops;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import aPlugin.Drop;
import sig.plugin.TwosideKeeper.TwosideKeeper;
import sig.plugin.TwosideKeeper.HelperStructures.ItemSet;
import sig.plugin.TwosideKeeper.HelperStructures.Loot;
import sig.plugin.TwosideKeeper.HelperStructures.MonsterDifficulty;
import sig.plugin.TwosideKeeper.HelperStructures.PlayerMode;
public class SigDrop extends Drop{
final public static int ARMOR=0;
final public static int WEAPON=1;
final public static int TOOL=2;
final public static boolean HARDENED=true;
final public static boolean NONHARDENED=false;
final public static boolean SET=true;
final public static boolean NONSET=false;
boolean isHardened; //If set to false, it has no breaks remaining.
boolean isSet; //If set to false, it's non-set.
int isWeapon; //0: Armor, 1: Weapon, 2: Tool
MonsterDifficulty diff;
public SigDrop(int amount, int weight, String description, boolean isHardened, boolean isSet, int isWeapon, MonsterDifficulty diff) {
super(amount, weight, description);
this.isHardened=isHardened;
this.isSet=isSet;
this.isWeapon=isWeapon;
this.diff=diff;
}
@Override
public ItemStack getItemStack(Player p) {
ItemStack item;
String toolprefix = "";
String armorprefix = "";
String armorsuffix = "";
String toolsuffix = "";
if (Math.random()<=0.33) {
armorsuffix="BOOTS";
} else
if (Math.random()<=0.33) {
armorsuffix="HELMET";
} else
if (Math.random()<=0.33) {
armorsuffix="LEGGINGS";
} else
{
armorsuffix="CHESTPLATE";
}
if (Math.random()<=0.33) {
toolsuffix="HOE";
} else
if (Math.random()<=0.33) {
toolsuffix="SPADE";
} else
if (Math.random()<=0.33) {
toolsuffix="PICKAXE";
} else
{
toolsuffix="AXE";
}
switch (diff) {
case NORMAL:{ //We are stone/wood tier.
if (Math.random()<=0.3) {
toolprefix = "WOOD";
armorprefix = "LEATHER";
} else {
toolprefix = "STONE";
armorprefix = "IRON";
}
}break;
case DANGEROUS:{
toolprefix = "IRON";
armorprefix = "DIAMOND";
}break;
case DEADLY:{
if (Math.random()<=0.3) {
toolprefix = "DIAMOND";
} else {
toolprefix = "IRON";
}
armorprefix = "GOLD";
}break;
case HELLFIRE:{
if (Math.random()<=0.8) {
toolprefix = "DIAMOND";
} else {
toolprefix = "IRON";
}
armorprefix = "GOLD";
}break;
case END:{
toolprefix = "DIAMOND";
armorprefix = "GOLD";
}break;
}
switch (isWeapon) {
case ARMOR: {
item = new ItemStack(Material.valueOf(armorprefix+"_"+armorsuffix));
if (isSet) {
ItemSet set = MonsterDifficulty.PickAnItemSet(PlayerMode.getPlayerMode(p)); //This is the set we have to generate.
//Turn it into the appropriate piece if necessary.
item = MonsterDifficulty.ConvertSetPieceIfNecessary(item, set);
item = Loot.GenerateSetPiece(item, set, isHardened, 0);
} else {
item = Loot.GenerateMegaPiece(item.getType(), isHardened);
}
}break;
case WEAPON: {
item = new ItemStack(Material.valueOf(toolprefix+"_SWORD"));
if (isSet) {
ItemSet set = MonsterDifficulty.PickAnItemSet(PlayerMode.getPlayerMode(p)); //This is the set we have to generate.
//Turn it into the appropriate piece if necessary.
item = MonsterDifficulty.ConvertSetPieceIfNecessary(item, set);
item = Loot.GenerateSetPiece(item, set, isHardened, 0);
} else {
item = Loot.GenerateMegaPiece(item.getType(), isHardened);
}
}break;
case TOOL: {
item = new ItemStack(Material.valueOf(toolprefix+"_"+toolsuffix));
item = Loot.GenerateMegaPiece(item.getType(), isHardened);
}break;
default:{
TwosideKeeper.log("Something went terrible wrong generating the item! DIRT is being returned! Check your switch statement for 'isWeapon'.", 0);
item = new ItemStack(Material.DIRT);
}
}
return item;
}
@Override
public ItemStack getItemStack() {
TwosideKeeper.log("Something went terribly wrong with getItemStack() call. Check to make sure you are using getSingleDrop(Player) and not getSingleDrop()!!!", 0);
return null;
}
}

@ -18,6 +18,7 @@ import aPlugin.DropItem;
import aPlugin.DropMaterial; import aPlugin.DropMaterial;
import sig.plugin.TwosideKeeper.Artifact; import sig.plugin.TwosideKeeper.Artifact;
import sig.plugin.TwosideKeeper.TwosideKeeper; import sig.plugin.TwosideKeeper.TwosideKeeper;
import sig.plugin.TwosideKeeper.Drops.SigDrop;
import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions; import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions;
public class Loot { public class Loot {
@ -32,40 +33,58 @@ public class Loot {
public static void DefineLootChests() { public static void DefineLootChests() {
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.STONE_SWORD,8)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.STONE_SWORD,8));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.MYSTERIOUS_ESSENCE),11)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.MYSTERIOUS_ESSENCE),11));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.IRON_INGOT,1,3,19)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.COAL,1000));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.DIAMOND,1,3,18)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.IRON_INGOT,1,17));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.GOLD_NUGGET,1,3,17)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.DIAMOND,1,18));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.ENDER_PEARL,1,3,19)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.GOLD_NUGGET,1,17));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.ENDER_PEARL,1,8));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.ENDER_CHEST,19)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.ENDER_CHEST,19));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.ARTIFACT_CORE),4)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.ARTIFACT_CORE),4));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,18,"[Normal] Mega Armor",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.NORMAL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,19,"[Normal] Mega Set Armor",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.NORMAL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"[Normal] Mega Tool",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.NORMAL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"[Normal] Mega Weapon",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.NORMAL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,2,"[Normal] Mega Set Weapon",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.WEAPON,MonsterDifficulty.NORMAL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"[Normal] Hardened Mega Armor",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.NORMAL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,2,"[Normal] Hardened Mega Set Armor",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.NORMAL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"[Normal] Hardened Mega Tool",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.NORMAL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"[Normal] Hardened Mega Weapon",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.NORMAL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"[Normal] Hardened Mega Set Weapon",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.NORMAL));
/*//LOOT TEMPLATE. Cut Normal loot to 25% of this. Dangerous loot to 50% of this. Deadly to 75% of this. And Hellfires at 100% of this.
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,18,"Mega Armor",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.ARMOR));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,78,"Mega Set Armor",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.ARMOR));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,2,"Mega Tool",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.TOOL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,2,"Mega Weapon",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.WEAPON));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,6,"Mega Set Weapon",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.WEAPON));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"Hardened Mega Armor",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.ARMOR));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,8,"Hardened Mega Set Armor",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"Hardened Mega Tool",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.TOOL));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"Hardened Mega Weapon",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.WEAPON));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new SigDrop(1,1,"Hardened Mega Set Weapon",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR));
*/
/*
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.IRON_INGOT,78)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.IRON_INGOT,78));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.DIAMOND,78)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.DIAMOND,78));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.GOLD_NUGGET,78)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.GOLD_NUGGET,78));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.LEATHER_HELMET,78));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.LEATHER_CHESTPLATE,78));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.LEATHER_LEGGINGS,78));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.LEATHER_BOOTS,78));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.SKULL_ITEM,8));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.SKULL_ITEM,8)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.SKULL_ITEM,8));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.SKULL_ITEM,8)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.SKULL_ITEM,8));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.SKULL_ITEM,8)); aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.SKULL_ITEM,8));
aPlugin.API.Chests.LOOT_NORMAL.addDrop(new DropMaterial(Material.SKULL_ITEM,8));*/
aPlugin.API.Chests.LOOT_NORMAL.printDrops(); aPlugin.API.Chests.LOOT_NORMAL.printDrops();
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.IRON_INGOT,1000)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.IRON_INGOT,1000));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.IRON_BLOCK,78)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.IRON_BLOCK,78));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.IRON_CHESTPLATE,78)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,18,"[Dangerous] Mega Armor",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.IRON_LEGGINGS,78)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,78,"[Dangerous] Mega Set Armor",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.IRON_BOOTS,78)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,2,"[Dangerous] Mega Tool",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.IRON_HELMET,78)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,2,"[Dangerous] Mega Weapon",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.STONE_AXE,8)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,6,"[Dangerous] Mega Set Weapon",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.WEAPON,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.STONE_PICKAXE,8)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,1,"[Dangerous] Hardened Mega Armor",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.STONE_HOE,8)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,8,"[Dangerous] Hardened Mega Set Armor",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.STONE_SPADE,8)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,1,"[Dangerous] Hardened Mega Tool",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.FISHING_ROD,8)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,1,"[Dangerous] Hardened Mega Weapon",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.SKULL_ITEM,16)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new SigDrop(1,1,"[Dangerous] Hardened Mega Set Weapon",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.DANGEROUS));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.SKULL_ITEM,16));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.SKULL_ITEM,16));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropMaterial(Material.SKULL_ITEM,16));
aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.ANCIENT_CORE),4)); aPlugin.API.Chests.LOOT_DANGEROUS.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.ANCIENT_CORE),4));
aPlugin.API.Chests.LOOT_DANGEROUS.printDrops(); aPlugin.API.Chests.LOOT_DANGEROUS.printDrops();
@ -76,22 +95,18 @@ public class Loot {
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.DIAMOND_BLOCK,78)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.DIAMOND_BLOCK,78));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.GOLD_INGOT,78)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.GOLD_INGOT,78));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.DIAMOND_SWORD,8)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.DIAMOND_SWORD,8));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.IRON_AXE,8)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,18,"[Deadly] Mega Armor",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.IRON_PICKAXE,8)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,78,"[Deadly] Mega Set Armor",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.IRON_HOE,8)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,2,"[Deadly] Mega Tool",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.IRON_SPADE,8)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,2,"[Deadly] Mega Weapon",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.DIAMOND_CHESTPLATE,78)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,6,"[Deadly] Mega Set Weapon",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.WEAPON,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.DIAMOND_LEGGINGS,78)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,1,"[Deadly] Hardened Mega Armor",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.DIAMOND_BOOTS,78)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,8,"[Deadly] Hardened Mega Set Armor",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.DIAMOND_HELMET,78)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,1,"[Deadly] Hardened Mega Tool",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.FISHING_ROD,8)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,1,"[Deadly] Hardened Mega Weapon",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.BOW,8)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new SigDrop(1,1,"[Deadly] Hardened Mega Set Weapon",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.DEADLY));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.SKULL_ITEM,32));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.SKULL_ITEM,32));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.SKULL_ITEM,32));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropMaterial(Material.SKULL_ITEM,32));
aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.LOST_CORE),4)); aPlugin.API.Chests.LOOT_DEADLY.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.LOST_CORE),4));
aPlugin.API.Chests.LOOT_DEADLY.printDrops(); aPlugin.API.Chests.LOOT_DEADLY.printDrops();
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.EMERALD,1,3,1000)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.EMERALD,1,3,1000));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND,1,3,1000)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND,1,3,1000));
@ -99,50 +114,30 @@ public class Loot {
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.EMERALD_BLOCK,78)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.EMERALD_BLOCK,78));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_BLOCK,1,2,78)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_BLOCK,1,2,78));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.GOLD_BLOCK,78)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.GOLD_BLOCK,78));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_SWORD,8)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,18,"[Hellfire] Mega Armor",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.GOLD_SWORD,8)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,78,"[Hellfire] Mega Set Armor",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_AXE,8)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,2,"[Hellfire] Mega Tool",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_PICKAXE,8)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,2,"[Hellfire] Mega Weapon",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_HOE,8)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,6,"[Hellfire] Mega Set Weapon",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.WEAPON,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_SPADE,8)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,1,"[Hellfire] Hardened Mega Armor",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.BOW,8)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,8,"[Hellfire] Hardened Mega Set Armor",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.FISHING_ROD,8)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,1,"[Hellfire] Hardened Mega Tool",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_CHESTPLATE,78)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,1,"[Hellfire] Hardened Mega Weapon",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_LEGGINGS,78)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new SigDrop(1,1,"[Hellfire] Hardened Mega Set Weapon",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.HELLFIRE));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_BOOTS,78));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.DIAMOND_HELMET,78));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.GOLD_CHESTPLATE,78));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.GOLD_LEGGINGS,78));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.GOLD_BOOTS,78));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.GOLD_HELMET,78));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.SKULL_ITEM,64));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.SKULL_ITEM,64));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.SKULL_ITEM,64));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropMaterial(Material.SKULL_ITEM,64));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.DIVINE_CORE),4)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.DIVINE_CORE),4));
aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropItem(TwosideKeeper.HUNTERS_COMPASS.getItemStack(),4)); aPlugin.API.Chests.LOOT_HELLFIRE.addDrop(new DropItem(TwosideKeeper.HUNTERS_COMPASS.getItemStack(),4));
aPlugin.API.Chests.LOOT_HELLFIRE.printDrops(); aPlugin.API.Chests.LOOT_HELLFIRE.printDrops();
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.DIAMOND_SWORD,8)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,18,"[End] Mega Armor",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.GOLD_SWORD,8)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,78,"[End] Mega Set Armor",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.DIAMOND_AXE,8)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,2,"[End] Mega Tool",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.DIAMOND_PICKAXE,8)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,2,"[End] Mega Weapon",SigDrop.NONHARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.DIAMOND_HOE,8)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,6,"[End] Mega Set Weapon",SigDrop.NONHARDENED,SigDrop.SET,SigDrop.WEAPON,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.DIAMOND_SPADE,8)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,1,"[End] Hardened Mega Armor",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.ARMOR,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.BOW,8)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,8,"[End] Hardened Mega Set Armor",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.FISHING_ROD,8)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,1,"[End] Hardened Mega Tool",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.TOOL,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.DIAMOND_CHESTPLATE,78)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,1,"[End] Hardened Mega Weapon",SigDrop.HARDENED,SigDrop.NONSET,SigDrop.WEAPON,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.DIAMOND_LEGGINGS,78)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new SigDrop(1,1,"[End] Hardened Mega Set Weapon",SigDrop.HARDENED,SigDrop.SET,SigDrop.ARMOR,MonsterDifficulty.END));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.DIAMOND_BOOTS,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.DIAMOND_HELMET,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.GOLD_CHESTPLATE,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.GOLD_LEGGINGS,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.GOLD_BOOTS,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.GOLD_HELMET,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.SKULL_ITEM,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.SKULL_ITEM,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.SKULL_ITEM,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropMaterial(Material.SKULL_ITEM,78));
aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.DIVINE_CORE),4)); aPlugin.API.Chests.LOOT_CUSTOM.addDrop(new DropItem(Artifact.createArtifactItem(ArtifactItem.DIVINE_CORE),4));
aPlugin.API.Chests.LOOT_CUSTOM.printDrops(); aPlugin.API.Chests.LOOT_CUSTOM.printDrops();

@ -21,210 +21,12 @@ import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions;
public enum MonsterDifficulty { public enum MonsterDifficulty {
NORMAL( //Contains info about loot for everything. NORMAL,
new LootStructure[]{ //Regular Loot DANGEROUS,
DEADLY,
}, HELLFIRE,
new LootStructure[]{ //Rare Loot ELITE,
new LootStructure(Material.STONE_SWORD, false), END;
new LootStructure(Material.IRON_INGOT),
new LootStructure(Material.DIAMOND),
new LootStructure(Material.GOLD_NUGGET),
new LootStructure(Material.LEATHER_HELMET,1),
new LootStructure(Material.LEATHER_CHESTPLATE,1),
new LootStructure(Material.LEATHER_LEGGINGS,1),
new LootStructure(Material.LEATHER_BOOTS,1),
},
new LootStructure[]{ //Legendary Loot
new LootStructure(Material.STONE_SWORD, true),
new LootStructure(Material.IRON_INGOT,(int)((Math.random()*3)+1)),
new LootStructure(Material.DIAMOND,(int)((Math.random()*3)+1)),
new LootStructure(Material.GOLD_NUGGET,(int)((Math.random()*3)+1)),
new LootStructure(Material.ENDER_PEARL,(int)((Math.random()*3)+1)),
new LootStructure(Material.ENDER_CHEST),
}
),
DANGEROUS(
new LootStructure[]{ //Regular Loot
new LootStructure(Material.IRON_INGOT,false),
},
new LootStructure[]{ //Rare Loot
new LootStructure(Material.IRON_BLOCK,false),
new LootStructure(Material.IRON_SWORD, false),
new LootStructure(Material.IRON_CHESTPLATE, false),
new LootStructure(Material.IRON_LEGGINGS, false),
new LootStructure(Material.IRON_BOOTS, false),
new LootStructure(Material.IRON_HELMET, false),
new LootStructure(Material.STONE_AXE, false),
new LootStructure(Material.STONE_PICKAXE, false),
new LootStructure(Material.STONE_HOE, false),
new LootStructure(Material.STONE_SPADE, false),
new LootStructure(Material.FISHING_ROD, false),
},
new LootStructure[]{ //Legendary Loot
new LootStructure(Material.IRON_SWORD, true),
new LootStructure(Material.IRON_CHESTPLATE, true),
new LootStructure(Material.IRON_LEGGINGS, true),
new LootStructure(Material.IRON_BOOTS, true),
new LootStructure(Material.IRON_HELMET, true),
new LootStructure(Material.STONE_AXE, true),
new LootStructure(Material.STONE_PICKAXE, true),
new LootStructure(Material.STONE_HOE, true),
new LootStructure(Material.STONE_SPADE, true),
new LootStructure(Material.FISHING_ROD, true),
new LootStructure(Material.LEATHER_HELMET),
new LootStructure(Material.LEATHER_CHESTPLATE),
new LootStructure(Material.LEATHER_LEGGINGS),
new LootStructure(Material.LEATHER_BOOTS),
}
),
DEADLY(
new LootStructure[]{ //Regular Loot
new LootStructure(Material.IRON_INGOT,(int)((Math.random()*2)+1)),
new LootStructure(Material.DIAMOND),
new LootStructure(Material.GOLD_NUGGET,(int)((Math.random()*3)+1)),
},
new LootStructure[]{ //Rare Loot
new LootStructure(Material.IRON_BLOCK,(int)((Math.random()*2)+1)),
new LootStructure(Material.DIAMOND_BLOCK),
new LootStructure(Material.GOLD_INGOT,(int)((Math.random()*3)+1)),
new LootStructure(Material.DIAMOND_SWORD, false),
new LootStructure(Material.IRON_AXE, false),
new LootStructure(Material.IRON_PICKAXE, false),
new LootStructure(Material.IRON_HOE, false),
new LootStructure(Material.IRON_SPADE, false),
new LootStructure(Material.DIAMOND_CHESTPLATE, false),
new LootStructure(Material.DIAMOND_LEGGINGS, false),
new LootStructure(Material.DIAMOND_BOOTS, false),
new LootStructure(Material.DIAMOND_HELMET, false),
new LootStructure(Material.FISHING_ROD, false),
new LootStructure(Material.BOW, false),
new LootStructure(Material.LEATHER_HELMET,2),
new LootStructure(Material.LEATHER_CHESTPLATE,2),
new LootStructure(Material.LEATHER_LEGGINGS,2),
new LootStructure(Material.LEATHER_BOOTS,2),
},
new LootStructure[]{ //Legendary Loot
new LootStructure(Material.DIAMOND_SWORD, true),
new LootStructure(Material.IRON_AXE, true),
new LootStructure(Material.IRON_PICKAXE, true),
new LootStructure(Material.IRON_HOE, true),
new LootStructure(Material.IRON_SPADE, true),
new LootStructure(Material.FISHING_ROD, true),
new LootStructure(Material.DIAMOND_CHESTPLATE, true),
new LootStructure(Material.DIAMOND_LEGGINGS, true),
new LootStructure(Material.DIAMOND_BOOTS, true),
new LootStructure(Material.DIAMOND_HELMET, true),
new LootStructure(Material.FISHING_ROD, true),
new LootStructure(Material.LEATHER_HELMET),
new LootStructure(Material.LEATHER_CHESTPLATE),
new LootStructure(Material.LEATHER_LEGGINGS),
new LootStructure(Material.LEATHER_BOOTS),
}
),
HELLFIRE(
new LootStructure[]{ //Regular Loot
new LootStructure(Material.EMERALD,(int)((Math.random()*3)+1)),
new LootStructure(Material.DIAMOND,(int)((Math.random()*3)+1)),
new LootStructure(Material.GOLD_INGOT,(int)((Math.random()*3)+1)),
},
new LootStructure[]{ //Rare Loot
new LootStructure(Material.EMERALD_BLOCK),
new LootStructure(Material.DIAMOND_BLOCK,(int)((Math.random()*2)+1)),
new LootStructure(Material.GOLD_BLOCK),
new LootStructure(Material.DIAMOND_SWORD, false),
new LootStructure(Material.GOLD_SWORD, false),
new LootStructure(Material.DIAMOND_AXE, false),
new LootStructure(Material.DIAMOND_PICKAXE, false),
new LootStructure(Material.DIAMOND_HOE, false),
new LootStructure(Material.DIAMOND_SPADE, false),
new LootStructure(Material.DIAMOND_CHESTPLATE, false),
new LootStructure(Material.DIAMOND_LEGGINGS, false),
new LootStructure(Material.DIAMOND_BOOTS, false),
new LootStructure(Material.DIAMOND_HELMET, false),
new LootStructure(Material.GOLD_CHESTPLATE, false),
new LootStructure(Material.GOLD_LEGGINGS, false),
new LootStructure(Material.GOLD_BOOTS, false),
new LootStructure(Material.GOLD_HELMET, false),
new LootStructure(Material.BOW, false),
new LootStructure(Material.FISHING_ROD, false),
new LootStructure(Material.LEATHER_HELMET,3),
new LootStructure(Material.LEATHER_CHESTPLATE,3),
new LootStructure(Material.LEATHER_LEGGINGS,3),
new LootStructure(Material.LEATHER_BOOTS,3),
},
new LootStructure[]{ //Legendary Loot
new LootStructure(Material.GOLD_SWORD, true),
new LootStructure(Material.DIAMOND_SWORD, true),
new LootStructure(Material.DIAMOND_AXE, true),
new LootStructure(Material.DIAMOND_PICKAXE, true),
new LootStructure(Material.DIAMOND_HOE, true),
new LootStructure(Material.DIAMOND_SPADE, true),
new LootStructure(Material.DIAMOND_CHESTPLATE, true),
new LootStructure(Material.DIAMOND_LEGGINGS, true),
new LootStructure(Material.DIAMOND_BOOTS, true),
new LootStructure(Material.DIAMOND_HELMET, true),
new LootStructure(Material.GOLD_CHESTPLATE, true),
new LootStructure(Material.GOLD_LEGGINGS, true),
new LootStructure(Material.GOLD_BOOTS, true),
new LootStructure(Material.GOLD_HELMET, true),
new LootStructure(Material.BOW, true),
new LootStructure(Material.FISHING_ROD, true),
new LootStructure(Material.LEATHER_HELMET),
new LootStructure(Material.LEATHER_CHESTPLATE),
new LootStructure(Material.LEATHER_LEGGINGS),
new LootStructure(Material.LEATHER_BOOTS),
}
),
ELITE(
new LootStructure[]{ //Common Loot
new LootStructure(Material.EMERALD),
new LootStructure(Material.DIAMOND),
new LootStructure(Material.GOLD_INGOT),
new LootStructure(Material.REDSTONE),
new LootStructure(Material.IRON_INGOT),
new LootStructure(Material.LEATHER_HELMET,3),
new LootStructure(Material.LEATHER_CHESTPLATE,3),
new LootStructure(Material.LEATHER_LEGGINGS,3),
new LootStructure(Material.LEATHER_BOOTS,3),
},
new LootStructure[]{ //Rare Loot
new LootStructure(Material.EMERALD_BLOCK),
new LootStructure(Material.DIAMOND_BLOCK),
new LootStructure(Material.GOLD_BLOCK),
new LootStructure(Material.REDSTONE_BLOCK),
new LootStructure(Material.IRON_BLOCK),
new LootStructure(Material.LAPIS_BLOCK),
new LootStructure(Material.LEATHER_HELMET),
new LootStructure(Material.LEATHER_CHESTPLATE),
new LootStructure(Material.LEATHER_LEGGINGS),
new LootStructure(Material.LEATHER_BOOTS),
},
new LootStructure[]{ //Legendary Loot
new LootStructure(Material.END_CRYSTAL),
}
),
END(
new LootStructure[]{ //Common Loot
new LootStructure(Material.EMERALD),
},
new LootStructure[]{ //Rare Loot
new LootStructure(Material.EMERALD_BLOCK),
},
new LootStructure[]{ //Legendary Loot
new LootStructure(Material.END_CRYSTAL),
}
);
LootStructure[] loot_regular;
LootStructure[] loot_rare;
LootStructure[] loot_legendary;
private MonsterDifficulty(LootStructure[] loot_regular, LootStructure[] loot_rare, LootStructure[] loot_legendary) {
this.loot_regular=loot_regular;
this.loot_rare=loot_rare;
this.loot_legendary=loot_legendary;
}
/*private ItemStack Artifact() { /*private ItemStack Artifact() {
sig.plugin.TwosideKeeper.Artifact.createArtifactItem(ArtifactItem.ARTIFACT_ESSENCE,3); sig.plugin.TwosideKeeper.Artifact.createArtifactItem(ArtifactItem.ARTIFACT_ESSENCE,3);
@ -250,6 +52,7 @@ public enum MonsterDifficulty {
//Basically for each additional dropmult integer value, the //Basically for each additional dropmult integer value, the
//amount of rolls increases. (A dropmult of 1.0 is required for //amount of rolls increases. (A dropmult of 1.0 is required for
//an additional roll.) //an additional roll.)
Player p = (Player)CustomDamage.getDamagerEntity(damager);
for (int i=0;i<dropmult;i++) { for (int i=0;i<dropmult;i++) {
TwosideKeeper.Loot_Logger.AddLootRoll(); TwosideKeeper.Loot_Logger.AddLootRoll();
TwosideKeeper.log("Attempting a roll...", 2); TwosideKeeper.log("Attempting a roll...", 2);
@ -258,27 +61,27 @@ public enum MonsterDifficulty {
TwosideKeeper.log("Inside!", 5); TwosideKeeper.log("Inside!", 5);
switch (diff) { switch (diff) {
case DANGEROUS:{ case DANGEROUS:{
goodie=aPlugin.API.Chests.LOOT_DANGEROUS.getSingleDrop(); goodie=aPlugin.API.Chests.LOOT_DANGEROUS.getSingleDrop(p);
KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_DANGEROUS, damager); KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_DANGEROUS, p);
}break; }break;
case DEADLY:{ case DEADLY:{
goodie=aPlugin.API.Chests.LOOT_DEADLY.getSingleDrop(); goodie=aPlugin.API.Chests.LOOT_DEADLY.getSingleDrop(p);
KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_DEADLY, damager); KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_DEADLY, p);
}break; }break;
case HELLFIRE:{ case HELLFIRE:{
goodie=aPlugin.API.Chests.LOOT_HELLFIRE.getSingleDrop(); goodie=aPlugin.API.Chests.LOOT_HELLFIRE.getSingleDrop(p);
KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_HELLFIRE, damager); KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_HELLFIRE, p);
}break; }break;
case END:{ case END:{
goodie=aPlugin.API.Chests.LOOT_CUSTOM.getSingleDrop(); goodie=aPlugin.API.Chests.LOOT_CUSTOM.getSingleDrop(p);
KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_CUSTOM, damager); KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_CUSTOM, p);
}break; }break;
case ELITE:{ case ELITE:{
}break; }break;
default:{ default:{
goodie=aPlugin.API.Chests.LOOT_NORMAL.getSingleDrop(); goodie=aPlugin.API.Chests.LOOT_NORMAL.getSingleDrop(p);
KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_NORMAL, damager); KeepRollingForBosses(isBoss, droplist, goodie, aPlugin.API.Chests.LOOT_NORMAL, p);
} }
} }
TwosideKeeper.Loot_Logger.AddCommonLoot(); TwosideKeeper.Loot_Logger.AddCommonLoot();
@ -289,10 +92,10 @@ public enum MonsterDifficulty {
return droplist; return droplist;
} }
public void KeepRollingForBosses(boolean isBoss, List<ItemStack> droplist, ItemStack goodie, Chests chest, Entity damager) { public void KeepRollingForBosses(boolean isBoss, List<ItemStack> droplist, ItemStack goodie, Chests chest, Player damager) {
int roll=0; int roll=0;
while (isBoss && !GenericFunctions.isEquip(goodie) && roll<50) { while (isBoss && !GenericFunctions.isEquip(goodie) && roll<50) {
goodie=chest.getSingleDrop(); goodie=chest.getSingleDrop(damager);
ModifyAndAddDropToList(droplist,goodie,damager); ModifyAndAddDropToList(droplist,goodie,damager);
roll++; roll++;
TwosideKeeper.Loot_Logger.AddCommonLoot(); TwosideKeeper.Loot_Logger.AddCommonLoot();
@ -300,7 +103,7 @@ public enum MonsterDifficulty {
} }
private void ModifyAndAddDropToList(List<ItemStack> droplist, ItemStack goodie, Entity damager) { private void ModifyAndAddDropToList(List<ItemStack> droplist, ItemStack goodie, Entity damager) {
LivingEntity shooter = CustomDamage.getDamagerEntity(damager); /*LivingEntity shooter = CustomDamage.getDamagerEntity(damager);
if (shooter instanceof Player) { if (shooter instanceof Player) {
Player p = (Player)shooter; Player p = (Player)shooter;
if (isValidSetItem(goodie)) { if (isValidSetItem(goodie)) {
@ -321,7 +124,7 @@ public enum MonsterDifficulty {
} }
} }
} }
TwosideKeeper.log("Adding item "+goodie, 2); TwosideKeeper.log("Adding item "+goodie, 2);*/ //LEGACY CODE.
droplist.add(goodie); droplist.add(goodie);
} }
@ -336,8 +139,8 @@ public enum MonsterDifficulty {
return true; return true;
} }
private ItemStack ConvertSetPieceIfNecessary(ItemStack goodie, ItemSet set) { public static ItemStack ConvertSetPieceIfNecessary(ItemStack goodie, ItemSet set) {
/*if ((set==ItemSet.JAMDAK || if ((set==ItemSet.JAMDAK ||
set==ItemSet.ALIKAHN || set==ItemSet.ALIKAHN ||
set==ItemSet.DARNYS || set==ItemSet.DARNYS ||
set==ItemSet.LORASAADI) && set==ItemSet.LORASAADI) &&
@ -352,7 +155,12 @@ public enum MonsterDifficulty {
set==ItemSet.LORASAADI) && set==ItemSet.LORASAADI) &&
GenericFunctions.isArmor(goodie)) { GenericFunctions.isArmor(goodie)) {
goodie.setType(Material.valueOf("IRON_"+goodie.getType().name().split("_")[1])); goodie.setType(Material.valueOf("IRON_"+goodie.getType().name().split("_")[1]));
}*/ } else
if (goodie.getType()!=Material.SKULL_ITEM &&
(set==ItemSet.MOONSHADOW ||
set==ItemSet.GLADOMAIN)) {
goodie.setType(Material.SKULL_ITEM);
}
return goodie; return goodie;
} }
@ -364,7 +172,7 @@ public enum MonsterDifficulty {
} }
} }
public ItemSet PickAnItemSet(PlayerMode pm, ItemStack item) { public static ItemSet PickAnItemSet(PlayerMode pm) {
ItemSet set; ItemSet set;
switch (pm) { switch (pm) {
case STRIKER:{ case STRIKER:{
@ -414,7 +222,7 @@ public enum MonsterDifficulty {
return set; return set;
} }
private ItemSet PickRandomSet() { public static ItemSet PickRandomSet() {
final int NUMBER_OF_MODES=5; final int NUMBER_OF_MODES=5;
int totalweight=50*NUMBER_OF_MODES; //50 for each mode. int totalweight=50*NUMBER_OF_MODES; //50 for each mode.
int selectweight=(int)(Math.random()*totalweight); int selectweight=(int)(Math.random()*totalweight);

@ -28,9 +28,9 @@ public class LootLogger {
DecimalFormat df = new DecimalFormat("0.0"); DecimalFormat df = new DecimalFormat("0.0");
if (total_rolls>0) { if (total_rolls>0) {
return "Total Rolls: "+ChatColor.AQUA+(total_rolls)+"\n"+ChatColor.WHITE return "Total Rolls: "+ChatColor.AQUA+(total_rolls)+"\n"+ChatColor.WHITE
+ "Total Common Rolls: "+ChatColor.YELLOW+(common_loot)+ChatColor.GREEN+" ("+df.format(((double)common_loot/(total_rolls))*100)+"%)\n"+ChatColor.WHITE + "Total Bonus Drops: "+ChatColor.YELLOW+(common_loot)+ChatColor.GREEN+" ("+df.format(((double)common_loot/(total_rolls))*100)+"%)\n"+ChatColor.WHITE
+ "Total Rare Rolls: "+ChatColor.YELLOW+(rare_loot)+ChatColor.GREEN+" ("+df.format(((double)rare_loot/(total_rolls))*100)+"%)\n"+ChatColor.WHITE /*+ "Total Rare Rolls: "+ChatColor.YELLOW+(rare_loot)+ChatColor.GREEN+" ("+df.format(((double)rare_loot/(total_rolls))*100)+"%)\n"+ChatColor.WHITE
+ "Total Legendary Rolls: "+ChatColor.YELLOW+(legendary_loot)+ChatColor.GREEN+" ("+df.format(((double)legendary_loot/(total_rolls))*100)+"%)"; + "Total Legendary Rolls: "+ChatColor.YELLOW+(legendary_loot)+ChatColor.GREEN+" ("+df.format(((double)legendary_loot/(total_rolls))*100)+"%)"*/;
} else { } else {
return "Not enough data yet!"; return "Not enough data yet!";
} }

@ -387,6 +387,28 @@ public final class TwosideKeeperAPI {
public static String getLocalizedItemName(Material i) { public static String getLocalizedItemName(Material i) {
return GenericFunctions.UserFriendlyMaterialName(i); return GenericFunctions.UserFriendlyMaterialName(i);
} }
/**
* Returns a localized standard name of the entity, including the shooter
* in parenthesis if it's a projectile shot at someone.
* @param ent
* @return
*/
public static String getEntityName(Entity ent) {
return GenericFunctions.GetEntityDisplayName(ent);
}
/**
* Returns the actual custom name of the monster without the suffix/buff bar
* attached to it. This also returns the basic name of an entity if it does
* not have a custom name already.
* @param ent
* @return
*/
public static String getActualCustomName(LivingEntity ent) {
return GenericFunctions.getDisplayName(ent);
}
public static String getActionBarSuffix(LivingEntity ent) {
return ActionBarBuffUpdater.getActionBarPrefix(ent);
}
/** /**
* @deprecated Use the version that requires a short. Using a byte makes no sense * @deprecated Use the version that requires a short. Using a byte makes no sense
* as durability can be larger than 256. * as durability can be larger than 256.

Loading…
Cancel
Save