9
0
mirror of https://github.com/Xiao-MoMi/Custom-Nameplates.git synced 2025-12-19 15:09:23 +00:00

make player not weak reference

This commit is contained in:
XiaoMoMi
2025-04-23 04:49:35 +08:00
parent c25e222187
commit f1adb436d0
8 changed files with 48 additions and 40 deletions

View File

@@ -54,6 +54,7 @@ public class ChatControlRedProvider extends AbstractChatMessageProvider implemen
CNPlayer cnPlayer = plugin.getPlayer(player.getUniqueId());
if (cnPlayer == null) return;
plugin.getScheduler().async().execute(() -> {
plugin.debug(() -> "Channel: " + event.getChannel().getName());
manager.onChat(cnPlayer, event.getMessage(), event.getChannel().getName());
});
}

View File

@@ -21,10 +21,7 @@ import io.netty.channel.Channel;
import net.momirealms.customnameplates.api.AbstractCNPlayer;
import net.momirealms.customnameplates.api.CustomNameplates;
import net.momirealms.customnameplates.api.util.Vector3;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.*;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeInstance;
import org.bukkit.entity.Entity;
@@ -37,44 +34,28 @@ import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
public class BukkitCNPlayer extends AbstractCNPlayer {
public class BukkitCNPlayer extends AbstractCNPlayer<Player> {
private static final Attribute scaleAttribute = Registry.ATTRIBUTE.get(NamespacedKey.minecraft("generic.scale"));
private Reference<Player> player;
public BukkitCNPlayer(CustomNameplates plugin, Channel channel) {
super(plugin, channel);
}
public void setPlayer(Player player) {
super.setPlayer(player);
this.player = new WeakReference<>(player);
super.entityId = player.getEntityId();
super.uuid = player.getUniqueId();
super.name = player.getName();
}
@Override
public boolean isInitialized() {
return player != null;
return this.player != null;
}
@Override
public Player player() {
return player.get();
}
@Override
public String name() {
return player().getName();
}
@Override
public UUID uuid() {
return player().getUniqueId();
}
@Override
public int entityID() {
return player().getEntityId();
return super.player;
}
@Override

View File

@@ -52,9 +52,9 @@ public class BukkitChatManager extends AbstractChatManager {
} else if (ConfigManager.chatEss() && Bukkit.getPluginManager().isPluginEnabled("EssentialsChat")) {
this.chatProvider = new EssentialsChatProvider(plugin, this);
plugin.getPluginLogger().info("EssentialsChat hooked!");
} else if (ConfigManager.chatChatControlRed() && Bukkit.getPluginManager().isPluginEnabled("ChatControlRed")) {
} else if (ConfigManager.chatChatControlRed() && Bukkit.getPluginManager().isPluginEnabled("ChatControl")) {
this.chatProvider = new ChatControlRedProvider(plugin, this);
plugin.getPluginLogger().info("ChatControlRed hooked!");
plugin.getPluginLogger().info("ChatControl hooked!");
} else if (ConfigManager.chatChatty() && Bukkit.getPluginManager().isPluginEnabled("Chatty")) {
this.chatProvider = new ChattyProvider(plugin, this);
plugin.getPluginLogger().info("Chatty hooked!");

View File

@@ -289,7 +289,7 @@ public class BukkitCustomNameplates extends CustomNameplates implements Listener
MainTask.reset();
// reload players
for (CNPlayer player : getOnlinePlayers()) {
((AbstractCNPlayer) player).reload();
((AbstractCNPlayer<?>) player).reload();
}
// clear requirement ids
this.requirementManager.reload();
@@ -404,6 +404,14 @@ public class BukkitCustomNameplates extends CustomNameplates implements Listener
}
}
public void handleQuit(CNPlayer cnPlayer) {
entityIDFastLookup.remove(cnPlayer.entityID());
onlinePlayerMap.remove(cnPlayer.uuid());
if (VersionHelper.isFolia()) {
foliaLocationTracker.remove(cnPlayer.name());
}
}
@EventHandler(ignoreCancelled = true)
public void onChangeWorld(PlayerChangedWorldEvent event) {
if (VersionHelper.isFolia()) return;

View File

@@ -53,7 +53,7 @@ public class BubblesForceEquipCommand extends BukkitCommandFeature<CommandSender
.required("bubble", StringParser.stringComponent().suggestionProvider(new SuggestionProvider<>() {
@Override
public @NonNull CompletableFuture<? extends @NonNull Iterable<? extends @NonNull Suggestion>> suggestionsFuture(@NonNull CommandContext<Object> context, @NonNull CommandInput input) {
return CompletableFuture.completedFuture(plugin.getBubbleManager().bubbles().stream().map(it -> Suggestion.suggestion(it.id())).toList());
return CompletableFuture.completedFuture(plugin.getBubbleManager().bubbleConfigs().stream().map(it -> Suggestion.suggestion(it.id())).toList());
}
}))
.handler(context -> {