Skip to content

Commit 3502726

Browse files
committed
Add tab completer, alpha-version, add tests
1 parent ab979c2 commit 3502726

File tree

10 files changed

+471
-77
lines changed

10 files changed

+471
-77
lines changed

build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ subprojects {
3333
useJUnitPlatform()
3434
}
3535

36+
dependencies {
37+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3'
38+
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.3'
39+
}
40+
3641
if (!(project.name in ['shared'])) {
3742
apply plugin: 'com.github.johnrengelman.shadow'
3843

paper/src/main/java/cz/foresttech/commandapi/paper/CommandAPI.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44
import cz.foresttech.commandapi.paper.argument.PlayerArgumentProcessor;
55
import cz.foresttech.commandapi.shared.AbstractCommandAPI;
66
import org.bukkit.OfflinePlayer;
7-
import org.bukkit.command.Command;
8-
import org.bukkit.command.CommandExecutor;
9-
import org.bukkit.command.CommandSender;
7+
import org.bukkit.command.*;
108
import org.bukkit.entity.Player;
119
import org.bukkit.plugin.java.JavaPlugin;
1210
import org.jetbrains.annotations.NotNull;
11+
import org.jetbrains.annotations.Nullable;
1312

14-
public class CommandAPI extends AbstractCommandAPI<CommandSenderWrapper> implements CommandExecutor {
13+
import java.util.List;
14+
15+
public class CommandAPI extends AbstractCommandAPI<CommandSenderWrapper> implements CommandExecutor, TabCompleter {
1516

1617
private final JavaPlugin javaPlugin;
1718

@@ -20,9 +21,15 @@ public CommandAPI(JavaPlugin javaPlugin) {
2021
}
2122

2223
@Override
23-
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
24+
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
25+
CommandSenderWrapper senderWrapper = new CommandSenderWrapper(commandSender);
26+
return onCommand(senderWrapper, command.getName(), args);
27+
}
28+
29+
@Override
30+
public @Nullable List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
2431
CommandSenderWrapper senderWrapper = new CommandSenderWrapper(commandSender);
25-
return onCommand(senderWrapper, command.getName(), strings);
32+
return tabComplete(senderWrapper, command.getName(), args);
2633
}
2734

2835
@Override
@@ -32,9 +39,14 @@ protected void setup() {
3239
}
3340

3441
@Override
35-
protected void register() {
36-
javaPlugin.getServer().getCommandMap().getKnownCommands().values().forEach(command -> {
37-
javaPlugin.getCommand(command.getName()).setExecutor(this);
38-
});
42+
protected boolean registerToPlatform(String cmdName) {
43+
PluginCommand pluginCommand = javaPlugin.getCommand(cmdName);
44+
if (pluginCommand == null) {
45+
return false;
46+
}
47+
48+
pluginCommand.setExecutor(this);
49+
pluginCommand.setTabCompleter(this);
50+
return true;
3951
}
4052
}

paper/src/main/java/cz/foresttech/commandapi/paper/argument/OfflinePlayerArgumentProcessor.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.bukkit.OfflinePlayer;
66
import org.bukkit.entity.Player;
77

8+
import java.util.List;
89
import java.util.UUID;
910

1011
public class OfflinePlayerArgumentProcessor implements ArgumentTypeProcessor<OfflinePlayer> {
@@ -33,4 +34,10 @@ public OfflinePlayer get(String argument) {
3334
return Bukkit.getOfflinePlayer(argument);
3435
}
3536

37+
@Override
38+
public List<String> tabComplete(String argument) {
39+
//TODO?
40+
return null;
41+
}
42+
3643
}

paper/src/main/java/cz/foresttech/commandapi/paper/argument/PlayerArgumentProcessor.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.bukkit.Bukkit;
55
import org.bukkit.entity.Player;
66

7+
import java.util.List;
78
import java.util.UUID;
89

910
public class PlayerArgumentProcessor implements ArgumentTypeProcessor<Player> {
@@ -21,4 +22,10 @@ public Player get(String argument) {
2122
return player;
2223
}
2324

25+
@Override
26+
public List<String> tabComplete(String argument) {
27+
//TODO?
28+
return null;
29+
}
30+
2431
}

0 commit comments

Comments
 (0)