Skip to content

Commit b20be4e

Browse files
feat: proxy decided names
Took 1 hour 8 minutes
1 parent ca22eb1 commit b20be4e

20 files changed

Lines changed: 159 additions & 41 deletions

File tree

commons/src/main/java/net/swofty/commons/UnderstandableProxyServer.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,19 @@
77
import java.util.List;
88
import java.util.UUID;
99

10-
public record UnderstandableProxyServer(String name, UUID uuid, ServerType type, int port, List<UUID> players) {
10+
public record UnderstandableProxyServer(String name, UUID uuid, ServerType type,
11+
int port, List<UUID> players, int maxPlayers,
12+
String shortName
13+
) {
1114
public JSONObject toJSON() {
1215
return new JSONObject()
1316
.put("name", name)
1417
.put("uuid", uuid.toString())
1518
.put("type", type.name())
1619
.put("port", port)
17-
.put("players", players);
20+
.put("players", players)
21+
.put("max_players", maxPlayers)
22+
.put("short_name", shortName);
1823
}
1924

2025
public static UnderstandableProxyServer singleFromJSON(JSONObject json) {
@@ -27,7 +32,9 @@ public static UnderstandableProxyServer singleFromJSON(JSONObject json) {
2732
UUID.fromString(json.getString("uuid")),
2833
ServerType.valueOf(json.getString("type")),
2934
json.getInt("port"),
30-
players
35+
players,
36+
json.getInt("max_players"),
37+
json.getString("short_name")
3138
);
3239
}
3340

commons/src/main/java/net/swofty/commons/proxy/requirements/to/RegisterServerRequirements.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ public List<RequiredKey> getRequiredKeysForProxy() {
1515
@Override
1616
public List<RequiredKey> getRequiredKeysForServer() {
1717
return List.of(
18-
new RequiredKey("type") // Type of the server
18+
new RequiredKey("type"), // Type of the server
19+
new RequiredKey("max_players") // Max players for the server
1920
// OPTIONALLY YOU CAN PASS THROUGH A PORT TO FORCE IT
2021
);
2122
}

commons/src/main/java/net/swofty/commons/proxy/requirements/to/ServerNameRequirements.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ public class ServerNameRequirements extends ProxyChannelRequirements {
88
@Override
99
public List<RequiredKey> getRequiredKeysForProxy() {
1010
return List.of(
11-
new RequiredKey("server-name")
11+
new RequiredKey("server-name"),
12+
new RequiredKey("shortened-server-name")
1213
);
1314
}
1415

loader/src/main/java/net/swofty/loader/SkyBlock.java

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@
3030
import org.tinylog.Logger;
3131

3232
import java.lang.reflect.InvocationTargetException;
33-
import java.util.Arrays;
34-
import java.util.List;
35-
import java.util.Set;
36-
import java.util.UUID;
33+
import java.util.*;
3734
import java.util.concurrent.CompletableFuture;
3835
import java.util.concurrent.atomic.AtomicBoolean;
3936

@@ -59,15 +56,19 @@ public static void main(String[] args) {
5956
ServerType serverType = ServerType.valueOf(args[0].toUpperCase());
6057
long startTime = System.currentTimeMillis();
6158

62-
boolean isPterodactyl = Configuration.getOrDefault("pterodaddctyl-mode" , false);
59+
Map<String, String> options = parseOptionalArgs(args);
60+
Integer maxPlayers = options.containsKey("--max-players") ?
61+
Integer.parseInt(options.get("--max-players")) : 0;
62+
Integer pterodactylPort = options.containsKey("--pterodactyl-port") ?
63+
Integer.parseInt(options.get("--pterodactyl-port")) : -1;
6364

64-
if (isPterodactyl && args.length < 2) {
65-
Logger.error("Please specify server port.");
65+
boolean isPterodactyl = Configuration.getOrDefault("pterodactyl-mode" , false);
66+
67+
if (isPterodactyl && pterodactylPort == -1) {
68+
Logger.error("Please specify server port for pterodactyl mode with --pterodactyl-port");
6669
System.exit(0);
6770
}
6871

69-
int pterodactylPort = isPterodactyl ? Integer.parseInt(args[1]) : -1;
70-
7172
/**
7273
* Initialize TypeLoader
7374
*/
@@ -151,11 +152,14 @@ public static void main(String[] args) {
151152
Logger.info("Server Type: " + serverType.name());
152153
Logger.info("Internal ID: " + serverUUID.toString());
153154
SkyBlockConst.setPort(port);
155+
SkyBlockConst.setMaxPlayers(maxPlayers);
154156

155157
ServerOutboundMessage.sendMessageToProxy(
156158
ToProxyChannels.REQUEST_SERVERS_NAME, new JSONObject(),
157159
(response) -> {
158160
SkyBlockConst.setServerName((String) response.get("server-name"));
161+
SkyBlockConst.setShortenedServerName((String) response.get("shortened-server-name"));
162+
Logger.info("Received server name: " + SkyBlockConst.getServerName());
159163
});
160164
checkProxyConnected(MinecraftServer.getSchedulerManager());
161165

@@ -195,8 +199,10 @@ public void onFlag(UUID uuid, FlagType flagType) {
195199

196200
ServerOutboundMessage.sendMessageToProxy(
197201
ToProxyChannels.REGISTER_SERVER,
198-
new JSONObject().put("type", serverType.name())
199-
.put("port" , pterodactylPort),
202+
new JSONObject()
203+
.put("type", serverType.name())
204+
.put("port" , pterodactylPort)
205+
.put("max_players", maxPlayers),
200206
(response) -> startServer.complete(Integer.parseInt(response.get("port").toString())));
201207
}
202208

@@ -231,4 +237,14 @@ ToProxyChannels.PROXY_IS_ONLINE, new JSONObject(), (response) -> {
231237
return TaskSchedule.seconds(1);
232238
} , ExecutionType.TICK_END);
233239
}
240+
241+
private static Map<String, String> parseOptionalArgs(String[] args) {
242+
Map<String, String> options = new HashMap<>();
243+
for (int i = 0; i < args.length - 1; i++) {
244+
if (args[i].startsWith("--")) {
245+
options.put(args[i], args[i + 1]);
246+
}
247+
}
248+
return options;
249+
}
234250
}

type.generic/src/main/java/net/swofty/types/generic/SkyBlockConst.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,18 @@ public class SkyBlockConst {
2121
private static String serverName;
2222
@Getter
2323
@Setter
24+
private static String shortenedServerName;
25+
@Getter
26+
@Setter
2427
private static SkyBlockTypeLoader typeLoader;
2528
@Getter
2629
private static Integer currentIslandVersion = 1;
2730
@Getter
2831
@Setter
2932
private static int port;
33+
@Getter
34+
@Setter
35+
private static int maxPlayers;
3036

3137
public static boolean isIslandServer() {
3238
return typeLoader.getType() == ServerType.ISLAND;

type.generic/src/main/java/net/swofty/types/generic/event/actions/player/data/ActionPlayerDataLoaded.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void run(PlayerSpawnEvent event) {
4949
if (rank.isStaff()) {
5050
CustomGroups.staffMembers.add(player);
5151
}
52-
player.sendMessage("§7Sending to server mini" + SkyBlockConst.getServerName() + "...");
52+
5353
player.sendMessage("§7 ");
5454
player.sendMessage("§aYour profile is: §e" + player.getDataHandler().get(
5555
DataHandler.Data.PROFILE_NAME, DatapointString.class).getValue());

type.generic/src/main/java/net/swofty/types/generic/event/actions/player/data/ActionPlayerDataSpawn.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public void run(PlayerSpawnEvent event) {
8888
// Manually call region event with a delay
8989
MathUtility.delay(() -> {
9090
SkyBlockRegion playerRegion = player.getRegion();
91-
if (playerRegion != null)
91+
if (playerRegion != null && player.isOnline())
9292
SkyBlockEventHandler.callSkyBlockEvent(new PlayerRegionChangeEvent(
9393
player,
9494
null,

type.generic/src/main/java/net/swofty/types/generic/user/SkyBlockScoreboard.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public static void start() {
5353
Sidebar sidebar = new Sidebar(Component.text(" " + getSidebarName(skyblockName, false)
5454
+ (player.isCoop() ? " §b§lCO-OP " : " ")));
5555

56-
addLine("§7" + new SimpleDateFormat("MM/dd/yy").format(new Date()) + " §8m" + SkyBlockConst.getServerName(), sidebar);
56+
addLine("§7" + new SimpleDateFormat("MM/dd/yy").format(new Date()) + " §8" + SkyBlockConst.getServerName(), sidebar);
5757
addLine("§7 ", sidebar);
5858
addLine("§f " + SkyBlockCalendar.getMonthName() + " " + StringUtility.ntify(SkyBlockCalendar.getDay()), sidebar);
5959
addLine("§7 " + SkyBlockCalendar.getDisplay(SkyBlockCalendar.getElapsed()), sidebar);

type.hub/src/main/java/net/swofty/type/hub/gui/GUIHubSelector.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ public void run(InventoryPreClickEvent e, SkyBlockPlayer player) {
7979
UnderstandableProxyServer smallestServer = serversToUse.stream()
8080
.min(Comparator.comparingInt((UnderstandableProxyServer server) -> server.players().size()))
8181
.orElseThrow();
82-
player.sendMessage("§7Request join for Hub mega" + smallestServer.name() + "...");
8382
ProxyPlayer proxyPlayer = new ProxyPlayer(player.getUuid());
83+
proxyPlayer.sendMessage("§7Request join for Hub " + smallestServer.name() + "...");
8484
proxyPlayer.transferToWithIndication(smallestServer.uuid())
8585
.orTimeout(3, TimeUnit.SECONDS)
8686
.exceptionally(throwable -> {
@@ -97,8 +97,8 @@ public void run(InventoryPreClickEvent e, SkyBlockPlayer player) {
9797

9898
int randomIndex = (int) (Math.random() * serversToUse.size());
9999
UnderstandableProxyServer randomServer = serversToUse.get(randomIndex);
100-
player.sendMessage("§7Request join for Hub mega" + randomServer.name() + "...");
101100
ProxyPlayer proxyPlayer = new ProxyPlayer(player.getUuid());
101+
proxyPlayer.sendMessage("§7Request join for Hub " + randomServer.name() + "...");
102102
proxyPlayer.transferToWithIndication(randomServer.uuid())
103103
.orTimeout(3, TimeUnit.SECONDS)
104104
.exceptionally(throwable -> {
@@ -121,7 +121,7 @@ public ItemStack.Builder getItem(SkyBlockPlayer player) {
121121
"§7or the other?",
122122
" ",
123123
"§7Hub Servers: §a" + servers.size(),
124-
"§7Current: §3mega" + SkyBlockConst.getServerName() + " §7(" + SkyBlockGenericLoader.getLoadedPlayers().size() + ")",
124+
"§7Current: §3" + SkyBlockConst.getServerName() + " §7(" + SkyBlockGenericLoader.getLoadedPlayers().size() + "/" + SkyBlockConst.getMaxPlayers() + ")",
125125
" ",
126126
"§bRight-Click for a small server!",
127127
"§eClick to join a random hub!"
@@ -149,18 +149,23 @@ protected String getTitle(SkyBlockPlayer player, String query, int page, Paginat
149149
@Override
150150
protected GUIClickableItem createItemFor(UnderstandableProxyServer server, int slot, SkyBlockPlayer player) {
151151
boolean isThisServer = server.port() == SkyBlockConst.getPort();
152+
boolean isFull = server.players().size() >= server.maxPlayers();
153+
152154
return new GUIClickableItem(slot) {
155+
private int counterAtThisMoment;
153156

154157
@Override
155158
public ItemStack.Builder getItem(SkyBlockPlayer player) {
156159
counter++;
160+
counterAtThisMoment = Integer.valueOf(counter);
157161
return ItemStackCreator.getStack(
158162
(isThisServer ? "§c" : "§a") + "SkyBlock Hub #" + counter,
159163
(isThisServer ? Material.RED_CONCRETE : Material.QUARTZ_BLOCK), 1,
160-
"§7Players: " + server.players().size(),
161-
"§8Server: mega" + server.name(),
164+
"§7Players: " + server.players().size() + "/" + server.maxPlayers(),
165+
"§8Server: " + server.name(),
162166
" ",
163-
(isThisServer ? "§cAlready connected!" : "§eClick to connect!")
167+
(isThisServer ? "§cAlready connected!" :
168+
isFull ? "§cFull!" : "§eClick to connect!")
164169
);
165170
}
166171

@@ -172,14 +177,19 @@ public void run(InventoryPreClickEvent e, SkyBlockPlayer player) {
172177
return;
173178
}
174179

180+
if (isFull) {
181+
player.sendMessage("§cYou cannot join this server because it is full!");
182+
return;
183+
}
184+
175185
if (sending) {
176186
player.sendMessage("§cWe are currently trying to queue you into another server!");
177187
return;
178188
}
179189

180190
sending = true;
181-
player.sendMessage("§7Request join for Hub #" + counter + " (mega" + server.name() + ")...");
182191
ProxyPlayer proxyPlayer = new ProxyPlayer(player.getUuid());
192+
proxyPlayer.sendMessage("§7Request join for Hub #" + counterAtThisMoment + " (" + server.name() + ")...");
183193
proxyPlayer.transferToWithIndication(server.uuid())
184194
.orTimeout(3, TimeUnit.SECONDS)
185195
.exceptionally(throwable -> {

type.hub/src/main/java/net/swofty/type/hub/tab/HubServerModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public List<TablistEntry> getEntries(SkyBlockPlayer player) {
1616
));
1717

1818
entries.add(new TablistEntry("§b§lArea: §7Hub", TablistSkinRegistry.GRAY));
19-
entries.add(new TablistEntry(" Server: §8mini" + SkyBlockConst.getServerName(), TablistSkinRegistry.GRAY));
19+
entries.add(new TablistEntry(" Server: §8" + SkyBlockConst.getServerName(), TablistSkinRegistry.GRAY));
2020

2121
fillRestWithGray(entries);
2222

0 commit comments

Comments
 (0)