From d4181ce9900b8a3e51c9b49f6e352e9701c0c0d0 Mon Sep 17 00:00:00 2001 From: Dieu Date: Tue, 10 Sep 2024 00:40:14 +0200 Subject: [PATCH] Minor performance improvements --- .../compat/bukkit/model/BukkitShulkerBox.java | 5 +++-- .../utilities/collision/CollisionUtil.java | 17 +++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/NCPCompatBukkit/src/main/java/fr/neatmonster/nocheatplus/compat/bukkit/model/BukkitShulkerBox.java b/NCPCompatBukkit/src/main/java/fr/neatmonster/nocheatplus/compat/bukkit/model/BukkitShulkerBox.java index 6fcec063d..94757efea 100644 --- a/NCPCompatBukkit/src/main/java/fr/neatmonster/nocheatplus/compat/bukkit/model/BukkitShulkerBox.java +++ b/NCPCompatBukkit/src/main/java/fr/neatmonster/nocheatplus/compat/bukkit/model/BukkitShulkerBox.java @@ -20,6 +20,7 @@ import org.bukkit.block.Container; import fr.neatmonster.nocheatplus.utilities.map.BlockCache; +import org.bukkit.block.ShulkerBox; public class BukkitShulkerBox implements BukkitShapeModel { @@ -31,8 +32,8 @@ public double[] getShape(final BlockCache blockCache, final BlockState state = block.getState(); //final BlockData blockData = state.getBlockData(); - if (state instanceof Container) { - if (!((Container) state).getInventory().getViewers().isEmpty()) { + if (state instanceof ShulkerBox) { + if (!((ShulkerBox) state).getInventory().getViewers().isEmpty()) { return new double[] {0.0, 0.0, 0.0, 1.0, 1.5, 1.0}; } } diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/utilities/collision/CollisionUtil.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/utilities/collision/CollisionUtil.java index 75e8556d9..751afb391 100644 --- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/utilities/collision/CollisionUtil.java +++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/utilities/collision/CollisionUtil.java @@ -487,13 +487,18 @@ public static double axisDistance(final double pos, final double minPos, final d return pos < minPos ? Math.abs(pos - minPos) : (pos > maxPos ? Math.abs(pos - maxPos) : 0.0); } - public static boolean isCollidingWithEntities(final Player p, final boolean onlylivingenitites) { - if (onlylivingenitites) { - List entities = p.getNearbyEntities(0.15, 0.2, 0.15); - entities.removeIf(e -> !(e instanceof LivingEntity)); - return !entities.isEmpty(); + public static boolean isCollidingWithEntities(final Player p, final boolean onlyLivingEntities) { + double xzRange = 0.15; + double yRange = onlyLivingEntities ? 0.2 : 0.15; + + // Directly iterate over entities and check conditions to avoid unnecessary collection creation. + for (Entity entity : p.getWorld().getNearbyEntities(p.getLocation(), xzRange, yRange, xzRange)) { + if (!onlyLivingEntities || entity instanceof LivingEntity) { + return true; // Collision detected, return early + } } - return !p.getNearbyEntities(0.15, 0.15, 0.15).isEmpty(); + + return false; // No collision detected } /**