补充了命令补全功能
All checks were successful
Java CI-CD with Maven / build (push) Successful in 6m1s

This commit is contained in:
zhangyuheng 2024-05-22 01:30:25 +08:00
parent 7e540d1fe5
commit eda8a8f22f
5 changed files with 87 additions and 33 deletions

View File

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

View File

@ -9,6 +9,8 @@ import org.bukkit.command.TabExecutor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
public class Commands implements TabExecutor { public class Commands implements TabExecutor {
@ -20,52 +22,52 @@ public class Commands implements TabExecutor {
return true; return true;
} }
switch (args[0]) { switch (args[0]) {
case "menu": case "menu": // mplt menu [页数]
Menu.show(sender, args); Menu.show(sender, args);
break; break;
case "all_titles": case "all_titles": // mplt all_titles [页数]
AllTitles.show(sender, args); AllTitles.show(sender, args);
break; break;
case "my_titles": case "my_titles": // mplt my_titles [页数]
MyTitles.show(sender, args); MyTitles.show(sender, args);
break; break;
case "shop": case "shop": // mplt shop [页数]
Shop.show(sender, args); Shop.show(sender, args);
break; break;
case "custom_info": case "custom_info": // mplt custom_info
CustomInfo.show(sender, args); CustomInfo.show(sender, args);
break; break;
case "sale_info": case "sale_info": // mplt sale_info <商品ID>
SaleInfo.show(sender, args); SaleInfo.show(sender, args);
break; break;
case "create_sale": case "create_sale": // mplt create_sale <称号ID>
TitleShopSale.createSale(sender, args); TitleShopSale.createSale(sender, args);
break; break;
case "set_sale": case "set_sale": // mplt set_sale <price|days|amount|end_at|more_end_at|less_end_at> <商品ID> <> [页数]
TitleShopSale.setSale(sender, args); TitleShopSale.setSale(sender, args);
break; break;
case "delete_sale": case "delete_sale": // mplt delete_sale <商品ID> [页数]
TitleShopSale.deleteSale(sender, args); TitleShopSale.deleteSale(sender, args);
break; break;
case "buy_sale": case "buy_sale": // mplt buy_sale <商品ID>
TitleShopSale.buySale(sender, args); TitleShopSale.buySale(sender, args);
break; break;
case "use_title": case "use_title": // mplt use_title <背包ID> [页码]
TitleManage.useTitle(sender, args); TitleManage.useTitle(sender, args);
break; break;
case "create_title": case "create_title": // mplt create_title <称号名称> <称号描述>
TitleManage.createTitle(sender, args); TitleManage.createTitle(sender, args);
break; break;
case "delete_title": case "delete_title": // mplt delete_title <称号ID> [页码]
TitleManage.deleteTitle(sender, args); TitleManage.deleteTitle(sender, args);
break; break;
case "set_title": case "edit_title_name": // mplt edit_title_name <称号ID> <称号名称>
TitleManage.setTitle(sender, args); TitleManage.editTitleName(sender, args);
break; break;
case "set_desc": case "edit_title_desc": // mplt set_title_desc <称号ID> <称号描述>
TitleManage.setTitleDescription(sender, args); TitleManage.editTitleDescription(sender, args);
break; break;
case "custom_title": case "custom_title": // mplt custom_title <称号>
TitleManage.customTitle(sender, args); TitleManage.customTitle(sender, args);
break; break;
default: default:
@ -76,6 +78,52 @@ public class Commands implements TabExecutor {
@Override @Override
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
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");
}
if (args.length == 2) {
switch (args[0]) {
case "sale_info":
case "delete_sale":
case "buy_sale":
return Collections.singletonList("<商品ID>");
case "create_sale":
case "delete_title":
case "edit_title_name":
case "edit_title_desc":
return Collections.singletonList("<称号ID>");
case "use_title":
return Collections.singletonList("<背包ID>");
case "set_sale":
return Arrays.asList("price", "days", "amount", "end_at", "more_end_at", "less_end_at");
case "custom_title":
return Collections.singletonList("<称号内容>");
default:
return null;
}
}
if (args.length == 3) {
switch (args[0]) {
case "set_sale":
return Collections.singletonList("<商品ID>");
case "edit_title_desc":
return Collections.singletonList("<新的称号描述>");
case "edit_title_name":
return Collections.singletonList("<新的称号名称>");
default:
return null;
}
}
if (args.length == 4) {
switch (args[0]) {
case "set_sale":
return Collections.singletonList("<值>");
default:
return null;
}
}
return null; return null;
} }
} }

View File

