版本更新至:3.76
调整:开发框架改为 Gradle 新增:Language2 工具新增 [book] 类型
This commit is contained in:
98
src/main/java/me/skymc/tlm/TLM.java
Normal file
98
src/main/java/me/skymc/tlm/TLM.java
Normal file
@@ -0,0 +1,98 @@
|
||||
package me.skymc.tlm;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
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.ModuleCommandChanger;
|
||||
import me.skymc.tlm.module.sub.ModuleInventorySave;
|
||||
import me.skymc.tlm.module.sub.ModuleKits;
|
||||
import me.skymc.tlm.module.sub.ModuleTimeCycle;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月17日 下午10:28:05
|
||||
*/
|
||||
public class TLM {
|
||||
|
||||
private static TLM inst = null;
|
||||
|
||||
@Getter
|
||||
private FileConfiguration config;
|
||||
|
||||
@Getter
|
||||
private Language2 language;
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*/
|
||||
private TLM() {
|
||||
// 重载配置文件
|
||||
reloadConfig();
|
||||
|
||||
// 载入模块
|
||||
if (isEnableModule("TimeCycle")) {
|
||||
TabooLibraryModule.getInst().register(new ModuleTimeCycle());
|
||||
}
|
||||
if (isEnableModule("Kits")) {
|
||||
TabooLibraryModule.getInst().register(new ModuleKits());
|
||||
}
|
||||
if (isEnableModule("CommandChanger")) {
|
||||
TabooLibraryModule.getInst().register(new ModuleCommandChanger());
|
||||
}
|
||||
if (isEnableModule("InventorySave")) {
|
||||
TabooLibraryModule.getInst().register(new ModuleInventorySave());
|
||||
}
|
||||
|
||||
// 载入模块
|
||||
TabooLibraryModule.getInst().loadModules();
|
||||
|
||||
// 提示
|
||||
MsgUtils.send("载入 &f" + TabooLibraryModule.getInst().getSize() + " &7个 &fTLM &7模块");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 TLM 对象
|
||||
*
|
||||
* @return TLM
|
||||
*/
|
||||
public static TLM getInst() {
|
||||
if (inst == null) {
|
||||
synchronized (TLM.class) {
|
||||
if (inst == null) {
|
||||
inst = new TLM();
|
||||
}
|
||||
}
|
||||
}
|
||||
return inst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 载入配置文件
|
||||
*/
|
||||
public void reloadConfig() {
|
||||
config = ConfigUtils.saveDefaultConfig(Main.getInst(), "module.yml");
|
||||
// 载入语言文件
|
||||
try {
|
||||
language = new Language2(config.getString("Language"), Main.getInst());
|
||||
} catch (Exception e) {
|
||||
MsgUtils.warn("语言文件不存在: &4" + config.getString("Language"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块是否启用
|
||||
*
|
||||
* @param name 名称
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean isEnableModule(String name) {
|
||||
return config.getStringList("EnableModule").contains(name);
|
||||
}
|
||||
}
|
||||
17
src/main/java/me/skymc/tlm/annotation/DisableConfig.java
Normal file
17
src/main/java/me/skymc/tlm/annotation/DisableConfig.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package me.skymc.tlm.annotation;
|
||||
|
||||
import static java.lang.annotation.ElementType.TYPE;
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RUNTIME)
|
||||
@Target(TYPE)
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月22日 下午3:59:30
|
||||
*/
|
||||
public @interface DisableConfig {
|
||||
|
||||
}
|
||||
66
src/main/java/me/skymc/tlm/command/TLMCommands.java
Normal file
66
src/main/java/me/skymc/tlm/command/TLMCommands.java
Normal file
@@ -0,0 +1,66 @@
|
||||
package me.skymc.tlm.command;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import me.skymc.tlm.TLM;
|
||||
import me.skymc.tlm.command.sub.TLMInvCommand;
|
||||
import me.skymc.tlm.command.sub.TLMKitCommand;
|
||||
import me.skymc.tlm.command.sub.TLMListCommand;
|
||||
import me.skymc.tlm.command.sub.TLMReloadCommand;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月18日 上午12:02:08
|
||||
*/
|
||||
public class TLMCommands implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command arg1, String arg2, String[] args) {
|
||||
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 (sender.hasPermission("taboolib.admin")) {
|
||||
new TLMReloadCommand(sender, args);
|
||||
} else {
|
||||
TLM.getInst().getLanguage().get("NOPERMISSION-RELOAD").send(sender);
|
||||
}
|
||||
}
|
||||
|
||||
// 列出
|
||||
else if (args[0].equalsIgnoreCase("list")) {
|
||||
if (sender.hasPermission("taboolib.admin")) {
|
||||
new TLMListCommand(sender, args);
|
||||
} else {
|
||||
TLM.getInst().getLanguage().get("NOPERMISSION-LIST").send(sender);
|
||||
}
|
||||
}
|
||||
|
||||
// InventorySave 模块
|
||||
else if (args[0].equalsIgnoreCase("inv")) {
|
||||
if (sender.hasPermission("taboolib.admin")) {
|
||||
new TLMInvCommand(sender, args);
|
||||
} else {
|
||||
TLM.getInst().getLanguage().get("NOPERMISSION-INV").send(sender);
|
||||
}
|
||||
}
|
||||
|
||||
// Kit 模块
|
||||
else if (args[0].equalsIgnoreCase("kit")) {
|
||||
new TLMKitCommand(sender, args);
|
||||
}
|
||||
|
||||
else {
|
||||
TLM.getInst().getLanguage().get("COMMAND-ERROR").send(sender);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
202
src/main/java/me/skymc/tlm/command/sub/TLMInvCommand.java
Normal file
202
src/main/java/me/skymc/tlm/command/sub/TLMInvCommand.java
Normal file
@@ -0,0 +1,202 @@
|
||||
package me.skymc.tlm.command.sub;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import me.skymc.tlm.TLM;
|
||||
import me.skymc.tlm.inventory.TLMInventoryHolder;
|
||||
import me.skymc.tlm.module.TabooLibraryModule;
|
||||
import me.skymc.tlm.module.sub.ModuleInventorySave;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月18日 下午2:53:58
|
||||
*/
|
||||
public class TLMInvCommand extends SubCommand {
|
||||
|
||||
/**
|
||||
* @param sender
|
||||
* @param args
|
||||
*/
|
||||
public TLMInvCommand(CommandSender sender, String[] args) {
|
||||
super(sender, args);
|
||||
if (TabooLibraryModule.getInst().valueOf("InventorySave") == null) {
|
||||
TLM.getInst().getLanguage().get("INV-DISABLE").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取模块
|
||||
ModuleInventorySave moduleInventorySave = (ModuleInventorySave) TabooLibraryModule.getInst().valueOf("InventorySave");
|
||||
|
||||
// 判断命令
|
||||
if (args.length == 1) {
|
||||
TLM.getInst().getLanguage().get("INV-EMPTY").send(sender);
|
||||
}
|
||||
|
||||
// 列出背包
|
||||
else if (args[1].equalsIgnoreCase("list")) {
|
||||
TLM.getInst().getLanguage().get("INV-LIST").addPlaceholder("$name", moduleInventorySave.getInventorys().toString()).send(sender);
|
||||
}
|
||||
|
||||
// 查看背包
|
||||
else if (args[1].equalsIgnoreCase("info")) {
|
||||
// 如果是后台
|
||||
if (!(sender instanceof Player)) {
|
||||
TLM.getInst().getLanguage().get("INV-CONSOLE").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断长度
|
||||
if (args.length < 3) {
|
||||
TLM.getInst().getLanguage().get("INV-NAME").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断背包
|
||||
if (!moduleInventorySave.getInventorys().contains(args[2])) {
|
||||
TLM.getInst().getLanguage().get("INV-NOTFOUND").addPlaceholder("$name", args[2]).send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取玩家
|
||||
Player player = (Player) sender;
|
||||
|
||||
// 获取物品
|
||||
List<ItemStack> items = moduleInventorySave.getItems(args[2]);
|
||||
|
||||
// 打开界面
|
||||
Inventory inv = Bukkit.createInventory(new TLMInventoryHolder("InventorySave"), 54, TLM.getInst().getLanguage().get("INV-INFO-TITLE")
|
||||
.addPlaceholder("$name", args[2])
|
||||
.asString());
|
||||
|
||||
// 设置物品
|
||||
ItemStack barrier = ItemUtils.setName(new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) 15), "§f");
|
||||
|
||||
for (int i = 9 ; i < 18 ; i++) {
|
||||
inv.setItem(i, barrier);
|
||||
}
|
||||
|
||||
for (int i = 9 ; i < 35 ; i++) {
|
||||
inv.setItem(i + 9, items.get(i));
|
||||
}
|
||||
|
||||
for (int i = 0 ; i < 9 ; i++) {
|
||||
inv.setItem(i + 45, items.get(i));
|
||||
}
|
||||
|
||||
inv.setItem(1, items.get(39));
|
||||
inv.setItem(2, items.get(38));
|
||||
inv.setItem(3, items.get(37));
|
||||
inv.setItem(4, items.get(36));
|
||||
|
||||
// 判断版本
|
||||
if (items.size() == 41) {
|
||||
inv.setItem(6, items.get(40));
|
||||
}
|
||||
|
||||
// 打开背包
|
||||
player.openInventory(inv);
|
||||
}
|
||||
|
||||
// 保存背包
|
||||
else if (args[1].equalsIgnoreCase("save")) {
|
||||
// 如果是后台
|
||||
if (!(sender instanceof Player)) {
|
||||
TLM.getInst().getLanguage().get("INV-CONSOLE").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断长度
|
||||
if (args.length < 3) {
|
||||
TLM.getInst().getLanguage().get("INV-NAME").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取玩家
|
||||
Player player = (Player) sender;
|
||||
|
||||
// 保存背包
|
||||
moduleInventorySave.saveInventory(player, args[2]);
|
||||
|
||||
// 提示信息
|
||||
TLM.getInst().getLanguage().get("INV-SAVE").addPlaceholder("$name", args[2]).send(player);
|
||||
}
|
||||
|
||||
// 覆盖背包
|
||||
else if (args[1].equalsIgnoreCase("paste")) {
|
||||
// 判断长度
|
||||
if (args.length < 3) {
|
||||
TLM.getInst().getLanguage().get("INV-NAME").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断背包
|
||||
if (!moduleInventorySave.getInventorys().contains(args[2])) {
|
||||
TLM.getInst().getLanguage().get("INV-NOTFOUND").addPlaceholder("$name", args[2]).send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取玩家
|
||||
Player player;
|
||||
if (args.length > 3) {
|
||||
player = Bukkit.getPlayerExact(args[3]);
|
||||
// 玩家不存在
|
||||
if (player == null) {
|
||||
TLM.getInst().getLanguage().get("INV-OFFLINE").addPlaceholder("$name", args[3]).send(sender);
|
||||
return;
|
||||
}
|
||||
} else if (sender instanceof Player) {
|
||||
player = (Player) sender;
|
||||
} else {
|
||||
TLM.getInst().getLanguage().get("INV-CONSOLE").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 覆盖背包
|
||||
moduleInventorySave.pasteInventory(player, args[2]);
|
||||
|
||||
// 如果是玩家
|
||||
if (sender instanceof Player) {
|
||||
// 提示信息
|
||||
TLM.getInst().getLanguage().get("INV-PASTE")
|
||||
.addPlaceholder("$name", args[2])
|
||||
.addPlaceholder("$player", player.getName())
|
||||
.send(player);
|
||||
}
|
||||
}
|
||||
|
||||
// 删除背包
|
||||
else if (args[1].equalsIgnoreCase("delete")) {
|
||||
// 判断长度
|
||||
if (args.length < 3) {
|
||||
TLM.getInst().getLanguage().get("INV-NAME").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断背包
|
||||
if (!moduleInventorySave.getInventorys().contains(args[2])) {
|
||||
TLM.getInst().getLanguage().get("INV-NOTFOUND").addPlaceholder("$name", args[2]).send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 删除
|
||||
moduleInventorySave.deleteInventory(args[2]);
|
||||
|
||||
// 提示信息
|
||||
TLM.getInst().getLanguage().get("KIT-DELETE").addPlaceholder("$name", args[2]).send(sender);
|
||||
}
|
||||
|
||||
else {
|
||||
TLM.getInst().getLanguage().get("INV-EMPTY").send(sender);
|
||||
}
|
||||
}
|
||||
}
|
||||
177
src/main/java/me/skymc/tlm/command/sub/TLMKitCommand.java
Normal file
177
src/main/java/me/skymc/tlm/command/sub/TLMKitCommand.java
Normal file
@@ -0,0 +1,177 @@
|
||||
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年2月18日 下午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;
|
||||
}
|
||||
|
||||
// 获取模块
|
||||
ModuleKits moduleKits = (ModuleKits) TabooLibraryModule.getInst().valueOf("Kits");
|
||||
|
||||
// 判断命令
|
||||
if (args.length == 1) {
|
||||
TLM.getInst().getLanguage().get("KIT-EMPTY").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
else if (args[1].equalsIgnoreCase("list")) {
|
||||
// 判断权限
|
||||
if (!sender.hasPermission("taboolib.kit.list")) {
|
||||
TLM.getInst().getLanguage().get("NOPERMISSION-KIT-LIST").send(sender);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
TLM.getInst().getLanguage().get("KIT-LIST")
|
||||
.addPlaceholder("$kits", moduleKits.getConfig().getConfigurationSection("Kits").getKeys(false).toString())
|
||||
.send(sender);
|
||||
}
|
||||
}
|
||||
|
||||
else if (args[1].equalsIgnoreCase("reward")) {
|
||||
// 判断权限
|
||||
if (!sender.hasPermission("taboolib.kit.reward")) {
|
||||
TLM.getInst().getLanguage().get("NOPERMISSION-KIT-REWARD").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查礼包
|
||||
if (args.length < 3) {
|
||||
TLM.getInst().getLanguage().get("KIT-NAME").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 礼包不存在
|
||||
if (!moduleKits.contains(args[2])) {
|
||||
TLM.getInst().getLanguage().get("KIT-NOTFOUND").addPlaceholder("$kit", args[2]).send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取玩家
|
||||
Player player;
|
||||
if (args.length > 3) {
|
||||
player = Bukkit.getPlayerExact(args[3]);
|
||||
// 玩家不存在
|
||||
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;
|
||||
}
|
||||
|
||||
// 是否领取
|
||||
if (moduleKits.isPlayerRewared(player, args[2])) {
|
||||
// 是否只能领取一次
|
||||
if (moduleKits.isDisposable(args[2])) {
|
||||
TLM.getInst().getLanguage().get("KIT-DISPOSABLE").addPlaceholder("$kit", args[2]).send(sender);
|
||||
return;
|
||||
}
|
||||
// 是否冷却中
|
||||
if (moduleKits.isPlayerCooldown(player, args[2])) {
|
||||
TLM.getInst().getLanguage().get("KIT-COOLDOWN").addPlaceholder("$kit", args[2]).send(sender);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 是否有权限领取
|
||||
String permission = moduleKits.getPermission(args[2]);
|
||||
if (permission != null && !player.hasPermission(permission)) {
|
||||
// 提示信息
|
||||
player.sendMessage(moduleKits.getPermissionMessage(args[2]));
|
||||
return;
|
||||
}
|
||||
|
||||
// 发送礼包
|
||||
List<ItemStack> items = moduleKits.getItems(args[2]);
|
||||
for (ItemStack item : items) {
|
||||
// 给予物品
|
||||
HashMap<Integer, ItemStack> result = player.getInventory().addItem(item);
|
||||
// 如果背包空间不足
|
||||
if (result.size() > 0 && moduleKits.isFullDrop(args[2])) {
|
||||
// 掉落物品
|
||||
player.getWorld().dropItem(player.getLocation(), item);
|
||||
}
|
||||
}
|
||||
|
||||
// 执行命令
|
||||
for (String command : moduleKits.getCommands(args[2])) {
|
||||
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command.replace("$player", player.getName()));
|
||||
}
|
||||
|
||||
// 已领取
|
||||
moduleKits.setPlayerReward(player, args[2], true);
|
||||
|
||||
// 提示信息
|
||||
TLM.getInst().getLanguage().get("KIT-SUCCESS").addPlaceholder("$kit", args[2]).send(sender);
|
||||
}
|
||||
else if (args[1].equalsIgnoreCase("reset")) {
|
||||
// 判断权限
|
||||
if (!sender.hasPermission("taboolib.kit.reset")) {
|
||||
TLM.getInst().getLanguage().get("NOPERMISSION-KIT-RESET").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查礼包
|
||||
if (args.length < 3) {
|
||||
TLM.getInst().getLanguage().get("KIT-NAME").send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 礼包不存在
|
||||
if (!moduleKits.contains(args[2])) {
|
||||
TLM.getInst().getLanguage().get("KIT-NOTFOUND").addPlaceholder("$kit", args[2]).send(sender);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取玩家
|
||||
Player player;
|
||||
if (args.length > 3) {
|
||||
player = Bukkit.getPlayerExact(args[3]);
|
||||
// 玩家不存在
|
||||
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/java/me/skymc/tlm/command/sub/TLMListCommand.java
Normal file
32
src/main/java/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年2月18日 下午2:10:12
|
||||
*/
|
||||
public class TLMListCommand extends SubCommand {
|
||||
|
||||
/**
|
||||
* @param sender
|
||||
* @param args
|
||||
*/
|
||||
public TLMListCommand(CommandSender sender, String[] args) {
|
||||
super(sender, args);
|
||||
sender.sendMessage("§f");
|
||||
sender.sendMessage("§b§l----- §3§lTaooLibraryModule Modules §b§l-----");
|
||||
sender.sendMessage("§f");
|
||||
|
||||
for (ITabooLibraryModule module : TabooLibraryModule.getInst().keySet()) {
|
||||
sender.sendMessage("§f - §8" + module.getName());
|
||||
}
|
||||
|
||||
sender.sendMessage("§f");
|
||||
}
|
||||
|
||||
}
|
||||
49
src/main/java/me/skymc/tlm/command/sub/TLMReloadCommand.java
Normal file
49
src/main/java/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年2月18日 下午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参数错误。");
|
||||
}
|
||||
|
||||
else if (args[1].equalsIgnoreCase("tlm")) {
|
||||
TLM.getInst().reloadConfig();
|
||||
MsgUtils.send(sender, "&fTLM &7配置文件已重载。");
|
||||
}
|
||||
|
||||
else if (args[1].equalsIgnoreCase("all")) {
|
||||
TabooLibraryModule.getInst().reloadConfig();
|
||||
MsgUtils.send(sender, "所有模块配置文件已重载。");
|
||||
}
|
||||
|
||||
else {
|
||||
ITabooLibraryModule module = TabooLibraryModule.getInst().valueOf(args[1]);
|
||||
if (module == null) {
|
||||
MsgUtils.send(sender, "&4模块 &c" + args[1] + " &4不存在。");
|
||||
}
|
||||
else {
|
||||
TabooLibraryModule.getInst().reloadConfig(module, true);
|
||||
MsgUtils.send(sender, "模块 &f" + args[1] + " &7的配置文件已重载。");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
35
src/main/java/me/skymc/tlm/inventory/TLMInventoryHolder.java
Normal file
35
src/main/java/me/skymc/tlm/inventory/TLMInventoryHolder.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package me.skymc.tlm.inventory;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月22日 下午3:34:59
|
||||
*/
|
||||
public class TLMInventoryHolder implements InventoryHolder {
|
||||
|
||||
@Getter
|
||||
private String module;
|
||||
|
||||
@Getter
|
||||
private HashMap<String, Object> holderData = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param module 模块名
|
||||
*/
|
||||
public TLMInventoryHolder(String module) {
|
||||
this.module = module;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Inventory getInventory() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
22
src/main/java/me/skymc/tlm/module/ITabooLibraryModule.java
Normal file
22
src/main/java/me/skymc/tlm/module/ITabooLibraryModule.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package me.skymc.tlm.module;
|
||||
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月17日 下午11:22:42
|
||||
*/
|
||||
public abstract interface ITabooLibraryModule {
|
||||
|
||||
default void onEnable() {}
|
||||
|
||||
default void onDisable() {}
|
||||
|
||||
default void onReload() {};
|
||||
|
||||
abstract String getName();
|
||||
|
||||
default FileConfiguration getConfig() {
|
||||
return TabooLibraryModule.getInst().getConfig(this);
|
||||
}
|
||||
}
|
||||
101
src/main/java/me/skymc/tlm/module/TabooLibraryModule.java
Normal file
101
src/main/java/me/skymc/tlm/module/TabooLibraryModule.java
Normal file
@@ -0,0 +1,101 @@
|
||||
package me.skymc.tlm.module;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.tlm.annotation.DisableConfig;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月17日 下午11:22:48
|
||||
*/
|
||||
public class TabooLibraryModule {
|
||||
|
||||
private final HashMap<ITabooLibraryModule, FileConfiguration> TLM_MODULE = new HashMap<>();
|
||||
private static TabooLibraryModule inst = null;
|
||||
|
||||
private TabooLibraryModule() {
|
||||
|
||||
}
|
||||
|
||||
public static TabooLibraryModule getInst() {
|
||||
if (inst == null) {
|
||||
synchronized (TabooLibraryModule.class) {
|
||||
if (inst == null) {
|
||||
inst = new TabooLibraryModule();
|
||||
}
|
||||
}
|
||||
}
|
||||
return inst;
|
||||
}
|
||||
|
||||
public void register(ITabooLibraryModule module) {
|
||||
if (!TLM_MODULE.containsKey(module)) {
|
||||
TLM_MODULE.put(module, new YamlConfiguration());
|
||||
reloadConfig(module, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void loadModules() {
|
||||
for (ITabooLibraryModule module : TLM_MODULE.keySet()) {
|
||||
module.onEnable();
|
||||
if (module instanceof Listener) {
|
||||
Bukkit.getPluginManager().registerEvents((Listener) module, Main.getInst());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void unloadModules() {
|
||||
TLM_MODULE.keySet().forEach(x -> x.onDisable());
|
||||
}
|
||||
|
||||
public void reloadConfig() {
|
||||
TLM_MODULE.keySet().forEach(x -> reloadConfig(x, true));
|
||||
}
|
||||
|
||||
public void reloadConfig(ITabooLibraryModule module, boolean isReload) {
|
||||
if (module.getName() == null || module.getClass().getAnnotation(DisableConfig.class) != null) {
|
||||
return;
|
||||
}
|
||||
File file = new File(Main.getInst().getDataFolder(), "TLM/" + module.getName() + ".yml");
|
||||
if (!file.exists()) {
|
||||
Main.getInst().saveResource("TLM/" + module.getName() + ".yml", true);
|
||||
}
|
||||
try {
|
||||
TLM_MODULE.get(module).load(file);
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
}
|
||||
if (isReload) {
|
||||
module.onReload();
|
||||
}
|
||||
}
|
||||
|
||||
public FileConfiguration getConfig(ITabooLibraryModule module) {
|
||||
return TLM_MODULE.get(module);
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return TLM_MODULE.size();
|
||||
}
|
||||
|
||||
public Set<ITabooLibraryModule> keySet() {
|
||||
return TLM_MODULE.keySet();
|
||||
}
|
||||
|
||||
public ITabooLibraryModule valueOf(String name) {
|
||||
for (ITabooLibraryModule module : TLM_MODULE.keySet()) {
|
||||
if (module.getName().equals(name)) {
|
||||
return module;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package me.skymc.tlm.module.sub;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.server.ServerCommandEvent;
|
||||
|
||||
import me.skymc.tlm.module.ITabooLibraryModule;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月22日 下午1:32:29
|
||||
*/
|
||||
public class ModuleCommandChanger implements ITabooLibraryModule, Listener {
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "CommandChanger";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void command(PlayerCommandPreprocessEvent e) {
|
||||
// 循环命令
|
||||
for (String id : getConfig().getConfigurationSection("Commands").getKeys(false)) {
|
||||
// 获取命令
|
||||
String key = getConfig().getString("Commands." + id + ".Input");
|
||||
// 判断命令
|
||||
if (e.getMessage().startsWith(key)) {
|
||||
// 判断执行方式
|
||||
if (!getConfig().contains("Commands." + id + ".ReplaceMode") || getConfig().getString("Commands." + id + ".ReplaceMode").equals("PLAYER")) {
|
||||
// 替换命令
|
||||
e.setMessage(e.getMessage().replace(key, getConfig().getString("Commands." + id + ".Replace")));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void command(ServerCommandEvent e) {
|
||||
// 循环命令
|
||||
for (String id : getConfig().getConfigurationSection("Commands").getKeys(false)) {
|
||||
// 获取命令
|
||||
String key = getConfig().getString("Commands." + id + ".Input");
|
||||
// 判断命令
|
||||
if (e.getCommand().startsWith(key)) {
|
||||
// 判断执行方式
|
||||
if (!getConfig().contains("Commands." + id + ".ReplaceMode") || getConfig().getString("Commands." + id + ".ReplaceMode").equals("CONSOLE")) {
|
||||
// 替换命令
|
||||
e.setCommand(e.getCommand().replace(key, getConfig().getString("Commands." + id + ".Replace")));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
155
src/main/java/me/skymc/tlm/module/sub/ModuleInventorySave.java
Normal file
155
src/main/java/me/skymc/tlm/module/sub/ModuleInventorySave.java
Normal file
@@ -0,0 +1,155 @@
|
||||
package me.skymc.tlm.module.sub;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
import me.skymc.tlm.annotation.DisableConfig;
|
||||
import me.skymc.tlm.inventory.TLMInventoryHolder;
|
||||
import me.skymc.tlm.module.ITabooLibraryModule;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月22日 下午2:48:27
|
||||
*/
|
||||
@DisableConfig
|
||||
public class ModuleInventorySave implements ITabooLibraryModule, Listener {
|
||||
|
||||
private FileConfiguration conf;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "InventorySave";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
reloadConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReload() {
|
||||
reloadConfig();
|
||||
}
|
||||
|
||||
public void reloadConfig() {
|
||||
conf = DataUtils.addPluginData("InventorySave", Main.getInst());
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存玩家背包
|
||||
*
|
||||
* @param player 玩家
|
||||
* @param name 名称
|
||||
*/
|
||||
public void saveInventory(Player player, String name) {
|
||||
// 设置物品
|
||||
for (int i = 0 ; i < (TabooLib.getVerint() > 10800 ? 41 : 40) ; i++) {
|
||||
ItemStack item = player.getInventory().getItem(i);
|
||||
conf.set(name + "." + i, item == null ? new ItemStack(Material.AIR) : item.clone());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 覆盖玩家背包
|
||||
*
|
||||
* @param player 玩家
|
||||
* @param name 名称
|
||||
*/
|
||||
public void pasteInventory(Player player, String name) {
|
||||
// 如果背包不存在
|
||||
if (!conf.contains(name)) {
|
||||
MsgUtils.warn("模块执行异常: &4背包不存在");
|
||||
MsgUtils.warn("模块: &4InventorySave");
|
||||
MsgUtils.warn("位于: &4" + name);
|
||||
return;
|
||||
}
|
||||
|
||||
// 设置物品
|
||||
for (int i = 0 ; i < (TabooLib.getVerint() > 10800 ? 41 : 40) ; i++) {
|
||||
try {
|
||||
ItemStack item = (ItemStack) conf.get(name + "." + i);
|
||||
player.getInventory().setItem(i, item);
|
||||
}
|
||||
catch (Exception e) {
|
||||
MsgUtils.warn("模块执行异常: &4物品覆盖出错");
|
||||
MsgUtils.warn("模块: &4InventorySave");
|
||||
MsgUtils.warn("位于: &4" + name + ":" + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取背包内所有物品
|
||||
*
|
||||
* @param name 背包名称
|
||||
* @return {@link List}
|
||||
*/
|
||||
public List<ItemStack> getItems(String name) {
|
||||
// 如果背包不存在
|
||||
if (!conf.contains(name)) {
|
||||
MsgUtils.warn("模块执行异常: &4背包不存在");
|
||||
MsgUtils.warn("模块: &4InventorySave");
|
||||
MsgUtils.warn("位于: &4" + name);
|
||||
return new LinkedList<>();
|
||||
}
|
||||
|
||||
List<ItemStack> items = new LinkedList<>();
|
||||
// 设置物品
|
||||
for (int i = 0 ; i < (TabooLib.getVerint() > 10800 ? 41 : 40) ; i++) {
|
||||
try {
|
||||
ItemStack item = (ItemStack) conf.get(name + "." + i);
|
||||
items.add(item);
|
||||
}
|
||||
catch (Exception e) {
|
||||
MsgUtils.warn("模块执行异常: &4物品获取出错");
|
||||
MsgUtils.warn("模块: &4InventorySave");
|
||||
MsgUtils.warn("位于: &4" + name + ":" + i);
|
||||
}
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有背包
|
||||
*
|
||||
* @return {@link Set}
|
||||
*/
|
||||
public Set<String> getInventorys() {
|
||||
return conf.getConfigurationSection("").getKeys(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除背包
|
||||
*
|
||||
* @param name 名称
|
||||
*/
|
||||
public void deleteInventory(String name) {
|
||||
conf.set(name, null);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClick(InventoryClickEvent e) {
|
||||
if (!(e.getInventory().getHolder() instanceof TLMInventoryHolder)) {
|
||||
return;
|
||||
}
|
||||
|
||||
TLMInventoryHolder holder = (TLMInventoryHolder) e.getInventory().getHolder();
|
||||
if (holder.getModule().equals(getName())) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
171
src/main/java/me/skymc/tlm/module/sub/ModuleKits.java
Normal file
171
src/main/java/me/skymc/tlm/module/sub/ModuleKits.java
Normal file
@@ -0,0 +1,171 @@
|
||||
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 lombok.Getter;
|
||||
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年2月18日 下午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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置玩家是否领取礼包
|
||||
*
|
||||
* @param player 玩家
|
||||
*/
|
||||
public void setPlayerReward(Player player, String kit, boolean reward) {
|
||||
data.set(kit + "." + player.getName(), reward ? System.currentTimeMillis() : null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空礼包数据
|
||||
*
|
||||
* @param kit 礼包
|
||||
*/
|
||||
public void resetKit(String kit) {
|
||||
data.set(kit, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家是否领取礼包
|
||||
*
|
||||
* @param player 玩家
|
||||
* @param kit 礼包
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean isPlayerRewared(Player player, String kit) {
|
||||
return data.contains(kit + "." + player.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* 礼包是否在冷却中
|
||||
*
|
||||
* @param player
|
||||
* @param kit
|
||||
* @return
|
||||
*/
|
||||
public boolean isPlayerCooldown(Player player, String kit) {
|
||||
return System.currentTimeMillis() - data.getLong(kit + "." + player.getName()) < getCooldown(kit);
|
||||
}
|
||||
|
||||
/**
|
||||
* 礼包是否存在
|
||||
*
|
||||
* @param kit 礼包名
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean contains(String kit) {
|
||||
return getConfig().contains("Kits." + kit);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取礼包冷却时间
|
||||
*
|
||||
* @param kit 礼包名
|
||||
* @return long
|
||||
*/
|
||||
public long getCooldown(String kit) {
|
||||
return DateUtils.formatDate(getConfig().getString("Kits." + kit + ".Cooldown"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取礼包空间不足时的处理方式
|
||||
*
|
||||
* @param kit 礼包名
|
||||
* @return boolean
|
||||
*/
|
||||
public Boolean isFullDrop(String kit) {
|
||||
return getConfig().getBoolean("Kits." + kit + ".FullDrop");
|
||||
}
|
||||
|
||||
/**
|
||||
* 礼包是否只能领取一次
|
||||
*
|
||||
* @param kit 礼包名
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean isDisposable(String kit) {
|
||||
return getConfig().getBoolean("Kits." + kit + ".Disposable");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取礼包权限
|
||||
*
|
||||
* @param kit 礼包名
|
||||
* @return String
|
||||
*/
|
||||
public String getPermission(String kit) {
|
||||
return getConfig().getString("Kits." + kit + ".Permission");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取礼包权限提示
|
||||
*
|
||||
* @param kit 礼包名
|
||||
* @return String
|
||||
*/
|
||||
public String getPermissionMessage(String kit) {
|
||||
return getConfig().getString("Kits." + kit + ".Permission-message").replace("&", "§");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取礼包物品
|
||||
*
|
||||
* @param kit 礼包名
|
||||
* @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("模块配置载入异常: &4物品数量错误");
|
||||
MsgUtils.warn("模块: &4Kits");
|
||||
MsgUtils.warn("位于: &4" + itemStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取礼包命令
|
||||
*
|
||||
* @param kit 礼包名
|
||||
* @return {@link List}
|
||||
*/
|
||||
public List<String> getCommands(String kit) {
|
||||
return getConfig().contains("Kits." + kit + ".Commands") ? getConfig().getStringList("Kits." + kit + ".Commands") : new ArrayList<>();
|
||||
}
|
||||
}
|
||||
114
src/main/java/me/skymc/tlm/module/sub/ModuleTimeCycle.java
Normal file
114
src/main/java/me/skymc/tlm/module/sub/ModuleTimeCycle.java
Normal file
@@ -0,0 +1,114 @@
|
||||
package me.skymc.tlm.module.sub;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.other.DateUtils;
|
||||
import me.skymc.taboolib.other.NumberUtils;
|
||||
import me.skymc.taboolib.timecycle.TimeCycle;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleEvent;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleInitializeEvent;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleManager;
|
||||
import me.skymc.tlm.module.ITabooLibraryModule;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
* @since 2018年2月17日 下午11:23:38
|
||||
*/
|
||||
public class ModuleTimeCycle implements ITabooLibraryModule, Listener {
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "TimeCycle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// 载入检查器
|
||||
loadCycles();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
// 注销检查器
|
||||
unloadCycles();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReload() {
|
||||
// 注销检查器
|
||||
unloadCycles();
|
||||
// 载入检查器
|
||||
loadCycles();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onTimeCycleInitialize(TimeCycleInitializeEvent e) {
|
||||
if (e.getCycle().getName().contains("tlm|")) {
|
||||
// 获取名称
|
||||
String name = e.getCycle().getName().replace("tlm|", "");
|
||||
// 如果有初始化时间配置
|
||||
if (getConfig().contains("TimeCycle." + name + ".Initialise.InitialiseDate")) {
|
||||
// 获取时间
|
||||
Calendar date = Calendar.getInstance();
|
||||
// 遍历初始化规则
|
||||
for (String typeStr : getConfig().getStringList("TimeCycle." + name + ".Initialise.InitialiseDate")) {
|
||||
try {
|
||||
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("模块配置载入异常: &4日期类型错误");
|
||||
MsgUtils.warn("模块: &4TimeCycle");
|
||||
MsgUtils.warn("位于: &4" + typeStr);
|
||||
}
|
||||
}
|
||||
e.setTimeLine(date.getTimeInMillis());
|
||||
}
|
||||
// 如果有初始化命令
|
||||
if (getConfig().contains("TimeCycle." + name + ".Initialise.InitialiseCommand")) {
|
||||
// 遍历初始化命令
|
||||
for (String command : getConfig().getStringList("TimeCycle." + name + ".Initialise.InitialiseCommand")) {
|
||||
// 执行命令
|
||||
Bukkit.getScheduler().runTask(Main.getInst(), () -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onTimeCycle(TimeCycleEvent e) {
|
||||
if (e.getCycle().getName().contains("tlm|")) {
|
||||
// 获取名称
|
||||
String name = e.getCycle().getName().replace("tlm|", "");
|
||||
// 如果有更新命令
|
||||
if (getConfig().contains("TimeCycle." + name + ".UpdateCommand")) {
|
||||
// 遍历更新命令
|
||||
for (String command : getConfig().getStringList("TimeCycle." + name + ".UpdateCommand")) {
|
||||
// 执行命令
|
||||
Bukkit.getScheduler().runTask(Main.getInst(), () -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void loadCycles() {
|
||||
for (String name : getConfig().getConfigurationSection("TimeCycle").getKeys(false)) {
|
||||
TimeCycleManager.register(new TimeCycle("tlm|" + name, DateUtils.formatDate(getConfig().getString("TimeCycle." + name + ".Cycle")), Main.getInst()));
|
||||
}
|
||||
}
|
||||
|
||||
private void unloadCycles() {
|
||||
for (TimeCycle cycle : TimeCycleManager.getTimeCycles()) {
|
||||
if (cycle.getName().startsWith("tlm|")) {
|
||||
TimeCycleManager.cancel(cycle.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user