diff --git a/pom.xml b/pom.xml index 4df8b06..36c58a9 100644 --- a/pom.xml +++ b/pom.xml @@ -116,7 +116,7 @@ com.songoda Lootables - LATEST + 1.0.7 com.songoda diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index 0a0ff33..940edde 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -114,6 +114,7 @@ public class UltimateStacker extends SongodaPlugin { .addSubCommand(new CommandReload()) .addSubCommand(new CommandGiveSpawner()) .addSubCommand(new CommandSpawn()) + .addSubCommand(new CommandLootables()) .addSubCommand(new CommandConvert(guiManager)); this.entityUtils = new EntityUtils(); @@ -320,6 +321,10 @@ public class UltimateStacker extends SongodaPlugin { return dataManager; } + public GuiManager getGuiManager() { + return guiManager; + } + void loadHolograms() { Collection spawners = getSpawnerStackManager().getStacks(); if (spawners.isEmpty()) return; diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandLootables.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandLootables.java new file mode 100644 index 0000000..7d1650e --- /dev/null +++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandLootables.java @@ -0,0 +1,54 @@ +package com.songoda.ultimatestacker.commands; + +import com.songoda.core.commands.AbstractCommand; +import com.songoda.lootables.gui.GuiEditor; +import com.songoda.lootables.gui.GuiLootableEditor; +import com.songoda.ultimatestacker.UltimateStacker; +import com.songoda.ultimatestacker.entity.EntityStack; +import com.songoda.ultimatestacker.utils.Methods; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class CommandLootables extends AbstractCommand { + + UltimateStacker instance; + + public CommandLootables() { + super(true, "lootables"); + instance = UltimateStacker.getInstance(); + } + + @Override + protected ReturnType runCommand(CommandSender sender, String... args) { + Player p = (Player) sender; + instance.getGuiManager().showGUI(p, new GuiEditor(instance.getLootablesManager().getLootManager())); + return ReturnType.SUCCESS; + } + + @Override + protected List onTab(CommandSender sender, String... args) { + return null; + } + + @Override + public String getPermissionNode() { + return "ultimatestacker.admin"; + } + + @Override + public String getSyntax() { + return "/us lootables"; + } + + @Override + public String getDescription() { + return "Modify the drop tables."; + } +} diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandReload.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandReload.java index 98a3c2e..21f4e27 100644 --- a/src/main/java/com/songoda/ultimatestacker/commands/CommandReload.java +++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandReload.java @@ -6,7 +6,7 @@ import org.bukkit.command.CommandSender; import java.util.List; -public class CommandReload extends AbstractCommand { +public class CommandReload extends AbstractCommand { UltimateStacker instance; diff --git a/src/main/java/com/songoda/ultimatestacker/entity/EntityStack.java b/src/main/java/com/songoda/ultimatestacker/entity/EntityStack.java index 9c0d9d0..d6e3690 100644 --- a/src/main/java/com/songoda/ultimatestacker/entity/EntityStack.java +++ b/src/main/java/com/songoda/ultimatestacker/entity/EntityStack.java @@ -4,9 +4,9 @@ import com.songoda.core.compatibility.CompatibleMaterial; import com.songoda.core.compatibility.ServerVersion; import com.songoda.core.utils.EntityUtils; import com.songoda.lootables.loot.Drop; +import com.songoda.lootables.loot.DropUtils; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.settings.Settings; -import com.songoda.ultimatestacker.utils.DropUtils; import com.songoda.ultimatestacker.utils.Methods; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -181,7 +181,7 @@ public class EntityStack { Map v = new HashMap<>(); if (subject.getTicksLived() >= metaCarryOverMin) return v; - Map> metadataMap = null; + Map> metadataMap = null; try { Object entityMetadata = methodGetEntityMetadata.invoke(Bukkit.getServer()); metadataMap = (Map) fieldMetadataMap.get(entityMetadata); diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java index ef5c25b..048b922 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java @@ -3,10 +3,10 @@ package com.songoda.ultimatestacker.listeners; import com.songoda.core.compatibility.ServerProject; import com.songoda.core.compatibility.ServerVersion; import com.songoda.lootables.loot.Drop; +import com.songoda.lootables.loot.DropUtils; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.entity.EntityStack; import com.songoda.ultimatestacker.settings.Settings; -import com.songoda.ultimatestacker.utils.DropUtils; import org.bukkit.GameRule; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; @@ -113,7 +113,8 @@ public class DeathListeners implements Listener { @EventHandler public void onEntityHit(EntityDamageByEntityEvent event) { - if (!(event.getDamager() instanceof Player) || ServerVersion.isServerVersionAtOrBelow(ServerVersion.V1_12)) return; + if (!(event.getDamager() instanceof Player) || ServerVersion.isServerVersionAtOrBelow(ServerVersion.V1_12)) + return; if (!instance.getEntityStackManager().isStacked(event.getEntity())) return; EntityStack stack = instance.getEntityStackManager().getStack(event.getEntity()); diff --git a/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java b/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java index 188268a..60f0d9f 100644 --- a/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java +++ b/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java @@ -7,7 +7,6 @@ import com.songoda.lootables.Modify; import com.songoda.lootables.loot.*; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.settings.Settings; -import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.*; import org.bukkit.event.entity.EntityDamageByEntityEvent; @@ -53,13 +52,11 @@ public class LootablesManager { Modify modify = null; if (entity.getType() == EntityType.SHEEP) { modify = (Loot loot2) -> { - Material material = loot2.getMaterial(); + CompatibleMaterial material = loot2.getMaterial(); if (material.name().contains("WOOL") && ((Sheep) entity).getColor() != null) { if (((Sheep) entity).isSheared()) return null; if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) - loot2.setMaterial(Material.valueOf(((Sheep) entity).getColor() + "_WOOL")); - else - loot2.setData((short) ((Sheep) entity).getColor().getWoolData()); + loot2.setMaterial(CompatibleMaterial.valueOf(((Sheep) entity).getColor() + "_WOOL")); } return loot2; @@ -91,42 +88,41 @@ public class LootablesManager { // Add Trader Llama. lootManager.addLootable(new Lootable("TRADER_LLAMA", new LootBuilder() - .setMaterial(Material.LEATHER) + .setMaterial(CompatibleMaterial.LEATHER) .setMin(0) .setMax(2).build())); // Add Pillager. lootManager.addLootable(new Lootable("PILLAGER", new LootBuilder() - .setMaterial(Material.ARROW) + .setMaterial(CompatibleMaterial.ARROW) .setMin(0) .setMax(2).build())); // Add Ravager. lootManager.addLootable(new Lootable("RAVAGER", new LootBuilder() - .setMaterial(Material.SADDLE).build())); + .setMaterial(CompatibleMaterial.SADDLE).build())); // Add Cat. lootManager.addLootable(new Lootable("CAT", new LootBuilder() - .setMaterial(Material.STRING).build())); + .setMaterial(CompatibleMaterial.STRING).build())); // Add Panda. lootManager.addLootable(new Lootable("PANDA", new LootBuilder() - .setMaterial(Material.BAMBOO) + .setMaterial(CompatibleMaterial.BAMBOO) .setMin(0) .setMax(2).build())); } if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) { - // Add Phantom. lootManager.addLootable(new Lootable("PHANTOM", new LootBuilder() - .setMaterial(Material.PHANTOM_MEMBRANE) + .setMaterial(CompatibleMaterial.PHANTOM_MEMBRANE) .setMin(0) .setMax(1) .addOnlyDropFors(EntityType.PLAYER).build())); @@ -134,29 +130,29 @@ public class LootablesManager { // Add Pufferfish. lootManager.addLootable(new Lootable("PUFFERFISH", new LootBuilder() - .setMaterial(Material.PUFFERFISH).build(), + .setMaterial(CompatibleMaterial.PUFFERFISH).build(), new LootBuilder() - .setMaterial(Material.BONE_MEAL) + .setMaterial(CompatibleMaterial.BONE_MEAL) .setChance(5).build())); // Add Salmon. lootManager.addLootable(new Lootable("SALMON", new LootBuilder() - .setMaterial(Material.SALMON) - .setBurnedMaterial(Material.COOKED_SALMON).build(), + .setMaterial(CompatibleMaterial.SALMON) + .setBurnedMaterial(CompatibleMaterial.COOKED_SALMON).build(), new LootBuilder() - .setMaterial(Material.BONE_MEAL) + .setMaterial(CompatibleMaterial.BONE_MEAL) .setChance(5).build())); // Add Tropical Fish. lootManager.addLootable(new Lootable("TROPICAL_FISH", new LootBuilder() - .setMaterial(Material.TROPICAL_FISH).build(), + .setMaterial(CompatibleMaterial.TROPICAL_FISH).build(), new LootBuilder() - .setMaterial(Material.BONE_MEAL) + .setMaterial(CompatibleMaterial.BONE_MEAL) .setChance(5).build(), new LootBuilder() - .setMaterial(Material.BONE) + .setMaterial(CompatibleMaterial.BONE) .setMin(1) .setMax(2) .setChance(25) @@ -165,35 +161,35 @@ public class LootablesManager { // Add Dolphin. lootManager.addLootable(new Lootable("DOLPHIN", new LootBuilder() - .setMaterial(Material.COD) - .setBurnedMaterial(Material.COOKED_COD) + .setMaterial(CompatibleMaterial.COD) + .setBurnedMaterial(CompatibleMaterial.COOKED_COD) .setMin(0) .setMax(1).build())); // Add Cod. lootManager.addLootable(new Lootable("COD", new LootBuilder() - .setMaterial(Material.COD) - .setBurnedMaterial(Material.COOKED_COD).build(), + .setMaterial(CompatibleMaterial.COD) + .setBurnedMaterial(CompatibleMaterial.COOKED_COD).build(), new LootBuilder() - .setMaterial(Material.BONE_MEAL) + .setMaterial(CompatibleMaterial.BONE_MEAL) .setChance(5).build())); // Add Turtle. lootManager.addLootable(new Lootable("TURTLE", new LootBuilder() - .setMaterial(Material.SEAGRASS) + .setMaterial(CompatibleMaterial.SEAGRASS) .setMin(0) .setMax(2).build())); // Add Drowned. lootManager.addLootable(new Lootable("DROWNED", new LootBuilder() - .setMaterial(Material.ROTTEN_FLESH) + .setMaterial(CompatibleMaterial.ROTTEN_FLESH) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.GOLD_INGOT) + .setMaterial(CompatibleMaterial.GOLD_INGOT) .setChance(5) .addOnlyDropFors(EntityType.PLAYER).build())); } @@ -202,7 +198,7 @@ public class LootablesManager { // Add Parrot. lootManager.addLootable(new Lootable("PARROT", new LootBuilder() - .setMaterial(Material.FEATHER) + .setMaterial(CompatibleMaterial.FEATHER) .setMin(1) .setMax(2).build())); } @@ -210,34 +206,30 @@ public class LootablesManager { Loot fish1 = new LootBuilder() .addChildLoot(new LootBuilder() - .setMaterial(CompatibleMaterial.COD.getMaterial()) - .setBurnedMaterial(CompatibleMaterial.COOKED_COD.getMaterial()) + .setMaterial(CompatibleMaterial.COD) + .setBurnedMaterial(CompatibleMaterial.COOKED_COD) .setChance(50).build(), new LootBuilder() - .setMaterial(Material.PRISMARINE_CRYSTALS) + .setMaterial(CompatibleMaterial.PRISMARINE_CRYSTALS) .setChance(33).build()) .build(); Loot fish2 = new LootBuilder() .setChance(2.5) .addChildLoot(new LootBuilder() - .setMaterial(CompatibleMaterial.COD.getMaterial()) - .setData(CompatibleMaterial.COD.getData()) + .setMaterial(CompatibleMaterial.COD) .setChance(60) .setAllowLootingEnchant(false).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.SALMON.getMaterial()) - .setData(CompatibleMaterial.SALMON.getData()) + .setMaterial(CompatibleMaterial.SALMON) .setChance(25) .setAllowLootingEnchant(false).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.PUFFERFISH.getMaterial()) - .setData(CompatibleMaterial.PUFFERFISH.getData()) + .setMaterial(CompatibleMaterial.PUFFERFISH) .setChance(13) .setAllowLootingEnchant(false).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.TROPICAL_FISH.getMaterial()) - .setData(CompatibleMaterial.TROPICAL_FISH.getData()) + .setMaterial(CompatibleMaterial.TROPICAL_FISH) .setChance(2) .setAllowLootingEnchant(false).build()) .addOnlyDropFors(EntityType.PLAYER).build(); @@ -246,43 +238,43 @@ public class LootablesManager { // Add Zombie Villager. lootManager.addLootable(new Lootable("ZOMBIE_VILLAGER", new LootBuilder() - .setMaterial(Material.ROTTEN_FLESH) + .setMaterial(CompatibleMaterial.ROTTEN_FLESH) .setMin(0) .setMax(2).build(), new LootBuilder() .setChance(2.5) .setChildDropCount(1) .addOnlyDropFors(EntityType.PLAYER) - .addChildLoot(new LootBuilder().setMaterial(Material.IRON_INGOT) + .addChildLoot(new LootBuilder().setMaterial(CompatibleMaterial.IRON_INGOT) .setAllowLootingEnchant(false).build(), - new LootBuilder().setMaterial(Material.CARROT) + new LootBuilder().setMaterial(CompatibleMaterial.CARROT) .setAllowLootingEnchant(false).build(), - new LootBuilder().setMaterial(Material.POTATO) + new LootBuilder().setMaterial(CompatibleMaterial.POTATO) .setAllowLootingEnchant(false).build()) .build())); // Add Llama. lootManager.addLootable(new Lootable("LLAMA", new LootBuilder() - .setMaterial(Material.LEATHER) + .setMaterial(CompatibleMaterial.LEATHER) .setMin(0) .setMax(2).build())); // Add Zombie Horse. lootManager.addLootable(new Lootable("ZOMBIE_HORSE", new LootBuilder() - .setMaterial(Material.ROTTEN_FLESH) + .setMaterial(CompatibleMaterial.ROTTEN_FLESH) .setMin(0) .setMax(2).build())); // Add Elder Guardian. lootManager.addLootable(new Lootable("ELDER_GUARDIAN", new LootBuilder() - .setMaterial(Material.PRISMARINE_SHARD) + .setMaterial(CompatibleMaterial.PRISMARINE_SHARD) .setMin(0) .setMax(2).build(), fish1, new LootBuilder() - .setMaterial(Material.SPONGE) + .setMaterial(CompatibleMaterial.SPONGE) .addOnlyDropFors(EntityType.PLAYER) .setAllowLootingEnchant(false).build(), fish2)); @@ -290,24 +282,23 @@ public class LootablesManager { // Add Mule. lootManager.addLootable(new Lootable("MULE", new LootBuilder() - .setMaterial(Material.LEATHER) + .setMaterial(CompatibleMaterial.LEATHER) .setMin(0) .setMax(2).build())); // Add Stray. lootManager.addLootable(new Lootable("STRAY", new LootBuilder() - .setMaterial(Material.ARROW) + .setMaterial(CompatibleMaterial.ARROW) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.BONE) + .setMaterial(CompatibleMaterial.BONE) .setMin(0) .setMax(2).build())); Loot witherSkull = new LootBuilder() - .setMaterial(CompatibleMaterial.WITHER_SKELETON_SKULL.getMaterial()) - .setData(CompatibleMaterial.WITHER_SKELETON_SKULL.getData()) + .setMaterial(CompatibleMaterial.WITHER_SKELETON_SKULL) .setChance(2.5) .setAllowLootingEnchant(false) .addOnlyDropFors(EntityType.PLAYER).build(); @@ -315,30 +306,30 @@ public class LootablesManager { // Add Wither Skeleton. lootManager.addLootable(new Lootable("WITHER_SKELETON", new LootBuilder() - .setMaterial(Material.COAL) + .setMaterial(CompatibleMaterial.COAL) .setChance(33).build(), new LootBuilder() - .setMaterial(Material.BONE) + .setMaterial(CompatibleMaterial.BONE) .setMin(0) .setMax(2).build(), witherSkull)); // Add Skeleton Horse. lootManager.addLootable(new Lootable("SKELETON_HORSE", new LootBuilder() - .setMaterial(Material.BONE) + .setMaterial(CompatibleMaterial.BONE) .setMin(0) .setMax(2).build())); // Add Donkey. lootManager.addLootable(new Lootable("DONKEY", new LootBuilder() - .setMaterial(Material.LEATHER) + .setMaterial(CompatibleMaterial.LEATHER) .setMin(0) .setMax(2).build())); // Add Vindicator. lootManager.addLootable(new Lootable("VINDICATOR", new LootBuilder() - .setMaterial(Material.EMERALD) + .setMaterial(CompatibleMaterial.EMERALD) .setMin(0) .setMax(1) .addOnlyDropFors(EntityType.PLAYER).build())); @@ -346,10 +337,10 @@ public class LootablesManager { // Add Evoker. lootManager.addLootable(new Lootable("EVOKER", new LootBuilder() - .setMaterial(CompatibleMaterial.TOTEM_OF_UNDYING.getMaterial()) + .setMaterial(CompatibleMaterial.TOTEM_OF_UNDYING) .setAllowLootingEnchant(false).build(), new LootBuilder() - .setMaterial(Material.EMERALD) + .setMaterial(CompatibleMaterial.EMERALD) .setChance(50) .addOnlyDropFors(EntityType.PLAYER).build())); } @@ -360,7 +351,7 @@ public class LootablesManager { // Shulker. lootManager.addLootable(new Lootable("SHULKER", new LootBuilder() - .setMaterial(Material.SHULKER_SHELL) + .setMaterial(CompatibleMaterial.SHULKER_SHELL) .setChance(50) .setLootingIncrease(6.25).build())); } @@ -369,12 +360,12 @@ public class LootablesManager { // Add Polar Bear. lootManager.addLootable(new Lootable("POLAR_BEAR", new LootBuilder() - .setMaterial(Material.COD) + .setMaterial(CompatibleMaterial.COD) .setChance(75) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.SALMON) + .setMaterial(CompatibleMaterial.SALMON) .setChance(25) .setMin(0) .setMax(2).build())); @@ -382,13 +373,12 @@ public class LootablesManager { // Add Polar Bear. lootManager.addLootable(new Lootable("POLAR_BEAR", new LootBuilder() - .setMaterial(CompatibleMaterial.COD.getMaterial()) + .setMaterial(CompatibleMaterial.COD) .setChance(75) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.SALMON.getMaterial()) - .setData(CompatibleMaterial.SALMON.getData()) + .setMaterial(CompatibleMaterial.SALMON) .setChance(25) .setMin(0) .setMax(2).build())); @@ -397,8 +387,8 @@ public class LootablesManager { // Add Pig. lootManager.addLootable(new Lootable("PIG", new LootBuilder() - .setMaterial(CompatibleMaterial.PORKCHOP.getMaterial()) - .setBurnedMaterial(CompatibleMaterial.COOKED_PORKCHOP.getMaterial()) + .setMaterial(CompatibleMaterial.PORKCHOP) + .setBurnedMaterial(CompatibleMaterial.COOKED_PORKCHOP) .setMin(1) .setMax(3).build())); @@ -406,40 +396,40 @@ public class LootablesManager { // Add Cow. lootManager.addLootable(new Lootable("COW", new LootBuilder() - .setMaterial(Material.LEATHER) + .setMaterial(CompatibleMaterial.LEATHER) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.BEEF.getMaterial()) - .setBurnedMaterial(CompatibleMaterial.COOKED_BEEF.getMaterial()) + .setMaterial(CompatibleMaterial.BEEF) + .setBurnedMaterial(CompatibleMaterial.COOKED_BEEF) .setMin(1) .setMax(3).build())); // Add Mushroom Cow. lootManager.addLootable(new Lootable("MUSHROOM_COW", new LootBuilder() - .setMaterial(Material.LEATHER) + .setMaterial(CompatibleMaterial.LEATHER) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.BEEF.getMaterial()) - .setBurnedMaterial(CompatibleMaterial.COOKED_BEEF.getMaterial()) + .setMaterial(CompatibleMaterial.BEEF) + .setBurnedMaterial(CompatibleMaterial.COOKED_BEEF) .setMin(1) .setMax(3).build())); // Add Chicken. lootManager.addLootable(new Lootable("CHICKEN", new LootBuilder() - .setMaterial(Material.FEATHER) + .setMaterial(CompatibleMaterial.FEATHER) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.CHICKEN.getMaterial()) - .setBurnedMaterial(CompatibleMaterial.COOKED_CHICKEN.getMaterial()).build())); + .setMaterial(CompatibleMaterial.CHICKEN) + .setBurnedMaterial(CompatibleMaterial.COOKED_CHICKEN).build())); // Add Zombie. lootManager.addLootable(new Lootable("ZOMBIE", new LootBuilder() - .setMaterial(Material.ROTTEN_FLESH) + .setMaterial(CompatibleMaterial.ROTTEN_FLESH) .setMin(0) .setMax(2).build(), new LootBuilder() @@ -447,18 +437,18 @@ public class LootablesManager { .setChildDropCount(1) .setAllowLootingEnchant(false) .addOnlyDropFors(EntityType.PLAYER) - .addChildLoot(new LootBuilder().setMaterial(Material.IRON_INGOT) + .addChildLoot(new LootBuilder().setMaterial(CompatibleMaterial.IRON_INGOT) .setAllowLootingEnchant(false).build(), - new LootBuilder().setMaterial(Material.CARROT) + new LootBuilder().setMaterial(CompatibleMaterial.CARROT) .setAllowLootingEnchant(false).build(), - new LootBuilder().setMaterial(Material.POTATO) + new LootBuilder().setMaterial(CompatibleMaterial.POTATO) .setAllowLootingEnchant(false).build()) .build())); // Add Husk. lootManager.addLootable(new Lootable("ZOMBIE", new LootBuilder() - .setMaterial(Material.ROTTEN_FLESH) + .setMaterial(CompatibleMaterial.ROTTEN_FLESH) .setMin(0) .setMax(2).build(), new LootBuilder() @@ -466,11 +456,11 @@ public class LootablesManager { .setChildDropCount(1) .setAllowLootingEnchant(false) .addOnlyDropFors(EntityType.PLAYER) - .addChildLoot(new LootBuilder().setMaterial(Material.IRON_INGOT) + .addChildLoot(new LootBuilder().setMaterial(CompatibleMaterial.IRON_INGOT) .setAllowLootingEnchant(false).build(), - new LootBuilder().setMaterial(Material.CARROT) + new LootBuilder().setMaterial(CompatibleMaterial.CARROT) .setAllowLootingEnchant(false).build(), - new LootBuilder().setMaterial(Material.POTATO) + new LootBuilder().setMaterial(CompatibleMaterial.POTATO) .setAllowLootingEnchant(false).build()) .build())); @@ -480,60 +470,60 @@ public class LootablesManager { .setChildDropCount(1) .addOnlyDropFors(EntityType.SKELETON, EntityType.STRAY) - .addChildLoot(new LootBuilder().setMaterial(Material.MUSIC_DISC_11).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_13).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_BLOCKS).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_CAT).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_CHIRP).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_FAR).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_MALL).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_MELLOHI).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_STAL).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_STRAD).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_WAIT).build(), - new LootBuilder().setMaterial(Material.MUSIC_DISC_WARD).build()) + .addChildLoot(new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_11).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_13).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_BLOCKS).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_CAT).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_CHIRP).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_FAR).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_MALL).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_MELLOHI).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_STAL).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_STRAD).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_WAIT).build(), + new LootBuilder().setMaterial(CompatibleMaterial.MUSIC_DISC_WARD).build()) .build(); } else if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) { discs = new LootBuilder() .setChildDropCount(1) .addOnlyDropFors(EntityType.SKELETON, EntityType.STRAY) - .addChildLoot(new LootBuilder().setMaterial(Material.valueOf("GOLD_RECORD")).build(), - new LootBuilder().setMaterial(Material.valueOf("GREEN_RECORD")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_3")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_4")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_5")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_6")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_7")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_8")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_9")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_10")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_11")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_12")).build()) + .addChildLoot(new LootBuilder().setMaterial(CompatibleMaterial.valueOf("GOLD_RECORD")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("GREEN_RECORD")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_3")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_4")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_5")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_6")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_7")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_8")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_9")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_10")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_11")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_12")).build()) .build(); } else { discs = new LootBuilder() .setChildDropCount(1) .addOnlyDropFors(EntityType.SKELETON) - .addChildLoot(new LootBuilder().setMaterial(Material.valueOf("GOLD_RECORD")).build(), - new LootBuilder().setMaterial(Material.valueOf("GREEN_RECORD")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_3")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_4")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_5")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_6")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_7")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_8")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_9")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_10")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_11")).build(), - new LootBuilder().setMaterial(Material.valueOf("RECORD_12")).build()) + .addChildLoot(new LootBuilder().setMaterial(CompatibleMaterial.valueOf("GOLD_RECORD")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("GREEN_RECORD")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_3")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_4")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_5")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_6")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_7")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_8")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_9")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_10")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_11")).build(), + new LootBuilder().setMaterial(CompatibleMaterial.valueOf("RECORD_12")).build()) .build(); } // Add Creeper. lootManager.addLootable(new Lootable("CREEPER", new LootBuilder() - .setMaterial(CompatibleMaterial.GUNPOWDER.getMaterial()) + .setMaterial(CompatibleMaterial.GUNPOWDER) .setMin(0) .setMax(2).build(), discs)); @@ -541,7 +531,7 @@ public class LootablesManager { // Add Guardian. lootManager.addLootable(new Lootable("GUARDIAN", new LootBuilder() - .setMaterial(Material.PRISMARINE_SHARD) + .setMaterial(CompatibleMaterial.PRISMARINE_SHARD) .setMin(0) .setMax(2).build(), fish1, @@ -553,37 +543,37 @@ public class LootablesManager { .setChildDropCounMin(1) .setChildDropCountMax(3) .addChildLoot(new LootBuilder() - .setMaterial(Material.GLOWSTONE_DUST) + .setMaterial(CompatibleMaterial.GLOWSTONE_DUST) .setChance(12.5) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.SUGAR) + .setMaterial(CompatibleMaterial.SUGAR) .setChance(12.5) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.REDSTONE) + .setMaterial(CompatibleMaterial.REDSTONE) .setChance(12.5) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.SPIDER_EYE) + .setMaterial(CompatibleMaterial.SPIDER_EYE) .setChance(12.5) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.GLASS_BOTTLE) + .setMaterial(CompatibleMaterial.GLASS_BOTTLE) .setChance(12.5) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.GUNPOWDER.getMaterial()) + .setMaterial(CompatibleMaterial.GUNPOWDER) .setChance(12.5) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.STICK) + .setMaterial(CompatibleMaterial.STICK) .setChance(25) .setMin(0) .setMax(2).build() @@ -592,55 +582,55 @@ public class LootablesManager { // Add Sheep. lootManager.addLootable(new Lootable("SHEEP", new LootBuilder() - .setMaterial(Material.MUTTON) - .setBurnedMaterial(Material.COOKED_MUTTON) + .setMaterial(CompatibleMaterial.MUTTON) + .setBurnedMaterial(CompatibleMaterial.COOKED_MUTTON) .setMin(1) .setMax(2).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.WHITE_WOOL.getMaterial()) + .setMaterial(CompatibleMaterial.WHITE_WOOL) .setMin(2) .setMax(2).build())); // Add Squid. lootManager.addLootable(new Lootable("SQUID", new LootBuilder() - .setMaterial(CompatibleMaterial.INK_SAC.getMaterial()) + .setMaterial(CompatibleMaterial.INK_SAC) .setMin(1) .setMax(3).build())); // Add Spider. lootManager.addLootable(new Lootable("SPIDER", new LootBuilder() - .setMaterial(Material.STRING) + .setMaterial(CompatibleMaterial.STRING) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.SPIDER_EYE) + .setMaterial(CompatibleMaterial.SPIDER_EYE) .setChance(33) .addOnlyDropFors(EntityType.PLAYER).build())); // Add Cave Spider. lootManager.addLootable(new Lootable("CAVE_SPIDER", new LootBuilder() - .setMaterial(Material.STRING) + .setMaterial(CompatibleMaterial.STRING) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.SPIDER_EYE) + .setMaterial(CompatibleMaterial.SPIDER_EYE) .setChance(33) .addOnlyDropFors(EntityType.PLAYER).build())); // Add Enderman. lootManager.addLootable(new Lootable("ENDERMAN", new LootBuilder() - .setMaterial(Material.ENDER_PEARL) + .setMaterial(CompatibleMaterial.ENDER_PEARL) .setMin(0) .setMax(1).build())); // Add Blaze. lootManager.addLootable(new Lootable("BLAZE", new LootBuilder() - .setMaterial(Material.BLAZE_ROD) + .setMaterial(CompatibleMaterial.BLAZE_ROD) .setMin(0) .setMax(1) .addOnlyDropFors(EntityType.PLAYER).build())); @@ -648,93 +638,93 @@ public class LootablesManager { // Add Horse. lootManager.addLootable(new Lootable("HORSE", new LootBuilder() - .setMaterial(Material.LEATHER) + .setMaterial(CompatibleMaterial.LEATHER) .setMin(0) .setMax(2).build())); // Magma Cube. lootManager.addLootable(new Lootable("MAGMA_CUBE", new LootBuilder() - .setMaterial(Material.MAGMA_CREAM) + .setMaterial(CompatibleMaterial.MAGMA_CREAM) .setChance(25).build())); // Add Skeleton. lootManager.addLootable(new Lootable("SKELETON", new LootBuilder() - .setMaterial(Material.ARROW) + .setMaterial(CompatibleMaterial.ARROW) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.BONE) + .setMaterial(CompatibleMaterial.BONE) .setMin(0) .setMax(2).build())); // Add Snowman. lootManager.addLootable(new Lootable("SNOWMAN", new LootBuilder() - .setMaterial(CompatibleMaterial.SNOWBALL.getMaterial()) + .setMaterial(CompatibleMaterial.SNOWBALL) .setMin(0) .setMax(15).build())); // Add Rabbit. lootManager.addLootable(new Lootable("RABBIT", new LootBuilder() - .setMaterial(Material.RABBIT_HIDE) + .setMaterial(CompatibleMaterial.RABBIT_HIDE) .setMin(0) .setMax(1).build(), new LootBuilder() - .setMaterial(Material.RABBIT) - .setBurnedMaterial(Material.COOKED_RABBIT) + .setMaterial(CompatibleMaterial.RABBIT) + .setBurnedMaterial(CompatibleMaterial.COOKED_RABBIT) .setMin(0) .setMax(1).build())); // Add Iron Golem. lootManager.addLootable(new Lootable("IRON_GOLEM", new LootBuilder() - .setMaterial(CompatibleMaterial.POPPY.getMaterial()) + .setMaterial(CompatibleMaterial.POPPY) .setMin(0) .setMax(2).build(), new LootBuilder() - .setMaterial(Material.IRON_INGOT) + .setMaterial(CompatibleMaterial.IRON_INGOT) .setMin(3) .setMax(5).build())); // Add Slime. lootManager.addLootable(new Lootable("SLIME", new LootBuilder() - .setMaterial(Material.SLIME_BALL) + .setMaterial(CompatibleMaterial.SLIME_BALL) .setMin(0) .setMax(2).build())); // Add Ghast. lootManager.addLootable(new Lootable("GHAST", new LootBuilder() - .setMaterial(Material.GHAST_TEAR) + .setMaterial(CompatibleMaterial.GHAST_TEAR) .setMin(0) .setMax(1).build(), new LootBuilder() - .setMaterial(CompatibleMaterial.GUNPOWDER.getMaterial()) + .setMaterial(CompatibleMaterial.GUNPOWDER) .setMin(0) .setMax(2).build())); // Add Zombie Pigman lootManager.addLootable(new Lootable("PIG_ZOMBIE", new LootBuilder() - .setMaterial(Material.ROTTEN_FLESH) + .setMaterial(CompatibleMaterial.ROTTEN_FLESH) .setMin(0) .setMax(1).build(), new LootBuilder() - .setMaterial(Material.GOLD_NUGGET) + .setMaterial(CompatibleMaterial.GOLD_NUGGET) .setMin(0) .setMax(1).build(), new LootBuilder() - .setMaterial(Material.GOLD_INGOT) + .setMaterial(CompatibleMaterial.GOLD_INGOT) .setChance(2.5) .addOnlyDropFors(EntityType.PLAYER).build())); // Add Wither. lootManager.addLootable(new Lootable("WITHER", new LootBuilder() - .setMaterial(Material.NETHER_STAR) + .setMaterial(CompatibleMaterial.NETHER_STAR) .setAllowLootingEnchant(false).build())); // Add Villager. @@ -745,7 +735,7 @@ public class LootablesManager { lootManager.addLootable(new Lootable("SILVERFISH", new LootBuilder().build())); - lootManager.saveLootables(); + lootManager.saveLootables(true); } public LootManager getLootManager() { diff --git a/src/main/java/com/songoda/ultimatestacker/utils/DropUtils.java b/src/main/java/com/songoda/ultimatestacker/utils/DropUtils.java deleted file mode 100644 index 6eae44e..0000000 --- a/src/main/java/com/songoda/ultimatestacker/utils/DropUtils.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.songoda.ultimatestacker.utils; - -import com.songoda.lootables.loot.Drop; -import org.bukkit.Bukkit; -import org.bukkit.entity.LivingEntity; -import org.bukkit.event.entity.EntityDeathEvent; -import org.bukkit.inventory.ItemStack; - -import java.util.ArrayList; -import java.util.List; - -public class DropUtils { - - public static void processStackedDrop(LivingEntity entity, List drops, EntityDeathEvent event) { - List items = new ArrayList<>(); - List commands = new ArrayList<>(); - for (Drop drop : drops) { - if (drop == null) continue; - - ItemStack droppedItem = drop.getItemStack(); - if (droppedItem != null) { - droppedItem = droppedItem.clone(); - boolean success = false; - for (ItemStack item : items) { - if (item.getType() != droppedItem.getType() - || item.getDurability() != droppedItem.getDurability() - || item.getAmount() + droppedItem.getAmount() > droppedItem.getMaxStackSize()) continue; - item.setAmount(item.getAmount() + droppedItem.getAmount()); - success = true; - break; - } - if (!success) - items.add(droppedItem); - } - if (drop.getCommand() != null) - commands.add(drop.getCommand()); - } - - event.getDrops().clear(); - - if (!items.isEmpty()) - dropItems(items, event); - else if (!commands.isEmpty()) - runCommands(entity, commands); - } - - private static void dropItems(List items, EntityDeathEvent event) { - for (ItemStack item : items) - event.getDrops().add(item); - } - - private static void runCommands(LivingEntity entity, List commands) { - for (String command : commands) { - if (entity.getKiller() != null) - command = command.replace("%player%", entity.getKiller().getName()); - if (!command.contains("%player%")) - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); - } - } -}