From c472ca57cab06df0a4c9d1e596eedbbcee89489e Mon Sep 17 00:00:00 2001 From: wisdommen <41609381+wisdommen@users.noreply.github.com> Date: Tue, 16 Jan 2024 19:11:36 +1100 Subject: [PATCH] Revert "Release 6.0.5" --- BasicFunctions/pom.xml | 24 +- .../com/ultikits/plugins/BasicFunctions.java | 104 ++- .../plugins/commands/BackCommands.java | 19 +- .../plugins/commands/BanCommands.java | 8 +- .../plugins/commands/FlyCommands.java | 23 +- .../plugins/commands/GMChangeCommand.java | 88 ++- .../plugins/commands/HealCommand.java | 32 +- .../plugins/commands/HideCommands.java | 69 -- .../plugins/commands/LoreCommands.java | 152 ---- .../plugins/commands/RandomTpCommands.java | 24 +- .../plugins/commands/SetSpawnCommands.java | 38 - .../plugins/commands/SpawnCommands.java | 37 - .../plugins/commands/SpeedCommands.java | 44 +- .../plugins/commands/TpaCommands.java | 130 ++-- .../plugins/commands/TpaHereCommands.java | 122 +-- .../plugins/commands/WarpCommands.java | 96 --- .../plugins/commands/WhitelistCommands.java | 118 +-- .../ultikits/plugins/config/BasicConfig.java | 12 - .../plugins/config/DeathPunishmentConfig.java | 41 - .../plugins/config/PlayerNameTagConfig.java | 25 - .../ultikits/plugins/config/WarpConfig.java | 23 - .../com/ultikits/plugins/data/WarpData.java | 23 - .../ultikits/plugins/data/WhiteListData.java | 2 - .../com/ultikits/plugins/guis/WarpGui.java | 52 -- .../plugins/listeners/BackListener.java | 2 - .../plugins/listeners/BanListener.java | 6 +- .../plugins/listeners/DeathListener.java | 45 -- .../plugins/listeners/HideListener.java | 15 - .../listeners/JoinWelcomeListener.java | 2 - .../listeners/PlayerNameTagListener.java | 32 - .../plugins/listeners/WhitelistListener.java | 6 +- .../plugins/services/DeathPunishService.java | 55 -- .../plugins/services/WarpService.java | 117 --- .../plugins/services/WhiteListService.java | 2 - .../plugins/tasks/DeathPunishmentTask.java | 87 --- .../plugins/tasks/NamePrefixSuffixTask.java | 30 - .../ultikits/plugins/utils/TitlesUtils.java | 49 -- .../src/main/resources/config/config.yml | 12 - .../src/main/resources/config/death.yml | 38 - .../src/main/resources/config/title.yml | 8 - .../src/main/resources/config/warp.yml | 6 - .../src/main/resources/lang/en.json | 35 +- BasicFunctions/src/main/resources/plugin.yml | 2 +- Economy/pom.xml | 4 +- Home/pom.xml | 8 +- .../com/ultikits/plugins/home/PluginMain.java | 10 +- .../plugins/home/commands/HomeCommands.java | 9 +- .../plugins/home/gui/HomeListGui.java | 8 +- Home/src/main/resources/plugin.yml | 2 +- MysqlConnector/pom.xml | 2 +- Sidebar/pom.xml | 8 +- .../plugins/sidebar/PlayerJoinListener.java | 16 +- .../ultikits/plugins/sidebar/SbCommand.java | 37 - .../plugins/sidebar/SidebarConfig.java | 8 +- .../plugins/sidebar/SidebarPlugin.java | 28 +- .../ultikits/plugins/sidebar/UpdateTask.java | 14 +- Sidebar/src/main/resources/plugin.yml | 4 +- UltiTools-API/pom.xml | 62 +- .../com/ultikits/ultitools/UltiTools.java | 55 +- .../abstracts/AbstractCommendExecutor.java | 269 ++++--- .../ultitools/abstracts/UltiToolsPlugin.java | 87 +-- .../abstracts/guis/OkCancelPage.java | 7 +- .../ultitools/abstracts/guis/PagingPage.java | 18 +- .../annotations/EnableAutoRegister.java | 6 +- .../ultitools/annotations/EventListener.java | 10 +- .../ultikits/ultitools/annotations/I18n.java | 8 +- .../annotations/UltiToolsModule.java | 36 - .../annotations/command/CmdExecutor.java | 8 - .../commands/PluginInstallCommands.java | 4 +- .../ultitools/commands/UltiToolsCommands.java | 5 +- .../entities/common/WorldLocation.java | 5 - .../ultitools/interfaces/IPlugin.java | 3 +- .../ultitools/interfaces/Localized.java | 6 +- .../interfaces/TempEventHandler.java | 8 - .../ultitools/interfaces/TempListener.java | 12 - .../interfaces/impl/PlayerTempListener.java | 55 -- .../impl/SimpleJsonDataOperator.java | 2 +- .../interfaces/impl/SimpleTempListener.java | 41 - .../listeners/PlayerJoinListener.java | 54 -- .../ultitools/manager/CommandManager.java | 112 +-- .../ultitools/manager/DataStoreManager.java | 2 +- .../ultitools/manager/ListenerManager.java | 14 - .../ultitools/manager/PluginManager.java | 59 +- .../ultikits/ultitools/utils/CommonUtils.java | 12 - .../com/ultikits/ultitools/utils/Metrics.java | 713 ------------------ UltiTools-API/src/main/resources/env.yml | 69 +- UltiTools-API/src/main/resources/lang/en.json | 2 +- UltiTools-API/src/main/resources/plugin.yml | 5 +- 88 files changed, 741 insertions(+), 3021 deletions(-) delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/commands/HideCommands.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/commands/LoreCommands.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/commands/SetSpawnCommands.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/commands/SpawnCommands.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/commands/WarpCommands.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/config/DeathPunishmentConfig.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/config/PlayerNameTagConfig.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/config/WarpConfig.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/data/WarpData.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/guis/WarpGui.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/listeners/DeathListener.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/listeners/HideListener.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/listeners/PlayerNameTagListener.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/services/DeathPunishService.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/services/WarpService.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/tasks/DeathPunishmentTask.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/tasks/NamePrefixSuffixTask.java delete mode 100644 BasicFunctions/src/main/java/com/ultikits/plugins/utils/TitlesUtils.java delete mode 100644 BasicFunctions/src/main/resources/config/death.yml delete mode 100644 BasicFunctions/src/main/resources/config/title.yml delete mode 100644 BasicFunctions/src/main/resources/config/warp.yml delete mode 100644 Sidebar/src/main/java/com/ultikits/plugins/sidebar/SbCommand.java delete mode 100644 UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/UltiToolsModule.java delete mode 100644 UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/TempEventHandler.java delete mode 100644 UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/TempListener.java delete mode 100644 UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/PlayerTempListener.java delete mode 100644 UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleTempListener.java delete mode 100644 UltiTools-API/src/main/java/com/ultikits/ultitools/listeners/PlayerJoinListener.java delete mode 100644 UltiTools-API/src/main/java/com/ultikits/ultitools/utils/Metrics.java diff --git a/BasicFunctions/pom.xml b/BasicFunctions/pom.xml index ae5173e..4643b70 100644 --- a/BasicFunctions/pom.xml +++ b/BasicFunctions/pom.xml @@ -6,7 +6,7 @@ com.ultikits.plugins BasicFunctions - 1.0.4 + 1.0.0 8 @@ -18,7 +18,7 @@ com.ultikits UltiTools-API - 6.0.5 + 6.0.3 provided @@ -45,25 +45,9 @@ 1.18.24 provided - - com.nametagedit - nametagedit - 4.4.16 - provided - - - com.github.BlueMap-Minecraft - BlueMapAPI - v2.6.2 - provided - - - upstream - https://ci.nametagedit.com/plugin/repository/everything/ - spigotmc-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ @@ -92,9 +76,9 @@ BasicFunctions UltiTools-Basic-Functions - 开服必装!所有的杂七杂八的小功能哦!包括不限于TPA,飞行,模式更改,白名单,随机传送。 + All basic functions of the UltiTools access_key.txt - F:\SpigotServers\Paper\1.20.4\plugins\UltiTools\plugins + F:\SpigotServers\Servers\1.20.4\plugins\UltiTools\plugins diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/BasicFunctions.java b/BasicFunctions/src/main/java/com/ultikits/plugins/BasicFunctions.java index 210a0da..dc6303e 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/BasicFunctions.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/BasicFunctions.java @@ -3,22 +3,25 @@ package com.ultikits.plugins; import com.ultikits.plugins.commands.*; import com.ultikits.plugins.config.BasicConfig; import com.ultikits.plugins.config.JoinWelcomeConfig; -import com.ultikits.plugins.config.PlayerNameTagConfig; -import com.ultikits.plugins.config.WarpConfig; -import com.ultikits.plugins.listeners.*; -import com.ultikits.plugins.services.WarpService; -import com.ultikits.plugins.tasks.NamePrefixSuffixTask; -import com.ultikits.ultitools.UltiTools; +import com.ultikits.plugins.listeners.BackListener; +import com.ultikits.plugins.listeners.BanListener; +import com.ultikits.plugins.listeners.JoinWelcomeListener; +import com.ultikits.plugins.listeners.WhitelistListener; import com.ultikits.ultitools.abstracts.AbstractConfigEntity; import com.ultikits.ultitools.abstracts.UltiToolsPlugin; -import com.ultikits.ultitools.annotations.UltiToolsModule; -import de.bluecolored.bluemap.api.BlueMapAPI; +//import com.ultikits.ultitools.annotations.ContextEntry; +//import com.ultikits.ultitools.annotations.EnableAutoRegister; import lombok.Getter; +import java.io.IOException; import java.util.Arrays; import java.util.List; -@UltiToolsModule +//@EnableAutoRegister( +// scanPackage = "com.ultikits.plugins", +// eventListener = false, +// cmdExecutor = false +//) public class BasicFunctions extends UltiToolsPlugin { @Getter private static BasicFunctions instance; @@ -29,85 +32,74 @@ public class BasicFunctions extends UltiToolsPlugin { } @Override - public boolean registerSelf() { + public boolean registerSelf() throws IOException { BasicConfig configEntity = getConfigManager().getConfigEntity(this, BasicConfig.class); if (configEntity.isEnableHeal()) { - getCommandManager().register(this, HideCommands.class); + getCommandManager().register(new HealCommand(), "ultikits.tools.command.heal", i18n("指令治愈功能"), "heal", "h"); } if (configEntity.isEnableGmChange()) { - getCommandManager().register(this, GMChangeCommand.class); + getCommandManager().register(new GMChangeCommand(), "ultikits.tools.command.gm", i18n("游戏模式切换功能"), "gm"); } if (configEntity.isEnableBack()) { - getCommandManager().register(this, BackCommands.class); - getListenerManager().register(this, BackListener.class); + getCommandManager().register(new BackCommands(), "ultikits.tools.command.back", i18n("快捷返回功能"), "back"); + getListenerManager().register(this, new BackListener()); } if (configEntity.isEnableRandomTeleport()) { - getCommandManager().register(this, RandomTpCommands.class); + getCommandManager().register(new RandomTpCommands(), "ultikits.tools.command.wild", i18n("随机传送功能"), "wild"); } if (configEntity.isEnableFly()) { - getCommandManager().register(this, FlyCommands.class); + getCommandManager().register(new FlyCommands(), "ultikits.tools.command.fly", i18n("飞行功能"), "fly"); } if (configEntity.isEnableWhitelist()) { - getCommandManager().register(this, WhitelistCommands.class); - getListenerManager().register(this, WhitelistListener.class); + getCommandManager().register(new WhitelistCommands(), "ultikits.tools.whitelist", i18n("白名单功能"), "wl"); + getListenerManager().register(this, new WhitelistListener()); } if (configEntity.isEnableJoinWelcome()) { - getListenerManager().register(this, JoinWelcomeListener.class); + getListenerManager().register(this, new JoinWelcomeListener()); } if (configEntity.isEnableTpa()) { - getCommandManager().register(this, TpaCommands.class); - getCommandManager().register(this, TpaHereCommands.class); + getCommandManager().register(new TpaCommands(), "ultikits.tools.command.tpa", i18n("传送请求功能"), "tpa"); + getCommandManager().register(new TpaHereCommands(), "ultikits.tools.command.tphere", i18n("请求传送到此功能"), "tphere"); } if (configEntity.isEnableSpeed()) { - getCommandManager().register(this, SpeedCommands.class); + getCommandManager().register(new SpeedCommands(), "ultikits.tools.command.speed", i18n("速度设置功能"), "speed"); } if (configEntity.isEnableBan()) { - getCommandManager().register(this, BanCommands.class); - getListenerManager().register(this, BanListener.class); - } - if (configEntity.isEnableWarp()) { - getCommandManager().register(this, WarpCommands.class); - WarpConfig warpConfig = getConfigManager().getConfigEntity(this, WarpConfig.class); - if (warpConfig.isEnableBlueMap()) { - BlueMapAPI.onEnable(api -> { - WarpService warpService = getContext().getBean(WarpService.class); - warpService.initBlueMap(); - }); - } - } - if (configEntity.isEnableSpawn()) { - getCommandManager().register(this, SpawnCommands.class); - getCommandManager().register(this, SetSpawnCommands.class); - } - if (configEntity.isEnableLoreEditor()) { - getCommandManager().register(this, LoreCommands.class); - } - if (configEntity.isEnableHide()) { - getCommandManager().register(this, HideCommands.class); - getListenerManager().register(this, HideListener.class); - } - if (configEntity.isEnableTitle()) { - getListenerManager().register(this, PlayerNameTagListener.class); - int updateInterval = getConfig(PlayerNameTagConfig.class).getUpdateInterval(); - new NamePrefixSuffixTask().runTaskTimer(UltiTools.getInstance(), 0, updateInterval); - } - if (configEntity.isEnableDeathPunishment()) { - getListenerManager().register(this, DeathListener.class); + getCommandManager().register(new BanCommands(), "ultikits.tools.command.uban", i18n("封禁功能"), "uban"); + getListenerManager().register(this, new BanListener()); } return true; } + @Override + public void unregisterSelf() { + getCommandManager().unregister("heal"); + getCommandManager().unregister("gm"); + getCommandManager().unregister("back"); + getCommandManager().unregister("wild"); + getCommandManager().unregister("fly"); + getCommandManager().unregister("wl"); + getCommandManager().unregister("tpa"); + getCommandManager().unregister("tphere"); + getCommandManager().unregister("speed"); + getListenerManager().unregisterAll(this); + } + + @Override + public void reloadSelf() { + getConfigManager().reloadConfigs(this); + } + @Override public List supported() { - return Arrays.asList("zh", "en"); + return super.supported(); } @Override public List getAllConfigs() { return Arrays.asList( new BasicConfig("config/config.yml"), - new JoinWelcomeConfig("config/join.yml"), - new PlayerNameTagConfig("config/title.yml") + new JoinWelcomeConfig("config/join.yml") ); } } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/BackCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/BackCommands.java index fc1af0d..44b1278 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/BackCommands.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/BackCommands.java @@ -2,33 +2,28 @@ package com.ultikits.plugins.commands; import com.ultikits.plugins.BasicFunctions; import com.ultikits.plugins.listeners.BackListener; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.CmdExecutor; -import com.ultikits.ultitools.annotations.command.CmdMapping; -import com.ultikits.ultitools.annotations.command.CmdSender; -import com.ultikits.ultitools.annotations.command.CmdTarget; +import com.ultikits.ultitools.abstracts.AbstractPlayerCommandExecutor; import org.bukkit.Location; +import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import static com.ultikits.ultitools.utils.MessageUtils.warning; -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"back"}, manualRegister = true, permission = "ultikits.tools.command.back", description = "返回死亡地点") -public class BackCommands extends AbstractCommendExecutor { - - @CmdMapping(format = "") - public void back(@CmdSender Player player) { +public class BackCommands extends AbstractPlayerCommandExecutor { + @Override + protected boolean onPlayerCommand(Command command, String[] strings, Player player) { Location location = BackListener.getPlayerLastDeathLocation(player.getUniqueId()); if (location != null) { player.teleport(location); } else { player.sendMessage(warning(BasicFunctions.getInstance().i18n("无法找到死亡地点!这可能是因为插件重载或者你还没死过哩。"))); } + return true; } @Override - protected void handleHelp(CommandSender sender) { + protected void sendHelpMessage(CommandSender sender) { sender.sendMessage(BasicFunctions.getInstance().i18n("/back 返回死亡地点")); } } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/BanCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/BanCommands.java index 0b9df72..6276cbc 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/BanCommands.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/BanCommands.java @@ -11,10 +11,11 @@ import org.springframework.beans.factory.annotation.Autowired; @CmdTarget(CmdTarget.CmdTargetType.BOTH) -@CmdExecutor(permission = "ultikits.ban.command.all", description = "封禁功能", alias = {"uban"}, manualRegister = true) +@CmdExecutor(permission = "ultikits.ban.command.all", description = "Ban功能", alias = {"uban"}) public class BanCommands extends AbstractCommendExecutor { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") @Autowired - private BanPlayerService banPlayerService; + private BanPlayerService banPlayerService = new BanPlayerService(); @CmdMapping(format = "ban ") public void banPlayer(@CmdSender CommandSender sender, @CmdParam("player") String player, @CmdParam("reason") String reason) { @@ -35,7 +36,6 @@ public class BanCommands extends AbstractCommendExecutor { @Override protected void handleHelp(CommandSender sender) { - sender.sendMessage(BasicFunctions.getInstance().i18n("§c/uban ban §7封禁玩家")); - sender.sendMessage(BasicFunctions.getInstance().i18n("§c/uban unban §7解封玩家")); + } } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/FlyCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/FlyCommands.java index 585b152..69cb4c4 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/FlyCommands.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/FlyCommands.java @@ -1,30 +1,31 @@ package com.ultikits.plugins.commands; import com.ultikits.plugins.BasicFunctions; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.CmdExecutor; -import com.ultikits.ultitools.annotations.command.CmdMapping; -import com.ultikits.ultitools.annotations.command.CmdSender; -import com.ultikits.ultitools.annotations.command.CmdTarget; +import com.ultikits.ultitools.abstracts.AbstractPlayerCommandExecutor; +import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import static com.ultikits.ultitools.utils.MessageUtils.info; +import static com.ultikits.ultitools.utils.MessageUtils.warning; -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"fly"}, manualRegister = true, permission = "ultikits.tools.command.fly", description = "飞行功能") -public class FlyCommands extends AbstractCommendExecutor { +public class FlyCommands extends AbstractPlayerCommandExecutor { - @CmdMapping(format = "") - public void fly(@CmdSender Player player) { + @Override + protected boolean onPlayerCommand(Command command, String[] strings, Player player) { + if (!player.hasPermission("ultikits.tools.command.fly")) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return true; + } player.setAllowFlight(!player.getAllowFlight()); player.sendMessage(info(player.getAllowFlight() ? BasicFunctions.getInstance().i18n("已打开飞行") : BasicFunctions.getInstance().i18n("已关闭飞行"))); + return true; } @Override - protected void handleHelp(CommandSender sender) { + protected void sendHelpMessage(CommandSender sender) { sender.sendMessage(info(BasicFunctions.getInstance().i18n("用法:/fly"))); } } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/GMChangeCommand.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/GMChangeCommand.java index 825a878..bfea042 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/GMChangeCommand.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/GMChangeCommand.java @@ -1,46 +1,78 @@ package com.ultikits.plugins.commands; import com.ultikits.plugins.BasicFunctions; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.CmdExecutor; -import com.ultikits.ultitools.annotations.command.CmdMapping; -import com.ultikits.ultitools.annotations.command.CmdSender; -import com.ultikits.ultitools.annotations.command.CmdTarget; +import com.ultikits.ultitools.abstracts.AbstractTabExecutor; import org.bukkit.ChatColor; import org.bukkit.GameMode; +import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"gm"}, manualRegister = true, permission = "ultikits.tools.command.gm", description = "游戏模式切换功能") -public class GMChangeCommand extends AbstractCommendExecutor { +import java.util.Arrays; +import java.util.List; - @CmdMapping(format = "0", permission = "ultikits.tools.command.gm.0") - public void changeGameMode0(@CmdSender Player player, String mode) { - player.setGameMode(GameMode.SURVIVAL); - player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("你的游戏模式已设置为%s"), BasicFunctions.getInstance().i18n("生存模式"))); - } - - @CmdMapping(format = "1", permission = "ultikits.tools.command.gm.1") - public void changeGameMode1(@CmdSender Player player, String mode) { - player.setGameMode(GameMode.CREATIVE); - player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("你的游戏模式已设置为%s"), BasicFunctions.getInstance().i18n("创造模式"))); - } +import static com.ultikits.ultitools.utils.MessageUtils.warning; - @CmdMapping(format = "2", permission = "ultikits.tools.command.gm.2") - public void changeGameMode2(@CmdSender Player player, String mode) { - player.setGameMode(GameMode.ADVENTURE); - player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("你的游戏模式已设置为%s"), BasicFunctions.getInstance().i18n("冒险模式"))); +public class GMChangeCommand extends AbstractTabExecutor { + @Override + protected boolean onPlayerCommand(Command command, String[] strings, Player player) { + if (player.hasPermission("ultikits.tools.command.gm.all") + || player.hasPermission("ultikits.tools.command.gm.0") + || player.hasPermission("ultikits.tools.command.gm.1") + || player.hasPermission("ultikits.tools.command.gm.2") + || player.hasPermission("ultikits.tools.command.gm.3")) { + switch (strings[0]) { + case "0": + if (player.hasPermission("ultikits.tools.command.gm.all") + || player.hasPermission("ultikits.tools.command.gm.0")) { + player.setGameMode(GameMode.SURVIVAL); + player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("你的游戏模式已设置为%s"), BasicFunctions.getInstance().i18n("生存模式"))); + return true; + } + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return true; + case "1": + if (player.hasPermission("ultikits.tools.command.gm.all") + || player.hasPermission("ultikits.tools.command.gm.1")) { + player.setGameMode(GameMode.CREATIVE); + player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("你的游戏模式已设置为%s"), BasicFunctions.getInstance().i18n("创造模式"))); + return true; + } + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return true; + case "2": + if (player.hasPermission("ultikits.tools.command.gm.all") + || player.hasPermission("ultikits.tools.command.gm.2")) { + player.setGameMode(GameMode.ADVENTURE); + player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("你的游戏模式已设置为%s"), BasicFunctions.getInstance().i18n("冒险模式"))); + return true; + } + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return true; + case "3": + if (player.hasPermission("ultikits.tools.command.gm.all") + || player.hasPermission("ultikits.tools.command.gm.3")) { + player.setGameMode(GameMode.SPECTATOR); + player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("你的游戏模式已设置为%s"), BasicFunctions.getInstance().i18n("旁观模式"))); + return true; + } + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return true; + default: + return false; + } + } + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return true; } - @CmdMapping(format = "3", permission = "ultikits.tools.command.gm.3") - public void changeGameMode3(@CmdSender Player player, String mode) { - player.setGameMode(GameMode.SPECTATOR); - player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("你的游戏模式已设置为%s"), BasicFunctions.getInstance().i18n("旁观模式"))); + @Override + protected List onPlayerTabComplete(Command command, String[] strings, Player player) { + return Arrays.asList("0", "1", "2", "3"); } @Override - protected void handleHelp(CommandSender sender) { + protected void sendHelpMessage(CommandSender sender) { sender.sendMessage(ChatColor.YELLOW + "/gm <0/1/2/3>"); } } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/HealCommand.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/HealCommand.java index b452957..bd99baa 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/HealCommand.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/HealCommand.java @@ -1,28 +1,30 @@ package com.ultikits.plugins.commands; import com.ultikits.plugins.BasicFunctions; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.CmdExecutor; -import com.ultikits.ultitools.annotations.command.CmdMapping; -import com.ultikits.ultitools.annotations.command.CmdSender; -import com.ultikits.ultitools.annotations.command.CmdTarget; +import com.ultikits.ultitools.abstracts.AbstractPlayerCommandExecutor; import org.bukkit.ChatColor; +import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"heal", "h"}, manualRegister = true, permission = "ultikits.tools.command.heal", description = "指令治愈功能") -public class HealCommand extends AbstractCommendExecutor { +import static com.ultikits.ultitools.utils.MessageUtils.warning; - @CmdMapping(format = "") - public void heal(@CmdSender Player player) { - player.setHealth(player.getMaxHealth()); - player.setFoodLevel(20); - player.sendMessage(ChatColor.YELLOW + BasicFunctions.getInstance().i18n("你已被治愈!")); +public class HealCommand extends AbstractPlayerCommandExecutor { + + @Override + protected boolean onPlayerCommand(Command command, String[] strings, Player player) { + if (player.hasPermission("ultikits.tools.command.heal")) { + player.setHealth(player.getMaxHealth()); + player.setFoodLevel(20); + player.sendMessage(ChatColor.YELLOW + BasicFunctions.getInstance().i18n("你已被治愈!")); + return true; + } + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return true; } @Override - protected void handleHelp(CommandSender sender) { - sender.sendMessage(BasicFunctions.getInstance().i18n("§c/heal §7治愈自己")); + protected void sendHelpMessage(CommandSender sender) { + } } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/HideCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/HideCommands.java deleted file mode 100644 index 79cfeb1..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/HideCommands.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.ultikits.plugins.commands; - -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.ultitools.UltiTools; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.CmdExecutor; -import com.ultikits.ultitools.annotations.command.CmdMapping; -import com.ultikits.ultitools.annotations.command.CmdSender; -import com.ultikits.ultitools.annotations.command.CmdTarget; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -import static com.ultikits.ultitools.utils.MessageUtils.info; - -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"hide"}, manualRegister = true, permission = "ultikits.tools.command.hide", description = "隐身功能") -public class HideCommands extends AbstractCommendExecutor { - private static final List hidePlayers = new ArrayList<>(); - - public static void removeHidePlayer(UUID uuid) { - hidePlayers.remove(uuid); - } - - @CmdMapping(format = "") - public void hide(@CmdSender Player player) { - if (hidePlayers.contains(player.getUniqueId())) { - hidePlayers.remove(player.getUniqueId()); - new BukkitRunnable() { - @Override - public void run() { - for (Player p : Bukkit.getOnlinePlayers()) { - if (p.getUniqueId().equals(player.getUniqueId())) { - continue; - } - p.showPlayer(UltiTools.getInstance(), player); - } - } - }.runTaskAsynchronously(UltiTools.getInstance()); - player.sendMessage(info(BasicFunctions.getInstance().i18n("你已退出隐身"))); - } else { - hidePlayers.add(player.getUniqueId()); - new BukkitRunnable() { - @Override - public void run() { - for (Player p : Bukkit.getOnlinePlayers()) { - if (p.getUniqueId().equals(player.getUniqueId())) { - continue; - } - p.hidePlayer(UltiTools.getInstance(), player); - } - } - }.runTaskAsynchronously(UltiTools.getInstance()); - player.sendMessage(info(BasicFunctions.getInstance().i18n("你已进入隐身"))); - } - - } - - @Override - protected void handleHelp(CommandSender sender) { - sender.sendMessage(info(BasicFunctions.getInstance().i18n("/hide - 开启/关闭隐身"))); - } -} - diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/LoreCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/LoreCommands.java deleted file mode 100644 index 3f8aefe..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/LoreCommands.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.ultikits.plugins.commands; - -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.*; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.jetbrains.annotations.NotNull; - -import java.util.*; - -import static com.ultikits.ultitools.utils.MessageUtils.coloredMsg; - -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"lore"}, manualRegister = true, permission = "ultikits.tools.command.lore", description = "物品Lore编辑功能") -public class LoreCommands extends AbstractCommendExecutor { - - @CmdMapping(format = "add ") - public void addLore(@CmdSender Player player, @CmdParam("lore...") String[] lore) { - ItemStack itemStack = player.getInventory().getItemInMainHand(); - if (itemStack.getType() == Material.AIR) { - player.sendMessage(ChatColor.RED + BasicFunctions.getInstance().i18n("请手持物品来修改Lore")); - return; - } - ItemMeta itemMeta = Objects.requireNonNull(itemStack.getItemMeta()); - List loreList = itemMeta.getLore(); - if (loreList == null) { - loreList = new ArrayList<>(); - } - String loreToAdd = String.join(" ", lore); - loreList.add(coloredMsg(loreToAdd)); - itemMeta.setLore(loreList); - itemStack.setItemMeta(itemMeta); - player.getInventory().setItemInMainHand(itemStack); - player.sendMessage(ChatColor.GREEN + BasicFunctions.getInstance().i18n("物品Lore已修改")); - } - - @CmdMapping(format = "delete ") - public void deleteLore(@CmdSender Player player, @CmdParam("position") int position) { - ItemStack itemStack = player.getInventory().getItemInMainHand(); - if (itemStack.getType() == Material.AIR) { - player.sendMessage(ChatColor.RED + BasicFunctions.getInstance().i18n("请手持物品来修改Lore")); - return; - } - ItemMeta itemMeta = Objects.requireNonNull(itemStack.getItemMeta()); - List loreList = itemMeta.getLore(); - if (loreList == null || loreList.isEmpty()) { - player.sendMessage(ChatColor.RED + BasicFunctions.getInstance().i18n("物品Lore为空")); - return; - } - if (position > loreList.size() || position < 1) { - player.sendMessage(ChatColor.RED + BasicFunctions.getInstance().i18n("Lore行数超出范围")); - return; - } - loreList.remove(position - 1); - itemMeta.setLore(loreList); - itemStack.setItemMeta(itemMeta); - player.getInventory().setItemInMainHand(itemStack); - player.sendMessage(ChatColor.GREEN + BasicFunctions.getInstance().i18n("物品Lore已修改")); - } - - @CmdMapping(format = "edit ") - public void editLore(@CmdSender Player player, @CmdParam("position") int position, @CmdParam("lore...") String[] lore) { - ItemStack itemStack = player.getInventory().getItemInMainHand(); - if (itemStack.getType() == Material.AIR) { - player.sendMessage(ChatColor.RED + BasicFunctions.getInstance().i18n("请手持物品来修改Lore")); - return; - } - ItemMeta itemMeta = Objects.requireNonNull(itemStack.getItemMeta()); - List loreList = itemMeta.getLore(); - if (loreList == null || loreList.isEmpty()) { - player.sendMessage(ChatColor.RED + BasicFunctions.getInstance().i18n("物品Lore为空")); - return; - } - if (position > loreList.size() || position < 1) { - player.sendMessage(ChatColor.RED + BasicFunctions.getInstance().i18n("Lore行数超出范围")); - return; - } - String loreToEdit = String.join(" ", lore); - if (position == 0) { - itemMeta.setDisplayName(coloredMsg(loreToEdit)); - } else { - loreList.set(position - 1, coloredMsg(loreToEdit)); - itemMeta.setLore(loreList); - } - itemStack.setItemMeta(itemMeta); - player.getInventory().setItemInMainHand(itemStack); - player.sendMessage(ChatColor.GREEN + BasicFunctions.getInstance().i18n("物品Lore已修改")); - } - - @Override - protected List suggest(Player player, String[] strings) { - switch (strings.length) { - case 1: - return Arrays.asList( - "add", - "delete", - "edit" - ); - case 2: - case 3: - if (strings[0].equals("add")) { - return Collections.singletonList(BasicFunctions.getInstance().i18n("<内容>")); - } - ItemStack itemStack = player.getInventory().getItemInMainHand(); - if (itemStack.getType() == Material.AIR) { - player.sendMessage(ChatColor.RED + BasicFunctions.getInstance().i18n("请手持物品来修改Lore")); - return Collections.emptyList(); - } - ItemMeta itemMeta = Objects.requireNonNull(itemStack.getItemMeta()); - List lore = itemMeta.getLore(); - if (lore == null || lore.isEmpty()) { - player.sendMessage(ChatColor.RED + BasicFunctions.getInstance().i18n("物品Lore为空")); - return Collections.emptyList(); - } - List list = new ArrayList<>(); - for (int i = 1; i <= lore.size(); i++) { - list.add(i + ". " + lore.get(i - 1)); - } - - if ((strings[0].equals("edit") || strings[0].equals("delete")) && strings.length == 2) { - return list; - } else if (strings[0].equals("edit")) { - int position; - try { - position = Integer.parseInt(strings[1]); - } catch (NumberFormatException e) { - return Collections.singletonList(BasicFunctions.getInstance().i18n("<- 请输入对应的lore行数")); - } - if (position - 1 < lore.size() && position - 1 >= 0) { - return Collections.singletonList(lore.get(position - 1)); - } - } - break; - default: - return Collections.emptyList(); - } - return Collections.emptyList(); - } - - @Override - protected void handleHelp(CommandSender sender) { - sender.sendMessage(ChatColor.RED + "lore add <内容>" + ChatColor.GRAY + " - " + BasicFunctions.getInstance().i18n("添加Lore")); - sender.sendMessage(ChatColor.RED + "lore delete <行数>" + ChatColor.GRAY + " - " + BasicFunctions.getInstance().i18n("删除Lore")); - sender.sendMessage(ChatColor.RED + "lore edit <行数> <内容>" + ChatColor.GRAY + " - " + BasicFunctions.getInstance().i18n("编辑Lore")); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/RandomTpCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/RandomTpCommands.java index 75bcb03..fba7d92 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/RandomTpCommands.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/RandomTpCommands.java @@ -2,16 +2,13 @@ package com.ultikits.plugins.commands; import com.ultikits.plugins.BasicFunctions; import com.ultikits.ultitools.UltiTools; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.CmdExecutor; -import com.ultikits.ultitools.annotations.command.CmdMapping; -import com.ultikits.ultitools.annotations.command.CmdSender; -import com.ultikits.ultitools.annotations.command.CmdTarget; +import com.ultikits.ultitools.abstracts.AbstractPlayerCommandExecutor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; @@ -21,12 +18,15 @@ import java.util.Random; import static com.ultikits.ultitools.utils.MessageUtils.info; import static com.ultikits.ultitools.utils.MessageUtils.warning; -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"wild"}, manualRegister = true, permission = "ultikits.tools.command.wild", description = "随机传送功能") -public class RandomTpCommands extends AbstractCommendExecutor { +public class RandomTpCommands extends AbstractPlayerCommandExecutor { - @CmdMapping(format = "") - public void wild(@CmdSender Player player) { + @Override + protected boolean onPlayerCommand(Command command, String[] strings, Player player) { + + if (!player.isOp() && !player.hasPermission("ultikits.tools.command.wild")) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return false; + } World.Environment environment = player.getWorld().getEnvironment(); if (environment == World.Environment.NETHER || environment == World.Environment.THE_END) { player.sendMessage(warning(BasicFunctions.getInstance().i18n("这个世界禁止使用随机传送!"))); @@ -58,10 +58,12 @@ public class RandomTpCommands extends AbstractCommendExecutor { } }.runTask(UltiTools.getInstance()); } + + return true; } @Override - protected void handleHelp(CommandSender sender) { + protected void sendHelpMessage(CommandSender sender) { sender.sendMessage(info(BasicFunctions.getInstance().i18n("随机传送到一个安全的地方"))); } } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SetSpawnCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SetSpawnCommands.java deleted file mode 100644 index 185b3c9..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SetSpawnCommands.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.ultikits.plugins.commands; - -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.CmdExecutor; -import com.ultikits.ultitools.annotations.command.CmdMapping; -import com.ultikits.ultitools.annotations.command.CmdSender; -import com.ultikits.ultitools.annotations.command.CmdTarget; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import static com.ultikits.ultitools.utils.MessageUtils.error; -import static com.ultikits.ultitools.utils.MessageUtils.info; - -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"setspawn"}, manualRegister = true, permission = "ultikits.tools.command.setspawn", description = "重生点功能") -public class SetSpawnCommands extends AbstractCommendExecutor { - - @CmdMapping(format = "") - public void setSpawn(@CmdSender Player player) { - Location location = player.getLocation(); - World world = location.getWorld(); - if (world == null) { - player.sendMessage(error(BasicFunctions.getInstance().i18n("未找到世界!"))); - return; - } - world.setSpawnLocation(location); - player.sendMessage(info(BasicFunctions.getInstance().i18n("已重设世界重生点!"))); - } - - @Override - protected void handleHelp(CommandSender sender) { - sender.sendMessage(ChatColor.RED + "setspawn" + ChatColor.GRAY + " - " + BasicFunctions.getInstance().i18n("设置世界重生点")); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SpawnCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SpawnCommands.java deleted file mode 100644 index 870fa34..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SpawnCommands.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.ultikits.plugins.commands; - -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.CmdExecutor; -import com.ultikits.ultitools.annotations.command.CmdMapping; -import com.ultikits.ultitools.annotations.command.CmdSender; -import com.ultikits.ultitools.annotations.command.CmdTarget; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import static com.ultikits.ultitools.utils.MessageUtils.error; - -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"spawn"}, manualRegister = true, permission = "ultikits.tools.command.spawn", description = "重生点功能") -public class SpawnCommands extends AbstractCommendExecutor { - - @CmdMapping(format = "") - public void spawn(@CmdSender Player player) { - if (player.getLocation().getWorld() == null) { - player.sendMessage(error(BasicFunctions.getInstance().i18n("未找到世界!"))); - return; - } - if (player.getLocation().getWorld().getSpawnLocation().equals(new Location(player.getLocation().getWorld(), 0, 0, 0, 0, 0))) { - player.sendMessage(error(BasicFunctions.getInstance().i18n("这个世界没有重生点!"))); - return; - } - player.teleport(player.getLocation().getWorld().getSpawnLocation()); - } - - @Override - protected void handleHelp(CommandSender sender) { - sender.sendMessage(ChatColor.RED + "spawn" + ChatColor.GRAY + " - " + BasicFunctions.getInstance().i18n("传送到世界重生点")); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SpeedCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SpeedCommands.java index 1422f3a..f5e13cb 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SpeedCommands.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/SpeedCommands.java @@ -1,35 +1,53 @@ package com.ultikits.plugins.commands; import com.ultikits.plugins.BasicFunctions; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.*; +import com.ultikits.ultitools.abstracts.AbstractTabExecutor; import org.bukkit.ChatColor; +import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.List; import static com.ultikits.ultitools.utils.MessageUtils.info; +import static com.ultikits.ultitools.utils.MessageUtils.warning; -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"speed"}, manualRegister = true, permission = "ultikits.tools.command.speed", description = "速度设置功能") -public class SpeedCommands extends AbstractCommendExecutor { +public class SpeedCommands extends AbstractTabExecutor { List speeds = Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"); - @CmdMapping(format = "") - public void setSpeeds(@CmdSender Player player, @CmdParam("speed") String speed) { - if (!speeds.contains(speed)) { - return; + @Override + protected boolean onPlayerCommand(@NotNull Command command, @NotNull String[] strings, @NotNull Player player) { + if (player.hasPermission("ultikits.tools.command.speed")) { + if (!speeds.contains(strings[0])) { + return false; + } + player.setWalkSpeed(Float.parseFloat(strings[0]) / 10); + player.setFlySpeed(Float.parseFloat(strings[0]) / 10); + player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("行走/飞行速度已设置为%s,默认速度为2"), strings[0])); + return true; + } + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return true; + } + + @Nullable + @Override + protected List onPlayerTabComplete(@NotNull Command command, @NotNull String[] strings, @NotNull Player player) { + if (!player.hasPermission("ultikits.tools.commands.speed")) { + return null; + } + if (strings.length == 1) { + return speeds; } - player.setWalkSpeed(Float.parseFloat(speed) / 10); - player.setFlySpeed(Float.parseFloat(speed) / 10); - player.sendMessage(ChatColor.YELLOW + String.format(BasicFunctions.getInstance().i18n("行走/飞行速度已设置为%s,默认速度为2"), speed)); + return null; } @Override - protected void handleHelp(CommandSender sender) { + protected void sendHelpMessage(CommandSender sender) { sender.sendMessage(info(BasicFunctions.getInstance().i18n("/speed <0-10> 设置速度"))); } } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/TpaCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/TpaCommands.java index c5f6b31..b587398 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/TpaCommands.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/TpaCommands.java @@ -2,94 +2,106 @@ package com.ultikits.plugins.commands; import com.ultikits.plugins.BasicFunctions; import com.ultikits.plugins.tasks.TpTimerTask; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.*; +import com.ultikits.ultitools.abstracts.AbstractTabExecutor; import com.ultikits.ultitools.utils.MessageUtils; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.format.TextColor; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; import static com.ultikits.ultitools.utils.MessageUtils.info; import static com.ultikits.ultitools.utils.MessageUtils.warning; -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"tpa"}, manualRegister = true, permission = "ultikits.tools.command.tpa", description = "传送请求功能") -public class TpaCommands extends AbstractCommendExecutor { - @CmdMapping(format = "accept") - public void acceptTpa(@CmdSender Player player) { - Player teleporter = TpTimerTask.tpTemp.get(player); - if (teleporter == null) { - player.sendMessage(warning(BasicFunctions.getInstance().i18n("并没有玩家给你发送传送请求!"))); - return; - } - TpTimerTask.tpTemp.put(player, null); - TpTimerTask.tpTimer.put(player, 0); - teleporter.teleport(player.getLocation()); - teleporter.sendMessage(info(BasicFunctions.getInstance().i18n("传送成功!"))); - } +public class TpaCommands extends AbstractTabExecutor { - @CmdMapping(format = "reject") - public void rejectTpa(@CmdSender Player player) { - Player teleporter = TpTimerTask.tpTemp.get(player); - if (teleporter == null) { - player.sendMessage(warning(BasicFunctions.getInstance().i18n("并没有玩家给你发送传送请求!"))); - return; - } - teleporter.sendMessage(warning(BasicFunctions.getInstance().i18n("对方拒绝了你的传送请求 :("))); - player.sendMessage(info(BasicFunctions.getInstance().i18n("已拒绝!"))); - TpTimerTask.tpTemp.put(player, null); - TpTimerTask.tpTimer.put(player, 0); - } - - @CmdMapping(format = "") - public void tpa(@CmdSender Player player, @CmdParam("player") String targetName) { - Player target = Bukkit.getPlayerExact(targetName); - if (target == null) { - player.sendMessage(warning(BasicFunctions.getInstance().i18n("未找到目标,无法请求传送!"))); - return; + @Override + protected boolean onPlayerCommand(@NotNull Command command, @NotNull String[] strings, @NotNull Player player) { + if (!player.isOp() && !player.hasPermission("ultikits.tools.command.tpa")) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return false; } - if (TpTimerTask.tpTemp.get(target) != null) { - player.sendMessage(warning(BasicFunctions.getInstance().i18n("对方正在处理另一个传送请求!"))); - return; + switch (strings.length) { + case 1: + switch (strings[0]) { + case "accept": + Player teleporter = TpTimerTask.tpTemp.get(player); + if (teleporter == null) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("并没有玩家给你发送传送请求!"))); + return true; + } + TpTimerTask.tpTemp.put(player, null); + TpTimerTask.tpTimer.put(player, 0); + teleporter.teleport(player.getLocation()); + teleporter.sendMessage(info(BasicFunctions.getInstance().i18n("传送成功!"))); + return true; + case "reject": + Player teleporter2 = TpTimerTask.tpTemp.get(player); + if (teleporter2 == null) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("并没有玩家给你发送传送请求!"))); + return true; + } + teleporter2.sendMessage(warning(BasicFunctions.getInstance().i18n("对方拒绝了你的传送请求 :("))); + player.sendMessage(info(BasicFunctions.getInstance().i18n("已拒绝!"))); + TpTimerTask.tpTemp.put(player, null); + TpTimerTask.tpTimer.put(player, 0); + return true; + default: + Player target = Bukkit.getPlayerExact(strings[0]); + if (target == null) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("未找到目标,无法请求传送!"))); + return true; + } + if (TpTimerTask.tpTemp.get(target) != null) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("对方正在处理另一个传送请求!"))); + return true; + } + TpTimerTask.tpTemp.put(target, player); + TpTimerTask.tpTimer.put(target, 20); + player.sendMessage(info(String.format(BasicFunctions.getInstance().i18n("你已向%s发送TP请求!"), target.getName()))); + target.sendMessage(info(String.format(BasicFunctions.getInstance().i18n("%s请求传送到您的位置"), player.getName()))); + TextComponent ask = Component + .text(BasicFunctions.getInstance().i18n("[同意]")) + .color(TextColor.color(0x00FF00)) + .hoverEvent(Component.text(BasicFunctions.getInstance().i18n("点击同意传送"))) + .clickEvent(ClickEvent.runCommand("/tpa accept")) + .append(Component.text(" ")) + .append( + Component + .text(BasicFunctions.getInstance().i18n("[拒绝]")) + .color(TextColor.color(0xFF0000)) + .hoverEvent(Component.text(BasicFunctions.getInstance().i18n("点击拒绝传送"))) + .clickEvent(ClickEvent.runCommand("/tpa reject")) + ); + MessageUtils.sendMessage(target, ask); + return true; + } + default: + return false; } - TpTimerTask.tpTemp.put(target, player); - TpTimerTask.tpTimer.put(target, 20); - player.sendMessage(info(String.format(BasicFunctions.getInstance().i18n("你已向%s发送TP请求!"), target.getName()))); - target.sendMessage(info(String.format(BasicFunctions.getInstance().i18n("%s请求传送到您的位置"), player.getName()))); - TextComponent ask = Component - .text(BasicFunctions.getInstance().i18n("[同意]")) - .color(TextColor.color(0x00FF00)) - .hoverEvent(Component.text(BasicFunctions.getInstance().i18n("点击同意传送"))) - .clickEvent(ClickEvent.runCommand("/tpa accept")) - .append(Component.text(" ")) - .append( - Component - .text(BasicFunctions.getInstance().i18n("[拒绝]")) - .color(TextColor.color(0xFF0000)) - .hoverEvent(Component.text(BasicFunctions.getInstance().i18n("点击拒绝传送"))) - .clickEvent(ClickEvent.runCommand("/tpa reject")) - ); - MessageUtils.sendMessage(target, ask); } @Override - protected List suggest(Player player, String[] strings) { + protected @Nullable + List onPlayerTabComplete(@NotNull Command command, @NotNull String[] strings, @NotNull Player player) { return TpaHereCommands.getTpTabList(strings); } @Override - protected void handleHelp(CommandSender sender) { + protected void sendHelpMessage(CommandSender sender) { sender.sendMessage(info(BasicFunctions.getInstance().i18n("----传送请求帮助----"))); sender.sendMessage(info(BasicFunctions.getInstance().i18n("/tpa [玩家名] 向玩家发送传送请求"))); sender.sendMessage(info(BasicFunctions.getInstance().i18n("/tpa accept 接受传送请求"))); sender.sendMessage(info(BasicFunctions.getInstance().i18n("/tpa reject 拒绝传送请求"))); } + } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/TpaHereCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/TpaHereCommands.java index 2d8bca6..864154d 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/TpaHereCommands.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/TpaHereCommands.java @@ -2,14 +2,14 @@ package com.ultikits.plugins.commands; import com.ultikits.plugins.BasicFunctions; import com.ultikits.plugins.tasks.TpTimerTask; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.*; +import com.ultikits.ultitools.abstracts.AbstractTabExecutor; import com.ultikits.ultitools.utils.MessageUtils; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.format.TextColor; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -22,9 +22,7 @@ import static com.ultikits.ultitools.utils.MessageUtils.info; import static com.ultikits.ultitools.utils.MessageUtils.warning; -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"tphere"}, manualRegister = true, permission = "ultikits.tools.command.tphere", description = "请求传送到此功能") -public class TpaHereCommands extends AbstractCommendExecutor { +public class TpaHereCommands extends AbstractTabExecutor { @Nullable public static List getTpTabList(@NotNull String[] strings) { List tabCommands = new ArrayList<>(); @@ -39,70 +37,74 @@ public class TpaHereCommands extends AbstractCommendExecutor { return null; } - @CmdMapping(format = "accept") - public void acceptTpa(@CmdSender Player player) { - Player teleporter = TpTimerTask.tphereTemp.get(player); - if (teleporter == null) { - player.sendMessage(warning(BasicFunctions.getInstance().i18n("并没有玩家给你发送传送请求!"))); - return; - } - TpTimerTask.tphereTemp.put(player, null); - TpTimerTask.tphereTimer.put(player, 0); - player.teleport(teleporter.getLocation()); - teleporter.sendMessage(info(BasicFunctions.getInstance().i18n("传送成功!"))); - } - - @CmdMapping(format = "reject") - public void rejectTpa(@CmdSender Player player) { - Player teleporter = TpTimerTask.tphereTemp.get(player); - if (teleporter == null) { - player.sendMessage(warning(BasicFunctions.getInstance().i18n("并没有玩家给你发送传送请求!"))); - return; - } - teleporter.sendMessage(warning(BasicFunctions.getInstance().i18n("对方拒绝了你的传送请求 :("))); - player.sendMessage(info(BasicFunctions.getInstance().i18n("已拒绝!"))); - TpTimerTask.tphereTemp.put(player, null); - TpTimerTask.tphereTimer.put(player, 0); - } - - @CmdMapping(format = "") - public void tpa(@CmdSender Player player, @CmdParam("player") String targetName) { - Player target = Bukkit.getPlayerExact(targetName); - if (target == null) { - player.sendMessage(warning(BasicFunctions.getInstance().i18n("未找到目标,无法请求传送!"))); - return; + @Override + protected boolean onPlayerCommand(@NotNull Command command, @NotNull String[] strings, @NotNull Player player) { + if (!player.isOp() && !player.hasPermission("ultikits.tools.command.tphere")) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return false; } - if (TpTimerTask.tphereTemp.get(target) != null) { - player.sendMessage(warning(BasicFunctions.getInstance().i18n("对方正在处理另一个传送请求!"))); - return; + if (strings.length == 1) { + switch (strings[0]) { + case "accept": + Player teleporter = TpTimerTask.tphereTemp.get(player); + if (teleporter == null) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("并没有玩家给你发送传送请求!"))); + return true; + } + TpTimerTask.tphereTemp.put(player, null); + TpTimerTask.tphereTimer.put(player, 0); + player.teleport(teleporter.getLocation()); + teleporter.sendMessage(info(BasicFunctions.getInstance().i18n("传送成功!"))); + return true; + case "reject": + Player teleporter2 = TpTimerTask.tphereTemp.get(player); + if (teleporter2 == null) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("并没有玩家给你发送传送请求!"))); + return true; + } + teleporter2.sendMessage(warning(BasicFunctions.getInstance().i18n("对方拒绝了你的传送请求 :("))); + player.sendMessage(info(BasicFunctions.getInstance().i18n("已拒绝!"))); + TpTimerTask.tphereTemp.put(player, null); + TpTimerTask.tphereTimer.put(player, 0); + return true; + default: + Player target = Bukkit.getPlayerExact(strings[0]); + if (target == null) { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("未找到目标,无法请求传送!"))); + return true; + } + TpTimerTask.tphereTemp.put(target, player); + TpTimerTask.tphereTimer.put(target, 20); + player.sendMessage(info(String.format(BasicFunctions.getInstance().i18n("你已向%s发送TP请求!"), target.getName()))); + target.sendMessage(info(String.format(BasicFunctions.getInstance().i18n("%s请求您传送至他的位置"), player.getName()))); + TextComponent ask = Component + .text(BasicFunctions.getInstance().i18n("[同意]")) + .color(TextColor.color(0x00FF00)) + .hoverEvent(Component.text(BasicFunctions.getInstance().i18n("点击同意传送"))) + .clickEvent(ClickEvent.runCommand("/tphere accept")) + .append(Component.text(" ")) + .append( + Component + .text(BasicFunctions.getInstance().i18n("[拒绝]")) + .color(TextColor.color(0xFF0000)) + .hoverEvent(Component.text(BasicFunctions.getInstance().i18n("点击拒绝传送"))) + .clickEvent(ClickEvent.runCommand("/tphere reject")) + ); + MessageUtils.sendMessage(target, ask); + return true; + } } - TpTimerTask.tphereTemp.put(target, player); - TpTimerTask.tphereTimer.put(target, 20); - player.sendMessage(info(String.format(BasicFunctions.getInstance().i18n("你已向%s发送TP请求!"), target.getName()))); - target.sendMessage(info(String.format(BasicFunctions.getInstance().i18n("%s请求您传送至他的位置"), player.getName()))); - TextComponent ask = Component - .text(BasicFunctions.getInstance().i18n("[同意]")) - .color(TextColor.color(0x00FF00)) - .hoverEvent(Component.text(BasicFunctions.getInstance().i18n("点击同意传送"))) - .clickEvent(ClickEvent.runCommand("/tphere accept")) - .append(Component.text(" ")) - .append( - Component - .text(BasicFunctions.getInstance().i18n("[拒绝]")) - .color(TextColor.color(0xFF0000)) - .hoverEvent(Component.text(BasicFunctions.getInstance().i18n("点击拒绝传送"))) - .clickEvent(ClickEvent.runCommand("/tphere reject")) - ); - MessageUtils.sendMessage(target, ask); + return false; } + @Nullable @Override - protected List suggest(Player player, String[] strings) { + protected List onPlayerTabComplete(@NotNull Command command, @NotNull String[] strings, @NotNull Player player) { return getTpTabList(strings); } @Override - protected void handleHelp(CommandSender sender) { + protected void sendHelpMessage(CommandSender sender) { sender.sendMessage(info(BasicFunctions.getInstance().i18n("----传送至此请求帮助----"))); sender.sendMessage(info(BasicFunctions.getInstance().i18n("/tphere accept 接受传送请求"))); sender.sendMessage(info(BasicFunctions.getInstance().i18n("/tphere reject 拒绝传送请求"))); diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/WarpCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/WarpCommands.java deleted file mode 100644 index b41d019..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/WarpCommands.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.ultikits.plugins.commands; - -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.plugins.data.WarpData; -import com.ultikits.plugins.guis.WarpGui; -import com.ultikits.plugins.services.WarpService; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.*; -import com.ultikits.ultitools.services.TeleportService; -import org.bukkit.Location; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.ArrayList; -import java.util.List; - -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -@CmdExecutor(alias = {"warp"}, manualRegister = true, permission = "ultikits.tools.command.warp", description = "传送点功能") -public class WarpCommands extends AbstractCommendExecutor { - @Autowired - private WarpService warpService; - - @CmdMapping(format = "list") - public void listWarps(@CmdSender Player player) { - WarpGui warpGui = new WarpGui(player); - warpGui.open(); - } - - @CmdMapping(format = "tp ") - public void tpWarp(@CmdSender Player player, @CmdParam("name") String name) { - Location warpLocation = warpService.getWarpLocation(name); - player.sendMessage(String.format(BasicFunctions.getInstance().i18n("§a已传送至传送点 %s"), name)); - TeleportService teleportService = BasicFunctions.getInstance().getContext().getBean(TeleportService.class); - teleportService.delayTeleport(player, warpLocation, 3); - } - - @CmdMapping(format = "add ", requireOp = true) - public void addWarp(@CmdSender Player player, @CmdParam("name") String name) { - warpService.addWarp(name, player.getLocation()); - player.sendMessage(String.format(BasicFunctions.getInstance().i18n("§a已添加传送点 %s"), name)); - } - - @CmdMapping(format = "remove ", requireOp = true) - public void removeWarp(@CmdSender Player player, @CmdParam("name") String name) { - warpService.removeWarp(name); - player.sendMessage(String.format(BasicFunctions.getInstance().i18n("§a已删除传送点 %s"), name)); - } - - @Override - protected List suggest(Player player, String[] strings) { - ArrayList list = new ArrayList<>(); - switch (strings.length) { - case 1: - list.add("list"); - list.add("tp"); - if (player.isOp()) { - list.add("add"); - list.add("remove"); - } - return list; - case 2: - switch (strings[0]) { - case "remove": - if (player.isOp()) { - List allWarps = warpService.getAllWarps(); - for (WarpData warpData : allWarps) { - list.add(warpData.getName()); - } - return list; - } - return list; - case "tp": - List allWarps = warpService.getAllWarps(); - for (WarpData warpData : allWarps) { - list.add(warpData.getName()); - } - return list; - default: - return list; - } - default: - return list; - } - } - - @Override - protected void handleHelp(CommandSender sender) { - sender.sendMessage(BasicFunctions.getInstance().i18n("§a/warp list §7- §e查看所有传送点")); - sender.sendMessage(BasicFunctions.getInstance().i18n("§a/warp tp §7- §e传送至传送点")); - if (sender.isOp()) { - sender.sendMessage(BasicFunctions.getInstance().i18n("§a/warp add §7- §e添加传送点")); - sender.sendMessage(BasicFunctions.getInstance().i18n("§a/warp remove §7- §e删除传送点")); - } - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/WhitelistCommands.java b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/WhitelistCommands.java index d5780d4..f2637b6 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/commands/WhitelistCommands.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/commands/WhitelistCommands.java @@ -3,29 +3,39 @@ package com.ultikits.plugins.commands; import com.ultikits.plugins.BasicFunctions; import com.ultikits.plugins.data.WhiteListData; import com.ultikits.plugins.services.WhiteListService; -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.CmdExecutor; -import com.ultikits.ultitools.annotations.command.CmdMapping; -import com.ultikits.ultitools.annotations.command.CmdSender; -import com.ultikits.ultitools.annotations.command.CmdTarget; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; -import org.springframework.beans.factory.annotation.Autowired; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -@CmdTarget(CmdTarget.CmdTargetType.BOTH) -@CmdExecutor(alias = {"wl"}, manualRegister = true, permission = "ultikits.tools.command.whitelist", description = "白名单功能") -public class WhitelistCommands extends AbstractCommendExecutor { - @Autowired - private WhiteListService whiteListService; +import static com.ultikits.ultitools.utils.MessageUtils.warning; + +public class WhitelistCommands implements TabExecutor { + private final WhiteListService whiteListService = new WhiteListService(); @Override - protected void handleHelp(CommandSender sender) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if (player.hasPermission("ultikits.tools.admin") || player.hasPermission("ultikits.tools.whitelist")) { + return whiteListCommands(sender, command, args); + } else { + player.sendMessage(warning(BasicFunctions.getInstance().i18n("你没有权限使用此指令!"))); + return true; + } + } else { + return whiteListCommands(sender, command, args); + } + } + + private void sendHelpMessage(CommandSender sender) { sender.sendMessage(ChatColor.YELLOW + BasicFunctions.getInstance().i18n("----白名单系统帮助----")); sender.sendMessage(ChatColor.AQUA + BasicFunctions.getInstance().i18n("/wl help 白名单帮助")); sender.sendMessage(ChatColor.AQUA + BasicFunctions.getInstance().i18n("/wl list 白名单列表")); @@ -33,48 +43,56 @@ public class WhitelistCommands extends AbstractCommendExecutor { sender.sendMessage(ChatColor.AQUA + BasicFunctions.getInstance().i18n("/wl remove [玩家名] 将玩家移出白名单")); } - @CmdMapping(format = "help", requireOp = true) - public void help(@CmdSender CommandSender sender) { - handleHelp(sender); - } - - @CmdMapping(format = "list", requireOp = true) - public void list(@CmdSender CommandSender sender) { - List whitelist = whiteListService.getAllWhiteList(); - sender.sendMessage(ChatColor.YELLOW + BasicFunctions.getInstance().i18n("白名单列表有:")); - for (WhiteListData each : whitelist) { - sender.sendMessage(String.format("- %s", each.getName())); + private boolean whiteListCommands(CommandSender sender, Command command, String[] args) { + if ("wl".equalsIgnoreCase(command.getName())) { + if (args.length == 1) { + switch (args[0]) { + case "help": + sendHelpMessage(sender); + return true; + case "list": + List whitelist = whiteListService.getAllWhiteList(); + sender.sendMessage(ChatColor.YELLOW + BasicFunctions.getInstance().i18n("白名单列表有:")); + for (WhiteListData each : whitelist) { + sender.sendMessage(String.format("- %s", each.getName())); + } + return true; + default: + return false; + } + } else if (args.length == 2) { + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(args[1]); + if ("add".equalsIgnoreCase(args[0])) { + whiteListService.addWhiteList(String.valueOf(offlinePlayer.getUniqueId()), args[1]); + sender.sendMessage(ChatColor.RED + String.format(BasicFunctions.getInstance().i18n("已将%s加入白名单!"), args[1])); + return true; + } else if ("remove".equalsIgnoreCase(args[0])) { + whiteListService.removeWhiteList(String.valueOf(offlinePlayer.getUniqueId())); + sender.sendMessage(ChatColor.RED + String.format(BasicFunctions.getInstance().i18n("已将%s移出白名单!"), args[1])); + return true; + } + } } - } - - @CmdMapping(format = "add ", requireOp = true) - public void add(@CmdSender CommandSender sender, String name) { - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); - whiteListService.addWhiteList(String.valueOf(offlinePlayer.getUniqueId()), name); - sender.sendMessage(ChatColor.RED + String.format(BasicFunctions.getInstance().i18n("已将%s加入白名单!"), name)); - } - - @CmdMapping(format = "remove ", requireOp = true) - public void remove(@CmdSender CommandSender sender, String name) { - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); - whiteListService.removeWhiteList(String.valueOf(offlinePlayer.getUniqueId())); - sender.sendMessage(ChatColor.RED + String.format(BasicFunctions.getInstance().i18n("已将%s移出白名单!"), name)); + return false; } @Override - protected List suggest(Player player, String[] strings) { - if (player.isOp() || player.hasPermission("ultikits.tools.whitelist")) { - if (strings.length == 1) { - List tabCommands = new ArrayList<>(); - tabCommands.add("help"); - tabCommands.add("list"); - tabCommands.add("add"); - tabCommands.add("remove"); - return tabCommands; - } else if (strings.length == 2) { - List tabCommands = new ArrayList<>(); - tabCommands.add(BasicFunctions.getInstance().i18n("[玩家名]")); - return tabCommands; + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if (player.isOp() || player.hasPermission("ultikits.tools.whitelist")) { + if (args.length == 1) { + List tabCommands = new ArrayList<>(); + tabCommands.add("help"); + tabCommands.add("list"); + tabCommands.add("add"); + tabCommands.add("remove"); + return tabCommands; + } else if (args.length == 2) { + List tabCommands = new ArrayList<>(); + tabCommands.add(BasicFunctions.getInstance().i18n("[玩家名]")); + return tabCommands; + } } } return null; diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/config/BasicConfig.java b/BasicFunctions/src/main/java/com/ultikits/plugins/config/BasicConfig.java index 74ccc8e..322cea3 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/config/BasicConfig.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/config/BasicConfig.java @@ -30,18 +30,6 @@ public class BasicConfig extends AbstractConfigEntity { private boolean enableSpeed = true; @ConfigEntry(path = "enableBan", comment = "是否启用封禁") private boolean enableBan = true; - @ConfigEntry(path = "enableBan", comment = "是否启用传送点") - private boolean enableWarp = true; - @ConfigEntry(path = "enableSpawn", comment = "是否启用重生点设置") - private boolean enableSpawn = true; - @ConfigEntry(path = "enableLoreEditor", comment = "是否启用Lore编辑器") - private boolean enableLoreEditor = true; - @ConfigEntry(path = "enableHide", comment = "是否启用隐身功能") - private boolean enableHide = true; - @ConfigEntry(path = "enableTitle", comment = "是否启用头顶显示功能") - private boolean enableTitle = true; - @ConfigEntry(path = "enableDeathPunishment", comment = "是否启用死亡惩罚功能") - private boolean enableDeathPunishment = true; public BasicConfig(String configFilePath) { super(configFilePath); diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/config/DeathPunishmentConfig.java b/BasicFunctions/src/main/java/com/ultikits/plugins/config/DeathPunishmentConfig.java deleted file mode 100644 index 24f3254..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/config/DeathPunishmentConfig.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ultikits.plugins.config; - -import com.ultikits.ultitools.abstracts.AbstractConfigEntity; -import com.ultikits.ultitools.annotations.ConfigEntity; -import com.ultikits.ultitools.annotations.ConfigEntry; -import lombok.Getter; -import lombok.Setter; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -@Getter -@Setter -@ConfigEntity("config/death.yml") -public class DeathPunishmentConfig extends AbstractConfigEntity { - @ConfigEntry(path = "enable_item_drop", comment = "是否开启物品掉落") - private boolean enableItemDrop = false; - @ConfigEntry(path = "enable_money_drop", comment = "是否开启金币掉落") - private boolean enableMoneyDrop = true; - @ConfigEntry(path = "enable_punish_commands", comment = "是否开启死亡执行后台命令") - private boolean enablePunishCommands = true; - @ConfigEntry(path = "money_dropped_ondeath", comment = "死亡后掉落的金币数") - private int moneyDropOnDeath = 100; - @ConfigEntry(path = "item_dropped_ondeath", comment = "死亡后随机掉落的物品数") - private int itemDropOnDeath = 3; - @ConfigEntry(path = "punish_commands", comment = "死亡后后台执行的指令({PLAYER}指代玩家名占位符)") - private List punishCommands = Collections.emptyList(); - @ConfigEntry(path = "worlds_enabled_item_drop", comment = "开启死亡随机物品掉落的世界") - private List worldEnabledItemDrop = Arrays.asList("world", "world_nether", "world_the_end"); - @ConfigEntry(path = "worlds_enabled_money_drop", comment = "开启死亡后金币掉落的世界") - private List worldEnabledMoneyDrop = Arrays.asList("world", "world_nether", "world_the_end"); - @ConfigEntry(path = "worlds_enabled_punish_commands", comment = "开启死亡后执行后台指令的世界") - private List worldEnabledPunishCommands = Arrays.asList("world", "world_nether", "world_the_end"); - @ConfigEntry(path = "item_drop_whitelist", comment = "物品掉落白名单") - private List itemDropWhiteList = Collections.emptyList(); - - public DeathPunishmentConfig(String configFilePath) { - super(configFilePath); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/config/PlayerNameTagConfig.java b/BasicFunctions/src/main/java/com/ultikits/plugins/config/PlayerNameTagConfig.java deleted file mode 100644 index 4183ec2..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/config/PlayerNameTagConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ultikits.plugins.config; - -import com.ultikits.ultitools.abstracts.AbstractConfigEntity; -import com.ultikits.ultitools.annotations.ConfigEntity; -import com.ultikits.ultitools.annotations.ConfigEntry; -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -@ConfigEntity("config/title.yml") -public class PlayerNameTagConfig extends AbstractConfigEntity { - @ConfigEntry(path = "prefix", comment = "玩家名字前缀") - private String prefix = "&e[&dLv.%player_level%&e]"; - @ConfigEntry(path = "suffix", comment = "玩家名字后缀") - private String suffix = "&e[&a%player_health_rounded%&e/&a%player_max_health_rounded%&e]"; - @ConfigEntry(path = "updateInterval", comment = "更新间隔") - private int updateInterval = 20; - @ConfigEntry(path = "enableNameTagEdit", comment = "是否启用NameTagEdit支持") - private boolean enableNameTagEdit = false; - - public PlayerNameTagConfig(String configFilePath) { - super(configFilePath); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/config/WarpConfig.java b/BasicFunctions/src/main/java/com/ultikits/plugins/config/WarpConfig.java deleted file mode 100644 index 16458bf..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/config/WarpConfig.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ultikits.plugins.config; - -import com.ultikits.ultitools.abstracts.AbstractConfigEntity; -import com.ultikits.ultitools.annotations.ConfigEntity; -import com.ultikits.ultitools.annotations.ConfigEntry; -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -@ConfigEntity("config/warp.yml") -public class WarpConfig extends AbstractConfigEntity { - @ConfigEntry(path = "enable_blue_map", comment = "是否启用BlueMap") - private boolean enableBlueMap = false; - @ConfigEntry(path = "blue_map_warp_max_distance", comment = "传送点在BlueMap中最远显示距离") - private int maxDistance = 1000; - @ConfigEntry(path = "blue_map_marker_set", comment = "传送点在BlueMap中的标记集名称") - private String markerSet = "UltiTools Warps"; - - public WarpConfig(String configFilePath) { - super(configFilePath); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/data/WarpData.java b/BasicFunctions/src/main/java/com/ultikits/plugins/data/WarpData.java deleted file mode 100644 index e8dc2f8..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/data/WarpData.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ultikits.plugins.data; - -import com.ultikits.ultitools.abstracts.AbstractDataEntity; -import com.ultikits.ultitools.annotations.Column; -import com.ultikits.ultitools.annotations.Table; -import com.ultikits.ultitools.entities.common.WorldLocation; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.bukkit.Location; - -import java.util.Date; - -@Data -@Table("warp_table") -@EqualsAndHashCode(callSuper = true) -public class WarpData extends AbstractDataEntity { - @Column("id") - private Long id = new Date().getTime(); - @Column("name") - private String name; - @Column("location") - private WorldLocation location; -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/data/WhiteListData.java b/BasicFunctions/src/main/java/com/ultikits/plugins/data/WhiteListData.java index 4c98f7c..b57d382 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/data/WhiteListData.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/data/WhiteListData.java @@ -14,6 +14,4 @@ public class WhiteListData extends AbstractDataEntity { private String id; @Column("name") private String name; - @Column("remark") - private String remark; } diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/guis/WarpGui.java b/BasicFunctions/src/main/java/com/ultikits/plugins/guis/WarpGui.java deleted file mode 100644 index a1fe765..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/guis/WarpGui.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.ultikits.plugins.guis; - -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.plugins.data.WarpData; -import com.ultikits.plugins.services.WarpService; -import com.ultikits.ultitools.UltiTools; -import com.ultikits.ultitools.abstracts.guis.PagingPage; -import mc.obliviate.inventory.Icon; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.TextComponent; -import net.kyori.adventure.text.format.TextColor; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; - -public class WarpGui extends PagingPage { - private final WarpService warpService = new WarpService(); - - public WarpGui(Player player) { - super( - player, - "Warp-list", - Component.text(BasicFunctions.getInstance().i18n("传送点列表")) - .color(TextColor.color(0xFF00A6)), - 3 - ); - } - - @Override - public List setAllItems() { - List icons = new ArrayList<>(); - List allWarps = warpService.getAllWarps(); - for (WarpData warpData : allWarps) { - Location location = WarpService.toLocation(warpData.getLocation()); - Icon icon = new Icon(UltiTools.getInstance().getVersionWrapper().getEndEye()); - TextComponent textComponent = Component.text(warpData.getName()).color(TextColor.color(0xFF00A6)); - icon.toComp().setName(textComponent); - String world = String.format(ChatColor.YELLOW + BasicFunctions.getInstance().i18n("所在世界 %s"), location.getWorld().getName()); - String xyz = String.format(ChatColor.GRAY + "X: %.2f Y: %.2f Z: %.2f", location.getX(), location.getY(), location.getZ()); - icon.setLore(world, xyz); - icon.onClick((e) -> { - player.performCommand("warp tp " + warpData.getName()); - player.closeInventory(); - }); - icons.add(icon); - } - return icons; - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/BackListener.java b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/BackListener.java index 9bbc817..5aeb3ef 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/BackListener.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/BackListener.java @@ -1,6 +1,5 @@ package com.ultikits.plugins.listeners; -import com.ultikits.ultitools.annotations.EventListener; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -11,7 +10,6 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -@EventListener(manualRegister = true) public class BackListener implements Listener { private static final Map playerDeathLocation = new HashMap<>(); diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/BanListener.java b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/BanListener.java index 2e8254b..0b748a3 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/BanListener.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/BanListener.java @@ -1,16 +1,12 @@ package com.ultikits.plugins.listeners; import com.ultikits.plugins.services.BanPlayerService; -import com.ultikits.ultitools.annotations.EventListener; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; -import org.springframework.beans.factory.annotation.Autowired; -@EventListener(manualRegister = true) public class BanListener implements Listener { - @Autowired - private BanPlayerService banPlayerService; + private BanPlayerService banPlayerService = new BanPlayerService(); @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/DeathListener.java b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/DeathListener.java deleted file mode 100644 index 253d4d1..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/DeathListener.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.ultikits.plugins.listeners; - -import com.ultikits.plugins.tasks.DeathPunishmentTask; -import com.ultikits.ultitools.annotations.EventListener; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.PlayerDeathEvent; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author qianmo, wisdomme - */ -@EventListener(manualRegister = true) -public class DeathListener implements Listener { - private static final List list = new ArrayList<>(); - @Autowired - private DeathPunishmentTask deathPunishmentTask; - - @EventHandler - public void onPlayerDeath(PlayerDeathEvent event) { - Player player = event.getEntity(); - if (list.contains(player)) { - list.remove(player); - deathPunishmentTask.addPlayerToQueue(player); - } - } - - @EventHandler - public void onEntityDamage(EntityDamageEvent event) { - if (!(event.getEntity() instanceof Player)) { - return; - } - Player player = (Player) event.getEntity(); - - if (player.getHealth() > event.getFinalDamage()) { - return; - } - list.add(player); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/HideListener.java b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/HideListener.java deleted file mode 100644 index c2c2c33..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/HideListener.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ultikits.plugins.listeners; - -import com.ultikits.plugins.commands.HideCommands; -import com.ultikits.ultitools.annotations.EventListener; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerQuitEvent; - -@EventListener(manualRegister = true) -public class HideListener implements Listener { - @EventHandler - public void onPlayerQuit(PlayerQuitEvent event) { - HideCommands.removeHidePlayer(event.getPlayer().getUniqueId()); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/JoinWelcomeListener.java b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/JoinWelcomeListener.java index 687301e..66ad6af 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/JoinWelcomeListener.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/JoinWelcomeListener.java @@ -3,7 +3,6 @@ package com.ultikits.plugins.listeners; import com.ultikits.plugins.BasicFunctions; import com.ultikits.plugins.config.JoinWelcomeConfig; import com.ultikits.ultitools.UltiTools; -import com.ultikits.ultitools.annotations.EventListener; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -15,7 +14,6 @@ import org.bukkit.scheduler.BukkitRunnable; import static com.ultikits.ultitools.utils.MessageUtils.coloredMsg; -@EventListener(manualRegister = true) public class JoinWelcomeListener implements Listener { @EventHandler diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/PlayerNameTagListener.java b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/PlayerNameTagListener.java deleted file mode 100644 index 862078a..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/PlayerNameTagListener.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ultikits.plugins.listeners; - -import com.nametagedit.plugin.NametagEdit; -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.plugins.config.PlayerNameTagConfig; -import com.ultikits.plugins.utils.TitlesUtils; -import com.ultikits.ultitools.annotations.EventListener; -import me.clip.placeholderapi.PlaceholderAPI; -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; - -import static com.ultikits.ultitools.utils.MessageUtils.coloredMsg; - -@EventListener(manualRegister = true) -public class PlayerNameTagListener implements Listener { - - @EventHandler - public void onPlayerJoin(PlayerJoinEvent event) { - Player player = event.getPlayer(); - PlayerNameTagConfig nameTagConfig = BasicFunctions.getInstance().getConfig(PlayerNameTagConfig.class); - String prefix = coloredMsg(PlaceholderAPI.setPlaceholders(player, nameTagConfig.getPrefix())); - String suffix = coloredMsg(PlaceholderAPI.setPlaceholders(player, nameTagConfig.getSuffix())); - if (nameTagConfig.isEnableNameTagEdit()) { - NametagEdit.getApi().updatePlayerNametag(player.getName(), prefix, suffix); - } else { - TitlesUtils.setPrefixSuffix(player, prefix, suffix); - } - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/WhitelistListener.java b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/WhitelistListener.java index bfd2e4a..154449a 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/WhitelistListener.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/listeners/WhitelistListener.java @@ -2,18 +2,14 @@ package com.ultikits.plugins.listeners; import com.ultikits.plugins.BasicFunctions; import com.ultikits.plugins.services.WhiteListService; -import com.ultikits.ultitools.annotations.EventListener; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerLoginEvent; -import org.springframework.beans.factory.annotation.Autowired; -@EventListener(manualRegister = true) public class WhitelistListener implements Listener { - @Autowired - private WhiteListService whiteListService; + private final WhiteListService whiteListService = new WhiteListService(); @EventHandler public void onPlayerLogin(PlayerLoginEvent event) { diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/services/DeathPunishService.java b/BasicFunctions/src/main/java/com/ultikits/plugins/services/DeathPunishService.java deleted file mode 100644 index 938606b..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/services/DeathPunishService.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.ultikits.plugins.services; - -import com.ultikits.ultitools.UltiTools; -import net.milkbowl.vault.economy.Economy; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * @author qianmo, wisdomme - */ -@Service -public class DeathPunishService { - public void takeMoney(Player player, int money) { - Economy economy = UltiTools.getInstance().getEconomy(); - economy.withdrawPlayer(player, Math.min(economy.getBalance(player), money)); - } - - public void execCommand(List cmd, String playerName) { - for (String s : cmd) { - Bukkit.getServer().dispatchCommand( - Bukkit.getServer().getConsoleSender(), s.replace("{PLAYER}", playerName) - ); - } - } - - public void takeItem(Player player, int drop, List whitelist) { - Inventory inventory = player.getInventory(); - List inventorySlot = new ArrayList<>(); - for (int i = 0; i < 45; i++) { - ItemStack item = inventory.getItem(i); - if (item != null && !whitelist.contains(item.getType().toString())) { - inventorySlot.add(i); - } - } - Collections.shuffle(inventorySlot); - List ints = new ArrayList<>(); - for (int i = 0; i < drop; i++) { - if (i >= inventorySlot.size()) break; - ints.add(inventorySlot.get(i)); - } - for (Integer slot : ints) { - ItemStack itemStack = inventory.getItem(slot); - if (itemStack == null) continue; - itemStack.setAmount(itemStack.getAmount() - 1); - inventory.setItem(slot, itemStack); - } - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/services/WarpService.java b/BasicFunctions/src/main/java/com/ultikits/plugins/services/WarpService.java deleted file mode 100644 index d6dda08..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/services/WarpService.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.ultikits.plugins.services; - -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.plugins.config.WarpConfig; -import com.ultikits.plugins.data.WarpData; -import com.ultikits.ultitools.entities.WhereCondition; -import com.ultikits.ultitools.entities.common.WorldLocation; -import de.bluecolored.bluemap.api.BlueMapAPI; -import de.bluecolored.bluemap.api.BlueMapMap; -import de.bluecolored.bluemap.api.markers.MarkerSet; -import de.bluecolored.bluemap.api.markers.POIMarker; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.springframework.stereotype.Service; - -import java.util.List; - -import static com.ultikits.ultitools.abstracts.UltiToolsPlugin.getConfigManager; - -@Service -public class WarpService { - - public static Location toLocation(WorldLocation worldLocation) { - return new Location(Bukkit.getWorld(worldLocation.getWorld()), worldLocation.getX(), worldLocation.getY(), worldLocation.getZ(), worldLocation.getYaw(), worldLocation.getPitch()); - } - - public void addWarp(String name, Location location) { - WarpData warpData = new WarpData(); - warpData.setName(name); - WorldLocation worldLocation = new WorldLocation(location); - warpData.setLocation(worldLocation); - BasicFunctions.getInstance().getDataOperator(WarpData.class).insert(warpData); - addWarpToBlueMap(warpData); - } - - public void removeWarp(String name) { - List warpData = BasicFunctions.getInstance().getDataOperator(WarpData.class).getAll( - WhereCondition.builder().column("name").value(name).build() - ); - if (warpData.isEmpty()) { - return; - } - BasicFunctions.getInstance().getDataOperator(WarpData.class).del( - WhereCondition.builder().column("name").value(name).build() - ); - removeWarpFromBlueMap(warpData.get(0)); - } - - public Location getWarpLocation(String name) { - List warpData = BasicFunctions.getInstance().getDataOperator(WarpData.class).getAll( - WhereCondition.builder().column("name").value(name).build() - ); - if (warpData.isEmpty()) { - return null; - } - return toLocation(warpData.get(0).getLocation()); - } - - public List getAllWarps() { - return BasicFunctions.getInstance().getDataOperator(WarpData.class).getAll(); - } - - public void initBlueMap(){ - WarpConfig warpConfig = getConfigManager().getConfigEntity(BasicFunctions.getInstance(), WarpConfig.class); - if (!warpConfig.isEnableBlueMap()) { - return; - } - BlueMapAPI.getInstance().ifPresent(api -> { - api.getWorlds().forEach(world -> { - for (BlueMapMap map : world.getMaps()) { - MarkerSet markerSet = MarkerSet.builder() - .label(warpConfig.getMarkerSet()) - .build(); - map.getMarkerSets().put(warpConfig.getMarkerSet(), markerSet); - } - }); - }); - for (WarpData warpData : getAllWarps()) { - addWarpToBlueMap(warpData); - } - } - - public void addWarpToBlueMap(WarpData warpData) { - WarpConfig warpConfig = getConfigManager().getConfigEntity(BasicFunctions.getInstance(), WarpConfig.class); - if (!warpConfig.isEnableBlueMap()) { - return; - } - WorldLocation location = warpData.getLocation(); - POIMarker marker = POIMarker.builder() - .label(warpData.getName()) - .position(location.getX(), location.getY(), location.getZ()) - .maxDistance(warpConfig.getMaxDistance()) - .build(); - - BlueMapAPI.getInstance().flatMap(api -> api.getWorld(location.getWorld())).ifPresent(world -> { - for (BlueMapMap map : world.getMaps()) { - MarkerSet markerSet = map.getMarkerSets().get(warpConfig.getMarkerSet()); - markerSet.getMarkers().put(String.valueOf(warpData.getId()), marker); - map.getMarkerSets().put(warpConfig.getMarkerSet(), markerSet); - } - }); - } - - public void removeWarpFromBlueMap(WarpData warpData) { - WarpConfig warpConfig = getConfigManager().getConfigEntity(BasicFunctions.getInstance(), WarpConfig.class); - if (!warpConfig.isEnableBlueMap()) { - return; - } - BlueMapAPI.getInstance().flatMap(api -> api.getWorld(warpData.getLocation().getWorld())).ifPresent(world -> { - for (BlueMapMap map : world.getMaps()) { - MarkerSet markerSet = map.getMarkerSets().get(warpConfig.getMarkerSet()); - markerSet.remove(String.valueOf(warpData.getId())); -// map.getMarkerSets().put(warpConfig.getMarkerSet(), markerSet); - } - }); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/services/WhiteListService.java b/BasicFunctions/src/main/java/com/ultikits/plugins/services/WhiteListService.java index 52d383f..0094b44 100644 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/services/WhiteListService.java +++ b/BasicFunctions/src/main/java/com/ultikits/plugins/services/WhiteListService.java @@ -4,11 +4,9 @@ import com.ultikits.plugins.BasicFunctions; import com.ultikits.plugins.data.WhiteListData; import com.ultikits.ultitools.entities.WhereCondition; import com.ultikits.ultitools.interfaces.DataOperator; -import org.springframework.stereotype.Service; import java.util.List; -@Service public class WhiteListService { public boolean isWhiteList(String uuid) { diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/tasks/DeathPunishmentTask.java b/BasicFunctions/src/main/java/com/ultikits/plugins/tasks/DeathPunishmentTask.java deleted file mode 100644 index 985ecee..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/tasks/DeathPunishmentTask.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.ultikits.plugins.tasks; - -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.plugins.config.DeathPunishmentConfig; -import com.ultikits.plugins.services.DeathPunishService; -import com.ultikits.ultitools.UltiTools; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; - -import java.util.*; - -@Service -public class DeathPunishmentTask { - protected List punishQueue = new ArrayList<>(); - @Autowired - private DeathPunishService deathPunishService; - - public DeathPunishmentTask() { - DeathPunishmentConfig deathPunishmentConfig = UltiTools.getInstance().getConfigManager().getConfigEntity(BasicFunctions.getInstance(), DeathPunishmentConfig.class); - new BukkitRunnable() { - @Override - public void run() { - Iterator iterator = punishQueue.iterator(); - while (iterator.hasNext()) { - UUID uuid; - try { - uuid = iterator.next(); - } catch (ConcurrentModificationException e) { - continue; - } - Player player = Bukkit.getPlayer(uuid); - if (player == null) { - continue; - } - String world = player.getWorld().getName(); - List list; - if (deathPunishmentConfig.isEnableItemDrop()) { - list = deathPunishmentConfig.getWorldEnabledItemDrop(); - for (String s : list) { - if (s.equals(world)) { - int itemDropOnDeath = deathPunishmentConfig.getItemDropOnDeath(); - deathPunishService.takeItem(player, itemDropOnDeath, deathPunishmentConfig.getItemDropWhiteList()); - player.sendMessage(ChatColor.RED + String.format(BasicFunctions.getInstance().i18n("[死亡惩罚]你因为死亡随机掉落了%d个物品!"), itemDropOnDeath)); - } - } - } - - if (deathPunishmentConfig.isEnableMoneyDrop()) { - list = deathPunishmentConfig.getWorldEnabledMoneyDrop(); - for (String s : list) { - if (s.equals(world)) { - int moneyDropOnDeath = deathPunishmentConfig.getMoneyDropOnDeath(); - deathPunishService.takeMoney(player, moneyDropOnDeath); - player.sendMessage(ChatColor.RED + String.format(BasicFunctions.getInstance().i18n("[死亡惩罚]你因为死亡而扣除了%d个金币!"), moneyDropOnDeath)); - } - } - } - - if (deathPunishmentConfig.isEnablePunishCommands()) { - list = deathPunishmentConfig.getWorldEnabledPunishCommands(); - for (String s : list) { - if (s.equals(world)) { - UltiTools.getInstance().getServer().getScheduler().callSyncMethod(UltiTools.getInstance(), () -> { - deathPunishService.execCommand(deathPunishmentConfig.getPunishCommands(), player.getName()); - return null; - }); - } - } - } - punishQueue.remove(uuid); - } - } - }.runTaskTimerAsynchronously(UltiTools.getInstance(), 0, 20); - } - - public void addPlayerToQueue(Player player) { - if (punishQueue.contains(player.getUniqueId())) { - return; - } - punishQueue.add(player.getUniqueId()); - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/tasks/NamePrefixSuffixTask.java b/BasicFunctions/src/main/java/com/ultikits/plugins/tasks/NamePrefixSuffixTask.java deleted file mode 100644 index a131187..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/tasks/NamePrefixSuffixTask.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ultikits.plugins.tasks; - -import com.nametagedit.plugin.NametagEdit; -import com.ultikits.plugins.BasicFunctions; -import com.ultikits.plugins.config.PlayerNameTagConfig; -import com.ultikits.plugins.utils.TitlesUtils; -import me.clip.placeholderapi.PlaceholderAPI; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import static com.ultikits.ultitools.utils.MessageUtils.coloredMsg; - -public class NamePrefixSuffixTask extends BukkitRunnable { - - @Override - public void run() { - PlayerNameTagConfig nameTagConfig = BasicFunctions.getInstance().getConfig(PlayerNameTagConfig.class); - for (Player player : Bukkit.getOnlinePlayers()) { - String prefix = coloredMsg(PlaceholderAPI.setPlaceholders(player, nameTagConfig.getPrefix())); - String suffix = coloredMsg(PlaceholderAPI.setPlaceholders(player, nameTagConfig.getSuffix())); - if (nameTagConfig.isEnableNameTagEdit()){ - NametagEdit.getApi().updatePlayerNametag(player.getName(), prefix, suffix); - }else { - TitlesUtils.setPrefixSuffix(player, prefix, suffix); - } - } - } -} diff --git a/BasicFunctions/src/main/java/com/ultikits/plugins/utils/TitlesUtils.java b/BasicFunctions/src/main/java/com/ultikits/plugins/utils/TitlesUtils.java deleted file mode 100644 index 373d827..0000000 --- a/BasicFunctions/src/main/java/com/ultikits/plugins/utils/TitlesUtils.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.ultikits.plugins.utils; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.scoreboard.Scoreboard; -import org.bukkit.scoreboard.Team; - -public class TitlesUtils { - - public static void setPrefixSuffix(Player player, String prefix, String suffix) { - for (Player online : Bukkit.getOnlinePlayers()) { - if (!online.canSee(player)) { - continue; - } - Scoreboard scoreboard = online.getScoreboard(); - if (scoreboard == Bukkit.getScoreboardManager().getMainScoreboard()) { - scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); - } - Team team = scoreboard.getTeam(player.getName()); - if (team == null) { - team = scoreboard.registerNewTeam(player.getName()); - } - team.setPrefix(prefix); - team.setSuffix(suffix); - team.addEntry(player.getName()); - online.setScoreboard(scoreboard); - } - for (Player online : Bukkit.getOnlinePlayers()) { - if (!online.canSee(player)) { - continue; - } - if (online.getUniqueId().equals(player.getUniqueId())) - continue; - Scoreboard scoreboard = player.getScoreboard(); - if (scoreboard == Bukkit.getScoreboardManager().getMainScoreboard()) { - scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); - } - Team team = scoreboard.getTeam(online.getName()); - if (team == null) { - team = scoreboard.registerNewTeam(online.getName()); - } - - team.setPrefix(player.getScoreboard().getTeam(online.getName()).getPrefix()); - team.setSuffix(player.getScoreboard().getTeam(online.getName()).getSuffix()); - team.addEntry(online.getName()); - player.setScoreboard(scoreboard); - } - } -} diff --git a/BasicFunctions/src/main/resources/config/config.yml b/BasicFunctions/src/main/resources/config/config.yml index 598be9b..004f480 100644 --- a/BasicFunctions/src/main/resources/config/config.yml +++ b/BasicFunctions/src/main/resources/config/config.yml @@ -18,15 +18,3 @@ enableTpa: true enableSpeed: true # 是否启用封禁功能 enableBan: true -# 是否启用封禁功能 -enableWarp: true -# 是否启用重生点设置 -enableSpawn: true -# 是否启用Lore编辑器 -enableLoreEditor: true -# 是否启用隐身功能 -enableHide: true -# 是否启用玩家头顶显示功能 -enableTitle: true -# 是否启用死亡惩罚功能 -enableDeathPunishment: true diff --git a/BasicFunctions/src/main/resources/config/death.yml b/BasicFunctions/src/main/resources/config/death.yml deleted file mode 100644 index 3f3bf2c..0000000 --- a/BasicFunctions/src/main/resources/config/death.yml +++ /dev/null @@ -1,38 +0,0 @@ -# 是否开启物品掉落 -enable_item_drop: false - -# 是否开启金币掉落 -enable_money_drop: true - -# 是否开启死亡执行后台命令 -enable_punish_commands: true - -# 死亡后掉落的金币数 -money_dropped_ondeath: 100 - -# 死亡后随机掉落的物品数 -item_dropped_ondeath: 3 - -# 死亡后后台执行的指令({PLAYER}指代玩家名占位符) -punish_commands: [] - -# 开启死亡随机物品掉落的世界 -worlds_enabled_item_drop: - - world - - world_nether - - world_the_end - -# 开启死亡后金币掉落的世界 -worlds_enabled_money_drop: - - world - - world_nether - - world_the_end - -# 开启死亡后执行后台指令的世界 -worlds_enabled_punish_commands: - - world - - world_nether - - world_the_end - -# 物品掉落白名单 -item_drop_whitelist: [] diff --git a/BasicFunctions/src/main/resources/config/title.yml b/BasicFunctions/src/main/resources/config/title.yml deleted file mode 100644 index 32ab018..0000000 --- a/BasicFunctions/src/main/resources/config/title.yml +++ /dev/null @@ -1,8 +0,0 @@ -# 玩家名前缀 -prefix: "&e[&dLv.%player_level%&e]" -# 玩家名后缀 -suffix: "&e[&a%player_health_rounded%&e/&a%player_max_health_rounded%&e]" -# 玩家头顶显示更新间隔(单位:tick,一般20代表1秒) -updateInterval: 20 -# 是否启用Nametagedit插件支持 -enableNameTagEdit: false diff --git a/BasicFunctions/src/main/resources/config/warp.yml b/BasicFunctions/src/main/resources/config/warp.yml deleted file mode 100644 index 65a5476..0000000 --- a/BasicFunctions/src/main/resources/config/warp.yml +++ /dev/null @@ -1,6 +0,0 @@ -# 是否启用BlueMap,自行安装BlueMap插件 -enable_blue_map: false -# 传送点在BlueMap中最远显示距离 -blue_map_warp_max_distance: 1000 -# 传送点在BlueMap中的标记集名称 -blue_map_marker_set: "UltiTools Warps" diff --git a/BasicFunctions/src/main/resources/lang/en.json b/BasicFunctions/src/main/resources/lang/en.json index 8baf27e..98f9f44 100644 --- a/BasicFunctions/src/main/resources/lang/en.json +++ b/BasicFunctions/src/main/resources/lang/en.json @@ -57,38 +57,5 @@ "速度设置功能": "Speed setting function", "你已被封禁! 原因: %s": "You have been banned! Reason: %s", "§a封禁成功!": "§aBanned successfully!", - "§a解封成功!": "§aUnbanned successfully!", - "传送点功能": "Teleport point function", - "§a已添加传送点 %s": "§aTeleport point %s has been added", - "§a已删除传送点 %s": "§aTeleport point %s has been deleted", - "§a/warp list §7- §e查看所有传送点": "§a/warp list §7- §eView all teleport points", - "§a/warp tp §7- §e传送至传送点": "§a/warp tp §7- §eTeleport to teleport point", - "§a/warp add §7- §e添加传送点": "§a/warp add §7- §eAdd teleport point", - "§a/warp remove §7- §e删除传送点": "§a/warp remove §7- §eDelete teleport point", - "所在世界 %s": "World: %s", - "传送点列表": "Teleport point list", - "未找到世界!": "World not found!", - "这个世界没有重生点!": "This world has no respawn point!", - "已重设世界重生点!": "World respawn point has been reset!", - "传送到世界重生点": "Teleport to world respawn point", - "重生点功能": "Spawn point function", - "设置世界重生点": "Set world respawn point", - "请手持物品来修改Lore": "Please hold the item to modify the Lore", - "物品Lore为空": "Item Lore is empty", - "物品Lore已修改": "Item Lore has been modified", - "物品Lore编辑功能": "Item Lore editing function", - "添加Lore": "Add Lore", - "删除Lore": "Delete Lore", - "修改Lore": "Modify Lore", - "<内容>": "", - "<- 请输入对应的lore行数": "<- Please enter the lore line number", - "你已退出隐身": "You are not invisible now", - "你已进入隐身": "You are invisible now", - "隐身功能": "Invisible function", - "/hide - 开启/关闭隐身": "/hide - Turn on/off invisible", - "§c/uban ban §7封禁玩家": "§c/uban ban §7Ban player", - "§c/uban unban §7解封玩家": "§c/uban unban §7Unban player", - "§c/heal §7治愈自己": "§c/heal §7Heal yourself", - "[死亡惩罚]你因为死亡随机掉落了%d个物品!": "[Death penalty] You randomly dropped %d items due to death!", - "[死亡惩罚]你因为死亡而扣除了%d个金币!": "[Death penalty] You deducted %d coins due to death!" + "§a解封成功!": "§aUnbanned successfully!" } diff --git a/BasicFunctions/src/main/resources/plugin.yml b/BasicFunctions/src/main/resources/plugin.yml index e4a4dd5..9ad3818 100644 --- a/BasicFunctions/src/main/resources/plugin.yml +++ b/BasicFunctions/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: BasicFunctions version: '${project.version}' main: com.ultikits.plugins.BasicFunctions -api-version: 605 +api-version: 600 authors: [ 'wisdomme' ] diff --git a/Economy/pom.xml b/Economy/pom.xml index 7276f1e..26360ab 100644 --- a/Economy/pom.xml +++ b/Economy/pom.xml @@ -21,7 +21,7 @@ com.ultikits UltiTools-API - 6.0.5 + 6.0.3 provided @@ -78,7 +78,7 @@ UltiEconomy UltiEconomy - 多账户,利息发放,多人共享账户的经济模块 + A Economy Plugin access_key.txt F:\SpigotServers\Servers\1.19.4\plugins\UltiTools\plugins diff --git a/Home/pom.xml b/Home/pom.xml index 53ef738..f69897e 100755 --- a/Home/pom.xml +++ b/Home/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> UltiTools-Home com.ultikits.plugins - 1.0.2 + 1.0.0 4.0.0 @@ -18,7 +18,7 @@ com.ultikits UltiTools-API - 6.0.5 + 6.0.3 provided @@ -55,9 +55,9 @@ UltiTools-Home UltiTools-Home - 可视化GUI家模块 + A Home Plugin access_key.txt - F:\SpigotServers\Paper\1.20.4\plugins\UltiTools\plugins + F:\SpigotServers\Servers\1.20.4\plugins\UltiTools\plugins diff --git a/Home/src/main/java/com/ultikits/plugins/home/PluginMain.java b/Home/src/main/java/com/ultikits/plugins/home/PluginMain.java index e44c2d5..d189de1 100644 --- a/Home/src/main/java/com/ultikits/plugins/home/PluginMain.java +++ b/Home/src/main/java/com/ultikits/plugins/home/PluginMain.java @@ -3,14 +3,20 @@ package com.ultikits.plugins.home; import com.ultikits.plugins.home.config.HomeConfig; import com.ultikits.plugins.home.entity.HomeEntity; import com.ultikits.ultitools.abstracts.UltiToolsPlugin; -import com.ultikits.ultitools.annotations.UltiToolsModule; +import com.ultikits.ultitools.annotations.EnableAutoRegister; +import com.ultikits.ultitools.annotations.I18n; import com.ultikits.ultitools.interfaces.DataOperator; import com.ultikits.ultitools.interfaces.DataStore; import lombok.Getter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.stereotype.Component; -@UltiToolsModule +@Component +@ComponentScan +@I18n({"zh", "en"}) +@EnableAutoRegister public class PluginMain extends UltiToolsPlugin { @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") @Autowired diff --git a/Home/src/main/java/com/ultikits/plugins/home/commands/HomeCommands.java b/Home/src/main/java/com/ultikits/plugins/home/commands/HomeCommands.java index 7c0c0ae..ab48092 100644 --- a/Home/src/main/java/com/ultikits/plugins/home/commands/HomeCommands.java +++ b/Home/src/main/java/com/ultikits/plugins/home/commands/HomeCommands.java @@ -8,6 +8,7 @@ import com.ultikits.ultitools.annotations.command.*; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.springframework.beans.factory.annotation.Autowired; import java.util.ArrayList; import java.util.Arrays; @@ -16,11 +17,9 @@ import java.util.List; @CmdTarget(CmdTarget.CmdTargetType.PLAYER) @CmdExecutor(permission = "ultikits.home.command.all", description = "家功能", alias = {"home"}) public class HomeCommands extends AbstractCommendExecutor { - private final HomeService homeService; - - public HomeCommands(HomeService homeService) { - this.homeService = homeService; - } + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") + @Autowired + private HomeService homeService; @CmdMapping(format = "list") public void openList(@CmdSender Player player) { diff --git a/Home/src/main/java/com/ultikits/plugins/home/gui/HomeListGui.java b/Home/src/main/java/com/ultikits/plugins/home/gui/HomeListGui.java index 3fd597a..7bf384a 100644 --- a/Home/src/main/java/com/ultikits/plugins/home/gui/HomeListGui.java +++ b/Home/src/main/java/com/ultikits/plugins/home/gui/HomeListGui.java @@ -16,7 +16,6 @@ import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; import java.util.List; public class HomeListGui extends PagingPage { @@ -38,7 +37,6 @@ public class HomeListGui extends PagingPage { public List setAllItems() { List icons = new ArrayList<>(); List homeList = home.getHomeList(player.getUniqueId()); - homeList.sort(Comparator.comparing(HomeEntity::getId)); int i = 0; for (HomeEntity homeEntity : homeList) { Location location = homeEntity.getHomeLocation(); @@ -53,11 +51,7 @@ public class HomeListGui extends PagingPage { player.closeInventory(); }); icons.add(icon); - if (i == beds.size() - 1) { - i = 0; - } else { - i++; - } + i++; } return icons; } diff --git a/Home/src/main/resources/plugin.yml b/Home/src/main/resources/plugin.yml index c2ec49d..fa86150 100644 --- a/Home/src/main/resources/plugin.yml +++ b/Home/src/main/resources/plugin.yml @@ -2,5 +2,5 @@ name: UltiTools-Home version: '${project.version}' main: com.ultikits.plugins.home.PluginMain base-package: com.ultikits.plugins.home -api-version: 605 +api-version: 603 authors: [ wisdomme ] diff --git a/MysqlConnector/pom.xml b/MysqlConnector/pom.xml index 0a98262..7c5d787 100644 --- a/MysqlConnector/pom.xml +++ b/MysqlConnector/pom.xml @@ -88,7 +88,7 @@ MysqlConnector MysqlConnector - 连接MySQL数据库的必须前置模块 + A MysqlConnector Plugin access_key.txt F:\SpigotServers\Servers\1.19.4\plugins\UltiTools\plugins diff --git a/Sidebar/pom.xml b/Sidebar/pom.xml index 45fe5b1..1afb493 100644 --- a/Sidebar/pom.xml +++ b/Sidebar/pom.xml @@ -6,7 +6,7 @@ com.ultikits.plugins Sidebar - 1.0.1 + 1.0.0 8 @@ -18,7 +18,7 @@ com.ultikits UltiTools-API - 6.0.5 + 6.0.0.202310142230 provided @@ -84,9 +84,9 @@ Sidebar UltiTools-Sidebar - 高性能支持变量的侧边栏显示 + Server Sidebar Display access_key.txt - F:\SpigotServers\Paper\1.20.4\plugins\UltiTools\plugins + F:\SpigotServers\Servers\1.20.4\plugins\UltiTools\plugins diff --git a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/PlayerJoinListener.java b/Sidebar/src/main/java/com/ultikits/plugins/sidebar/PlayerJoinListener.java index 8b62d81..8bd3820 100644 --- a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/PlayerJoinListener.java +++ b/Sidebar/src/main/java/com/ultikits/plugins/sidebar/PlayerJoinListener.java @@ -1,36 +1,22 @@ package com.ultikits.plugins.sidebar; -import com.ultikits.ultitools.annotations.EventListener; import fr.mrmicky.fastboard.FastBoard; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; -import static com.ultikits.ultitools.utils.MessageUtils.coloredMsg; - -@EventListener public class PlayerJoinListener implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); FastBoard board = new FastBoard(player); - board.updateTitle(coloredMsg(SidebarPlugin.getInstance().getConfig(SidebarConfig.class).getTitle())); + board.updateTitle(ChatColor.translateAlternateColorCodes('&', SidebarPlugin.getInstance().getConfig(SidebarConfig.class).getTitle())); SidebarPlugin.getInstance().getBoards().put(player.getUniqueId(), board); } - @EventHandler - public void onPlayerKick(PlayerKickEvent event) { - Player player = event.getPlayer(); - FastBoard board = SidebarPlugin.getInstance().getBoards().remove(player.getUniqueId()); - if (board != null) { - board.delete(); - } - } - @EventHandler public void onQuit(PlayerQuitEvent e) { Player player = e.getPlayer(); diff --git a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SbCommand.java b/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SbCommand.java deleted file mode 100644 index 8b23f17..0000000 --- a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SbCommand.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.ultikits.plugins.sidebar; - -import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; -import com.ultikits.ultitools.annotations.command.*; -import fr.mrmicky.fastboard.FastBoard; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import static com.ultikits.ultitools.utils.MessageUtils.coloredMsg; - -@CmdExecutor(alias = {"sb"}) -@CmdTarget(CmdTarget.CmdTargetType.PLAYER) -public class SbCommand extends AbstractCommendExecutor { - - @CmdMapping(format = "close") - public void close(@CmdSender Player sender) { - SidebarPlugin.getInstance().getBoards().get(sender.getUniqueId()).delete(); - SidebarPlugin.getInstance().getBoards().remove(sender.getUniqueId()); - } - - @CmdMapping(format = "reload", requireOp = true) - public void reload() { - SidebarPlugin.getInstance().registerSelf(); - } - - @CmdMapping(format = "open") - public void open(@CmdSender Player player) { - FastBoard board = new FastBoard(player); - board.updateTitle(coloredMsg(SidebarPlugin.getInstance().getConfig(SidebarConfig.class).getTitle())); - SidebarPlugin.getInstance().getBoards().put(player.getUniqueId(), board); - } - - @Override - protected void handleHelp(CommandSender sender) { - - } -} diff --git a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SidebarConfig.java b/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SidebarConfig.java index 5337602..82e17e4 100644 --- a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SidebarConfig.java +++ b/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SidebarConfig.java @@ -1,7 +1,6 @@ package com.ultikits.plugins.sidebar; import com.ultikits.ultitools.abstracts.AbstractConfigEntity; -import com.ultikits.ultitools.annotations.ConfigEntity; import com.ultikits.ultitools.annotations.ConfigEntry; import lombok.Getter; import lombok.Setter; @@ -11,13 +10,12 @@ import java.util.List; @Getter @Setter -@ConfigEntity("config/config.yml") public class SidebarConfig extends AbstractConfigEntity { - @ConfigEntry(path = "scoreBoardTitle", comment = "侧边栏标题") + @ConfigEntry(path = "scoreBoardTitle", comment = "") private String title = "欢迎加入服务器"; - @ConfigEntry(path = "scoreBoardUpdateInterval", comment = "侧边栏更新间隔(单位:Tick)推荐20(每秒更新一次),最低1,更低会导致性能问题") + @ConfigEntry(path = "scoreBoardUpdateInterval", comment = "") private int updateInterval = 20; - @ConfigEntry(path = "sidebarContent", comment = "侧边栏内容(最多15行)") + @ConfigEntry(path = "sidebarContent", comment = "") private List content = new ArrayList<>(); public SidebarConfig(String configFilePath) { diff --git a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SidebarPlugin.java b/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SidebarPlugin.java index 3fc759e..f0e795a 100644 --- a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SidebarPlugin.java +++ b/Sidebar/src/main/java/com/ultikits/plugins/sidebar/SidebarPlugin.java @@ -3,7 +3,6 @@ package com.ultikits.plugins.sidebar; import com.ultikits.ultitools.UltiTools; import com.ultikits.ultitools.abstracts.AbstractConfigEntity; import com.ultikits.ultitools.abstracts.UltiToolsPlugin; -import com.ultikits.ultitools.annotations.UltiToolsModule; import fr.mrmicky.fastboard.FastBoard; import lombok.Getter; import me.clip.placeholderapi.PlaceholderAPI; @@ -13,25 +12,25 @@ import java.util.*; import static com.ultikits.ultitools.utils.MessageUtils.coloredMsg; -@UltiToolsModule public class SidebarPlugin extends UltiToolsPlugin { @Getter private static SidebarPlugin instance; @Getter private final Map boards = new HashMap<>(); - public SidebarPlugin(){ - super(); - instance = this; - } - @Override - public boolean registerSelf() { + public boolean registerSelf() throws IOException { + instance = this; + getListenerManager().register(this, new PlayerJoinListener()); int updateInterval = getConfig(SidebarConfig.class).getUpdateInterval(); new UpdateTask().runTaskTimerAsynchronously(UltiTools.getInstance(), 0, Math.max(updateInterval, 1)); return true; } + @Override + public void unregisterSelf() { + } + @Override public List supported() { return Arrays.asList("zh", "en"); @@ -43,4 +42,17 @@ public class SidebarPlugin extends UltiToolsPlugin { new SidebarConfig("config/config.yml") ); } + + protected void updateBoard(FastBoard board) { + List list = new ArrayList<>(); + for (String s : getConfig(SidebarConfig.class).getContent()) { + list.add(coloredMsg(PlaceholderAPI.setPlaceholders(board.getPlayer(), s))); + } + board.updateLines(list); + } + + @Override + public void reloadSelf() { + UltiToolsPlugin.getConfigManager().register(this, new SidebarConfig("config/config.yml")); + } } diff --git a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/UpdateTask.java b/Sidebar/src/main/java/com/ultikits/plugins/sidebar/UpdateTask.java index 3ee9564..97bdf77 100644 --- a/Sidebar/src/main/java/com/ultikits/plugins/sidebar/UpdateTask.java +++ b/Sidebar/src/main/java/com/ultikits/plugins/sidebar/UpdateTask.java @@ -1,26 +1,16 @@ package com.ultikits.plugins.sidebar; import fr.mrmicky.fastboard.FastBoard; -import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.scheduler.BukkitRunnable; -import java.util.ArrayList; -import java.util.List; - -import static com.ultikits.ultitools.utils.MessageUtils.coloredMsg; - public class UpdateTask extends BukkitRunnable { @Override public void run() { for (FastBoard board : SidebarPlugin.getInstance().getBoards().values()) { - if (board.isDeleted() || !board.getPlayer().isOnline()){ + if (board.isDeleted()){ continue; } - List list = new ArrayList<>(); - for (String s : SidebarPlugin.getInstance().getConfig(SidebarConfig.class).getContent()) { - list.add(coloredMsg(PlaceholderAPI.setPlaceholders(board.getPlayer(), s))); - } - board.updateLines(list); + SidebarPlugin.getInstance().updateBoard(board); } } } diff --git a/Sidebar/src/main/resources/plugin.yml b/Sidebar/src/main/resources/plugin.yml index 40dc9c0..fc2cbba 100644 --- a/Sidebar/src/main/resources/plugin.yml +++ b/Sidebar/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: Sidebar version: '${project.version}' main: com.ultikits.plugins.sidebar.SidebarPlugin -api-version: 605 -authors: [ 'wisdomme' ] +api-version: 600 +authors: [ wisdomme ] diff --git a/UltiTools-API/pom.xml b/UltiTools-API/pom.xml index 5c1ac72..32c9f3f 100755 --- a/UltiTools-API/pom.xml +++ b/UltiTools-API/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> UltiTools-API com.ultikits - 6.0.5 + 6.0.4 4.0.0 UltiTools-API This project is the base of the Ultitools plugin development. @@ -36,8 +36,7 @@ 1.8 UTF-8 - 4.3.0 - 5.8.25 + 4.1.13 @@ -132,7 +131,6 @@ ${project.build.directory}/UltiTools/lib - provided @@ -205,18 +203,6 @@ true - - com.ultikits - ultitools-maven-plugin - 1.0.0 - - UltiTools-API - UltiTools-API - UltiTools-API - access_key.txt - F:\SpigotServers\Paper\1.20.4\plugins - - @@ -265,7 +251,7 @@ com.github.MilkBowl VaultAPI - 1.7.1 + 1.7 provided @@ -275,38 +261,8 @@ cn.hutool - hutool-core - ${hutool.version} - - - cn.hutool - hutool-crypto - ${hutool.version} - - - cn.hutool - hutool-db - ${hutool.version} - - - cn.hutool - hutool-json - ${hutool.version} - - - cn.hutool - hutool-cache - ${hutool.version} - - - cn.hutool - hutool-cron - ${hutool.version} - - - cn.hutool - hutool-http - ${hutool.version} + hutool-all + 5.8.20 mysql @@ -323,7 +279,7 @@ net.kyori adventure-platform-bukkit - 4.3.2 + 4.3.0 com.github.hamza-cskn @@ -335,12 +291,6 @@ spring-context 5.3.31 - - me.clip - placeholderapi - 2.11.4 - provided - diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/UltiTools.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/UltiTools.java index f41dc24..ef7bba4 100755 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/UltiTools.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/UltiTools.java @@ -1,5 +1,6 @@ package com.ultikits.ultitools; +import com.ultikits.ultitools.context.ContextConfig; import com.ultikits.ultitools.commands.PluginInstallCommands; import com.ultikits.ultitools.commands.UltiToolsCommands; import com.ultikits.ultitools.context.ContextConfig; @@ -7,28 +8,20 @@ import com.ultikits.ultitools.entities.Language; import com.ultikits.ultitools.interfaces.DataStore; import com.ultikits.ultitools.interfaces.Localized; import com.ultikits.ultitools.interfaces.VersionWrapper; -import com.ultikits.ultitools.listeners.PlayerJoinListener; import com.ultikits.ultitools.manager.*; import com.ultikits.ultitools.tasks.DataStoreWaitingTask; -import com.ultikits.ultitools.utils.CommonUtils; -import com.ultikits.ultitools.utils.Metrics; import lombok.Getter; import lombok.Setter; import mc.obliviate.inventory.InventoryAPI; import net.kyori.adventure.platform.bukkit.BukkitAudiences; -import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.java.JavaPlugin; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.io.*; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLClassLoader; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -82,11 +75,7 @@ public final class UltiTools extends JavaPlugin implements Localized { * @return the version of the UltiTools */ public static int getPluginVersion() { - String versionString = getEnv().getString("version"); - if (versionString == null) { - throw new RuntimeException("Version not found in env.yml!"); - } - return Integer.parseInt(versionString.replace(".", "")); + return 604; } /** @@ -174,23 +163,10 @@ public final class UltiTools extends JavaPlugin implements Localized { String result = new BufferedReader(new InputStreamReader(in)).lines().collect(Collectors.joining("")); this.language = new Language(result); - // Plugin classloader initialization - pluginClassLoader = getClassLoader(); - URL serverJar = CommonUtils.getServerJar(); - try { - if (serverJar != null) { - String name = new File(serverJar.toURI()).getName().split("\\.jar")[0]; - Bukkit.getLogger().info("[UltiTools-API] Spigot API detected: " + name); - } - } catch (URISyntaxException e) { - throw new RuntimeException(e); - } - URLClassLoader classLoader = new URLClassLoader(new URL[]{serverJar}, pluginClassLoader); - // Spring context initialization pluginClassLoader = getClassLoader(); context = new AnnotationConfigApplicationContext(); - context.setClassLoader(classLoader); + context.setClassLoader(pluginClassLoader); context.register(ContextConfig.class); context.refresh(); context.registerShutdownHook(); @@ -208,11 +184,9 @@ public final class UltiTools extends JavaPlugin implements Localized { throw new RuntimeException(e); } - Metrics metrics = new Metrics(this, 8652); - // bukkit plugin registration - getCommandManager().register(context.getBean(UltiToolsCommands.class)); - getCommandManager().register(context.getBean(PluginInstallCommands.class)); + getCommandManager().register(new UltiToolsCommands()); + getCommandManager().register(new PluginInstallCommands()); Bukkit.getServicesManager().register( PluginManager.class, @@ -220,8 +194,6 @@ public final class UltiTools extends JavaPlugin implements Localized { this, ServicePriority.Normal ); - - Bukkit.getServer().getPluginManager().registerEvents(new PlayerJoinListener(), this); } /** @@ -242,7 +214,6 @@ public final class UltiTools extends JavaPlugin implements Localized { stopEmbedWebServer(); pluginManager.close(); context.close(); - getCommandManager().close(); DataStoreManager.close(); getConfigManager().saveAll(); Bukkit.getServicesManager().unregisterAll(this); @@ -304,20 +275,4 @@ public final class UltiTools extends JavaPlugin implements Localized { } return this.adventure; } - - /** - * Get the economy provider - * - * @return the instance of the Economy provider - */ - public Economy getEconomy() { - if (Bukkit.getPluginManager().getPlugin("Vault") == null) { - throw new RuntimeException("Vault not found!"); - } - RegisteredServiceProvider registration = Bukkit.getServicesManager().getRegistration(Economy.class); - if (registration == null) { - throw new RuntimeException("Economy service not found!"); - } - return registration.getProvider(); - } } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/AbstractCommendExecutor.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/AbstractCommendExecutor.java index 84797d1..b09cefc 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/AbstractCommendExecutor.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/AbstractCommendExecutor.java @@ -4,10 +4,8 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import com.ultikits.ultitools.UltiTools; import com.ultikits.ultitools.annotations.command.*; -import lombok.Getter; import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -17,12 +15,10 @@ import org.bukkit.scheduler.BukkitRunnable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.lang.reflect.Array; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.util.*; -import java.util.function.Function; public abstract class AbstractCommendExecutor implements TabExecutor { private final BiMap mappings = HashBiMap.create(); @@ -30,11 +26,7 @@ public abstract class AbstractCommendExecutor implements TabExecutor { private final BiMap ServerLock = HashBiMap.create(); private final BiMap CmdCoolDown = HashBiMap.create(); - @Getter - private final Map>, Function> parsers = new HashMap<>(); - public AbstractCommendExecutor() { - initParsers(); scanCommandMappings(); } @@ -42,31 +34,6 @@ public abstract class AbstractCommendExecutor implements TabExecutor { return this; } - @SuppressWarnings("deprecation") - private void initParsers() { - parsers.put(Arrays.asList(Boolean[].class, Boolean.class, boolean[].class, boolean.class), Boolean::parseBoolean); - parsers.put(Arrays.asList(Double[].class, Double.class, double[].class, double.class), Double::parseDouble); - parsers.put(Arrays.asList(Integer[].class, Integer.class, int[].class, int.class), Integer::parseInt); - parsers.put(Arrays.asList(Float[].class, Float.class, float[].class, float.class), Float::parseFloat); - parsers.put(Arrays.asList(Short[].class, Short.class, short[].class, short.class), Short::parseShort); - parsers.put(Arrays.asList(Short[].class, Short.class, short[].class, short.class), Byte::parseByte); - parsers.put(Arrays.asList(OfflinePlayer[].class, OfflinePlayer.class), Bukkit::getOfflinePlayer); - parsers.put(Arrays.asList(Long[].class, Long.class, long[].class, long.class), Long::parseLong); - parsers.put(Arrays.asList(Material[].class, Material.class), Material::getMaterial); - parsers.put(Arrays.asList(Player[].class, Player.class), Bukkit::getPlayerExact); - parsers.put(Arrays.asList(UUID[].class, UUID.class), UUID::fromString); - parsers.put(Arrays.asList(String[].class, String.class), s -> s); - } - - private Function getParser(Class type) { - //noinspection unchecked - return (Function) parsers.keySet().stream() - .filter(classes -> classes.stream().anyMatch(clazz -> clazz.isAssignableFrom(type))) - .findFirst() - .map(parsers::get) - .orElse(null); - } - private void scanCommandMappings() { Class clazz = this.getClass(); Method[] methods = clazz.getDeclaredMethods(); @@ -77,71 +44,70 @@ public abstract class AbstractCommendExecutor implements TabExecutor { } } - private static Map getParams(String[] args, String format) { - if (args.length == 0) { - return Collections.emptyMap(); - } - + private Map getParams(String[] args, String format) { String[] formatArgs = format.split(" "); - Map params = new HashMap<>(); - List paramList = new ArrayList<>(); - int index = 0; - - for (String arg : args) { - String currentFormatArg = formatArgs[index]; - - if (currentFormatArg.startsWith("<") && currentFormatArg.endsWith("...>")) { - paramList.add(arg); - } else if (currentFormatArg.startsWith("<") && currentFormatArg.endsWith(">")) { - String paramName = currentFormatArg.substring(1, currentFormatArg.length() - 1); - params.put(paramName, new String[]{arg}); + Map params = new HashMap<>(); + for (int i = 0; i < formatArgs.length; i++) { + if (formatArgs[i].startsWith("<") && formatArgs[i].endsWith(">")) { + params.put(formatArgs[i].substring(1, formatArgs[i].length() - 1), args[i]); + } + if (formatArgs[i].startsWith("[") && formatArgs[i].endsWith("]")) { + params.put(formatArgs[i].substring(1, formatArgs[i].length() - 1), args[i]); } - - index = (index + 1) % formatArgs.length; - } - - if (!paramList.isEmpty()) { - params.put(formatArgs[index].substring(1, formatArgs[index].length() - 1), paramList.toArray(new String[0])); } - return params; } private Method matchMethod(String[] args) { - if (args.length == 0) { - return mappings.getOrDefault("", null); - } for (Map.Entry entry : mappings.entrySet()) { String format = entry.getKey(); + if (format.isEmpty() && args.length == 0) { + return entry.getValue(); + } String[] formatArgs = format.split(" "); - boolean match = true; - - for (int i = 0; i < formatArgs.length - 1; i++) { - if (!matchesArgument(formatArgs[i], args[i])) { - match = false; - break; + String lastArg = formatArgs[formatArgs.length - 1]; + boolean match; + if (lastArg.startsWith("[") && lastArg.endsWith("]")) { + if (formatArgs.length - args.length == 1) { + continue; + } + match = true; + for (int i = 0; i < formatArgs.length - 1; i++) { + String formatArg = formatArgs[i]; + String actualArg = args[i]; + if (formatArg.startsWith("<") && formatArg.endsWith(">")) { + continue; + } + if (!formatArg.equalsIgnoreCase(actualArg)) { + match = false; + break; + } + } + } else { + if (formatArgs.length != args.length) { + continue; + } + match = true; + for (int i = 0; i < formatArgs.length; i++) { + String formatArg = formatArgs[i]; + String actualArg = args[i]; + if (formatArg.startsWith("<") && formatArg.endsWith(">")) { + continue; + } + if (!formatArg.equalsIgnoreCase(actualArg)) { + match = false; + break; + } } } - if (match && matchesLastArgument(formatArgs[formatArgs.length - 1], args[formatArgs.length - 1])) { + if (match) { return entry.getValue(); } } return null; } - private boolean matchesArgument(String formatArg, String actualArg) { - return formatArg.startsWith("<") && formatArg.endsWith(">") || formatArg.equalsIgnoreCase(actualArg); - } - - private boolean matchesLastArgument(String formatArg, String actualArg) { - if (formatArg.endsWith("...>")) { - return true; - } - return matchesArgument(formatArg, actualArg); - } - - private boolean checkSender(CommandSender sender) { Class clazz = this.getClass(); if (!clazz.isAnnotationPresent(CmdTarget.class)) { @@ -177,23 +143,21 @@ public abstract class AbstractCommendExecutor implements TabExecutor { private boolean checkPermission(CommandSender sender) { Class clazz = this.getClass(); - if (!clazz.isAnnotationPresent(CmdExecutor.class)) { return true; } - CmdExecutor cmdExecutor = clazz.getAnnotation(CmdExecutor.class); + if (cmdExecutor.permission().isEmpty()) { + return true; + } String permission = cmdExecutor.permission(); - - if (permission.isEmpty() || sender.hasPermission(permission)) { + if (sender.hasPermission(permission)) { return true; } - sender.sendMessage(ChatColor.RED + UltiTools.getInstance().i18n("你没有权限执行这个指令!")); return false; } - private boolean checkPermission(CommandSender sender, Method method) { if (!method.isAnnotationPresent(CmdMapping.class)) { return true; @@ -274,60 +238,95 @@ public abstract class AbstractCommendExecutor implements TabExecutor { return false; } - private Object[] buildParams(String[] strings, Method method, CommandSender commandSender) { - Map params = getParams(strings, mappings.inverse().get(method)); + private Object[] parseParams(String[] strings, Method method, CommandSender commandSender) { + Map params = getParams(strings, mappings.inverse().get(method)); Parameter[] parameters = method.getParameters(); - if (parameters.length == 0) { return new Object[0]; } - - List paramList = new ArrayList<>(); - + List ParamList = new ArrayList<>(); for (Parameter parameter : parameters) { - Class paramType = parameter.getType(); - - if (paramType.equals(Player.class) || paramType.equals(CommandSender.class)) { - boolean isCmdSenderAnnotationPresent = parameter.isAnnotationPresent(CmdSender.class); - - if (paramType.equals(Player.class) && commandSender instanceof Player) { - paramList.add(isCmdSenderAnnotationPresent ? commandSender : null); - } else if (paramType.equals(CommandSender.class)) { - paramList.add(isCmdSenderAnnotationPresent ? commandSender : null); - } - + if (parameter.getType().equals(Player.class)) { + Player player = (Player) commandSender; + ParamList.add(parameter.isAnnotationPresent(CmdSender.class) ? player : null); + continue; + } + if (parameter.getType().equals(CommandSender.class)) { + ParamList.add(parameter.isAnnotationPresent(CmdSender.class) ? commandSender : null); continue; } - if (parameter.isAnnotationPresent(CmdParam.class)) { CmdParam cmdParam = parameter.getAnnotation(CmdParam.class); - String[] value = params.get(cmdParam.value()); + String value = params.get(cmdParam.value()); try { - paramList.add(parseType(value, paramType)); - } catch (Exception e) { - commandSender.sendMessage(ChatColor.RED + e.getMessage()); - //noinspection CallToPrintStackTrace - e.printStackTrace(); + if (parameter.getType() == float.class || parameter.getType() == Float.class) { + ParamList.add(Float.parseFloat(value)); + continue; + } + if (parameter.getType() == double.class || parameter.getType() == Double.class) { + ParamList.add(Double.parseDouble(value)); + continue; + } + if (parameter.getType() == int.class || parameter.getType() == Integer.class) { + ParamList.add(Integer.parseInt(value)); + continue; + } + } catch (NumberFormatException e) { + commandSender.sendMessage( + ChatColor.RED + String.format( + UltiTools.getInstance().i18n("参数 '%s' 格式错误:'%s' 不是一个有效的 %s 类型"), + cmdParam.value(), value, parameter.getType().getName() + )); return null; } + if (parameter.getType() == OfflinePlayer.class) { + ParamList.add(Bukkit.getOfflinePlayer(value)); + continue; + } + if (parameter.getType() == Player.class) { + Player player = Bukkit.getPlayerExact(value); + if (player == null) { + commandSender.sendMessage( + ChatColor.RED + String.format( + UltiTools.getInstance().i18n("玩家 \"%s\" 未找到"), + cmdParam.value(), value, parameter.getType().getName() + )); + return null; + } + ParamList.add(player); + } + ParamList.add(value); } else { - paramList.add(null); + ParamList.add(null); + } + if (parameter.isAnnotationPresent(OptionalParam.class)) { + if (parameter.getType() == Map.class) { + String format = method.getAnnotation(CmdMapping.class).format(); + String OptionParams = params.get(format.split(" ")[format.split(" ").length - 1]); + ParamList.add(parseOptionalParams(OptionParams)); + } else { + ParamList.add(null); + } } } - return paramList.toArray(); + return ParamList.toArray(); } - private Object parseType(String[] value, Class type) { - Function parser = getParser(type); - if (type.isArray()) { - Object array = Array.newInstance(type.getComponentType(), value.length); - for (int i = 0; i < value.length; i++) { - Array.set(array, i, parser.apply(value[i])); + private Map> parseOptionalParams(String OptionalParam) { + Map> resultMap = new HashMap<>(); + + String[] optionGroups = OptionalParam.split(";"); + for (String optionGroup : optionGroups) { + String[] parts = optionGroup.split("="); + if (parts.length == 2) { + String optionName = parts[0]; + String[] arguments = parts[1].split(","); + + resultMap.put(optionName, Arrays.asList(arguments)); } - return array; - } else { - return parser.apply(value[0]); } + + return resultMap; } private void setCoolDown(CommandSender commandSender, Method method) { @@ -415,23 +414,20 @@ public abstract class AbstractCommendExecutor implements TabExecutor { if (checkCD(commandSender)) { return true; } - Object[] params = buildParams(strings, method, commandSender); - if (params == null) { - return true; - } + Object[] params = parseParams(strings, method, commandSender); BukkitRunnable bukkitRunnable = new BukkitRunnable() { @Override public void run() { - UsageLimit usageLimit = method.getAnnotation(UsageLimit.class); - - if (usageLimit != null) { - if (usageLimit.value().equals(UsageLimit.LimitType.ALL)) { + if (method.isAnnotationPresent(UsageLimit.class)) { + if (method.getAnnotation(UsageLimit.class).value().equals(UsageLimit.LimitType.ALL)) { ServerLock.put(((Player) commandSender).getUniqueId(), method); - } else if (usageLimit.value().equals(UsageLimit.LimitType.SENDER) && commandSender instanceof Player) { - SenderLock.put(((Player) commandSender).getUniqueId(), method); + } + if (method.getAnnotation(UsageLimit.class).value().equals(UsageLimit.LimitType.SENDER)) { + if (commandSender instanceof Player) { + SenderLock.put(((Player) commandSender).getUniqueId(), method); + } } } - try { setCoolDown(commandSender, method); method.invoke(getInstance(), params); @@ -439,11 +435,14 @@ public abstract class AbstractCommendExecutor implements TabExecutor { sendErrorMessage(commandSender, command); throw new RuntimeException(e); } finally { - if (usageLimit != null) { - if (usageLimit.value().equals(UsageLimit.LimitType.ALL)) { + if (method.isAnnotationPresent(UsageLimit.class)) { + if (method.getAnnotation(UsageLimit.class).value().equals(UsageLimit.LimitType.ALL)) { ServerLock.remove(((Player) commandSender).getUniqueId()); - } else if (usageLimit.value().equals(UsageLimit.LimitType.SENDER) && commandSender instanceof Player) { - SenderLock.remove(((Player) commandSender).getUniqueId()); + } + if (method.getAnnotation(UsageLimit.class).value().equals(UsageLimit.LimitType.SENDER)) { + if (commandSender instanceof Player) { + SenderLock.remove(((Player) commandSender).getUniqueId()); + } } } } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/UltiToolsPlugin.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/UltiToolsPlugin.java index fbdaec5..8f51e01 100755 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/UltiToolsPlugin.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/UltiToolsPlugin.java @@ -1,6 +1,5 @@ package com.ultikits.ultitools.abstracts; -import cn.hutool.core.comparator.VersionComparator; import cn.hutool.core.io.FileUtil; import com.ultikits.ultitools.UltiTools; import com.ultikits.ultitools.annotations.EnableAutoRegister; @@ -16,7 +15,6 @@ import lombok.Setter; import lombok.SneakyThrows; import org.bukkit.configuration.file.YamlConfiguration; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.core.annotation.AnnotationUtils; import java.io.*; import java.net.JarURLConnection; @@ -56,16 +54,16 @@ public abstract class UltiToolsPlugin implements IPlugin, Localized, Configurabl private AnnotationConfigApplicationContext context; @SneakyThrows - public UltiToolsPlugin() { - InputStream inputStream = getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); + public UltiToolsPlugin(){ + InputStream inputStream = getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); YamlConfiguration pluginConfig = YamlConfiguration.loadConfiguration(reader); - version = pluginConfig.getString("version"); - pluginName = pluginConfig.getString("name"); - authors = pluginConfig.getStringList("authors"); - loadAfter = pluginConfig.getStringList("loadAfter"); - minUltiToolsVersion = pluginConfig.getInt("api-version"); - mainClass = pluginConfig.getString("main"); + version = pluginConfig.getString("version"); + pluginName = pluginConfig.getString("name"); + authors = pluginConfig.getStringList("authors"); + loadAfter = pluginConfig.getStringList("loadAfter"); + minUltiToolsVersion = pluginConfig.getInt("api-version"); + mainClass = pluginConfig.getString("mainClass"); inputStream.close(); reader.close(); @@ -101,7 +99,7 @@ public abstract class UltiToolsPlugin implements IPlugin, Localized, Configurabl String result = new BufferedReader(new InputStreamReader(in)) .lines().collect(Collectors.joining("")); language = new Language(result); - } else { + }else { language = new Language("{}"); } } else { @@ -111,28 +109,8 @@ public abstract class UltiToolsPlugin implements IPlugin, Localized, Configurabl initConfig(); } - public static ConfigManager getConfigManager() { - return UltiTools.getInstance().getConfigManager(); - } - - public static ListenerManager getListenerManager() { - return UltiTools.getInstance().getListenerManager(); - } - - public static CommandManager getCommandManager() { - return UltiTools.getInstance().getCommandManager(); - } - - public static PluginManager getPluginManager() { - return UltiTools.getInstance().getPluginManager(); - } - - public static VersionWrapper getVersionWrapper() { - return UltiTools.getInstance().getVersionWrapper(); - } - public final void initConfig() { - EnableAutoRegister annotation = AnnotationUtils.findAnnotation(this.getClass(), EnableAutoRegister.class); + EnableAutoRegister annotation = this.getClass().getAnnotation(EnableAutoRegister.class); if (annotation != null && annotation.config()) { for (String packageName : CommonUtils.getPluginPackages(this)) { UltiTools.getInstance().getConfigManager().registerAll( @@ -148,14 +126,34 @@ public abstract class UltiToolsPlugin implements IPlugin, Localized, Configurabl } private InputStream getInputStream() throws IOException { - CodeSource src = this.getClass().getProtectionDomain().getCodeSource(); - URL jar = src.getLocation(); - String path = jar.getPath().startsWith("/") ? jar.getPath() : jar.getPath().substring(1); - URL url = new URL("jar:file:" + path + "!/plugin.yml"); + CodeSource src = this.getClass().getProtectionDomain().getCodeSource(); + URL jar = src.getLocation(); + String path = jar.getPath().startsWith("/") ? jar.getPath() : jar.getPath().substring(1); + URL url = new URL("jar:file:" + path + "!/plugin.yml"); JarURLConnection jarConnection = (JarURLConnection) url.openConnection(); return jarConnection.getInputStream(); } + public static ConfigManager getConfigManager() { + return UltiTools.getInstance().getConfigManager(); + } + + public static ListenerManager getListenerManager() { + return UltiTools.getInstance().getListenerManager(); + } + + public static CommandManager getCommandManager() { + return UltiTools.getInstance().getCommandManager(); + } + + public static PluginManager getPluginManager() { + return UltiTools.getInstance().getPluginManager(); + } + + public static VersionWrapper getVersionWrapper() { + return UltiTools.getInstance().getVersionWrapper(); + } + protected final String getConfigFolder() { return UltiTools.getInstance().getDataFolder().getAbsolutePath() + "/pluginConfig/" + this.getPluginName(); } @@ -242,19 +240,4 @@ public abstract class UltiToolsPlugin implements IPlugin, Localized, Configurabl public final String i18n(String code, String str) { return this.getLanguage().getLocalizedText(str); } - - public boolean isNewerVersionThan(UltiToolsPlugin plugin) { - return VersionComparator.INSTANCE.compare(this.getVersion(), plugin.getVersion()) > 0; - } - - @Override - public void unregisterSelf() { - getCommandManager().unregisterAll(this); - getListenerManager().unregisterAll(this); - } - - @Override - public void reloadSelf() { - getConfigManager().reloadConfigs(this); - } } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/guis/OkCancelPage.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/guis/OkCancelPage.java index c4b92c9..6146459 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/guis/OkCancelPage.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/guis/OkCancelPage.java @@ -5,14 +5,13 @@ import com.ultikits.ultitools.entities.Colors; import mc.obliviate.inventory.Gui; import mc.obliviate.inventory.Icon; import net.kyori.adventure.text.Component; +import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.event.inventory.InventoryType; import org.jetbrains.annotations.NotNull; -import static com.ultikits.ultitools.utils.MessageUtils.coloredMsg; - public abstract class OkCancelPage extends Gui { public OkCancelPage(@NotNull Player player, @NotNull String id, String title, int rows) { super(player, id, title, rows); @@ -36,13 +35,13 @@ public abstract class OkCancelPage extends Gui { lastRowBackground.setName(" "); this.fillRow(lastRowBackground, getSize() / 9 - 1); Icon ok = new Icon(UltiTools.getInstance().getVersionWrapper().getColoredPlaneGlass(Colors.GREEN)); - ok.setName(coloredMsg(UltiTools.getInstance().i18n("OK"))); + ok.setName(ChatColor.translateAlternateColorCodes('&', UltiTools.getInstance().i18n("OK"))); ok.onClick((e) -> { onOk(e); player.closeInventory(); }); Icon cancel = new Icon(UltiTools.getInstance().getVersionWrapper().getColoredPlaneGlass(Colors.RED)); - cancel.setName(coloredMsg(UltiTools.getInstance().i18n("取消"))); + cancel.setName(ChatColor.translateAlternateColorCodes('&', UltiTools.getInstance().i18n("取消"))); cancel.onClick((e) -> { onCancel(e); player.closeInventory(); diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/guis/PagingPage.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/guis/PagingPage.java index f4dfc00..b9522f1 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/guis/PagingPage.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/abstracts/guis/PagingPage.java @@ -45,17 +45,9 @@ public abstract class PagingPage extends Gui { @Override public void onOpen(InventoryOpenEvent event) { - updateItems(); - } - - public void updateItems() { - paginationManager.getItems().clear(); Icon lastRowBackground = new Icon(UltiTools.getInstance().getVersionWrapper().getColoredPlaneGlass(Colors.GRAY)); lastRowBackground.setName(" "); this.fillRow(lastRowBackground, getSize() / 9 - 1); - for (Icon icon : setAllItems()) { - paginationManager.addItem(icon); - } Icon next = new Icon(UltiTools.getInstance().getVersionWrapper().getColoredPlaneGlass(Colors.GREEN)); next.setName(info(UltiTools.getInstance().i18n("下一页"))); if (this.paginationManager.isLastPage()) { @@ -66,7 +58,6 @@ public abstract class PagingPage extends Gui { return; } this.paginationManager.goNextPage(); - updateItems(); }); Icon last = new Icon(UltiTools.getInstance().getVersionWrapper().getColoredPlaneGlass(Colors.GREEN)); last.setName(info(UltiTools.getInstance().i18n("上一页"))); @@ -78,10 +69,17 @@ public abstract class PagingPage extends Gui { return; } this.paginationManager.goPreviousPage(); - updateItems(); }); this.addItem(getLastSlot() - 3, next); this.addItem(getLastSlot() - 5, last); + updateItems(); + } + + public void updateItems() { + paginationManager.getItems().clear(); + for (Icon icon : setAllItems()) { + paginationManager.addItem(icon); + } paginationManager.update(); } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/EnableAutoRegister.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/EnableAutoRegister.java index c107ad3..810fb05 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/EnableAutoRegister.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/EnableAutoRegister.java @@ -1,10 +1,12 @@ package com.ultikits.ultitools.annotations; -import java.lang.annotation.*; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) -@Documented public @interface EnableAutoRegister { String scanPackage() default ""; boolean eventListener() default true; diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/EventListener.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/EventListener.java index f030a2e..9d44ac4 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/EventListener.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/EventListener.java @@ -1,13 +1,11 @@ package com.ultikits.ultitools.annotations; -import org.springframework.stereotype.Component; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; -import java.lang.annotation.*; - -@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) -@Component public @interface EventListener { - boolean manualRegister() default false; } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/I18n.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/I18n.java index 0057423..2b37e99 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/I18n.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/I18n.java @@ -1,10 +1,12 @@ package com.ultikits.ultitools.annotations; -import java.lang.annotation.*; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) -@Documented public @interface I18n { - String[] value() default {}; + String[] value(); } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/UltiToolsModule.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/UltiToolsModule.java deleted file mode 100644 index d0afe77..0000000 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/UltiToolsModule.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.ultikits.ultitools.annotations; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.annotation.AliasFor; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -@EnableAutoRegister -@I18n -@ComponentScan -@Configuration -public @interface UltiToolsModule { - @AliasFor(annotation = ComponentScan.class, attribute = "basePackages") - String[] scanBasePackages() default {}; - - @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses") - Class[] scanBasePackageClasses() default {}; - - @AliasFor(annotation = EnableAutoRegister.class, attribute = "eventListener") - boolean eventListener() default true; - - @AliasFor(annotation = EnableAutoRegister.class, attribute = "cmdExecutor") - boolean cmdExecutor() default true; - - @AliasFor(annotation = EnableAutoRegister.class, attribute = "config") - boolean config() default true; - - @AliasFor(annotation = I18n.class, attribute = "value") - String[] i18n() default {}; -} diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/command/CmdExecutor.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/command/CmdExecutor.java index e83729d..e36b4e2 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/command/CmdExecutor.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/annotations/command/CmdExecutor.java @@ -1,7 +1,5 @@ package com.ultikits.ultitools.annotations.command; -import org.springframework.stereotype.Component; - import java.lang.annotation.*; /** @@ -13,7 +11,6 @@ import java.lang.annotation.*; @Documented @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) -@Component public @interface CmdExecutor { /** @@ -35,9 +32,4 @@ public @interface CmdExecutor { * @return 是否要求OP */ boolean requireOp() default false; - - /** - * @return 是否手动注册 - */ - boolean manualRegister() default false; } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/commands/PluginInstallCommands.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/commands/PluginInstallCommands.java index 0f5c94c..34bb7cd 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/commands/PluginInstallCommands.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/commands/PluginInstallCommands.java @@ -121,7 +121,7 @@ public class PluginInstallCommands extends AbstractCommendExecutor { @CmdMapping(format = "install ") public void installPlugin(@CmdSender CommandSender sender, @CmdParam("plugin") String plugin, @CmdParam("version") String version) { if (PluginInstallUtils.installPlugin(plugin, version)) { - sender.sendMessage(ChatColor.GREEN + UltiTools.getInstance().i18n("安装成功!请重启服务器!请务必删除旧版本模块!")); + sender.sendMessage(ChatColor.GREEN + UltiTools.getInstance().i18n("安装成功!请重启服务器!")); } else { sender.sendMessage(ChatColor.RED + UltiTools.getInstance().i18n("安装失败!")); } @@ -130,7 +130,7 @@ public class PluginInstallCommands extends AbstractCommendExecutor { @CmdMapping(format = "install ") public void installPlugin(@CmdSender CommandSender sender, @CmdParam("plugin") String plugin) { if (PluginInstallUtils.installLatestPlugin(plugin)) { - sender.sendMessage(ChatColor.GREEN + UltiTools.getInstance().i18n("安装成功!请重启服务器!请务必删除旧版本模块!")); + sender.sendMessage(ChatColor.GREEN + UltiTools.getInstance().i18n("安装成功!请重启服务器!")); } else { sender.sendMessage(ChatColor.RED + UltiTools.getInstance().i18n("安装失败!")); } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/commands/UltiToolsCommands.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/commands/UltiToolsCommands.java index 6afb1cc..bc188db 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/commands/UltiToolsCommands.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/commands/UltiToolsCommands.java @@ -3,7 +3,10 @@ package com.ultikits.ultitools.commands; import com.ultikits.ultitools.UltiTools; import com.ultikits.ultitools.abstracts.AbstractCommendExecutor; import com.ultikits.ultitools.abstracts.UltiToolsPlugin; -import com.ultikits.ultitools.annotations.command.*; +import com.ultikits.ultitools.annotations.command.CmdExecutor; +import com.ultikits.ultitools.annotations.command.CmdMapping; +import com.ultikits.ultitools.annotations.command.CmdSender; +import com.ultikits.ultitools.annotations.command.CmdTarget; import org.bukkit.command.CommandSender; import java.io.IOException; diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/entities/common/WorldLocation.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/entities/common/WorldLocation.java index 377dcbb..523b33a 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/entities/common/WorldLocation.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/entities/common/WorldLocation.java @@ -2,7 +2,6 @@ package com.ultikits.ultitools.entities.common; import lombok.Data; import lombok.NoArgsConstructor; -import org.bukkit.Bukkit; import org.bukkit.Location; import java.io.Serializable; @@ -35,10 +34,6 @@ public class WorldLocation implements Serializable { this.pitch = pitch; } - public Location toLocation() { - return new Location(Bukkit.getWorld(world), x, y, z, yaw, pitch); - } - @Override public String toString() { return "{" diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/IPlugin.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/IPlugin.java index 99eed20..61f3377 100755 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/IPlugin.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/IPlugin.java @@ -24,5 +24,6 @@ public interface IPlugin { /** * 重载此插件模块时调用的方法,此重载并非重启模块,不会调用{@link #registerSelf()}和{@link #unregisterSelf()}。 */ - void reloadSelf(); + default void reloadSelf() { + } } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/Localized.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/Localized.java index 9759d29..5da46fd 100755 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/Localized.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/Localized.java @@ -1,7 +1,6 @@ package com.ultikits.ultitools.interfaces; import com.ultikits.ultitools.annotations.I18n; -import org.springframework.core.annotation.AnnotationUtils; import java.util.ArrayList; import java.util.Arrays; @@ -20,8 +19,9 @@ public interface Localized { * @return 支持的语言代码 Supported language codes */ default List supported() { - I18n i18n = AnnotationUtils.findAnnotation(this.getClass(), I18n.class); - if (i18n != null) { + Class clazz = this.getClass(); + if (clazz.isAnnotationPresent(I18n.class)) { + I18n i18n = clazz.getAnnotation(I18n.class); return Arrays.asList(i18n.value()); } else { return new ArrayList<>(); diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/TempEventHandler.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/TempEventHandler.java deleted file mode 100644 index 192f124..0000000 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/TempEventHandler.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.ultikits.ultitools.interfaces; - -import org.bukkit.entity.Player; -import org.bukkit.event.Event; - -public interface TempEventHandler { - boolean handle(E event); -} diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/TempListener.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/TempListener.java deleted file mode 100644 index bbebd9b..0000000 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/TempListener.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.ultikits.ultitools.interfaces; - -import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; - -public interface TempListener extends Listener { - void register(); - - default void unregister() { - HandlerList.unregisterAll(this); - } -} diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/PlayerTempListener.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/PlayerTempListener.java deleted file mode 100644 index e05f719..0000000 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/PlayerTempListener.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.ultikits.ultitools.interfaces.impl; - -import com.ultikits.ultitools.UltiTools; -import com.ultikits.ultitools.interfaces.TempEventHandler; -import com.ultikits.ultitools.interfaces.TempListener; -import lombok.*; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerEvent; - -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Setter -@Getter -public class PlayerTempListener implements TempListener { - private Class eventClass; - private EventPriority priority = EventPriority.NORMAL; - private TempEventHandler eventHandler; - private Player player; - - public PlayerTempListener(Class eventClass, TempEventHandler eventHandler) { - this.eventClass = eventClass; - this.eventHandler = eventHandler; - } - - public PlayerTempListener(Class eventClass, TempEventHandler eventHandler, Player player) { - this.eventClass = eventClass; - this.eventHandler = eventHandler; - this.player = player; - } - - @SuppressWarnings("unchecked") - public void register() { - Bukkit.getServer().getPluginManager().registerEvent(eventClass, this, priority, - (ignored, event) -> { - try { - if (player == null) { - if (eventHandler.handle((E) event)) { - unregister(); - } - } else if (((E) event).getPlayer().equals(player)) { - if (eventHandler.handle((E) event)) { - unregister(); - } - } - } catch (ClassCastException e) { - throw new RuntimeException(e); - } - }, - UltiTools.getInstance() - ); - } -} diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleJsonDataOperator.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleJsonDataOperator.java index 54862db..1a7ed88 100755 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleJsonDataOperator.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleJsonDataOperator.java @@ -61,7 +61,7 @@ public class SimpleJsonDataOperator implements Dat @Override public boolean exist(WhereCondition... whereConditions) { - return !getAll(whereConditions).isEmpty(); + return getAll(whereConditions).size() > 0; } @Override diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleTempListener.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleTempListener.java deleted file mode 100644 index 6a536f7..0000000 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/interfaces/impl/SimpleTempListener.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ultikits.ultitools.interfaces.impl; - -import com.ultikits.ultitools.UltiTools; -import com.ultikits.ultitools.interfaces.TempEventHandler; -import com.ultikits.ultitools.interfaces.TempListener; -import lombok.*; -import org.bukkit.Bukkit; -import org.bukkit.event.Event; -import org.bukkit.event.EventPriority; - -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Setter -@Getter -public class SimpleTempListener implements TempListener { - private Class eventClass; - private EventPriority priority = EventPriority.NORMAL; - private TempEventHandler eventHandler; - - public SimpleTempListener(Class eventClass, TempEventHandler eventHandler) { - this.eventClass = eventClass; - this.eventHandler = eventHandler; - } - - public void register() { - Bukkit.getServer().getPluginManager().registerEvent(eventClass, this, priority, - (ignored, event) -> { - try { - //noinspection unchecked - if (eventHandler.handle((E) event)){ - unregister(); - } - } catch (ClassCastException e) { - throw new RuntimeException(e); - } - }, - UltiTools.getInstance() - ); - } -} diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/listeners/PlayerJoinListener.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/listeners/PlayerJoinListener.java deleted file mode 100644 index 30e0592..0000000 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/listeners/PlayerJoinListener.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.ultikits.ultitools.listeners; - -import com.ultikits.ultitools.UltiTools; -import me.clip.placeholderapi.PlaceholderAPI; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.scheduler.BukkitRunnable; - -import java.util.Arrays; -import java.util.List; - -public class PlayerJoinListener implements Listener { - private final List placeholderList = Arrays.asList("player", "server", "math", "vault", "localtime"); - - // make the word first letter uppercase - public static String toUpperCaseFirstOne(String s) { - if (Character.isUpperCase(s.charAt(0))) - return s; - else - return Character.toUpperCase(s.charAt(0)) + s.substring(1); - } - - @EventHandler - public void onPlayerJoin(PlayerJoinEvent event) { - try { - boolean reload = false; - long time = 30L; - for (String placeholder : placeholderList) { - if (!PlaceholderAPI.isRegistered(placeholder)) { - reload = true; - new BukkitRunnable() { - @Override - public void run() { - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "papi ecloud download " + toUpperCaseFirstOne(placeholder)); - } - }.runTaskLater(UltiTools.getInstance(), time); - time += 30L; - } - } - if (reload) { - new BukkitRunnable() { - @Override - public void run() { - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "papi reload"); - } - }.runTaskLater(UltiTools.getInstance(), time + 30L); - } - } catch (Exception ignored) { - - } - } -} diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/CommandManager.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/CommandManager.java index d3775f1..cf9824a 100755 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/CommandManager.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/CommandManager.java @@ -6,7 +6,6 @@ import com.ultikits.ultitools.abstracts.UltiToolsPlugin; import com.ultikits.ultitools.annotations.command.CmdExecutor; import com.ultikits.ultitools.utils.PackageScanUtils; import org.bukkit.Bukkit; -import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandMap; import org.bukkit.command.PluginCommand; @@ -16,75 +15,32 @@ import org.bukkit.plugin.SimplePluginManager; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; -import java.util.*; +import java.util.Arrays; +import java.util.Objects; +import java.util.Set; public class CommandManager { - private final Map> commandListMap = new HashMap<>(); - - /** - * 手动注册一个命令。仅用于注册被@CmdExecutor注解的类。会自动注入依赖。 - * - * @param plugin 插件实例 - * @param clazz 命令执行器类 - * @param permission 权限 - * @param description 描述 - * @param aliases 别名 - */ - public void register(UltiToolsPlugin plugin, Class clazz, String permission, String description, String... aliases) { - CommandExecutor commandExecutor = UltiTools.getInstance().getContext().getBean(clazz); - register(plugin, commandExecutor, permission, description, aliases); - } - /** - * 手动注册一个命令,不会被容器管理。不会自动注入依赖。 - * - * @param plugin 插件实例 - * @param commandExecutor 命令执行器实例 - * @param permission 权限 - * @param description 描述 - * @param aliases 别名 - */ - private void register(UltiToolsPlugin plugin, CommandExecutor commandExecutor, String permission, String description, String... aliases) { - register(commandExecutor, permission, plugin.i18n(description), aliases); + public void register(CommandExecutor commandExecutor, String permission, String description, String... aliases) { PluginCommand command = getCommand(aliases[0], UltiTools.getInstance()); - commandListMap.computeIfAbsent(plugin, k -> new ArrayList<>()); - List commands = commandListMap.get(plugin); - if (!commands.contains(command)) { - commands.add(command); - } - } - /** - * 手动注册一个命令。仅用于注册被@CmdExecutor注解的类。会自动注入依赖。 - * - * @param plugin 插件实例 - * @param clazz 命令执行器类 - */ - public void register(UltiToolsPlugin plugin, Class clazz) { - CommandExecutor commandExecutor = plugin.getContext().getBean(clazz); - register(plugin, commandExecutor); + command.setAliases(Arrays.asList(aliases)); + command.setPermission(permission); + command.setDescription(description); + getCommandMap().register(UltiTools.getInstance().getDescription().getName(), command); + command.setExecutor(commandExecutor); } - /** - * 手动注册一个命令,不会被容器管理。不会自动注入依赖。 - * - * @param plugin 插件实例 - * @param commandExecutor 命令执行器实例 - */ - private void register(UltiToolsPlugin plugin, CommandExecutor commandExecutor) { - Class clazz = commandExecutor.getClass(); - - if (clazz.isAnnotationPresent(CmdExecutor.class)) { - CmdExecutor cmdExecutor = clazz.getAnnotation(CmdExecutor.class); - register(commandExecutor, cmdExecutor.permission(), plugin.i18n(cmdExecutor.description()), cmdExecutor.alias()); - return; - } else { - Bukkit.getLogger().warning("CommandExecutor " + clazz.getName() + " is not annotated with @CmdExecutor, please use legacy method to register command."); - } + public void register(UltiToolsPlugin plugin, CommandExecutor commandExecutor) { plugin.getContext().getAutowireCapableBeanFactory().autowireBean(commandExecutor); register(commandExecutor); } + public void unregister(String name) { + PluginCommand command = getCommand(name, UltiTools.getInstance()); + command.unregister(getCommandMap()); + } + public void registerAll(UltiToolsPlugin plugin, String packageName) { Set> classes = PackageScanUtils.scanAnnotatedClasses( CmdExecutor.class, @@ -104,44 +60,6 @@ public class CommandManager { } } - public void registerAll(UltiToolsPlugin plugin) { - for (String cmdBean : plugin.getContext().getBeanNamesForType(CommandExecutor.class)) { - CommandExecutor commandExecutor = plugin.getContext().getBean(cmdBean, CommandExecutor.class); - if (commandExecutor.getClass().getAnnotation(CmdExecutor.class).manualRegister()) continue; - register(plugin, commandExecutor); - } - } - - public void unregister(String name) { - PluginCommand command = getCommand(name, UltiTools.getInstance()); - command.unregister(getCommandMap()); - } - - public void unregisterAll(UltiToolsPlugin plugin) { - List commands = commandListMap.get(plugin); - if (commands == null) return; - for (Command command : commands) { - unregister(command.getName()); - } - } - - public void close() { - for (UltiToolsPlugin plugin : commandListMap.keySet()) { - unregisterAll(plugin); - } - } - - @Deprecated - public void register(CommandExecutor commandExecutor, String permission, String description, String... aliases) { - PluginCommand command = getCommand(aliases[0], UltiTools.getInstance()); - command.setAliases(Arrays.asList(aliases)); - command.setPermission(permission); - command.setDescription(description); - getCommandMap().register(UltiTools.getInstance().getDescription().getName(), command); - command.setExecutor(commandExecutor); - } - - @Deprecated public void register(CommandExecutor commandExecutor) { Class clazz = commandExecutor.getClass(); diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/DataStoreManager.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/DataStoreManager.java index eeb5366..46a14f0 100755 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/DataStoreManager.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/DataStoreManager.java @@ -23,7 +23,7 @@ public class DataStoreManager { } public static void close() { - Bukkit.getLogger().log(Level.INFO, "[UltiTools-API] Unregistering all data operators..."); + Bukkit.getLogger().log(Level.INFO, "Unregistering all data operators..."); for (DataStore dataStore : dataMap.values()) { dataStore.destroyAllOperators(); } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/ListenerManager.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/ListenerManager.java index 19d4b0b..5f2200b 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/ListenerManager.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/ListenerManager.java @@ -14,12 +14,6 @@ import java.util.*; public class ListenerManager { private final Map> listenerListMap = new HashMap<>(); - public void register(UltiToolsPlugin plugin, Class listenerClass) { - Listener listener = plugin.getContext().getBean(listenerClass); - register(plugin, listener); - } - - @Deprecated public void register(UltiToolsPlugin plugin, Listener listener) { listenerListMap.computeIfAbsent(plugin, k -> new ArrayList<>()); Bukkit.getServer().getPluginManager().registerEvents(listener, UltiTools.getInstance()); @@ -48,14 +42,6 @@ public class ListenerManager { } } - public void registerAll(UltiToolsPlugin plugin) { - for (String listenerBean : plugin.getContext().getBeanNamesForType(Listener.class)) { - Listener listener = plugin.getContext().getBean(listenerBean, Listener.class); - if (listener.getClass().getAnnotation(EventListener.class).manualRegister()) continue; - register(plugin, listener); - } - } - public void unregister(Listener listener) { HandlerList.unregisterAll(listener); } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/PluginManager.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/PluginManager.java index 98e0952..1e53725 100755 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/PluginManager.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/manager/PluginManager.java @@ -9,15 +9,11 @@ import com.ultikits.ultitools.utils.CommonUtils; import lombok.Getter; import org.bukkit.Bukkit; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.core.annotation.AnnotationUtils; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.net.URLDecoder; +import java.net.*; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; @@ -33,7 +29,7 @@ public class PluginManager { public void init() throws IOException { String currentPath = System.getProperty("user.dir"); - String path = currentPath + File.separator + "plugins" + File.separator + "UltiTools" + File.separator + "plugins"; + String path = currentPath+ File.separator + "plugins" + File.separator + "UltiTools" + File.separator + "plugins"; File pluginFolder = new File(path); File[] plugins = pluginFolder.listFiles((file) -> file.getName().endsWith(".jar")); @@ -84,7 +80,7 @@ public class PluginManager { } boolean result = invokeRegisterSelf(plugin); if (result) { - registerBukkit(plugin, true); + registerBukkit(plugin); } return result; } @@ -112,7 +108,7 @@ public class PluginManager { } boolean result = invokeRegisterSelf(plugin); if (result) { - registerBukkit(plugin, false); + registerBukkit(plugin); } return result; } @@ -142,7 +138,7 @@ public class PluginManager { } boolean result = invokeRegisterSelf(plugin); if (result) { - registerBukkit(plugin, false); + registerBukkit(plugin); } return result; } @@ -178,10 +174,7 @@ public class PluginManager { try { @SuppressWarnings("resource") URLClassLoader classLoader = new URLClassLoader( - new URL[]{ - new URL(URLDecoder.decode(pluginJar.toURI().toASCIIString(), "UTF-8")), - CommonUtils.getServerJar() - }, + new URL[]{new URL(URLDecoder.decode(pluginJar.toURI().toASCIIString(), "UTF-8"))}, UltiTools.getInstance().getPluginClassLoader() ); try (JarFile jarFile = new JarFile(pluginJar)) { @@ -218,21 +211,6 @@ public class PluginManager { private boolean invokeRegisterSelf(UltiToolsPlugin plugin) { - for (UltiToolsPlugin plugin1 : pluginList) { - if (!plugin1.getMainClass().equals(plugin.getMainClass())) { - continue; - } - if (plugin1.isNewerVersionThan(plugin)) { - Bukkit.getLogger().log( - Level.WARNING, - String.format("[UltiTools-API] %s load failed!There is already a new version!", plugin.getPluginName()) - ); - plugin.getContext().close(); - return false; - } else if (plugin.isNewerVersionThan(plugin1)) { - plugin1.unregisterSelf(); - } - } if (plugin.getMinUltiToolsVersion() > UltiTools.getPluginVersion()) { Bukkit.getLogger().log( Level.WARNING, @@ -243,6 +221,7 @@ public class PluginManager { } try { boolean registerSelf = plugin.registerSelf(); + registerBukkit(plugin); if (registerSelf) { pluginList.add(plugin); Bukkit.getLogger().log( @@ -265,14 +244,10 @@ public class PluginManager { } private UltiToolsPlugin initializePlugin(Class pluginClass, Object... constructorArgs) { - URLClassLoader urlClassLoader = new URLClassLoader( - new URL[]{CommonUtils.getServerJar()}, - pluginClass.getClassLoader() - ); AnnotationConfigApplicationContext pluginContext = new AnnotationConfigApplicationContext(); pluginContext.setParent(UltiTools.getInstance().getContext()); pluginContext.registerShutdownHook(); - pluginContext.setClassLoader(urlClassLoader); + pluginContext.setClassLoader(pluginClass.getClassLoader()); pluginContext.registerBean(pluginClass, constructorArgs); pluginContext.refresh(); UltiToolsPlugin plugin = pluginContext.getBean(pluginClass); @@ -282,26 +257,18 @@ public class PluginManager { return plugin; } - private void registerBukkit(UltiToolsPlugin plugin, boolean flag) { - EnableAutoRegister annotation = AnnotationUtils.findAnnotation(plugin.getClass(), EnableAutoRegister.class); - if (annotation == null) { + private void registerBukkit(UltiToolsPlugin plugin) { + if (!plugin.getClass().isAnnotationPresent(EnableAutoRegister.class)) { return; } + EnableAutoRegister annotation = plugin.getClass().getAnnotation(EnableAutoRegister.class); String[] packages = CommonUtils.getPluginPackages(plugin); for (String packageName : packages) { if (annotation.cmdExecutor()) { - if (flag) { - UltiTools.getInstance().getCommandManager().registerAll(plugin); - } else { - UltiTools.getInstance().getCommandManager().registerAll(plugin, packageName); - } + UltiTools.getInstance().getCommandManager().registerAll(plugin, packageName); } if (annotation.eventListener()) { - if (flag) { - UltiTools.getInstance().getListenerManager().registerAll(plugin); - } else { - UltiTools.getInstance().getListenerManager().registerAll(plugin, packageName); - } + UltiTools.getInstance().getListenerManager().registerAll(plugin, packageName); } } } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/utils/CommonUtils.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/utils/CommonUtils.java index 199e48e..68c6685 100644 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/utils/CommonUtils.java +++ b/UltiTools-API/src/main/java/com/ultikits/ultitools/utils/CommonUtils.java @@ -6,16 +6,12 @@ import cn.hutool.json.JSONUtil; import com.ultikits.ultitools.UltiTools; import com.ultikits.ultitools.abstracts.UltiToolsPlugin; import com.ultikits.ultitools.annotations.EnableAutoRegister; -import org.bukkit.Bukkit; import org.springframework.context.annotation.ComponentScan; import java.io.File; import java.io.FileWriter; import java.io.IOException; -import java.net.URL; import java.nio.charset.StandardCharsets; -import java.security.CodeSource; -import java.security.ProtectionDomain; public class CommonUtils { @@ -58,12 +54,4 @@ public class CommonUtils { return packages; } - public static URL getServerJar() { - ProtectionDomain protectionDomain = Bukkit.class.getProtectionDomain(); - CodeSource codeSource = protectionDomain.getCodeSource(); - if (codeSource == null) { - return null; - } - return codeSource.getLocation(); - } } diff --git a/UltiTools-API/src/main/java/com/ultikits/ultitools/utils/Metrics.java b/UltiTools-API/src/main/java/com/ultikits/ultitools/utils/Metrics.java deleted file mode 100644 index f26f011..0000000 --- a/UltiTools-API/src/main/java/com/ultikits/ultitools/utils/Metrics.java +++ /dev/null @@ -1,713 +0,0 @@ -package com.ultikits.ultitools.utils; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.google.gson.JsonPrimitive; -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.RegisteredServiceProvider; -import org.bukkit.plugin.ServicePriority; - -import javax.net.ssl.HttpsURLConnection; -import java.io.*; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.concurrent.Callable; -import java.util.logging.Level; -import java.util.zip.GZIPOutputStream; - -/** - * bStats collects some data for plugin authors. - *

