From e4d7fb4346cacc55e5afe5ecb7c64fde055cf410 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Mon, 18 Nov 2024 01:22:23 +0800 Subject: [PATCH] work --- .../api/AbstractCNPlayer.java | 25 +++++++++++-------- .../customnameplates/api/CNPlayer.java | 11 +++++--- .../api/feature/PreParsedDynamicText.java | 4 +-- .../feature/advance/AdvanceManagerImpl.java | 2 +- .../feature/chat/AbstractChatManager.java | 1 + .../feature/tag/UnlimitedTagManagerImpl.java | 1 + .../placeholder/PlaceholderManagerImpl.java | 6 ++--- .../compatibility/NameplatesExpansion.java | 4 +-- .../NameplatesExtraExpansion.java | 1 - 9 files changed, 31 insertions(+), 24 deletions(-) diff --git a/api/src/main/java/net/momirealms/customnameplates/api/AbstractCNPlayer.java b/api/src/main/java/net/momirealms/customnameplates/api/AbstractCNPlayer.java index 8f40a09..6c0aa5c 100644 --- a/api/src/main/java/net/momirealms/customnameplates/api/AbstractCNPlayer.java +++ b/api/src/main/java/net/momirealms/customnameplates/api/AbstractCNPlayer.java @@ -32,6 +32,7 @@ import net.momirealms.customnameplates.api.placeholder.SharedPlaceholder; import net.momirealms.customnameplates.api.requirement.Requirement; import net.momirealms.customnameplates.api.storage.data.PlayerData; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -54,11 +55,11 @@ public abstract class AbstractCNPlayer implements CNPlayer { private final TeamView teamView = new TeamView(); - private final Int2ObjectOpenHashMap> cachedValues = new Int2ObjectOpenHashMap<>(64); - private final Int2ObjectOpenHashMap>> cachedRelationalValues = new Int2ObjectOpenHashMap<>(64); + private final Map> cachedValues = new ConcurrentHashMap<>(128); + private final Map>> cachedRelationalValues = new ConcurrentHashMap<>(128); - private final Int2ObjectOpenHashMap> cachedRequirements = new Int2ObjectOpenHashMap<>(128); - private final Int2ObjectOpenHashMap>> cachedRelationalRequirements = new Int2ObjectOpenHashMap<>(128); + private final Map> cachedRequirements = new Int2ObjectOpenHashMap<>(32); + private final Map>> cachedRelationalRequirements = new Int2ObjectOpenHashMap<>(32); private final Set activeFeatures = new CopyOnWriteArraySet<>(); private final Map> placeholder2Features = new ConcurrentHashMap<>(); @@ -91,7 +92,7 @@ public abstract class AbstractCNPlayer implements CNPlayer { placeholderWithChildren = placeholderWithChildren.stream().distinct().toList(); for (Placeholder placeholder : placeholderWithChildren) { if (placeholder instanceof PlayerPlaceholder playerPlaceholder) { - TimeStampData value = getValue(placeholder); + TimeStampData value = getRawValue(placeholder); if (value == null) { value = new TimeStampData<>(playerPlaceholder.request(this), MainTask.getTicks(), true); setValue(placeholder, value); @@ -104,7 +105,7 @@ public abstract class AbstractCNPlayer implements CNPlayer { } } else if (placeholder instanceof RelationalPlaceholder relational) { for (CNPlayer player : others) { - TimeStampData value = getRelationalValue(placeholder, player); + TimeStampData value = getRawRelationalValue(placeholder, player); if (value == null) { value = new TimeStampData<>(relational.request(this, player), MainTask.getTicks(), true); setRelationalValue(placeholder, player, value); @@ -117,7 +118,7 @@ public abstract class AbstractCNPlayer implements CNPlayer { } } } else if (placeholder instanceof SharedPlaceholder sharedPlaceholder) { - TimeStampData value = getValue(placeholder); + TimeStampData value = getRawValue(placeholder); if (value == null) { String latest; if (MainTask.hasRequested(sharedPlaceholder.countId())) { @@ -304,17 +305,18 @@ public abstract class AbstractCNPlayer implements CNPlayer { } @Override - public @NotNull String getData(Placeholder placeholder) { + public @NotNull String getCachedValue(Placeholder placeholder) { return Optional.ofNullable(cachedValues.get(placeholder.countId())).map(TimeStampData::data).orElse(placeholder.id()); } + @Nullable @Override - public TimeStampData getValue(Placeholder placeholder) { + public TimeStampData getRawValue(Placeholder placeholder) { return cachedValues.get(placeholder.countId()); } @Override - public @NotNull String getRelationalData(Placeholder placeholder, CNPlayer another) { + public @NotNull String getCachedRelationalValue(Placeholder placeholder, CNPlayer another) { WeakHashMap> map = cachedRelationalValues.get(placeholder.countId()); if (map == null) { return placeholder.id(); @@ -322,8 +324,9 @@ public abstract class AbstractCNPlayer implements CNPlayer { return Optional.ofNullable(map.get(another)).map(TimeStampData::data).orElse(placeholder.id()); } + @Nullable @Override - public TimeStampData getRelationalValue(Placeholder placeholder, CNPlayer another) { + public TimeStampData getRawRelationalValue(Placeholder placeholder, CNPlayer another) { WeakHashMap> map = cachedRelationalValues.get(placeholder.countId()); if (map == null) { return null; diff --git a/api/src/main/java/net/momirealms/customnameplates/api/CNPlayer.java b/api/src/main/java/net/momirealms/customnameplates/api/CNPlayer.java index cd5f94b..5d35e3a 100644 --- a/api/src/main/java/net/momirealms/customnameplates/api/CNPlayer.java +++ b/api/src/main/java/net/momirealms/customnameplates/api/CNPlayer.java @@ -23,6 +23,7 @@ import net.momirealms.customnameplates.api.feature.TimeStampData; import net.momirealms.customnameplates.api.feature.tag.TeamView; import net.momirealms.customnameplates.api.network.Tracker; import net.momirealms.customnameplates.api.placeholder.Placeholder; +import net.momirealms.customnameplates.api.placeholder.SharedPlaceholder; import net.momirealms.customnameplates.api.requirement.Requirement; import net.momirealms.customnameplates.api.util.Vector3; import org.jetbrains.annotations.NotNull; @@ -185,6 +186,8 @@ public interface CNPlayer { */ List activePlaceholdersToRefresh(); + String forceUpdatePlaceholder(SharedPlaceholder sharedPlaceholder); + /** * Forces an update for the specified placeholders and relational placeholders with another player. * @@ -200,7 +203,7 @@ public interface CNPlayer { * @return the cached data as a string */ @NotNull - String getData(Placeholder placeholder); + String getCachedValue(Placeholder placeholder); /** * Retrieves the cached {@link TimeStampData} for a given placeholder. @@ -209,7 +212,7 @@ public interface CNPlayer { * @return the cached TickStampData, or null if none exists */ @Nullable - TimeStampData getValue(Placeholder placeholder); + TimeStampData getRawValue(Placeholder placeholder); /** * Retrieves the cached relational data between this player and another for a given placeholder. @@ -219,7 +222,7 @@ public interface CNPlayer { * @return the relational data as a string */ @NotNull - String getRelationalData(Placeholder placeholder, CNPlayer another); + String getCachedRelationalValue(Placeholder placeholder, CNPlayer another); /** * Retrieves the cached relational {@link TimeStampData} for a given placeholder. @@ -229,7 +232,7 @@ public interface CNPlayer { * @return the cached relational TickStampData, or null if none exists */ @Nullable - TimeStampData getRelationalValue(Placeholder placeholder, CNPlayer another); + TimeStampData getRawRelationalValue(Placeholder placeholder, CNPlayer another); /** * Caches the specified {@link TimeStampData} for the given placeholder. diff --git a/api/src/main/java/net/momirealms/customnameplates/api/feature/PreParsedDynamicText.java b/api/src/main/java/net/momirealms/customnameplates/api/feature/PreParsedDynamicText.java index 4eeca09..54b605b 100644 --- a/api/src/main/java/net/momirealms/customnameplates/api/feature/PreParsedDynamicText.java +++ b/api/src/main/java/net/momirealms/customnameplates/api/feature/PreParsedDynamicText.java @@ -56,11 +56,11 @@ public class PreParsedDynamicText { Placeholder placeholder = manager.getPlaceholder(id); placeholders.add(placeholder); if (placeholder instanceof RelationalPlaceholder) { - convertor.add((owner) -> (viewer) -> owner.getRelationalData(placeholder, viewer)); + convertor.add((owner) -> (viewer) -> owner.getCachedRelationalValue(placeholder, viewer)); } else if (placeholder instanceof PlayerPlaceholder playerPlaceholder) { convertor.add((owner) -> (viewer) -> { if (owner != null) { - return owner.getData(placeholder); + return owner.getCachedValue(placeholder); } else { return playerPlaceholder.request(null); } diff --git a/backend/src/main/java/net/momirealms/customnameplates/backend/feature/advance/AdvanceManagerImpl.java b/backend/src/main/java/net/momirealms/customnameplates/backend/feature/advance/AdvanceManagerImpl.java index 0b7f526..a083c66 100644 --- a/backend/src/main/java/net/momirealms/customnameplates/backend/feature/advance/AdvanceManagerImpl.java +++ b/backend/src/main/java/net/momirealms/customnameplates/backend/feature/advance/AdvanceManagerImpl.java @@ -586,7 +586,7 @@ public class AdvanceManagerImpl implements AdvanceManager { } registerCharacterFontData(id, bitmapCache, (properties) -> { int ascent = (int) properties.get("shift_y"); - String filePath = custom ? ConfigManager.namespace() + ":font/" + file : "minecraft:font/" + codePoints + ".png"; + String filePath = custom ? ConfigManager.namespace() + ":font/" + file : "minecraft:font/" + codePoints + ".png"; plugin.getConfigManager().saveResource("tmp/" + codePoints + ".json"); StringBuilder jsonContent = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new FileReader(new File(plugin.getDataDirectory().toFile(), "tmp" + File.separator + codePoints + ".json")))) { diff --git a/backend/src/main/java/net/momirealms/customnameplates/backend/feature/chat/AbstractChatManager.java b/backend/src/main/java/net/momirealms/customnameplates/backend/feature/chat/AbstractChatManager.java index 938cc92..5e0c7d4 100644 --- a/backend/src/main/java/net/momirealms/customnameplates/backend/feature/chat/AbstractChatManager.java +++ b/backend/src/main/java/net/momirealms/customnameplates/backend/feature/chat/AbstractChatManager.java @@ -110,6 +110,7 @@ public abstract class AbstractChatManager implements ChatManager { @Override public void onChat(CNPlayer player, String message, String channel) { String text = message; + plugin.debug(() -> player.name() + " says [" + message + "]"); for (EmojiProvider provider : emojiProviders) { text = provider.replace(player, text); } diff --git a/backend/src/main/java/net/momirealms/customnameplates/backend/feature/tag/UnlimitedTagManagerImpl.java b/backend/src/main/java/net/momirealms/customnameplates/backend/feature/tag/UnlimitedTagManagerImpl.java index 684f71f..0e555b3 100644 --- a/backend/src/main/java/net/momirealms/customnameplates/backend/feature/tag/UnlimitedTagManagerImpl.java +++ b/backend/src/main/java/net/momirealms/customnameplates/backend/feature/tag/UnlimitedTagManagerImpl.java @@ -140,6 +140,7 @@ public class UnlimitedTagManagerImpl implements UnlimitedTagManager, JoinQuitLis @Override public void onPlayerJoin(CNPlayer player) { + plugin.debug(() -> player.name() + " joined the server"); TagRendererImpl sender = new TagRendererImpl(this, player); sender.onTick(); TagRendererImpl previous = tagRenderers.put(player.uuid(), sender); diff --git a/backend/src/main/java/net/momirealms/customnameplates/backend/placeholder/PlaceholderManagerImpl.java b/backend/src/main/java/net/momirealms/customnameplates/backend/placeholder/PlaceholderManagerImpl.java index 274fe51..5a45b0b 100644 --- a/backend/src/main/java/net/momirealms/customnameplates/backend/placeholder/PlaceholderManagerImpl.java +++ b/backend/src/main/java/net/momirealms/customnameplates/backend/placeholder/PlaceholderManagerImpl.java @@ -584,7 +584,7 @@ public class PlaceholderManagerImpl implements PlaceholderManager { List delayedPlaceholdersToUpdate = new ObjectArrayList<>(); for (Placeholder placeholder : player.activePlaceholdersToRefresh()) { if (placeholder instanceof PlayerPlaceholder playerPlaceholder) { - TimeStampData previous = player.getValue(placeholder); + TimeStampData previous = player.getRawValue(placeholder); if (previous == null) { String value = playerPlaceholder.request(player); player.setValue(placeholder, new TimeStampData<>(value, MainTask.getTicks(), true)); @@ -609,7 +609,7 @@ public class PlaceholderManagerImpl implements PlaceholderManager { } else if (placeholder instanceof RelationalPlaceholder relationalPlaceholder) { delayedPlaceholdersToUpdate.add(relationalPlaceholder); } else if (placeholder instanceof SharedPlaceholder sharedPlaceholder) { - TimeStampData previous = player.getValue(placeholder); + TimeStampData previous = player.getRawValue(placeholder); if (previous == null) { String value; // if the shared placeholder has been updated by other players @@ -649,7 +649,7 @@ public class PlaceholderManagerImpl implements PlaceholderManager { for (RelationalPlaceholder placeholder : delayedPlaceholdersToUpdate) { for (CNPlayer nearby : player.nearbyPlayers()) { - TimeStampData previous = player.getRelationalValue(placeholder, nearby); + TimeStampData previous = player.getRawRelationalValue(placeholder, nearby); if (previous == null) { String value = placeholder.request(player, nearby); player.setRelationalValue(placeholder, nearby, new TimeStampData<>(value, MainTask.getTicks(), true)); diff --git a/compatibility/src/main/java/net/momirealms/customnameplates/bukkit/compatibility/NameplatesExpansion.java b/compatibility/src/main/java/net/momirealms/customnameplates/bukkit/compatibility/NameplatesExpansion.java index 08661dd..6bbd274 100644 --- a/compatibility/src/main/java/net/momirealms/customnameplates/bukkit/compatibility/NameplatesExpansion.java +++ b/compatibility/src/main/java/net/momirealms/customnameplates/bukkit/compatibility/NameplatesExpansion.java @@ -71,7 +71,7 @@ public class NameplatesExpansion extends PlaceholderExpansion implements Relatio } if (cnPlayer != null) { cnPlayer.forceUpdatePlaceholders(Set.of(placeholder), Collections.emptySet()); - return cnPlayer.getData(placeholder); + return cnPlayer.getCachedValue(placeholder); } else { try { return playerPlaceholder.request(null); @@ -93,7 +93,7 @@ public class NameplatesExpansion extends PlaceholderExpansion implements Relatio Placeholder placeholder = plugin.getPlaceholderManager().getRegisteredPlaceholder("%rel_np_" + params + "%"); if (placeholder != null) { cnPlayer1.forceUpdatePlaceholders(Set.of(placeholder), Set.of(cnPlayer2)); - return Optional.ofNullable(cnPlayer1.getRelationalValue(placeholder, cnPlayer2)).map(TimeStampData::data).orElse(placeholder.id()); + return Optional.ofNullable(cnPlayer1.getRawRelationalValue(placeholder, cnPlayer2)).map(TimeStampData::data).orElse(placeholder.id()); } return null; } diff --git a/compatibility/src/main/java/net/momirealms/customnameplates/bukkit/compatibility/NameplatesExtraExpansion.java b/compatibility/src/main/java/net/momirealms/customnameplates/bukkit/compatibility/NameplatesExtraExpansion.java index 949ea38..ff603f4 100644 --- a/compatibility/src/main/java/net/momirealms/customnameplates/bukkit/compatibility/NameplatesExtraExpansion.java +++ b/compatibility/src/main/java/net/momirealms/customnameplates/bukkit/compatibility/NameplatesExtraExpansion.java @@ -19,7 +19,6 @@ package net.momirealms.customnameplates.bukkit.compatibility; import me.clip.placeholderapi.PlaceholderAPI; import me.clip.placeholderapi.expansion.PlaceholderExpansion; -import net.kyori.adventure.text.Component; import net.momirealms.customnameplates.api.CustomNameplates; import net.momirealms.customnameplates.api.CustomNameplatesAPI; import net.momirealms.customnameplates.api.feature.OffsetFont;