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