From 9e8ea58ca6221a7f2df00fe8708c711fbee0d97c Mon Sep 17 00:00:00 2001 From: Brianna Date: Thu, 12 Sep 2019 11:36:58 -0400 Subject: [PATCH 1/7] Fix for incompatibility. --- .../com/songoda/ultimatestacker/listeners/DeathListeners.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java index 28bdd5a..f05fdf5 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java @@ -114,7 +114,7 @@ public class DeathListeners implements Listener { if (Settings.KILL_WHOLE_STACK_ON_DEATH.getBoolean() && Settings.REALISTIC_DAMAGE.getBoolean()) { Player player = (Player) event.getDamager(); - ItemStack tool = player.getInventory().getItemInMainHand(); + ItemStack tool = player.getInventory().getItemInHand(); if (tool.getType().getMaxDurability() < 1 || (tool.getItemMeta() != null && (tool.getItemMeta().isUnbreakable() || (ServerProject.isServer(ServerProject.SPIGOT, ServerProject.PAPER) && tool.getItemMeta().spigot().isUnbreakable())))) return; @@ -131,7 +131,7 @@ public class DeathListeners implements Listener { tool.setItemMeta((ItemMeta) damageable); if (!this.hasEnoughDurability(tool, 1)) - player.getInventory().setItemInMainHand(null); + player.getInventory().setItemInHand(null); } } From a7cd1e6ffc371f8ebab81a8b0468364e40ee3dec Mon Sep 17 00:00:00 2001 From: Brianna Date: Thu, 12 Sep 2019 11:37:15 -0400 Subject: [PATCH 2/7] Version 1.10.6 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5891973..324f041 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ stages: variables: name: "UltimateStacker" path: "/builds/$CI_PROJECT_PATH" - version: "1.10.5" + version: "1.10.6" build: stage: build From 61e120c3caa4057bf171c67459aaf4cacad9db4b Mon Sep 17 00:00:00 2001 From: Lilac Date: Fri, 13 Sep 2019 22:45:03 +0100 Subject: [PATCH 3/7] Fixed realistic weapon damage on 1.13- --- .gitlab-ci.yml | 2 +- .../ultimatestacker/listeners/DeathListeners.java | 13 ++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 324f041..1dde94f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ stages: variables: name: "UltimateStacker" path: "/builds/$CI_PROJECT_PATH" - version: "1.10.6" + version: "1.10.7" build: stage: build diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java index f05fdf5..9164044 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java @@ -115,20 +115,18 @@ public class DeathListeners implements Listener { if (Settings.KILL_WHOLE_STACK_ON_DEATH.getBoolean() && Settings.REALISTIC_DAMAGE.getBoolean()) { Player player = (Player) event.getDamager(); ItemStack tool = player.getInventory().getItemInHand(); - if (tool.getType().getMaxDurability() < 1 || (tool.getItemMeta() != null && (tool.getItemMeta().isUnbreakable() + if (tool.getType().getMaxDurability() < 1 || (tool.getItemMeta() != null && (tool.getItemMeta().spigot().isUnbreakable() || (ServerProject.isServer(ServerProject.SPIGOT, ServerProject.PAPER) && tool.getItemMeta().spigot().isUnbreakable())))) return; int unbreakingLevel = tool.getEnchantmentLevel(Enchantment.DURABILITY); - Damageable damageable = (Damageable) tool.getItemMeta(); int actualDamage = 0; for (int i = 0; i < stack.getAmount(); i++) if (checkUnbreakingChance(unbreakingLevel)) actualDamage++; - damageable.setDamage(damageable.getDamage() + actualDamage-1); - tool.setItemMeta((ItemMeta) damageable); + tool.setDurability((short)(tool.getDurability() + actualDamage)); if (!this.hasEnoughDurability(tool, 1)) player.getInventory().setItemInHand(null); @@ -137,12 +135,9 @@ public class DeathListeners implements Listener { } public boolean hasEnoughDurability(ItemStack tool, int requiredAmount) { - if (!tool.hasItemMeta() || !(tool.getItemMeta() instanceof Damageable) || tool.getType().getMaxDurability() < 1) + if (tool.getType().getMaxDurability() <= 1) return true; - - Damageable damageable = (Damageable) tool.getItemMeta(); - int durabilityRemaining = tool.getType().getMaxDurability() - damageable.getDamage(); - return durabilityRemaining > requiredAmount; + return tool.getDurability() + requiredAmount <= tool.getType().getMaxDurability(); } public boolean checkUnbreakingChance(int level) { From 00a4e5e04855c5501526b3b8e73c9dff454fa5b6 Mon Sep 17 00:00:00 2001 From: songoda Date: Wed, 18 Sep 2019 12:02:35 -0400 Subject: [PATCH 4/7] Custom WorldGuard flag. --- .../com/songoda/ultimatestacker/UltimateStacker.java | 4 ++++ .../com/songoda/ultimatestacker/tasks/StackingTask.java | 9 +++++++++ src/main/resources/plugin.yml | 1 + 3 files changed, 14 insertions(+) diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index 446e434..ff1c319 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -12,6 +12,7 @@ import com.songoda.core.database.MySQLConnector; import com.songoda.core.database.SQLiteConnector; import com.songoda.core.gui.GuiManager; import com.songoda.core.hooks.HologramManager; +import com.songoda.core.hooks.WorldGuardHook; import com.songoda.core.utils.TextUtils; import com.songoda.ultimatestacker.commands.CommandConvert; import com.songoda.ultimatestacker.commands.CommandGiveSpawner; @@ -86,6 +87,9 @@ public class UltimateStacker extends SongodaPlugin { @Override public void onPluginLoad() { INSTANCE = this; + + // Register WorldGuard + WorldGuardHook.addHook("mob-stacking", true); } @Override diff --git a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java index 37556af..998f4a3 100644 --- a/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java +++ b/src/main/java/com/songoda/ultimatestacker/tasks/StackingTask.java @@ -1,5 +1,6 @@ package com.songoda.ultimatestacker.tasks; +import com.songoda.core.hooks.WorldGuardHook; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.entity.EntityStack; import com.songoda.ultimatestacker.entity.EntityStackManager; @@ -147,6 +148,10 @@ public class StackingTask extends BukkitRunnable { // Make sure the entity has not already been processed. if (this.processed.contains(entity.getUniqueId())) continue; + // Check our WorldGuard flag. + if (WorldGuardHook.isEnabled() && !WorldGuardHook.getBooleanFlag(entity.getLocation(), "mob-stacking")) + continue; + // Get this entities friendStack. EntityStack friendStack = stackManager.getStack(entity); @@ -210,6 +215,10 @@ public class StackingTask extends BukkitRunnable { // If our entity is stacked then skip this entity. if (isStack) return; + // Check our WorldGuard flag. + if (WorldGuardHook.isEnabled() && !WorldGuardHook.getBooleanFlag(livingEntity.getLocation(), "mob-stacking")) + return; + // Remove all stacked entities from our stackable friends. stackableFriends.removeIf(stackManager::isStacked); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 8f4bd86..110e9c1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -2,6 +2,7 @@ name: UltimateStacker description: UltimateStacker version: maven-version-number softdepend: [HolographicDisplays, WorldGuard, EpicSpawners, mcMMO] +loadbefore: [WorldGuard] main: com.songoda.ultimatestacker.UltimateStacker author: songoda api-version: 1.13 From 1ab2b0bdcf9e0a9f72e8368e6a02f56aea843b57 Mon Sep 17 00:00:00 2001 From: songoda Date: Wed, 18 Sep 2019 12:04:22 -0400 Subject: [PATCH 5/7] Version 1.10.7 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1dde94f..73dcc90 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ stages: variables: name: "UltimateStacker" path: "/builds/$CI_PROJECT_PATH" - version: "1.10.7" + version: "1.10.8" build: stage: build From ac39a0b9a0e98422ee8160af7740bc1912baafab Mon Sep 17 00:00:00 2001 From: songoda Date: Wed, 18 Sep 2019 12:33:33 -0400 Subject: [PATCH 6/7] Added item stacking for items with a max stack size lower than 64. --- .../com/songoda/ultimatestacker/UltimateStacker.java | 9 +++++---- .../songoda/ultimatestacker/listeners/ItemListeners.java | 4 ++-- .../com/songoda/ultimatestacker/settings/Settings.java | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index ff1c319..5d1c0b7 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -389,9 +389,9 @@ public class UltimateStacker extends SongodaPlugin { boolean blacklisted = isMaterialBlacklisted(itemStack); - if (newAmount > 32 && !blacklisted) { + if (newAmount > (itemStack.getMaxStackSize() / 2) && !blacklisted) { item.setMetadata("US_AMT", new FixedMetadataValue(INSTANCE, newAmount)); - itemStack.setAmount(32); + itemStack.setAmount(itemStack.getMaxStackSize() / 2); } else { item.removeMetadata("US_AMT", INSTANCE); itemStack.setAmount(newAmount); @@ -415,8 +415,9 @@ public class UltimateStacker extends SongodaPlugin { * @return stacker-corrected value for the stack size */ public static int getActualItemAmount(Item item) { - int amount = item.getItemStack().getAmount(); - if (amount >= 32 && item.hasMetadata("US_AMT")) { + ItemStack itemStack = item.getItemStack(); + int amount = itemStack.getAmount(); + if (amount >= (itemStack.getMaxStackSize() / 2) && item.hasMetadata("US_AMT")) { return item.getMetadata("US_AMT").get(0).asInt(); } else { return amount; diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/ItemListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/ItemListeners.java index cf3f165..0c98a43 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/ItemListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/ItemListeners.java @@ -75,13 +75,13 @@ public class ItemListeners implements Listener { return; //Compatibility with Shop instance: https://www.spigotmc.org/resources/shop-a-simple-intuitive-shop-instance.9628/ } - UltimateStacker.updateItemAmount(event.getEntity(), itemStack, event.getEntity().getItemStack().getAmount()); + UltimateStacker.updateItemAmount(event.getEntity(), itemStack, itemStack.getAmount()); } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onPickup(PlayerPickupItemEvent event) { if (!Settings.STACK_ITEMS.getBoolean()) return; - if (event.getItem().getItemStack().getAmount() < 32) return; + if (event.getItem().getItemStack().getAmount() < (event.getItem().getItemStack().getMaxStackSize() / 2)) return; event.setCancelled(true); event.getPlayer().playSound(event.getPlayer().getLocation(), CompatibleSound.ENTITY_ITEM_PICKUP.getSound(), .2f, (float) (1 + Math.random())); diff --git a/src/main/java/com/songoda/ultimatestacker/settings/Settings.java b/src/main/java/com/songoda/ultimatestacker/settings/Settings.java index f685199..db2813c 100644 --- a/src/main/java/com/songoda/ultimatestacker/settings/Settings.java +++ b/src/main/java/com/songoda/ultimatestacker/settings/Settings.java @@ -179,7 +179,7 @@ public class Settings { "This is added only because it looks smoother in game. This is only visual and", "doesn't actually effect the item."); - public static final ConfigSetting ITEM_BLACKLIST = new ConfigSetting(config, "Items.Blacklist", Collections.singletonList("EGG"), + public static final ConfigSetting ITEM_BLACKLIST = new ConfigSetting(config, "Items.Blacklist", Collections.singletonList("BARRIER"), "Items included in this list will stack to default Minecraft amounts.", "Material list: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html", "Leave this empty by using \"blacklist: []\" if you do not wish to disable", From e3cb4abe9b2100638f0ebc142d3cb0745c090afb Mon Sep 17 00:00:00 2001 From: songoda Date: Wed, 18 Sep 2019 12:36:51 -0400 Subject: [PATCH 7/7] Fixed issue with single max stacks. --- src/main/java/com/songoda/ultimatestacker/UltimateStacker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index 5d1c0b7..bbdfe5b 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -391,7 +391,7 @@ public class UltimateStacker extends SongodaPlugin { if (newAmount > (itemStack.getMaxStackSize() / 2) && !blacklisted) { item.setMetadata("US_AMT", new FixedMetadataValue(INSTANCE, newAmount)); - itemStack.setAmount(itemStack.getMaxStackSize() / 2); + itemStack.setAmount(Math.max(1, itemStack.getMaxStackSize() / 2)); } else { item.removeMetadata("US_AMT", INSTANCE); itemStack.setAmount(newAmount);