mirror of
https://github.com/songoda/UltimateStacker.git
synced 2024-11-30 14:03:24 +01:00
mobs will now drop held items correctly while custom drops are enabled.
This commit is contained in:
parent
44be74c2e3
commit
6af0f05dad
@ -3,7 +3,11 @@ package com.songoda.ultimatestacker.listeners;
|
|||||||
import com.songoda.lootables.loot.Drop;
|
import com.songoda.lootables.loot.Drop;
|
||||||
import com.songoda.ultimatestacker.UltimateStacker;
|
import com.songoda.ultimatestacker.UltimateStacker;
|
||||||
import com.songoda.ultimatestacker.utils.DropUtils;
|
import com.songoda.ultimatestacker.utils.DropUtils;
|
||||||
|
import com.songoda.ultimatestacker.utils.ServerVersion;
|
||||||
import com.songoda.ultimatestacker.utils.settings.Setting;
|
import com.songoda.ultimatestacker.utils.settings.Setting;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.ChestedHorse;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -12,6 +16,7 @@ import org.bukkit.event.entity.EntityDeathEvent;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class DeathListeners implements Listener {
|
public class DeathListeners implements Listener {
|
||||||
@ -33,7 +38,11 @@ public class DeathListeners implements Listener {
|
|||||||
for (ItemStack item : event.getDrops())
|
for (ItemStack item : event.getDrops())
|
||||||
drops.add(new Drop(item));
|
drops.add(new Drop(item));
|
||||||
}
|
}
|
||||||
event.getDrops().clear();
|
System.out.println(event.getDrops());
|
||||||
|
for (ItemStack item : new ArrayList<>(event.getDrops())) {
|
||||||
|
if (!shouldDrop(event.getEntity(), item.getType()))
|
||||||
|
event.getDrops().remove(item);
|
||||||
|
}
|
||||||
|
|
||||||
if (instance.getEntityStackManager().isStacked(event.getEntity()))
|
if (instance.getEntityStackManager().isStacked(event.getEntity()))
|
||||||
instance.getEntityStackManager().getStack(event.getEntity())
|
instance.getEntityStackManager().getStack(event.getEntity())
|
||||||
@ -41,4 +50,51 @@ public class DeathListeners implements Listener {
|
|||||||
else
|
else
|
||||||
DropUtils.processStackedDrop(event.getEntity(), drops);
|
DropUtils.processStackedDrop(event.getEntity(), drops);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean shouldDrop(LivingEntity entity, Material material) {
|
||||||
|
if (entity.getEquipment() != null && entity.getEquipment().getArmorContents().length != 0) {
|
||||||
|
List<ItemStack> items = new ArrayList<>(Arrays.asList(entity.getEquipment().getArmorContents()));
|
||||||
|
items.add(entity.getEquipment().getItemInHand());
|
||||||
|
if (instance.isServerVersionAtLeast(ServerVersion.V1_9))
|
||||||
|
items.add(entity.getEquipment().getItemInOffHand());
|
||||||
|
for (ItemStack item : items) {
|
||||||
|
if (item.getType() == material)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (instance.isServerVersionAtLeast(ServerVersion.V1_11) && entity instanceof ChestedHorse) {
|
||||||
|
if (((ChestedHorse) entity).getInventory().contains(material))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (material.name()) {
|
||||||
|
case "SADDLE":
|
||||||
|
return !entity.getType().name().equals("RAVAGER");
|
||||||
|
case "DIAMOND_HORSE_ARMOR":
|
||||||
|
case "GOLDEN_HORSE_ARMOR":
|
||||||
|
case "IRON_HORSE_ARMOR":
|
||||||
|
case "LEATHER_HORSE_ARMOR":
|
||||||
|
case "CYAN_CARPET":
|
||||||
|
case "BLACK_CARPET":
|
||||||
|
case "BLUE_CARPET":
|
||||||
|
case "BROWN_CARPET":
|
||||||
|
case "GRAY_CARPET":
|
||||||
|
case "GREEN_CARPET":
|
||||||
|
case "LIGHT_BLUE_CARPET":
|
||||||
|
case "LIGHT_GRAY_CARPET":
|
||||||
|
case "LIME_CARPET":
|
||||||
|
case "MAGENTA_CARPET":
|
||||||
|
case "ORANGE_CARPET":
|
||||||
|
case "PINK_CARPET":
|
||||||
|
case "PURPLE_CARPET":
|
||||||
|
case "RED_CARPET":
|
||||||
|
case "WHITE_CARPET":
|
||||||
|
case "YELLOW_CARPET":
|
||||||
|
case "CARPET":
|
||||||
|
case "CHEST":
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -197,10 +197,6 @@ public class LootablesManager {
|
|||||||
new LootBuilder()
|
new LootBuilder()
|
||||||
.setMaterial(Material.GOLD_INGOT)
|
.setMaterial(Material.GOLD_INGOT)
|
||||||
.setChance(5)
|
.setChance(5)
|
||||||
.addOnlyDropFors(EntityType.PLAYER).build(),
|
|
||||||
new LootBuilder()
|
|
||||||
.setMaterial(Material.TRIDENT)
|
|
||||||
.setChance(1)
|
|
||||||
.addOnlyDropFors(EntityType.PLAYER).build()));
|
.addOnlyDropFors(EntityType.PLAYER).build()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user