make command tab more beautiful

This commit is contained in:
zhangyuheng 2024-01-10 11:36:44 +08:00
parent 2e293d89ad
commit ae252cb6ab
4 changed files with 221 additions and 107 deletions

View File

@ -6,7 +6,7 @@
<groupId>cn.lunadeer</groupId>
<artifactId>MiniPlayerTitle</artifactId>
<version>1.13-beta</version>
<version>1.14-beta</version>
<packaging>jar</packaging>
<name>MiniPlayerTitle</name>

View File

@ -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<String> 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<String> res = new ArrayList<>();
if (sender instanceof Player) {
Player player = (Player) sender;
@ -141,11 +161,13 @@ public class Commands implements TabExecutor {
}
return res;
}
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");
@ -163,13 +185,45 @@ public class Commands implements TabExecutor {
case "setprice":
return Collections.singletonList("<商品ID> <价格> <天数>(-1为永久)");
case "setamount":
return Collections.singletonList("<商品ID> <数量> (-1为无限)");
return Collections.singletonList("<商品ID> <数量>(-1为无限)");
case "setendat":
return Collections.singletonList("<商品ID> <结束时间YYYYMMDD>(-1为永久)");
case "addcoin":
case "setcoin":
// return player list
List<String> 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");
}

View File

@ -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);
}
}

View File

@ -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;
}
}