11package io .github .thebusybiscuit .slimefun4 .implementation .listeners ;
22
3+ import io .github .thebusybiscuit .slimefun4 .api .items .SlimefunItem ;
34import io .github .thebusybiscuit .slimefun4 .implementation .Slimefun ;
5+ import io .github .thebusybiscuit .slimefun4 .implementation .items .backpacks .SlimefunBackpack ;
46import io .github .thebusybiscuit .slimefun4 .utils .tags .SlimefunTag ;
7+ import org .bukkit .Material ;
8+ import org .bukkit .event .EventHandler ;
59import org .bukkit .event .Listener ;
6- import org .bukkit .event .inventory .InventoryDragEvent ;
10+ import org .bukkit .event .inventory .InventoryClickEvent ;
711import org .bukkit .inventory .ItemStack ;
812
913import 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