EcoCommand.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package me.lethunderhawk.economy.command;
  2. import me.lethunderhawk.bazaarflux.util.command.CommandNode;
  3. import me.lethunderhawk.bazaarflux.util.command.CustomCommand;
  4. import me.lethunderhawk.economy.EconomyModule;
  5. import me.lethunderhawk.economy.api.EconomyAPI;
  6. import net.kyori.adventure.text.Component;
  7. import net.kyori.adventure.text.format.NamedTextColor;
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.command.CommandSender;
  10. import org.bukkit.entity.Player;
  11. import java.util.Collections;
  12. import java.util.List;
  13. import java.util.stream.Collectors;
  14. public class EcoCommand extends CustomCommand {
  15. private static final List<String> AMOUNTS = List.of("1", "5", "10", "50", "100", "500", "1000");
  16. private final EconomyModule module;
  17. public EcoCommand(EconomyModule module) {
  18. super(new CommandNode("eco", "Main economy command", null), module);
  19. this.module = module;
  20. }
  21. @Override
  22. public void createCommands() {
  23. CommandNode set = registerCommand("set", "Set the balance of a player", this::setEco);
  24. set.setTabCompleter(this::completeAllEcoCommands);
  25. CommandNode add = registerCommand("add", "Add any amount to the balance of a player", this::addEco);
  26. add.setTabCompleter(this::completeAllEcoCommands);
  27. CommandNode remove = registerCommand("remove", "Remove any amount of the balance of a player", this::removeEco);
  28. remove.setTabCompleter(this::completeAllEcoCommands);
  29. CommandNode get = registerCommand("get", "Get the balance of a player", this::getBalance);
  30. get.setTabCompleter(this::completePlayers);
  31. }
  32. private List<String> completePlayers(CommandSender sender, String[] args){
  33. String partial = args[1].toLowerCase();
  34. return Bukkit.getOnlinePlayers().stream()
  35. .map(Player::getName)
  36. .filter(name -> name.toLowerCase().startsWith(partial))
  37. .collect(Collectors.toList());
  38. }
  39. /**
  40. * @param args The full arguments list
  41. * @return The completion in following format: /eco [action] [List of players] [amount]
  42. */
  43. private List<String> completeAllEcoCommands(CommandSender sender, String[] args){
  44. if (args.length == 2) {
  45. return completePlayers(sender, args);
  46. }
  47. // /eco <action> <player> <amount>
  48. if (args.length == 3) {
  49. String partial = args[2].toLowerCase();
  50. return AMOUNTS.stream()
  51. .filter(s -> s.startsWith(partial))
  52. .collect(Collectors.toList());
  53. }
  54. return Collections.emptyList();
  55. }
  56. private void getBalance(CommandSender commandSender, String[] strings) {
  57. Player target = Bukkit.getPlayer(strings[0]);
  58. if (target == null) {
  59. module.sendText(commandSender, Component.text("Spieler nicht gefunden.", NamedTextColor.RED));
  60. }else{
  61. module.sendText(commandSender, Component.text("Spieler " + target.getName() + " hat " + getAPI().getMoney(target.getUniqueId()), NamedTextColor.GRAY));
  62. }
  63. }
  64. private void removeEco(CommandSender commandSender, String[] strings) {
  65. }
  66. private void addEco(CommandSender commandSender, String[] strings) {
  67. if(!commandSender.isOp()) return;
  68. Player target = Bukkit.getPlayer(strings[0]);
  69. if (target == null) {
  70. module.sendText(commandSender, Component.text("Spieler nicht gefunden.", NamedTextColor.RED));
  71. }else{
  72. getAPI().addMoney(target.getUniqueId(), Long.parseLong(strings[1]));
  73. }
  74. }
  75. private void setEco(CommandSender commandSender, String[] strings) {
  76. if(!commandSender.isOp()) return;
  77. Player target = Bukkit.getPlayer(strings[0]);
  78. if (target == null) {
  79. module.sendText(commandSender, Component.text("Spieler nicht gefunden.", NamedTextColor.RED));
  80. }else{
  81. getAPI().setMoney(target.getUniqueId(), Long.parseLong(strings[1]));
  82. }
  83. }
  84. private EconomyAPI getAPI(){
  85. return module.getEconomyAPI();
  86. }
  87. }