Skip to content

Commit 42655d1

Browse files
committed
Fix BundlingListener
1 parent 68e1bf0 commit 42655d1

File tree

1 file changed

+29
-6
lines changed

1 file changed

+29
-6
lines changed
Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package io.github.thebusybiscuit.slimefun4.implementation.listeners;
22

3+
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem;
34
import io.github.thebusybiscuit.slimefun4.implementation.Slimefun;
5+
import io.github.thebusybiscuit.slimefun4.implementation.items.backpacks.SlimefunBackpack;
46
import io.github.thebusybiscuit.slimefun4.utils.tags.SlimefunTag;
7+
import org.bukkit.Material;
8+
import org.bukkit.event.EventHandler;
59
import org.bukkit.event.Listener;
6-
import org.bukkit.event.inventory.InventoryDragEvent;
10+
import org.bukkit.event.inventory.InventoryClickEvent;
711
import org.bukkit.inventory.ItemStack;
812

913
import javax.annotation.Nonnull;
@@ -13,15 +17,34 @@ public BundlingListener(@Nonnull Slimefun plugin) {
1317
plugin.getServer().getPluginManager().registerEvents(this, plugin);
1418
}
1519

16-
public void onBundling(InventoryDragEvent event) {
17-
20+
@EventHandler(ignoreCancelled = true)
21+
public void onBundling(InventoryClickEvent event) {
1822
ItemStack cursor = event.getCursor();
19-
if (cursor == null) {
23+
ItemStack slot = event.getCurrentItem();
24+
25+
if (slot == null) {
2026
return;
2127
}
2228

23-
if (!SlimefunTag.BUNDLES.isTagged(cursor.getType())) {
24-
return;
29+
if (isBundle(cursor) && isBackpack(slot) || isBundle(slot) && isBackpack(cursor)) {
30+
event.setCancelled(true);
2531
}
2632
}
33+
34+
private boolean isBundle(ItemStack stack) {
35+
return SlimefunTag.BUNDLES.isTagged(stack.getType());
36+
}
37+
38+
private boolean isBackpack(ItemStack stack) {
39+
if (stack.getType() != Material.PLAYER_HEAD) {
40+
return false;
41+
}
42+
43+
SlimefunItem backpack = SlimefunItem.getByItem(stack);
44+
if (backpack == null) {
45+
return false;
46+
}
47+
48+
return backpack instanceof SlimefunBackpack;
49+
}
2750
}

0 commit comments

Comments
 (0)