From 64dbf4665ca7cb785bd9c7c4424529cfe4732595 Mon Sep 17 00:00:00 2001 From: Brianna Date: Mon, 22 Feb 2021 10:17:18 -0600 Subject: [PATCH 1/3] Fixed compatibility issue with Jobs. --- pom.xml | 5 ----- .../songoda/ultimatestacker/UltimateStacker.java | 4 ++-- .../ultimatestacker/hook/hooks/JobsHook.java | 16 ++++++---------- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index db6f8be..60576fe 100644 --- a/pom.xml +++ b/pom.xml @@ -126,11 +126,6 @@ Lootables 1.0.8 - - com.gamingmesh - jobs - 4.10.3 - com.bgsoftware wildstacker diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index 3f8d074..3cfac1b 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -192,9 +192,9 @@ public class UltimateStacker extends SongodaPlugin { pluginManager.registerEvents(new ClearLagListeners(this), this); // Register Hooks - if (pluginManager.isPluginEnabled("Jobs")) { + if (pluginManager.isPluginEnabled("Jobs")) stackerHooks.add(new JobsHook()); - } + HologramManager.load(this); // Database stuff, go! diff --git a/src/main/java/com/songoda/ultimatestacker/hook/hooks/JobsHook.java b/src/main/java/com/songoda/ultimatestacker/hook/hooks/JobsHook.java index 3ab30ae..e0f0400 100644 --- a/src/main/java/com/songoda/ultimatestacker/hook/hooks/JobsHook.java +++ b/src/main/java/com/songoda/ultimatestacker/hook/hooks/JobsHook.java @@ -1,30 +1,26 @@ package com.songoda.ultimatestacker.hook.hooks; -import com.gamingmesh.jobs.Jobs; -import com.gamingmesh.jobs.actions.EntityActionInfo; -import com.gamingmesh.jobs.container.ActionType; -import com.gamingmesh.jobs.container.JobsPlayer; +import com.songoda.core.hooks.jobs.JobsPlayerHandler; import com.songoda.ultimatestacker.hook.StackerHook; import com.songoda.ultimatestacker.stackable.entity.EntityStack; import org.bukkit.GameMode; -import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; public class JobsHook implements StackerHook { @Override public void applyExperience(Player player, EntityStack entityStack) { - if (player.getGameMode().equals(GameMode.CREATIVE)) + if (player.getGameMode().equals(GameMode.CREATIVE) || entityStack.getHostEntity() == null) return; - JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(player); + JobsPlayerHandler jPlayer = com.songoda.core.hooks.JobsHook.getPlayer(player); if (jPlayer == null) return; for (int i = 1; i < entityStack.getAmount(); i++) { - Entity entity = entityStack.getHostEntity(); - EntityActionInfo eInfo = new EntityActionInfo(entity, ActionType.KILL); - Jobs.action(jPlayer, eInfo, entity); + LivingEntity entity = entityStack.getHostEntity(); + jPlayer.killEntity(entity); } } } From 5767406c163de94d7d8cc7810b4abb227dd0eaa0 Mon Sep 17 00:00:00 2001 From: Brianna Date: Mon, 22 Feb 2021 11:30:14 -0600 Subject: [PATCH 2/3] Fixed an issue causing held items to not drop correctly in 1.16.5. --- .../listeners/DeathListeners.java | 49 +++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java index 561fe79..ded22b3 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java @@ -11,6 +11,7 @@ import org.bukkit.GameRule; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ChestedHorse; +import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; @@ -18,13 +19,17 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.inventory.ItemStack; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Random; +import java.util.UUID; import java.util.stream.Collectors; public class DeathListeners implements Listener { @@ -37,8 +42,23 @@ public class DeathListeners implements Listener { this.random = new Random(); } + + private final Map> finalItems = new HashMap<>(); + + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + public void onEntityDamage(EntityDamageEvent event) { + if (!(event.getEntity() instanceof LivingEntity)) + return; + LivingEntity entity = (LivingEntity) event.getEntity(); + + if (entity.getHealth() - event.getFinalDamage() < 0) + finalItems.put(entity.getUniqueId(), getItems(entity)); + + } + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onEntityDeath(EntityDeathEvent event) { + LivingEntity entity = event.getEntity(); if (event.getEntityType() == EntityType.PLAYER || event.getEntityType() == EntityType.ARMOR_STAND) return; @@ -54,25 +74,25 @@ public class DeathListeners implements Listener { } if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) - && !event.getEntity().getWorld().getGameRuleValue(GameRule.DO_MOB_LOOT)) + && !entity.getWorld().getGameRuleValue(GameRule.DO_MOB_LOOT)) drops.clear(); if (plugin.getEntityStackManager().isStackedAndLoaded(event.getEntity())) plugin.getEntityStackManager().getStack(event.getEntity()) - .onDeath(event.getEntity(), drops, custom, event.getDroppedExp(), event); + .onDeath(entity, drops, custom, event.getDroppedExp(), event); else DropUtils.processStackedDrop(event.getEntity(), drops, event); + finalItems.remove(entity.getUniqueId()); } private boolean shouldDrop(LivingEntity entity, Material material) { if (entity.getEquipment() != null && entity.getEquipment().getArmorContents().length != 0) { - List items = new ArrayList<>(Arrays.asList(entity.getEquipment().getArmorContents())); - items.add(entity.getEquipment().getItemInHand()); - if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) - items.add(entity.getEquipment().getItemInOffHand()); - for (ItemStack item : items) - if (item.getType() == material) - return true; + if (finalItems.containsKey(entity.getUniqueId())) { + List items = finalItems.get(entity.getUniqueId()); + for (ItemStack item : items) + if (item.getType() == material) + return true; + } } if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11) && entity instanceof ChestedHorse @@ -110,6 +130,17 @@ public class DeathListeners implements Listener { } } + public List getItems(LivingEntity entity) { + if (entity.getEquipment() != null && entity.getEquipment().getArmorContents().length != 0) { + List items = new ArrayList<>(Arrays.asList(entity.getEquipment().getArmorContents())); + items.add(entity.getEquipment().getItemInHand()); + if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) + items.add(entity.getEquipment().getItemInOffHand()); + return items; + } + return new ArrayList<>(); + } + @EventHandler public void onEntityHit(EntityDamageByEntityEvent event) { if (!(event.getDamager() instanceof Player) || ServerVersion.isServerVersionAtOrBelow(ServerVersion.V1_12)) From 786772f743b00817109e4b428c66a4f3bf9aba2c Mon Sep 17 00:00:00 2001 From: Brianna Date: Mon, 22 Feb 2021 11:30:41 -0600 Subject: [PATCH 3/3] version 2.1.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 60576fe..e092bac 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ com.songoda UltimateStacker 4.0.0 - 2.1.2b + 2.1.3 clean install UltimateStacker-${project.version}