版本更新至 3.56
调整:命令 /lang2 提示调整 调整:命令 /tlib 提示改为 JSON 形式 调整:命令 /tlm 需要独立的权限才能列出帮助,子命令的执行不需要列出帮助的权限 新增:命令 /taboo cycle list 列出所有已注册的时间周期 新增:命令 /taboo cycle info 查询已注册的时间周期 新增:命令 /taboo cycle reset 初始化已注册的时间周期 新增:命令 /taboo cycle update 更新已注册的时间周期 新增:Language2 工具新增 send(CommandSender) 方法 新增:PlaceholderAPI 变量 %taboolib_tlm_kit_礼包名% 用于获取礼包状态 新增:TLM 框架新增 Kits 模块,用于管理礼包的发放 新增:命令 /tlm kit reward 领取礼包 新增:命令 /tlm kit reset 刷新礼包 新增:TLM 框架新增语言文件 "language2/zh_CN.yml"
This commit is contained in:
		@@ -15,6 +15,7 @@ import me.skymc.taboolib.TabooLib;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.AttributesCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.EnchantCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.FlagCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.HelpCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.ImportCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.InfoCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.ItemCommand;
 | 
			
		||||
@@ -23,6 +24,7 @@ import me.skymc.taboolib.commands.sub.SaveCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.SlotCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.VariableGetCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.VariableSetCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.cycle.CycleCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.itemlist.ItemListCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.shell.ShellCommand;
 | 
			
		||||
import me.skymc.taboolib.inventory.ItemUtils;
 | 
			
		||||
