diff --git a/src/main/java/com/yaohun/order/OrderMain.java b/src/main/java/com/yaohun/order/OrderMain.java index b48f68d..8d85afc 100644 --- a/src/main/java/com/yaohun/order/OrderMain.java +++ b/src/main/java/com/yaohun/order/OrderMain.java @@ -5,6 +5,7 @@ import com.yaohun.order.config.Config; import com.yaohun.order.gui.ReceiveGui; import com.yaohun.order.listener.PlayerListener; import com.yaohun.order.manage.OrderManager; +import com.yaohun.order.tabcommand.DorderTabCompleter; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -23,6 +24,7 @@ public class OrderMain extends JavaPlugin { OrderManager.initOrderManager(); getServer().getPluginManager().registerEvents(new ReceiveGui(),this); getServer().getPluginManager().registerEvents(new PlayerListener(),this); + getCommand("dorder").setTabCompleter(new DorderTabCompleter()); } @Override diff --git a/src/main/java/com/yaohun/order/config/Config.java b/src/main/java/com/yaohun/order/config/Config.java index 1b15bab..2a037f5 100644 --- a/src/main/java/com/yaohun/order/config/Config.java +++ b/src/main/java/com/yaohun/order/config/Config.java @@ -39,6 +39,14 @@ public class Config { return orderContentList; } + public static List getOrderKeyList(){ + List strings = new ArrayList<>(); + for (OrderContent orderContent : orderContentList) { + strings.add(orderContent.getKey()); + } + return strings; + } + public static OrderContent getOrderContent(String key) { for (OrderContent orderContent : orderContentList) { if (orderContent.getKey().equals(key)) { diff --git a/src/main/java/com/yaohun/order/tabcommand/DorderTabCompleter.java b/src/main/java/com/yaohun/order/tabcommand/DorderTabCompleter.java new file mode 100644 index 0000000..e14a247 --- /dev/null +++ b/src/main/java/com/yaohun/order/tabcommand/DorderTabCompleter.java @@ -0,0 +1,34 @@ +package com.yaohun.order.tabcommand; + +import com.yaohun.order.config.Config; +import org.bukkit.Bukkit; +import org.bukkit.Sound; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +public class DorderTabCompleter implements TabCompleter { + @Override + public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + // 当输入了两个参数,并且第一个参数为"give"时,补全第二个参数 + if (args.length == 3 && "kit".equalsIgnoreCase(args[0])) { + // 从配置中获取所有药水的键集合,并过滤出以当前输入开头的药水名 + List subcommands = new ArrayList<>(Config.getOrderKeyList()); + if(sender instanceof Player){ + Player player = (Player) sender; + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,1); + } + return subcommands.stream() + .filter(s -> s.toLowerCase().startsWith(args[2].toLowerCase())) + .collect(Collectors.toList()); + } + // 如果不符合上述条件,则返回空列表 + return Collections.emptyList(); + } +} diff --git a/src/main/java/com/yaohun/order/util/OrderAllocator.java b/src/main/java/com/yaohun/order/util/OrderAllocator.java index 3f2d1d5..978e38f 100644 --- a/src/main/java/com/yaohun/order/util/OrderAllocator.java +++ b/src/main/java/com/yaohun/order/util/OrderAllocator.java @@ -14,7 +14,14 @@ public class OrderAllocator { public static Map allocateOrdersTW(List orders, int totalTW) { orders.sort((a, b) -> Integer.compare(b.twPreic, a.twPreic)); // 从大到小 Map result = new LinkedHashMap<>(); + if(totalTW < 100){ + result.put("Coins_Custom", totalTW / 5); + return result; + } for (OrderContent order : orders) { + if(order.twPreic < 5){ + continue; + } int count = totalTW / order.twPreic; if (count > 0) { result.put(order.getKey(), count); @@ -30,7 +37,14 @@ public class OrderAllocator { public static Map allocateOrdersCN(List orders, int totalTW) { orders.sort((a, b) -> Integer.compare(b.cnPrice, a.cnPrice)); // 从大到小 Map result = new LinkedHashMap<>(); + if(totalTW < 100){ + result.put("Coins_Custom", totalTW); + return result; + } for (OrderContent order : orders) { + if(order.cnPrice < 1){ + continue; + } int count = totalTW / order.cnPrice; if (count > 0) { result.put(order.getKey(), count); @@ -49,7 +63,7 @@ public class OrderAllocator { orders.add(new OrderContent("Coins_300", 1200, 300, new ArrayList<>())); orders.add(new OrderContent("Coins_1000", 4000, 1000, new ArrayList<>())); orders.add(new OrderContent("Coins_2000", 8000, 2000, new ArrayList<>())); - int totalTW = 1350; + int totalTW = 1200; Map allocation = allocateOrdersCN(orders, totalTW); allocation.forEach((k, v) -> System.out.println(k + " x " + v)); }