From 2a75aca157c700cb317085f42627cb9abbcd9d6b Mon Sep 17 00:00:00 2001 From: Sekwah Date: Thu, 29 Aug 2024 18:02:19 +0200 Subject: [PATCH] fix: improve performance by fetching materials only once --- .../advancedportals/bukkit/listeners/Listeners.java | 4 +++- .../advancedportals/bukkit/portals/Portal.java | 13 +++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/sekwah/advancedportals/bukkit/listeners/Listeners.java b/src/main/java/com/sekwah/advancedportals/bukkit/listeners/Listeners.java index 44e86f71..75ea048f 100644 --- a/src/main/java/com/sekwah/advancedportals/bukkit/listeners/Listeners.java +++ b/src/main/java/com/sekwah/advancedportals/bukkit/listeners/Listeners.java @@ -102,9 +102,11 @@ public class Listeners implements Listener { Location loc = player.getLocation(); Location eyeLoc = player.getEyeLocation(); UUID uuid = player.getUniqueId(); + Material block = loc.getBlock().getType(); + Material eyeBlock = eyeLoc.getBlock().getType(); for (AdvancedPortal portal : Portal.portals) { if (!portal.inPortal.contains(uuid) - && (Portal.locationInPortalTrigger(portal, loc) || Portal.locationInPortalTrigger(portal, eyeLoc))) { + && (Portal.locationInPortalTrigger(portal, loc, block) || Portal.locationInPortalTrigger(portal, eyeLoc, eyeBlock))) { portal.inPortal.add(uuid); } } diff --git a/src/main/java/com/sekwah/advancedportals/bukkit/portals/Portal.java b/src/main/java/com/sekwah/advancedportals/bukkit/portals/Portal.java index de9c7e3f..1c1f90ea 100644 --- a/src/main/java/com/sekwah/advancedportals/bukkit/portals/Portal.java +++ b/src/main/java/com/sekwah/advancedportals/bukkit/portals/Portal.java @@ -694,14 +694,23 @@ public class Portal { } public static boolean inPortalTriggerRegion(Location loc) { + Material block = loc.getBlock().getType(); for (AdvancedPortal portal : Portal.portals) - if (Portal.locationInPortalTrigger(portal, loc)) + if (Portal.locationInPortalTrigger(portal, loc, block)) return true; return false; } public static boolean locationInPortalTrigger(AdvancedPortal portal, Location loc, int additionalArea) { - return portal.getTriggers().contains(loc.getBlock().getType()) && locationInPortal(portal, loc, additionalArea); + return locationInPortalTrigger(portal, loc, additionalArea, loc.getBlock().getType()); + } + + public static boolean locationInPortalTrigger(AdvancedPortal portal, Location loc, int additionalArea, Material type) { + return portal.getTriggers().contains(type) && locationInPortal(portal, loc, additionalArea); + } + + public static boolean locationInPortalTrigger(AdvancedPortal portal, Location loc, Material type) { + return locationInPortalTrigger(portal, loc, 0, type); } public static boolean locationInPortalTrigger(AdvancedPortal portal, Location loc) {