Skip to content

Commit 05ab5c9

Browse files
committed
Added base for subcommands
1 parent f60342c commit 05ab5c9

File tree

6 files changed

+100
-19
lines changed

6 files changed

+100
-19
lines changed

src/main/java/de/pascalpex/pexnpc/commands/PexNPCCommand.java

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,35 @@
11
package de.pascalpex.pexnpc.commands;
22

33
import de.pascalpex.pexnpc.PexNPC;
4+
import de.pascalpex.pexnpc.commands.subcommands.SubCommands;
45
import de.pascalpex.pexnpc.files.NPCData;
6+
import de.pascalpex.pexnpc.util.MessageHandler;
57
import io.papermc.paper.command.brigadier.BasicCommand;
68
import io.papermc.paper.command.brigadier.CommandSourceStack;
79
import org.bukkit.Bukkit;
810
import org.bukkit.command.CommandSender;
911
import org.bukkit.entity.Player;
12+
import org.jetbrains.annotations.NotNull;
1013

11-
import java.util.ArrayList;
12-
import java.util.Collection;
13-
import java.util.Collections;
14-
import java.util.List;
14+
import java.util.*;
1515

1616
public class PexNPCCommand implements BasicCommand {
1717
@Override
18-
public void execute(CommandSourceStack commandSourceStack, String[] strings) {
18+
public void execute(CommandSourceStack commandSourceStack, String @NotNull [] args) {
1919
CommandSender sender = commandSourceStack.getSender();
20+
if(sender instanceof Player player) {
21+
if(args.length == 0) {
22+
SubCommands.HELP.getSubCommand().invoke(player, new String[0]);
23+
}
24+
for(SubCommands subCommand : SubCommands.values()) {
25+
if(subCommand.getSubCommand().getLabel().equalsIgnoreCase(args[0])) {
26+
subCommand.getSubCommand().invoke(player, Arrays.copyOfRange(args, 1, args.length));
27+
return;
28+
}
29+
}
30+
} else {
31+
sender.sendMessage(MessageHandler.errorMessage("Dieser Befehl ist nur für Spieler geeignet"));
32+
}
2033
}
2134

2235
@Override
@@ -27,19 +40,9 @@ public Collection<String> suggest(CommandSourceStack commandSourceStack, String[
2740
if (sender instanceof Player) {
2841
if (sender.hasPermission("pexnpc.command")) {
2942
if (args.length == 1) {
30-
completions.add("help");
31-
completions.add("reload");
32-
completions.add("create");
33-
completions.add("list");
34-
completions.add("delete");
35-
completions.add("name");
36-
completions.add("movehere");
37-
completions.add("tp");
38-
completions.add("skin");
39-
completions.add("cmd");
40-
completions.add("msg");
41-
completions.add("item");
42-
completions.add("clear");
43+
for(SubCommands subCommand : SubCommands.values()) {
44+
completions.add(subCommand.getSubCommand().getLabel());
45+
}
4346
completions.removeIf(s -> !s.startsWith(args[0].toLowerCase()));
4447
}
4548
if (args.length == 2) {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package de.pascalpex.pexnpc.commands.subcommands;
2+
3+
import org.bukkit.entity.Player;
4+
5+
public class HelpSubcommand extends SubCommand {
6+
public HelpSubcommand(String label, String permission) {
7+
super(label, permission);
8+
}
9+
10+
@Override
11+
void execute(Player player, String[] args) {
12+
13+
}
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package de.pascalpex.pexnpc.commands.subcommands;
2+
3+
import org.bukkit.entity.Player;
4+
5+
public class ListSubcommand extends SubCommand {
6+
public ListSubcommand(String label, String permission) {
7+
super(label, permission);
8+
}
9+
10+
@Override
11+
void execute(Player player, String[] args) {
12+
13+
}
14+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package de.pascalpex.pexnpc.commands.subcommands;
2+
3+
import de.pascalpex.pexnpc.util.MessageHandler;
4+
import org.bukkit.entity.Player;
5+
6+
public abstract class SubCommand {
7+
8+
private final String label;
9+
private final String permission;
10+
11+
public SubCommand(String label, String permission) {
12+
this.label = label;
13+
this.permission = permission;
14+
}
15+
16+
public void invoke(Player player, String[] args) {
17+
if(player.hasPermission(permission)) {
18+
execute(player, args);
19+
} else {
20+
player.sendMessage(MessageHandler.errorMessage("Dafür hast du keine Rechte"));
21+
}
22+
}
23+
24+
public String getLabel() {
25+
return label;
26+
}
27+
28+
abstract void execute(Player player, String[] args);
29+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package de.pascalpex.pexnpc.commands.subcommands;
2+
3+
public enum SubCommands {
4+
HELP(new HelpSubcommand("help", "")),
5+
LIST(new ListSubcommand("list", "pexnpc.list"));
6+
7+
private final SubCommand subCommand;
8+
9+
SubCommands(SubCommand subCommand) {
10+
this.subCommand = subCommand;
11+
}
12+
13+
public SubCommand getSubCommand() {
14+
return subCommand;
15+
}
16+
}

src/main/java/de/pascalpex/pexnpc/util/MessageHandler.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
public class MessageHandler {
1010
public static Component prefix = parse("");
11-
private static final TextColor defaultColor = NamedTextColor.GOLD;
11+
private static final TextColor defaultColor = NamedTextColor.AQUA;
12+
private static final TextColor errorColor = NamedTextColor.RED;
1213
private static final MiniMessage mm = MiniMessage.miniMessage();
1314

1415
public static Component parseSection(String legacyMessage) {
@@ -30,6 +31,10 @@ public static Component basicMessage(String message) {
3031
return prefix.append(Component.text(" " + message).color(defaultColor));
3132
}
3233

34+
public static Component errorMessage(String message) {
35+
return prefix.append(Component.text(" " + message).color(errorColor));
36+
}
37+
3338
public static Component prefixedMini(String miniMessage) {
3439
Component miniComponent = parse(miniMessage);
3540
return prefix.append(Component.text(" ")).append(miniComponent);

0 commit comments

Comments
 (0)