19
19
import org .bukkit .event .block .BlockPlaceEvent ;
20
20
import org .bukkit .event .entity .EntityDamageByEntityEvent ;
21
21
import org .bukkit .event .entity .EntityShootBowEvent ;
22
+ import org .bukkit .event .player .PlayerHarvestBlockEvent ;
22
23
import org .bukkit .event .player .PlayerInteractEvent ;
23
24
import org .bukkit .inventory .ItemStack ;
24
25
@@ -113,6 +114,13 @@ public void onPlace(BlockPlaceEvent event) {
113
114
checkBlockRequirements (event .getPlayer (), event .getBlock ().getType (), event );
114
115
}
115
116
117
+ @ EventHandler (priority = EventPriority .HIGH )
118
+ public void onHarvest (PlayerHarvestBlockEvent event ) {
119
+ if (event .isCancelled ()) return ;
120
+ checkBlockRequirements (event .getPlayer (), event .getHarvestedBlock ().getType (), event );
121
+ }
122
+
123
+
116
124
@ EventHandler (priority = EventPriority .HIGH )
117
125
public void onAttack (EntityDamageByEntityEvent event ) {
118
126
if (event .isCancelled ()) return ;
@@ -168,7 +176,15 @@ private void checkItemRequirements(Player player, ItemStack item, Cancellable ev
168
176
}
169
177
170
178
private void checkBlockRequirements (Player player , Material material , Cancellable event ) {
171
- BlockRequirement blockRequirement = manager .getBlocks ().stream ().filter (b -> b .getMaterial () == material ).findFirst ().orElse (null );
179
+ BlockRequirement blockRequirement = null ;
180
+
181
+ for (BlockRequirement block : manager .getBlocks ()) {
182
+ if (block .getMaterial () == material ) {
183
+ blockRequirement = block ;
184
+ break ;
185
+ }
186
+ }
187
+
172
188
if (blockRequirement != null ) {
173
189
if (event instanceof BlockBreakEvent ) {
174
190
if (!blockRequirement .checksBreaking ()) return ;
@@ -180,7 +196,7 @@ private void checkBlockRequirements(Player player, Material material, Cancellabl
180
196
if (!node .check (player )) {
181
197
event .setCancelled (true );
182
198
String message = node .getDenyMessage ();
183
- if (!message .isEmpty ()) player .sendMessage (message );
199
+ if (!message .isEmpty ()) player .sendMessage (message );
184
200
}
185
201
}
186
202
}
0 commit comments