版本更新至:3.76

调整:开发框架改为 Gradle
新增:Language2 工具新增 [book] 类型
This commit is contained in:
坏黑
2018-03-10 21:13:05 +08:00
parent 6439e4b780
commit ad1a21196f
238 changed files with 1686 additions and 1132 deletions

View File

@@ -0,0 +1,213 @@
package me.skymc.taboolib.string.language2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import lombok.Getter;
import me.skymc.taboolib.string.language2.value.Language2Text;
/**
* @author sky
* @since 2018年2月13日 下午3:05:15
*/
public class Language2Value extends Object {
@Getter
private Language2 language;
@Getter
private String languageKey;
@Getter
private List<String> languageValue;
@Getter
private LinkedHashMap<String, String> placeholder = new LinkedHashMap<>();
@Getter
private boolean enablePlaceholderAPI = false;
/**
* 构造方法
*/
public Language2Value(Language2 language, String languageKey) {
// 如果语言文件不存在
if (language == null || languageKey == null) {
languageValue = Arrays.asList(ChatColor.DARK_RED + "[<ERROR-0>]");
return;
}
// 如果语言文本不存在
if (!language.getConfiguration().contains(languageKey)) {
languageValue = Arrays.asList(ChatColor.DARK_RED + "[<ERROR-1: " + languageKey + ">]");
return;
}
// 如果不是集合类型
if (language.getConfiguration().get(languageKey) instanceof List) {
// 设置文本
languageValue = asColored(language.getConfiguration().getStringList(languageKey));
// 追加结尾
languageValue.add("[return]");
// 是否启用PAPI
if (languageValue.get(0).contains("[papi]")) {
enablePlaceholderAPI = true;
}
}
else {
// 设置文本
languageValue = Arrays.asList(ChatColor.translateAlternateColorCodes('&', language.getConfiguration().getString(languageKey)), "[return]");
}
// 初始化变量
this.language = language;
this.languageKey = languageKey;
}
/**
* 向玩家发送信息
*
* @param player
*/
public void send(Player player) {
new Language2Format(player, this).send(player);
}
/**
* 向玩家发送信息
*
* @param players 玩家
*/
public void send(List<Player> players) {
for (Player player : players) {
send(player);
}
}
/**
* 向指令发送者发送信息
*
* @param sender
*/
public void send(CommandSender sender) {
if (sender instanceof Player) {
send((Player) sender);
}
else {
console();
}
}
/**
* 全服公告
*/
public void broadcast() {
send(new ArrayList<>(Bukkit.getOnlinePlayers()));
}
/**
* 发送到后台
*/
public void console() {
new Language2Format(null, this).console();
}
/**
* 获取文本
*
* @return
*/
public String asString() {
Language2Format format = new Language2Format(null, this);
if (format.getLanguage2Lines().get(0) instanceof Language2Text) {
Language2Text text = (Language2Text) format.getLanguage2Lines().get(0);
return setPlaceholder(text.getText().get(0), null);
}
else {
return languageValue.size() == 0 ? ChatColor.DARK_RED + "[<ERROR-1>]" : setPlaceholder(languageValue.get(0), null);
}
}
/**
* 获取文本集合
*
* @return
*/
public List<String> asStringList() {
Language2Format format = new Language2Format(null, this);
if (format.getLanguage2Lines().get(0) instanceof Language2Text) {
Language2Text text = (Language2Text) format.getLanguage2Lines().get(0);
return setPlaceholder(text.getText(), null);
}
else {
return Arrays.asList(languageValue.size() == 0 ? ChatColor.DARK_RED + "[<ERROR-1>]" : setPlaceholder(languageValue.get(0), null));
}
}
/**
* 变量替换
*
* @param value 替换文本
* @param player 检测玩家
* @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;
}
/**
* 变量替换
*
* @param list 替换集合
* @param player 检测玩家
* @return {@link List}
*/
public List<String> setPlaceholder(List<String> list, Player player) {
List<String> _list = new ArrayList<>(list);
for (int i = 0 ; i < _list.size() ; i++) {
_list.set(i, setPlaceholder(_list.get(i), player));
}
return _list;
}
/**
* 变量替换构造
*
* @param key 键
* @param value 值
* @return {@link Language2Value}
*/
public Language2Value addPlaceholder(String key, String value) {
this.placeholder.put(key, value);
return this;
}
/**
* 替换颜色
*
* @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;
}
@Override
public String toString() {
return asString();
}
}