版本更新至 3.54

大更新!
新增:Language2 工具, wiki已添加该工具使用帮助
This commit is contained in:
坏黑
2018-02-13 21:27:09 +08:00
parent a41d43b080
commit 757e44e87a
11 changed files with 890 additions and 16 deletions

View File

@@ -28,6 +28,7 @@ import me.skymc.taboolib.anvil.AnvilContainerAPI;
import me.skymc.taboolib.bstats.Metrics;
import me.skymc.taboolib.client.LogClient;
import me.skymc.taboolib.commands.MainCommands;
import me.skymc.taboolib.commands.language.Language2Command;
import me.skymc.taboolib.commands.sub.itemlist.listener.ItemLibraryPatch;
import me.skymc.taboolib.database.PlayerDataManager;
import me.skymc.taboolib.database.GlobalDataManager;
@@ -45,6 +46,7 @@ import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.mysql.protect.MySQLConnection;
import me.skymc.taboolib.sign.SignUtils;
import me.skymc.taboolib.string.StringUtils;
import me.skymc.taboolib.string.language2.Language2;
import me.skymc.taboolib.support.SupportPlaceholder;
import me.skymc.taboolib.team.TagUtils;
import me.skymc.taboolib.timecycle.TimeCycleManager;
@@ -80,6 +82,8 @@ public class Main extends JavaPlugin implements Listener {
private FileConfiguration config = null;
@Getter
private static LogClient client;
@Getter
private static Language2 exampleLangauge2;
public static Random getRandom() {
return NumberUtils.getRand();
@@ -163,6 +167,7 @@ public class Main extends JavaPlugin implements Listener {
public void onEnable() {
// 注册指令
getCommand("taboolib").setExecutor(new MainCommands());
getCommand("language2").setExecutor(new Language2Command());
// 注册监听
registerListener();
@@ -178,6 +183,8 @@ public class Main extends JavaPlugin implements Listener {
TimeCycleManager.load();
// 启动脚本
JavaShell.javaShellSetup();
// 载入语言文件
exampleLangauge2 = new Language2("Language2", this);
// 启动数据库储存方法
if (getStorageType() == StorageType.SQL) {

View File

@@ -56,56 +56,54 @@ public class MainCommands implements CommandExecutor{
sender.sendMessage("<EFBFBD><EFBFBD>f");
sender.sendMessage("<EFBFBD><EFBFBD>c /taboolib importdata <20><>f- <20><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>ݿ⵼<DDBF><EFBFBD><EBB1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>8(<28>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>)");
sender.sendMessage("<EFBFBD><EFBFBD>f");
return false;
}
else if (args[0].equalsIgnoreCase("itemreload") || args[0].equalsIgnoreCase("ireload")) {
ItemUtils.reloadItemCache();
ItemUtils.reloadItemName();
MsgUtils.send(sender, "<EFBFBD><EFBFBD><EFBFBD>سɹ<EFBFBD>");
return true;
}
else if (args[0].equalsIgnoreCase("save")) {
return new SaveCommand(sender, args).command();
new SaveCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("enchants")) {
return new EnchantCommand(sender, args).command();
new EnchantCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("potions")) {
return new PotionCommand(sender, args).command();
new PotionCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("flags")) {
return new FlagCommand(sender, args).command();
new FlagCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("attributes")) {
return new AttributesCommand(sender, args).command();
new AttributesCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("slots")) {
return new SlotCommand(sender, args).command();
new SlotCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("importdata")) {
return new ImportCommand(sender, args).command();
new ImportCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("iteminfo")) {
return new InfoCommand(sender, args).command();
new InfoCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("itemlist")) {
return new ItemListCommand(sender, args).command();
new ItemListCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("item") || args[0].equalsIgnoreCase("i")) {
return new ItemCommand(sender, args).command();
new ItemCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("setvariable")) {
return new VariableSetCommand(sender, args).command();
new VariableSetCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("getvariable")) {
return new VariableGetCommand(sender, args).command();
new VariableGetCommand(sender, args);
}
else if (args[0].equalsIgnoreCase("shell") || args[0].equalsIgnoreCase("s")) {
return new ShellCommand(sender, args).command();
new ShellCommand(sender, args);
}
else {
MsgUtils.send(sender, "&4ָ<34><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
return false;
return true;
}
}

View File

@@ -0,0 +1,74 @@
package me.skymc.taboolib.commands.language;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.string.language2.Language2Value;
/**
* @author sky
* @since 2018<31><38>2<EFBFBD><32>13<31><33> <20><><EFBFBD><EFBFBD>5:11:01
*/
public class Language2Command implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (args.length == 0) {
sender.sendMessage("<EFBFBD><EFBFBD>f");
sender.sendMessage("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lTabooLib Commands <20><>b<EFBFBD><62>l-----");
sender.sendMessage("<EFBFBD><EFBFBD>f");
sender.sendMessage("<EFBFBD><EFBFBD>7 /language2 reload <20><>f- <20><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>");
sender.sendMessage("<EFBFBD><EFBFBD>7 /language2 send [<5B><><EFBFBD><EFBFBD>] [<5B><><EFBFBD><EFBFBD>] <<3C><><EFBFBD><EFBFBD>> <20><>f- <20><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
sender.sendMessage("<EFBFBD><EFBFBD>f");
}
else if (args[0].equalsIgnoreCase("reload")) {
MsgUtils.send(sender, "<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..");
long time = System.currentTimeMillis();
Main.getExampleLangauge2().reload();
MsgUtils.send(sender, "<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! <20><>ʱ: &f" + (System.currentTimeMillis() - time) + "ms");
}
else if (args[0].equalsIgnoreCase("send")) {
if (args.length < 3) {
MsgUtils.send(sender, "<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else {
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
Player player = Bukkit.getPlayerExact(args[1]);
if (player == null) {
MsgUtils.send(sender, "<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else {
// ʱ<><CAB1>
long time = System.currentTimeMillis();
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
Language2Value value = Main.getExampleLangauge2().get(args[2]);
// <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (args.length > 3) {
int i = 0;
for (String variable : args[3].split("\\|")) {
value.addPlaceholder("$" + i, variable);
i++;
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
value.send(player);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (sender instanceof Player && ((Player) sender).getItemInHand().getType().equals(Material.COMMAND)) {
MsgUtils.send(sender, "<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>Ϣ<EFBFBD>ѷ<EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD>ʱ: &f" + (System.currentTimeMillis() - time) + "ms");
}
}
}
}
return true;
}
}

View File

@@ -0,0 +1,142 @@
package me.skymc.taboolib.string.language2;
import java.io.File;
import java.io.FileNotFoundException;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import lombok.Getter;
import me.clip.placeholderapi.PlaceholderAPI;
import me.skymc.taboolib.fileutils.ConfigUtils;
/**
* @author sky
* @since 2018<31><38>2<EFBFBD><32>13<31><33> <20><><EFBFBD><EFBFBD>2:37:07
*/
public class Language2 {
@Getter
private FileConfiguration configuration;
@Getter
private File languageFile;
@Getter
private File languageFolder;
@Getter
private Plugin plugin;
@Getter
private String languageName;
/**
* <20><><EFBFBD><EFBFBD><ECB7BD>
*
* @param plugin <20><><EFBFBD><EFBFBD>
*/
public Language2(Plugin plugin) {
this("zh_CN", plugin);
}
/**
* <20><><EFBFBD><EFBFBD><ECB7BD>
*
* @param languageName <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
* @param plugin <20><><EFBFBD><EFBFBD>
*/
public Language2(String languageName, Plugin plugin) {
this.languageName = languageName;
this.plugin = plugin;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
reload(languageName);
}
/**
* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
*
* @param key <20><>
* @return {@link Language2Value}
*/
public Language2Value get(String key) {
return new Language2Value(this, key);
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
*/
public void reload() {
reload(this.languageName);
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
*
* @param languageName <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
*/
public void reload(String languageName) {
// <20><>ʼ<EFBFBD><CABC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
createFolder(plugin);
// <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
languageName = formatName(languageName);
// <20><>ȡ<EFBFBD>ļ<EFBFBD>
languageFile = new File(languageFolder, languageName);
// <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!languageFile.exists()) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (plugin.getResource("Language2/" + languageName) == null) {
try {
throw new FileNotFoundException("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> " + languageName + " <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
catch (Exception e) {
// TODO: handle exception
}
}
else {
// <20>ͷ<EFBFBD><CDB7><EFBFBD>Դ
plugin.saveResource("Language2/" + languageName, true);
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
configuration = ConfigUtils.load(plugin, languageFile);
}
/**
* PlaceholderAPI <20><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>
*
* @param player <20><><EFBFBD><EFBFBD>
* @param string <20>ı<EFBFBD>
* @return String
*/
public String setPlaceholderAPI(Player player, String string) {
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null && player != null) {
return PlaceholderAPI.setPlaceholders(player, string);
}
return string;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƹ<EFBFBD>ʽ<EFBFBD><CABD>
*
* @param name <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
* @return String
*/
private String formatName(String name) {
return name.contains(".yml") ? name : name + ".yml";
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>г<EFBFBD>ʼ<EFBFBD><CABC>
*
* @param plugin
*/
private void createFolder(Plugin plugin) {
languageFolder = new File(plugin.getDataFolder(), "Language2");
if (!languageFolder.exists()) {
languageFolder.mkdir();
}
}
}

View File

@@ -0,0 +1,29 @@
package me.skymc.taboolib.string.language2;
/**
* @author sky
* @since 2018<31><38>2<EFBFBD><32>13<31><33> <20><><EFBFBD><EFBFBD>3:14:00
*/
public enum Language2Type {
/**
* һ<><D2BB><EFBFBD>ı<EFBFBD>
*/
TEXT,
/**
* JSON <20>ı<EFBFBD>
*/
JSON,
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
TITLE,
/**
* С<><D0A1><EFBFBD><EFBFBD>
*/
ACTION,
}

View File

@@ -0,0 +1,227 @@
package me.skymc.taboolib.string.language2;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import lombok.Getter;
import me.skymc.taboolib.string.language2.type.Language2Action;
import me.skymc.taboolib.string.language2.type.Language2Json;
import me.skymc.taboolib.string.language2.type.Language2Title;
/**
* @author sky
* @since 2018<31><38>2<EFBFBD><32>13<31><33> <20><><EFBFBD><EFBFBD>3:05:15
*/
public class Language2Value {
@Getter
private Language2 language;
@Getter
private String languageKey;
@Getter
private List<String> languageValue;
@Getter
private Language2Type languageType;
@Getter
private LinkedHashMap<String, String> placeholder = new LinkedHashMap<>();
@Getter
private boolean enablePlaceholderAPI;
/**
* <20><><EFBFBD><EFBFBD><ECB7BD>
*/
public Language2Value(Language2 language, String languageKey) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (language == null || languageKey == null) {
languageValue = Arrays.asList(ChatColor.DARK_RED + "[<ERROR-0>]");
return;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!language.getConfiguration().contains(languageKey)) {
languageValue = Arrays.asList(ChatColor.DARK_RED + "[<ERROR-1: " + languageKey + ">]");
return;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (language.getConfiguration().get(languageKey) instanceof List) {
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
languageValue = asColored(language.getConfiguration().getStringList(languageKey));
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
String type = languageValue.get(0).toLowerCase();
// <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
if (type.contains("[json]")) {
languageType = Language2Type.JSON;
}
else if (type.contains("[title]")) {
languageType = Language2Type.TITLE;
}
else if (type.contains("[action]")) {
languageType = Language2Type.ACTION;
}
else {
languageType = Language2Type.TEXT;
}
// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>PAPI
if (type.contains("[papi]")) {
enablePlaceholderAPI = true;
}
else {
enablePlaceholderAPI = false;
}
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
languageValue.remove(0);
}
else {
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
languageValue = Arrays.asList(ChatColor.translateAlternateColorCodes('&', language.getConfiguration().getString(languageKey)));
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
languageType = Language2Type.TEXT;
}
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
this.language = language;
this.languageKey = languageKey;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
*
* @param player
*/
public void send(Player player) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (languageType == Language2Type.TITLE) {
// ʶ<><CAB6><EFBFBD>ı<EFBFBD>
Language2Title title = new Language2Title(this);
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
title.send(player);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if (languageType == Language2Type.ACTION) {
// ʶ<><CAB6><EFBFBD>ı<EFBFBD>
Language2Action action = new Language2Action(this);
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
action.send(player);
}
// JSON<4F><4E><EFBFBD><EFBFBD>
else if (languageType == Language2Type.JSON) {
// ʶ<><CAB6><EFBFBD>ı<EFBFBD>
Language2Json json = new Language2Json(this, player);
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
json.send(player);
}
else {
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
for (String message : languageValue) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if (player != null) {
player.sendMessage(setPlaceholder(message, player));
}
else {
Bukkit.getConsoleSender().sendMessage(setPlaceholder(message, player));
}
}
}
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
*
* @param players <20><><EFBFBD><EFBFBD>
*/
public void send(List<Player> players) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (languageType == Language2Type.TITLE) {
// ʶ<><CAB6><EFBFBD>ı<EFBFBD>
Language2Title title = new Language2Title(this);
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
players.forEach(x -> title.send(x));
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if (languageType == Language2Type.ACTION) {
// ʶ<><CAB6><EFBFBD>ı<EFBFBD>
Language2Action action = new Language2Action(this);
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
players.forEach(x -> action.send(x));
}
// JSON<4F><4E><EFBFBD><EFBFBD>
else if (languageType == Language2Type.JSON) {
for (Player player : players) {
// ʶ<><CAB6><EFBFBD>ı<EFBFBD>
Language2Json json = new Language2Json(this, player);
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
json.send(player);
}
}
else {
for (Player player : players) {
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
for (String message : languageValue) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if (player != null) {
player.sendMessage(setPlaceholder(message, player));
}
else {
Bukkit.getConsoleSender().sendMessage(setPlaceholder(message, player));
}
}
}
}
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>
*
* @param value <20><EFBFBD>ı<EFBFBD>
* @param player <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return String
*/
public String setPlaceholder(String value, Player player) {
for (Entry<String, String> entry : placeholder.entrySet()) {
value = value.replace(entry.getKey(), entry.getValue());
}
return isEnablePlaceholderAPI() ? this.language.setPlaceholderAPI(player, value) : value;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB><EFBFBD><EFBFBD>
*
* @param key <20><>
* @param value ֵ
* @return {@link Language2Value}
*/
public Language2Value addPlaceholder(String key, String value) {
this.placeholder.put(key, value);
return this;
}
/**
* <20><EFBFBD><E6BBBB>ɫ
*
* @param list
* @return
*/
public List<String> asColored(List<String> list) {
for (int i = 0 ; i < list.size() ; i++) {
list.set(i, ChatColor.translateAlternateColorCodes('&', list.get(i)));
}
return list;
}
}

View File

@@ -0,0 +1,93 @@
package me.skymc.taboolib.string.language2.type;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import lombok.Getter;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.TabooLib;
import me.skymc.taboolib.display.ActionUtils;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.other.NumberUtils;
import me.skymc.taboolib.string.language2.Language2Value;
/**
* @author sky
* @since 2018<31><38>2<EFBFBD><32>13<31><33> <20><><EFBFBD><EFBFBD>3:58:07
*/
public class Language2Action {
private static final String KEY_TEXT = " text: ";
private static final String KEY_STAY = " repeat: ";
@Getter
private String text = "";
@Getter
private int repeat = 1;
@Getter
private Language2Value value;
public Language2Action(Language2Value value) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
this.value = value;
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
for (String message : value.getLanguageValue()) {
try {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
if (message.startsWith(KEY_TEXT)) {
text = message.substring(KEY_TEXT.length());
}
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
if (message.startsWith(KEY_STAY)) {
repeat = NumberUtils.getInteger(message.substring(KEY_STAY.length()));
}
}
catch (Exception e) {
// ʶ<><CAB6><EFBFBD>
text = ChatColor.DARK_RED + "[<ERROR-11: " + value.getLanguageKey() + ">]";
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
if (repeat < 0) {
repeat = 1;
text = ChatColor.DARK_RED + "[<ERROR-12: " + value.getLanguageKey() + ">]";
}
}
/**
* <20><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>
*
* @param player <20><><EFBFBD><EFBFBD>
*/
public void send(Player player) {
// <20><><EFBFBD><EFBFBD><EFBFBD>
if (TabooLib.getVerint() < 10800) {
player.sendMessage(ChatColor.DARK_RED + "[<ERROR-30: " + value.getLanguageKey() + ">]");
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if (player != null) {
new BukkitRunnable() {
int times = 0;
@Override
public void run() {
ActionUtils.send(player, value.setPlaceholder(text, player));
if ((times += 1) >= repeat) {
cancel();
}
}
}.runTaskTimer(Main.getInst(), 0, 20);
}
else {
Bukkit.getConsoleSender().sendMessage(value.setPlaceholder(text, player));
}
}
}

View File

@@ -0,0 +1,142 @@
package me.skymc.taboolib.string.language2.type;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import lombok.Getter;
import me.skymc.taboolib.jsonformatter.JSONFormatter;
import me.skymc.taboolib.jsonformatter.click.ClickEvent;
import me.skymc.taboolib.jsonformatter.click.RunCommandEvent;
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
import me.skymc.taboolib.jsonformatter.hover.HoverEvent;
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
import me.skymc.taboolib.string.language2.Language2Value;
/**
* @author sky
* @since 2018<31><38>2<EFBFBD><32>13<31><33> <20><><EFBFBD><EFBFBD>4:11:33
*/
public class Language2Json {
private static final String KEY_TEXT = " text: ";
private static final String KEY_COMMAND = " command: ";
private static final String KEY_SUGGEST = " suggest: ";
@Getter
private Player player;
@Getter
private Language2Value value;
@Getter
private JSONFormatter json = new JSONFormatter();
@Getter
private StringBuffer text = new StringBuffer();
public Language2Json(Language2Value value, Player player) {
// <20>ı<EFBFBD><C4B1><EFBFBD>ʼ<EFBFBD><CABC>
String current = ChatColor.DARK_RED + "[<ERROR-20: " + value.getLanguageKey() + ">]";
// <20>״μ<D7B4><CEBC><EFBFBD>
boolean isFirst = true;
boolean isBreak = false;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
this.value = value;
this.player = player;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
ClickEvent clickEvent = null;
HoverEvent hoverEvent = null;
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
for (String message : value.getLanguageValue()) {
try {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ı<EFBFBD>
if (message.startsWith(KEY_TEXT)) {
hoverEvent = new ShowTextEvent(message.replace("||", "\n").substring(KEY_TEXT.length()));
}
// ִ<><D6B4>ָ<EFBFBD><D6B8>
else if (message.startsWith(KEY_COMMAND)) {
clickEvent = new RunCommandEvent(message.substring(KEY_COMMAND.length()));
}
// <20><>ӡָ<D3A1><D6B8>
else if (message.startsWith(KEY_SUGGEST)) {
clickEvent = new SuggestCommandEvent(message.substring(KEY_SUGGEST.length()));
}
// <20><><EFBFBD><EFBFBD>
else if (message.equals("[break]")) {
append(current, clickEvent, hoverEvent);
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
clickEvent = null;
hoverEvent = null;
// <20><><EFBFBD><EFBFBD>
json.newLine();
// <20><><EFBFBD><EFBFBD>
isBreak = true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else {
if (!isFirst && !isBreak) {
append(current, clickEvent, hoverEvent);
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
clickEvent = null;
hoverEvent = null;
}
// <20><><EFBFBD><EFBFBD>
current = message;
// <20><><EFBFBD><EFBFBD>
isFirst = false;
isBreak = false;
}
}
catch (Exception e) {
// ʶ<><CAB6><EFBFBD>
json.append(ChatColor.DARK_RED + "[<ERROR-21: " + value.getLanguageKey() + ">]");
}
}
// ׷<><D7B7>
append(current, clickEvent, hoverEvent);
}
/**
* <20><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>
*
* @param player <20><><EFBFBD><EFBFBD>
*/
public void send(Player player) {
if (player != null) {
json.send(player);
}
else {
Bukkit.getConsoleSender().sendMessage(text.toString());
}
}
/**
* ׷<><D7B7> JSON <20><><EFBFBD><EFBFBD>
*
* @param current <20>ı<EFBFBD>
* @param clickevent <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param hoverEvent <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
*/
private void append(String current, ClickEvent clickEvent, HoverEvent hoverEvent) {
if (clickEvent == null && hoverEvent == null) {
// <20><><EFBFBD>ı<EFBFBD>
json.append(value.setPlaceholder(current, player));
} else if (clickEvent != null && hoverEvent == null) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
json.appendClick(value.setPlaceholder(current, player), clickEvent);
} else if (clickEvent == null && hoverEvent != null) {
// <20><><EFBFBD><EFBFBD>ʾ
json.appendHover(value.setPlaceholder(current, player), hoverEvent);
} else {
// ȫ<><C8AB>
json.appendHoverClick(value.setPlaceholder(current, player), hoverEvent, clickEvent);
}
// ׷<><D7B7><EFBFBD><EFBFBD>ʾ<EFBFBD>ı<EFBFBD>
text.append(current);
}
}

View File

@@ -0,0 +1,93 @@
package me.skymc.taboolib.string.language2.type;
import java.util.Collection;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import lombok.Getter;
import me.skymc.taboolib.TabooLib;
import me.skymc.taboolib.display.TitleUtils;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.string.language2.Language2Value;
/**
* @author sky
* @since 2018<31><38>2<EFBFBD><32>13<31><33> <20><><EFBFBD><EFBFBD>3:58:07
*/
public class Language2Title {
private static final String KEY_TITLE = " title: ";
private static final String KEY_SUBTITLE = " subtitle: ";
private static final String KEY_STAYRULE = " stay: ";
@Getter
private String title = "";
@Getter
private String subtitle = "";
@Getter
private int fade1 = 0;
@Getter
private int fade2 = 0;
@Getter
private int stay = 20;
@Getter
private Language2Value value;
public Language2Title(Language2Value value) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
this.value = value;
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
for (String message : value.getLanguageValue()) {
try {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (message.startsWith(KEY_TITLE)) {
title = message.substring(KEY_TITLE.length());
}
// С<><D0A1><EFBFBD><EFBFBD>
else if (message.startsWith(KEY_SUBTITLE)) {
subtitle = message.substring(KEY_SUBTITLE.length());
}
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
else if (message.startsWith(KEY_STAYRULE)) {
String rule = message.substring(KEY_STAYRULE.length());
fade1 = Integer.valueOf(rule.split("\\|")[0]);
stay = Integer.valueOf(rule.split("\\|")[1]);
fade2 = Integer.valueOf(rule.split("\\|")[2]);
}
}
catch (Exception e) {
// ʶ<><CAB6><EFBFBD>
title = ChatColor.DARK_RED + "[<ERROR-10: " + value.getLanguageKey() + ">]";
subtitle = ChatColor.DARK_RED + "[<ERROR-10: " + value.getLanguageKey() + ">]";
}
}
}
/**
* <20><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>
*
* @param player <20><><EFBFBD><EFBFBD>
*/
public void send(Player player) {
// <20><><EFBFBD><EFBFBD><EFBFBD>
if (TabooLib.getVerint() < 10800) {
player.sendMessage(ChatColor.DARK_RED + "[<ERROR-31: " + value.getLanguageKey() + ">]");
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if (player != null) {
TitleUtils.sendTitle(player, value.setPlaceholder(title, player), value.setPlaceholder(subtitle, player), fade1, stay, fade2);
}
else {
Bukkit.getConsoleSender().sendMessage(value.setPlaceholder(title, player) + ", " + value.setPlaceholder(subtitle, player));
}
}
}