Skip to content

Commit 3df9dbd

Browse files
committed
版本更新至 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"
1 parent 9383439 commit 3df9dbd

21 files changed

+906
-71
lines changed

src/main/src/me/skymc/taboolib/commands/MainCommands.java

+7-24
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import me.skymc.taboolib.commands.sub.AttributesCommand;
1616
import me.skymc.taboolib.commands.sub.EnchantCommand;
1717
import me.skymc.taboolib.commands.sub.FlagCommand;
18+
import me.skymc.taboolib.commands.sub.HelpCommand;
1819
import me.skymc.taboolib.commands.sub.ImportCommand;
1920
import me.skymc.taboolib.commands.sub.InfoCommand;
2021
import me.skymc.taboolib.commands.sub.ItemCommand;
@@ -23,6 +24,7 @@
2324
import me.skymc.taboolib.commands.sub.SlotCommand;
2425
import me.skymc.taboolib.commands.sub.VariableGetCommand;
2526
import me.skymc.taboolib.commands.sub.VariableSetCommand;
27+
import me.skymc.taboolib.commands.sub.cycle.CycleCommand;
2628
import me.skymc.taboolib.commands.sub.itemlist.ItemListCommand;
2729
import me.skymc.taboolib.commands.sub.shell.ShellCommand;
2830
import me.skymc.taboolib.inventory.ItemUtils;
@@ -32,30 +34,8 @@ public class MainCommands implements CommandExecutor{
3234

3335
@Override
3436
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
35-
if (args.length == 0) {
36-
sender.sendMessage("§f");
37-
sender.sendMessage("§b§l----- §3§lTaooLib Commands §b§l-----");
38-
sender.sendMessage("§f");
39-
sender.sendMessage("§7 /taboolib save [名称] §f- §8保存手中物品");
40-
sender.sendMessage("§7 /taboolib item/i [物品] <玩家> <数量> §f- §8给予玩家物品");
41-
sender.sendMessage("§7 /taboolib iteminfo §f- §8查看物品信息");
42-
sender.sendMessage("§7 /taboolib itemlist §f- §8查看所有物品");
43-
sender.sendMessage("§7 /taboolib itemreload/ireload §f- §8重载物品缓存");
44-
sender.sendMessage("§f");
45-
sender.sendMessage("§7 /taboolib attributes §f- §8查看所有属性");
46-
sender.sendMessage("§7 /taboolib enchants §f- §8查看所有附魔");
47-
sender.sendMessage("§7 /taboolib potions §f- §8查看所有药水");
48-
sender.sendMessage("§7 /taboolib flags §f- §8查看所有标签");
49-
sender.sendMessage("§7 /taboolib slots §f- §8查看所有部位");
50-
sender.sendMessage("§f");
51-
sender.sendMessage("§7 /taboolib getvariable [-s|a] [键] §f- §8查看变量");
52-
sender.sendMessage("§7 /taboolib setvariable [-s|a] [键] [值] §f- §8更改变量");
53-
sender.sendMessage("§f");
54-
sender.sendMessage("§7 /taboolib shell/s load [脚本] §f- §8载入某个脚本");
55-
sender.sendMessage("§7 /taboolib shell/s unload [脚本] §f- §8卸载某个脚本");
56-
sender.sendMessage("§f");
57-
sender.sendMessage("§c /taboolib importdata §f- §4向数据库导入本地数据 §8(该操作将会清空数据库)");
58-
sender.sendMessage("§f");
37+
if (args.length == 0 || args[0].equalsIgnoreCase("help")) {
38+
new HelpCommand(sender, args);
5939
}
6040
else if (args[0].equalsIgnoreCase("itemreload") || args[0].equalsIgnoreCase("ireload")) {
6141
ItemUtils.reloadItemCache();
@@ -101,6 +81,9 @@ else if (args[0].equalsIgnoreCase("getvariable")) {
10181
else if (args[0].equalsIgnoreCase("shell") || args[0].equalsIgnoreCase("s")) {
10282
new ShellCommand(sender, args);
10383
}
84+
else if (args[0].equalsIgnoreCase("cycle") || args[0].equalsIgnoreCase("c")) {
85+
new CycleCommand(sender, args);
86+
}
10487
else {
10588
MsgUtils.send(sender, "&4Ö¸Áî´íÎó");
10689
}

src/main/src/me/skymc/taboolib/commands/language/Language2Command.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ public class Language2Command implements CommandExecutor {
2121
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
2222
if (args.length == 0) {
2323
sender.sendMessage("§f");
24-
sender.sendMessage("§b§l----- §3§lTabooLib Commands §b§l-----");
24+
sender.sendMessage("§b§l----- §3§lLanguage2 Commands §b§l-----");
2525
sender.sendMessage("§f");
26-
sender.sendMessage(7 /language2 reload §f- §8重载语言库");
27-
sender.sendMessage(7 /language2 send [玩家] [语言] <变量> §f- §8发送语言提示");
26+
sender.sendMessage(f /language2 send §8[§7玩家§8] §8[§7语言§8] §8<§7变量§8> §6- §e发送语言提示");
27+
sender.sendMessage(f /language2 reload §6- §e重载语言库");
2828
sender.sendMessage("§f");
2929
}
3030
else if (args[0].equalsIgnoreCase("reload")) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package me.skymc.taboolib.commands.sub;
2+
3+
import java.util.HashMap;
4+
import java.util.LinkedHashMap;
5+
import java.util.Map.Entry;
6+
7+
import org.bukkit.command.CommandSender;
8+
import org.bukkit.command.ConsoleCommandSender;
9+
import org.bukkit.entity.Player;
10+
import org.bukkit.inventory.ItemFlag;
11+
12+
import me.skymc.taboolib.TabooLib;
13+
import me.skymc.taboolib.commands.SubCommand;
14+
import me.skymc.taboolib.jsonformatter.JSONFormatter;
15+
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
16+
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
17+
18+
public class HelpCommand extends SubCommand {
19+
20+
public HelpCommand(CommandSender sender, String[] args) {
21+
super(sender, args);
22+
23+
HashMap<String, String> helps = new LinkedHashMap<>();
24+
helps.put("/taboolib save §8[§7名称§8]", "§e保存手中物品");
25+
helps.put("/taboolib item §8[§7名称§8] §8<§7玩家§8> §8<§7数量§8>", "§e给予玩家物品");
26+
helps.put("/taboolib iteminfo", "§e查看物品信息");
27+
helps.put("/taboolib itemlist", "§e查看所有物品");
28+
helps.put("/taboolib itemreload", "§e重载物品缓存");
29+
helps.put("§a", null);
30+
helps.put("/taboolib attributes", "§e查看所有属性");
31+
helps.put("/taboolib enchants", "§e查看所有附魔");
32+
helps.put("/taboolib potions", "§e查看所有药水");
33+
helps.put("/taboolib flags", "§e查看所有标签");
34+
helps.put("/taboolib slots", "§e查看所有部位");
35+
helps.put("§b", null);
36+
helps.put("/taboolib getvariable §8[§7-s|a§8] §8[§7键§8]", "§e查看变量");
37+
helps.put("/taboolib setvariable §8[§7-s|a§8] §8[§7键§8] §8[§7值§8]", "§e更改变量");
38+
helps.put("§c", null);
39+
helps.put("/taboolib cycle list", "§e列出所有时间检查器");
40+
helps.put("/taboolib cycle info §8[§7名称§8]", "§e查询检查器信息");
41+
helps.put("/taboolib cycle reset §8[§7名称§8]", "§e初始化时间检查器");
42+
helps.put("/taboolib cycle update §8[§7名称§8]", "§e更新时间检查器");
43+
helps.put("§d", null);
44+
helps.put("/taboolib shell load §8[§7名称§8]", "§e载入某个脚本");
45+
helps.put("/taboolib shell unload §8[§7名称§8]", "§e卸载某个脚本");
46+
helps.put("§e", null);
47+
helps.put("/taboolib importdata", "§4向数据库导入本地数据 §8(该操作将会清空数据库)");
48+
49+
if (sender instanceof ConsoleCommandSender || TabooLib.getVerint() < 10800) {
50+
sender.sendMessage("§f");
51+
sender.sendMessage("§b§l----- §3§lTaooLib Commands §b§l-----");
52+
sender.sendMessage("§f");
53+
// 遍历命令
54+
for (Entry<String, String> entry : helps.entrySet()) {
55+
if (entry.getValue() == null) {
56+
sender.sendMessage("§f");
57+
} else {
58+
sender.sendMessage("§f " + entry.getKey() + " §6- " + entry.getValue());
59+
}
60+
}
61+
sender.sendMessage("§f");
62+
}
63+
else if (sender instanceof Player) {
64+
JSONFormatter json = new JSONFormatter();
65+
json.append("§f"); json.newLine();
66+
json.append("§b§l----- §3§lTaooLib Commands §b§l-----"); json.newLine();
67+
json.append("§f"); json.newLine();
68+
// 遍历命令
69+
for (Entry<String, String> entry : helps.entrySet()) {
70+
if (entry.getValue() == null) {
71+
json.append("§f"); json.newLine();
72+
} else {
73+
json.appendHoverClick("§f " + entry.getKey() + " §6- " + entry.getValue(), new ShowTextEvent("§f点击复制指令"), new SuggestCommandEvent(entry.getKey().split("§")[0])); json.newLine();
74+
}
75+
}
76+
json.append("§f");
77+
json.send((Player) sender);
78+
}
79+
}
80+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package me.skymc.taboolib.commands.sub.cycle;
2+
3+
import java.io.File;
4+
5+
import org.bukkit.command.CommandSender;
6+
7+
import me.skymc.taboolib.commands.SubCommand;
8+
import me.skymc.taboolib.javashell.JavaShell;
9+
import me.skymc.taboolib.message.MsgUtils;
10+
11+
public class CycleCommand extends SubCommand {
12+
13+
public CycleCommand(CommandSender sender, String[] args) {
14+
super(sender, args);
15+
if (args.length > 1) {
16+
if (args[1].equalsIgnoreCase("list")) {
17+
new CycleListCommand(sender, args);
18+
}
19+
else if (args[1].equalsIgnoreCase("info")) {
20+
new CycleInfoCommand(sender, args);
21+
}
22+
else if (args[1].equalsIgnoreCase("reset")) {
23+
new CycleResetCommand(sender, args);
24+
}
25+
else if (args[1].equalsIgnoreCase("update")) {
26+
new CycleUpdateCommand(sender, args);
27+
}
28+
}
29+
else {
30+
MsgUtils.send(sender, "&4Ö¸Áî´íÎó");
31+
}
32+
}
33+
34+
@Override
35+
public boolean command() {
36+
return true;
37+
}
38+
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package me.skymc.taboolib.commands.sub.cycle;
2+
3+
import java.util.concurrent.TimeUnit;
4+
5+
import org.bukkit.Bukkit;
6+
import org.bukkit.command.CommandSender;
7+
import org.bukkit.scheduler.BukkitRunnable;
8+
9+
import me.skymc.taboolib.Main;
10+
import me.skymc.taboolib.commands.SubCommand;
11+
import me.skymc.taboolib.database.GlobalDataManager;
12+
import me.skymc.taboolib.message.MsgUtils;
13+
import me.skymc.taboolib.other.DateUtils;
14+
import me.skymc.taboolib.timecycle.TimeCycle;
15+
import me.skymc.taboolib.timecycle.TimeCycleEvent;
16+
import me.skymc.taboolib.timecycle.TimeCycleInitializeEvent;
17+
import me.skymc.taboolib.timecycle.TimeCycleManager;
18+
19+
public class CycleInfoCommand extends SubCommand {
20+
21+
public CycleInfoCommand(CommandSender sender, String[] args) {
22+
super(sender, args);
23+
if (args.length < 3) {
24+
MsgUtils.send(sender, "&c请输入正确的检查器名称");
25+
return;
26+
}
27+
28+
TimeCycle cycle = TimeCycleManager.getTimeCycle(args[2]);
29+
if (cycle == null) {
30+
MsgUtils.send(sender, "&c检查器 &4" + args[2] + " &c不存在");
31+
return;
32+
}
33+
34+
sender.sendMessage("§f");
35+
sender.sendMessage("§b§l----- §3§lTimeCycle Info §b§l-----");
36+
sender.sendMessage("§f");
37+
sender.sendMessage(" §f- §7注册周期: §f" + asString(cycle.getCycle() / 1000L));
38+
sender.sendMessage(" §f- §7注册插件: §f" + cycle.getPlugin().getName());
39+
sender.sendMessage("§f");
40+
sender.sendMessage(" §f- §7上次刷新时间: §f" + DateUtils.CH_ALL.format(TimeCycleManager.getBeforeTimeline(cycle.getName())));
41+
sender.sendMessage(" §f- §7下次刷新时间: §f" + DateUtils.CH_ALL.format(TimeCycleManager.getAfterTimeline(cycle.getName())));
42+
sender.sendMessage("§f");
43+
}
44+
45+
public String asString(long seconds) {
46+
long day = TimeUnit.SECONDS.toDays(seconds);
47+
long hours = TimeUnit.SECONDS.toHours(seconds) - day * 24;
48+
long minute = TimeUnit.SECONDS.toMinutes(seconds) - TimeUnit.SECONDS.toHours(seconds) * 60L;
49+
long second = TimeUnit.SECONDS.toSeconds(seconds) - TimeUnit.SECONDS.toMinutes(seconds) * 60L;
50+
return "§f" + day + "§7 天, §f" + hours + "§7 小时, §f" + minute + "§7 分钟, §f" + second + "§7 秒";
51+
}
52+
53+
@Override
54+
public boolean command() {
55+
return true;
56+
}
57+
58+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package me.skymc.taboolib.commands.sub.cycle;
2+
3+
import java.io.File;
4+
import java.util.concurrent.TimeUnit;
5+
6+
import org.bukkit.command.CommandSender;
7+
import org.bukkit.entity.Player;
8+
9+
import me.skymc.taboolib.commands.SubCommand;
10+
import me.skymc.taboolib.javashell.JavaShell;
11+
import me.skymc.taboolib.jsonformatter.JSONFormatter;
12+
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
13+
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
14+
import me.skymc.taboolib.message.MsgUtils;
15+
import me.skymc.taboolib.timecycle.TimeCycle;
16+
import me.skymc.taboolib.timecycle.TimeCycleManager;
17+
18+
public class CycleListCommand extends SubCommand {
19+
20+
public CycleListCommand(CommandSender sender, String[] args) {
21+
super(sender, args);
22+
23+
sender.sendMessage("§f");
24+
sender.sendMessage("§b§l----- §3§lTimeCycle List §b§l-----");
25+
sender.sendMessage("§f");
26+
27+
for (TimeCycle cycle : TimeCycleManager.getTimeCycles()) {
28+
if (isPlayer()) {
29+
JSONFormatter json = new JSONFormatter();
30+
json.append(" §7- §f" + cycle.getName());
31+
json.appendHoverClick(" §8(点击复制)", new ShowTextEvent("§f点击复制"), new SuggestCommandEvent(cycle.getName()));
32+
json.send((Player) sender);
33+
}
34+
else {
35+
sender.sendMessage(" §7- §f" + cycle.getName());
36+
}
37+
}
38+
39+
sender.sendMessage("§f");
40+
}
41+
42+
@Override
43+
public boolean command() {
44+
return true;
45+
}
46+
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package me.skymc.taboolib.commands.sub.cycle;
2+
3+
import org.bukkit.Bukkit;
4+
import org.bukkit.command.CommandSender;
5+
import org.bukkit.scheduler.BukkitRunnable;
6+
7+
import me.skymc.taboolib.Main;
8+
import me.skymc.taboolib.commands.SubCommand;
9+
import me.skymc.taboolib.database.GlobalDataManager;
10+
import me.skymc.taboolib.message.MsgUtils;
11+
import me.skymc.taboolib.timecycle.TimeCycle;
12+
import me.skymc.taboolib.timecycle.TimeCycleEvent;
13+
import me.skymc.taboolib.timecycle.TimeCycleInitializeEvent;
14+
import me.skymc.taboolib.timecycle.TimeCycleManager;
15+
16+
public class CycleResetCommand extends SubCommand {
17+
18+
public CycleResetCommand(CommandSender sender, String[] args) {
19+
super(sender, args);
20+
if (args.length < 3) {
21+
MsgUtils.send(sender, "&c请输入正确的检查器名称");
22+
return;
23+
}
24+
25+
TimeCycle cycle = TimeCycleManager.getTimeCycle(args[2]);
26+
if (cycle == null) {
27+
MsgUtils.send(sender, "&c检查器 &4" + args[2] + " &c不存在");
28+
return;
29+
}
30+
31+
new BukkitRunnable() {
32+
33+
@Override
34+
public void run() {
35+
long time = new TimeCycleInitializeEvent(cycle, System.currentTimeMillis()).call().getTimeline();
36+
// 初始化
37+
GlobalDataManager.setVariable("timecycle:" + cycle.getName(), String.valueOf(time));
38+
// 触发器
39+
Bukkit.getPluginManager().callEvent(new TimeCycleEvent(cycle));
40+
// 提示
41+
MsgUtils.send(sender, "检查器 &f" + args[2] + " &7初始化完成");
42+
}
43+
}.runTaskAsynchronously(Main.getInst());
44+
}
45+
46+
@Override
47+
public boolean command() {
48+
return true;
49+
}
50+
51+
}

0 commit comments

Comments
 (0)