mirror of
https://github.com/Xiao-MoMi/Custom-Nameplates.git
synced 2026-01-06 15:42:00 +00:00
1.7.1
This commit is contained in:
@@ -60,7 +60,7 @@ public final class CustomNameplates extends JavaPlugin {
|
||||
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketsListener(this));
|
||||
//新建单例
|
||||
this.resourceManager = new ResourceManager(this);
|
||||
this.dataManager = new DataManager();
|
||||
this.dataManager = new DataManager(this);
|
||||
this.hookManager = new HookManager(this);
|
||||
this.scoreBoardManager = new ScoreBoardManager(this);
|
||||
//生成资源包
|
||||
|
||||
@@ -4,6 +4,7 @@ import net.momirealms.customnameplates.AdventureManager;
|
||||
import net.momirealms.customnameplates.ConfigManager;
|
||||
import net.momirealms.customnameplates.CustomNameplates;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -12,10 +13,34 @@ import java.util.UUID;
|
||||
public class DataManager {
|
||||
|
||||
public static Map<UUID, PlayerData> cache;
|
||||
public DataManager() {
|
||||
private CustomNameplates plugin;
|
||||
|
||||
public DataManager(CustomNameplates plugin) {
|
||||
this.plugin = plugin;
|
||||
cache = new HashMap<>();
|
||||
}
|
||||
|
||||
public void loadData(Player player) {
|
||||
UUID uuid = player.getUniqueId();
|
||||
if (ConfigManager.DatabaseConfig.async){
|
||||
Bukkit.getScheduler().runTaskAsynchronously(CustomNameplates.instance, () -> {
|
||||
PlayerData playerData = SqlHandler.getPlayerData(uuid);
|
||||
if (playerData == null) {
|
||||
playerData = new PlayerData(ConfigManager.MainConfig.default_nameplate, 0);
|
||||
}
|
||||
cache.put(uuid, playerData);
|
||||
plugin.getScoreBoardManager().getOrCreateTeam(player);
|
||||
});
|
||||
}else {
|
||||
PlayerData playerData = SqlHandler.getPlayerData(uuid);
|
||||
if (playerData == null) {
|
||||
playerData = new PlayerData(ConfigManager.MainConfig.default_nameplate, 0);
|
||||
}
|
||||
cache.put(uuid, playerData);
|
||||
plugin.getScoreBoardManager().getOrCreateTeam(player);
|
||||
}
|
||||
}
|
||||
|
||||
public PlayerData getOrCreate(UUID uuid) {
|
||||
if (cache.containsKey(uuid)) {
|
||||
return cache.get(uuid);
|
||||
@@ -32,7 +57,16 @@ public class DataManager {
|
||||
if (!cache.containsKey(uuid)) {
|
||||
return;
|
||||
}
|
||||
cache.remove(uuid);
|
||||
if (ConfigManager.DatabaseConfig.async){
|
||||
Bukkit.getScheduler().runTaskAsynchronously(CustomNameplates.instance, ()-> {
|
||||
SqlHandler.save(cache.get(uuid), uuid);
|
||||
cache.remove(uuid);
|
||||
});
|
||||
}
|
||||
else {
|
||||
SqlHandler.save(cache.get(uuid), uuid);
|
||||
cache.remove(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
public void savePlayer(UUID uuid) {
|
||||
|
||||
@@ -21,8 +21,6 @@ public class HookManager {
|
||||
this.initializeItemsAdder();
|
||||
}
|
||||
|
||||
//Papi Hook检测
|
||||
//其实是一段问题代码,但基本人人都装了PAPI,更改意义不大
|
||||
private void initializePlaceholderAPI() {
|
||||
if(!ConfigManager.MainConfig.placeholderAPI){
|
||||
this.placeholderAPI = false;
|
||||
@@ -33,7 +31,7 @@ public class HookManager {
|
||||
this.placeholderAPI = true;
|
||||
}
|
||||
}
|
||||
//ItemsAdder Hook检测
|
||||
|
||||
private void initializeItemsAdder() {
|
||||
if (!ConfigManager.MainConfig.itemsAdder) {
|
||||
this.itemsAdder = false;
|
||||
@@ -42,12 +40,4 @@ public class HookManager {
|
||||
this.itemsAdder = true;
|
||||
}
|
||||
}
|
||||
// /*
|
||||
// 解析prefix与suffix
|
||||
// */
|
||||
// public String parsePlaceholders(Player player, String papi) {
|
||||
// String s = StringUtils.replace(StringUtils.replace(papi, "%player_name%", player.getName()), "%player_displayname%", player.getDisplayName());
|
||||
// s = PlaceholderAPI.setPlaceholders(player, s);
|
||||
// return ChatColor.translateAlternateColorCodes('&', s);
|
||||
// }
|
||||
}
|
||||
@@ -41,7 +41,7 @@ public class PacketsListener extends PacketAdapter {
|
||||
if (!this.plugin.getScoreBoardManager().doesTeamExist(teamName)){
|
||||
return;
|
||||
}
|
||||
if (ConfigManager.MainConfig.show_after && DataManager.cache.get(event.getPlayer().getUniqueId()).getAccepted() == 0) {
|
||||
if (ConfigManager.MainConfig.show_after && (DataManager.cache.get(event.getPlayer().getUniqueId()) == null || DataManager.cache.get(event.getPlayer().getUniqueId()).getAccepted() == 0)) {
|
||||
internalStructure.getChatComponents().write(1, WrappedChatComponent.fromJson("{\"text\":\"\"}"));
|
||||
internalStructure.getChatComponents().write(2, WrappedChatComponent.fromJson("{\"text\":\"\"}"));
|
||||
internalStructure.getEnumModifier(ChatColor.class, MinecraftReflection.getMinecraftClass("EnumChatFormat")).write(0,ChatColor.WHITE);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package net.momirealms.customnameplates.listener;
|
||||
|
||||
import net.momirealms.customnameplates.ConfigManager;
|
||||
import net.momirealms.customnameplates.CustomNameplates;
|
||||
import net.momirealms.customnameplates.data.DataManager;
|
||||
import net.momirealms.customnameplates.data.PlayerData;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -13,14 +13,9 @@ import org.bukkit.event.player.PlayerResourcePackStatusEvent;
|
||||
|
||||
public record PlayerListener(CustomNameplates plugin) implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPreLogin(AsyncPlayerPreLoginEvent event) {
|
||||
this.plugin.getDataManager().getOrCreate(event.getUniqueId());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
this.plugin.getScoreBoardManager().getOrCreateTeam(event.getPlayer());
|
||||
this.plugin.getDataManager().loadData(event.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@@ -30,12 +25,18 @@ public record PlayerListener(CustomNameplates plugin) implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onAccept(PlayerResourcePackStatusEvent event) {
|
||||
if (event.getStatus() == PlayerResourcePackStatusEvent.Status.SUCCESSFULLY_LOADED) {
|
||||
DataManager.cache.get(event.getPlayer().getUniqueId()).setAccepted(1);
|
||||
Bukkit.getOnlinePlayers().forEach(player -> this.plugin.getScoreBoardManager().getTeam(player.getName()).updateNameplates());
|
||||
} else {
|
||||
DataManager.cache.get(event.getPlayer().getUniqueId()).setAccepted(0);
|
||||
Bukkit.getOnlinePlayers().forEach(player -> this.plugin.getScoreBoardManager().getTeam(player.getName()).updateNameplates());
|
||||
}
|
||||
PlayerData playerData = DataManager.cache.get(event.getPlayer().getUniqueId());
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(CustomNameplates.instance, ()-> {
|
||||
if (playerData == null) {
|
||||
return;
|
||||
}
|
||||
if (event.getStatus() == PlayerResourcePackStatusEvent.Status.SUCCESSFULLY_LOADED) {
|
||||
playerData.setAccepted(1);
|
||||
Bukkit.getOnlinePlayers().forEach(player -> this.plugin.getScoreBoardManager().getTeam(player.getName()).updateNameplates());
|
||||
} else if(event.getStatus() == PlayerResourcePackStatusEvent.Status.DECLINED || event.getStatus() == PlayerResourcePackStatusEvent.Status.FAILED_DOWNLOAD) {
|
||||
playerData.setAccepted(0);
|
||||
Bukkit.getOnlinePlayers().forEach(player -> this.plugin.getScoreBoardManager().getTeam(player.getName()).updateNameplates());
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user