Skip to content

Commit c1c91ad

Browse files
committed
Improved Tab Complementation for Homes and Entities
1 parent ccbe61d commit c1c91ad

File tree

3 files changed

+48
-29
lines changed

3 files changed

+48
-29
lines changed

src/main/java/dev/lars/utilsmanager/commands/admin/EntityCommand.java

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,25 @@
22

33
import dev.lars.apimanager.apis.languageAPI.LanguageAPI;
44
import dev.lars.utilsmanager.utils.Statements;
5+
import dev.lars.utilsmanager.utils.SuggestHelper;
56
import io.papermc.paper.command.brigadier.BasicCommand;
67
import io.papermc.paper.command.brigadier.CommandSourceStack;
78
import net.kyori.adventure.text.Component;
89
import net.kyori.adventure.text.format.NamedTextColor;
910
import org.bukkit.entity.EntityType;
1011
import org.bukkit.entity.Player;
1112
import org.jetbrains.annotations.NotNull;
13+
import org.jspecify.annotations.NonNull;
1214

13-
import java.util.ArrayList;
14-
import java.util.Collection;
15-
import java.util.Collections;
15+
import java.util.*;
1616

1717
public class EntityCommand implements BasicCommand {
1818

19+
private static final List<String> ENTITY_NAMES =
20+
Arrays.stream(EntityType.values())
21+
.map(Enum::name)
22+
.toList();
23+
1924
@Override
2025
public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
2126
if (!(stack.getExecutor() instanceof Player player)) {
@@ -65,22 +70,30 @@ public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
6570
}
6671

6772
@Override
68-
public Collection<String> suggest(final CommandSourceStack commandSourceStack, final String[] args) {
69-
if (args.length == 0 || args.length == 1) {
70-
Collection<String> entityList = new ArrayList<>();
71-
for (EntityType entity : EntityType.values()) {
72-
entityList.add(entity.name().toLowerCase());
73-
}
74-
return entityList;
73+
public @NonNull Collection<String> suggest(final @NonNull CommandSourceStack commandSourceStack, final String[] args) {
74+
Player player = (Player) commandSourceStack.getSender();
75+
if(!player.hasPermission("utilsmanager.entity")) {
76+
player.sendMessage(Statements.getNotAllowed(player));
77+
return Collections.emptyList();
78+
}
79+
if (args.length == 0) {
80+
return ENTITY_NAMES;
81+
}
82+
if (args.length == 1) {
83+
return SuggestHelper.filter(args[0], ENTITY_NAMES.toArray(new String[0]));
7584
}
7685
return Collections.emptyList();
7786
}
7887

7988
private void sendUsage(Player player) {
8089
if (LanguageAPI.getApi().getLanguage(player) == 2) {
81-
player.sendMessage(NamedTextColor.GRAY + "Verwendung" + NamedTextColor.DARK_GRAY + ": " + NamedTextColor.BLUE + "/entity <Entität> <Anzahl>");
90+
player.sendMessage(Statements.getUsage(player)
91+
.append(Component.text("/entity <Entität> <Anzahl>", NamedTextColor.BLUE))
92+
);
8293
} else {
83-
player.sendMessage(NamedTextColor.GRAY + "Use" + NamedTextColor.DARK_GRAY + ": " + NamedTextColor.BLUE + "/entity <entity> <amount>");
94+
player.sendMessage(Statements.getUsage(player)
95+
.append(Component.text("/entity <entity> <amount>", NamedTextColor.BLUE))
96+
);
8497
}
8598
}
86-
}
99+
}

src/main/java/dev/lars/utilsmanager/commands/teleport/home/DeleteHomeCommand.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
import dev.lars.apimanager.apis.homeAPI.HomeAPI;
44
import dev.lars.apimanager.apis.languageAPI.LanguageAPI;
55
import dev.lars.utilsmanager.utils.Statements;
6+
import dev.lars.utilsmanager.utils.SuggestHelper;
67
import io.papermc.paper.command.brigadier.BasicCommand;
78
import io.papermc.paper.command.brigadier.CommandSourceStack;
89
import net.kyori.adventure.text.Component;
910
import net.kyori.adventure.text.format.NamedTextColor;
1011
import org.bukkit.entity.Player;
1112
import org.jetbrains.annotations.NotNull;
13+
import org.jspecify.annotations.NonNull;
1214

13-
import java.util.ArrayList;
14-
import java.util.Collection;
15-
import java.util.Collections;
15+
import java.util.*;
1616

1717
public class DeleteHomeCommand implements BasicCommand {
1818

@@ -59,10 +59,15 @@ public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
5959
}
6060

6161
@Override
62-
public Collection<String> suggest(final CommandSourceStack commandSourceStack, final String[] args) {
62+
public @NonNull Collection<String> suggest(final CommandSourceStack commandSourceStack, final String[] args) {
6363
Player player = (Player) commandSourceStack.getSender();
64-
if (args.length == 0 || args.length == 1) {
65-
return new ArrayList<>(HomeAPI.getApi().getOwnHomes(player));
64+
Collection<String> homes = Objects.requireNonNullElse(HomeAPI.getApi().getOwnHomes(player), Collections.emptyList());
65+
66+
if (args.length == 0) {
67+
return homes;
68+
}
69+
if (args.length == 1) {
70+
return SuggestHelper.filter(args[0], homes.toArray(new String[0]));
6671
}
6772
return Collections.emptyList();
6873
}

src/main/java/dev/lars/utilsmanager/commands/teleport/home/HomeCommand.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,17 @@
44
import dev.lars.apimanager.apis.homeAPI.HomeAPI;
55
import dev.lars.apimanager.apis.languageAPI.LanguageAPI;
66
import dev.lars.utilsmanager.utils.Statements;
7+
import dev.lars.utilsmanager.utils.SuggestHelper;
78
import io.papermc.paper.command.brigadier.BasicCommand;
89
import io.papermc.paper.command.brigadier.CommandSourceStack;
910
import net.kyori.adventure.text.Component;
1011
import net.kyori.adventure.text.format.NamedTextColor;
1112
import org.bukkit.Location;
1213
import org.bukkit.entity.Player;
1314
import org.jetbrains.annotations.NotNull;
15+
import org.jspecify.annotations.NonNull;
1416

15-
import java.util.ArrayList;
16-
import java.util.Collection;
17-
import java.util.Collections;
18-
import java.util.List;
17+
import java.util.*;
1918

2019
public class HomeCommand implements BasicCommand {
2120

@@ -68,14 +67,16 @@ public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
6867
}
6968

7069
@Override
71-
public Collection<String> suggest(final CommandSourceStack commandSourceStack, final String[] args) {
72-
if (args.length == 0 || args.length == 1) {
73-
List<String> homes = new ArrayList<>();
74-
for (String string : HomeAPI.getApi().getHomes((Player) commandSourceStack.getSender())) {
75-
homes.add(string.toLowerCase());
76-
}
70+
public @NonNull Collection<String> suggest(final CommandSourceStack commandSourceStack, final String[] args) {
71+
Player player = (Player) commandSourceStack.getSender();
72+
Collection<String> homes = Objects.requireNonNullElse(HomeAPI.getApi().getHomes(player), Collections.emptyList());
73+
74+
if (args.length == 0) {
7775
return homes;
7876
}
77+
if (args.length == 1) {
78+
return SuggestHelper.filter(args[0], homes.toArray(new String[0]));
79+
}
7980
return Collections.emptyList();
8081
}
8182

0 commit comments

Comments
 (0)