From 7e540d1fe59d51b944a26cae0070f3711104f3eb Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Tue, 21 May 2024 20:34:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E7=A7=B0=E5=8F=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lunadeer/miniplayertitle/Commands.java | 3 + .../miniplayertitle/commands/TitleManage.java | 63 ++++++++++++++++++- .../miniplayertitle/dtos/TitleDTO.java | 6 +- .../miniplayertitle/tuis/CustomInfo.java | 2 +- 4 files changed, 68 insertions(+), 6 deletions(-) diff --git a/src/main/java/cn/lunadeer/miniplayertitle/Commands.java b/src/main/java/cn/lunadeer/miniplayertitle/Commands.java index 440653a..6c0cc55 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/Commands.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/Commands.java @@ -65,6 +65,9 @@ public class Commands implements TabExecutor { case "set_desc": TitleManage.setTitleDescription(sender, args); break; + case "custom_title": + TitleManage.customTitle(sender, args); + break; default: return false; } diff --git a/src/main/java/cn/lunadeer/miniplayertitle/commands/TitleManage.java b/src/main/java/cn/lunadeer/miniplayertitle/commands/TitleManage.java index 04fd479..1eb05cb 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/commands/TitleManage.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/commands/TitleManage.java @@ -2,6 +2,7 @@ package cn.lunadeer.miniplayertitle.commands; import cn.lunadeer.miniplayertitle.MiniPlayerTitle; import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO; +import cn.lunadeer.miniplayertitle.dtos.PlayerTitleDTO; import cn.lunadeer.miniplayertitle.dtos.TitleDTO; import cn.lunadeer.miniplayertitle.tuis.AllTitles; import cn.lunadeer.miniplayertitle.tuis.MyTitles; @@ -48,7 +49,16 @@ public class TitleManage { MiniPlayerTitle.notification.warn(sender, "用法: /mplt delete_title <称号ID>"); return; } - TitleDTO.delete(Integer.parseInt(args[1])); + TitleDTO title = TitleDTO.get(Integer.parseInt(args[1])); + if (title == null) { + MiniPlayerTitle.notification.error(sender, "称号不存在"); + return; + } + boolean success = title.delete(); + if (!success) { + MiniPlayerTitle.notification.error(sender, "删除称号失败,具体请查看控制台日志"); + return; + } MiniPlayerTitle.notification.info(sender, "已删除称号"); if (args.length == 3) { int page = Integer.parseInt(args[2]); @@ -155,4 +165,55 @@ public class TitleManage { MyTitles.show(sender, new String[]{"my_titles", String.valueOf(page)}); } } + + /** + * 创建自定义称号 + * mplt custom_title <称号> + * + * @param sender CommandSender + * @param args String[] + */ + public static void customTitle(CommandSender sender, String[] args) { + if (!(sender instanceof Player)) { + MiniPlayerTitle.notification.error(sender, "该命令只能由玩家执行"); + return; + } + Player player = (Player) sender; + if (!MiniPlayerTitle.config.isEnableCustom()) { + MiniPlayerTitle.notification.error(sender, "自定义称号功能已关闭"); + return; + } + PlayerInfoDTO playerInfo = PlayerInfoDTO.get(player.getUniqueId()); + if (playerInfo == null) { + MiniPlayerTitle.notification.error(sender, "获取玩家信息时出现错误"); + return; + } + if (MiniPlayerTitle.config.getCustomCost() > playerInfo.getCoin()) { + MiniPlayerTitle.notification.error(sender, "称号币不足"); + return; + } + if (args.length < 2) { + MiniPlayerTitle.notification.warn(sender, "用法: /mplt custom_title <称号>"); + return; + } + TitleDTO title = TitleDTO.create(args[1], player.getName() + "的自定义称号"); + if (title == null) { + MiniPlayerTitle.notification.error(sender, "创建称号失败,具体请查看控制台日志"); + return; + } + if (title.getTitlePlainText().length() > MiniPlayerTitle.config.getMaxLength()) { + MiniPlayerTitle.notification.error(sender, "称号长度超过限制"); + title.delete(); + return; + } + PlayerTitleDTO created_rec = PlayerTitleDTO.create(player.getUniqueId(), title, null); + if (created_rec == null) { + MiniPlayerTitle.notification.error(sender, "创建称号记录失败,具体请查看控制台日志"); + title.delete(); + return; + } + playerInfo.setCoin(playerInfo.getCoin() - MiniPlayerTitle.config.getCustomCost()); + MiniPlayerTitle.notification.info(sender, "成功创建自定义称号"); + MyTitles.show(sender, new String[]{"my_titles"}); + } } diff --git a/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java b/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java index db570f6..2354862 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/dtos/TitleDTO.java @@ -41,13 +41,11 @@ public class TitleDTO { return null; } - public static boolean delete(int id) { + public boolean delete() { String sql = ""; sql += "DELETE FROM mplt_title WHERE id = ?;"; try (ResultSet rs = MiniPlayerTitle.database.query(sql, id)) { - if (rs != null && rs.next()) { - return true; - } + return true; } catch (Exception e) { MiniPlayerTitle.database.handleDatabaseError("删除称号失败", e, sql); } diff --git a/src/main/java/cn/lunadeer/miniplayertitle/tuis/CustomInfo.java b/src/main/java/cn/lunadeer/miniplayertitle/tuis/CustomInfo.java index 2fa7458..2de8110 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/tuis/CustomInfo.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/tuis/CustomInfo.java @@ -38,7 +38,7 @@ public class CustomInfo { .append("自定义称号最大长度(不含颜色代码):").append(MiniPlayerTitle.config.getMaxLength().toString()); Line line_5 = Line.create() .append("自定义方法:") - .append("在聊天框输入 /mplt custom <称号>"); + .append("在聊天框输入 /mplt custom_title <称号>"); Line line_6 = Line.create() .append("可以使用 Minecraft渐变颜色生成器 来生成具有渐变效果的称号") .append(Button.create("点击在浏览器中打开生成器").setOpenURL("https://ssl.lunadeer.cn:14440/").build());