Added hashmaps for Bungee player data for better efficiency.

This commit is contained in:
Aust1n46 2021-02-13 22:33:35 -06:00
parent ff0441de4c
commit a1e8b7bb4f
3 changed files with 27 additions and 22 deletions

View File

@ -7,7 +7,6 @@ import java.util.UUID;
import org.bukkit.entity.Player;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.bungee.MineverseChatBungee;
/**
* API class for looking up wrapped {@link MineverseChatPlayer} objects from
@ -19,7 +18,21 @@ public final class MineverseChatAPI {
private static HashMap<UUID, MineverseChatPlayer> playerMap = new HashMap<UUID, MineverseChatPlayer>();
private static HashMap<String, UUID> namesMap = new HashMap<String, UUID>();
private static HashMap<UUID, MineverseChatPlayer> onlinePlayerMap = new HashMap<UUID, MineverseChatPlayer>();
private static HashMap<UUID, SynchronizedMineverseChatPlayer> bungeePlayerMap = new HashMap<UUID, SynchronizedMineverseChatPlayer>();
public static void addSynchronizedMineverseChatPlayerToMap(SynchronizedMineverseChatPlayer smcp) {
bungeePlayerMap.put(smcp.getUUID(), smcp);
}
public static void clearBungeePlayerMap() {
bungeePlayerMap.clear();
}
public static Collection<SynchronizedMineverseChatPlayer> getSynchronizedMineverseChatPlayers() {
return bungeePlayerMap.values();
}
public static void addNameToMap(MineverseChatPlayer mcp) {
namesMap.put(mcp.getName(), mcp.getUUID());
}
@ -32,11 +45,13 @@ public final class MineverseChatAPI {
namesMap.clear();
}
@SuppressWarnings("deprecation")
public static void addMineverseChatPlayerToMap(MineverseChatPlayer mcp) {
playerMap.put(mcp.getUUID(), mcp);
MineverseChat.players.add(mcp);
}
@SuppressWarnings("deprecation")
public static void clearMineverseChatPlayerMap() {
playerMap.clear();
MineverseChat.players.clear();
@ -46,16 +61,19 @@ public final class MineverseChatAPI {
return playerMap.values();
}
@SuppressWarnings("deprecation")
public static void addMineverseChatOnlinePlayerToMap(MineverseChatPlayer mcp) {
onlinePlayerMap.put(mcp.getUUID(), mcp);
MineverseChat.onlinePlayers.add(mcp);
}
@SuppressWarnings("deprecation")
public static void removeMineverseChatOnlinePlayerToMap(MineverseChatPlayer mcp) {
onlinePlayerMap.remove(mcp.getUUID());
MineverseChat.onlinePlayers.remove(mcp);
}
@SuppressWarnings("deprecation")
public static void clearOnlineMineverseChatPlayerMap() {
onlinePlayerMap.clear();
MineverseChat.onlinePlayers.clear();
@ -142,15 +160,6 @@ public final class MineverseChatAPI {
* @return {@link SynchronizedMineverseChatPlayer}
*/
public static SynchronizedMineverseChatPlayer getSynchronizedMineverseChatPlayer(UUID uuid) {
for (SynchronizedMineverseChatPlayer smcp : MineverseChatBungee.players) {
try {
if (smcp.getUUID().toString().equals(uuid.toString())) {
return smcp;
}
} catch (Exception exception) {
continue;
}
}
return null;
return bungeePlayerMap.get(uuid);
}
}

View File

@ -8,8 +8,6 @@ import java.io.File;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
@ -39,9 +37,6 @@ import net.md_5.bungee.event.EventHandler;
public class MineverseChatBungee extends Plugin implements Listener {
private static MineverseChatBungee instance;
private Configuration bungeeConfig;
public Map<String, String> ignore = new HashMap<String, String>();
public Map<String, Boolean> spy = new HashMap<String, Boolean>();
public static Set<SynchronizedMineverseChatPlayer> players = new HashSet<SynchronizedMineverseChatPlayer>();
public static String PLUGIN_MESSAGING_CHANNEL = "venturechat:data";
@Override
@ -429,7 +424,7 @@ public class MineverseChatBungee extends Plugin implements Listener {
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(uuid);
if(smcp == null) {
smcp = new SynchronizedMineverseChatPlayer(uuid, new HashSet<String>(), new HashMap<String, Integer>(), new HashSet<UUID>(), false, true);
players.add(smcp);
MineverseChatAPI.addSynchronizedMineverseChatPlayerToMap(smcp);
}
out.writeUTF("Sync");
out.writeUTF(uuid.toString());
@ -465,7 +460,7 @@ public class MineverseChatBungee extends Plugin implements Listener {
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(uuid);
if(smcp == null) {
smcp = new SynchronizedMineverseChatPlayer(uuid, new HashSet<String>(), new HashMap<String, Integer>(), new HashSet<UUID>(), false, true);
players.add(smcp);
MineverseChatAPI.addSynchronizedMineverseChatPlayerToMap(smcp);
}
smcp.getListening().clear();
smcp.getMutes().clear();

View File

@ -11,6 +11,7 @@ import java.util.Set;
import java.util.StringTokenizer;
import java.util.UUID;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.SynchronizedMineverseChatPlayer;
import mineverse.Aust1n46.chat.bungee.MineverseChatBungee;
import mineverse.Aust1n46.chat.utilities.Format;
@ -65,11 +66,11 @@ public class BungeePlayerData {
}
boolean spy = playerData.getBoolean(uuidString + ".spy");
boolean messageToggle = playerData.getBoolean(uuidString + ".messagetoggle");
MineverseChatBungee.players.add(new SynchronizedMineverseChatPlayer(uuid, listening, mutes, ignores, spy, messageToggle));
MineverseChatAPI.addSynchronizedMineverseChatPlayerToMap(new SynchronizedMineverseChatPlayer(uuid, listening, mutes, ignores, spy, messageToggle));
}
}
catch (Exception e) {
MineverseChatBungee.players.clear();
MineverseChatAPI.clearBungeePlayerMap();
ProxyServer.getInstance().getConsole().sendMessage(TextComponent.fromLegacyText(Format.FormatStringAll("&8[&eVentureChat&8]&c - Error Loading Legacy Player Data!")));
ProxyServer.getInstance().getConsole().sendMessage(TextComponent.fromLegacyText(Format.FormatStringAll("&8[&eVentureChat&8]&c - Deleted BungeePlayers.yml file!")));
}
@ -137,13 +138,13 @@ public class BungeePlayerData {
return;
}
if(smcp != null) {
MineverseChatBungee.players.add(smcp);
MineverseChatAPI.addSynchronizedMineverseChatPlayerToMap(smcp);
}
}
public static void saveBungeePlayerData() {
try {
for(SynchronizedMineverseChatPlayer p : MineverseChatBungee.players) {
for(SynchronizedMineverseChatPlayer p : MineverseChatAPI.getSynchronizedMineverseChatPlayers()) {
if(UUIDFetcher.shouldSkipOfflineUUIDBungee(p.getUUID())) {
return;
}