2525import com .sk89q .worldguard .bukkit .WorldGuardPlugin ;
2626import com .sk89q .worldguard .bukkit .cause .Cause ;
2727import com .sk89q .worldguard .bukkit .event .DelegateEvent ;
28- import com .sk89q .worldguard .bukkit .event .block .AbstractBlockEvent ;
2928import com .sk89q .worldguard .bukkit .event .block .BreakBlockEvent ;
3029import com .sk89q .worldguard .bukkit .event .block .PlaceBlockEvent ;
3130import com .sk89q .worldguard .bukkit .event .block .UseBlockEvent ;
116115import org .bukkit .event .entity .EntityDamageByEntityEvent ;
117116import org .bukkit .event .entity .EntityDamageEvent ;
118117import org .bukkit .event .entity .EntityDeathEvent ;
118+ import org .bukkit .event .entity .EntityEvent ;
119119import org .bukkit .event .entity .EntityExplodeEvent ;
120120import org .bukkit .event .entity .EntityInteractEvent ;
121121import org .bukkit .event .entity .EntityKnockbackByEntityEvent ;
@@ -181,9 +181,11 @@ public EventAbstractionListener(WorldGuardPlugin plugin) {
181181 public void registerEvents () {
182182 super .registerEvents ();
183183
184+ PluginManager pm = getPlugin ().getServer ().getPluginManager ();
184185 if (PaperLib .isPaper ()) {
185- PluginManager pm = getPlugin ().getServer ().getPluginManager ();
186186 pm .registerEvents (new EventAbstractionListener .PaperListener (), getPlugin ());
187+ } else {
188+ pm .registerEvents (new EventAbstractionListener .SpigotListener (), getPlugin ());
187189 }
188190 }
189191
@@ -359,10 +361,7 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) {
359361
360362 }
361363
362- @ EventHandler (ignoreCancelled = true )
363- public void onEntityKnockbackByEntity (EntityKnockbackByEntityEvent event ) {
364- Entity damager = event .getSourceEntity ();
365-
364+ private static <T extends EntityEvent & Cancellable > void handleKnockback (T event , Entity damager ) {
366365 final DamageEntityEvent eventToFire = new DamageEntityEvent (event , create (damager ), event .getEntity ());
367366 if (damager instanceof BreezeWindCharge ) {
368367 eventToFire .getRelevantFlags ().add (Flags .BREEZE_WIND_CHARGE );
@@ -372,24 +371,19 @@ public void onEntityKnockbackByEntity(EntityKnockbackByEntityEvent event) {
372371 Events .fireToCancel (event , eventToFire );
373372 }
374373
374+ @ SuppressWarnings ("UnstableApiUsage" )
375375 @ EventHandler (ignoreCancelled = true )
376376 public void onEntityExplode (EntityExplodeEvent event ) {
377377 Entity entity = event .getEntity ();
378- AbstractBlockEvent wgEvent ;
379-
380378 if (event .getExplosionResult () == ExplosionResult .TRIGGER_BLOCK ) {
381- wgEvent = new UseBlockEvent (event , create (entity ), event .getLocation ().getWorld (), event .blockList (), Material .AIR );
379+ UseBlockEvent useEvent = new UseBlockEvent (event , create (entity ), event .getLocation ().getWorld (), event .blockList (), Material .AIR );
380+ useEvent .getRelevantFlags ().add (Entities .getExplosionFlag (entity ));
381+ useEvent .setSilent (true );
382+ Events .fireBulkEventToCancel (event , useEvent );
382383 } else if (event .getExplosionResult () == ExplosionResult .DESTROY || event .getExplosionResult () == ExplosionResult .DESTROY_WITH_DECAY ) {
383- wgEvent = new BreakBlockEvent (event , create (entity ), event .getLocation ().getWorld (), event .blockList (), Material .AIR );
384- } else {
385- return ;
384+ Events .fireBulkEventToCancel (event , new BreakBlockEvent (event , create (entity ), event .getLocation ().getWorld (), event .blockList (), Material .AIR ));
386385 }
387386
388- wgEvent .getRelevantFlags ().add (Entities .getExplosionFlag (event .getEntity ()));
389-
390- wgEvent .setSilent (true );
391- Events .fireBulkEventToCancel (event , wgEvent );
392-
393387 if (entity instanceof Creeper ) {
394388 Cause .untrackParentCause (entity );
395389 }
@@ -1295,7 +1289,7 @@ private static void playDenyEffect(Location location) {
12951289 }
12961290 }
12971291
1298- private class PaperListener implements Listener {
1292+ private static class PaperListener implements Listener {
12991293 @ EventHandler (ignoreCancelled = true )
13001294 public void onEntityTransform (EntityZapEvent event ) {
13011295 Events .fireToCancel (event , new DamageEntityEvent (event , create (event .getBolt ()), event .getEntity ()));
@@ -1308,5 +1302,18 @@ public void onSignOpen(PlayerOpenSignEvent event) {
13081302 Events .fireToCancel (event , new UseBlockEvent (event , create (event .getPlayer ()), event .getSign ().getBlock ()));
13091303 }
13101304 }
1305+
1306+ @ EventHandler (ignoreCancelled = true )
1307+ public void onEntityKnockbackByEntity (com .destroystokyo .paper .event .entity .EntityKnockbackByEntityEvent event ) {
1308+ handleKnockback (event , event .getHitBy ());
1309+ }
1310+ }
1311+
1312+ @ SuppressWarnings ("removal" )
1313+ private static class SpigotListener implements Listener {
1314+ @ EventHandler (ignoreCancelled = true )
1315+ public void onEntityKnockbackByEntity (EntityKnockbackByEntityEvent event ) {
1316+ handleKnockback (event , event .getSourceEntity ());
1317+ }
13111318 }
13121319}
0 commit comments