Update Command & Locale
This commit is contained in:
parent
cba68af5bb
commit
dc9bf53bce
@ -6,7 +6,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = 'me.skymc'
|
||||
version = '5.24'
|
||||
version = '5.25'
|
||||
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
|
@ -19,29 +19,66 @@ MYSQL-HIKARI:
|
||||
CLOSE-FAIL: '&7Plugin &f{0} &7Try to deregister connection used by &f{1} &7plugins.'
|
||||
|
||||
COMMANDS:
|
||||
GLOBAL:
|
||||
ONLY-PLAYER: '&8[&3&lTabooLib&8] &4This is only for player.'
|
||||
ONLY-STORAGE-SQL: '&8[&3&lTabooLib&8] &4Can only be done when SQL-Mode is enabled.'
|
||||
INTERNAL:
|
||||
COMMAND-CREATE-FAILED: '&c插件 &7{0} &c的 &7{1} &c命令注册失败: &7{2}'
|
||||
TYPE-ERROR: '&8[&3&lTabooLib&8] &7Command &f{0} &7can only be executed by &f{1} &7.'
|
||||
TYPE-PLAYER: 'Player'
|
||||
TYPE-CONSOLE: 'Console'
|
||||
ERROR-USAGE:
|
||||
- '&8[&3&lTabooLib&8] &7Command &f{0} &7'
|
||||
- '&8[&3&lTabooLib&8] &7Usage:'
|
||||
- '&8[&3&lTabooLib&8] &7{1}'
|
||||
ERROR-COMMAND:
|
||||
- '&8[&3&lTabooLib&8] &7Command &f{0} &7not found'
|
||||
- '&8[&3&lTabooLib&8] &7Maybe:'
|
||||
- '&8[&3&lTabooLib&8] &7{1}'
|
||||
COMMAND-CREATE-FAILED: '&c插件 &7{0} &c的 &7{1} &c命令注册失败: &7{2}'
|
||||
COMMAND-HELP: ' §f/{0} {1} {2}§6- §e{3}'
|
||||
COMMAND-HELP-EMPTY: ' §f/{0} {1} {2}'
|
||||
COMMAND-ARGUMENT: '§7<§8{0}§7>'
|
||||
COMMAND-ARGUMENT-REQUIRE: '§7[§8{0}§7]'
|
||||
PARAMETER:
|
||||
UNKNOWN: '&8[&3&lTabooLib&8] &4Invalid command.'
|
||||
INSUFFICIENT: '&8[&3&lTabooLib&8] &4Invalid arguments.'
|
||||
DISPLAY:
|
||||
CLASSIC:
|
||||
HELP: '§f/{0} {1} {2} §6- §e{3}'
|
||||
HELP-EMPTY: '§f/{0} {1} {2}'
|
||||
ARGUMENT-REQUIRED: '§7[§8{0}§7]'
|
||||
ARGUMENT-OPTIONAL: '§7<§8{0}§7>'
|
||||
ERROR-USAGE:
|
||||
- '&8[&3&l{2}&8] &7Command &f{0} &7is missing parameters'
|
||||
- '&8[&3&l{2}&8] &7Usage:'
|
||||
- '&8[&3&l{2}&8] &7{1}'
|
||||
ERROR-COMMAND:
|
||||
- '&8[&3&l{2}&8] &7Command &f{0} &7not found'
|
||||
- '&8[&3&l{2}&8] &7Usage:'
|
||||
- '&8[&3&l{3}&8] &7{1}'
|
||||
FLAT:
|
||||
HELP: '§f/{0} {1} {2} §8- §7{3}'
|
||||
HELP-EMPTY: '§f/{0} {1} {2}'
|
||||
ARGUMENT-REQUIRED: '§7[§8{0}§7]'
|
||||
ARGUMENT-OPTIONAL: '§7<§8{0}§7>'
|
||||
ERROR-USAGE:
|
||||
- '&8[&3&l{2}&8] &7Command &f{0} &7is missing parameters'
|
||||
- '&8[&3&l{2}&8] &7Usage:'
|
||||
- '&8[&3&l{2}&8] &7{1}'
|
||||
ERROR-COMMAND:
|
||||
- '&8[&3&l{2}&8] &7Command &f{0} &7not found'
|
||||
- '&8[&3&l{2}&8] &7Usage:'
|
||||
- '&8[&3&l{3}&8] &7{1}'
|
||||
HEAD:
|
||||
- ' '
|
||||
- ' &f&l{0}&7 v{1}'
|
||||
- ' '
|
||||
- ' &7命令: &f/{2} &8[...]'
|
||||
- ' &7参数:'
|
||||
BOTTOM:
|
||||
- ' '
|
||||
PARAMETERS:
|
||||
==: JSON
|
||||
text:
|
||||
- ' &8- &f<{0}@0>'
|
||||
- ' &8 &7{1}'
|
||||
args:
|
||||
0:
|
||||
hover: '{2}'
|
||||
suggest: '{3}'
|
||||
PARAMETERS-EMPTY:
|
||||
==: JSON
|
||||
text:
|
||||
- ' &8- &f<{0}@0>'
|
||||
args:
|
||||
0:
|
||||
hover: '{2}'
|
||||
suggest: '{3}'
|
||||
|
||||
COMMUNICATION:
|
||||
FAILED-LOAD-SETTINGS: '§8[§3§lTabooLibClient§8] &4配置载入失败: {0}'
|
||||
|
@ -19,29 +19,66 @@ MYSQL-HIKARI:
|
||||
CLOSE-FAIL: '&7插件 &f{0} &7注册的连接池正在被 &f{1} &7个插件使用, 无法注销!'
|
||||
|
||||
COMMANDS:
|
||||
GLOBAL:
|
||||
ONLY-PLAYER: '&8[&3&lTabooLib&8] &4控制台无法这么做'
|
||||
ONLY-STORAGE-SQL: '&8[&3&lTabooLib&8] &4只有启用数据库储存时才能这么做'
|
||||
INTERNAL:
|
||||
TYPE-ERROR: '&8[&3&lTabooLib&8] &7指令 &f{0} &7只能由 &f{1} &7执行'
|
||||
COMMAND-CREATE-FAILED: '&c插件 &7{0} &c的 &7{1} &c命令注册失败: &7{2}'
|
||||
TYPE-ERROR: '&8[&3&l{2}&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}'
|
||||
ERROR-COMMAND:
|
||||
- '&8[&3&lTabooLib&8] &7指令 &f{0} &7不存在'
|
||||
- '&8[&3&lTabooLib&8] &7你可能想要:'
|
||||
- '&8[&3&lTabooLib&8] &7{1}'
|
||||
COMMAND-CREATE-FAILED: '&c插件 &7{0} &c的 &7{1} &c命令注册失败: &7{2}'
|
||||
COMMAND-HELP: ' §f/{0} {1} {2}§6- §e{3}'
|
||||
COMMAND-HELP-EMPTY: ' §f/{0} {1} {2}'
|
||||
COMMAND-ARGUMENT: '§7<§8{0}§7>'
|
||||
COMMAND-ARGUMENT-REQUIRE: '§7[§8{0}§7]'
|
||||
PARAMETER:
|
||||
UNKNOWN: '&8[&3&lTabooLib&8] &4指令错误'
|
||||
UNKNOWN: '&8[&3&lTabooLib&8] &4b指令错误'
|
||||
INSUFFICIENT: '&8[&3&lTabooLib&8] &4参数不足'
|
||||
DISPLAY:
|
||||
CLASSIC:
|
||||
HELP: '§f/{0} {1} {2} §6- §e{3}'
|
||||
HELP-EMPTY: '§f/{0} {1} {2}'
|
||||
ARGUMENT-REQUIRED: '§7[§8{0}§7]'
|
||||
ARGUMENT-OPTIONAL: '§7<§8{0}§7>'
|
||||
ERROR-USAGE:
|
||||
- '&8[&3&l{2}&8] &7指令 &f{0} &7参数不足'
|
||||
- '&8[&3&l{2}&8] &7正确用法:'
|
||||
- '&8[&3&l{2}&8] &7{1}'
|
||||
ERROR-COMMAND:
|
||||
- '&8[&3&l{2}&8] &7指令 &f{0} &7不存在'
|
||||
- '&8[&3&l{2}&8] &7你可能想要:'
|
||||
- '&8[&3&l{3}&8] &7{1}'
|
||||
FLAT:
|
||||
HELP: '§f/{0} {1} {2} §8- §7{3}'
|
||||
HELP-EMPTY: '§f/{0} {1} {2}'
|
||||
ARGUMENT-REQUIRED: '§7[§8{0}§7]'
|
||||
ARGUMENT-OPTIONAL: '§7<§8{0}§7>'
|
||||
ERROR-USAGE:
|
||||
- '&8[&3&l{2}&8] &7指令 &f{0} &7参数不足'
|
||||
- '&8[&3&l{2}&8] &7正确用法:'
|
||||
- '&8[&3&l{2}&8] &7{1}'
|
||||
ERROR-COMMAND:
|
||||
- '&8[&3&l{2}&8] &7指令 &f{0} &7不存在'
|
||||
- '&8[&3&l{2}&8] &7你可能想要:'
|
||||
- '&8[&3&l{2}&8] &7{1}'
|
||||
HEAD:
|
||||
- ' '
|
||||
- ' &f&l{0}&7 v{1}'
|
||||
- ' '
|
||||
- ' &7命令: &f/{2} &8[...]'
|
||||
- ' &7参数:'
|
||||
BOTTOM:
|
||||
- ' '
|
||||
PARAMETERS:
|
||||
==: JSON
|
||||
text:
|
||||
- ' &8- &f<{0}@0>'
|
||||
- ' &8 &7{1}'
|
||||
args:
|
||||
0:
|
||||
hover: '{2}'
|
||||
suggest: '{3}'
|
||||
PARAMETERS-EMPTY:
|
||||
==: JSON
|
||||
text:
|
||||
- ' &8- &f<{0}@0>'
|
||||
args:
|
||||
0:
|
||||
hover: '{2}'
|
||||
suggest: '{3}'
|
||||
|
||||
COMMUNICATION:
|
||||
FAILED-LOAD-SETTINGS: '§8[§3§lTabooLibClient§8] &4配置载入失败: {0}'
|
||||
|
@ -1,7 +1,5 @@
|
||||
package io.izzel.taboolib.module.command.base;
|
||||
|
||||
import io.izzel.taboolib.module.locale.TLocale;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
@ -48,11 +46,6 @@ public class Argument {
|
||||
this.tab = tab;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return required ? TLocale.asString("COMMANDS.INTERNAL.COMMAND-ARGUMENT-REQUIRE", name) : TLocale.asString("COMMANDS.INTERNAL.COMMAND-ARGUMENT", name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
|
@ -4,7 +4,8 @@ import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.Lists;
|
||||
import io.izzel.taboolib.TabooLib;
|
||||
import io.izzel.taboolib.TabooLibAPI;
|
||||
import io.izzel.taboolib.Version;
|
||||
import io.izzel.taboolib.module.command.base.display.DisplayBase;
|
||||
import io.izzel.taboolib.module.command.base.display.DisplayFlat;
|
||||
import io.izzel.taboolib.module.locale.TLocale;
|
||||
import io.izzel.taboolib.util.ArrayUtil;
|
||||
import io.izzel.taboolib.util.Ref;
|
||||
@ -17,7 +18,10 @@ import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -27,6 +31,7 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
public abstract class BaseMainCommand implements CommandExecutor, TabExecutor {
|
||||
|
||||
private DisplayBase display = new DisplayFlat();
|
||||
private PluginCommand registerCommand;
|
||||
private List<Class<?>> linkClasses = new CopyOnWriteArrayList<>();
|
||||
private List<BaseSubCommand> subCommands = new CopyOnWriteArrayList<>();
|
||||
@ -95,7 +100,7 @@ public abstract class BaseMainCommand implements CommandExecutor, TabExecutor {
|
||||
}
|
||||
}
|
||||
|
||||
private static BaseSubCommand buildSubCommand(BaseMainCommand baseMainCommand, Method method) {
|
||||
public static BaseSubCommand buildSubCommand(BaseMainCommand baseMainCommand, Method method) {
|
||||
return new BaseSubCommand() {
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
@ -108,47 +113,24 @@ public abstract class BaseMainCommand implements CommandExecutor, TabExecutor {
|
||||
};
|
||||
}
|
||||
|
||||
public void setRegisterCommand(PluginCommand registerCommand) {
|
||||
this.registerCommand = registerCommand;
|
||||
}
|
||||
|
||||
public PluginCommand getRegisterCommand() {
|
||||
return registerCommand;
|
||||
}
|
||||
|
||||
public List<Class<?>> getLinkClasses() {
|
||||
return linkClasses;
|
||||
}
|
||||
|
||||
public List<BaseSubCommand> getSubCommands() {
|
||||
return subCommands;
|
||||
}
|
||||
|
||||
public void registerSubCommand(BaseSubCommand subCommand) {
|
||||
if (subCommand != null) {
|
||||
Preconditions.checkNotNull(subCommand);
|
||||
Preconditions.checkArgument(subCommand.getLabel() != null, "Command label can not be null");
|
||||
Preconditions.checkArgument(subCommand.getArguments() != null, "Command arguments can not be null");
|
||||
}
|
||||
subCommands.add(subCommand);
|
||||
subCommands.add(subCommand.mainCommand(this));
|
||||
}
|
||||
|
||||
public void onCommandHelp(CommandSender sender, Command command, String label, String[] args) {
|
||||
sender.sendMessage(getEmptyLine());
|
||||
sender.sendMessage(getCommandTitle());
|
||||
sender.sendMessage(getEmptyLine());
|
||||
subCommands.stream().filter(subCommands -> !hideInHelp(subCommands) && hasPermission(sender, subCommands)).map(subCommand -> subCommand == null ? getEmptyLine() : subCommand.getCommandString(label)).forEach(sender::sendMessage);
|
||||
sender.sendMessage(getEmptyLine());
|
||||
}
|
||||
|
||||
public String getCommandTitle() {
|
||||
return "§e§l----- §6§l" + registerCommand.getPlugin().getName() + " Commands §e§l-----";
|
||||
display.displayHead(sender, this, label);
|
||||
subCommands.forEach(s -> display.displayParameters(sender, s, label));
|
||||
display.displayBottom(sender, this, label);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] args) {
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String s, String[] args) {
|
||||
if (args.length == 1) {
|
||||
List<String> label = Lists.newArrayList();
|
||||
subCommands.stream().filter(subCommand -> !hideInHelp(subCommand) && hasPermission(commandSender, subCommand)).forEach(l -> {
|
||||
subCommands.stream().filter(subCommand -> subCommand != null && !subCommand.hideInHelp() && subCommand.hasPermission(sender)).forEach(l -> {
|
||||
label.add(l.getLabel());
|
||||
label.addAll(Lists.newArrayList(l.getAliases()));
|
||||
});
|
||||
@ -172,18 +154,18 @@ public abstract class BaseMainCommand implements CommandExecutor, TabExecutor {
|
||||
onCommandHelp(sender, command, label, args);
|
||||
} else {
|
||||
for (BaseSubCommand subCommand : subCommands) {
|
||||
if (subCommand == null || !(args[0].equalsIgnoreCase(subCommand.getLabel()) || java.util.Arrays.stream(subCommand.getAliases()).anyMatch(args[0]::equalsIgnoreCase)) || !hasPermission(sender, subCommand)) {
|
||||
if (subCommand == null || !(args[0].equalsIgnoreCase(subCommand.getLabel()) || java.util.Arrays.stream(subCommand.getAliases()).anyMatch(args[0]::equalsIgnoreCase)) || !subCommand.hasPermission(sender)) {
|
||||
continue;
|
||||
}
|
||||
if (!isConfirmType(sender, subCommand.getType())) {
|
||||
TLocale.sendTo(sender, "COMMANDS.INTERNAL.TYPE-ERROR", args[0], TLocale.asString("COMMANDS.INTERNAL.TYPE-" + subCommand.getType()));
|
||||
TLocale.sendTo(sender, "COMMANDS.INTERNAL.TYPE-ERROR", args[0], TLocale.asString("COMMANDS.INTERNAL.TYPE-" + subCommand.getType()), registerCommand.getPlugin().getName());
|
||||
return true;
|
||||
}
|
||||
String[] subCommandArgs = removeFirst(args);
|
||||
if (subCommand.isParameterConform(subCommandArgs)) {
|
||||
subCommand.onCommand(sender, command, label, subCommand.ignoredLabel() ? subCommandArgs : args);
|
||||
} else {
|
||||
TLocale.sendTo(sender, "COMMANDS.INTERNAL.ERROR-USAGE", args[0], subCommand.getCommandString(label));
|
||||
display.displayErrorUsage(sender, this, args[0], subCommand.getCommandString(sender, label));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -191,9 +173,9 @@ public abstract class BaseMainCommand implements CommandExecutor, TabExecutor {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
List<BaseSubCommand> commandCompute = subCommands.stream().filter(x -> x != null && hasPermission(sender, x)).sorted((b, a) -> Double.compare(Strings.similarDegree(args[0], a.getLabel()), Strings.similarDegree(args[0], b.getLabel()))).collect(Collectors.toList());
|
||||
List<BaseSubCommand> commandCompute = subCommands.stream().filter(x -> x != null && x.hasPermission(sender)).sorted((b, a) -> Double.compare(Strings.similarDegree(args[0], a.getLabel()), Strings.similarDegree(args[0], b.getLabel()))).collect(Collectors.toList());
|
||||
if (commandCompute.size() > 0) {
|
||||
TLocale.sendTo(sender, "COMMANDS.INTERNAL.ERROR-COMMAND", args[0], commandCompute.get(0).getCommandString(label).trim());
|
||||
display.displayErrorCommand(sender, BaseMainCommand.this, args[0], commandCompute.get(0).getCommandString(sender, label));
|
||||
}
|
||||
}
|
||||
}.runTaskAsynchronously(TabooLib.getPlugin());
|
||||
@ -203,24 +185,48 @@ public abstract class BaseMainCommand implements CommandExecutor, TabExecutor {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "registerCommand=" + "BaseMainCommand{" + registerCommand + ", linkClasses=" + linkClasses + ", subCommands=" + subCommands + '}';
|
||||
return "BaseMainCommand{" +
|
||||
"display=" + display +
|
||||
", registerCommand=" + registerCommand +
|
||||
", linkClasses=" + linkClasses +
|
||||
", subCommands=" + subCommands +
|
||||
'}';
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (!(o instanceof BaseMainCommand)) {
|
||||
return false;
|
||||
}
|
||||
BaseMainCommand that = (BaseMainCommand) o;
|
||||
return Objects.equals(getLinkClasses(), that.getLinkClasses()) && Objects.equals(getRegisterCommand(), that.getRegisterCommand()) && Objects.equals(getSubCommands(), that.getSubCommands());
|
||||
// *********************************
|
||||
//
|
||||
// Getter and Setter
|
||||
//
|
||||
// *********************************
|
||||
|
||||
public String getCommandTitle() {
|
||||
return "§e§l----- §6§l" + registerCommand.getPlugin().getName() + " Commands §e§l-----";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getRegisterCommand(), getLinkClasses(), getSubCommands());
|
||||
public void setRegisterCommand(PluginCommand registerCommand) {
|
||||
Preconditions.checkNotNull(registerCommand);
|
||||
this.registerCommand = registerCommand;
|
||||
}
|
||||
|
||||
public PluginCommand getRegisterCommand() {
|
||||
return registerCommand;
|
||||
}
|
||||
|
||||
public List<Class<?>> getLinkClasses() {
|
||||
return linkClasses;
|
||||
}
|
||||
|
||||
public List<BaseSubCommand> getSubCommands() {
|
||||
return subCommands;
|
||||
}
|
||||
|
||||
public DisplayBase getDisplay() {
|
||||
return display;
|
||||
}
|
||||
|
||||
public void setDisplay(DisplayBase display) {
|
||||
Preconditions.checkNotNull(display);
|
||||
this.display = display;
|
||||
}
|
||||
|
||||
// *********************************
|
||||
@ -229,10 +235,6 @@ public abstract class BaseMainCommand implements CommandExecutor, TabExecutor {
|
||||
//
|
||||
// *********************************
|
||||
|
||||
private String getEmptyLine() {
|
||||
return Version.isAfter(Version.v1_8) ? "" : "~";
|
||||
}
|
||||
|
||||
private boolean isConfirmType(CommandSender sender, CommandType commandType) {
|
||||
return commandType == CommandType.ALL
|
||||
|| (sender instanceof Player && commandType == CommandType.PLAYER)
|
||||
@ -254,14 +256,6 @@ public abstract class BaseMainCommand implements CommandExecutor, TabExecutor {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hideInHelp(BaseSubCommand baseSubCommand) {
|
||||
return baseSubCommand != null && baseSubCommand.hideInHelp();
|
||||
}
|
||||
|
||||
private boolean hasPermission(CommandSender sender, BaseSubCommand baseSubCommand) {
|
||||
return baseSubCommand == null || Strings.isEmpty(baseSubCommand.getPermission()) || sender.hasPermission(baseSubCommand.getPermission());
|
||||
}
|
||||
|
||||
private String[] removeFirst(String[] args) {
|
||||
if (args.length <= 1) {
|
||||
return new String[0];
|
||||
|
@ -1,12 +1,10 @@
|
||||
package io.izzel.taboolib.module.command.base;
|
||||
|
||||
import io.izzel.taboolib.module.locale.TLocale;
|
||||
import io.izzel.taboolib.util.Strings;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
/**
|
||||
@ -18,9 +16,14 @@ public abstract class BaseSubCommand {
|
||||
private String label;
|
||||
private boolean player;
|
||||
private SubCommand annotation;
|
||||
private BaseMainCommand mainCommand;
|
||||
|
||||
abstract public void onCommand(CommandSender sender, Command command, String label, String[] args);
|
||||
|
||||
public BaseMainCommand getMainCommand() {
|
||||
return mainCommand;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
@ -61,8 +64,12 @@ public abstract class BaseSubCommand {
|
||||
return IntStream.range(0, getArguments().length).noneMatch(i -> getArguments()[i].isRequired() && (args == null || args.length <= i));
|
||||
}
|
||||
|
||||
public String getCommandString(String label) {
|
||||
return TLocale.asString(Strings.isEmpty(getDescription()) ? "COMMANDS.INTERNAL.COMMAND-HELP-EMPTY" : "COMMANDS.INTERNAL.COMMAND-HELP", label, getLabel(), Arrays.stream(getArguments()).map(parameter -> parameter.toString() + " ").collect(Collectors.joining()), getDescription());
|
||||
public String getCommandString(CommandSender sender, String label) {
|
||||
return mainCommand.getDisplay().displayHelp(sender, this, label);
|
||||
}
|
||||
|
||||
public boolean hasPermission(CommandSender sender) {
|
||||
return Strings.isBlank(getPermission()) || sender.hasPermission(getPermission());
|
||||
}
|
||||
|
||||
protected BaseSubCommand label(String label) {
|
||||
@ -79,4 +86,9 @@ public abstract class BaseSubCommand {
|
||||
this.annotation = annotation;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected BaseSubCommand mainCommand(BaseMainCommand mainCommand) {
|
||||
this.mainCommand = mainCommand;
|
||||
return this;
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package io.izzel.taboolib.module.command.base.display;
|
||||
|
||||
import io.izzel.taboolib.module.command.base.BaseMainCommand;
|
||||
import io.izzel.taboolib.module.command.base.BaseSubCommand;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2020-04-04 16:14
|
||||
*/
|
||||
public abstract class DisplayBase {
|
||||
|
||||
abstract public void displayHead(CommandSender sender, BaseMainCommand baseMainCommand, String label);
|
||||
|
||||
abstract public void displayBottom(CommandSender sender, BaseMainCommand baseMainCommand, String label);
|
||||
|
||||
abstract public void displayParameters(CommandSender sender, BaseSubCommand baseSubCommand, String label);
|
||||
|
||||
abstract public void displayErrorUsage(CommandSender sender, BaseMainCommand baseMainCommand, String label, String help);
|
||||
|
||||
abstract public void displayErrorCommand(CommandSender sender, BaseMainCommand baseMainCommand, String label, String help);
|
||||
|
||||
abstract public String displayHelp(CommandSender sender, BaseSubCommand baseSubCommand, String label);
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package io.izzel.taboolib.module.command.base.display;
|
||||
|
||||
import io.izzel.taboolib.module.command.base.Argument;
|
||||
import io.izzel.taboolib.module.command.base.BaseMainCommand;
|
||||
import io.izzel.taboolib.module.command.base.BaseSubCommand;
|
||||
import io.izzel.taboolib.module.locale.TLocale;
|
||||
import io.izzel.taboolib.util.Strings;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2020-04-04 16:17
|
||||
*/
|
||||
public class DisplayClassic extends DisplayBase {
|
||||
|
||||
@Override
|
||||
public void displayHead(CommandSender sender, BaseMainCommand main, String label) {
|
||||
sender.sendMessage(" ");
|
||||
sender.sendMessage(main.getCommandTitle());
|
||||
sender.sendMessage(" ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayBottom(CommandSender sender, BaseMainCommand main, String label) {
|
||||
sender.sendMessage(" ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayParameters(CommandSender sender, BaseSubCommand sub, String label) {
|
||||
if (sub == null) {
|
||||
sender.sendMessage(" ");
|
||||
} else if (!sub.hideInHelp() && sub.hasPermission(sender)) {
|
||||
sender.sendMessage(" " + displayHelp(sender, sub, label));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayErrorUsage(CommandSender sender, BaseMainCommand main, String label, String help) {
|
||||
TLocale.sendTo(sender, "COMMANDS.DISPLAY.CLASSIC.ERROR-USAGE", label, help, main.getRegisterCommand().getPlugin().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayErrorCommand(CommandSender sender, BaseMainCommand main, String label, String help) {
|
||||
TLocale.sendTo(sender, "COMMANDS.DISPLAY.CLASSIC.ERROR-COMMAND", label, help, main.getRegisterCommand().getPlugin().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String displayHelp(CommandSender sender, BaseSubCommand sub, String label) {
|
||||
if (Strings.nonBlack(sub.getDescription())) {
|
||||
return TLocale.asString("COMMANDS.DISPLAY.CLASSIC.HELP", label, sub.getLabel(), Arrays.stream(sub.getArguments()).map(a -> argument(sub, a)).collect(Collectors.joining(" ")), sub.getDescription());
|
||||
} else {
|
||||
return TLocale.asString("COMMANDS.DISPLAY.CLASSIC.HELP-EMPTY", label, sub.getLabel(), Arrays.stream(sub.getArguments()).map(a -> argument(sub, a)).collect(Collectors.joining(" ")));
|
||||
}
|
||||
}
|
||||
|
||||
public String argument(BaseSubCommand subCommand, Argument argument) {
|
||||
return argument.isRequired() ? TLocale.asString("COMMANDS.DISPLAY.CLASSIC.ARGUMENT-REQUIRED", argument.getName()) : TLocale.asString("COMMANDS.DISPLAY.CLASSIC.ARGUMENT-OPTIONAL", argument.getName());
|
||||
}
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package io.izzel.taboolib.module.command.base.display;
|
||||
|
||||
import io.izzel.taboolib.module.command.base.Argument;
|
||||
import io.izzel.taboolib.module.command.base.BaseMainCommand;
|
||||
import io.izzel.taboolib.module.command.base.BaseSubCommand;
|
||||
import io.izzel.taboolib.module.locale.TLocale;
|
||||
import io.izzel.taboolib.util.Strings;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2020-04-04 16:18
|
||||
*/
|
||||
public class DisplayFlat extends DisplayBase {
|
||||
|
||||
@Override
|
||||
public void displayHead(CommandSender sender, BaseMainCommand main, String label) {
|
||||
Plugin plugin = main.getRegisterCommand().getPlugin();
|
||||
TLocale.sendTo(sender, "COMMANDS.DISPLAY.FLAT.HEAD", plugin.getName(), plugin.getDescription().getVersion(), main.getRegisterCommand().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayBottom(CommandSender sender, BaseMainCommand main, String label) {
|
||||
Plugin plugin = main.getRegisterCommand().getPlugin();
|
||||
TLocale.sendTo(sender, "COMMANDS.DISPLAY.FLAT.BOTTOM", plugin.getName(), plugin.getDescription().getVersion(), main.getRegisterCommand().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayParameters(CommandSender sender, BaseSubCommand sub, String label) {
|
||||
if (Strings.nonBlack(sub.getDescription())) {
|
||||
TLocale.sendTo(sender, "COMMANDS.DISPLAY.FLAT.PARAMETERS", sub.getLabel(), sub.getDescription(), displayHelp(sender, sub, label), "/" + label + " " + sub.getLabel() + " ");
|
||||
} else {
|
||||
TLocale.sendTo(sender, "COMMANDS.DISPLAY.FLAT.PARAMETERS-EMPTY", sub.getLabel(), sub.getDescription(), displayHelp(sender, sub, label), "/" + label + " " + sub.getLabel() + " ");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayErrorUsage(CommandSender sender, BaseMainCommand main, String label, String help) {
|
||||
TLocale.sendTo(sender, "COMMANDS.DISPLAY.FLAT.ERROR-USAGE", label, help, main.getRegisterCommand().getPlugin().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayErrorCommand(CommandSender sender, BaseMainCommand main, String label, String help) {
|
||||
TLocale.sendTo(sender, "COMMANDS.DISPLAY.FLAT.ERROR-COMMAND", label, help, main.getRegisterCommand().getPlugin().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String displayHelp(CommandSender sender, BaseSubCommand sub, String label) {
|
||||
if (Strings.nonBlack(sub.getDescription())) {
|
||||
return TLocale.asString("COMMANDS.DISPLAY.FLAT.HELP", label, sub.getLabel(), Arrays.stream(sub.getArguments()).map(a -> argument(sub, a)).collect(Collectors.joining(" ")), sub.getDescription());
|
||||
} else {
|
||||
return TLocale.asString("COMMANDS.DISPLAY.FLAT.HELP-EMPTY", label, sub.getLabel(), Arrays.stream(sub.getArguments()).map(a -> argument(sub, a)).collect(Collectors.joining(" ")));
|
||||
}
|
||||
}
|
||||
|
||||
public String argument(BaseSubCommand subCommand, Argument argument) {
|
||||
return argument.isRequired() ? TLocale.asString("COMMANDS.DISPLAY.FLAT.ARGUMENT-REQUIRED", argument.getName()) : TLocale.asString("COMMANDS.DISPLAY.FLAT.ARGUMENT-OPTIONAL", argument.getName());
|
||||
}
|
||||
}
|
43
src/main/scala/io/izzel/taboolib/module/i18n/I18n.java
Normal file
43
src/main/scala/io/izzel/taboolib/module/i18n/I18n.java
Normal file
@ -0,0 +1,43 @@
|
||||
package io.izzel.taboolib.module.i18n;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import io.izzel.taboolib.Version;
|
||||
import io.izzel.taboolib.module.i18n.version.I18n20w14a;
|
||||
import io.izzel.taboolib.module.i18n.version.I18nOrigin;
|
||||
import io.izzel.taboolib.module.inject.TFunction;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2020-04-04 19:33
|
||||
*/
|
||||
public class I18n {
|
||||
|
||||
public static final Map<Version, I18nBase> VERSION = Maps.newHashMap();
|
||||
|
||||
private static I18nBase base;
|
||||
|
||||
static {
|
||||
VERSION.put(Version.v1_7, I18nOrigin.INSTANCE);
|
||||
VERSION.put(Version.v1_8, I18nOrigin.INSTANCE);
|
||||
VERSION.put(Version.v1_9, I18nOrigin.INSTANCE);
|
||||
VERSION.put(Version.v1_10, I18nOrigin.INSTANCE);
|
||||
VERSION.put(Version.v1_11, I18nOrigin.INSTANCE);
|
||||
VERSION.put(Version.v1_12, I18nOrigin.INSTANCE);
|
||||
VERSION.put(Version.v1_13, I18nOrigin.INSTANCE);
|
||||
VERSION.put(Version.v1_14, I18nOrigin.INSTANCE);
|
||||
VERSION.put(Version.v1_15, I18n20w14a.INSTANCE);
|
||||
VERSION.put(Version.v1_16, I18n20w14a.INSTANCE);
|
||||
}
|
||||
|
||||
@TFunction.Init
|
||||
static void init() {
|
||||
base = VERSION.getOrDefault(Version.getCurrentVersion(), I18nOrigin.INSTANCE);
|
||||
base.init();
|
||||
}
|
||||
|
||||
public static I18nBase get() {
|
||||
return base;
|
||||
}
|
||||
}
|
19
src/main/scala/io/izzel/taboolib/module/i18n/I18nBase.java
Normal file
19
src/main/scala/io/izzel/taboolib/module/i18n/I18nBase.java
Normal file
@ -0,0 +1,19 @@
|
||||
package io.izzel.taboolib.module.i18n;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2020-04-04 19:42
|
||||
*/
|
||||
public abstract class I18nBase {
|
||||
|
||||
abstract public void init();
|
||||
|
||||
abstract public String getName(Player player, Entity entity);
|
||||
|
||||
abstract public String getName(Player player, ItemStack itemStack);
|
||||
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
package io.izzel.taboolib.module.i18n.version;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import io.izzel.taboolib.TabooLib;
|
||||
import io.izzel.taboolib.module.i18n.I18nBase;
|
||||
import io.izzel.taboolib.module.nms.NMS;
|
||||
import io.izzel.taboolib.util.Files;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2020-04-04 19:51
|
||||
*/
|
||||
public class I18n20w14a extends I18nBase {
|
||||
|
||||
public static final I18n20w14a INSTANCE = new I18n20w14a();
|
||||
|
||||
// 20w14a
|
||||
public static final String[][] LOCALE = {
|
||||
{
|
||||
"zh_cn", "5797b76621b4b335527cda6f903a1bb3d9b7ffa3"
|
||||
},
|
||||
{
|
||||
"zh_tw", "71be70e62f4cf7e98c6bcb32d57d7ef66614853b"
|
||||
},
|
||||
{
|
||||
"en_gb", "0f679e66f50f1dea4749cac3882cf5c6857bbfc3",
|
||||
}
|
||||
};
|
||||
|
||||
private File folder = new File(TabooLib.getPlugin().getDataFolder(), "simpleI18n/v2/20w14a");
|
||||
private Map<String, JsonObject> cache = Maps.newHashMap();
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
if (folder.exists() && folder.isDirectory()) {
|
||||
load();
|
||||
} else {
|
||||
long time = System.currentTimeMillis();
|
||||
System.out.println("[TabooLib] Loading Assets...");
|
||||
try {
|
||||
for (String[] locale : LOCALE) {
|
||||
Files.toFile(Files.readFromURL("https://resources.download.minecraft.net/" + locale[1].substring(0, 2) + "/" + locale[1], StandardCharsets.UTF_8, "{}"), Files.file(folder, locale[0]));
|
||||
}
|
||||
load();
|
||||
System.out.println("[TabooLib] Loading Successfully. (" + (System.currentTimeMillis() - time + "ms)"));
|
||||
} catch (Throwable ignored) {
|
||||
System.out.println("[TabooLib] Loading Failed. (" + (System.currentTimeMillis() - time + "ms)"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName(Player player, Entity entity) {
|
||||
JsonObject locale = cache.get(player == null ? "zh_cn" : player.getLocale());
|
||||
if (locale == null) {
|
||||
locale = cache.get("en_gb");
|
||||
}
|
||||
if (locale == null) {
|
||||
return "[ERROR LOCALE]";
|
||||
}
|
||||
JsonElement element = locale.get(NMS.handle().getName(entity));
|
||||
return element == null ? entity.getName() : element.getAsString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName(Player player, ItemStack itemStack) {
|
||||
JsonObject locale = cache.get(player == null ? "zh_cn" : player.getLocale());
|
||||
if (locale == null) {
|
||||
locale = cache.get("en_gb");
|
||||
}
|
||||
if (locale == null) {
|
||||
return "[ERROR LOCALE]";
|
||||
}
|
||||
JsonElement element = locale.get(NMS.handle().getName(itemStack));
|
||||
return element == null ? itemStack.getType().name().toLowerCase().replace("_", "") : element.getAsString();
|
||||
}
|
||||
|
||||
public void load() {
|
||||
Arrays.stream(folder.listFiles()).forEach(listFile -> cache.put(listFile.getName(), new JsonParser().parse(Files.readFromFile(listFile)).getAsJsonObject()));
|
||||
}
|
||||
}
|
@ -0,0 +1,89 @@
|
||||
package io.izzel.taboolib.module.i18n.version;
|
||||
|
||||
import io.izzel.taboolib.TabooLib;
|
||||
import io.izzel.taboolib.Version;
|
||||
import io.izzel.taboolib.module.i18n.I18nBase;
|
||||
import io.izzel.taboolib.module.locale.TLocaleLoader;
|
||||
import io.izzel.taboolib.module.nms.NMS;
|
||||
import io.izzel.taboolib.module.nms.nbt.NBTCompound;
|
||||
import io.izzel.taboolib.util.Files;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BookMeta;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SpawnEggMeta;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2020-04-04 19:44
|
||||
*/
|
||||
public class I18nOrigin extends I18nBase {
|
||||
|
||||
public static final I18nOrigin INSTANCE = new I18nOrigin();
|
||||
|
||||
private static FileConfiguration lang;
|
||||
private static boolean released;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
File localeFile = getLocaleFile(TabooLib.getPlugin());
|
||||
if (localeFile == null) {
|
||||
lang = new YamlConfiguration();
|
||||
} else {
|
||||
lang = Files.load(localeFile);
|
||||
}
|
||||
if (lang.getInt("version") < 3 && !released) {
|
||||
released = true;
|
||||
Files.deepDelete(new File(TabooLib.getPlugin().getDataFolder(), "simpleI18n"));
|
||||
init();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName(Player player, Entity entity) {
|
||||
return entity == null ? "-" : lang.getString(NMS.handle().getName(entity).replace(".", "_"), entity.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName(Player player, ItemStack itemStack) {
|
||||
if (itemStack == null) {
|
||||
return "-";
|
||||
}
|
||||
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||
if (itemMeta instanceof BookMeta && ((BookMeta) itemMeta).getTitle() != null) {
|
||||
return ((BookMeta) itemMeta).getTitle();
|
||||
}
|
||||
if (!Version.isAfter(Version.v1_11)) {
|
||||
if (itemStack.getType().name().equals("MONSTER_EGG")) {
|
||||
NBTCompound nbtCompound = NMS.handle().loadNBT(itemStack);
|
||||
if (nbtCompound.containsKey("EntityTag")) {
|
||||
return lang.getString("item_monsterPlacer_name") + " " + lang.getString("entity_" + nbtCompound.get("EntityTag").asCompound().get("id").asString() + "_name");
|
||||
}
|
||||
return lang.getString("item_monsterPlacer_name");
|
||||
}
|
||||
} else if (!Version.isAfter(Version.v1_13)) {
|
||||
if (itemMeta instanceof SpawnEggMeta) {
|
||||
String spawnEggType = lang.getString("entity_" + ((SpawnEggMeta) itemMeta).getSpawnedType().getEntityClass().getSimpleName().replace(".", "_") + "_name");
|
||||
if (spawnEggType != null) {
|
||||
return lang.getString(NMS.handle().getName(itemStack).replace(".", "_"), itemStack.getType().name().toLowerCase().replace("_", "")) + " " + spawnEggType;
|
||||
}
|
||||
}
|
||||
}
|
||||
return lang.getString(NMS.handle().getName(itemStack).replace(".", "_"), itemStack.getType().name().toLowerCase().replace("_", ""));
|
||||
}
|
||||
|
||||
private File getLocaleFile(Plugin plugin) {
|
||||
TLocaleLoader.getLocalePriority(plugin).forEach(localeName -> Files.releaseResource(plugin, "simpleI18n/" + getVersion() + "/" + localeName + ".yml", false));
|
||||
return TLocaleLoader.getLocalePriority(plugin).stream().map(localeName -> new File("plugins/TabooLib/simpleI18n/" + getVersion() + "/" + localeName + ".yml")).filter(File::exists).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
private String getVersion() {
|
||||
return Version.isAfter(Version.v1_13) ? "high" : "low";
|
||||
}
|
||||
}
|
@ -1,22 +1,11 @@
|
||||
package io.izzel.taboolib.module.lite;
|
||||
|
||||
import io.izzel.taboolib.TabooLib;
|
||||
import io.izzel.taboolib.Version;
|
||||
import io.izzel.taboolib.module.locale.TLocaleLoader;
|
||||
import io.izzel.taboolib.module.inject.TFunction;
|
||||
import io.izzel.taboolib.module.nms.NMS;
|
||||
import io.izzel.taboolib.module.nms.nbt.NBTCompound;
|
||||
import io.izzel.taboolib.util.Files;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import io.izzel.taboolib.module.i18n.I18n;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BookMeta;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SpawnEggMeta;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
@ -25,24 +14,6 @@ import java.util.Optional;
|
||||
*/
|
||||
public class SimpleI18n {
|
||||
|
||||
private static FileConfiguration lang;
|
||||
private static boolean released;
|
||||
|
||||
@TFunction.Init
|
||||
static void init() {
|
||||
File localeFile = getLocaleFile(TabooLib.getPlugin());
|
||||
if (localeFile == null) {
|
||||
lang = new YamlConfiguration();
|
||||
} else {
|
||||
lang = Files.load(localeFile);
|
||||
}
|
||||
if (lang.getInt("version") < 3 && !released) {
|
||||
released = true;
|
||||
Files.deepDelete(new File(TabooLib.getPlugin().getDataFolder(), "simpleI18n"));
|
||||
init();
|
||||
}
|
||||
}
|
||||
|
||||
public static String getCustomName(Entity entity) {
|
||||
return entity != null ? Optional.ofNullable(entity.getCustomName()).orElse(getName(entity)) : getName(entity);
|
||||
}
|
||||
@ -56,42 +27,18 @@ public class SimpleI18n {
|
||||
}
|
||||
|
||||
public static String getName(Entity entity) {
|
||||
return entity == null ? "-" : lang.getString(NMS.handle().getName(entity).replace(".", "_"), entity.getName());
|
||||
return I18n.get().getName(null, entity);
|
||||
}
|
||||
|
||||
public static String getName(ItemStack item) {
|
||||
if (item == null) {
|
||||
return "-";
|
||||
}
|
||||
ItemMeta itemMeta = item.getItemMeta();
|
||||
if (itemMeta instanceof BookMeta && ((BookMeta) itemMeta).getTitle() != null) {
|
||||
return ((BookMeta) itemMeta).getTitle();
|
||||
}
|
||||
if (!Version.isAfter(Version.v1_11)) {
|
||||
if (item.getType().name().equals("MONSTER_EGG")) {
|
||||
NBTCompound nbtCompound = NMS.handle().loadNBT(item);
|
||||
if (nbtCompound.containsKey("EntityTag")) {
|
||||
return lang.getString("item_monsterPlacer_name") + " " + lang.getString("entity_" + nbtCompound.get("EntityTag").asCompound().get("id").asString() + "_name");
|
||||
}
|
||||
return lang.getString("item_monsterPlacer_name");
|
||||
}
|
||||
} else if (!Version.isAfter(Version.v1_13)) {
|
||||
if (itemMeta instanceof SpawnEggMeta) {
|
||||
String spawnEggType = lang.getString("entity_" + ((SpawnEggMeta) itemMeta).getSpawnedType().getEntityClass().getSimpleName().replace(".", "_") + "_name");
|
||||
if (spawnEggType != null) {
|
||||
return lang.getString(NMS.handle().getName(item).replace(".", "_"), item.getType().name().toLowerCase().replace("_", "")) + " " + spawnEggType;
|
||||
}
|
||||
}
|
||||
}
|
||||
return lang.getString(NMS.handle().getName(item).replace(".", "_"), item.getType().name().toLowerCase().replace("_", ""));
|
||||
return I18n.get().getName(null, item);
|
||||
}
|
||||
|
||||
private static File getLocaleFile(Plugin plugin) {
|
||||
TLocaleLoader.getLocalePriority(plugin).forEach(localeName -> Files.releaseResource(plugin, "simpleI18n/" + getVersion() + "/" + localeName + ".yml", false));
|
||||
return TLocaleLoader.getLocalePriority(plugin).stream().map(localeName -> new File("plugins/TabooLib/simpleI18n/" + getVersion() + "/" + localeName + ".yml")).filter(File::exists).findFirst().orElse(null);
|
||||
public static String getName(Player player, Entity entity) {
|
||||
return I18n.get().getName(player, entity);
|
||||
}
|
||||
|
||||
private static String getVersion() {
|
||||
return Version.isAfter(Version.v1_13) ? "high" : "low";
|
||||
public static String getName(Player player, ItemStack item) {
|
||||
return I18n.get().getName(player, item);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package io.izzel.taboolib.module.locale;
|
||||
|
||||
import io.izzel.taboolib.TabooLib;
|
||||
import io.izzel.taboolib.TabooLibAPI;
|
||||
import io.izzel.taboolib.common.plugin.InternalPlugin;
|
||||
import io.izzel.taboolib.module.config.TConfigWatcher;
|
||||
import io.izzel.taboolib.module.locale.logger.TLogger;
|
||||
import io.izzel.taboolib.module.locale.type.*;
|
||||
@ -154,7 +155,7 @@ public class TLocaleLoader {
|
||||
}
|
||||
|
||||
private static YamlConfiguration getLocaleAsPlugin(Plugin plugin, File localeFile) {
|
||||
try (InputStream canonicalResource = Files.getCanonicalResource(plugin, "lang/" + localeFile.getName())) {
|
||||
try (InputStream canonicalResource = Files.getCanonicalResource(plugin, (plugin instanceof InternalPlugin ? "__resources__/" : "") + "lang/" + localeFile.getName())) {
|
||||
if (canonicalResource != null) {
|
||||
return YamlConfiguration.loadConfiguration(new InputStreamReader(canonicalResource, StandardCharsets.UTF_8));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user