From ca6f504c61e48121ce8266cae96049b50d0f8982 Mon Sep 17 00:00:00 2001 From: Deltric Date: Wed, 30 Mar 2022 06:14:56 -0500 Subject: [PATCH 1/4] Fixes stack multiplication with unlimited placement (#4819) Clones the stack with a single amount instead of readding what they have left to their inventory. When the stack size is above 2 it caused a net gain in stack size which could easily fill your inventory. --- .../com/earth2me/essentials/EssentialsBlockListener.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java index d80298e1f20..de3ad29a1ee 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java @@ -3,6 +3,7 @@ import com.earth2me.essentials.utils.MaterialUtil; import net.ess3.api.IEssentials; import org.bukkit.GameMode; +import org.bukkit.Material; import org.bukkit.block.BlockState; import org.bukkit.block.CreatureSpawner; import org.bukkit.entity.EntityType; @@ -42,8 +43,12 @@ public void onBlockPlace(final BlockPlaceEvent event) { final User user = ess.getUser(event.getPlayer()); if (user.hasUnlimited(is) && user.getBase().getGameMode() == GameMode.SURVIVAL) { ess.scheduleSyncDelayedTask(() -> { - user.getBase().getInventory().addItem(is); - user.getBase().updateInventory(); + if(is.getType() != Material.AIR) { + final ItemStack cloneIs = is.clone(); + cloneIs.setAmount(1); + user.getBase().getInventory().addItem(cloneIs); + user.getBase().updateInventory(); + } }); } } From d1a4187aae4911f6501592f67476fa7219c3468d Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Tue, 5 Jul 2022 12:49:50 -0400 Subject: [PATCH 2/4] Update Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java --- .../java/com/earth2me/essentials/EssentialsBlockListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java index de3ad29a1ee..03919f696c8 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java @@ -43,7 +43,7 @@ public void onBlockPlace(final BlockPlaceEvent event) { final User user = ess.getUser(event.getPlayer()); if (user.hasUnlimited(is) && user.getBase().getGameMode() == GameMode.SURVIVAL) { ess.scheduleSyncDelayedTask(() -> { - if(is.getType() != Material.AIR) { + if(is != null && is.getType() != null && !MaterialUtil.isAir(is.getType())) { final ItemStack cloneIs = is.clone(); cloneIs.setAmount(1); user.getBase().getInventory().addItem(cloneIs); From a683a3bee713b8ba009fc3730369aa7680c4f438 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Tue, 5 Jul 2022 12:54:47 -0400 Subject: [PATCH 3/4] Update Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java --- .../java/com/earth2me/essentials/EssentialsBlockListener.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java index 03919f696c8..282e71cb735 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.utils.MaterialUtil; import net.ess3.api.IEssentials; import org.bukkit.GameMode; -import org.bukkit.Material; import org.bukkit.block.BlockState; import org.bukkit.block.CreatureSpawner; import org.bukkit.entity.EntityType; From 3372651cf8021da82bd1edff3d9aca097f620af2 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Tue, 5 Jul 2022 12:58:42 -0400 Subject: [PATCH 4/4] Update EssentialsBlockListener.java --- .../java/com/earth2me/essentials/EssentialsBlockListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java index 282e71cb735..dd700b2b5b9 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsBlockListener.java @@ -42,7 +42,7 @@ public void onBlockPlace(final BlockPlaceEvent event) { final User user = ess.getUser(event.getPlayer()); if (user.hasUnlimited(is) && user.getBase().getGameMode() == GameMode.SURVIVAL) { ess.scheduleSyncDelayedTask(() -> { - if(is != null && is.getType() != null && !MaterialUtil.isAir(is.getType())) { + if (is != null && is.getType() != null && !MaterialUtil.isAir(is.getType())) { final ItemStack cloneIs = is.clone(); cloneIs.setAmount(1); user.getBase().getInventory().addItem(cloneIs);