Fix wind charge/add new egg throw logging (#884)

This commit is contained in:
Warrior authored and GitHub committed 2026-04-22 16:40:19 -06:00
1 parent db94ad70eb
commit 0c389e92f3
3 files changed
+15 -2

No files matched your search

@@ -1,5 +1,6 @@
package net.coreprotect.listener.player; package net.coreprotect.listener.player;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
@@ -595,9 +596,11 @@ public final class PlayerInteractListener extends Queue implements Listener {
} }
if (event.useItemInHand() != Event.Result.DENY) { if (event.useItemInHand() != Event.Result.DENY) {
List<Material> 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); List<Material> entityBlockTypes = new ArrayList<>(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));
try { try {
entityBlockTypes.add(Material.valueOf("WIND_CHARGE")); entityBlockTypes.add(Material.valueOf("WIND_CHARGE"));
entityBlockTypes.add(Material.valueOf("BLUE_EGG"));
entityBlockTypes.add(Material.valueOf("BROWN_EGG"));
} }
catch (Exception e) { catch (Exception e) {
// not running MC 1.21+ // not running MC 1.21+
@@ -68,7 +68,7 @@ public final class ProjectileLaunchListener extends Queue implements Listener {
String name = pair.getKey(); String name = pair.getKey();
Object[] data = pair.getValue(); Object[] data = pair.getValue();
ItemStack itemStack = (ItemStack) data[3]; ItemStack itemStack = (ItemStack) data[3];
Material entityMaterial = EntityUtils.getEntityMaterial(event.getEntityType()); Material entityMaterial = EntityUtils.getEntityMaterial(event.getEntity());
boolean isBow = BOWS.contains(itemStack.getType()); boolean isBow = BOWS.contains(itemStack.getType());
if ((data[1].equals(key) || data[2].equals(key)) && (entityMaterial == itemStack.getType() || (itemStack.getType() == Material.LINGERING_POTION && entityMaterial == Material.SPLASH_POTION) || isBow)) { if ((data[1].equals(key) || data[2].equals(key)) && (entityMaterial == itemStack.getType() || (itemStack.getType() == Material.LINGERING_POTION && entityMaterial == Material.SPLASH_POTION) || isBow)) {
boolean thrownItem = (itemStack.getType() != Material.FIREWORK_ROCKET && !isBow); boolean thrownItem = (itemStack.getType() != Material.FIREWORK_ROCKET && !isBow);
@@ -3,11 +3,13 @@ package net.coreprotect.utility;
import java.util.Locale; import java.util.Locale;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import net.coreprotect.bukkit.BukkitAdapter; import net.coreprotect.bukkit.BukkitAdapter;
import net.coreprotect.config.ConfigHandler; import net.coreprotect.config.ConfigHandler;
import net.coreprotect.consumer.Queue; import net.coreprotect.consumer.Queue;
import org.bukkit.entity.ThrowableProjectile;
public class EntityUtils extends Queue { public class EntityUtils extends Queue {
@@ -50,6 +52,14 @@ public class EntityUtils extends Queue {
return id; return id;
} }
public static Material getEntityMaterial(final Entity entity) {
if (entity instanceof ThrowableProjectile) {
return ((ThrowableProjectile) entity).getItem().getType();
}
return getEntityMaterial(entity.getType());
}
public static Material getEntityMaterial(EntityType type) { public static Material getEntityMaterial(EntityType type) {
switch (type.name()) { switch (type.name()) {
case "ARMOR_STAND": case "ARMOR_STAND":