- * Check out https://bStats.org/ to learn more about bStats! - */ -@SuppressWarnings({"WeakerAccess", "unused"}) -public class Metrics { - - // The version of this bStats class - public static final int B_STATS_VERSION = 1; - // The url to which the data is sent - private static final String URL = "https://bStats.org/submitData/bukkit"; - // Should failed requests be logged? - private static boolean logFailedRequests; - // Should the sent data be logged? - private static boolean logSentData; - // Should the response text be logged? - private static boolean logResponseStatusText; - // The uuid of the server - private static String serverUUID; - - static { - // You can use the property to disable the check in your test environment - if (System.getProperty("bstats.relocatecheck") == null || !System.getProperty("bstats.relocatecheck").equals("false")) { - // Maven's Relocate is clever and changes strings, too. So we have to use this little "trick" ... :D - final String defaultPackage = new String( - new byte[]{'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's', '.', 'b', 'u', 'k', 'k', 'i', 't'}); - final String examplePackage = new String(new byte[]{'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'}); - } - } - - // The plugin - private final Plugin plugin; - // The plugin id - private final int pluginId; - // A list with all custom charts - private final List charts = new ArrayList<>(); - // Is bStats enabled on this server? - private boolean enabled; - - /** - * Class constructor. - * - * @param plugin The plugin which stats should be submitted. - * @param pluginId The id of the plugin. - * It can be found at What is my plugin id? - */ - public Metrics(Plugin plugin, int pluginId) { - if (plugin == null) { - throw new IllegalArgumentException("Plugin cannot be null!"); - } - this.plugin = plugin; - this.pluginId = pluginId; - - // Get the config file - File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "bStats"); - File configFile = new File(bStatsFolder, "config.yml"); - YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile); - - // Check if the config file exists - if (!config.isSet("serverUuid")) { - - // Add default values - config.addDefault("enabled", true); - // Every server gets it's unique random id. - config.addDefault("serverUuid", UUID.randomUUID().toString()); - // Should failed request be logged? - config.addDefault("logFailedRequests", false); - // Should the sent data be logged? - config.addDefault("logSentData", false); - // Should the response text be logged? - config.addDefault("logResponseStatusText", false); - - // Inform the server owners about bStats - config.options().header( - "bStats collects some data for plugin authors like how many servers are using their plugins.\n" + - "To honor their work, you should not disable it.\n" + - "This has nearly no effect on the server performance!\n" + - "Check out https://bStats.org/ to learn more :)" - ).copyDefaults(true); - try { - config.save(configFile); - } catch (IOException ignored) { - } - } - - // Load the data - enabled = config.getBoolean("enabled", true); - serverUUID = config.getString("serverUuid"); - logFailedRequests = config.getBoolean("logFailedRequests", false); - logSentData = config.getBoolean("logSentData", false); - logResponseStatusText = config.getBoolean("logResponseStatusText", false); - - if (enabled) { - boolean found = false; - // Search for all other bStats Metrics classes to see if we are the first one - for (Class service : Bukkit.getServicesManager().getKnownServices()) { - try { - service.getField("B_STATS_VERSION"); // Our identifier :) - found = true; // We aren't the first - break; - } catch (NoSuchFieldException ignored) { - } - } - // Register our service - Bukkit.getServicesManager().register(Metrics.class, this, plugin, ServicePriority.Normal); - if (!found) { - // We are the first! - startSubmitting(); - } - } - } - - /** - * Sends the data to the bStats server. - * - * @param plugin Any plugin. It's just used to get a logger instance. - * @param data The data to send. - * @throws Exception If the request failed. - */ - private static void sendData(Plugin plugin, JsonObject data) throws Exception { - if (data == null) { - throw new IllegalArgumentException("Data cannot be null!"); - } - if (Bukkit.isPrimaryThread()) { - throw new IllegalAccessException("This method must not be called from the main thread!"); - } - if (logSentData) { - plugin.getLogger().info("Sending data to bStats: " + data); - } - HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection(); - - // Compress the data to save bandwidth - byte[] compressedData = compress(data.toString()); - - // Add headers - connection.setRequestMethod("POST"); - connection.addRequestProperty("Accept", "application/json"); - connection.addRequestProperty("Connection", "close"); - connection.addRequestProperty("Content-Encoding", "gzip"); // We gzip our request - connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length)); - connection.setRequestProperty("Content-Type", "application/json"); // We send our data in JSON format - connection.setRequestProperty("User-Agent", "MC-Server/" + B_STATS_VERSION); - - // Send data - connection.setDoOutput(true); - try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { - outputStream.write(compressedData); - } - - StringBuilder builder = new StringBuilder(); - try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { - String line; - while ((line = bufferedReader.readLine()) != null) { - builder.append(line); - } - } - - if (logResponseStatusText) { - plugin.getLogger().info("Sent data to bStats and received response: " + builder); - } - } - - /** - * Gzips the given String. - * - * @param str The string to gzip. - * @return The gzipped String. - * @throws IOException If the compression failed. - */ - private static byte[] compress(final String str) throws IOException { - if (str == null) { - return null; - } - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - try (GZIPOutputStream gzip = new GZIPOutputStream(outputStream)) { - gzip.write(str.getBytes(StandardCharsets.UTF_8)); - } - return outputStream.toByteArray(); - } - - /** - * Checks if bStats is enabled. - * - * @return Whether bStats is enabled or not. - */ - public boolean isEnabled() { - return enabled; - } - - /** - * Adds a custom chart. - * - * @param chart The chart to add. - */ - public void addCustomChart(CustomChart chart) { - if (chart == null) { - throw new IllegalArgumentException("Chart cannot be null!"); - } - charts.add(chart); - } - - /** - * Starts the Scheduler which submits our data every 30 minutes. - */ - private void startSubmitting() { - final Timer timer = new Timer(true); // We use a timer cause the Bukkit scheduler is affected by server lags - timer.scheduleAtFixedRate(new TimerTask() { - @Override - public void run() { - if (!plugin.isEnabled()) { // Plugin was disabled - timer.cancel(); - return; - } - // Nevertheless we want our code to run in the Bukkit main thread, so we have to use the Bukkit scheduler - // Don't be afraid! The connection to the bStats server is still async, only the stats collection is sync ;) - Bukkit.getScheduler().runTask(plugin, () -> submitData()); - } - }, 1000 * 60 * 5, 1000 * 60 * 30); - // Submit the data every 30 minutes, first time after 5 minutes to give other plugins enough time to start - // WARNING: Changing the frequency has no effect but your plugin WILL be blocked/deleted! - // WARNING: Just don't do it! - } - - /** - * Gets the plugin specific data. - * This method is called using Reflection. - * - * @return The plugin specific data. - */ - public JsonObject getPluginData() { - JsonObject data = new JsonObject(); - - String pluginName = plugin.getDescription().getName(); - String pluginVersion = plugin.getDescription().getVersion(); - - data.addProperty("pluginName", pluginName); // Append the name of the plugin - data.addProperty("id", pluginId); // Append the id of the plugin - data.addProperty("pluginVersion", pluginVersion); // Append the version of the plugin - JsonArray customCharts = new JsonArray(); - for (CustomChart customChart : charts) { - // Add the data of the custom charts - JsonObject chart = customChart.getRequestJsonObject(); - if (chart == null) { // If the chart is null, we skip it - continue; - } - customCharts.add(chart); - } - data.add("customCharts", customCharts); - - return data; - } - - /** - * Gets the server specific data. - * - * @return The server specific data. - */ - private JsonObject getServerData() { - // Minecraft specific data - int playerAmount; - try { - // Around MC 1.8 the return type was changed to a collection from an array, - // This fixes java.lang.NoSuchMethodError: org.bukkit.Bukkit.getOnlinePlayers()Ljava/util/Collection; - Method onlinePlayersMethod = Class.forName("org.bukkit.Server").getMethod("getOnlinePlayers"); - playerAmount = onlinePlayersMethod.getReturnType().equals(Collection.class) - ? ((Collection) onlinePlayersMethod.invoke(Bukkit.getServer())).size() - : ((Player[]) onlinePlayersMethod.invoke(Bukkit.getServer())).length; - } catch (Exception e) { - playerAmount = Bukkit.getOnlinePlayers().size(); // Just use the new method if the Reflection failed - } - int onlineMode = Bukkit.getOnlineMode() ? 1 : 0; - String bukkitVersion = Bukkit.getVersion(); - String bukkitName = Bukkit.getName(); - - // OS/Java specific data - String javaVersion = System.getProperty("java.version"); - String osName = System.getProperty("os.name"); - String osArch = System.getProperty("os.arch"); - String osVersion = System.getProperty("os.version"); - int coreCount = Runtime.getRuntime().availableProcessors(); - - JsonObject data = new JsonObject(); - - data.addProperty("serverUUID", serverUUID); - - data.addProperty("playerAmount", playerAmount); - data.addProperty("onlineMode", onlineMode); - data.addProperty("bukkitVersion", bukkitVersion); - data.addProperty("bukkitName", bukkitName); - - data.addProperty("javaVersion", javaVersion); - data.addProperty("osName", osName); - data.addProperty("osArch", osArch); - data.addProperty("osVersion", osVersion); - data.addProperty("coreCount", coreCount); - - return data; - } - - /** - * Collects the data and sends it afterwards. - */ - private void submitData() { - final JsonObject data = getServerData(); - - JsonArray pluginData = new JsonArray(); - // Search for all other bStats Metrics classes to get their plugin data - for (Class service : Bukkit.getServicesManager().getKnownServices()) { - try { - service.getField("B_STATS_VERSION"); // Our identifier :) - - for (RegisteredServiceProvider provider : Bukkit.getServicesManager().getRegistrations(service)) { - try { - Object plugin = provider.getService().getMethod("getPluginData").invoke(provider.getProvider()); - if (plugin instanceof JsonObject) { - pluginData.add((JsonObject) plugin); - } else { // old bstats version compatibility - try { - Class jsonObjectJsonSimple = Class.forName("org.json.simple.JSONObject"); - if (plugin.getClass().isAssignableFrom(jsonObjectJsonSimple)) { - Method jsonStringGetter = jsonObjectJsonSimple.getDeclaredMethod("toJSONString"); - jsonStringGetter.setAccessible(true); - String jsonString = (String) jsonStringGetter.invoke(plugin); - JsonObject object = new JsonParser().parse(jsonString).getAsJsonObject(); - pluginData.add(object); - } - } catch (ClassNotFoundException e) { - // minecraft version 1.14+ - if (logFailedRequests) { - this.plugin.getLogger().log(Level.SEVERE, "Encountered unexpected exception", e); - } - } - } - } catch (NullPointerException | NoSuchMethodException | IllegalAccessException | - InvocationTargetException ignored) { - } - } - } catch (NoSuchFieldException ignored) { - } - } - - data.add("plugins", pluginData); - - // Create a new thread for the connection to the bStats server - new Thread(() -> { - try { - // Send the data - sendData(plugin, data); - } catch (Exception e) { - // Something went wrong! :( - if (logFailedRequests) { - plugin.getLogger().log(Level.WARNING, "Could not submit plugin stats of " + plugin.getName(), e); - } - } - }).start(); - } - - /** - * Represents a custom chart. - */ - public static abstract class CustomChart { - - // The id of the chart - final String chartId; - - /** - * Class constructor. - * - * @param chartId The id of the chart. - */ - CustomChart(String chartId) { - if (chartId == null || chartId.isEmpty()) { - throw new IllegalArgumentException("ChartId cannot be null or empty!"); - } - this.chartId = chartId; - } - - private JsonObject getRequestJsonObject() { - JsonObject chart = new JsonObject(); - chart.addProperty("chartId", chartId); - try { - JsonObject data = getChartData(); - if (data == null) { - // If the data is null we don't send the chart. - return null; - } - chart.add("data", data); - } catch (Throwable t) { - if (logFailedRequests) { - Bukkit.getLogger().log(Level.WARNING, "Failed to get data for custom chart with id " + chartId, t); - } - return null; - } - return chart; - } - - protected abstract JsonObject getChartData() throws Exception; - - } - - /** - * Represents a custom simple pie. - */ - public static class SimplePie extends CustomChart { - - private final Callable callable; - - /** - * Class constructor. - * - * @param chartId The id of the chart. - * @param callable The callable which is used to request the chart data. - */ - public SimplePie(String chartId, Callable callable) { - super(chartId); - this.callable = callable; - } - - @Override - protected JsonObject getChartData() throws Exception { - JsonObject data = new JsonObject(); - String value = callable.call(); - if (value == null || value.isEmpty()) { - // Null = skip the chart - return null; - } - data.addProperty("value", value); - return data; - } - } - - /** - * Represents a custom advanced pie. - */ - public static class AdvancedPie extends CustomChart { - - private final Callable> callable; - - /** - * Class constructor. - * - * @param chartId The id of the chart. - * @param callable The callable which is used to request the chart data. - */ - public AdvancedPie(String chartId, Callable> callable) { - super(chartId); - this.callable = callable; - } - - @Override - protected JsonObject getChartData() throws Exception { - JsonObject data = new JsonObject(); - JsonObject values = new JsonObject(); - Map map = callable.call(); - if (map == null || map.isEmpty()) { - // Null = skip the chart - return null; - } - boolean allSkipped = true; - for (Map.Entry entry : map.entrySet()) { - if (entry.getValue() == 0) { - continue; // Skip this invalid - } - allSkipped = false; - values.addProperty(entry.getKey(), entry.getValue()); - } - if (allSkipped) { - // Null = skip the chart - return null; - } - data.add("values", values); - return data; - } - } - - /** - * Represents a custom drilldown pie. - */ - public static class DrilldownPie extends CustomChart { - - private final Callable>> callable; - - /** - * Class constructor. - * - * @param chartId The id of the chart. - * @param callable The callable which is used to request the chart data. - */ - public DrilldownPie(String chartId, Callable>> callable) { - super(chartId); - this.callable = callable; - } - - @Override - public JsonObject getChartData() throws Exception { - JsonObject data = new JsonObject(); - JsonObject values = new JsonObject(); - Map> map = callable.call(); - if (map == null || map.isEmpty()) { - // Null = skip the chart - return null; - } - boolean reallyAllSkipped = true; - for (Map.Entry> entryValues : map.entrySet()) { - JsonObject value = new JsonObject(); - boolean allSkipped = true; - for (Map.Entry valueEntry : map.get(entryValues.getKey()).entrySet()) { - value.addProperty(valueEntry.getKey(), valueEntry.getValue()); - allSkipped = false; - } - if (!allSkipped) { - reallyAllSkipped = false; - values.add(entryValues.getKey(), value); - } - } - if (reallyAllSkipped) { - // Null = skip the chart - return null; - } - data.add("values", values); - return data; - } - } - - /** - * Represents a custom single line chart. - */ - public static class SingleLineChart extends CustomChart { - - private final Callable callable; - - /** - * Class constructor. - * - * @param chartId The id of the chart. - * @param callable The callable which is used to request the chart data. - */ - public SingleLineChart(String chartId, Callable callable) { - super(chartId); - this.callable = callable; - } - - @Override - protected JsonObject getChartData() throws Exception { - JsonObject data = new JsonObject(); - int value = callable.call(); - if (value == 0) { - // Null = skip the chart - return null; - } - data.addProperty("value", value); - return data; - } - - } - - /** - * Represents a custom multi line chart. - */ - public static class MultiLineChart extends CustomChart { - - private final Callable> callable; - - /** - * Class constructor. - * - * @param chartId The id of the chart. - * @param callable The callable which is used to request the chart data. - */ - public MultiLineChart(String chartId, Callable> callable) { - super(chartId); - this.callable = callable; - } - - @Override - protected JsonObject getChartData() throws Exception { - JsonObject data = new JsonObject(); - JsonObject values = new JsonObject(); - Map map = callable.call(); - if (map == null || map.isEmpty()) { - // Null = skip the chart - return null; - } - boolean allSkipped = true; - for (Map.Entry entry : map.entrySet()) { - if (entry.getValue() == 0) { - continue; // Skip this invalid - } - allSkipped = false; - values.addProperty(entry.getKey(), entry.getValue()); - } - if (allSkipped) { - // Null = skip the chart - return null; - } - data.add("values", values); - return data; - } - - } - - /** - * Represents a custom simple bar chart. - */ - public static class SimpleBarChart extends CustomChart { - - private final Callable> callable; - - /** - * Class constructor. - * - * @param chartId The id of the chart. - * @param callable The callable which is used to request the chart data. - */ - public SimpleBarChart(String chartId, Callable> callable) { - super(chartId); - this.callable = callable; - } - - @Override - protected JsonObject getChartData() throws Exception { - JsonObject data = new JsonObject(); - JsonObject values = new JsonObject(); - Map map = callable.call(); - if (map == null || map.isEmpty()) { - // Null = skip the chart - return null; - } - for (Map.Entry entry : map.entrySet()) { - JsonArray categoryValues = new JsonArray(); - categoryValues.add(new JsonPrimitive(entry.getValue())); - values.add(entry.getKey(), categoryValues); - } - data.add("values", values); - return data; - } - - } - - /** - * Represents a custom advanced bar chart. - */ - public static class AdvancedBarChart extends CustomChart { - - private final Callable> callable; - - /** - * Class constructor. - * - * @param chartId The id of the chart. - * @param callable The callable which is used to request the chart data. - */ - public AdvancedBarChart(String chartId, Callable> callable) { - super(chartId); - this.callable = callable; - } - - @Override - protected JsonObject getChartData() throws Exception { - JsonObject data = new JsonObject(); - JsonObject values = new JsonObject(); - Map map = callable.call(); - if (map == null || map.isEmpty()) { - // Null = skip the chart - return null; - } - boolean allSkipped = true; - for (Map.Entry entry : map.entrySet()) { - if (entry.getValue().length == 0) { - continue; // Skip this invalid - } - allSkipped = false; - JsonArray categoryValues = new JsonArray(); - for (int categoryValue : entry.getValue()) { - categoryValues.add(new JsonPrimitive(categoryValue)); - } - values.add(entry.getKey(), categoryValues); - } - if (allSkipped) { - // Null = skip the chart - return null; - } - data.add("values", values); - return data; - } - } - -} diff --git a/UltiTools-API/src/main/resources/env.yml b/UltiTools-API/src/main/resources/env.yml index 3b17b89..902c489 100644 --- a/UltiTools-API/src/main/resources/env.yml +++ b/UltiTools-API/src/main/resources/env.yml @@ -1,36 +1,38 @@ # This file is used to store environment variables -version: ${project.version} + api-url: "https://api.v2.ultikits.com" oss-url: "https://ultitools.oss-cn-shanghai.aliyuncs.com" lib-path: "/lib/" libraries: - - "advancedslot-4.3.0.jar" - - "adventure-api-4.13.1.jar" - - "adventure-key-4.13.1.jar" - - "adventure-nbt-4.13.1.jar" - - "adventure-platform-api-4.3.2.jar" - - "adventure-platform-bukkit-4.3.2.jar" - - "adventure-platform-facet-4.3.2.jar" - - "adventure-platform-viaversion-4.3.2.jar" - - "adventure-text-serializer-bungeecord-4.3.2.jar" - - "adventure-text-serializer-gson-4.13.1.jar" - - "adventure-text-serializer-gson-legacy-impl-4.13.1.jar" - - "adventure-text-serializer-legacy-4.13.1.jar" - - "annotations-23.0.0.jar" - - "configurablegui-4.3.0.jar" - - "core-4.3.0.jar" + - "advancedslot-4.1.13.jar" + - "adventure-api-4.13.0.jar" + - "adventure-key-4.13.0.jar" + - "adventure-nbt-4.13.0.jar" + - "adventure-platform-api-4.3.0.jar" + - "adventure-platform-bukkit-4.3.0.jar" + - "adventure-platform-facet-4.3.0.jar" + - "adventure-platform-viaversion-4.3.0.jar" + - "adventure-text-serializer-bungeecord-4.3.0.jar" + - "adventure-text-serializer-gson-4.13.0.jar" + - "adventure-text-serializer-gson-legacy-impl-4.13.0.jar" + - "adventure-text-serializer-legacy-4.13.0.jar" + - "annotations-24.0.1.jar" + - "bukkit-1.13.1-R0.1-SNAPSHOT.jar" + - "bungeecord-chat-1.16-R0.4.jar" + - "checker-qual-3.12.0.jar" + - "commons-lang-2.6.jar" + - "configurablegui-4.1.13.jar" + - "core-4.1.13.jar" + - "error_prone_annotations-2.11.0.jar" - "examination-api-1.3.0.jar" - "examination-string-1.3.0.jar" + - "failureaccess-1.0.1.jar" - "fastjson-1.2.83.jar" - - "hutool-cache-5.8.25.jar" - - "hutool-core-5.8.25.jar" - - "hutool-cron-5.8.25.jar" - - "hutool-crypto-5.8.25.jar" - - "hutool-db-5.8.25.jar" - - "hutool-http-5.8.25.jar" - - "hutool-json-5.8.25.jar" - - "hutool-log-5.8.25.jar" - - "hutool-setting-5.8.25.jar" + - "gson-2.10.jar" + - "guava-31.1-jre.jar" + - "hamcrest-core-1.1.jar" + - "hutool-all-5.8.20.jar" + - "j2objc-annotations-1.3.jar" - "javax.servlet-api-3.1.0.jar" - "jetty-client-9.4.48.v20220622.jar" - "jetty-http-9.4.48.v20220622.jar" @@ -42,12 +44,21 @@ libraries: - "jetty-util-ajax-9.4.48.v20220622.jar" - "jetty-webapp-9.4.48.v20220622.jar" - "jetty-xml-9.4.48.v20220622.jar" - - "obliviate-invs-4.3.0.jar" + - "json-simple-1.1.1.jar" + - "jsr305-3.0.2.jar" + - "junit-4.10.jar" + - "listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" + - "lombok-1.18.24.jar" + - "mysql-connector-j-8.0.33.jar" + - "obliviate-invs-4.1.13.jar" - "obliviate-utils-2.0.5.jar" - - "pagination-4.3.0.jar" + - "pagination-4.1.13.jar" - "placeholder-2.0.5.jar" + - "protobuf-java-3.21.9.jar" - "slf4j-api-1.7.25.jar" + - "snakeyaml-1.33.jar" - "spark-core-2.9.4.jar" + - "spigot-api-1.19.3-R0.1-SNAPSHOT.jar" - "spring-aop-5.3.31.jar" - "spring-beans-5.3.31.jar" - "spring-context-5.3.31.jar" @@ -55,10 +66,10 @@ libraries: - "spring-expression-5.3.31.jar" - "spring-jcl-5.3.31.jar" - "string-2.0.5.jar" - - "UniversalScheduler-0.1.6.jar" + - "VaultAPI-1.7.jar" - "version-detection-2.0.5.jar" - "websocket-api-9.4.48.v20220622.jar" - "websocket-client-9.4.48.v20220622.jar" - "websocket-common-9.4.48.v20220622.jar" - "websocket-server-9.4.48.v20220622.jar" - - "websocket-servlet-9.4.48.v20220622.jar" + - "websocket-servlet-9.4.48.v20220622.jar" \ No newline at end of file diff --git a/UltiTools-API/src/main/resources/lang/en.json b/UltiTools-API/src/main/resources/lang/en.json index ba07e2a..5a195eb 100644 --- a/UltiTools-API/src/main/resources/lang/en.json +++ b/UltiTools-API/src/main/resources/lang/en.json @@ -28,7 +28,7 @@ " 简介:": " Intro:", "======== 第%d页 ========": "======== Page %d ========", "安装失败!": "Install Failed!", - "安装成功!请重启服务器!请务必删除旧版本模块!": "Installed! Please restart the server! Please be sure to delete the old version module!", + "安装成功!请重启服务器!": "Installed! Please restart the server!", "========|插件安装帮助|========": "========|Plugin Install Help|========", "/upm list [页数] - 查看可用插件列表": "/upm list [page] - View available plugin list", "/upm install [插件] - 安装最新插件": "/upm install [plugin] - Install latest plugin", diff --git a/UltiTools-API/src/main/resources/plugin.yml b/UltiTools-API/src/main/resources/plugin.yml index 03990ae..225f2ec 100755 --- a/UltiTools-API/src/main/resources/plugin.yml +++ b/UltiTools-API/src/main/resources/plugin.yml @@ -4,8 +4,5 @@ main: com.ultikits.ultitools.UltiTools api-version: 1.13 prefix: UltiTools authors: [ wisdomme ] -load: POSTWORLD +load: STARTUP depend: [ Vault, PlaceholderAPI ] -softdepend: - - Vault - - PlaceholderAPI