Skip to content

Commit 9a0a189

Browse files
committed
fix item filter bug (fixed for shulkers, bundles, nbt chests, etc)
1 parent 8f79fd7 commit 9a0a189

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

src/main/java/dev/noah/perplayerkit/ItemFilter.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,19 @@
2020

2121
import org.bukkit.Bukkit;
2222
import org.bukkit.Material;
23+
import org.bukkit.block.Container;
2324
import org.bukkit.block.ShulkerBox;
2425
import org.bukkit.enchantments.Enchantment;
2526
import org.bukkit.inventory.ItemStack;
2627
import org.bukkit.inventory.meta.BlockStateMeta;
28+
import org.bukkit.inventory.meta.BundleMeta;
2729
import org.bukkit.inventory.meta.ItemMeta;
2830
import org.bukkit.plugin.Plugin;
2931

32+
import java.util.ArrayList;
3033
import java.util.Collection;
3134
import java.util.HashSet;
35+
import java.util.List;
3236
import java.util.Set;
3337

3438
public class ItemFilter {
@@ -71,11 +75,26 @@ public ItemStack[] filterItemStack(ItemStack[] input) {
7175

7276
if (item != null) {
7377

74-
if (item.getType().toString().contains("SHULKER_BOX")) {
75-
if (item.getItemMeta() instanceof BlockStateMeta blockStateMeta) {
76-
if (blockStateMeta.getBlockState() instanceof ShulkerBox shulker) {
77-
shulker.getInventory().setContents(filterItemStack(shulker.getInventory().getContents()));
78+
if (item.getItemMeta() instanceof BlockStateMeta blockStateMeta) {
79+
if (blockStateMeta.getBlockState() instanceof Container container) {
80+
container.getInventory().setContents(filterItemStack(container.getInventory().getContents()));
81+
blockStateMeta.setBlockState(container);
82+
item.setItemMeta(blockStateMeta);
83+
}
84+
}
85+
86+
// Handle bundles
87+
if (item.getItemMeta() instanceof BundleMeta bundleMeta) {
88+
List<ItemStack> bundleItems = bundleMeta.getItems();
89+
if (!bundleItems.isEmpty()) {
90+
List<ItemStack> filteredItems = new ArrayList<>();
91+
for (ItemStack bundleItem : bundleItems) {
92+
if (isSafe(bundleItem)) {
93+
filteredItems.add(bundleItem);
94+
}
7895
}
96+
bundleMeta.setItems(filteredItems);
97+
item.setItemMeta(bundleMeta);
7998
}
8099
}
81100
}
@@ -122,7 +141,7 @@ public void addToWhitelist(Collection<ItemStack[]> items) {
122141
for (ItemStack[] itemStacks : items) {
123142
for (ItemStack item : itemStacks) {
124143
if (item != null) {
125-
whitelist.add(item.getType().toString());
144+
whitelist.add(item.getType().toString());
126145
}
127146
}
128147
}
@@ -133,4 +152,4 @@ public void clearWhitelist() {
133152
}
134153

135154

136-
}
155+
}

0 commit comments

Comments
 (0)