From e7c56b32a4e9455e746382c001d23ea128991ba5 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Sun, 2 Apr 2023 18:29:29 -0400 Subject: [PATCH] Fix sulk sensors detecting vanished players (#5262) --- .../essentials/EssentialsPlayerListener.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java index c2dff750f..b4ba60e2f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java @@ -121,6 +121,15 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor { } } + private static boolean isGameEventEvent() { + try { + Class.forName("org.bukkit.event.block.BlockReceiveGameEvent"); + return true; + } catch (final ClassNotFoundException ignored) { + return false; + } + } + public void registerEvents() { ess.getServer().getPluginManager().registerEvents(this, ess); @@ -128,6 +137,10 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor { ess.getServer().getPluginManager().registerEvents(new ArrowPickupListener(), ess); } + if (isGameEventEvent()) { + ess.getServer().getPluginManager().registerEvents(new SculkListener1_17(), ess); + } + if (isEntityPickupEvent()) { ess.getServer().getPluginManager().registerEvents(new PickupListener1_12(), ess); } else { @@ -1001,6 +1014,15 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor { } } + private final class SculkListener1_17 implements Listener { + @EventHandler + public void onGameEvent(final org.bukkit.event.block.BlockReceiveGameEvent event) { + if (event.getEntity() instanceof Player && ess.getUser((Player) event.getEntity()).isVanished()) { + event.setCancelled(true); + } + } + } + private final class CommandSendFilter implements CommandSendListenerProvider.Filter { @Override public Predicate apply(Player player) {