|
@@ -1,12 +1,12 @@
|
|
|
package me.lethunderhawk.clans.command;
|
|
package me.lethunderhawk.clans.command;
|
|
|
|
|
|
|
|
import me.lethunderhawk.bazaarflux.util.command.CommandNode;
|
|
import me.lethunderhawk.bazaarflux.util.command.CommandNode;
|
|
|
|
|
+import me.lethunderhawk.bazaarflux.util.gui.InventoryManager;
|
|
|
import me.lethunderhawk.clans.Clan;
|
|
import me.lethunderhawk.clans.Clan;
|
|
|
import me.lethunderhawk.clans.ClanManager;
|
|
import me.lethunderhawk.clans.ClanManager;
|
|
|
import me.lethunderhawk.clans.ClanModule;
|
|
import me.lethunderhawk.clans.ClanModule;
|
|
|
import me.lethunderhawk.clans.claim.Claim;
|
|
import me.lethunderhawk.clans.claim.Claim;
|
|
|
import me.lethunderhawk.clans.gui.ClanGUI;
|
|
import me.lethunderhawk.clans.gui.ClanGUI;
|
|
|
-import me.lethunderhawk.clans.rules.Rule;
|
|
|
|
|
import me.lethunderhawk.custom.item.concrete.ClaimTool;
|
|
import me.lethunderhawk.custom.item.concrete.ClaimTool;
|
|
|
import me.lethunderhawk.main.Main;
|
|
import me.lethunderhawk.main.Main;
|
|
|
import net.kyori.adventure.text.Component;
|
|
import net.kyori.adventure.text.Component;
|
|
@@ -24,12 +24,11 @@ import java.util.Arrays;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
|
import java.util.function.BiConsumer;
|
|
import java.util.function.BiConsumer;
|
|
|
-import java.util.function.BiFunction;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
public class ClanCommand implements CommandExecutor, TabCompleter {
|
|
public class ClanCommand implements CommandExecutor, TabCompleter {
|
|
|
- private ClanManager manager;
|
|
|
|
|
- private CommandNode rootCommand;
|
|
|
|
|
|
|
+ private final ClanManager manager;
|
|
|
|
|
+ private final CommandNode rootCommand;
|
|
|
|
|
|
|
|
public ClanCommand(ClanManager manager) {
|
|
public ClanCommand(ClanManager manager) {
|
|
|
this.manager = manager;
|
|
this.manager = manager;
|
|
@@ -37,7 +36,6 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
|
|
|
setupDefaultCommands();
|
|
setupDefaultCommands();
|
|
|
}
|
|
}
|
|
|
private void setupDefaultCommands() {
|
|
private void setupDefaultCommands() {
|
|
|
- // Register default commands
|
|
|
|
|
|
|
|
|
|
registerCommand("list", "List all clans", this::handleList);
|
|
registerCommand("list", "List all clans", this::handleList);
|
|
|
registerCommand("help", "Gives information about the use of clan commands", this::handleHelp);
|
|
registerCommand("help", "Gives information about the use of clan commands", this::handleHelp);
|
|
@@ -45,7 +43,8 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
|
|
|
registerCommand("reload", "Reload the clan Plugin", this::handleReload);
|
|
registerCommand("reload", "Reload the clan Plugin", this::handleReload);
|
|
|
registerCommand("members", "Show the members of your clan", this::handleShowMembers);
|
|
registerCommand("members", "Show the members of your clan", this::handleShowMembers);
|
|
|
registerCommand("save", "Save all clans and Claims", this::handleSave);
|
|
registerCommand("save", "Save all clans and Claims", this::handleSave);
|
|
|
- //registerCommand("menu", "Shows a GUI to handle your clan if you are the owner", this::handleGUI);
|
|
|
|
|
|
|
+ registerCommand("menu", "Shows a GUI to handle your clan if you are the owner", this::handleGUI);
|
|
|
|
|
+
|
|
|
CommandNode claimNode = registerCommand("claim", "Claim land for your clan", this::handleClaim);
|
|
CommandNode claimNode = registerCommand("claim", "Claim land for your clan", this::handleClaim);
|
|
|
claimNode.registerSubCommand("info", "Get information about your claims", this::infoClaims);
|
|
claimNode.registerSubCommand("info", "Get information about your claims", this::infoClaims);
|
|
|
claimNode.registerSubCommand("removeAll", "Remove all current claims", this::removeAllClaims);
|
|
claimNode.registerSubCommand("removeAll", "Remove all current claims", this::removeAllClaims);
|
|
@@ -62,14 +61,6 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
|
|
|
CommandNode joinNode = registerCommand("join", "Join a clan", this::handleJoin);
|
|
CommandNode joinNode = registerCommand("join", "Join a clan", this::handleJoin);
|
|
|
joinNode.setTabCompleter(this::completeClans);
|
|
joinNode.setTabCompleter(this::completeClans);
|
|
|
|
|
|
|
|
- CommandNode ruleNode = registerCommand("rule", "Manage clan rules", null);
|
|
|
|
|
- ruleNode.registerSubCommand("list", "List all rules", this::handleRuleList);
|
|
|
|
|
- ruleNode.registerSubCommand("set", "Set a rule value", this::handleRuleSet)
|
|
|
|
|
- .setTabCompleter(this::completeRules);
|
|
|
|
|
- ruleNode.registerSubCommand("add", "Add a new rule", this::handleRuleAdd);
|
|
|
|
|
- ruleNode.registerSubCommand("remove", "Remove a rule", this::handleRuleRemove)
|
|
|
|
|
- .setTabCompleter(this::completeRules);
|
|
|
|
|
-
|
|
|
|
|
registerCommand("create", "Create a new clan", this::handleCreate);
|
|
registerCommand("create", "Create a new clan", this::handleCreate);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -106,13 +97,14 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void handleClaim(CommandSender sender, String[] strings) {
|
|
private void handleClaim(CommandSender sender, String[] strings) {
|
|
|
- sender.sendMessage("Nothing yet implemented! come back later!");
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void handleGUI(CommandSender sender, String[] strings) {
|
|
private void handleGUI(CommandSender sender, String[] strings) {
|
|
|
if(!(sender instanceof Player player)) return;
|
|
if(!(sender instanceof Player player)) return;
|
|
|
- if(manager.getMyClan(player.getUniqueId()) == null) return;
|
|
|
|
|
- new ClanGUI(manager, player).open();
|
|
|
|
|
|
|
+ Clan myClan = manager.getMyClan(player.getUniqueId());
|
|
|
|
|
+ if(myClan == null) return;
|
|
|
|
|
+ InventoryManager.openFor(player, new ClanGUI(myClan, player));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -199,26 +191,11 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
|
|
|
else ClanModule.sendText(player,"The Name for the Clan " + name + " is already taken or you are already in a clan!");
|
|
else ClanModule.sendText(player,"The Name for the Clan " + name + " is already taken or you are already in a clan!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private void handleRuleRemove(CommandSender commandSender, String[] strings) {
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private void handleRuleAdd(CommandSender commandSender, String[] strings) {
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private void handleRuleSet(CommandSender commandSender, String[] strings) {
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private void handleRuleList(CommandSender commandSender, String[] strings) {
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// Helper method to easily register commands
|
|
// Helper method to easily register commands
|
|
|
public CommandNode registerCommand(String name, String description, BiConsumer<CommandSender, String[]> executor) {
|
|
public CommandNode registerCommand(String name, String description, BiConsumer<CommandSender, String[]> executor) {
|
|
|
return rootCommand.registerSubCommand(name, description, executor);
|
|
return rootCommand.registerSubCommand(name, description, executor);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
|
|
if (args.length == 0) {
|
|
if (args.length == 0) {
|
|
@@ -318,30 +295,6 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // Dynamic registration API
|
|
|
|
|
- public void registerDynamicCommand(String path, String description,
|
|
|
|
|
- BiConsumer<CommandSender, String[]> executor,
|
|
|
|
|
- BiFunction<CommandSender, String[], List<String>> tabCompleter) {
|
|
|
|
|
- String[] parts = path.split("\\.");
|
|
|
|
|
- CommandNode currentNode = rootCommand;
|
|
|
|
|
-
|
|
|
|
|
- for (String part : parts) {
|
|
|
|
|
- CommandNode nextNode = currentNode.getSubCommand(part);
|
|
|
|
|
- if (nextNode == null) {
|
|
|
|
|
- nextNode = new CommandNode(part, "", null);
|
|
|
|
|
- currentNode.addSubCommand(nextNode);
|
|
|
|
|
- }
|
|
|
|
|
- currentNode = nextNode;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- currentNode.setExecutor(executor);
|
|
|
|
|
- currentNode.setTabCompleter(tabCompleter);
|
|
|
|
|
- if (!description.isEmpty()) {
|
|
|
|
|
- // Can't directly set description as it's final, would need to modify CommandNode
|
|
|
|
|
- // or use a different approach
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// Example command handlers
|
|
// Example command handlers
|
|
|
private void handleList(CommandSender sender, String[] args) {
|
|
private void handleList(CommandSender sender, String[] args) {
|
|
|
ClanModule.sendText(sender,"Aktuelle Liste an Clans: ");
|
|
ClanModule.sendText(sender,"Aktuelle Liste an Clans: ");
|
|
@@ -369,20 +322,6 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
|
|
|
.filter(name -> name.toLowerCase().startsWith(partial))
|
|
.filter(name -> name.toLowerCase().startsWith(partial))
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- private List<String> completeRules(CommandSender sender, String[] args) {
|
|
|
|
|
- if(!(sender instanceof Player player)) return List.of("Your not a player!");
|
|
|
|
|
-
|
|
|
|
|
- Clan clan = manager.getMyClan(player.getUniqueId());
|
|
|
|
|
- if (clan == null) return List.of("You are not in a clan!");
|
|
|
|
|
- if (clan.getRules() == null) return List.of("No rules set yet!");
|
|
|
|
|
-
|
|
|
|
|
- String partial = args.length > 0 ? args[args.length - 1].toLowerCase() : "";
|
|
|
|
|
- return clan.getRules().stream()
|
|
|
|
|
- .map(Rule::getName)
|
|
|
|
|
- .filter(name -> name.toLowerCase().startsWith(partial))
|
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
- }
|
|
|
|
|
private List<String> completeRequests(CommandSender sender, String[] args) {
|
|
private List<String> completeRequests(CommandSender sender, String[] args) {
|
|
|
if(!(sender instanceof Player player)) return List.of("Your not a player!");
|
|
if(!(sender instanceof Player player)) return List.of("Your not a player!");
|
|
|
|
|
|