mirror of
https://github.com/Xiao-MoMi/Custom-Nameplates.git
synced 2026-01-04 15:31:47 +00:00
1.8.6
This commit is contained in:
@@ -70,7 +70,6 @@ public class ConfigManager {
|
||||
public static void loadWidth(){
|
||||
|
||||
fontWidth.clear();
|
||||
|
||||
YamlConfiguration config = getConfig("char-width.yml");
|
||||
config.getConfigurationSection("").getKeys(false).forEach(key -> {
|
||||
fontWidth.put(key.charAt(0), config.getInt(key));
|
||||
|
||||
@@ -29,6 +29,7 @@ import net.momirealms.customnameplates.data.DataManager;
|
||||
import net.momirealms.customnameplates.data.SqlHandler;
|
||||
import net.momirealms.customnameplates.helper.LibraryLoader;
|
||||
import net.momirealms.customnameplates.hook.Placeholders;
|
||||
import net.momirealms.customnameplates.listener.PacketsListener;
|
||||
import net.momirealms.customnameplates.listener.PlayerListener;
|
||||
import net.momirealms.customnameplates.resource.ResourceManager;
|
||||
import net.momirealms.customnameplates.scoreboard.ScoreBoardManager;
|
||||
@@ -49,6 +50,7 @@ public final class CustomNameplates extends JavaPlugin {
|
||||
private ScoreBoardManager scoreBoardManager;
|
||||
private Placeholders placeholders;
|
||||
private Timer timer;
|
||||
private PacketsListener packetsListener;
|
||||
|
||||
public ResourceManager getResourceManager() {return this.resourceManager;}
|
||||
public DataManager getDataManager() { return this.dataManager; }
|
||||
@@ -88,6 +90,8 @@ public final class CustomNameplates extends JavaPlugin {
|
||||
if (ConfigManager.nameplate){
|
||||
ConfigManager.DatabaseConfig.LoadConfig();
|
||||
Bukkit.getPluginManager().registerEvents(new PlayerListener(this),this);
|
||||
packetsListener = new PacketsListener(this);
|
||||
protocolManager.addPacketListener(packetsListener);
|
||||
}
|
||||
if (ConfigManager.MainConfig.placeholderAPI){
|
||||
placeholders = new Placeholders();
|
||||
@@ -125,7 +129,8 @@ public final class CustomNameplates extends JavaPlugin {
|
||||
adventure.close();
|
||||
adventure = null;
|
||||
}
|
||||
if (protocolManager != null){
|
||||
if (packetsListener != null && protocolManager != null){
|
||||
protocolManager.removePacketListener(this.packetsListener);
|
||||
protocolManager = null;
|
||||
}
|
||||
if (placeholders != null){
|
||||
|
||||
@@ -81,7 +81,6 @@ public class Execute implements CommandExecutor {
|
||||
if (sender.hasPermission("customnameplates.reload") || sender.isOp()) {
|
||||
ConfigManager.MainConfig.ReloadConfig();
|
||||
ConfigManager.Message.ReloadConfig();
|
||||
ConfigManager.loadWidth();
|
||||
if (ConfigManager.actionbar){
|
||||
ConfigManager.ActionbarConfig.LoadConfig();
|
||||
}
|
||||
@@ -347,7 +346,7 @@ public class Execute implements CommandExecutor {
|
||||
AdventureManager.playerMessage(player,"<color:#87CEFA>/nameplates preview - <color:#7FFFAA>preview your nameplate");
|
||||
AdventureManager.playerMessage(player,"<color:#87CEFA>/nameplates forcepreview <player> <nameplate> - <color:#7FFFAA>force a player to preview a nameplate");
|
||||
AdventureManager.playerMessage(player,"<color:#87CEFA>/nameplates list - <color:#7FFFAA>list your available nameplates");
|
||||
AdventureManager.playerMessage(player,"<color:#87CEFA>/nameplates generate - <color:#7FFFAA>generate the RP");
|
||||
AdventureManager.playerMessage(player,"<color:#87CEFA>/nameplates generate - <color:#7FFFAA>generate the resource pack");
|
||||
}
|
||||
}else {
|
||||
AdventureManager.consoleMessage("<color:#87CEFA>/nameplates help - <color:#7FFFAA>show the command list");
|
||||
@@ -359,7 +358,7 @@ public class Execute implements CommandExecutor {
|
||||
AdventureManager.consoleMessage("<color:#87CEFA>/nameplates preview - <color:#7FFFAA>preview your nameplate");
|
||||
AdventureManager.consoleMessage("<color:#87CEFA>/nameplates forcepreview <player> <nameplate> - <color:#7FFFAA>force a player to preview a nameplate");
|
||||
AdventureManager.consoleMessage("<color:#87CEFA>/nameplates list - <color:#7FFFAA>list your available nameplates");
|
||||
AdventureManager.consoleMessage("<color:#87CEFA>/nameplates generate - <color:#7FFFAA>generate the RP");
|
||||
AdventureManager.consoleMessage("<color:#87CEFA>/nameplates generate - <color:#7FFFAA>generate the resource pack");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -368,7 +367,6 @@ public class Execute implements CommandExecutor {
|
||||
}
|
||||
|
||||
private void showNameplate(Player player, Component component) {
|
||||
|
||||
ArmorStand entity = player.getWorld().spawn(player.getLocation().add(0,0.8,0), ArmorStand.class, a -> {
|
||||
a.setInvisible(true);
|
||||
a.setCollidable(false);
|
||||
|
||||
@@ -19,6 +19,8 @@ package net.momirealms.customnameplates.font;
|
||||
|
||||
import net.momirealms.customnameplates.ConfigManager;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public enum FontWidth {
|
||||
|
||||
A('A', 5), a('a', 5), B('B', 5), b('b', 5),
|
||||
@@ -80,12 +82,8 @@ public enum FontWidth {
|
||||
return minecraftFontWidth.length;
|
||||
}
|
||||
}
|
||||
int custom = ConfigManager.fontWidth.get(c);
|
||||
if (custom != 0){
|
||||
return custom;
|
||||
}else {
|
||||
return 8;
|
||||
}
|
||||
Integer custom = ConfigManager.fontWidth.get(c);
|
||||
return Objects.requireNonNullElse(custom, 8);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -19,6 +19,8 @@ package net.momirealms.customnameplates.font;
|
||||
|
||||
import net.momirealms.customnameplates.ConfigManager;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public enum FontWidthThin {
|
||||
|
||||
A('A', 3), a('a', 3), B('B', 3), b('b', 3),
|
||||
@@ -81,11 +83,7 @@ public enum FontWidthThin {
|
||||
}
|
||||
}
|
||||
int custom = ConfigManager.fontWidth.get(c);
|
||||
if (custom != 0){
|
||||
return custom;
|
||||
}else {
|
||||
return 8;
|
||||
}
|
||||
return Objects.requireNonNullElse(custom, 8);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (C) <2022> <XiaoMoMi>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.momirealms.customnameplates.listener;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.InternalStructure;
|
||||
import com.comphenix.protocol.events.ListenerPriority;
|
||||
import com.comphenix.protocol.events.PacketAdapter;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import net.momirealms.customnameplates.ConfigManager;
|
||||
import net.momirealms.customnameplates.CustomNameplates;
|
||||
import net.momirealms.customnameplates.data.DataManager;
|
||||
import net.momirealms.customnameplates.scoreboard.NameplatesTeam;
|
||||
import net.momirealms.customnameplates.scoreboard.ScoreBoardManager;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class PacketsListener extends PacketAdapter {
|
||||
|
||||
private final CustomNameplates plugin;
|
||||
|
||||
public PacketsListener(CustomNameplates plugin) {
|
||||
super(plugin, ListenerPriority.HIGHEST, PacketType.Play.Server.SCOREBOARD_TEAM);
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
Integer n = event.getPacket().getIntegers().read(0);
|
||||
if (n != 2) {
|
||||
return;
|
||||
}
|
||||
//if (n == 0) System.out.println("对玩家" + event.getPlayer().getName() + "发送team创建包");
|
||||
//if (n == 2) System.out.println("对玩家"+ event.getPlayer().getName() + "发送team更新包");
|
||||
Optional<InternalStructure> optional = event.getPacket().getOptionalStructures().read(0);
|
||||
if (optional.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
InternalStructure internalStructure = optional.get();
|
||||
String teamName = event.getPacket().getStrings().read(0);
|
||||
//System.out.println("本次创建/更新的队伍名是" + teamName);
|
||||
NameplatesTeam team = ScoreBoardManager.teams.get(teamName);
|
||||
if (team == null) {
|
||||
//System.out.println("但是这个队伍不存在于缓存中哦,说明那个玩家还没上线");
|
||||
return;
|
||||
}
|
||||
//System.out.println("这个队伍确实存在于缓存中呢!");
|
||||
if (ConfigManager.MainConfig.show_after && (DataManager.cache.get(event.getPlayer().getUniqueId()) == null || DataManager.cache.get(event.getPlayer().getUniqueId()).getAccepted() == 0)) {
|
||||
//System.out.println("玩家" +event.getPlayer().getName() +"因为没有接受资源包所以没有被显示铭牌");
|
||||
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);
|
||||
return;
|
||||
}
|
||||
//System.out.println("玩家" +event.getPlayer().getName() +"可以看见队伍" + teamName + "的铭牌");
|
||||
if (team.getPrefix() != null) {
|
||||
internalStructure.getChatComponents().write(1, WrappedChatComponent.fromJson(GsonComponentSerializer.gson().serialize(team.getPrefix())));
|
||||
}
|
||||
if (team.getSuffix() != null) {
|
||||
internalStructure.getChatComponents().write(2, WrappedChatComponent.fromJson(GsonComponentSerializer.gson().serialize(team.getSuffix())));
|
||||
}
|
||||
internalStructure.getEnumModifier(ChatColor.class, MinecraftReflection.getMinecraftClass("EnumChatFormat")).write(0,team.getColor());
|
||||
}
|
||||
}
|
||||
@@ -17,31 +17,20 @@
|
||||
|
||||
package net.momirealms.customnameplates.listener;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.InternalStructure;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import net.momirealms.customnameplates.ConfigManager;
|
||||
import net.momirealms.customnameplates.CustomNameplates;
|
||||
import net.momirealms.customnameplates.data.DataManager;
|
||||
import net.momirealms.customnameplates.data.PlayerData;
|
||||
import net.momirealms.customnameplates.hook.TABHook;
|
||||
import net.momirealms.customnameplates.scoreboard.NameplatesTeam;
|
||||
import net.momirealms.customnameplates.scoreboard.ScoreBoardManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerResourcePackStatusEvent;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.Collections;
|
||||
import java.util.Optional;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
import org.bukkit.scoreboard.Team;
|
||||
|
||||
public record PlayerListener(CustomNameplates plugin) implements Listener {
|
||||
|
||||
@@ -49,20 +38,30 @@ public record PlayerListener(CustomNameplates plugin) implements Listener {
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
this.plugin.getDataManager().loadData(event.getPlayer());
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(CustomNameplates.instance, ()-> {
|
||||
sendPacketsToPlayer(event.getPlayer());
|
||||
}, 40);
|
||||
if (ConfigManager.MainConfig.tab){
|
||||
Bukkit.getOnlinePlayers().forEach(player -> ScoreBoardManager.teams.get(TABHook.getTABTeam(player.getName())).updateNameplates());
|
||||
}else {
|
||||
Bukkit.getOnlinePlayers().forEach(player -> ScoreBoardManager.teams.get(player.getName()).updateNameplates());
|
||||
}
|
||||
}, 50);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuit(PlayerQuitEvent event) {
|
||||
this.plugin.getDataManager().unloadPlayer(event.getPlayer().getUniqueId());
|
||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
||||
Team team;
|
||||
String teamName;
|
||||
if (ConfigManager.MainConfig.tab){
|
||||
teamName = TABHook.getTABTeam(event.getPlayer().getName());
|
||||
}else {
|
||||
teamName = event.getPlayer().getName();
|
||||
}
|
||||
team = scoreboard.getTeam(teamName);
|
||||
ScoreBoardManager.teams.remove(teamName);
|
||||
if (team != null){
|
||||
team.unregister();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@@ -74,58 +73,19 @@ public record PlayerListener(CustomNameplates plugin) implements Listener {
|
||||
}
|
||||
if (event.getStatus() == PlayerResourcePackStatusEvent.Status.SUCCESSFULLY_LOADED) {
|
||||
playerData.setAccepted(1);
|
||||
}
|
||||
else if(event.getStatus() == PlayerResourcePackStatusEvent.Status.DECLINED || event.getStatus() == PlayerResourcePackStatusEvent.Status.FAILED_DOWNLOAD) {
|
||||
if (ConfigManager.MainConfig.tab){
|
||||
Bukkit.getOnlinePlayers().forEach(player -> ScoreBoardManager.teams.get(TABHook.getTABTeam(player.getName())).updateNameplates());
|
||||
}else {
|
||||
Bukkit.getOnlinePlayers().forEach(player -> ScoreBoardManager.teams.get(player.getName()).updateNameplates());
|
||||
}
|
||||
} else if(event.getStatus() == PlayerResourcePackStatusEvent.Status.DECLINED || event.getStatus() == PlayerResourcePackStatusEvent.Status.FAILED_DOWNLOAD) {
|
||||
playerData.setAccepted(0);
|
||||
if (ConfigManager.MainConfig.tab){
|
||||
Bukkit.getOnlinePlayers().forEach(player -> ScoreBoardManager.teams.get(TABHook.getTABTeam(player.getName())).updateNameplates());
|
||||
}else {
|
||||
Bukkit.getOnlinePlayers().forEach(player -> ScoreBoardManager.teams.get(player.getName()).updateNameplates());
|
||||
}
|
||||
}
|
||||
sendPacketsToPlayer(event.getPlayer());
|
||||
}, 20);
|
||||
}
|
||||
|
||||
private void sendPacketsToPlayer(Player player){
|
||||
|
||||
if (ConfigManager.MainConfig.show_after && DataManager.cache.get(player.getUniqueId()).getAccepted() != 1) return;
|
||||
|
||||
Bukkit.getOnlinePlayers().forEach(onlinePlayer -> {
|
||||
|
||||
String teamName;
|
||||
|
||||
if (ConfigManager.MainConfig.tab){
|
||||
teamName = TABHook.getTABTeam(onlinePlayer.getName());
|
||||
}else {
|
||||
teamName = onlinePlayer.getName();
|
||||
}
|
||||
|
||||
NameplatesTeam team = ScoreBoardManager.teams.get(teamName);
|
||||
|
||||
if (team == null) return;
|
||||
|
||||
PacketContainer packetContainer = new PacketContainer(PacketType.Play.Server.SCOREBOARD_TEAM);
|
||||
packetContainer.getStrings().write(0, teamName);
|
||||
|
||||
Optional<InternalStructure> optional = packetContainer.getOptionalStructures().read(0);
|
||||
if (optional.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
InternalStructure internalStructure1 = optional.get();
|
||||
internalStructure1.getChatComponents().write(0, WrappedChatComponent.fromJson("{\"text\":\" "+ onlinePlayer.getName() +" \"}"));
|
||||
|
||||
if (team.getPrefix() != null){
|
||||
internalStructure1.getChatComponents().write(1, WrappedChatComponent.fromJson(GsonComponentSerializer.gson().serialize(team.getPrefix())));
|
||||
}
|
||||
|
||||
if (team.getSuffix() != null){
|
||||
internalStructure1.getChatComponents().write(2, WrappedChatComponent.fromJson(GsonComponentSerializer.gson().serialize(team.getSuffix())));
|
||||
}
|
||||
|
||||
internalStructure1.getEnumModifier(ChatColor.class, MinecraftReflection.getMinecraftClass("EnumChatFormat")).write(0,team.getColor());
|
||||
packetContainer.getModifier().write(2, Collections.singletonList(onlinePlayer.getName()));
|
||||
|
||||
try {
|
||||
CustomNameplates.protocolManager.sendServerPacket(player, packetContainer);
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,8 +27,11 @@ import net.momirealms.customnameplates.font.FontCache;
|
||||
import net.momirealms.customnameplates.hook.PapiHook;
|
||||
import net.momirealms.customnameplates.hook.TABHook;
|
||||
import net.momirealms.customnameplates.nameplates.NameplateUtil;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
import org.bukkit.scoreboard.Team;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -36,6 +39,7 @@ public class NameplatesTeam {
|
||||
|
||||
private final CustomNameplates plugin;
|
||||
private final Player player;
|
||||
private final Team team;
|
||||
private Component prefix;
|
||||
private Component suffix;
|
||||
private String prefixText;
|
||||
@@ -54,11 +58,16 @@ public class NameplatesTeam {
|
||||
this.color = ChatColor.WHITE;
|
||||
this.plugin = plugin;
|
||||
this.player = player;
|
||||
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
|
||||
String name = player.getName();
|
||||
if (ConfigManager.MainConfig.tab){
|
||||
this.teamName = TABHook.getTABTeam(name);
|
||||
this.team = Optional.ofNullable(Bukkit.getScoreboardManager().getMainScoreboard().getTeam(teamName)).orElseGet(() -> scoreboard.registerNewTeam(teamName));
|
||||
team.addEntry(player.getName());
|
||||
}else {
|
||||
this.teamName = name;
|
||||
this.team = Optional.ofNullable(Bukkit.getScoreboardManager().getMainScoreboard().getTeam(name)).orElseGet(() -> scoreboard.registerNewTeam(name));
|
||||
team.addEntry(player.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,6 +92,7 @@ public class NameplatesTeam {
|
||||
this.suffixText = "";
|
||||
}
|
||||
this.color = ChatColor.WHITE;
|
||||
this.team.setPrefix("");
|
||||
return;
|
||||
}
|
||||
FontCache fontCache = this.plugin.getResourceManager().getNameplateInfo(nameplate);
|
||||
@@ -90,6 +100,7 @@ public class NameplatesTeam {
|
||||
this.prefix = Component.text("");
|
||||
this.suffix = Component.text("");
|
||||
this.color = ChatColor.WHITE;
|
||||
this.team.setPrefix("");
|
||||
DataManager.cache.get(player.getUniqueId()).equipNameplate("none");
|
||||
return;
|
||||
}
|
||||
@@ -108,8 +119,7 @@ public class NameplatesTeam {
|
||||
}else {
|
||||
playerSuffix = "";
|
||||
}
|
||||
}
|
||||
else {
|
||||
}else {
|
||||
if (!ConfigManager.MainConfig.hidePrefix){
|
||||
playerPrefix = ConfigManager.MainConfig.player_prefix;
|
||||
}else {
|
||||
@@ -126,5 +136,6 @@ public class NameplatesTeam {
|
||||
this.prefix = Component.text(nameplateUtil.makeCustomNameplate(MiniMessage.miniMessage().stripTags(playerPrefix), name, MiniMessage.miniMessage().stripTags(playerSuffix))).font(ConfigManager.MainConfig.key).append(MiniMessage.miniMessage().deserialize(playerPrefix));
|
||||
this.suffix = MiniMessage.miniMessage().deserialize(playerSuffix).append(Component.text(nameplateUtil.getSuffixLength(MiniMessage.miniMessage().stripTags(playerPrefix) + name + MiniMessage.miniMessage().stripTags(playerSuffix))).font(ConfigManager.MainConfig.key));
|
||||
this.color = nameplateUtil.getColor();
|
||||
this.team.setPrefix("");
|
||||
}
|
||||
}
|
||||
@@ -37,8 +37,7 @@ public record ScoreBoardManager(CustomNameplates plugin) {
|
||||
}
|
||||
teams.get(tabTeamName).updateNameplates();
|
||||
return teams.get(tabTeamName);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (!teams.containsKey(player.getName())) {
|
||||
teams.put(player.getName(), new NameplatesTeam(this.plugin, player));
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
config:
|
||||
# Language
|
||||
# en/cn
|
||||
# en/cn/es
|
||||
lang: en
|
||||
|
||||
# Should the plugin hook into other plugins
|
||||
|
||||
16
src/main/resources/messages/messages_es.yml
Normal file
16
src/main/resources/messages/messages_es.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
messages:
|
||||
prefix: '<gradient:#2E8B57:#48D1CC>[CustomNameplates] </gradient>'
|
||||
no-perm: '<red>¡No tienes permisos!</red>'
|
||||
lack-args: '<white>¡Parámetros insuficientes!</white>'
|
||||
reload: '<white>¡Recargado!</white>'
|
||||
equip: '<white>Nameplate equipada con éxito {Nameplate}. </white><yellow><click:run_command:/nameplates preview>[click to preview]'
|
||||
force-equip: '<white>Nameplate equipada con éxito {Nameplate} to {Player}.</white>'
|
||||
unequip: '<white>¡Has quitado tu Nameplate!</white>'
|
||||
force-unequip: '<white>Eliminado con éxito {Player}''s nameplate!</white>'
|
||||
preview: '<white>¡Ahora, la vista previa de su placa de identificación (ir a la tercera persona para ver)!</white>'
|
||||
not-exist: '<white>Este Nameplate no existe.</white>'
|
||||
not-online: '<white>Player {Player} ¡no está en línea!</white>'
|
||||
no-console: '<white>Este comando sólo puede ser ejecutado por el jugador.</white>'
|
||||
not-available: '<white>Esta placa no está disponible actualmente.</white>'
|
||||
available: '<white>Nameplates disponibles: {Nameplates}.</white>'
|
||||
cooldown: '<white>¡El preestreno sigue en curso!</white>'
|
||||
Reference in New Issue
Block a user