补充自定义称号功能
All checks were successful
Java CI-CD with Maven / build (push) Successful in 8m7s

This commit is contained in:
zhangyuheng 2024-05-21 20:34:48 +08:00
parent f714526248
commit 7e540d1fe5
4 changed files with 68 additions and 6 deletions

View File

@ -65,6 +65,9 @@ public class Commands implements TabExecutor {
case "set_desc": case "set_desc":
TitleManage.setTitleDescription(sender, args); TitleManage.setTitleDescription(sender, args);
break; break;
case "custom_title":
TitleManage.customTitle(sender, args);
break;
default: default:
return false; return false;
} }

View File

@ -2,6 +2,7 @@ package cn.lunadeer.miniplayertitle.commands;
import cn.lunadeer.miniplayertitle.MiniPlayerTitle; import cn.lunadeer.miniplayertitle.MiniPlayerTitle;
import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO; import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO;
import cn.lunadeer.miniplayertitle.dtos.PlayerTitleDTO;
import cn.lunadeer.miniplayertitle.dtos.TitleDTO; import cn.lunadeer.miniplayertitle.dtos.TitleDTO;
import cn.lunadeer.miniplayertitle.tuis.AllTitles; import cn.lunadeer.miniplayertitle.tuis.AllTitles;
import cn.lunadeer.miniplayertitle.tuis.MyTitles; import cn.lunadeer.miniplayertitle.tuis.MyTitles;
@ -48,7 +49,16 @@ public class TitleManage {
MiniPlayerTitle.notification.warn(sender, "用法: /mplt delete_title <称号ID>"); MiniPlayerTitle.notification.warn(sender, "用法: /mplt delete_title <称号ID>");
return; 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, "已删除称号"); MiniPlayerTitle.notification.info(sender, "已删除称号");
if (args.length == 3) { if (args.length == 3) {
int page = Integer.parseInt(args[2]); int page = Integer.parseInt(args[2]);
@ -155,4 +165,55 @@ public class TitleManage {
MyTitles.show(sender, new String[]{"my_titles", String.valueOf(page)}); 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"});
}
} }

View File

@ -41,13 +41,11 @@ public class TitleDTO {
return null; return null;
} }
public static boolean delete(int id) { public boolean delete() {
String sql = ""; String sql = "";
sql += "DELETE FROM mplt_title WHERE id = ?;"; sql += "DELETE FROM mplt_title WHERE id = ?;";
try (ResultSet rs = MiniPlayerTitle.database.query(sql, id)) { try (ResultSet rs = MiniPlayerTitle.database.query(sql, id)) {
if (rs != null && rs.next()) { return true;
return true;
}
} catch (Exception e) { } catch (Exception e) {
MiniPlayerTitle.database.handleDatabaseError("删除称号失败", e, sql); MiniPlayerTitle.database.handleDatabaseError("删除称号失败", e, sql);
} }

View File

@ -38,7 +38,7 @@ public class CustomInfo {
.append("自定义称号最大长度(不含颜色代码):").append(MiniPlayerTitle.config.getMaxLength().toString()); .append("自定义称号最大长度(不含颜色代码):").append(MiniPlayerTitle.config.getMaxLength().toString());
Line line_5 = Line.create() Line line_5 = Line.create()
.append("自定义方法:") .append("自定义方法:")
.append("在聊天框输入 /mplt custom <称号>"); .append("在聊天框输入 /mplt custom_title <称号>");
Line line_6 = Line.create() Line line_6 = Line.create()
.append("可以使用 Minecraft渐变颜色生成器 来生成具有渐变效果的称号") .append("可以使用 Minecraft渐变颜色生成器 来生成具有渐变效果的称号")
.append(Button.create("点击在浏览器中打开生成器").setOpenURL("https://ssl.lunadeer.cn:14440/").build()); .append(Button.create("点击在浏览器中打开生成器").setOpenURL("https://ssl.lunadeer.cn:14440/").build());