From 42c6deff8a526578b44a90783056ce98da0bdea3 Mon Sep 17 00:00:00 2001 From: Intelli Date: Fri, 25 Feb 2022 19:23:53 -0700 Subject: [PATCH] Added logging and inventory rollback support for throwing snowballs and lingering potions --- .../coreprotect/listener/player/PlayerInteractListener.java | 2 +- .../coreprotect/listener/player/ProjectileLaunchListener.java | 3 ++- src/main/java/net/coreprotect/utility/Util.java | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java b/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java index a417d42..265654b 100755 --- a/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java +++ b/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java @@ -660,7 +660,7 @@ public final class PlayerInteractListener extends Queue implements Listener { } if (event.useItemInHand() != Event.Result.DENY) { - List entityBlockTypes = Arrays.asList(Material.ARMOR_STAND, Material.END_CRYSTAL, Material.BOW, Material.CROSSBOW, Material.TRIDENT, Material.EXPERIENCE_BOTTLE, Material.SPLASH_POTION, Material.ENDER_PEARL, Material.FIREWORK_ROCKET, Material.EGG); + List entityBlockTypes = Arrays.asList(Material.ARMOR_STAND, Material.END_CRYSTAL, Material.BOW, Material.CROSSBOW, Material.TRIDENT, Material.EXPERIENCE_BOTTLE, Material.SPLASH_POTION, Material.LINGERING_POTION, Material.ENDER_PEARL, Material.FIREWORK_ROCKET, Material.EGG, Material.SNOWBALL); ItemStack handItem = null; ItemStack mainHand = player.getInventory().getItemInMainHand(); ItemStack offHand = player.getInventory().getItemInOffHand(); diff --git a/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java b/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java index ce39046..df79d29 100644 --- a/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java +++ b/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java @@ -72,8 +72,9 @@ public class ProjectileLaunchListener extends Queue implements Listener { UUID uuid = pair.getKey(); Object[] data = pair.getValue(); ItemStack itemStack = (ItemStack) data[2]; + Material entityMaterial = Util.getEntityMaterial(event.getEntityType()); boolean isBow = BOWS.contains(itemStack.getType()); - if ((data[0].equals(key) || data[1].equals(key)) && (Util.getEntityMaterial(event.getEntityType()) == itemStack.getType() || isBow)) { + if ((data[0].equals(key) || data[1].equals(key)) && (entityMaterial == itemStack.getType() || (itemStack.getType() == Material.LINGERING_POTION && entityMaterial == Material.SPLASH_POTION) || isBow)) { Player player = Bukkit.getServer().getPlayer(uuid); boolean thrownItem = (itemStack.getType() != Material.FIREWORK_ROCKET && !isBow); diff --git a/src/main/java/net/coreprotect/utility/Util.java b/src/main/java/net/coreprotect/utility/Util.java index 25bbaab..4310861 100755 --- a/src/main/java/net/coreprotect/utility/Util.java +++ b/src/main/java/net/coreprotect/utility/Util.java @@ -813,6 +813,8 @@ public class Util extends Queue { return Material.FIREWORK_ROCKET; case EGG: return Material.EGG; + case SNOWBALL: + return Material.SNOWBALL; default: return BukkitAdapter.ADAPTER.getFrameType(type); }