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:
@@ -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);
|
||||||
|
|||||||
@@ -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<>();
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user