diff --git a/pom.xml b/pom.xml index 8bdbff1..a6e181d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer MiniPlayerTitle - 4.0.0 + 4.1.0 jar MiniPlayerTitle diff --git a/src/main/java/cn/lunadeer/miniplayertitle/Commands.java b/src/main/java/cn/lunadeer/miniplayertitle/Commands.java index dfc1087..ec898df 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/Commands.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/Commands.java @@ -78,6 +78,9 @@ public class Commands implements TabExecutor { case "set_coin": // mplt set_coin <玩家名称> <称号币数量> PlayerManage.setCoin(sender, args); break; + case "grant_title": // mplt grant_title <玩家名称> <称号> <描述> [天数] + PlayerManage.grantTitle(sender, args); + break; default: return false; } @@ -89,7 +92,9 @@ public class Commands implements TabExecutor { if (args.length == 1) { return Arrays.asList("menu", "all_titles", "my_titles", "shop", "custom_info", "sale_info", "create_sale", "set_sale", "delete_sale", "buy_sale", "use_title", "create_title", - "delete_title", "edit_title_name", "edit_title_desc", "custom_title", "add_coin", "set_coin"); + "delete_title", "edit_title_name", "edit_title_desc", "custom_title", "add_coin", "set_coin", + "grant_title" + ); } if (args.length == 2) { switch (args[0]) { @@ -111,6 +116,7 @@ public class Commands implements TabExecutor { return Collections.singletonList("<称号内容>"); case "add_coin": case "set_coin": + case "grant_title": return PlayerInfoDTO.playerNameList(); default: return null; @@ -129,6 +135,8 @@ public class Commands implements TabExecutor { case "add_coin": case "set_coin": return Collections.singletonList("<数量>"); + case "grant_title": + return Collections.singletonList("<称号>"); default: return null; } @@ -137,6 +145,16 @@ public class Commands implements TabExecutor { switch (args[0]) { case "set_sale": return Collections.singletonList("<值>"); + case "grant_title": + return Collections.singletonList("<描述>"); + default: + return null; + } + } + if (args.length == 5) { + switch (args[0]) { + case "grant_title": + return Collections.singletonList("<天数(默认永久)>"); default: return null; } diff --git a/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java b/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java index f46585e..9247907 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/Expansion.java @@ -1,21 +1,15 @@ package cn.lunadeer.miniplayertitle; -import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.XLogger; import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO; import cn.lunadeer.miniplayertitle.dtos.PlayerTitleDTO; import cn.lunadeer.miniplayertitle.dtos.TitleDTO; import me.clip.placeholderapi.expansion.PlaceholderExpansion; -import net.kyori.adventure.text.format.TextColor; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; -import static cn.lunadeer.miniplayertitle.commands.Apis.updateName; - public class Expansion extends PlaceholderExpansion { private final JavaPlugin plugin; diff --git a/src/main/java/cn/lunadeer/miniplayertitle/commands/PlayerManage.java b/src/main/java/cn/lunadeer/miniplayertitle/commands/PlayerManage.java index dae6054..7fb4459 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/commands/PlayerManage.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/commands/PlayerManage.java @@ -2,8 +2,12 @@ package cn.lunadeer.miniplayertitle.commands; import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO; +import cn.lunadeer.miniplayertitle.dtos.PlayerTitleDTO; +import cn.lunadeer.miniplayertitle.dtos.TitleDTO; import org.bukkit.command.CommandSender; +import java.time.LocalDateTime; + import static cn.lunadeer.miniplayertitle.commands.Apis.notOpOrConsole; public class PlayerManage { @@ -59,4 +63,40 @@ public class PlayerManage { Notification.error(sender, "给玩家设置称号币时出错:%s", e.getMessage()); } } + + /** + * 直接授予玩家某称号 + * mplt grant_title <玩家名称> <称号> <描述> [天数] + * + * @param sender CommandSender + * @param args String[] + */ + public static void grantTitle(CommandSender sender, String[] args) { + if (notOpOrConsole(sender)) return; + try { + PlayerInfoDTO playerInfo = PlayerInfoDTO.get(args[1]); + if (playerInfo == null) { + Notification.error(sender, "玩家不存在"); + return; + } + String title = args[2]; + String description = args[3]; + int days = args.length == 5 ? Integer.parseInt(args[4]) : -1; + TitleDTO titleDTO = TitleDTO.create(title, description); + if (titleDTO == null) { + Notification.error(sender, "创建称号失败,详细错误请查看控制台日志"); + return; + } + LocalDateTime expire = days == -1 ? null : LocalDateTime.now().plusDays(days); + PlayerTitleDTO playerTitle = PlayerTitleDTO.create(playerInfo.getUuid(), titleDTO, expire); + if (playerTitle == null) { + Notification.error(sender, "授予玩家称号失败,详细错误请查看控制台日志"); + return; + } + playerInfo.setUsingTitle(titleDTO); + Notification.info(sender, "成功给玩家 %s 授予称号 %s", playerInfo.getLastUseName(), titleDTO.getTitlePlainText()); + } catch (Exception e) { + Notification.error(sender, "授予玩家称号时出错:%s", e.getMessage()); + } + } } diff --git a/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerInfoDTO.java b/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerInfoDTO.java index 87b95b6..a9fb5f0 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerInfoDTO.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/dtos/PlayerInfoDTO.java @@ -109,6 +109,10 @@ public class PlayerInfoDTO { return last_use_name; } + public UUID getUuid() { + return uuid; + } + public boolean setUsingTitle(@Nullable TitleDTO title) { String sql = ""; sql = "UPDATE mplt_player_info SET using_title_id = ? WHERE uuid = ?;";