From 4cc3ce4fc8c85356dba2099e28486ee18d9060a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9D=8F=E9=BB=91?= Date: Fri, 11 May 2018 01:02:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95ASM=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=EF=BC=8C=E8=BF=98=E6=98=AF=E5=8F=8D=E5=B0=84=E7=AE=80=E5=8D=95?= =?UTF-8?q?...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TabooLib.iml | 92 +++++-------- pom.xml | 85 +++++------- .../ilummc/tlib/resources/TLocaleLoader.java | 6 +- src/main/java/me/skymc/taboolib/Main.java | 7 +- .../skymc/taboolib/anvil/AnvilContainer.java | 80 +++++++++++ .../taboolib/anvil/AnvilContainerAPI.java | 13 +- .../versions/AnvilContainer_V1_11_R1.java | 32 ----- .../versions/AnvilContainer_V1_8_R3.java | 32 ----- .../anvil/versions/AnvilContainer_V1_9_4.java | 32 ----- .../taboolib/support/SupportPlaceholder.java | 3 + .../java/me/skymc/taboolib/team/TagAPI.java | 2 +- src/main/resources/lang/zh_CN.yml | 125 +++++++++--------- 12 files changed, 230 insertions(+), 279 deletions(-) create mode 100644 src/main/java/me/skymc/taboolib/anvil/AnvilContainer.java delete mode 100644 src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_11_R1.java delete mode 100644 src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_8_R3.java delete mode 100644 src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_9_4.java diff --git a/TabooLib.iml b/TabooLib.iml index acb26d9..88212e0 100644 --- a/TabooLib.iml +++ b/TabooLib.iml @@ -10,6 +10,15 @@ + + + + + + + + + @@ -21,6 +30,7 @@ + @@ -30,17 +40,6 @@ - - - - - - - - - - - @@ -50,33 +49,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -87,9 +59,18 @@ - + - + + + + + + + + + + @@ -104,24 +85,6 @@ - - - - - - - - - - - - - - - - - - @@ -132,9 +95,18 @@ - + - + + + + + + + + + + diff --git a/pom.xml b/pom.xml index 1091d54..7653b83 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.skymc TabooLib - 3.832 + 4.0 UTF-8 @@ -57,8 +57,8 @@ - vault - http://nexus.hc.to/content/repositories/pub_releases + placeholderapi + http://repo.extendedclip.com/content/repositories/placeholderapi/ @@ -93,6 +93,11 @@ asm 6.1.1 + + me.clip + placeholderapi + 2.8.4 + bukkit bukkit1_12 @@ -100,11 +105,6 @@ system ${basedir}/libs/1_12_R1.jar - - net.milkbowl.vault - VaultAPI - 1.6 - bukkit bukkit1_8 @@ -112,27 +112,6 @@ system ${basedir}/libs/1_8_R3.jar - - bukkit - bukkit1_9 - 1 - system - ${basedir}/libs/1_9_R3.jar - - - bukkit - bukkit1_10 - 1 - system - ${basedir}/libs/1_10_R1.jar - - - bukkit - bukkit1_11 - system - 1 - ${basedir}/libs/1_11_R1.jar - com.sun.tools jshell @@ -140,27 +119,6 @@ system ${basedir}/libs/com.sun.tools.jar - - placeholder - placeholder - 1 - system - ${basedir}/libs/PlaceholderAPI.jar - - - plib - plib - 1 - system - ${basedir}/libs/ProtocolLib.jar - - - sk - sk - 1 - system - ${basedir}/libs/Skript.jar - taboocode taboocode @@ -168,6 +126,20 @@ system ${basedir}/libs/TabooCode5.jar + + yum + yum + 1 + system + ${basedir}/libs/Yum.jar + + + plib + plib + 1 + system + ${basedir}/libs/ProtocolLib.jar + wg wg @@ -176,11 +148,18 @@ ${basedir}/libs/WorldGuard.jar - yum - yum + sk + sk 1 system - ${basedir}/libs/Yum.jar + ${basedir}/libs/Skript.jar + + + vault + vault + 1 + system + ${basedir}/libs/Vault.jar diff --git a/src/main/java/com/ilummc/tlib/resources/TLocaleLoader.java b/src/main/java/com/ilummc/tlib/resources/TLocaleLoader.java index 44822a0..84990b6 100644 --- a/src/main/java/com/ilummc/tlib/resources/TLocaleLoader.java +++ b/src/main/java/com/ilummc/tlib/resources/TLocaleLoader.java @@ -72,7 +72,7 @@ public class TLocaleLoader { */ public static void load(Plugin plugin, boolean isCover) { try { - if ((isCover || !isLocaleLoaded(plugin)) && (plugin.equals(Main.getInst()) || isDependWithTabooLib(plugin))) { + if (isLoadLocale(plugin, isCover)) { // 获取文件 File localeFile = getLocaleFile(plugin); if (localeFile == null) { @@ -99,6 +99,10 @@ public class TLocaleLoader { } } + private static boolean isLoadLocale(Plugin plugin, boolean isCover) { + return (isCover || !isLocaleLoaded(plugin)) && (plugin.equals(Main.getInst()) || isDependWithTabooLib(plugin)); + } + private static void infoLogger(String path, String... args) { TLogger.getGlobalLogger().info(Strings.replaceWithOrder(TLib.getInternalLanguage().getString(path), args)); } diff --git a/src/main/java/me/skymc/taboolib/Main.java b/src/main/java/me/skymc/taboolib/Main.java index b8e2d82..111c451 100644 --- a/src/main/java/me/skymc/taboolib/Main.java +++ b/src/main/java/me/skymc/taboolib/Main.java @@ -38,7 +38,6 @@ import me.skymc.taboolib.update.UpdateTask; import me.skymc.tlm.TLM; import me.skymc.tlm.command.TLMCommands; import me.skymc.tlm.module.TabooLibraryModule; -import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.event.Listener; @@ -49,12 +48,14 @@ import org.bukkit.scheduler.BukkitRunnable; import java.io.File; import java.util.Random; -@SuppressWarnings("deprecation") +/** + * @author sky + */ public class Main extends JavaPlugin implements Listener { private static Plugin inst; - private static Economy Economy; + private static net.milkbowl.vault.economy.Economy Economy; private static File playerDataFolder; diff --git a/src/main/java/me/skymc/taboolib/anvil/AnvilContainer.java b/src/main/java/me/skymc/taboolib/anvil/AnvilContainer.java new file mode 100644 index 0000000..7031477 --- /dev/null +++ b/src/main/java/me/skymc/taboolib/anvil/AnvilContainer.java @@ -0,0 +1,80 @@ +package me.skymc.taboolib.anvil; + +import com.ilummc.tlib.util.asm.AsmClassTransformer; +import me.skymc.taboolib.nms.NMSUtils; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +/** + * @author sky + */ +public class AnvilContainer { + +// private static IAnvilContainer instance; + + private static Class ChatMessage = NMSUtils.getNMSClass("ChatMessage"); + private static Class PacketPlayOutOpenWindow = NMSUtils.getNMSClass("PacketPlayOutOpenWindow"); + private static Class IChatBaseComponent = NMSUtils.getNMSClass("IChatBaseComponent"); + private static Class Packet = NMSUtils.getNMSClass("Packet"); + +// public static IAnvilContainer getInstance() { +// return instance; +// } +// +// static { +// /* +// * 玩不懂玩不懂... 似乎不会更改父类的包名? +// */ +// instance = (IAnvilContainer) AsmClassTransformer.builder() +// .from(AnvilContainerImpl.class) +// .fromVersion("v1_12_R1") +// .toVersion(Bukkit.getServer().getClass().getName().split("\\.")[3]) +// .build() +// .transform(); +// } + + public static void openAnvil(Player p) { + try { + Object player = p.getClass().getMethod("getHandle").invoke(p); + int c = (int) player.getClass().getMethod("nextContainerCounter").invoke(player); + Object chatMessage = ChatMessage.getConstructor(String.class, Object[].class).newInstance("Repairing", new Object[0]); + Object packetPlayOutOpenWindow = PacketPlayOutOpenWindow.getConstructor(Integer.TYPE, String.class, IChatBaseComponent, Integer.TYPE).newInstance(c, "minecraft:anvil", chatMessage, 0); + Object playerConnection = player.getClass().getDeclaredField("playerConnection").get(player); + playerConnection.getClass().getMethod("sendPacket", Packet).invoke(playerConnection, packetPlayOutOpenWindow); + } catch (Exception ignored) { + } + } +} + +//interface IAnvilContainer { +// +// /** +// * 打开铁砧界面 +// * +// * @param player 玩家 +// */ +// void openAnvil(Player player); +//} +// +//class AnvilContainerImpl extends net.minecraft.server.v1_12_R1.ContainerAnvil implements IAnvilContainer { +// +// public AnvilContainerImpl(net.minecraft.server.v1_12_R1.EntityHuman player) { +// super(player.inventory, player.world, new net.minecraft.server.v1_12_R1.BlockPosition(0, 0, 0), player); +// } +// +// @Override +// public void openAnvil(Player p) { +// net.minecraft.server.v1_12_R1.EntityPlayer player = ((org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer) p).getHandle(); +// AnvilContainerImpl container = new AnvilContainerImpl(player); +// int c = player.nextContainerCounter(); +// player.playerConnection.sendPacket(new net.minecraft.server.v1_12_R1.PacketPlayOutOpenWindow(c, "minecraft:anvil", new net.minecraft.server.v1_12_R1.ChatMessage("Repairing"), 0)); +// player.activeContainer = container; +// player.activeContainer.windowId = c; +// player.activeContainer.addSlotListener(player); +// } +// +// @Override +// public boolean a(net.minecraft.server.v1_12_R1.EntityHuman player) { +// return true; +// } +//} diff --git a/src/main/java/me/skymc/taboolib/anvil/AnvilContainerAPI.java b/src/main/java/me/skymc/taboolib/anvil/AnvilContainerAPI.java index ca86796..ac17535 100644 --- a/src/main/java/me/skymc/taboolib/anvil/AnvilContainerAPI.java +++ b/src/main/java/me/skymc/taboolib/anvil/AnvilContainerAPI.java @@ -1,6 +1,6 @@ package me.skymc.taboolib.anvil; -import me.skymc.taboolib.anvil.versions.AnvilContainer_V1_9_4; +import com.ilummc.tlib.resources.TLocale; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Sound; @@ -19,6 +19,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +/** + * @author sky + */ public class AnvilContainerAPI implements Listener { public static List list = new ArrayList<>(); @@ -29,14 +32,12 @@ public class AnvilContainerAPI implements Listener { public static void send(Player p, String type, String str, List lorelist) { isOpen.put(p.getName(), type); - AnvilContainer_V1_9_4.openAnvil(p); + AnvilContainer.openAnvil(p); ItemMeta meta = item.getItemMeta(); list.clear(); if (lorelist == null) { - list.add(""); - list.add("§7在上方文本框内输入信息"); - list.add("§7随后点击右侧输出物品"); + list.addAll(TLocale.asStringList("ANVIL-CONTAINER.LORE-NORMAL")); } else { list = lorelist; } @@ -91,7 +92,7 @@ public class AnvilContainerAPI implements Listener { if ("/anvilexample".equals(e.getMessage())) { if (e.getPlayer().hasPermission("taboolib.admin")) { e.setCancelled(true); - AnvilContainerAPI.send(e.getPlayer(), "EXAMPLE", "在这里输入文本", null); + AnvilContainerAPI.send(e.getPlayer(), "EXAMPLE", TLocale.asString("ANVIL-CONTAINER.NAME-EXAMPLE"), null); } } } diff --git a/src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_11_R1.java b/src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_11_R1.java deleted file mode 100644 index 298f021..0000000 --- a/src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_11_R1.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.skymc.taboolib.anvil.versions; - -import net.minecraft.server.v1_11_R1.*; -import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; - -public class AnvilContainer_V1_11_R1 extends ContainerAnvil { - - public AnvilContainer_V1_11_R1(EntityHuman player) { - super(player.inventory, player.world, new BlockPosition(0, 0, 0), player); - } - - /** - * @deprecated 方法已过期,已有新的方法 - */ - @Deprecated - public static void openAnvil(Player p) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - AnvilContainer_V1_11_R1 container = new AnvilContainer_V1_11_R1(player); - int c = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(c, "minecraft:anvil", new ChatMessage("Repairing"), 0)); - player.activeContainer = container; - player.activeContainer.windowId = c; - player.activeContainer.addSlotListener(player); - } - - @Override - public boolean a(EntityHuman player) { - return true; - } - -} diff --git a/src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_8_R3.java b/src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_8_R3.java deleted file mode 100644 index ce57cb1..0000000 --- a/src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_8_R3.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.skymc.taboolib.anvil.versions; - -import net.minecraft.server.v1_8_R3.*; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; -import org.bukkit.entity.Player; - -public class AnvilContainer_V1_8_R3 extends ContainerAnvil { - - public AnvilContainer_V1_8_R3(EntityHuman player) { - super(player.inventory, player.world, new BlockPosition(0, 0, 0), player); - } - - /** - * @deprecated 方法已过期,已有新的方法 - */ - @Deprecated - public static void openAnvil(Player p) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - AnvilContainer_V1_8_R3 container = new AnvilContainer_V1_8_R3(player); - int c = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(c, "minecraft:anvil", new ChatMessage("Repairing"), 0)); - player.activeContainer = container; - player.activeContainer.windowId = c; - player.activeContainer.addSlotListener(player); - } - - @Override - public boolean a(EntityHuman player) { - return true; - } - -} diff --git a/src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_9_4.java b/src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_9_4.java deleted file mode 100644 index 71f5d2d..0000000 --- a/src/main/java/me/skymc/taboolib/anvil/versions/AnvilContainer_V1_9_4.java +++ /dev/null @@ -1,32 +0,0 @@ -package me.skymc.taboolib.anvil.versions; - -import net.minecraft.server.v1_9_R2.*; -import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; -import org.bukkit.entity.Player; - -public class AnvilContainer_V1_9_4 extends ContainerAnvil { - - public AnvilContainer_V1_9_4(EntityHuman player) { - super(player.inventory, player.world, new BlockPosition(0, 0, 0), player); - } - - /** - * @deprecated 方法已过期,已有新的方法 - */ - @Deprecated - public static void openAnvil(Player p) { - EntityPlayer player = ((CraftPlayer) p).getHandle(); - AnvilContainer_V1_9_4 container = new AnvilContainer_V1_9_4(player); - int c = player.nextContainerCounter(); - player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(c, "minecraft:anvil", new ChatMessage("Repairing"), 0)); - player.activeContainer = container; - player.activeContainer.windowId = c; - player.activeContainer.addSlotListener(player); - } - - @Override - public boolean a(EntityHuman player) { - return true; - } - -} diff --git a/src/main/java/me/skymc/taboolib/support/SupportPlaceholder.java b/src/main/java/me/skymc/taboolib/support/SupportPlaceholder.java index 1d20713..6b25309 100644 --- a/src/main/java/me/skymc/taboolib/support/SupportPlaceholder.java +++ b/src/main/java/me/skymc/taboolib/support/SupportPlaceholder.java @@ -8,6 +8,9 @@ import me.skymc.tlm.module.sub.ModuleKits; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; +/** + * @author sky + */ public class SupportPlaceholder extends EZPlaceholderHook { public SupportPlaceholder(Plugin plugin, String identifier) { diff --git a/src/main/java/me/skymc/taboolib/team/TagAPI.java b/src/main/java/me/skymc/taboolib/team/TagAPI.java index c2d2677..b5819d0 100644 --- a/src/main/java/me/skymc/taboolib/team/TagAPI.java +++ b/src/main/java/me/skymc/taboolib/team/TagAPI.java @@ -132,7 +132,7 @@ public class TagAPI implements Listener { builtUUID.append(sent.getId()); } - AsyncPlayerReceiveNameTagEvent newEvent = new AsyncPlayerReceiveNameTagEvent(destinationPlayer, namedPlayer, oldEvent.getTag(), UUID.fromString(builtUUID.toString())); + AsyncPlayerReceiveNameTagEvent newEvent = new AsyncPlayerReceiveNameTagEvent(destinationPlayer, namedPlayer, getPlayerDisplayName(namedPlayer), UUID.fromString(builtUUID.toString())); Bukkit.getServer().getPluginManager().callEvent(newEvent); return new WrappedGameProfile(newEvent.getUUID(), newEvent.getTag().substring(0, Math.min(newEvent.getTag().length(), 16))); diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index 25c7489..104e0fb 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -77,7 +77,14 @@ LANGUAGE2: FALL-NOTFOUND-FILE: '语言文件 {0} 不存在' TIMECYCLE: - FALL-CYCLE-EXISTS: '注册周期管理器 §8{0}§c 失败, 原因: &4名称重复' + FALL-CYCLE-EXISTS: '注册周期管理器 &8{0}&c 失败, 原因: &4名称重复' + +ANVIL-CONTAINER: + NAME-EXAMPLE: '在这里输入文本' + LORE-NORMAL: + - '' + - '&7在上方文本框内输入信息' + - '&7随后点击右侧输出物品' UPDATETASK: VERSION-LATEST: '插件已是最新版, 无需更新!' @@ -110,17 +117,17 @@ COMMANDS: ONLY-PLAYER: '&8[&3&lTabooLib&8] &4控制台无法这么做' ONLY-STORAGE-SQL: '&8[&3&lTabooLib&8] &4只有启用数据库储存时才能这么做' INTERNAL: - ONLY-PLAYER: '&8[&3&lTabooLib&8] §7指令 §f{0} §7只能由 §f{1} §7执行' + ONLY-PLAYER: '&8[&3&lTabooLib&8] &7指令 &f{0} &7只能由 &f{1} &7执行' TYPE-PLAYER: 玩家 TYPE-CONSOLE: 控制台 ERROR-USAGE: - - '&8[&3&lTabooLib&8] §7指令 §f{0} §7参数不足' - - '&8[&3&lTabooLib&8] §7正确用法:' - - '&8[&3&lTabooLib&8] §7{1}' + - '&8[&3&lTabooLib&8] &7指令 &f{0} &7参数不足' + - '&8[&3&lTabooLib&8] &7正确用法:' + - '&8[&3&lTabooLib&8] &7{1}' ERROR-COMMAND: - - '&8[&3&lTabooLib&8] §7指令 §f{0} §7不存在' - - '&8[&3&lTabooLib&8] §7你可能想要:' - - '&8[&3&lTabooLib&8] §7{1}' + - '&8[&3&lTabooLib&8] &7指令 &f{0} &7不存在' + - '&8[&3&lTabooLib&8] &7你可能想要:' + - '&8[&3&lTabooLib&8] &7{1}' COMMAND-REGISTER: '&7自动为插件 &f{0} &7的命令 &f{1} &7注册 &f{2} &7条子命令' PARAMETER: UNKNOWN: '&8[&3&lTabooLib&8] &4指令错误' @@ -130,7 +137,7 @@ COMMANDS: SUCCESS-NORMAL: '&8[&3&lTabooLib&8] &7重载成功' SUCCESS-ELAPSED-TIME: '&8[&3&lTabooLib&8] &7重载成功, 耗时: &f{0} ms' TABOOLIB: - COMMAND-TITLE: '§b§l----- §3§lTabooLib Commands §b§l-----' + COMMAND-TITLE: '&b&l----- &3&lTabooLib Commands &b&l-----' SAVE: DESCRIPTION: '载入插件' ARGUMENTS: @@ -174,7 +181,7 @@ COMMANDS: READ-RESULT: '&8[&3&lTabooLib&8] &7变量 &f{0} &7的值为: &f{1}' READ-SUCCESS: '&8[&3&lTabooLib&8] &7写入完成, 耗时: &f{0} &7(ms)' IMPORTDATA: - DESCRIPTION: '§4向数据库导入本地数据 §8(该操作将会清空数据库)' + DESCRIPTION: '&4向数据库导入本地数据 &8(该操作将会清空数据库)' CLEARING: '&8[&3&lTabooLib&8] &7正在清空数据库...' EMPTYDATA: '&8[&3&lTabooLib&8] &4没有玩家数据可以导入' IMPORTING-START: '&8[&3&lTabooLib&8] &7开始导入 &f{0} &7项玩家数据' @@ -223,22 +230,22 @@ COMMANDS: - ==: JSON text: - '' - - '§b§l----- §3§lItemStack Info §b§l-----' + - '&b&l----- &3&lItemStack Info &b&l-----' - '' - - '§7 - 物品材质: §f<{0}@type>' - - '§7 - 物品名称: §f<{1}@name>' - - '§7 - 物品序号: §f<{2}@id>' - - '§7 - 物品数据: §f' + - '&7 - 物品材质: &f<{0}@type>' + - '&7 - 物品名称: &f<{1}@name>' + - '&7 - 物品序号: &f<{2}@id>' + - '&7 - 物品数据: &f' - '' args: type: - hover: '§f点击复制' + hover: '&f点击复制' suggest: '{0}' name: - hover: '§f点击复制' + hover: '&f点击复制' suggest: '{1}' id: - hover: '§f点击复制' + hover: '&f点击复制' suggest: '{2}' nbt: hover: '{3}' @@ -246,27 +253,27 @@ COMMANDS: DESCRIPTION: '查看所有物品' MENU: TITLE: '物品库 {0}' - NEXT: '§f上一页' - BACK: '§f下一页' + NEXT: '&f上一页' + BACK: '&f下一页' LORE: - '' - - '§f§m ' - - '§f序列号: §8{0}' + - '&f&m ' + - '&f序列号: &8{0}' SOUNDS: DESCRIPTION: '查看所有音效' MENU: TITLE: '音效库 {0}' - NEXT: '§f上一页' - BACK: '§f下一页' + NEXT: '&f上一页' + BACK: '&f下一页' LORE: - '' - - '§f左键: §71 音调' - - '§f右键: §72 音调' - - '§f中键: §7复制名称' + - '&f左键: &71 音调' + - '&f右键: &72 音调' + - '&f中键: &7复制名称' RESULT: SEARCH: - - '§7查询名称: §f{0}' - - '§7查询结果: §f{1}' + - '&7查询名称: &f{0}' + - '&7查询结果: &f{1}' COPY: - ==: JSON text: '&7点击复制: <&f&n{0}@sound>' @@ -292,23 +299,23 @@ COMMANDS: CYCLE-RESET: '&8[&3&lTabooLib&8] &7检查器 &f{0} &7初始化完成' CYCLE-INFO: - '' - - '§b§l----- §3§lTimeCycle Info §b§l-----' + - '&b&l----- &3&lTimeCycle Info &b&l-----' - '' - - ' §f- §7注册周期: §f{0}' - - ' §f- §7注册插件: §f{1}' - - ' §f- §7上次刷新时间: §f{2}' - - ' §f- §7下次刷新时间: §f{3}' + - ' &f- &7注册周期: &f{0}' + - ' &f- &7注册插件: &f{1}' + - ' &f- &7上次刷新时间: &f{2}' + - ' &f- &7下次刷新时间: &f{3}' LIST: HEAD: - '' - - '§b§l----- §3§lTimeCycle List §b§l-----' + - '&b&l----- &3&lTimeCycle List &b&l-----' - '' BODY: - ==: JSON - text: ' §7- §f{0} <&8(点击复制)@copy>' + text: ' &7- &f{0} <&8(点击复制)@copy>' args: copy: - hover: '§f点击复制' + hover: '&f点击复制' suggest: '{0}' FOOT: - '' @@ -316,14 +323,14 @@ COMMANDS: DESCRIPTION: '查看所有属性' HEAD: - '' - - '§b§l----- §3§lItemStack Attributes §b§l-----' + - '&b&l----- &3&lItemStack Attributes &b&l-----' - '' BODY: - ==: JSON - text: ' §7- §f{0} <&8(点击复制)@copy>' + text: ' &7- &f{0} <&8(点击复制)@copy>' args: copy: - hover: '§f点击复制' + hover: '&f点击复制' suggest: '{0}' FOOT: - '' @@ -331,14 +338,14 @@ COMMANDS: DESCRIPTION: '查看所有附魔' HEAD: - '' - - '§b§l----- §3§lItemStack Enchantments §b§l-----' + - '&b&l----- &3&lItemStack Enchantments &b&l-----' - '' BODY: - ==: JSON - text: ' §7- §f{0}. {1} <&8(点击复制)@copy>' + text: ' &7- &f{0}. {1} <&8(点击复制)@copy>' args: copy: - hover: '§f点击复制' + hover: '&f点击复制' suggest: '{1}' FOOT: - '' @@ -346,14 +353,14 @@ COMMANDS: DESCRIPTION: '查看所有药水' HEAD: - '' - - '§b§l----- §3§lItemStack PotionEffects §b§l-----' + - '&b&l----- &3&lItemStack PotionEffects &b&l-----' - '' BODY: - ==: JSON - text: ' §7- §f{0}. {1} <&8(点击复制)@copy>' + text: ' &7- &f{0}. {1} <&8(点击复制)@copy>' args: copy: - hover: '§f点击复制' + hover: '&f点击复制' suggest: '{1}' FOOT: - '' @@ -361,14 +368,14 @@ COMMANDS: DESCRIPTION: '查看所有标签' HEAD: - '' - - '§b§l----- §3§lItemStack Flags §b§l-----' + - '&b&l----- &3&lItemStack Flags &b&l-----' - '' BODY: - ==: JSON - text: ' §7- §f{0} <&8(点击复制)@copy>' + text: ' &7- &f{0} <&8(点击复制)@copy>' args: copy: - hover: '§f点击复制' + hover: '&f点击复制' suggest: '{0}' FOOT: - '' @@ -376,14 +383,14 @@ COMMANDS: DESCRIPTION: '查看所有部位' HEAD: - '' - - '§b§l----- §3§lItemStack Slots §b§l-----' + - '&b&l----- &3&lItemStack Slots &b&l-----' - '' BODY: - ==: JSON - text: ' §7- §f{0} <&8(点击复制)@copy>' + text: ' &7- &f{0} <&8(点击复制)@copy>' args: copy: - hover: '§f点击复制' + hover: '&f点击复制' suggest: '{0}' FOOT: - '' @@ -392,10 +399,10 @@ COMMANDS: SUCCESS-SEND: '&8[&3&lTabooLib&8] &7信息已发送, 耗时&f: {0}' HELP: - '' - - '§b§l----- §3§lLanguage2 Commands §b§l-----' + - '&b&l----- &3&lLanguage2 Commands &b&l-----' - '' - - '§f /{0} send §8[§7玩家/ALL§8] §8[§7语言§8] §8<§7变量§8> §6- §e发送语言提示' - - '§f /{0} reload §6- §e重载语言库' + - '&f /{0} send &8[&7玩家/ALL&8] &8[&7语言&8] &8<&7变量&8> &6- &e发送语言提示' + - '&f /{0} reload &6- &e重载语言库' - '' TLOCALE: INVALID-PLAYER: '&8[&3&lTabooLib&8] &4玩家 &c{0} &4不在线' @@ -403,13 +410,13 @@ COMMANDS: SUCCESS-SEND: '&8[&3&lTabooLib&8] &7信息已发送, 耗时&f: {0}' HELP: - '' - - '§b§l----- §3§lTabooLibLoacle Commands §b§l-----' + - '&b&l----- &3&lTabooLibLoacle Commands &b&l-----' - '' - - '§f /{0} send §8[§7玩家/ALL§8] §8[§7语言§8] §8<§7变量§8> §6- §e发送语言提示' - - '§f /{0} reload §6- §e重载语言库' + - '&f /{0} send &8[&7玩家/ALL&8] &8[&7语言&8] &8<&7变量&8> &6- &e发送语言提示' + - '&f /{0} reload &6- &e重载语言库' - '' TPLUGIN: - COMMAND-TITLE: '§e§l----- §6§lTabooLibPlugin Commands §b§l-----' + COMMAND-TITLE: '&e&l----- &6&lTabooLibPlugin Commands &b&l-----' LIST: DESCRIPTION: '列出插件' LIST-PLUGIN: