Skip to content

Commit 007b052

Browse files
committed
Sendto can now handle serverids short and long
1 parent dfcbdb7 commit 007b052

2 files changed

Lines changed: 60 additions & 12 deletions

File tree

type.generic/src/main/java/net/swofty/type/generic/command/commands/SendToCommand.java

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,76 @@
22

33
import net.minestom.server.command.builder.arguments.ArgumentEnum;
44
import net.minestom.server.command.builder.arguments.ArgumentString;
5-
import net.swofty.commons.ServerManager;
5+
import net.minestom.server.command.builder.suggestion.SuggestionEntry;
66
import net.swofty.commons.ServerType;
7+
import net.swofty.velocity.gamemanager.GameManager;
78
import net.swofty.type.generic.command.CommandParameters;
89
import net.swofty.type.generic.command.HypixelCommand;
910
import net.swofty.type.generic.user.HypixelPlayer;
1011
import net.swofty.type.generic.user.categories.Rank;
1112

12-
@CommandParameters(aliases = "transfer",
13+
import java.util.UUID;
14+
15+
@CommandParameters(
16+
aliases = "transfer",
1317
description = "Transfers a player to another server",
14-
usage = "/sendto <server_type>",
18+
usage = "/sendto <server_type|server_id>",
1519
permission = Rank.STAFF,
16-
allowsConsole = false)
20+
allowsConsole = false
21+
)
1722
public class SendToCommand extends HypixelCommand {
23+
1824
@Override
1925
public void registerUsage(MinestomCommand command) {
20-
ArgumentEnum<ServerType> serverType = new ArgumentEnum<>("server_type", ServerType.class);
21-
ArgumentString serverId = new ArgumentString("server_id");
26+
27+
ArgumentEnum<ServerType> serverType =
28+
new ArgumentEnum<>("server_type", ServerType.class);
29+
30+
31+
ArgumentString serverId = new ArgumentString("server_id")
32+
.setSuggestionCallback((sender, context, suggestion) -> {
33+
GameManager.getServers().values().forEach(list -> {
34+
list.forEach(gs -> {
35+
suggestion.addEntry(new SuggestionEntry(gs.shortDisplayName()));
36+
suggestion.addEntry(new SuggestionEntry(gs.displayName()));
37+
});
38+
});
39+
});
40+
2241

2342
command.addSyntax((sender, context) -> {
2443
if (!permissionCheck(sender)) return;
25-
ServerType type = context.get(serverType);
44+
2645
HypixelPlayer player = (HypixelPlayer) sender;
46+
ServerType type = context.get(serverType);
2747

2848
player.sendTo(type, true);
2949
}, serverType);
3050

3151
command.addSyntax((sender, context) -> {
3252
if (!permissionCheck(sender)) return;
33-
String id = context.get(serverId);
53+
3454
HypixelPlayer player = (HypixelPlayer) sender;
55+
String input = context.get(serverId);
56+
3557

36-
if (ServerManager.isValidServerId(id)) {
37-
player.sendTo(id, true);
38-
} else {
39-
player.sendMessage("Invalid server ID.");
58+
GameManager.GameServer gs = GameManager.getFromDisplayName(input);
59+
if (gs != null) {
60+
player.sendTo(gs.internalID(), true);
61+
return;
4062
}
63+
64+
65+
try {
66+
UUID uuid = UUID.fromString(input);
67+
gs = GameManager.getFromUUID(uuid);
68+
if (gs != null) {
69+
player.sendTo(gs.internalID(), true);
70+
return;
71+
}
72+
} catch (IllegalArgumentException ignored) {}
73+
74+
player.sendMessage("§cServer not found.");
4175
}, serverId);
4276
}
4377
}

velocity.extension/src/main/java/net/swofty/velocity/gamemanager/GameManager.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,4 +162,18 @@ public boolean hasEmptySlots() {
162162
return maxPlayers > registeredServer().getPlayersConnected().size();
163163
}
164164
}
165+
public static @Nullable GameServer getFromDisplayName(String name) {
166+
for (ArrayList<GameServer> list : servers.values()) {
167+
for (GameServer gs : list) {
168+
if (gs.displayName().equalsIgnoreCase(name)
169+
|| gs.shortDisplayName().equalsIgnoreCase(name)) {
170+
return gs;
171+
}
172+
}
173+
}
174+
return null;
175+
}
176+
public static boolean hasServer(String name) {
177+
return getFromDisplayName(name) != null;
178+
}
165179
}

0 commit comments

Comments
 (0)