From 49cd7b9692769714aef9aaa2535e6b5b27b47e15 Mon Sep 17 00:00:00 2001 From: Christian Koop Date: Sat, 22 Apr 2023 18:05:52 +0200 Subject: [PATCH 1/6] Updates SongodaCore v2.6.20 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7e0806b..0943359 100644 --- a/pom.xml +++ b/pom.xml @@ -122,7 +122,7 @@ com.songoda SongodaCore - 2.6.19 + 2.6.20 compile From 96d825044f694c2ef6cb18c178719f36ab611f03 Mon Sep 17 00:00:00 2001 From: Christian Koop Date: Sat, 22 Apr 2023 18:06:40 +0200 Subject: [PATCH 2/6] Move from deprecated BlockUtils#updateAdjacentComparators to WorldCore Fixes `java.lang.NoSuchMethodException: org.bukkit.craftbukkit.v1_19_R3.CraftChunk.getHandle()` in a mid-version NMS change in Spigot 1.19.4 --- .../listeners/item/ItemListeners.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java index f060c17..ce784f0 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java @@ -1,10 +1,11 @@ package com.songoda.ultimatestacker.listeners.item; -import com.songoda.core.utils.BlockUtils; +import com.songoda.core.nms.NmsManager; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.settings.Settings; import com.songoda.ultimatestacker.utils.Methods; import org.apache.commons.lang.StringUtils; +import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.entity.Item; import org.bukkit.event.EventHandler; @@ -60,12 +61,17 @@ public class ItemListeners implements Listener { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onInvPickup(InventoryPickupItemEvent event) { - if (!Settings.STACK_ITEMS.getBoolean() || !UltimateStacker.hasCustomAmount(event.getItem())) return; + if (!Settings.STACK_ITEMS.getBoolean() || !UltimateStacker.hasCustomAmount(event.getItem())) { + return; + } + event.setCancelled(true); Methods.updateInventory(event.getItem(), event.getInventory()); - if (event.getInventory().getHolder() instanceof BlockState) - BlockUtils.updateAdjacentComparators(((BlockState) event.getInventory().getHolder()).getLocation()); + if (event.getInventory().getHolder() instanceof BlockState) { + Block invHolder = ((BlockState) event.getInventory().getHolder()).getBlock(); + NmsManager.getWorld().updateAdjacentComparators(invHolder); + } } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) From d40db23f2f9faad3621e2b858bc6ac454688e007 Mon Sep 17 00:00:00 2001 From: ceze88 Date: Fri, 5 May 2023 10:57:07 +0200 Subject: [PATCH 3/6] Fix spawner stacking disabled mobs --- .../ultimatestacker/listeners/SpawnerListeners.java | 7 +++---- .../stackable/entity/EntityStackManager.java | 10 +--------- .../stackable/spawner/SpawnerStack.java | 7 ++++++- .../songoda/ultimatestacker/tasks/StackingTask.java | 12 ++++-------- 4 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java index 130cd2d..850264c 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/SpawnerListeners.java @@ -51,7 +51,6 @@ public class SpawnerListeners implements Listener { if (entity.getType() == EntityType.FIREWORK) return; if (entity.getVehicle() != null) { entity.getVehicle().remove(); - entity.remove(); } if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) { @@ -59,16 +58,16 @@ public class SpawnerListeners implements Listener { for (Entity e : entity.getPassengers()) { e.remove(); } - entity.remove(); } } - entity.remove(); Location location = event.getSpawner().getLocation(); SpawnerStack spawnerStack = spawnerStackManager.getSpawner(location); - int amountToSpawn = spawnerStack.calculateSpawnCount(); + int amountToSpawn = spawnerStack.calculateSpawnCount(entity.getType()); + if (amountToSpawn <= 1) return; + entity.remove(); spawnerStack.spawn(amountToSpawn, "EXPLOSION_NORMAL", null, (e) -> { if (Settings.NO_AI.getBoolean()) diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStackManager.java b/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStackManager.java index 19192bb..c3a0c7b 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStackManager.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStackManager.java @@ -1,21 +1,12 @@ package com.songoda.ultimatestacker.stackable.entity; import com.songoda.ultimatestacker.UltimateStacker; -import com.songoda.ultimatestacker.utils.Methods; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Chunk; -import org.bukkit.World; import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.metadata.FixedMetadataValue; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; import java.util.UUID; public class EntityStackManager { @@ -132,6 +123,7 @@ public class EntityStackManager { } public void setStack(LivingEntity newEntity, int amount) { + if (amount <= 0) return; if (isStackedEntity(newEntity)) { EntityStack stack = getStack(newEntity); stack.setAmount(amount); diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java b/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java index 8b657ae..d83d067 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java @@ -10,6 +10,7 @@ import com.songoda.ultimatestacker.utils.Stackable; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.CreatureSpawner; +import org.bukkit.entity.EntityType; import java.util.Random; import java.util.UUID; @@ -47,7 +48,11 @@ public class SpawnerStack extends SSpawner implements Stackable, Hologramable { plugin.getDataManager().updateSpawner(this); } - public int calculateSpawnCount() { + public int calculateSpawnCount(EntityType type) { + if (!UltimateStacker.getInstance().getMobFile().getBoolean("Mobs." + type.name() + ".Enabled")) { + return 0; + } + Random random = new Random(); int count = 0; for (int i = 0; i < getAmount(); i++) { diff --git a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java index b9661ef..ea2ec18 100644 --- a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java +++ b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java @@ -9,12 +9,9 @@ import com.songoda.ultimatestacker.settings.Settings; import com.songoda.ultimatestacker.stackable.entity.Check; import com.songoda.ultimatestacker.stackable.entity.EntityStack; import com.songoda.ultimatestacker.stackable.entity.EntityStackManager; -import com.songoda.ultimatestacker.stackable.entity.StackedEntity; import com.songoda.ultimatestacker.stackable.entity.custom.CustomEntity; -import com.songoda.ultimatestacker.utils.Async; import com.songoda.ultimatestacker.utils.CachedChunk; import org.bukkit.Bukkit; -import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; @@ -45,16 +42,12 @@ import org.bukkit.entity.TropicalFish; import org.bukkit.entity.Villager; import org.bukkit.entity.Wolf; import org.bukkit.entity.Zombie; -import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.inventory.EntityEquipment; -import org.bukkit.scheduler.BukkitRunnable; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -67,7 +60,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; public class StackingTask extends TimerTask { @@ -187,6 +179,10 @@ public class StackingTask extends TimerTask { || entity.hasMetadata("breedCooldown")) return false; + if (!configurationSection.getBoolean("Mobs." + entity.getType().name() + ".Enabled")) { + return false; + } + // Allow spawn if stackreasons are set and match, or if from a spawner final String spawnReason = entity.hasMetadata("US_REASON") && !entity.getMetadata("US_REASON").isEmpty() ? entity.getMetadata("US_REASON").get(0).asString() : null; From 4576a5c53ccbae2732abc84c674b47ca0dab310c Mon Sep 17 00:00:00 2001 From: ceze88 Date: Fri, 5 May 2023 10:57:17 +0200 Subject: [PATCH 4/6] Code cleanup --- .../songoda/ultimatestacker/UltimateStacker.java | 13 +++++++++---- .../ultimatestacker/commands/CommandConvert.java | 1 - .../ultimatestacker/commands/CommandRemoveAll.java | 1 - .../ultimatestacker/commands/CommandSpawn.java | 4 ---- .../ultimatestacker/convert/StackMobConvert.java | 4 ---- .../ultimatestacker/convert/WildStackerConvert.java | 7 ------- .../ultimatestacker/database/DataManager.java | 7 ------- .../songoda/ultimatestacker/gui/GUIConvertWhat.java | 2 -- .../ultimatestacker/listeners/BlockListeners.java | 3 --- .../ultimatestacker/listeners/BreedListeners.java | 3 +-- .../ultimatestacker/listeners/DeathListeners.java | 6 ++---- .../listeners/InteractListeners.java | 3 +-- .../ultimatestacker/listeners/ShearListeners.java | 3 +-- .../listeners/SheepDyeListeners.java | 3 +-- .../ultimatestacker/listeners/TameListeners.java | 3 +-- .../listeners/entity/EntityCurrentListener.java | 11 +---------- .../listeners/entity/EntityListeners.java | 9 ++++++--- .../listeners/item/ItemCurrentListener.java | 3 +-- .../listeners/item/ItemLegacyListener.java | 3 +-- .../listeners/item/ItemListeners.java | 5 ++--- .../ultimatestacker/lootables/LootablesManager.java | 2 -- .../ultimatestacker/stackable/block/BlockStack.java | 1 - .../stackable/entity/EntityStack.java | 9 --------- .../stackable/entity/StackedEntity.java | 1 - .../custom/entities/MythicMobsCustomEntity.java | 2 -- .../entities/MythicMobsCustomEntityLegacy.java | 4 ---- .../songoda/ultimatestacker/utils/CachedChunk.java | 1 - 27 files changed, 27 insertions(+), 87 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index a92b12e..3e9e106 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -30,7 +30,15 @@ import com.songoda.ultimatestacker.database.migrations._3_BlockStacks; import com.songoda.ultimatestacker.database.migrations._6_RemoveStackedEntityTable; import com.songoda.ultimatestacker.hook.StackerHook; import com.songoda.ultimatestacker.hook.hooks.JobsHook; -import com.songoda.ultimatestacker.listeners.*; +import com.songoda.ultimatestacker.listeners.BlockListeners; +import com.songoda.ultimatestacker.listeners.BreedListeners; +import com.songoda.ultimatestacker.listeners.ClearLagListeners; +import com.songoda.ultimatestacker.listeners.DeathListeners; +import com.songoda.ultimatestacker.listeners.InteractListeners; +import com.songoda.ultimatestacker.listeners.ShearListeners; +import com.songoda.ultimatestacker.listeners.SheepDyeListeners; +import com.songoda.ultimatestacker.listeners.SpawnerListeners; +import com.songoda.ultimatestacker.listeners.TameListeners; import com.songoda.ultimatestacker.listeners.entity.EntityCurrentListener; import com.songoda.ultimatestacker.listeners.entity.EntityListeners; import com.songoda.ultimatestacker.listeners.item.ItemCurrentListener; @@ -49,13 +57,11 @@ import com.songoda.ultimatestacker.stackable.spawner.SpawnerStackManager; import com.songoda.ultimatestacker.tasks.StackingTask; import com.songoda.ultimatestacker.utils.Async; import com.songoda.ultimatestacker.utils.Methods; -import io.lumine.mythic.bukkit.listeners.ChunkListeners; import org.apache.commons.lang.WordUtils; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; -import org.bukkit.block.Block; import org.bukkit.entity.EntityType; import org.bukkit.entity.Item; import org.bukkit.entity.Player; @@ -67,7 +73,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; -import java.util.Objects; import java.util.Set; public class UltimateStacker extends SongodaPlugin { diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java index beec318..e56f711 100644 --- a/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java +++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandConvert.java @@ -4,7 +4,6 @@ import com.songoda.core.commands.AbstractCommand; import com.songoda.core.gui.GuiManager; import com.songoda.core.utils.TextUtils; import com.songoda.ultimatestacker.gui.GUIConvert; -import com.songoda.ultimatestacker.utils.Methods; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandRemoveAll.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandRemoveAll.java index ea8cca8..87c5f01 100644 --- a/src/main/java/com/songoda/ultimatestacker/commands/CommandRemoveAll.java +++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandRemoveAll.java @@ -5,7 +5,6 @@ import com.songoda.core.utils.TextUtils; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.stackable.entity.EntityStack; import com.songoda.ultimatestacker.stackable.entity.EntityStackManager; -import com.songoda.ultimatestacker.utils.Methods; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/songoda/ultimatestacker/commands/CommandSpawn.java b/src/main/java/com/songoda/ultimatestacker/commands/CommandSpawn.java index c5b0e8f..58cb2de 100644 --- a/src/main/java/com/songoda/ultimatestacker/commands/CommandSpawn.java +++ b/src/main/java/com/songoda/ultimatestacker/commands/CommandSpawn.java @@ -4,9 +4,6 @@ import com.songoda.core.commands.AbstractCommand; import com.songoda.core.utils.TextUtils; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.stackable.entity.EntityStack; -import com.songoda.ultimatestacker.utils.Methods; -import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; @@ -14,7 +11,6 @@ import org.bukkit.entity.Player; import java.util.Arrays; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; /** diff --git a/src/main/java/com/songoda/ultimatestacker/convert/StackMobConvert.java b/src/main/java/com/songoda/ultimatestacker/convert/StackMobConvert.java index 96eb27a..deb6438 100644 --- a/src/main/java/com/songoda/ultimatestacker/convert/StackMobConvert.java +++ b/src/main/java/com/songoda/ultimatestacker/convert/StackMobConvert.java @@ -1,13 +1,9 @@ package com.songoda.ultimatestacker.convert; import com.songoda.ultimatestacker.UltimateStacker; -import com.songoda.ultimatestacker.stackable.entity.EntityStackManager; import org.bukkit.Bukkit; import uk.antiperson.stackmob.StackMob; -import java.util.Map; -import java.util.UUID; - public class StackMobConvert implements Convert { private final UltimateStacker plugin; diff --git a/src/main/java/com/songoda/ultimatestacker/convert/WildStackerConvert.java b/src/main/java/com/songoda/ultimatestacker/convert/WildStackerConvert.java index be50053..52a40b5 100644 --- a/src/main/java/com/songoda/ultimatestacker/convert/WildStackerConvert.java +++ b/src/main/java/com/songoda/ultimatestacker/convert/WildStackerConvert.java @@ -2,19 +2,12 @@ package com.songoda.ultimatestacker.convert; import com.bgsoftware.wildstacker.api.WildStackerAPI; import com.bgsoftware.wildstacker.api.objects.StackedSpawner; -import com.songoda.core.database.DatabaseConnector; -import com.songoda.core.database.SQLiteConnector; import com.songoda.ultimatestacker.UltimateStacker; -import com.songoda.ultimatestacker.stackable.entity.EntityStackManager; import com.songoda.ultimatestacker.stackable.spawner.SpawnerStack; import org.bukkit.Bukkit; import org.bukkit.block.CreatureSpawner; import org.bukkit.plugin.Plugin; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.UUID; - public class WildStackerConvert implements Convert { private Plugin wildStacker; diff --git a/src/main/java/com/songoda/ultimatestacker/database/DataManager.java b/src/main/java/com/songoda/ultimatestacker/database/DataManager.java index c258595..aa73caa 100644 --- a/src/main/java/com/songoda/ultimatestacker/database/DataManager.java +++ b/src/main/java/com/songoda/ultimatestacker/database/DataManager.java @@ -4,28 +4,21 @@ import com.songoda.core.compatibility.CompatibleMaterial; import com.songoda.core.database.DataManagerAbstract; import com.songoda.core.database.DatabaseConnector; import com.songoda.core.database.DatabaseType; -import com.songoda.ultimatestacker.settings.Settings; import com.songoda.ultimatestacker.stackable.block.BlockStack; -import com.songoda.ultimatestacker.stackable.entity.EntityStack; -import com.songoda.ultimatestacker.stackable.entity.StackedEntity; import com.songoda.ultimatestacker.stackable.spawner.SpawnerStack; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.plugin.Plugin; -import org.checkerframework.common.returnsreceiver.qual.This; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; -import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.function.Consumer; public class DataManager extends DataManagerAbstract { diff --git a/src/main/java/com/songoda/ultimatestacker/gui/GUIConvertWhat.java b/src/main/java/com/songoda/ultimatestacker/gui/GUIConvertWhat.java index bcb0269..a9b2c8a 100644 --- a/src/main/java/com/songoda/ultimatestacker/gui/GUIConvertWhat.java +++ b/src/main/java/com/songoda/ultimatestacker/gui/GUIConvertWhat.java @@ -4,9 +4,7 @@ import com.songoda.core.compatibility.CompatibleMaterial; import com.songoda.core.gui.Gui; import com.songoda.core.gui.GuiUtils; import com.songoda.core.utils.TextUtils; -import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.convert.Convert; -import com.songoda.ultimatestacker.utils.Methods; import org.bukkit.ChatColor; import org.bukkit.entity.Player; diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/BlockListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/BlockListeners.java index 02b32a5..7cf8cfe 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/BlockListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/BlockListeners.java @@ -3,7 +3,6 @@ package com.songoda.ultimatestacker.listeners; import com.songoda.core.compatibility.CompatibleHand; import com.songoda.core.compatibility.CompatibleMaterial; import com.songoda.core.hooks.ProtectionManager; -import com.songoda.core.hooks.protection.BentoBoxProtection; import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.events.SpawnerBreakEvent; @@ -13,7 +12,6 @@ import com.songoda.ultimatestacker.stackable.block.BlockStack; import com.songoda.ultimatestacker.stackable.block.BlockStackManager; import com.songoda.ultimatestacker.stackable.spawner.SpawnerStack; import com.songoda.ultimatestacker.utils.Methods; -import io.lumine.mythic.bukkit.utils.menu.ClickAction; import org.apache.commons.lang.math.NumberUtils; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -35,7 +33,6 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BlockStateMeta; import java.util.List; -import java.util.Map; public class BlockListeners implements Listener { diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/BreedListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/BreedListeners.java index d0d1899..af9f2e5 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/BreedListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/BreedListeners.java @@ -3,7 +3,6 @@ package com.songoda.ultimatestacker.listeners; import com.songoda.ultimatestacker.UltimateStacker; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityBreedEvent; import org.bukkit.metadata.FixedMetadataValue; @@ -16,7 +15,7 @@ public class BreedListeners implements Listener { this.plugin = plugin; } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onBread(EntityBreedEvent event) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { event.getFather().removeMetadata("breedCooldown", plugin); diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java index 4082770..ac556dd 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java @@ -13,12 +13,10 @@ 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; 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; @@ -47,7 +45,7 @@ public class DeathListeners implements Listener { private final Map> finalItems = new HashMap<>(); - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onEntityDamage(EntityDamageEvent event) { if (!(event.getEntity() instanceof LivingEntity)) return; @@ -58,7 +56,7 @@ public class DeathListeners implements Listener { } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onEntityDeath(EntityDeathEvent event) { LivingEntity entity = event.getEntity(); if (event.getEntityType() == EntityType.PLAYER diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java index 0d1b2ee..96eb7c8 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/InteractListeners.java @@ -16,7 +16,6 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Wolf; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.inventory.ItemStack; @@ -30,7 +29,7 @@ public class InteractListeners implements Listener { this.plugin = plugin; } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onInteract(PlayerInteractAtEntityEvent event) { if (!(event.getRightClicked() instanceof LivingEntity)) return; Player player = event.getPlayer(); diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java index 70ee389..3077b7a 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/ShearListeners.java @@ -15,7 +15,6 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.entity.MushroomCow; import org.bukkit.entity.Sheep; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerShearEntityEvent; import org.bukkit.inventory.ItemStack; @@ -30,7 +29,7 @@ public class ShearListeners implements Listener { this.plugin = plugin; } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onShear(PlayerShearEntityEvent event) { LivingEntity entity = (LivingEntity)event.getEntity(); diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java index 1fe55dd..914a835 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/SheepDyeListeners.java @@ -7,7 +7,6 @@ import com.songoda.ultimatestacker.stackable.entity.EntityStackManager; import com.songoda.ultimatestacker.stackable.entity.Split; import org.bukkit.entity.LivingEntity; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.SheepDyeWoolEvent; @@ -19,7 +18,7 @@ public class SheepDyeListeners implements Listener { this.plugin = plugin; } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onDye(SheepDyeWoolEvent event) { LivingEntity entity = event.getEntity(); diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/TameListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/TameListeners.java index ec93ed4..2335c64 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/TameListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/TameListeners.java @@ -5,7 +5,6 @@ import com.songoda.ultimatestacker.stackable.entity.EntityStack; import com.songoda.ultimatestacker.stackable.entity.EntityStackManager; import org.bukkit.entity.LivingEntity; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityTameEvent; @@ -17,7 +16,7 @@ public class TameListeners implements Listener { this.plugin = plugin; } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onTame(EntityTameEvent event) { LivingEntity entity = event.getEntity(); diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/entity/EntityCurrentListener.java b/src/main/java/com/songoda/ultimatestacker/listeners/entity/EntityCurrentListener.java index a32b96c..a976c2a 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/entity/EntityCurrentListener.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/entity/EntityCurrentListener.java @@ -1,21 +1,12 @@ package com.songoda.ultimatestacker.listeners.entity; import com.songoda.ultimatestacker.UltimateStacker; -import com.songoda.ultimatestacker.settings.Settings; import com.songoda.ultimatestacker.stackable.entity.EntityStack; import com.songoda.ultimatestacker.stackable.entity.EntityStackManager; -import org.bukkit.Bukkit; -import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityTransformEvent; -import org.bukkit.event.world.EntitiesLoadEvent; - -import java.util.Arrays; -import java.util.List; public class EntityCurrentListener implements Listener { @@ -25,7 +16,7 @@ public class EntityCurrentListener implements Listener { this.plugin = plugin; } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onSpawn(EntityTransformEvent event) { EntityStackManager stackManager = plugin.getEntityStackManager(); if (stackManager.isStackedEntity(event.getEntity()) diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/entity/EntityListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/entity/EntityListeners.java index a222fc8..93a21f8 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/entity/EntityListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/entity/EntityListeners.java @@ -22,7 +22,10 @@ import org.bukkit.entity.TNTPrimed; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.entity.*; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.util.Vector; @@ -39,7 +42,7 @@ public class EntityListeners implements Listener { this.plugin = plugin; } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onEgg(ItemSpawnEvent event) { Material material = event.getEntity().getItemStack().getType(); if (material != Material.EGG @@ -92,7 +95,7 @@ public class EntityListeners implements Listener { } } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onSpawn(CreatureSpawnEvent event) { event.getEntity().setMetadata("US_REASON", new FixedMetadataValue(plugin, event.getSpawnReason().name())); } diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemCurrentListener.java b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemCurrentListener.java index d3fe4dc..9f8d66c 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemCurrentListener.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemCurrentListener.java @@ -8,14 +8,13 @@ import org.bukkit.entity.Arrow; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.inventory.ItemStack; public class ItemCurrentListener implements Listener { - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onPickup(EntityPickupItemEvent event) { if (!Settings.STACK_ITEMS.getBoolean() || event.getItem() instanceof Arrow) return; // Amount here is not the total amount of item (32 if more than 32) but the amount of item the player can retrieve diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemLegacyListener.java b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemLegacyListener.java index 6544b4c..0454637 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemLegacyListener.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemLegacyListener.java @@ -7,14 +7,13 @@ import com.songoda.ultimatestacker.utils.Methods; import org.bukkit.entity.Arrow; import org.bukkit.entity.Item; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.inventory.ItemStack; public class ItemLegacyListener implements Listener { - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onPickup(PlayerPickupItemEvent event) { if (!Settings.STACK_ITEMS.getBoolean() || event.getItem() instanceof Arrow) return; // Amount here is not the total amount of item (32 if more than 32) but the amount of item the player can retrieve diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java index ce784f0..06f53e1 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/item/ItemListeners.java @@ -9,7 +9,6 @@ import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.entity.Item; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.ItemMergeEvent; import org.bukkit.event.entity.ItemSpawnEvent; @@ -59,7 +58,7 @@ public class ItemListeners implements Listener { event.getEntity().remove(); } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onInvPickup(InventoryPickupItemEvent event) { if (!Settings.STACK_ITEMS.getBoolean() || !UltimateStacker.hasCustomAmount(event.getItem())) { return; @@ -74,7 +73,7 @@ public class ItemListeners implements Listener { } } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler public void onExist(ItemSpawnEvent event) { if (!Settings.STACK_ITEMS.getBoolean()) return; diff --git a/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java b/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java index e8963ba..c099c80 100644 --- a/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java +++ b/src/main/java/com/songoda/ultimatestacker/lootables/LootablesManager.java @@ -11,8 +11,6 @@ import com.songoda.core.lootables.loot.LootManager; import com.songoda.core.lootables.loot.Lootable; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.settings.Settings; -import com.songoda.ultimatestacker.stackable.entity.custom.CustomEntity; -import com.songoda.ultimatestacker.stackable.entity.custom.CustomEntityManager; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Ageable; import org.bukkit.entity.Creeper; diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java b/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java index cc59b69..3e7d383 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java @@ -5,7 +5,6 @@ import com.songoda.core.utils.TextUtils; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.settings.Settings; import com.songoda.ultimatestacker.stackable.Hologramable; -import com.songoda.ultimatestacker.utils.Methods; import com.songoda.ultimatestacker.utils.Stackable; import org.bukkit.Location; import org.bukkit.World; diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java b/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java index 4b6b27f..b93b53f 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/EntityStack.java @@ -3,18 +3,12 @@ package com.songoda.ultimatestacker.stackable.entity; import com.songoda.core.compatibility.ServerVersion; import com.songoda.core.lootables.loot.Drop; import com.songoda.core.lootables.loot.DropUtils; -import com.songoda.core.nms.NmsManager; -import com.songoda.core.nms.nbt.NBTEntity; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.events.EntityStackKillEvent; import com.songoda.ultimatestacker.settings.Settings; -import com.songoda.ultimatestacker.stackable.entity.custom.CustomEntity; import com.songoda.ultimatestacker.utils.Async; -import com.songoda.ultimatestacker.utils.Methods; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; import org.bukkit.entity.ExperienceOrb; import org.bukkit.entity.LivingEntity; import org.bukkit.event.entity.EntityDamageEvent; @@ -22,11 +16,8 @@ import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Objects; -import java.util.concurrent.ThreadLocalRandom; public class EntityStack extends StackedEntity { diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/entity/StackedEntity.java b/src/main/java/com/songoda/ultimatestacker/stackable/entity/StackedEntity.java index 0558b97..ad424d9 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/StackedEntity.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/StackedEntity.java @@ -3,7 +3,6 @@ package com.songoda.ultimatestacker.stackable.entity; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.settings.Settings; import com.songoda.ultimatestacker.utils.Methods; -import org.bukkit.Bukkit; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.metadata.FixedMetadataValue; diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/entity/custom/entities/MythicMobsCustomEntity.java b/src/main/java/com/songoda/ultimatestacker/stackable/entity/custom/entities/MythicMobsCustomEntity.java index 3b1233d..714eb86 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/custom/entities/MythicMobsCustomEntity.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/custom/entities/MythicMobsCustomEntity.java @@ -1,6 +1,5 @@ package com.songoda.ultimatestacker.stackable.entity.custom.entities; -import com.songoda.ultimatestacker.stackable.entity.custom.CustomEntity; import io.lumine.mythic.api.mobs.MobManager; import io.lumine.mythic.bukkit.BukkitAdapter; import io.lumine.mythic.bukkit.MythicBukkit; @@ -8,7 +7,6 @@ import io.lumine.mythic.core.mobs.ActiveMob; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; public class MythicMobsCustomEntity extends MythicMobsProvider { diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/entity/custom/entities/MythicMobsCustomEntityLegacy.java b/src/main/java/com/songoda/ultimatestacker/stackable/entity/custom/entities/MythicMobsCustomEntityLegacy.java index fdd0c0f..252bec6 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/custom/entities/MythicMobsCustomEntityLegacy.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/custom/entities/MythicMobsCustomEntityLegacy.java @@ -1,16 +1,12 @@ package com.songoda.ultimatestacker.stackable.entity.custom.entities; -import com.songoda.ultimatestacker.stackable.entity.custom.CustomEntity; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; -import org.bukkit.plugin.Plugin; import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.Collection; import java.util.Objects; import java.util.UUID; diff --git a/src/main/java/com/songoda/ultimatestacker/utils/CachedChunk.java b/src/main/java/com/songoda/ultimatestacker/utils/CachedChunk.java index 732bffb..74233f1 100644 --- a/src/main/java/com/songoda/ultimatestacker/utils/CachedChunk.java +++ b/src/main/java/com/songoda/ultimatestacker/utils/CachedChunk.java @@ -1,7 +1,6 @@ package com.songoda.ultimatestacker.utils; import com.songoda.core.world.SWorld; -import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.World; From 91e31c24c3291345858bc019ad1837ab8afdf50d Mon Sep 17 00:00:00 2001 From: ceze88 Date: Fri, 5 May 2023 11:14:09 +0200 Subject: [PATCH 5/6] Fix compatibility issues with 3rd party loot plugins --- .../listeners/DeathListeners.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java index ac556dd..8a6ef9d 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java @@ -58,40 +58,42 @@ public class DeathListeners implements Listener { @EventHandler public void onEntityDeath(EntityDeathEvent event) { + boolean custom = Settings.CUSTOM_DROPS.getBoolean(); + + if (!custom) return; //Compatibility with other plugins + LivingEntity entity = event.getEntity(); + + if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) + && !entity.getWorld().getGameRuleValue(GameRule.DO_MOB_LOOT)) { + return; + } + if (event.getEntityType() == EntityType.PLAYER || event.getEntityType() == EntityType.ARMOR_STAND) return; //Respect MythicMobs if (plugin.getCustomEntityManager().isCustomEntity(entity)) return; - boolean custom = Settings.CUSTOM_DROPS.getBoolean(); - List drops = custom ? plugin.getLootablesManager().getDrops(event.getEntity()) - : event.getDrops().stream().map(Drop::new).collect(Collectors.toList()); - if (custom) { - for (ItemStack item : new ArrayList<>(event.getDrops())) { - if (shouldDrop(event.getEntity(), item.getType())) - drops.add(new Drop(item)); - } + List drops = plugin.getLootablesManager().getDrops(event.getEntity()); + + for (ItemStack item : new ArrayList<>(event.getDrops())) { + if (shouldDrop(event.getEntity(), item.getType())) + drops.add(new Drop(item)); } - if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) - && !entity.getWorld().getGameRuleValue(GameRule.DO_MOB_LOOT)) - drops.clear(); - if (plugin.getCustomEntityManager().getCustomEntity(entity) == null) { //replace %player% in drop commands with the last player to damage the entity //Run commands here, or it will be buggy runCommands(entity, drops); if (plugin.getEntityStackManager().isStackedEntity(event.getEntity())) { - plugin.getEntityStackManager().getStack(event.getEntity()).onDeath(entity, drops, custom, event.getDroppedExp(), event); + plugin.getEntityStackManager().getStack(event.getEntity()).onDeath(entity, drops, true, event.getDroppedExp(), event); } else { DropUtils.processStackedDrop(event.getEntity(), drops, event); } } - finalItems.remove(entity.getUniqueId()); } From 7e740f2647ff379fb91344d47079110d242ad540 Mon Sep 17 00:00:00 2001 From: ceze88 Date: Fri, 5 May 2023 11:19:20 +0200 Subject: [PATCH 6/6] Release 2.4.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0943359..bfae19c 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ com.songoda UltimateStacker 4.0.0 - 2.4.0 + 2.4.1 clean install UltimateStacker-${project.version}