From ae252cb6ab92f811cba80f93a6e28551435a8a53 Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Wed, 10 Jan 2024 11:36:44 +0800 Subject: [PATCH] make command tab more beautiful --- pom.xml | 2 +- .../cn/lunadeer/miniplayertitle/Commands.java | 144 ++++++++++++------ .../commands/AdminCommands.java | 144 +++++++++++++----- .../commands/PlayerCommands.java | 38 ++--- 4 files changed, 221 insertions(+), 107 deletions(-) diff --git a/pom.xml b/pom.xml index 108e8e2..57eda4e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer MiniPlayerTitle - 1.13-beta + 1.14-beta jar MiniPlayerTitle diff --git a/src/main/java/cn/lunadeer/miniplayertitle/Commands.java b/src/main/java/cn/lunadeer/miniplayertitle/Commands.java index bd56ec8..96cb39d 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/Commands.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/Commands.java @@ -44,33 +44,53 @@ public class Commands implements TabExecutor { } switch (args[0]) { case "use": - return use(sender, args); + use(sender, args); + return true; case "list": - return list(sender, args); + list(sender, args); + return true; case "shop": - return shop(sender, args); + shop(sender, args); + return true; case "buy": - return buy(sender, args); + buy(sender, args); + return true; case "create": - return AdminCommands.createTitle(sender, args); + AdminCommands.createTitle(sender, args); + return true; case "delete": - return AdminCommands.deleteTitle(sender, args); + AdminCommands.deleteTitle(sender, args); + return true; case "setdesc": - return AdminCommands.setTitleDescription(sender, args); + AdminCommands.setTitleDescription(sender, args); + return true; case "setname": - return AdminCommands.setTitleName(sender, args); + AdminCommands.setTitleName(sender, args); + return true; case "addshop": - return AdminCommands.addShop(sender, args); + AdminCommands.addShop(sender, args); + return true; case "removeshop": - return AdminCommands.removeShop(sender, args); + AdminCommands.removeShop(sender, args); + return true; case "setprice": - return AdminCommands.setPrice(sender, args); + AdminCommands.setPrice(sender, args); + return true; case "setamount": - return AdminCommands.setAmount(sender, args); + AdminCommands.setAmount(sender, args); + return true; case "setendat": - return AdminCommands.setSaleEndAt(sender, args); + AdminCommands.setSaleEndAt(sender, args); + return true; case "listall": - return AdminCommands.listAllTitle(sender, args); + AdminCommands.listAllTitle(sender, args); + return true; + case "addcoin": + AdminCommands.addCoin(sender, args); + return true; + case "setcoin": + AdminCommands.setCoin(sender, args); + return true; default: printHelp(sender); return true; @@ -93,8 +113,8 @@ public class Commands implements TabExecutor { } } - private void home_view(CommandSender sender){ - if (!(sender instanceof Player)){ + private void home_view(CommandSender sender) { + if (!(sender instanceof Player)) { printHelp(sender); return; } @@ -125,7 +145,7 @@ public class Commands implements TabExecutor { public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (args.length == 1) { String[] player_cmd = {"use", "list", "shop", "buy"}; - String[] admin_cmd = {"create", "delete", "setdesc", "setname", "addshop", "removeshop", "setprice", "setamount", "setendat", "listall"}; + String[] admin_cmd = {"create", "delete", "setdesc", "setname", "addshop", "removeshop", "setprice", "setamount", "setendat", "listall", "addcoin", "setcoin"}; List res = new ArrayList<>(); if (sender instanceof Player) { Player player = (Player) sender; @@ -141,35 +161,69 @@ public class Commands implements TabExecutor { } return res; } - switch (args[0]) { - case "use": - return Collections.singletonList("要使用的称号ID"); - case "list": - case "shop": - return Collections.singletonList("页数(可选)"); - case "buy": - return Collections.singletonList("要购买的条目ID"); - case "create": - return Collections.singletonList("<称号名称> <称号描述>"); - case "delete": - case "addshop": - return Collections.singletonList("<称号ID>"); - case "setdesc": - return Collections.singletonList("<称号ID> <称号描述>"); - case "setname": - return Collections.singletonList("<称号ID> <称号名称>"); - case "removeshop": - return Collections.singletonList("<商品ID>"); - case "setprice": - return Collections.singletonList("<商品ID> <价格> <天数>(-1为永久)"); - case "setamount": - return Collections.singletonList("<商品ID> <数量> (-1为无限)"); - case "setendat": - return Collections.singletonList("<商品ID> <结束时间YYYYMMDD>(-1为永久)"); - default: - return Arrays.asList("use", "list", "shop", "buy"); + if (args.length == 2) { + switch (args[0]) { + case "use": + return Collections.singletonList("要使用的称号ID"); + case "list": + case "shop": + case "listall": + return Collections.singletonList("页数(可选)"); + case "buy": + return Collections.singletonList("要购买的条目ID"); + case "create": + return Collections.singletonList("<称号名称> <称号描述>"); + case "delete": + case "addshop": + return Collections.singletonList("<称号ID>"); + case "setdesc": + return Collections.singletonList("<称号ID> <称号描述>"); + case "setname": + return Collections.singletonList("<称号ID> <称号名称>"); + case "removeshop": + return Collections.singletonList("<商品ID>"); + case "setprice": + return Collections.singletonList("<商品ID> <价格> <天数>(-1为永久)"); + case "setamount": + return Collections.singletonList("<商品ID> <数量>(-1为无限)"); + case "setendat": + return Collections.singletonList("<商品ID> <结束时间YYYYMMDD>(-1为永久)"); + case "addcoin": + case "setcoin": + // return player list + List res = new ArrayList<>(); + for (Player player : MiniPlayerTitle.instance.getServer().getOnlinePlayers()) { + res.add(player.getName()); + } + return res; + default: + return Arrays.asList("use", "list", "shop", "buy"); + } } - + if (args.length == 3) { + switch (args[0]) { + case "addcoin": + case "setcoin": + return Collections.singletonList("<金币数量>"); + case "create": + case "setdesc": + return Collections.singletonList("<称号描述>"); + case "setname": + return Collections.singletonList("<称号名称>"); + case "setprice": + return Collections.singletonList("<价格> <天数>(-1为永久)"); + case "setamount": + return Collections.singletonList("<数量>(-1为无限)"); + case "setendat": + return Collections.singletonList("<结束时间YYYYMMDD>(-1为永久)"); + } + } + if (args.length == 4) { + if (args[0].equals("setprice")) { + return Collections.singletonList("<天数>(-1为永久)"); + } + } + return Arrays.asList("use", "list", "shop", "buy"); } diff --git a/src/main/java/cn/lunadeer/miniplayertitle/commands/AdminCommands.java b/src/main/java/cn/lunadeer/miniplayertitle/commands/AdminCommands.java index 37a3c34..79d8fdd 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/commands/AdminCommands.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/commands/AdminCommands.java @@ -2,50 +2,56 @@ package cn.lunadeer.miniplayertitle.commands; import cn.lunadeer.miniplayertitle.SaleTitle; import cn.lunadeer.miniplayertitle.Title; +import cn.lunadeer.miniplayertitle.XPlayer; import cn.lunadeer.miniplayertitle.utils.Notification; import cn.lunadeer.miniplayertitle.utils.XLogger; +import net.kyori.adventure.text.Component; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class AdminCommands { - public static boolean createTitle(CommandSender sender, String[] args) { + public static void createTitle(CommandSender sender, String[] args) { if (sender instanceof org.bukkit.entity.Player) { Player player = (org.bukkit.entity.Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } if (args.length != 3) { Notification.warn(sender, "用法: /mplt create <称号名称> <称号描述>"); - return true; + return; + } + Title title = Title.create(args[1], args[2]); + if (title != null) { + Notification.info(sender, Component.text("成功创建称号: [" + title.getId() + "]").append(title.getTitle())); + } else { + Notification.error(sender, "创建称号失败"); } - Title.create(args[1], args[2]); - return true; } - public static boolean deleteTitle(CommandSender sender, String[] args) { + public static void deleteTitle(CommandSender sender, String[] args) { if (sender instanceof org.bukkit.entity.Player) { Player player = (org.bukkit.entity.Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } if (args.length != 2) { Notification.warn(sender, "用法: /mplt delete <称号ID>"); - return true; + return; } Title.delete(Integer.parseInt(args[1])); - return true; + Notification.info(sender, "已删除称号"); } - public static boolean listAllTitle(CommandSender sender, String[] args) { + public static void listAllTitle(CommandSender sender, String[] args) { if (sender instanceof Player) { Player player = (Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } int page = 1; @@ -54,58 +60,57 @@ public class AdminCommands { page = Integer.parseInt(args[1]); } catch (Exception e) { Notification.error(sender, "页数格式错误"); - return true; + return; } } Title.listAllTitle(sender, page); - return true; } - public static boolean setTitleDescription(CommandSender sender, String[] args) { + public static void setTitleDescription(CommandSender sender, String[] args) { if (sender instanceof org.bukkit.entity.Player) { Player player = (org.bukkit.entity.Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } if (args.length != 3) { Notification.warn(sender, "用法: /mplt setdesc <称号ID> <称号描述>"); - return true; + return; } Title title = new Title(Integer.parseInt(args[1])); title.setDescription(args[2]); - return true; + Notification.info(sender, "已设置称号描述"); } - public static boolean setTitleName(CommandSender sender, String[] args) { + public static void setTitleName(CommandSender sender, String[] args) { if (sender instanceof org.bukkit.entity.Player) { Player player = (org.bukkit.entity.Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } if (args.length != 3) { Notification.warn(sender, "用法: /mplt setname <称号ID> <称号名称>"); - return true; + return; } Title title = new Title(Integer.parseInt(args[1])); title.setTitle(args[2]); - return true; + Notification.info(sender, "已设置称号名称"); } - public static boolean addShop(CommandSender sender, String[] args) { + public static void addShop(CommandSender sender, String[] args) { if (sender instanceof org.bukkit.entity.Player) { Player player = (org.bukkit.entity.Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } if (args.length != 2) { Notification.warn(sender, "用法: /mplt addshop <称号ID>"); - return true; + return; } SaleTitle title = SaleTitle.create(Integer.parseInt(args[1])); if (title == null) { @@ -114,79 +119,134 @@ public class AdminCommands { Notification.info(sender, "已添加称号到商店, 商品ID: " + title.getId()); Notification.info(sender, title.getTitle()); } - return true; } - public static boolean removeShop(CommandSender sender, String[] args) { + public static void removeShop(CommandSender sender, String[] args) { if (sender instanceof org.bukkit.entity.Player) { Player player = (org.bukkit.entity.Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } if (args.length != 2) { Notification.warn(sender, "用法: /mplt removeshop <商品ID>"); - return true; + return; } SaleTitle.delete(Integer.parseInt(args[1])); - return true; + Notification.info(sender, "已从商店移除商品"); } - public static boolean setPrice(CommandSender sender, String[] args) { + public static void setPrice(CommandSender sender, String[] args) { if (sender instanceof org.bukkit.entity.Player) { Player player = (org.bukkit.entity.Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } if (args.length != 4) { Notification.warn(sender, "用法: /mplt setprice <商品ID> <价格> <天数>(-1为永久)"); - return true; + return; } SaleTitle.setPrice(Integer.parseInt(args[1]), Integer.parseInt(args[2])); SaleTitle.setDays(Integer.parseInt(args[1]), Integer.parseInt(args[3])); - return true; + Notification.info(sender, "已设置商品价格"); } - public static boolean setAmount(CommandSender sender, String[] args) { + public static void setAmount(CommandSender sender, String[] args) { if (sender instanceof org.bukkit.entity.Player) { Player player = (org.bukkit.entity.Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } if (args.length != 3) { Notification.warn(sender, "用法: /mplt setamount <商品ID> <数量>(-1为无限)"); - return true; + return; } SaleTitle.setAmount(Integer.parseInt(args[1]), Integer.parseInt(args[2])); - return true; + Notification.info(sender, "已设置商品数量"); } - public static boolean setSaleEndAt(CommandSender sender, String[] args) { + public static void setSaleEndAt(CommandSender sender, String[] args) { if (sender instanceof org.bukkit.entity.Player) { Player player = (org.bukkit.entity.Player) sender; if (!player.isOp()) { XLogger.warn(player, "你没有权限执行该命令"); - return true; + return; } } if (args.length != 3) { Notification.warn(sender, "用法: /mplt setendat <商品ID> <时间YYYYMMDD>(-1为永久)"); - return true; + return; } long time_stamp; try { time_stamp = Long.parseLong(args[2]); } catch (Exception e) { Notification.error(sender, "时间格式错误"); - return true; + return; } SaleTitle.setSaleEndAt(Integer.parseInt(args[1]), time_stamp); - return true; + Notification.info(sender, "已设置商品结束时间"); + } + + public static void addCoin(CommandSender sender, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if (!player.isOp()) { + XLogger.warn(player, "你没有权限执行该命令"); + return; + } + } + if (args.length != 3) { + Notification.warn(sender, "用法: /mplt addcoin <玩家> <数量>"); + return; + } + Player target = sender.getServer().getPlayer(args[1]); + if (target == null) { + Notification.error(sender, "玩家不在线"); + return; + } + int amount; + try { + amount = Integer.parseInt(args[2]); + } catch (Exception e) { + Notification.error(sender, "数量格式错误"); + return; + } + new XPlayer(target).add_coin(amount); + Notification.info(sender, "已给予玩家 " + target.getName() + " " + amount + " 称号币"); + } + + public static void setCoin(CommandSender sender, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if (!player.isOp()) { + XLogger.warn(player, "你没有权限执行该命令"); + return; + } + } + if (args.length != 3) { + Notification.warn(sender, "用法: /mplt setcoin <玩家> <数量>"); + return; + } + Player target = sender.getServer().getPlayer(args[1]); + if (target == null) { + Notification.error(sender, "玩家不在线"); + return; + } + int amount; + try { + amount = Integer.parseInt(args[2]); + } catch (Exception e) { + Notification.error(sender, "数量格式错误"); + return; + } + new XPlayer(target).set_coin(amount); + Notification.info(sender, "已设置玩家 " + target.getName() + " 称号币为 " + amount); } } diff --git a/src/main/java/cn/lunadeer/miniplayertitle/commands/PlayerCommands.java b/src/main/java/cn/lunadeer/miniplayertitle/commands/PlayerCommands.java index 3405328..5372a5c 100644 --- a/src/main/java/cn/lunadeer/miniplayertitle/commands/PlayerCommands.java +++ b/src/main/java/cn/lunadeer/miniplayertitle/commands/PlayerCommands.java @@ -8,27 +8,27 @@ import cn.lunadeer.miniplayertitle.utils.XLogger; import org.bukkit.command.CommandSender; public class PlayerCommands { - public static boolean use(CommandSender sender, String[] args) { + public static void use(CommandSender sender, String[] args) { if (!(sender instanceof org.bukkit.entity.Player)) { XLogger.warn("该命令只能由玩家执行"); - return true; + return; } org.bukkit.entity.Player player = (org.bukkit.entity.Player) sender; if (args.length != 2) { Notification.warn(player, "用法: /mplt use <称号ID>"); - return true; + return; } XPlayer xPlayer = new XPlayer(player); Integer title_id = Integer.parseInt(args[1]); xPlayer.updateUsingTitle(title_id); - return true; + return; } - public static boolean list(CommandSender sender, String[] args) { + public static void list(CommandSender sender, String[] args) { if (!(sender instanceof org.bukkit.entity.Player)) { XLogger.warn("该命令只能由玩家执行"); - return true; + return; } org.bukkit.entity.Player player = (org.bukkit.entity.Player) sender; int page = 1; @@ -37,15 +37,15 @@ public class PlayerCommands { page = Integer.parseInt(args[1]); } catch (Exception e) { Notification.error(player, "页数格式错误"); - return true; + return; } } XPlayer xPlayer = new XPlayer(player); xPlayer.openBackpack(page); - return true; + return; } - public static boolean shop(CommandSender sender, String[] args) { + public static void shop(CommandSender sender, String[] args) { int page = 1; if (args.length == 2) { try { @@ -54,45 +54,45 @@ public class PlayerCommands { } } Shop.open(sender, page); - return true; + return; } - public static boolean buy(CommandSender sender, String[] args) { + public static void buy(CommandSender sender, String[] args) { if (!(sender instanceof org.bukkit.entity.Player)) { XLogger.warn("该命令只能由玩家执行"); - return true; + return; } org.bukkit.entity.Player player = (org.bukkit.entity.Player) sender; if (args.length != 2) { Notification.warn(player, "用法: /mplt buy <称号ID>"); - return true; + return; } XPlayer xPlayer = new XPlayer(player); Integer sale_id = Integer.parseInt(args[1]); SaleTitle saleTitle = Shop.getSaleTitles().get(sale_id); if (saleTitle == null) { Notification.error(player, "该称号不存在"); - return true; + return; } xPlayer.buyTitle(saleTitle); - return true; + return; } - public static boolean custom(CommandSender sender, String[] args) { + public static void custom(CommandSender sender, String[] args) { if (!(sender instanceof org.bukkit.entity.Player)) { XLogger.warn("该命令只能由玩家执行"); - return true; + return; } org.bukkit.entity.Player player = (org.bukkit.entity.Player) sender; if (args.length != 2) { Notification.warn(player, "用法: /mplt custom <称号>"); - return true; + return; } // todo add custom title // add title // description = player.getDisplayName() + "的自定义称号"; // add player title // expire_at = -1 - return true; + return; } }