9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-19 15:09:19 +00:00

chore: refactor UserSearchManager to PlayerSearchManager

This commit is contained in:
Logan
2025-12-16 12:06:21 -06:00
parent 19981b33d3
commit b4bd08c249
3 changed files with 30 additions and 31 deletions

View File

@@ -22,7 +22,7 @@ import com.hibiscusmc.hmccosmetics.listener.*;
import com.hibiscusmc.hmccosmetics.packets.CosmeticPacketInterface; import com.hibiscusmc.hmccosmetics.packets.CosmeticPacketInterface;
import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
import com.hibiscusmc.hmccosmetics.user.CosmeticUsers; 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.MessagesUtil;
import com.hibiscusmc.hmccosmetics.util.TranslationUtil; import com.hibiscusmc.hmccosmetics.util.TranslationUtil;
import lombok.Getter; import lombok.Getter;
@@ -51,7 +51,7 @@ public final class HMCCosmeticsPlugin extends HibiscusPlugin {
private static YamlConfigurationLoader configLoader; private static YamlConfigurationLoader configLoader;
@Getter @Getter
private UserSearchManager userSearchManager; private PlayerSearchManager playerSearchManager;
public HMCCosmeticsPlugin() { public HMCCosmeticsPlugin() {
super(13873, 1879); super(13873, 1879);
@@ -65,7 +65,7 @@ public final class HMCCosmeticsPlugin extends HibiscusPlugin {
instance = this; instance = this;
// Search Service // Search Service
this.userSearchManager = new UserSearchManager(); this.playerSearchManager = new PlayerSearchManager(this);
// File setup // File setup
saveDefaultConfig(); saveDefaultConfig();
@@ -108,7 +108,7 @@ public final class HMCCosmeticsPlugin extends HibiscusPlugin {
getServer().getPluginManager().registerEvents(new PlayerGameListener(), this); getServer().getPluginManager().registerEvents(new PlayerGameListener(), this);
getServer().getPluginManager().registerEvents(new ServerListener(), this); getServer().getPluginManager().registerEvents(new ServerListener(), this);
getServer().getPluginManager().registerEvents(new PlayerMovementListener(), this); getServer().getPluginManager().registerEvents(new PlayerMovementListener(), this);
getServer().getPluginManager().registerEvents(userSearchManager, this); getServer().getPluginManager().registerEvents(playerSearchManager, this);
if (HibiscusCommonsPlugin.isOnPaper()) { if (HibiscusCommonsPlugin.isOnPaper()) {
getServer().getPluginManager().registerEvents(new PaperPlayerGameListener(), this); getServer().getPluginManager().registerEvents(new PaperPlayerGameListener(), this);

View File

@@ -51,7 +51,7 @@ public class UserEntity {
} }
final List<Player> players = HMCCosmeticsPlugin.getInstance() final List<Player> players = HMCCosmeticsPlugin.getInstance()
.getUserSearchManager() .getPlayerSearchManager()
.getPlayersInRange(location, Settings.getViewDistance()); .getPlayersInRange(location, Settings.getViewDistance());
final ArrayList<UUID> newPlayerIds = new ArrayList<>(); final ArrayList<UUID> newPlayerIds = new ArrayList<>();

View File

@@ -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.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; 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.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent;
import org.jetbrains.annotations.NotNull;
import java.util.*; import java.util.*;
public class UserSearchManager implements Listener { public class PlayerSearchManager implements Listener {
private final Map<UUID, Octree<Player>> worldOctrees = new HashMap<>(); private final Map<UUID, Octree<Player>> worldOctrees = new HashMap<>();
private final Map<UUID, Octree.Point3D> playerPositions = new HashMap<>(); private final Map<UUID, Octree.Point3D> 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<Player> getOrCreateOctree(World world) { private Octree<Player> getOrCreateOctree(World world) {
return worldOctrees.computeIfAbsent(world.getUID(), $ -> { return worldOctrees.computeIfAbsent(world.getUID(), $ -> {
@@ -49,9 +55,8 @@ public class UserSearchManager implements Listener {
if (octree == null) return false; if (octree == null) return false;
Octree.Point3D point = playerPositions.remove(player.getUniqueId()); Octree.Point3D point = playerPositions.remove(player.getUniqueId());
if (point != null) { if (point != null) return octree.remove(point, player);
return octree.remove(point, player);
}
return false; return false;
} }
@@ -62,9 +67,7 @@ public class UserSearchManager implements Listener {
public List<Player> getPlayersInRange(Location location, double range) { public List<Player> getPlayersInRange(Location location, double range) {
Octree<Player> octree = worldOctrees.get(location.getWorld().getUID()); Octree<Player> octree = worldOctrees.get(location.getWorld().getUID());
if (octree == null) { if (octree == null) return Collections.emptyList();
return Collections.emptyList();
}
Octree.Point3D point = toPoint3D(location); Octree.Point3D point = toPoint3D(location);
Octree.BoundingBox searchArea = new Octree.BoundingBox(point, range); Octree.BoundingBox searchArea = new Octree.BoundingBox(point, range);
@@ -75,31 +78,27 @@ public class UserSearchManager implements Listener {
.toList(); .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() { public void clear() {
worldOctrees.clear(); worldOctrees.clear();
playerPositions.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) { public void onPlayerQuit(PlayerQuitEvent event) {
removePlayer(event.getPlayer()); removePlayer(event.getPlayer());
} }
@EventHandler @EventHandler(priority = EventPriority.NORMAL)
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
addPlayer(event.getPlayer()); addPlayer(event.getPlayer());
} }