diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 28795cfca..79639ba9d 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -276,7 +276,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { confList.add(pluginListener); final EssentialsPlayerListener playerListener = new EssentialsPlayerListener(this); - pm.registerEvents(playerListener, this); + playerListener.registerEvents(); final EssentialsBlockListener blockListener = new EssentialsBlockListener(this); pm.registerEvents(blockListener, this); diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 2b9a21900..446b17610 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -7,6 +7,8 @@ import com.earth2me.essentials.textreader.TextPager; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.LocationUtil; import net.ess3.api.IEssentials; +import net.ess3.nms.refl.ReflUtil; + import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; @@ -49,6 +51,15 @@ public class EssentialsPlayerListener implements Listener { this.ess = parent; } + public void registerEvents() { + ess.getServer().getPluginManager().registerEvents(this, ess); + if (ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_12_R1)) { + ess.getServer().getPluginManager().registerEvents(new PlayerListenerPre1_12(), ess); + } else { + ess.getServer().getPluginManager().registerEvents(new PlayerListener1_12(), ess); + } + } + @EventHandler(priority = EventPriority.NORMAL) public void onPlayerRespawn(final PlayerRespawnEvent event) { final User user = ess.getUser(event.getPlayer()); @@ -617,15 +628,6 @@ public class EssentialsPlayerListener implements Listener { return used; } - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onPlayerPickupItem(final PlayerPickupItemEvent event) { - if (ess.getSettings().getDisableItemPickupWhileAfk()) { - if (ess.getUser(event.getPlayer()).isAfk()) { - event.setCancelled(true); - } - } - } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onInventoryClickEvent(final InventoryClickEvent event) { Player refreshPlayer = null; @@ -719,4 +721,28 @@ public class EssentialsPlayerListener implements Listener { final User user = ess.getUser(event.getPlayer()); user.updateActivity(true); } + + private final class PlayerListenerPre1_12 implements Listener { + + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onPlayerPickupItem(final org.bukkit.event.player.PlayerPickupItemEvent event) { + if (ess.getSettings().getDisableItemPickupWhileAfk()) { + if (ess.getUser(event.getPlayer()).isAfk()) { + event.setCancelled(true); + } + } + } + } + + private final class PlayerListener1_12 implements Listener { + + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onPlayerPickupItem(final org.bukkit.event.entity.EntityPickupItemEvent event) { + if (ess.getSettings().getDisableItemPickupWhileAfk() && event.getEntity() instanceof Player) { + if (ess.getUser((Player) event.getEntity()).isAfk()) { + event.setCancelled(true); + } + } + } + } }