From 306e67d583aadbacacb2798538f5a9e87cdcd915 Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 26 Aug 2020 08:21:50 -0500 Subject: [PATCH 1/4] Fix nulled value. --- .../java/com/songoda/ultimatestacker/utils/CachedChunk.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/songoda/ultimatestacker/utils/CachedChunk.java b/src/main/java/com/songoda/ultimatestacker/utils/CachedChunk.java index e950c80..f6d8d2b 100644 --- a/src/main/java/com/songoda/ultimatestacker/utils/CachedChunk.java +++ b/src/main/java/com/songoda/ultimatestacker/utils/CachedChunk.java @@ -51,7 +51,8 @@ public class CachedChunk { if (!Bukkit.getWorld(world).isChunkLoaded(x, z)) { return new Entity[0]; } - return getChunk().getEntities(); + Chunk chunk = getChunk(); + return chunk == null ? new Entity[0] : getChunk().getEntities(); } @Override From b6046820bfa2cea52b5c1afc873914abc047366f Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 26 Aug 2020 08:24:18 -0500 Subject: [PATCH 2/4] Don't try and drop stacks of 0. --- .../com/songoda/ultimatestacker/listeners/EntityListeners.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java index e95bb07..6ef0884 100644 --- a/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java +++ b/src/main/java/com/songoda/ultimatestacker/listeners/EntityListeners.java @@ -76,7 +76,8 @@ public class EntityListeners implements Listener { ItemStack item = event.getEntity().getItemStack(); int amount = (stack.getAmount() - 1) + item.getAmount(); - item.setAmount(Math.min((stack.getAmount() - 1) + item.getAmount(), item.getMaxStackSize())); + if (amount < 1) return; + item.setAmount(Math.min(amount, item.getMaxStackSize())); if (amount > item.getMaxStackSize()) UltimateStacker.updateItemAmount(event.getEntity(), amount); event.getEntity().setItemStack(item); From ccd9b68d1ff9c07fbb6c7a81fd50f282bcca04e5 Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 26 Aug 2020 08:40:51 -0500 Subject: [PATCH 3/4] Added validation for stackables. --- .../com/songoda/ultimatestacker/UltimateStacker.java | 6 ++++++ .../songoda/ultimatestacker/stackable/Hologramable.java | 2 ++ .../com/songoda/ultimatestacker/stackable/Stackable.java | 7 ------- .../ultimatestacker/stackable/block/BlockStack.java | 7 ++++++- .../stackable/entity/ColdEntityStack.java | 7 ++++++- .../ultimatestacker/stackable/spawner/SpawnerStack.java | 8 +++++++- .../com/songoda/ultimatestacker/utils/Stackable.java | 9 +++++++++ 7 files changed, 36 insertions(+), 10 deletions(-) delete mode 100644 src/main/java/com/songoda/ultimatestacker/stackable/Stackable.java create mode 100644 src/main/java/com/songoda/ultimatestacker/utils/Stackable.java diff --git a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java index 93ebe90..0b3062c 100644 --- a/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java +++ b/src/main/java/com/songoda/ultimatestacker/UltimateStacker.java @@ -360,6 +360,12 @@ public class UltimateStacker extends SongodaPlugin { public void updateHologram(Hologramable stack) { + // Is this stack invalid? + if (!stack.isValid()) + if (stack instanceof BlockStack) + blockStackManager.removeBlock(stack.getLocation()); + else if (stack instanceof SpawnerStack) + spawnerStackManager.removeSpawner(stack.getLocation()); // are holograms enabled? if (!stack.areHologramsEnabled() && !HologramManager.getManager().isEnabled()) return; // create the hologram diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/Hologramable.java b/src/main/java/com/songoda/ultimatestacker/stackable/Hologramable.java index 88bcd02..26aee3a 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/Hologramable.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/Hologramable.java @@ -9,4 +9,6 @@ public interface Hologramable { String getHologramName(); boolean areHologramsEnabled(); + + boolean isValid(); } diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/Stackable.java b/src/main/java/com/songoda/ultimatestacker/stackable/Stackable.java deleted file mode 100644 index bca977b..0000000 --- a/src/main/java/com/songoda/ultimatestacker/stackable/Stackable.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.songoda.ultimatestacker.stackable; - - -public interface Stackable { - - int getAmount(); -} 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 5016b9c..3054473 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java @@ -4,7 +4,7 @@ import com.songoda.core.compatibility.CompatibleMaterial; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.settings.Settings; import com.songoda.ultimatestacker.stackable.Hologramable; -import com.songoda.ultimatestacker.stackable.Stackable; +import com.songoda.ultimatestacker.utils.Stackable; import com.songoda.ultimatestacker.utils.Methods; import org.bukkit.Location; import org.bukkit.World; @@ -34,6 +34,11 @@ public class BlockStack implements Stackable, Hologramable { return amount; } + @Override + public boolean isValid() { + return CompatibleMaterial.getMaterial(location.getBlock()) == material; + } + public void add(int amount) { this.amount = this.amount + amount; } diff --git a/src/main/java/com/songoda/ultimatestacker/stackable/entity/ColdEntityStack.java b/src/main/java/com/songoda/ultimatestacker/stackable/entity/ColdEntityStack.java index 6ab607b..0408e32 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/entity/ColdEntityStack.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/entity/ColdEntityStack.java @@ -3,7 +3,7 @@ package com.songoda.ultimatestacker.stackable.entity; import com.songoda.core.nms.NmsManager; import com.songoda.core.nms.nbt.NBTEntity; import com.songoda.ultimatestacker.UltimateStacker; -import com.songoda.ultimatestacker.stackable.Stackable; +import com.songoda.ultimatestacker.utils.Stackable; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; @@ -97,6 +97,11 @@ public class ColdEntityStack implements Stackable { return stackedEntities.size() + 1; } + @Override + public boolean isValid() { + return true; + } + public void createDuplicates(int duplicates) { this.createDuplicates = duplicates; } 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 d1e2951..91477c6 100644 --- a/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java +++ b/src/main/java/com/songoda/ultimatestacker/stackable/spawner/SpawnerStack.java @@ -1,10 +1,11 @@ package com.songoda.ultimatestacker.stackable.spawner; +import com.songoda.core.compatibility.CompatibleMaterial; import com.songoda.core.compatibility.ServerVersion; import com.songoda.ultimatestacker.UltimateStacker; import com.songoda.ultimatestacker.settings.Settings; import com.songoda.ultimatestacker.stackable.Hologramable; -import com.songoda.ultimatestacker.stackable.Stackable; +import com.songoda.ultimatestacker.utils.Stackable; import com.songoda.ultimatestacker.utils.Methods; import com.songoda.ultimatestacker.utils.Reflection; import org.bukkit.Bukkit; @@ -34,6 +35,11 @@ public class SpawnerStack implements Stackable, Hologramable { return amount; } + @Override + public boolean isValid() { + return CompatibleMaterial.getMaterial(location.getBlock()) == CompatibleMaterial.SPAWNER; + } + public void setAmount(int amount) { this.amount = amount; plugin.getDataManager().updateSpawner(this); diff --git a/src/main/java/com/songoda/ultimatestacker/utils/Stackable.java b/src/main/java/com/songoda/ultimatestacker/utils/Stackable.java new file mode 100644 index 0000000..e0556e7 --- /dev/null +++ b/src/main/java/com/songoda/ultimatestacker/utils/Stackable.java @@ -0,0 +1,9 @@ +package com.songoda.ultimatestacker.utils; + + +public interface Stackable { + + int getAmount(); + + boolean isValid(); +} From 2e8004e6a1f0b642930cff55f8c2b233422afe72 Mon Sep 17 00:00:00 2001 From: Brianna Date: Wed, 26 Aug 2020 09:24:56 -0500 Subject: [PATCH 4/4] version 2.0.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d228f09..6b16df2 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ com.songoda UltimateStacker 4.0.0 - 2 + 2.0.1 clean install UltimateStacker-${project.version}