@ -30,6 +30,7 @@ public class TitleManage {
TitleDTO title = TitleDTO.create(args[1], args[2]); TitleDTO title = TitleDTO.create(args[1], args[2]);
if (title != null) { if (title != null) {
MiniPlayerTitle.notification.info(sender, Component.text("成功创建称号: [" + title.getId() + "]").append(title.getTitleColored())); MiniPlayerTitle.notification.info(sender, Component.text("成功创建称号: [" + title.getId() + "]").append(title.getTitleColored()));
AllTitles.show(sender, new String[]{"all_titles"});
} else { } else {
MiniPlayerTitle.notification.error(sender, "创建称号失败,具体请查看控制台日志"); MiniPlayerTitle.notification.error(sender, "创建称号失败,具体请查看控制台日志");
} }
@ -37,7 +38,7 @@ public class TitleManage {
/** /**
* 删除称号 * 删除称号
* mplt delete_title <称号ID> * mplt delete_title <称号ID> [页码]
* *
* @param sender CommandSender * @param sender CommandSender
* @param args String[] * @param args String[]
@ -71,12 +72,12 @@ public class TitleManage {
/** /**
* 设置称号名称 * 设置称号名称
* mplt set_title <称号ID> <称号名称> * mplt edit_title_name <称号ID> <称号名称>
* *
* @param sender CommandSender * @param sender CommandSender
* @param args String[] * @param args String[]
*/ */
public static void setTitle(CommandSender sender, String[] args) { public static void editTitleName(CommandSender sender, String[] args) {
try { try {
if (notOpOrConsole(sender)) return; if (notOpOrConsole(sender)) return;
if (args.length != 3) { if (args.length != 3) {
@ -101,12 +102,12 @@ public class TitleManage {
/** /**
* 设置称号描述 * 设置称号描述
* mplt set_desc <称号ID> <称号描述> * mplt edit_title_desc <称号ID> <称号描述>
* *
* @param sender CommandSender * @param sender CommandSender
* @param args String[] * @param args String[]
*/ */
public static void setTitleDescription(CommandSender sender, String[] args) { public static void editTitleDescription(CommandSender sender, String[] args) {
try { try {
if (notOpOrConsole(sender)) return; if (notOpOrConsole(sender)) return;
if (args.length != 3) { if (args.length != 3) {
@ -131,7 +132,7 @@ public class TitleManage {
/** /**
* 使用称号 * 使用称号
* mplt use_title <称号ID> [页码] * mplt use_title <背包ID> [页码]
* *
* @param sender CommandSender * @param sender CommandSender
* @param args String[] * @param args String[]
@ -139,22 +140,27 @@ public class TitleManage {
public static void useTitle(CommandSender sender, String[] args) { public static void useTitle(CommandSender sender, String[] args) {
if (notOpOrConsole(sender)) return; if (notOpOrConsole(sender)) return;
if (args.length < 2) { if (args.length < 2) {
MiniPlayerTitle.notification.warn(sender, "用法: /mplt use_title <称号ID> [页码]"); MiniPlayerTitle.notification.warn(sender, "用法: /mplt use_title <背包ID> [页码]");
return; return;
} }
TitleDTO title = TitleDTO.get(Integer.parseInt(args[1])); Player player = (Player) sender;
PlayerTitleDTO title = PlayerTitleDTO.get(Integer.parseInt(args[1]));
if (title == null) { if (title == null) {
MiniPlayerTitle.notification.error(sender, "称号不存在"); MiniPlayerTitle.notification.error(sender, "称号不存在");
return; return;
} }
PlayerInfoDTO playerInfo = PlayerInfoDTO.get(((Player) sender).getUniqueId()); if (!title.getPlayerUuid().equals(player.getUniqueId())) {
MiniPlayerTitle.notification.error(sender, "该称号不属于你");
return;
}
PlayerInfoDTO playerInfo = PlayerInfoDTO.get((player).getUniqueId());
if (playerInfo == null) { if (playerInfo == null) {
MiniPlayerTitle.notification.error(sender, "获取玩家信息时出现错误"); MiniPlayerTitle.notification.error(sender, "获取玩家信息时出现错误");
return; return;
} }
boolean success = playerInfo.setUsingTitle(title); boolean success = playerInfo.setUsingTitle(title.getTitle());
if (success) { if (success) {
updateName((Player) sender, title); updateName((Player) sender, title.getTitle());
MiniPlayerTitle.notification.info(sender, "已使用称号"); MiniPlayerTitle.notification.info(sender, "已使用称号");
} else { } else {
MiniPlayerTitle.notification.error(sender, "使用称号失败,具体请查看控制台日志"); MiniPlayerTitle.notification.error(sender, "使用称号失败,具体请查看控制台日志");
@ -168,7 +174,7 @@ public class TitleManage {
/** /**
* 创建自定义称号 * 创建自定义称号
* mplt custom_title <称号> * mplt custom_title <称号内容>
* *
* @param sender CommandSender * @param sender CommandSender
* @param args String[] * @param args String[]

View File

@ -24,7 +24,7 @@ public class TitleShopSale {
/** /**
* 设置商品信息 * 设置商品信息
* mplt set_sale <price|days|amount|end_at|end_at_y|end_at_m|end_at_d> <商品ID> <> [页数] * mplt set_sale <price|days|amount|end_at|more_end_at|less_end_at> <商品ID> <> [页数]
* *
* @param sender CommandSender * @param sender CommandSender
* @param args String[] * @param args String[]

View File

@ -24,7 +24,7 @@ public class PlayerTitleDTO {
return title; return title;
} }
public UUID getPlayer_uuid() { public UUID getPlayerUuid() {
return player_uuid; return player_uuid;
} }