| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package me.lethunderhawk.economy.command;
- import me.lethunderhawk.bazaarflux.util.command.CommandNode;
- import me.lethunderhawk.bazaarflux.util.command.CustomCommand;
- import me.lethunderhawk.economy.EconomyModule;
- import me.lethunderhawk.economy.api.EconomyAPI;
- import net.kyori.adventure.text.Component;
- import net.kyori.adventure.text.format.NamedTextColor;
- import org.bukkit.Bukkit;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import java.util.Collections;
- import java.util.List;
- import java.util.stream.Collectors;
- public class EcoCommand extends CustomCommand {
- private static final List<String> AMOUNTS = List.of("1", "5", "10", "50", "100", "500", "1000");
- private final EconomyModule module;
- public EcoCommand(EconomyModule module) {
- super(new CommandNode("eco", "Main economy command", null), module);
- this.module = module;
- }
- @Override
- public void createCommands() {
- CommandNode set = registerCommand("set", "Set the balance of a player", this::setEco);
- set.setTabCompleter(this::completeAllEcoCommands);
- CommandNode add = registerCommand("add", "Add any amount to the balance of a player", this::addEco);
- add.setTabCompleter(this::completeAllEcoCommands);
- CommandNode remove = registerCommand("remove", "Remove any amount of the balance of a player", this::removeEco);
- remove.setTabCompleter(this::completeAllEcoCommands);
- CommandNode get = registerCommand("get", "Get the balance of a player", this::getBalance);
- get.setTabCompleter(this::completePlayers);
- }
- private List<String> completePlayers(CommandSender sender, String[] args){
- String partial = args[1].toLowerCase();
- return Bukkit.getOnlinePlayers().stream()
- .map(Player::getName)
- .filter(name -> name.toLowerCase().startsWith(partial))
- .collect(Collectors.toList());
- }
- /**
- * @param args The full arguments list
- * @return The completion in following format: /eco [action] [List of players] [amount]
- */
- private List<String> completeAllEcoCommands(CommandSender sender, String[] args){
- if (args.length == 2) {
- return completePlayers(sender, args);
- }
- // /eco <action> <player> <amount>
- if (args.length == 3) {
- String partial = args[2].toLowerCase();
- return AMOUNTS.stream()
- .filter(s -> s.startsWith(partial))
- .collect(Collectors.toList());
- }
- return Collections.emptyList();
- }
- private void getBalance(CommandSender commandSender, String[] strings) {
- Player target = Bukkit.getPlayer(strings[0]);
- if (target == null) {
- module.sendText(commandSender, Component.text("Spieler nicht gefunden.", NamedTextColor.RED));
- }else{
- module.sendText(commandSender, Component.text("Spieler " + target.getName() + " hat " + getAPI().getMoney(target.getUniqueId()), NamedTextColor.GRAY));
- }
- }
- private void removeEco(CommandSender commandSender, String[] strings) {
- }
- private void addEco(CommandSender commandSender, String[] strings) {
- if(!commandSender.isOp()) return;
- Player target = Bukkit.getPlayer(strings[0]);
- if (target == null) {
- module.sendText(commandSender, Component.text("Spieler nicht gefunden.", NamedTextColor.RED));
- }else{
- getAPI().addMoney(target.getUniqueId(), Long.parseLong(strings[1]));
- }
- }
- private void setEco(CommandSender commandSender, String[] strings) {
- if(!commandSender.isOp()) return;
- Player target = Bukkit.getPlayer(strings[0]);
- if (target == null) {
- module.sendText(commandSender, Component.text("Spieler nicht gefunden.", NamedTextColor.RED));
- }else{
- getAPI().setMoney(target.getUniqueId(), Long.parseLong(strings[1]));
- }
- }
- private EconomyAPI getAPI(){
- return module.getEconomyAPI();
- }
- }
|