diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java index b93033ff..0f0adda9 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java @@ -22,7 +22,7 @@ import com.hibiscusmc.hmccosmetics.listener.*; import com.hibiscusmc.hmccosmetics.packets.CosmeticPacketInterface; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.user.CosmeticUsers; -import com.hibiscusmc.hmccosmetics.user.manager.UserSearchManager; +import com.hibiscusmc.hmccosmetics.util.PlayerSearchManager; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import com.hibiscusmc.hmccosmetics.util.TranslationUtil; import lombok.Getter; @@ -51,7 +51,7 @@ public final class HMCCosmeticsPlugin extends HibiscusPlugin { private static YamlConfigurationLoader configLoader; @Getter - private UserSearchManager userSearchManager; + private PlayerSearchManager playerSearchManager; public HMCCosmeticsPlugin() { super(13873, 1879); @@ -65,7 +65,7 @@ public final class HMCCosmeticsPlugin extends HibiscusPlugin { instance = this; // Search Service - this.userSearchManager = new UserSearchManager(); + this.playerSearchManager = new PlayerSearchManager(this); // File setup saveDefaultConfig(); @@ -108,7 +108,7 @@ public final class HMCCosmeticsPlugin extends HibiscusPlugin { getServer().getPluginManager().registerEvents(new PlayerGameListener(), this); getServer().getPluginManager().registerEvents(new ServerListener(), this); getServer().getPluginManager().registerEvents(new PlayerMovementListener(), this); - getServer().getPluginManager().registerEvents(userSearchManager, this); + getServer().getPluginManager().registerEvents(playerSearchManager, this); if (HibiscusCommonsPlugin.isOnPaper()) { getServer().getPluginManager().registerEvents(new PaperPlayerGameListener(), this); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserEntity.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserEntity.java index 65f30855..8bc645bd 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserEntity.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserEntity.java @@ -51,7 +51,7 @@ public class UserEntity { } final List players = HMCCosmeticsPlugin.getInstance() - .getUserSearchManager() + .getPlayerSearchManager() .getPlayersInRange(location, Settings.getViewDistance()); final ArrayList newPlayerIds = new ArrayList<>(); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserSearchManager.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/PlayerSearchManager.java similarity index 77% rename from common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserSearchManager.java rename to common/src/main/java/com/hibiscusmc/hmccosmetics/util/PlayerSearchManager.java index a5b245f6..474373d3 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserSearchManager.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/PlayerSearchManager.java @@ -1,6 +1,6 @@ -package com.hibiscusmc.hmccosmetics.user.manager; +package com.hibiscusmc.hmccosmetics.util; -import com.hibiscusmc.hmccosmetics.util.Octree; +import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; @@ -11,14 +11,20 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; +import org.jetbrains.annotations.NotNull; import java.util.*; -public class UserSearchManager implements Listener { +public class PlayerSearchManager implements Listener { private final Map> worldOctrees = new HashMap<>(); private final Map playerPositions = new HashMap<>(); - private static final double WORLD_HALF_SIZE = 30_000_000; + //private static final double WORLD_HALF_SIZE = 30_000_000; // Previous built in value + private final double WORLD_HALF_SIZE; + + public PlayerSearchManager(@NotNull HMCCosmeticsPlugin plugin) { + WORLD_HALF_SIZE = (double) plugin.getServer().getMaxWorldSize() / 2; + } private Octree getOrCreateOctree(World world) { return worldOctrees.computeIfAbsent(world.getUID(), $ -> { @@ -49,9 +55,8 @@ public class UserSearchManager implements Listener { if (octree == null) return false; Octree.Point3D point = playerPositions.remove(player.getUniqueId()); - if (point != null) { - return octree.remove(point, player); - } + if (point != null) return octree.remove(point, player); + return false; } @@ -62,9 +67,7 @@ public class UserSearchManager implements Listener { public List getPlayersInRange(Location location, double range) { Octree octree = worldOctrees.get(location.getWorld().getUID()); - if (octree == null) { - return Collections.emptyList(); - } + if (octree == null) return Collections.emptyList(); Octree.Point3D point = toPoint3D(location); Octree.BoundingBox searchArea = new Octree.BoundingBox(point, range); @@ -75,31 +78,27 @@ public class UserSearchManager implements Listener { .toList(); } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerMove(PlayerMoveEvent event) { - Player player = event.getPlayer(); - if (event.hasChangedBlock()) { - updatePlayerPosition(player); - } - } - - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerTeleport(PlayerTeleportEvent event) { - Player player = event.getPlayer(); - updatePlayerPosition(player); - } - public void clear() { worldOctrees.clear(); playerPositions.clear(); } - @EventHandler + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onPlayerMove(PlayerMoveEvent event) { + if (event.hasChangedBlock()) updatePlayerPosition(event.getPlayer()); + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onPlayerTeleport(PlayerTeleportEvent event) { + updatePlayerPosition(event.getPlayer()); + } + + @EventHandler(priority = EventPriority.NORMAL) public void onPlayerQuit(PlayerQuitEvent event) { removePlayer(event.getPlayer()); } - @EventHandler + @EventHandler(priority = EventPriority.NORMAL) public void onPlayerJoin(PlayerJoinEvent event) { addPlayer(event.getPlayer()); }