@@ -32,30 +34,8 @@ public class MainCommands 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>lTaooLib Commands <20><>b<EFBFBD><62>l-----");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib save [<5B><><EFBFBD><EFBFBD>] <20><>f- <20><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib item/i [<5B><>Ʒ] <<3C><><EFBFBD><EFBFBD>> <<3C><><EFBFBD><EFBFBD>> <20><>f- <20><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib iteminfo <20><>f- <20><>8<EFBFBD>鿴<EFBFBD><E9BFB4>Ʒ<EFBFBD><C6B7>Ϣ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib itemlist <20><>f- <20><>8<EFBFBD>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib itemreload/ireload <20><>f- <20><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib attributes <20><>f- <20><>8<EFBFBD>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib enchants <20><>f- <20><>8<EFBFBD>鿴<EFBFBD><E9BFB4><EFBFBD>и<EFBFBD>ħ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib potions <20><>f- <20><>8<EFBFBD>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD>ҩˮ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib flags <20><>f- <20><>8<EFBFBD>鿴<EFBFBD><E9BFB4><EFBFBD>б<EFBFBD>ǩ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib slots <20><>f- <20><>8<EFBFBD>鿴<EFBFBD><E9BFB4><EFBFBD>в<EFBFBD>λ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib getvariable [-s|a] [<5B><>] <20><>f- <20><>8<EFBFBD>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD>");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib setvariable [-s|a] [<5B><>] [ֵ] <20><>f- <20><>8<EFBFBD><38><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib shell/s load [<5B>ű<EFBFBD>] <20><>f- <20><>8<EFBFBD><38><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ű<EFBFBD>");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /taboolib shell/s unload [<5B>ű<EFBFBD>] <20><>f- <20><>8ж<38><D0B6>ij<EFBFBD><C4B3><EFBFBD>ű<EFBFBD>");
 | 
			
		||||
			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");
 | 
			
		||||
		if (args.length == 0 || args[0].equalsIgnoreCase("help")) {
 | 
			
		||||
			new HelpCommand(sender, args);
 | 
			
		||||
		}
 | 
			
		||||
		else if (args[0].equalsIgnoreCase("itemreload") || args[0].equalsIgnoreCase("ireload")) {
 | 
			
		||||
			ItemUtils.reloadItemCache();
 | 
			
		||||
@@ -101,6 +81,9 @@ public class MainCommands implements CommandExecutor{
 | 
			
		||||
		else if (args[0].equalsIgnoreCase("shell") || args[0].equalsIgnoreCase("s")) {
 | 
			
		||||
			new ShellCommand(sender, args);
 | 
			
		||||
		}
 | 
			
		||||
		else if (args[0].equalsIgnoreCase("cycle") || args[0].equalsIgnoreCase("c")) {
 | 
			
		||||
			new CycleCommand(sender, args);
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			MsgUtils.send(sender, "&4ָ<34><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@ public class Language2Command implements CommandExecutor {
 | 
			
		||||
	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>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lLanguage2 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 [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>] [<5B><><EFBFBD><EFBFBD>] <<3C><><EFBFBD><EFBFBD>> <20><>f- <20><>8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f /language2 send <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ҡ<EFBFBD>8] <20><>8[<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>8] <20><>8<<3C><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8> <20><>6- <20><>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f /language2 reload <20><>6- <20><>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		}
 | 
			
		||||
		else if (args[0].equalsIgnoreCase("reload")) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										80
									
								
								src/main/src/me/skymc/taboolib/commands/sub/HelpCommand.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								src/main/src/me/skymc/taboolib/commands/sub/HelpCommand.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
package me.skymc.taboolib.commands.sub;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.LinkedHashMap;
 | 
			
		||||
import java.util.Map.Entry;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.bukkit.command.ConsoleCommandSender;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.inventory.ItemFlag;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.TabooLib;
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.taboolib.jsonformatter.JSONFormatter;
 | 
			
		||||
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
 | 
			
		||||
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
 | 
			
		||||
 | 
			
		||||
public class HelpCommand extends SubCommand {
 | 
			
		||||
	
 | 
			
		||||
	public HelpCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		
 | 
			
		||||
		HashMap<String, String> helps = new LinkedHashMap<>();
 | 
			
		||||
		helps.put("/taboolib save <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ơ<EFBFBD>8]", "<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ");
 | 
			
		||||
		helps.put("/taboolib item <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ơ<EFBFBD>8] <20><>8<<3C><>7<EFBFBD><37><EFBFBD>ҡ<EFBFBD>8> <20><>8<<3C><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8>", "<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ");
 | 
			
		||||
		helps.put("/taboolib iteminfo", "<EFBFBD><EFBFBD>e<EFBFBD>鿴<EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD>Ϣ");
 | 
			
		||||
		helps.put("/taboolib itemlist", "<EFBFBD><EFBFBD>e<EFBFBD>鿴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ");
 | 
			
		||||
		helps.put("/taboolib itemreload", "<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		helps.put("<EFBFBD><EFBFBD>a", null);
 | 
			
		||||
		helps.put("/taboolib attributes", "<EFBFBD><EFBFBD>e<EFBFBD>鿴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		helps.put("/taboolib enchants", "<EFBFBD><EFBFBD>e<EFBFBD>鿴<EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>ħ");
 | 
			
		||||
		helps.put("/taboolib potions", "<EFBFBD><EFBFBD>e<EFBFBD>鿴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҩˮ");
 | 
			
		||||
		helps.put("/taboolib flags", "<EFBFBD><EFBFBD>e<EFBFBD>鿴<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ǩ");
 | 
			
		||||
		helps.put("/taboolib slots", "<EFBFBD><EFBFBD>e<EFBFBD>鿴<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD>λ");
 | 
			
		||||
		helps.put("<EFBFBD><EFBFBD>b", null);
 | 
			
		||||
		helps.put("/taboolib getvariable <20><>8[<5B><>7-s|a<><61>8] <20><>8[<5B><>7<EFBFBD><37><EFBFBD><EFBFBD>8]", "<EFBFBD><EFBFBD>e<EFBFBD>鿴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		helps.put("/taboolib setvariable <20><>8[<5B><>7-s|a<><61>8] <20><>8[<5B><>7<EFBFBD><37><EFBFBD><EFBFBD>8] <20><>8[<5B><>7ֵ<37><D6B5>8]", "<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		helps.put("<EFBFBD><EFBFBD>c", null);
 | 
			
		||||
		helps.put("/taboolib cycle list", "<EFBFBD><EFBFBD>e<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		helps.put("/taboolib cycle info <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ơ<EFBFBD>8]", "<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ");
 | 
			
		||||
		helps.put("/taboolib cycle reset <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ơ<EFBFBD>8]", "<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		helps.put("/taboolib cycle update <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ơ<EFBFBD>8]", "<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		helps.put("<EFBFBD><EFBFBD>d", null);
 | 
			
		||||
		helps.put("/taboolib shell load <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ơ<EFBFBD>8]", "<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>");
 | 
			
		||||
		helps.put("/taboolib shell unload <20><>8[<5B><>7<EFBFBD><37><EFBFBD>ơ<EFBFBD>8]", "<EFBFBD><EFBFBD>eж<EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>");
 | 
			
		||||
		helps.put("<EFBFBD><EFBFBD>e", null);
 | 
			
		||||
		helps.put("/taboolib importdata", "<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>뱾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>8(<28>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>)");
 | 
			
		||||
		
 | 
			
		||||
		if (sender instanceof ConsoleCommandSender || TabooLib.getVerint() < 10800) {
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lTaooLib Commands <20><>b<EFBFBD><62>l-----");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			for (Entry<String, String> entry : helps.entrySet()) {
 | 
			
		||||
				if (entry.getValue() == null) {
 | 
			
		||||
					sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
				} else {
 | 
			
		||||
					sender.sendMessage("<EFBFBD><EFBFBD>f " + entry.getKey() + " <20><>6- " + entry.getValue());
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		}
 | 
			
		||||
		else if (sender instanceof Player) {
 | 
			
		||||
			JSONFormatter json = new JSONFormatter();
 | 
			
		||||
			json.append("<EFBFBD><EFBFBD>f"); json.newLine();
 | 
			
		||||
			json.append("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lTaooLib Commands <20><>b<EFBFBD><62>l-----"); json.newLine();
 | 
			
		||||
			json.append("<EFBFBD><EFBFBD>f"); json.newLine();
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			for (Entry<String, String> entry : helps.entrySet()) {
 | 
			
		||||
				if (entry.getValue() == null) {
 | 
			
		||||
					json.append("<EFBFBD><EFBFBD>f"); json.newLine();
 | 
			
		||||
				} else {
 | 
			
		||||
					json.appendHoverClick("<EFBFBD><EFBFBD>f " + entry.getKey() + " <20><>6- " + entry.getValue(), new ShowTextEvent("<EFBFBD><EFBFBD>f<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>"), new SuggestCommandEvent(entry.getKey().split("<EFBFBD><EFBFBD>")[0])); json.newLine();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			json.append("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			json.send((Player) sender);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,39 @@
 | 
			
		||||
package me.skymc.taboolib.commands.sub.cycle;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.taboolib.javashell.JavaShell;
 | 
			
		||||
import me.skymc.taboolib.message.MsgUtils;
 | 
			
		||||
 | 
			
		||||
public class CycleCommand extends SubCommand {
 | 
			
		||||
 | 
			
		||||
	public CycleCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		if (args.length > 1) {
 | 
			
		||||
			if (args[1].equalsIgnoreCase("list")) {
 | 
			
		||||
				new CycleListCommand(sender, args);
 | 
			
		||||
			}
 | 
			
		||||
			else if (args[1].equalsIgnoreCase("info")) {
 | 
			
		||||
				new CycleInfoCommand(sender, args);
 | 
			
		||||
			}
 | 
			
		||||
			else if (args[1].equalsIgnoreCase("reset")) {
 | 
			
		||||
				new CycleResetCommand(sender, args);
 | 
			
		||||
			}
 | 
			
		||||
			else if (args[1].equalsIgnoreCase("update")) {
 | 
			
		||||
				new CycleUpdateCommand(sender, args);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			MsgUtils.send(sender, "&4ָ<34><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean command() {
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,58 @@
 | 
			
		||||
package me.skymc.taboolib.commands.sub.cycle;
 | 
			
		||||
 | 
			
		||||
import java.util.concurrent.TimeUnit;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.bukkit.scheduler.BukkitRunnable;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.Main;
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.taboolib.database.GlobalDataManager;
 | 
			
		||||
import me.skymc.taboolib.message.MsgUtils;
 | 
			
		||||
import me.skymc.taboolib.other.DateUtils;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycle;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleEvent;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleInitializeEvent;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleManager;
 | 
			
		||||
 | 
			
		||||
public class CycleInfoCommand extends SubCommand {
 | 
			
		||||
 | 
			
		||||
	public CycleInfoCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		if (args.length < 3) {
 | 
			
		||||
			MsgUtils.send(sender, "&c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		TimeCycle cycle = TimeCycleManager.getTimeCycle(args[2]);
 | 
			
		||||
		if (cycle == null) {
 | 
			
		||||
			MsgUtils.send(sender, "&c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD> &4" + args[2] + " &c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lTimeCycle Info <20><>b<EFBFBD><62>l-----");
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		sender.sendMessage(" <20><>f- <20><>7ע<37><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>f" + asString(cycle.getCycle() / 1000L));
 | 
			
		||||
		sender.sendMessage(" <20><>f- <20><>7ע<37><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>f" + cycle.getPlugin().getName());
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		sender.sendMessage(" <20><>f- <20><>7<EFBFBD>ϴ<EFBFBD>ˢ<EFBFBD><CBA2>ʱ<EFBFBD><CAB1>: <20><>f" + DateUtils.CH_ALL.format(TimeCycleManager.getBeforeTimeline(cycle.getName())));
 | 
			
		||||
		sender.sendMessage(" <20><>f- <20><>7<EFBFBD>´<EFBFBD>ˢ<EFBFBD><CBA2>ʱ<EFBFBD><CAB1>: <20><>f" + DateUtils.CH_ALL.format(TimeCycleManager.getAfterTimeline(cycle.getName())));
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String asString(long seconds) {
 | 
			
		||||
		long day = TimeUnit.SECONDS.toDays(seconds);
 | 
			
		||||
	    long hours = TimeUnit.SECONDS.toHours(seconds) - day * 24;
 | 
			
		||||
	    long minute = TimeUnit.SECONDS.toMinutes(seconds) - TimeUnit.SECONDS.toHours(seconds) * 60L;
 | 
			
		||||
	    long second = TimeUnit.SECONDS.toSeconds(seconds) - TimeUnit.SECONDS.toMinutes(seconds) * 60L;
 | 
			
		||||
	    return "<EFBFBD><EFBFBD>f" + day + "<EFBFBD><EFBFBD>7 <20><>, <20><>f" + hours + "<EFBFBD><EFBFBD>7 Сʱ, <20><>f" + minute + "<EFBFBD><EFBFBD>7 <20><><EFBFBD><EFBFBD>, <20><>f" + second + "<EFBFBD><EFBFBD>7 <20><>";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean command() {
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,47 @@
 | 
			
		||||
package me.skymc.taboolib.commands.sub.cycle;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.util.concurrent.TimeUnit;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.taboolib.javashell.JavaShell;
 | 
			
		||||
import me.skymc.taboolib.jsonformatter.JSONFormatter;
 | 
			
		||||
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
 | 
			
		||||
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
 | 
			
		||||
import me.skymc.taboolib.message.MsgUtils;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycle;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleManager;
 | 
			
		||||
 | 
			
		||||
public class CycleListCommand extends SubCommand {
 | 
			
		||||
 | 
			
		||||
	public CycleListCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lTimeCycle List <20><>b<EFBFBD><62>l-----");
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		
 | 
			
		||||
		for (TimeCycle cycle : TimeCycleManager.getTimeCycles()) {
 | 
			
		||||
			if (isPlayer()) {
 | 
			
		||||
				JSONFormatter json = new JSONFormatter();
 | 
			
		||||
				json.append(" <20><>7- <20><>f" + cycle.getName());
 | 
			
		||||
				json.appendHoverClick(" <20><>8(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)", new ShowTextEvent("<EFBFBD><EFBFBD>f<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), new SuggestCommandEvent(cycle.getName()));
 | 
			
		||||
				json.send((Player) sender);
 | 
			
		||||
			}
 | 
			
		||||
			else {
 | 
			
		||||
				sender.sendMessage(" <20><>7- <20><>f" + cycle.getName());
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean command() {
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,51 @@
 | 
			
		||||
package me.skymc.taboolib.commands.sub.cycle;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.bukkit.scheduler.BukkitRunnable;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.Main;
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.taboolib.database.GlobalDataManager;
 | 
			
		||||
import me.skymc.taboolib.message.MsgUtils;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycle;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleEvent;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleInitializeEvent;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleManager;
 | 
			
		||||
 | 
			
		||||
public class CycleResetCommand extends SubCommand {
 | 
			
		||||
 | 
			
		||||
	public CycleResetCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		if (args.length < 3) {
 | 
			
		||||
			MsgUtils.send(sender, "&c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		TimeCycle cycle = TimeCycleManager.getTimeCycle(args[2]);
 | 
			
		||||
		if (cycle == null) {
 | 
			
		||||
			MsgUtils.send(sender, "&c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD> &4" + args[2] + " &c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		new BukkitRunnable() {
 | 
			
		||||
			
 | 
			
		||||
			@Override
 | 
			
		||||
			public void run() {
 | 
			
		||||
				long time = new TimeCycleInitializeEvent(cycle, System.currentTimeMillis()).call().getTimeline();
 | 
			
		||||
				// <20><>ʼ<EFBFBD><CABC>
 | 
			
		||||
				GlobalDataManager.setVariable("timecycle:" + cycle.getName(), String.valueOf(time));
 | 
			
		||||
				// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
				Bukkit.getPluginManager().callEvent(new TimeCycleEvent(cycle));
 | 
			
		||||
				// <20><>ʾ
 | 
			
		||||
				MsgUtils.send(sender, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> &f" + args[2] + " &7<><37>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
			}
 | 
			
		||||
		}.runTaskAsynchronously(Main.getInst());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean command() {
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,50 @@
 | 
			
		||||
package me.skymc.taboolib.commands.sub.cycle;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.bukkit.scheduler.BukkitRunnable;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.Main;
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.taboolib.database.GlobalDataManager;
 | 
			
		||||
import me.skymc.taboolib.message.MsgUtils;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycle;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleEvent;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleInitializeEvent;
 | 
			
		||||
import me.skymc.taboolib.timecycle.TimeCycleManager;
 | 
			
		||||
 | 
			
		||||
public class CycleUpdateCommand extends SubCommand {
 | 
			
		||||
 | 
			
		||||
	public CycleUpdateCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		if (args.length < 3) {
 | 
			
		||||
			MsgUtils.send(sender, "&c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		TimeCycle cycle = TimeCycleManager.getTimeCycle(args[2]);
 | 
			
		||||
		if (cycle == null) {
 | 
			
		||||
			MsgUtils.send(sender, "&c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD> &4" + args[2] + " &c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		new BukkitRunnable() {
 | 
			
		||||
			
 | 
			
		||||
			@Override
 | 
			
		||||
			public void run() {
 | 
			
		||||
				// <20><><EFBFBD><EFBFBD>
 | 
			
		||||
				GlobalDataManager.setVariable("timecycle:" + cycle.getName(), String.valueOf(System.currentTimeMillis()));
 | 
			
		||||
				// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
				Bukkit.getPluginManager().callEvent(new TimeCycleEvent(cycle));
 | 
			
		||||
				// <20><>ʾ
 | 
			
		||||
				MsgUtils.send(sender, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> &f" + args[2] + " &7<>Ѹ<EFBFBD><D1B8><EFBFBD>");
 | 
			
		||||
			}
 | 
			
		||||
		}.runTaskAsynchronously(Main.getInst());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean command() {
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -185,6 +185,20 @@ public class Language2Value {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><>ָ<EFBFBD><EFBFBD><EEB7A2><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param sender
 | 
			
		||||
	 */
 | 
			
		||||
	public void send(CommandSender sender) {
 | 
			
		||||
		if (sender instanceof Player) {
 | 
			
		||||
			send((Player) sender);
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			send(Bukkit.getPlayerExact(""));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><>ȡ<EFBFBD>ı<EFBFBD>
 | 
			
		||||
	 * 
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,12 @@ import org.bukkit.plugin.Plugin;
 | 
			
		||||
 | 
			
		||||
import me.clip.placeholderapi.external.EZPlaceholderHook;
 | 
			
		||||
import me.skymc.taboolib.database.GlobalDataManager;
 | 
			
		||||
import me.skymc.tlm.TLM;
 | 
			
		||||
import me.skymc.tlm.module.TabooLibraryModule;
 | 
			
		||||
import me.skymc.tlm.module.sub.ModuleKits;
 | 
			
		||||
 | 
			
		||||
public class SupportPlaceholder extends EZPlaceholderHook {
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
	public SupportPlaceholder(Plugin plugin, String identifier) {
 | 
			
		||||
		super(plugin, identifier);
 | 
			
		||||
	}
 | 
			
		||||
@@ -22,6 +25,42 @@ public class SupportPlaceholder extends EZPlaceholderHook {
 | 
			
		||||
			}
 | 
			
		||||
			return GlobalDataManager.getVariableAsynchronous(sb.substring(0, sb.length() - 1), "<none>");
 | 
			
		||||
		}
 | 
			
		||||
		if (args.startsWith("tlm_kit_")) {
 | 
			
		||||
			// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			if (TabooLibraryModule.getInst().valueOf("Kits") == null) {
 | 
			
		||||
				return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.0").asString();
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><>ȡģ<C8A1><C4A3>
 | 
			
		||||
			ModuleKits moduleKits = (ModuleKits) TabooLibraryModule.getInst().valueOf("Kits");
 | 
			
		||||
			String kit = args.split("_")[2];
 | 
			
		||||
			
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			if (!moduleKits.contains(kit)) {
 | 
			
		||||
				return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.1").asString();
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20>Ƿ<EFBFBD><C7B7><EFBFBD>ȡ
 | 
			
		||||
			if (moduleKits.isPlayerRewared(player, kit)) {
 | 
			
		||||
				// <20>Ƿ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ȡһ<C8A1><D2BB>
 | 
			
		||||
				if (moduleKits.isDisposable(kit)) {
 | 
			
		||||
					return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.2").asString();
 | 
			
		||||
				}
 | 
			
		||||
				// <20>Ƿ<EFBFBD><C7B7><EFBFBD>ȴ<EFBFBD><C8B4>
 | 
			
		||||
				if (moduleKits.isPlayerCooldown(player, kit)) {
 | 
			
		||||
					return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.4").asString();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>ȡ
 | 
			
		||||
			String permission = moduleKits.getPermission(kit);
 | 
			
		||||
			if (permission != null && !player.hasPermission(permission)) {
 | 
			
		||||
				return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.5").asString();
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD>ȡ
 | 
			
		||||
			return TLM.getInst().getLanguage().get("KIT-PLACEHOLDER.3").asString();
 | 
			
		||||
		}
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -135,6 +135,8 @@ public class TimeCycleManager {
 | 
			
		||||
		return 0L;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	public static void load() {
 | 
			
		||||
		// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
		new BukkitRunnable() {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,9 @@ import lombok.Getter;
 | 
			
		||||
import me.skymc.taboolib.Main;
 | 
			
		||||
import me.skymc.taboolib.fileutils.ConfigUtils;
 | 
			
		||||
import me.skymc.taboolib.message.MsgUtils;
 | 
			
		||||
import me.skymc.taboolib.string.language2.Language2;
 | 
			
		||||
import me.skymc.tlm.module.TabooLibraryModule;
 | 
			
		||||
import me.skymc.tlm.module.sub.ModuleKits;
 | 
			
		||||
import me.skymc.tlm.module.sub.ModuleTimeCycle;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -21,18 +23,27 @@ public class TLM {
 | 
			
		||||
	@Getter
 | 
			
		||||
	private FileConfiguration config;
 | 
			
		||||
	
 | 
			
		||||
	@Getter
 | 
			
		||||
	private Language2 language;
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><><EFBFBD>췽<EFBFBD><ECB7BD>
 | 
			
		||||
	 */
 | 
			
		||||
	private TLM() {
 | 
			
		||||
		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
 | 
			
		||||
		reloadConfig();
 | 
			
		||||
		
 | 
			
		||||
		// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
 | 
			
		||||
		if (isEnableModule("TimeCycle")) {
 | 
			
		||||
			TabooLibraryModule.getInst().register(new ModuleTimeCycle());
 | 
			
		||||
		}
 | 
			
		||||
		if (isEnableModule("Kits")) {
 | 
			
		||||
			TabooLibraryModule.getInst().register(new ModuleKits());
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
 | 
			
		||||
		TabooLibraryModule.getInst().loadModules();
 | 
			
		||||
		
 | 
			
		||||
		// <20><>ʾ
 | 
			
		||||
		MsgUtils.send("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> &f" + TabooLibraryModule.getInst().getSize() + " &7<><37> &fTLM &7ģ<37><C4A3>");
 | 
			
		||||
	}
 | 
			
		||||
@@ -58,6 +69,13 @@ public class TLM {
 | 
			
		||||
	 */
 | 
			
		||||
	public void reloadConfig() {
 | 
			
		||||
		config = ConfigUtils.saveDefaultConfig(Main.getInst(), "module.yml");
 | 
			
		||||
		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
 | 
			
		||||
		try {
 | 
			
		||||
			language = new Language2(config.getString("Language"), Main.getInst());
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
			MsgUtils.warn("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: &4" + config.getString("Language"));
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
@@ -66,7 +84,7 @@ public class TLM {
 | 
			
		||||
	 * @param name <20><><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @return boolean
 | 
			
		||||
	 */
 | 
			
		||||
	private boolean isEnableModule(String name) {
 | 
			
		||||
	public boolean isEnableModule(String name) {
 | 
			
		||||
		return config.getStringList("EnableModule").contains(name);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,11 +4,10 @@ import org.bukkit.command.Command;
 | 
			
		||||
import org.bukkit.command.CommandExecutor;
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.TabooLib;
 | 
			
		||||
import me.skymc.taboolib.message.MsgUtils;
 | 
			
		||||
import me.skymc.tlm.TLM;
 | 
			
		||||
import me.skymc.tlm.module.ITabooLibraryModule;
 | 
			
		||||
import me.skymc.tlm.module.TabooLibraryModule;
 | 
			
		||||
import me.skymc.tlm.command.sub.TLMKitCommand;
 | 
			
		||||
import me.skymc.tlm.command.sub.TLMListCommand;
 | 
			
		||||
import me.skymc.tlm.command.sub.TLMReloadCommand;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author sky
 | 
			
		||||
@@ -18,48 +17,32 @@ public class TLMCommands implements CommandExecutor {
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean onCommand(CommandSender sender, Command arg1, String arg2, String[] args) {
 | 
			
		||||
		if (args.length == 0) {
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lTaooLibraryModule Commands <20><>b<EFBFBD><62>l-----");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /tlm list <20><>f- <20><>8<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>7 /tlm reload [ģ<><C4A3><EFBFBD><EFBFBD>/TLM/ALL] <20><>f- <20><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		if (args.length == 0 || args[0].equalsIgnoreCase("help")) {
 | 
			
		||||
			if (sender.hasPermission("taboolib.admin")) {
 | 
			
		||||
				TLM.getInst().getLanguage().get("COMMAND-HELP").send(sender);
 | 
			
		||||
			} else {
 | 
			
		||||
				TLM.getInst().getLanguage().get("NOPERMISSION-HELP").send(sender);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (args[0].equalsIgnoreCase("reload")) {
 | 
			
		||||
			if (args.length != 2) {
 | 
			
		||||
				MsgUtils.send(sender, "&4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			else if (args[1].equalsIgnoreCase("tlm")) {
 | 
			
		||||
				TLM.getInst().reloadConfig();
 | 
			
		||||
				MsgUtils.send(sender, "&fTLM &7<><37><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			else if (args[1].equalsIgnoreCase("all")) {
 | 
			
		||||
				TabooLibraryModule.getInst().reloadConfig();
 | 
			
		||||
				MsgUtils.send(sender, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			else {
 | 
			
		||||
				ITabooLibraryModule module = TabooLibraryModule.getInst().valueOf(args[1]);
 | 
			
		||||
				if (module == null) {
 | 
			
		||||
					MsgUtils.send(sender, "&4ģ<34><C4A3> &c" + args[1] + " &4<><34><EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD>");
 | 
			
		||||
				}
 | 
			
		||||
				else {
 | 
			
		||||
					TabooLibraryModule.getInst().reloadConfig(module, true);
 | 
			
		||||
					MsgUtils.send(sender, "ģ<EFBFBD><EFBFBD> &f" + args[1] + " &7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>");
 | 
			
		||||
				}
 | 
			
		||||
			if (sender.hasPermission("taboolib.admin")) {
 | 
			
		||||
				new TLMReloadCommand(sender, args);
 | 
			
		||||
			} else {
 | 
			
		||||
				TLM.getInst().getLanguage().get("NOPERMISSION-RELOAD").send(sender);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if (args[0].equalsIgnoreCase("list")) {
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lTaooLibraryModule Modules <20><>b<EFBFBD><62>l-----");
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
			for (ITabooLibraryModule module : TabooLibraryModule.getInst().keySet()) {
 | 
			
		||||
				sender.sendMessage("<EFBFBD><EFBFBD>f - <20><>8" + module.getName());
 | 
			
		||||
			if (sender.hasPermission("taboolib.admin")) {
 | 
			
		||||
				new TLMListCommand(sender, args);
 | 
			
		||||
			} else {
 | 
			
		||||
				TLM.getInst().getLanguage().get("NOPERMISSION-LIST").send(sender);
 | 
			
		||||
			}
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		}
 | 
			
		||||
		else if (args[0].equalsIgnoreCase("kit")) {
 | 
			
		||||
			new TLMKitCommand(sender, args);
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			TLM.getInst().getLanguage().get("COMMAND-ERROR").send(sender);
 | 
			
		||||
		}
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										159
									
								
								src/main/src/me/skymc/tlm/command/sub/TLMKitCommand.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								src/main/src/me/skymc/tlm/command/sub/TLMKitCommand.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,159 @@
 | 
			
		||||
package me.skymc.tlm.command.sub;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.inventory.ItemStack;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.tlm.TLM;
 | 
			
		||||
import me.skymc.tlm.module.TabooLibraryModule;
 | 
			
		||||
import me.skymc.tlm.module.sub.ModuleKits;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author sky
 | 
			
		||||
 * @since 2018<31><38>2<EFBFBD><32>18<31><38> <20><><EFBFBD><EFBFBD>2:53:58
 | 
			
		||||
 */
 | 
			
		||||
public class TLMKitCommand extends SubCommand {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param sender
 | 
			
		||||
	 * @param args
 | 
			
		||||
	 */
 | 
			
		||||
	public TLMKitCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		if (TabooLibraryModule.getInst().valueOf("Kits") == null) {
 | 
			
		||||
			TLM.getInst().getLanguage().get("KIT-DISABLE").send(sender);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// <20><>ȡģ<C8A1><C4A3>
 | 
			
		||||
		ModuleKits moduleKits = (ModuleKits) TabooLibraryModule.getInst().valueOf("Kits");
 | 
			
		||||
		
 | 
			
		||||
		// <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
		if (args.length == 1) {
 | 
			
		||||
			TLM.getInst().getLanguage().get("KIT-EMPTY").send(sender);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		else if (args[1].equalsIgnoreCase("reward")) {
 | 
			
		||||
			// <20>ж<EFBFBD>Ȩ<EFBFBD><C8A8>
 | 
			
		||||
			if (!sender.hasPermission("taboolib.kit.reward")) {
 | 
			
		||||
				TLM.getInst().getLanguage().get("NOPERMISSION-KIT-REWARD").send(sender);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			if (args.length < 3) {
 | 
			
		||||
				TLM.getInst().getLanguage().get("KIT-NAME").send(sender);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			if (!moduleKits.contains(args[2])) {
 | 
			
		||||
				TLM.getInst().getLanguage().get("KIT-NOTFOUND").addPlaceholder("$kit", args[2]).send(sender);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
 | 
			
		||||
			Player player;
 | 
			
		||||
			if (args.length > 3) {
 | 
			
		||||
				player = Bukkit.getPlayerExact(args[3]);
 | 
			
		||||
				// <20><><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
				if (player == null) {
 | 
			
		||||
					TLM.getInst().getLanguage().get("KIT-OFFLINE").addPlaceholder("$name", args[3]).send(sender);
 | 
			
		||||
					return;
 | 
			
		||||
				}
 | 
			
		||||
			} else if (sender instanceof Player) {
 | 
			
		||||
				player = (Player) sender;
 | 
			
		||||
			} else {
 | 
			
		||||
				TLM.getInst().getLanguage().get("KIT-CONSOLE").send(sender);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20>Ƿ<EFBFBD><C7B7><EFBFBD>ȡ
 | 
			
		||||
			if (moduleKits.isPlayerRewared(player, args[2])) {
 | 
			
		||||
				// <20>Ƿ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ȡһ<C8A1><D2BB>
 | 
			
		||||
				if (moduleKits.isDisposable(args[2])) {
 | 
			
		||||
					TLM.getInst().getLanguage().get("KIT-DISPOSABLE").addPlaceholder("$kit", args[2]).send(sender);
 | 
			
		||||
					return;
 | 
			
		||||
				}
 | 
			
		||||
				// <20>Ƿ<EFBFBD><C7B7><EFBFBD>ȴ<EFBFBD><C8B4>
 | 
			
		||||
				if (moduleKits.isPlayerCooldown(player, args[2])) {
 | 
			
		||||
					TLM.getInst().getLanguage().get("KIT-COOLDOWN").addPlaceholder("$kit", args[2]).send(sender);
 | 
			
		||||
					return;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>ȡ
 | 
			
		||||
			String permission = moduleKits.getPermission(args[2]);
 | 
			
		||||
			if (permission != null && !player.hasPermission(permission)) {
 | 
			
		||||
				// <20><>ʾ<EFBFBD><CABE>Ϣ
 | 
			
		||||
				player.sendMessage(moduleKits.getPermissionMessage(args[2]));
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			List<ItemStack> items = moduleKits.getItems(args[2]);
 | 
			
		||||
			for (ItemStack item : items) {
 | 
			
		||||
				// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
 | 
			
		||||
				HashMap<Integer, ItemStack> result = player.getInventory().addItem(item);
 | 
			
		||||
				// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䲻<D5BC><E4B2BB>
 | 
			
		||||
				if (result.size() > 0 && moduleKits.isFullDrop(args[2])) {
 | 
			
		||||
					// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
 | 
			
		||||
					player.getWorld().dropItem(player.getLocation(), item);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD>ȡ
 | 
			
		||||
			moduleKits.setPlayerReward(player, args[2], true);
 | 
			
		||||
			
 | 
			
		||||
			// <20><>ʾ<EFBFBD><CABE>Ϣ
 | 
			
		||||
			TLM.getInst().getLanguage().get("KIT-SUCCESS").addPlaceholder("$kit", args[2]).send(sender);
 | 
			
		||||
		}
 | 
			
		||||
		else if (args[1].equalsIgnoreCase("reset")) {
 | 
			
		||||
			// <20>ж<EFBFBD>Ȩ<EFBFBD><C8A8>
 | 
			
		||||
			if (!sender.hasPermission("taboolib.kit.reset")) {
 | 
			
		||||
				TLM.getInst().getLanguage().get("NOPERMISSION-KIT-RESET").send(sender);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			if (args.length < 3) {
 | 
			
		||||
				TLM.getInst().getLanguage().get("KIT-NAME").send(sender);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
			if (!moduleKits.contains(args[2])) {
 | 
			
		||||
				TLM.getInst().getLanguage().get("KIT-NOTFOUND").addPlaceholder("$kit", args[2]).send(sender);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
 | 
			
		||||
			Player player;
 | 
			
		||||
			if (args.length > 3) {
 | 
			
		||||
				player = Bukkit.getPlayerExact(args[3]);
 | 
			
		||||
				// <20><><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
				if (player == null) {
 | 
			
		||||
					TLM.getInst().getLanguage().get("KIT-OFFLINE").addPlaceholder("$name", args[3]).send(sender);
 | 
			
		||||
					return;
 | 
			
		||||
				}
 | 
			
		||||
				else {
 | 
			
		||||
					moduleKits.setPlayerReward(player, args[2], false);
 | 
			
		||||
					TLM.getInst().getLanguage().get("KIT-RESET-PLAYER").addPlaceholder("$kit", args[2]).addPlaceholder("$player", player.getName()).send(sender);
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				moduleKits.resetKit(args[2]);
 | 
			
		||||
				TLM.getInst().getLanguage().get("KIT-RESET-ALL").addPlaceholder("$kit", args[2]).send(sender);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			TLM.getInst().getLanguage().get("COMMAND-ERROR").send(sender);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								src/main/src/me/skymc/tlm/command/sub/TLMListCommand.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/main/src/me/skymc/tlm/command/sub/TLMListCommand.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
package me.skymc.tlm.command.sub;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.tlm.module.ITabooLibraryModule;
 | 
			
		||||
import me.skymc.tlm.module.TabooLibraryModule;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author sky
 | 
			
		||||
 * @since 2018<31><38>2<EFBFBD><32>18<31><38> <20><><EFBFBD><EFBFBD>2:10:12
 | 
			
		||||
 */
 | 
			
		||||
public class TLMListCommand extends SubCommand {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param sender
 | 
			
		||||
	 * @param args
 | 
			
		||||
	 */
 | 
			
		||||
	public TLMListCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>l----- <20><>3<EFBFBD><33>lTaooLibraryModule Modules <20><>b<EFBFBD><62>l-----");
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
		
 | 
			
		||||
		for (ITabooLibraryModule module : TabooLibraryModule.getInst().keySet()) {
 | 
			
		||||
			sender.sendMessage("<EFBFBD><EFBFBD>f - <20><>8" + module.getName());
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		sender.sendMessage("<EFBFBD><EFBFBD>f");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										49
									
								
								src/main/src/me/skymc/tlm/command/sub/TLMReloadCommand.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/main/src/me/skymc/tlm/command/sub/TLMReloadCommand.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
package me.skymc.tlm.command.sub;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.taboolib.message.MsgUtils;
 | 
			
		||||
import me.skymc.tlm.TLM;
 | 
			
		||||
import me.skymc.tlm.module.ITabooLibraryModule;
 | 
			
		||||
import me.skymc.tlm.module.TabooLibraryModule;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author sky
 | 
			
		||||
 * @since 2018<31><38>2<EFBFBD><32>18<31><38> <20><><EFBFBD><EFBFBD>2:09:34
 | 
			
		||||
 */
 | 
			
		||||
public class TLMReloadCommand extends SubCommand {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param sender
 | 
			
		||||
	 * @param args
 | 
			
		||||
	 */
 | 
			
		||||
	public TLMReloadCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		if (args.length != 2) {
 | 
			
		||||
			MsgUtils.send(sender, "&4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		else if (args[1].equalsIgnoreCase("tlm")) {
 | 
			
		||||
			TLM.getInst().reloadConfig();
 | 
			
		||||
			MsgUtils.send(sender, "&fTLM &7<><37><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		else if (args[1].equalsIgnoreCase("all")) {
 | 
			
		||||
			TabooLibraryModule.getInst().reloadConfig();
 | 
			
		||||
			MsgUtils.send(sender, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		else {
 | 
			
		||||
			ITabooLibraryModule module = TabooLibraryModule.getInst().valueOf(args[1]);
 | 
			
		||||
			if (module == null) {
 | 
			
		||||
				MsgUtils.send(sender, "&4ģ<34><C4A3> &c" + args[1] + " &4<><34><EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD>");
 | 
			
		||||
			}
 | 
			
		||||
			else {
 | 
			
		||||
				TabooLibraryModule.getInst().reloadConfig(module, true);
 | 
			
		||||
				MsgUtils.send(sender, "ģ<EFBFBD><EFBFBD> &f" + args[1] + " &7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD>");
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										160
									
								
								src/main/src/me/skymc/tlm/module/sub/ModuleKits.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								src/main/src/me/skymc/tlm/module/sub/ModuleKits.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,160 @@
 | 
			
		||||
package me.skymc.tlm.module.sub;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.configuration.file.FileConfiguration;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.inventory.ItemStack;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.database.PlayerDataManager;
 | 
			
		||||
import me.skymc.taboolib.inventory.ItemUtils;
 | 
			
		||||
import me.skymc.taboolib.message.MsgUtils;
 | 
			
		||||
import me.skymc.taboolib.other.DateUtils;
 | 
			
		||||
import me.skymc.taboolib.other.NumberUtils;
 | 
			
		||||
import me.skymc.taboolib.playerdata.DataUtils;
 | 
			
		||||
import me.skymc.tlm.module.ITabooLibraryModule;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author sky
 | 
			
		||||
 * @since 2018<31><38>2<EFBFBD><32>18<31><38> <20><><EFBFBD><EFBFBD>12:13:55
 | 
			
		||||
 */
 | 
			
		||||
public class ModuleKits implements ITabooLibraryModule {
 | 
			
		||||
	
 | 
			
		||||
	private FileConfiguration data;
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getName() {
 | 
			
		||||
		return "Kits";
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	public void onEnable() {
 | 
			
		||||
		data = DataUtils.addPluginData("ModuleKits", null);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param player <20><><EFBFBD><EFBFBD>
 | 
			
		||||
	 */
 | 
			
		||||
	public void setPlayerReward(Player player, String kit, boolean reward) {
 | 
			
		||||
		data.set(kit + "." + player.getName(), reward ? System.currentTimeMillis() : null);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param kit <20><><EFBFBD><EFBFBD>
 | 
			
		||||
	 */
 | 
			
		||||
	public void resetKit(String kit) {
 | 
			
		||||
		data.set(kit, null);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param player <20><><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @param kit <20><><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @return boolean
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean isPlayerRewared(Player player, String kit) {
 | 
			
		||||
		return data.contains(kit + "." + player.getName());
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4>
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param player
 | 
			
		||||
	 * @param kit
 | 
			
		||||
	 * @return
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean isPlayerCooldown(Player player, String kit) {
 | 
			
		||||
		return System.currentTimeMillis() - data.getLong(kit + "." + player.getName()) < getCooldown(kit);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param kit <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @return boolean
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean contains(String kit) {
 | 
			
		||||
		return getConfig().contains("Kits." + kit);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴʱ<C8B4><CAB1>
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param kit <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @return long
 | 
			
		||||
	 */
 | 
			
		||||
	public long getCooldown(String kit) {
 | 
			
		||||
		return DateUtils.formatDate(getConfig().getString("Kits." + kit + ".Cooldown"));
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ռ䲻<D5BC><E4B2BB>ʱ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ʽ
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param kit <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @return boolean
 | 
			
		||||
	 */
 | 
			
		||||
	public Boolean isFullDrop(String kit) {
 | 
			
		||||
		return getConfig().getBoolean("Kits." + kit + ".FullDrop");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ȡһ<C8A1><D2BB>
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param kit <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @return boolean
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean isDisposable(String kit) {
 | 
			
		||||
		return getConfig().getBoolean("Kits." + kit + ".Disposable");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param kit <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @return String
 | 
			
		||||
	 */
 | 
			
		||||
	public String getPermission(String kit) {
 | 
			
		||||
		return getConfig().getString("Kits." + kit + ".Permission");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>ʾ
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param kit <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @return String
 | 
			
		||||
	 */
 | 
			
		||||
	public String getPermissionMessage(String kit) {
 | 
			
		||||
		return getConfig().getString("Kits." + kit + ".Permission-message").replace("&", "<EFBFBD><EFBFBD>");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param kit <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
	 * @return {@link List}
 | 
			
		||||
	 */
 | 
			
		||||
	public List<ItemStack> getItems(String kit) {
 | 
			
		||||
		List<ItemStack> items = new ArrayList<>();
 | 
			
		||||
		for (String itemStr : getConfig().getStringList("Kits." + kit + ".Items")) {
 | 
			
		||||
			ItemStack item = ItemUtils.getCacheItem(itemStr.split(" ")[0]);
 | 
			
		||||
			if (item != null) {
 | 
			
		||||
				item = item.clone();
 | 
			
		||||
				try {
 | 
			
		||||
					item.setAmount(NumberUtils.getInteger(itemStr.split(" ")[1]));
 | 
			
		||||
					items.add(item);
 | 
			
		||||
				} catch (Exception e) {
 | 
			
		||||
					MsgUtils.warn("ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣: &4<><34>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
					MsgUtils.warn("ģ<EFBFBD><EFBFBD>: &4Kits");
 | 
			
		||||
					MsgUtils.warn("λ<EFBFBD><EFBFBD>: &4" + itemStr);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return items;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -64,7 +64,7 @@ public class ModuleTimeCycle implements ITabooLibraryModule, Listener {
 | 
			
		||||
						int type = (int) Calendar.class.getField(typeStr.split("=")[0]).get(Calendar.class);
 | 
			
		||||
						date.set(type, NumberUtils.getInteger(typeStr.split("=")[1]));
 | 
			
		||||
					} catch (Exception err) {
 | 
			
		||||
						MsgUtils.warn("ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣");
 | 
			
		||||
						MsgUtils.warn("ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣: &4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>");
 | 
			
		||||
						MsgUtils.warn("ģ<EFBFBD><EFBFBD>: &4TimeCycle");
 | 
			
		||||
						MsgUtils.warn("λ<EFBFBD><EFBFBD>: &4" + typeStr);
 | 
			
		||||
					}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								src/resources/Language2/zh_CN.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/resources/Language2/zh_CN.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
COMMAND-ERROR: '&8[&2&lTLM&8] &4指令错误'
 | 
			
		||||
COMMAND-HELP:
 | 
			
		||||
- ''
 | 
			
		||||
- '&b&l----- &3&lTaooLibraryModule Commands &b&l-----'
 | 
			
		||||
- ''
 | 
			
		||||
- '&f /tlm kit reward &8[&7名称] &8<&7名称&8> &6- &e领取礼包'
 | 
			
		||||
- '&f /tlm kit reset &8[&7名称] &8<&7玩家&8> &6- &e刷新礼包'
 | 
			
		||||
- ''
 | 
			
		||||
- '&f /tlm list &6- &e列出所有模块'
 | 
			
		||||
- ''
 | 
			
		||||
- '&f /tlm reload &8[&7模块名|TLM|ALL&8] &6- &e列出所有模块'
 | 
			
		||||
- ''
 | 
			
		||||
 | 
			
		||||
NOPERMISSION-HELP: '&8[&2&lTLM&8] &4你没有权限列出帮助命令'
 | 
			
		||||
NOPERMISSION-LIST: '&8[&2&lTLM&8] &4你没有权限这么做'
 | 
			
		||||
NOPERMISSION-RELOAD: '&8[&2&lTLM&8] &4你没有权限这么做'
 | 
			
		||||
NOPERMISSION-KIT-REWARD: '&8[&2&lTLM&8] &4你没有权限这么做'
 | 
			
		||||
NOPERMISSION-KIT-RESET: '&8[&2&lTLM&8] &4你没有权限这么做'
 | 
			
		||||
 | 
			
		||||
KIT-EMPTY: '&8[&2&lTLM&8] &4参数错误'
 | 
			
		||||
KIT-NAME: '&8[&2&lTLM&8] &4请输入正确的礼包名称'
 | 
			
		||||
KIT-DISABLE: '&8[&2&lTLM&8] &4该模块尚未在配置文件中启用'
 | 
			
		||||
KIT-NOTFOUND: '&8[&2&lTLM&8] &4礼包 &c$kit &4不存在'
 | 
			
		||||
KIT-OFFLINE: '&8[&2&lTLM&8] &4玩家 &c$name &4不在线'
 | 
			
		||||
KIT-CONSOLE: '&8[&2&lTLM&8] &4后台不允许输入这个指令'
 | 
			
		||||
KIT-COOLDOWN: '&8[&2&lTLM&8] &4礼包 &c$kit &4正在冷却中'
 | 
			
		||||
KIT-DISPOSABLE: '&8[&2&lTLM&8] &4礼包 &c$kit &4只能领取一次'
 | 
			
		||||
KIT-RESET-ALL: '&8[&2&lTLM&8] &7礼包 &f$kit &7已刷新'
 | 
			
		||||
KIT-RESET-PLAYER: '&8[&2&lTLM&8] &7玩家 &f$player &7的礼包 &f$kit &7已刷新'
 | 
			
		||||
KIT-SUCCESS: '&8[&2&lTLM&8] &7礼包 &f$kit &7已领取'
 | 
			
		||||
KIT-PLACEHOLDER:
 | 
			
		||||
  0: '&4模块未启用'
 | 
			
		||||
  1: '&4礼包不存在'
 | 
			
		||||
  2: '&8已领取'
 | 
			
		||||
  3: '&a可领取'
 | 
			
		||||
  4: '&4冷却中'
 | 
			
		||||
  5: '&4无权限'
 | 
			
		||||
							
								
								
									
										30
									
								
								src/resources/TLM/Kits.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/resources/TLM/Kits.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
# 礼包配置
 | 
			
		||||
Kits:
 | 
			
		||||
  # 礼包名
 | 
			
		||||
  kit_name:
 | 
			
		||||
    # 礼包刷新时间
 | 
			
		||||
    # ---------- #
 | 
			
		||||
    # 1d = 1天
 | 
			
		||||
    # 1h = 1小时
 | 
			
		||||
    # 1m = 1分钟
 | 
			
		||||
    # 1s = 1秒钟
 | 
			
		||||
    # 时间之间用 ";" 分隔, 例如 1小时30分钟 = "1h;30m"
 | 
			
		||||
    # ---------- #
 | 
			
		||||
    Cooldown: '1d'
 | 
			
		||||
    
 | 
			
		||||
    # 背包空间不足时物品是否掉落
 | 
			
		||||
    FullDrop: true
 | 
			
		||||
        
 | 
			
		||||
    # 是否只能领取一次
 | 
			
		||||
    Disposable: false
 | 
			
		||||
    
 | 
			
		||||
    # 礼包领取权限
 | 
			
		||||
    Permission: 'taboolib.kit.kit_name'
 | 
			
		||||
    
 | 
			
		||||
    # 礼包领取权限提示
 | 
			
		||||
    Permission-message: '&4你没有权限领取这个礼包'
 | 
			
		||||
    
 | 
			
		||||
    # 礼包内容
 | 
			
		||||
    # 空格左侧为物品名,右侧为物品数量
 | 
			
		||||
    Items:
 | 
			
		||||
    - 'UnlimitSword 1'
 | 
			
		||||
@@ -1,4 +1,8 @@
 | 
			
		||||
# 语言文件
 | 
			
		||||
Language: 'zh_CN'
 | 
			
		||||
 | 
			
		||||
# 启用模块
 | 
			
		||||
# 该配置需要重启服务器才会生效
 | 
			
		||||
EnableModule:
 | 
			
		||||
#- 'TimeCycle'
 | 
			
		||||
#- 'TimeCycle'
 | 
			
		||||
#- 'Kits'
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user