新增授予玩家称号指令

This commit is contained in:
zhangyuheng 2024-06-24 16:08:08 +08:00
parent 1e661badc2
commit c7d8baf885
5 changed files with 64 additions and 8 deletions

View File

@ -6,7 +6,7 @@
<groupId>cn.lunadeer</groupId> <groupId>cn.lunadeer</groupId>
<artifactId>MiniPlayerTitle</artifactId> <artifactId>MiniPlayerTitle</artifactId>
<version>4.0.0</version> <version>4.1.0</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>MiniPlayerTitle</name> <name>MiniPlayerTitle</name>

View File

@ -78,6 +78,9 @@ public class Commands implements TabExecutor {
case "set_coin": // mplt set_coin <玩家名称> <称号币数量> case "set_coin": // mplt set_coin <玩家名称> <称号币数量>
PlayerManage.setCoin(sender, args); PlayerManage.setCoin(sender, args);
break; break;
case "grant_title": // mplt grant_title <玩家名称> <称号> <描述> [天数]
PlayerManage.grantTitle(sender, args);
break;
default: default:
return false; return false;
} }
@ -89,7 +92,9 @@ public class Commands implements TabExecutor {
if (args.length == 1) { if (args.length == 1) {
return Arrays.asList("menu", "all_titles", "my_titles", "shop", "custom_info", "sale_info", 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", "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) { if (args.length == 2) {
switch (args[0]) { switch (args[0]) {
@ -111,6 +116,7 @@ public class Commands implements TabExecutor {
return Collections.singletonList("<称号内容>"); return Collections.singletonList("<称号内容>");
case "add_coin": case "add_coin":
case "set_coin": case "set_coin":
case "grant_title":
return PlayerInfoDTO.playerNameList(); return PlayerInfoDTO.playerNameList();
default: default:
return null; return null;
@ -129,6 +135,8 @@ public class Commands implements TabExecutor {
case "add_coin": case "add_coin":
case "set_coin": case "set_coin":
return Collections.singletonList("<数量>"); return Collections.singletonList("<数量>");
case "grant_title":
return Collections.singletonList("<称号>");
default: default:
return null; return null;
} }
@ -137,6 +145,16 @@ public class Commands implements TabExecutor {
switch (args[0]) { switch (args[0]) {
case "set_sale": case "set_sale":
return Collections.singletonList("<值>"); 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: default:
return null; return null;
} }

View File

@ -1,21 +1,15 @@
package cn.lunadeer.miniplayertitle; package cn.lunadeer.miniplayertitle;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.XLogger; import cn.lunadeer.minecraftpluginutils.XLogger;
import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO; import cn.lunadeer.miniplayertitle.dtos.PlayerInfoDTO;
import cn.lunadeer.miniplayertitle.dtos.PlayerTitleDTO; import cn.lunadeer.miniplayertitle.dtos.PlayerTitleDTO;
import cn.lunadeer.miniplayertitle.dtos.TitleDTO; import cn.lunadeer.miniplayertitle.dtos.TitleDTO;
import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import net.kyori.adventure.text.format.TextColor;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import static cn.lunadeer.miniplayertitle.commands.Apis.updateName;
public class Expansion extends PlaceholderExpansion { public class Expansion extends PlaceholderExpansion {
private final JavaPlugin plugin; private final JavaPlugin plugin;

View File

@ -2,8 +2,12 @@ package cn.lunadeer.miniplayertitle.commands;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
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 org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import java.time.LocalDateTime;
import static cn.lunadeer.miniplayertitle.commands.Apis.notOpOrConsole; import static cn.lunadeer.miniplayertitle.commands.Apis.notOpOrConsole;
public class PlayerManage { public class PlayerManage {
@ -59,4 +63,40 @@ public class PlayerManage {
Notification.error(sender, "给玩家设置称号币时出错:%s", e.getMessage()); 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());
}
}
} }

View File

@ -109,6 +109,10 @@ public class PlayerInfoDTO {
return last_use_name; return last_use_name;
} }
public UUID getUuid() {
return uuid;
}
public boolean setUsingTitle(@Nullable TitleDTO title) { public boolean setUsingTitle(@Nullable TitleDTO title) {
String sql = ""; String sql = "";
sql = "UPDATE mplt_player_info SET using_title_id = ? WHERE uuid = ?;"; sql = "UPDATE mplt_player_info SET using_title_id = ? WHERE uuid = ?;";