1
1
package com .github .sarhatabaot .farmassistreboot .listeners ;
2
2
3
+ import com .cryptomorin .xseries .XMaterial ;
3
4
import com .github .sarhatabaot .farmassistreboot .Crop ;
4
5
import com .github .sarhatabaot .farmassistreboot .FarmAssistReboot ;
5
6
import com .github .sarhatabaot .farmassistreboot .Util ;
6
7
import com .github .sarhatabaot .farmassistreboot .messages .Debug ;
7
8
import com .github .sarhatabaot .farmassistreboot .messages .Permissions ;
9
+ import org .bukkit .Location ;
8
10
import org .bukkit .Material ;
11
+ import org .bukkit .World ;
9
12
import org .bukkit .block .Block ;
10
13
import org .bukkit .block .data .Ageable ;
11
14
import org .bukkit .entity .Player ;
12
15
import org .bukkit .event .EventHandler ;
13
16
import org .bukkit .event .EventPriority ;
14
17
import org .bukkit .event .Listener ;
15
18
import org .bukkit .event .block .BlockBreakEvent ;
19
+ import org .bukkit .inventory .ItemStack ;
16
20
import org .jetbrains .annotations .NotNull ;
17
21
22
+ import java .util .ArrayList ;
23
+ import java .util .Collection ;
24
+ import java .util .stream .Collectors ;
25
+
18
26
public class BlockBreakListener implements Listener {
19
27
private final FarmAssistReboot plugin ;
20
28
@@ -65,6 +73,17 @@ private boolean hasMaterialPermission(@NotNull BlockBreakEvent event) {
65
73
return event .getPlayer ().hasPermission (Permissions .BASE_PERMISSION + event .getBlock ().getType ().name ());
66
74
}
67
75
76
+ public void dropItemsNaturally (Location location , Collection <ItemStack > items ) {
77
+ World world = location .getWorld ();
78
+ if (world == null ) return ;
79
+
80
+ for (ItemStack item : items ) {
81
+ if (item == null || item .getType () == Material .AIR ) continue ;
82
+ world .dropItemNaturally (location , item );
83
+ }
84
+ }
85
+
86
+
68
87
private void applyReplant (@ NotNull BlockBreakEvent event ) {
69
88
final Material material = event .getBlock ().getType ();
70
89
final Player player = event .getPlayer ();
@@ -77,6 +96,12 @@ private void applyReplant(@NotNull BlockBreakEvent event) {
77
96
}
78
97
79
98
if (Util .checkNoDrops (player )) {
99
+ final XMaterial seed = Crop .valueOf (material .name ()).getSeed ();
100
+ final Collection <ItemStack > items = event .getBlock ().getDrops ().stream ()
101
+ .filter (itemStack -> itemStack .getType () != seed .get ())
102
+ .collect (Collectors .toList ());
103
+
104
+ dropItemsNaturally (event .getBlock ().getLocation (), items );
80
105
event .setDropItems (false );
81
106
}
82
107
0 commit comments