From d12e5b3f9860c902f0a15cda6b9701c61987f325 Mon Sep 17 00:00:00 2001 From: Nekoneko Date: Wed, 17 Jun 2020 00:13:42 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=82=E3=81=97=E3=83=84=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=82=92=E7=99=BA=E5=B0=84=E5=87=BA=E6=9D=A5=E3=81=9F=E6=99=82?= =?UTF-8?q?=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E3=82=92=E5=8F=96=E3=82=8A?= =?UTF-8?q?=E6=B6=88=E3=81=99=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= =?UTF-8?q?=20(Close=20#5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/invisible/InvisibleListener.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/java/com/rathserver/event/invisible/InvisibleListener.java b/src/main/java/com/rathserver/event/invisible/InvisibleListener.java index 008c159..3f6a0a4 100644 --- a/src/main/java/com/rathserver/event/invisible/InvisibleListener.java +++ b/src/main/java/com/rathserver/event/invisible/InvisibleListener.java @@ -28,11 +28,13 @@ import org.bukkit.Sound; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerInteractEvent; @@ -97,6 +99,25 @@ public void pvp(EntityDamageByEntityEvent event) { if (inventory.contains(this.plugin.getInvisibleActiveItem())) event.setCancelled(true); } + @EventHandler + public void projectileLaunch(ProjectileLaunchEvent event) { + Projectile entity = event.getEntity(); + if (entity.getType() != EntityType.ENDER_PEARL && entity.getType() != EntityType.ENDER_SIGNAL) { + return; + } + if (entity.getShooter() instanceof Player) { + Player shooter = (Player) entity.getShooter(); + ItemStack itemStack = shooter.getInventory().getItemInMainHand(); + if (!itemStack.equals(this.plugin.getInvisibleActiveItem()) && !itemStack.equals(this.plugin.getInvisibleDeActiveItem())) { + itemStack = shooter.getInventory().getItemInOffHand(); + if (!itemStack.equals(this.plugin.getInvisibleActiveItem()) && !itemStack.equals(this.plugin.getInvisibleDeActiveItem())) { + return; + } + } + event.setCancelled(true); + } + } + @EventHandler public void playerInteract(PlayerInteractEvent event) { if (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.RIGHT_CLICK_AIR) {