ScriptsLab
WikiDownloadsSourcesSupport
ScriptsLab
DocumentationDownloadsGitHubDiscord

© 2026 ScriptsLab

Back to src/main/java/com/scriptslab/api/command
J

CommandManager.java

Java · 74 lines · 1.9 KB

src/main/java/com/scriptslab/api/command/CommandManager.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.scriptslab.api.command;

import org.bukkit.command.CommandSender;

import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;

/**
 * Manager for plugin commands.
 * Supports both Java and script-based commands.
 */
public interface CommandManager {
    
    /**
     * Registers all plugin commands.
     */
    void registerCommands();
    
    /**
     * Registers a command from a script.
     * 
     * @param name command name
     * @param executor command executor
     * @param permission required permission (null for none)
     * @return future that completes when registered
     */
    CompletableFuture<Void> registerScriptCommand(
            String name,
            BiConsumer<CommandSender, String[]> executor,
            String permission
    );
    
    /**
     * Registers a command with tab completion.
     * 
     * @param name command name
     * @param executor command executor
     * @param tabCompleter tab completer
     * @param permission required permission
     * @return future that completes when registered
     */
    CompletableFuture<Void> registerScriptCommand(
            String name,
            BiConsumer<CommandSender, String[]> executor,
            BiFunction<CommandSender, String[], List<String>> tabCompleter,
            String permission
    );
    
    /**
     * Unregisters a command.
     * 
     * @param name command name
     * @return future that completes when unregistered
     */
    CompletableFuture<Void> unregisterCommand(String name);
    
    /**
     * Checks if a command is registered.
     * 
     * @param name command name
     * @return true if registered
     */
    boolean isRegistered(String name);
    
    /**
     * Gets all registered command names.
     * 
     * @return list of command names
     */
    List<String> getRegisteredCommands();
}