1
1
package io .github .thebusybiscuit .slimefun4 .implementation .listeners ;
2
2
3
+ import io .github .thebusybiscuit .slimefun4 .api .items .SlimefunItem ;
3
4
import io .github .thebusybiscuit .slimefun4 .implementation .Slimefun ;
5
+ import io .github .thebusybiscuit .slimefun4 .implementation .items .backpacks .SlimefunBackpack ;
4
6
import io .github .thebusybiscuit .slimefun4 .utils .tags .SlimefunTag ;
7
+ import org .bukkit .Material ;
8
+ import org .bukkit .event .EventHandler ;
5
9
import org .bukkit .event .Listener ;
6
- import org .bukkit .event .inventory .InventoryDragEvent ;
10
+ import org .bukkit .event .inventory .InventoryClickEvent ;
7
11
import org .bukkit .inventory .ItemStack ;
8
12
9
13
import javax .annotation .Nonnull ;
@@ -13,15 +17,34 @@ public BundlingListener(@Nonnull Slimefun plugin) {
13
17
plugin .getServer ().getPluginManager ().registerEvents (this , plugin );
14
18
}
15
19
16
- public void onBundling ( InventoryDragEvent event ) {
17
-
20
+ @ EventHandler ( ignoreCancelled = true )
21
+ public void onBundling ( InventoryClickEvent event ) {
18
22
ItemStack cursor = event .getCursor ();
19
- if (cursor == null ) {
23
+ ItemStack slot = event .getCurrentItem ();
24
+
25
+ if (slot == null ) {
20
26
return ;
21
27
}
22
28
23
- if (! SlimefunTag . BUNDLES . isTagged (cursor . getType () )) {
24
- return ;
29
+ if (isBundle (cursor ) && isBackpack ( slot ) || isBundle ( slot ) && isBackpack ( cursor )) {
30
+ event . setCancelled ( true ) ;
25
31
}
26
32
}
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
+ }
27
50
}
0 commit comments