From 5e8a2ead23d2d5b2444517d130ac1111ebacd9b2 Mon Sep 17 00:00:00 2001 From: Bill Date: Sun, 10 Dec 2023 08:57:18 -0500 Subject: [PATCH] Fix pack stacking exploit --- .../listeners/SeedPackListener.java | 53 ++++++++++--------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/src/main/java/dev/sefiraat/cultivation/implementation/listeners/SeedPackListener.java b/src/main/java/dev/sefiraat/cultivation/implementation/listeners/SeedPackListener.java index 4a08058..ca58b00 100644 --- a/src/main/java/dev/sefiraat/cultivation/implementation/listeners/SeedPackListener.java +++ b/src/main/java/dev/sefiraat/cultivation/implementation/listeners/SeedPackListener.java @@ -38,35 +38,38 @@ public void onPickupItem(@Nonnull EntityPickupItemEvent event) { for (ItemStack content : player.getInventory().getContents()) { SlimefunItem packItem = SlimefunItem.getByItem(content); if (packItem instanceof SeedPack) { - ItemMeta contentMeta = content.getItemMeta(); - SeedPackInstance instance = PersistentDataAPI.get( - contentMeta, - SeedPackDataType.KEY, - SeedPackDataType.TYPE - ); + int packStack = content.getAmount(); + if (packStack <= 1) { + ItemMeta contentMeta = content.getItemMeta(); + SeedPackInstance instance = PersistentDataAPI.get( + contentMeta, + SeedPackDataType.KEY, + SeedPackDataType.TYPE + ); - if (instance == null || !instance.getStoredItemId().equals(plant.getId())) { - continue; - } + if (instance == null || !instance.getStoredItemId().equals(plant.getId())) { + continue; + } - ItemMeta dropMeta = itemStack.getItemMeta(); - FloraLevelProfile profile = PersistentDataAPI.get( - dropMeta, - FloraLevelProfileDataType.KEY, - FloraLevelProfileDataType.TYPE - ); + ItemMeta dropMeta = itemStack.getItemMeta(); + FloraLevelProfile profile = PersistentDataAPI.get( + dropMeta, + FloraLevelProfileDataType.KEY, + FloraLevelProfileDataType.TYPE + ); - if (profile == null) { - continue; - } + if (profile == null) { + continue; + } - instance.add(profile, itemStack.getAmount()); - PersistentDataAPI.set(contentMeta, SeedPackDataType.KEY, SeedPackDataType.TYPE, instance); - content.setItemMeta(contentMeta); - event.setCancelled(true); - ParticleUtils.displayParticleRandomly(item, 0.5, 5, plant.getTheme().getDustOptions(1)); - item.remove(); - return; + instance.add(profile, itemStack.getAmount()); + PersistentDataAPI.set(contentMeta, SeedPackDataType.KEY, SeedPackDataType.TYPE, instance); + content.setItemMeta(contentMeta); + event.setCancelled(true); + ParticleUtils.displayParticleRandomly(item, 0.5, 5, plant.getTheme().getDustOptions(1)); + item.remove(); + return; + } } } }