9
0
mirror of https://github.com/Xiao-MoMi/Custom-Nameplates.git synced 2026-01-06 15:42:00 +00:00
This commit is contained in:
Xiao-MoMi
2022-07-23 19:32:50 +08:00
parent 3207cf6bec
commit c159a669b1
5 changed files with 54 additions and 29 deletions

View File

@@ -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);
//生成资源包

View File

@@ -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) {

View File

@@ -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);
// }
}

View File

@@ -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);

View File

@@ -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);
}
}