3
3
import org .bukkit .Location ;
4
4
import org .bukkit .entity .EntityType ;
5
5
import org .bukkit .entity .Player ;
6
+ import org .bukkit .entity .Projectile ;
6
7
import org .bukkit .event .Event ;
7
8
import org .bukkit .event .EventHandler ;
8
9
import org .bukkit .event .EventPriority ;
15
16
import io .github .invvk .wgef .abstraction .WGEFUtils ;
16
17
import io .github .invvk .wgef .abstraction .flags .WGEFlags ;
17
18
19
+ import java .util .Objects ;
20
+
18
21
public final class EntityBreakListener implements Listener {
19
22
20
23
private final WGEFPlugin plugin ;
@@ -26,11 +29,15 @@ public EntityBreakListener(WGEFPlugin plugin) {
26
29
27
30
@ EventHandler (priority = EventPriority .LOWEST )
28
31
public void onEntityDamage (DamageEntityEvent e ) {
29
- if (!(e .getOriginalEvent () instanceof EntityDamageByEntityEvent original ) || !( original . getDamager () instanceof Player damager ) ) {
32
+ if (!(e .getOriginalEvent () instanceof EntityDamageByEntityEvent original )) {
30
33
return ;
31
34
}
32
35
33
- e .setResult (resolveBreakResult (damager , e .getEntity ().getType (), e .getTarget (), WGEFlags .ALLOW_ENTITY_DAMAGE , WGEFlags .DENY_ENTITY_DAMAGE ));
36
+ if (original .getDamager () instanceof Player player ) {
37
+ e .setResult (resolveBreakResult (player , e .getEntity ().getType (), e .getTarget (), WGEFlags .ALLOW_ENTITY_DAMAGE , WGEFlags .DENY_ENTITY_DAMAGE ));
38
+ } else if (original .getDamager () instanceof Projectile projectile && projectile .getShooter () instanceof Player player ) {
39
+ e .setResult (resolveBreakResult (player , e .getEntity ().getType (), e .getTarget (), WGEFlags .ALLOW_ENTITY_DAMAGE , WGEFlags .DENY_ENTITY_DAMAGE ));
40
+ }
34
41
}
35
42
36
43
@ EventHandler (priority = EventPriority .LOWEST )
0 commit comments