Skip to content

Commit

Permalink
Locking screen, searching for servers in executor
Browse files Browse the repository at this point in the history
  • Loading branch information
DAMcraft committed Jul 27, 2023
1 parent fa4595a commit 038a219
Showing 1 changed file with 69 additions and 40 deletions.
109 changes: 69 additions & 40 deletions src/main/java/de/damcraft/serverseeker/gui/FindNewServersScreen.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@
import meteordevelopment.meteorclient.gui.widgets.pressable.WButton;
import meteordevelopment.meteorclient.settings.*;
import meteordevelopment.meteorclient.systems.Systems;
import meteordevelopment.meteorclient.utils.network.MeteorExecutor;
import net.minecraft.SharedConstants;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
import net.minecraft.client.network.ServerInfo;

public class FindNewServersScreen extends WindowScreen {
private int timer;
public WButton findButton;

public enum cracked {
Any,
Expand All @@ -41,7 +44,6 @@ public enum NumRangeType {

private final Settings settings = new Settings();
private final SettingGroup sg = settings.getDefaultGroup();

WContainer settingsContainer;

private final Setting<cracked> crackedSetting = sg.add(new EnumSetting.Builder<cracked>()
Expand Down Expand Up @@ -171,7 +173,7 @@ public void initWidgets() {

settingsContainer = add(theme.verticalList()).widget();
settingsContainer.add(theme.settings(settings));
WButton findButton = add(theme.button("Find")).expandX().widget();
findButton = add(theme.button("Find")).expandX().widget();
findButton.action = () -> {

String apiKey = Systems.get(ServerSeekerSystem.class).apiKey;
Expand Down Expand Up @@ -239,55 +241,82 @@ public void initWidgets() {
if (!online_only.get()) {
jsonObject.addProperty("online_after", 0);
}
this.locked = true;
MeteorExecutor.execute(() -> {
String json = jsonObject.toString();

String json = jsonObject.toString();

String jsonResp = SmallHttp.post("https://api.serverseeker.net/servers", json);
String jsonResp = SmallHttp.post("https://api.serverseeker.net/servers", json);

Gson gson = new Gson();
JsonObject resp = gson.fromJson(jsonResp, JsonObject.class);
Gson gson = new Gson();
JsonObject resp = gson.fromJson(jsonResp, JsonObject.class);

// Set error message if there is one
String error = resp.has("error") ? resp.get("error").getAsString() : null;
if (error != null) {
// Set error message if there is one
String error = resp.has("error") ? resp.get("error").getAsString() : null;
if (error != null) {
clear();
add(theme.label(error)).expandX();
return;
}
clear();
add(theme.label(error)).expandX();
return;
}
clear();
JsonArray servers = resp.getAsJsonArray("data");
if (servers.size() == 0) {
add(theme.label("No servers found")).expandX();
WButton backButton = add(theme.button("Back")).expandX().widget();
backButton.action = this::reload;
return;
}
add(theme.label("Found " + servers.size() + " servers")).expandX();
WButton addAllButton = add(theme.button("Add all")).expandX().widget();
addAllButton.action = () -> {
for (JsonElement server : servers) {
String ip = server.getAsJsonObject().get("server").getAsString();

ServerInfo info = new ServerInfo("ServerSeeker " + ip, ip, false);

// Add server to list
this.multiplayerScreen.getServerList().add(info, false);
JsonArray servers = resp.getAsJsonArray("data");
if (servers.isEmpty()) {
add(theme.label("No servers found")).expandX();
WButton backButton = add(theme.button("Back")).expandX().widget();
backButton.action = this::reload;
return;
}
this.multiplayerScreen.getServerList().saveFile();

// Reload widget
((MultiplayerScreenAccessor) this.multiplayerScreen).getServerListWidget().setServers(this.multiplayerScreen.getServerList());

// Close screen
if (this.client == null) return;
client.setScreen(this.multiplayerScreen);
};
add(theme.label("Found " + servers.size() + " servers")).expandX();
WButton addAllButton = add(theme.button("Add all")).expandX().widget();
addAllButton.action = () -> {
for (JsonElement server : servers) {
String ip = server.getAsJsonObject().get("server").getAsString();

ServerInfo info = new ServerInfo("ServerSeeker " + ip, ip, false);

// Add server to list
this.multiplayerScreen.getServerList().add(info, false);
}
this.multiplayerScreen.getServerList().saveFile();

// Reload widget
((MultiplayerScreenAccessor) this.multiplayerScreen).getServerListWidget().setServers(this.multiplayerScreen.getServerList());

// Close screen
if (this.client == null) return;
client.setScreen(this.multiplayerScreen);
};
this.locked = false;
});
};
}

@Override
public void tick() {
super.tick();
settings.tick(settingsContainer, theme);

if (locked) {
if (timer > 2) {
findButton.set(getNext(findButton));
timer = 0;
}
else {
timer++;
}
}

else if (!findButton.getText().equals("Find")) {
findButton.set("Find");
}
}

private String getNext(WButton add) {
return switch (add.getText()) {
case "Find", "oo0" -> "ooo";
case "ooo" -> "0oo";
case "0oo" -> "o0o";
case "o0o" -> "oo0";
default -> "Find";
};
}
}

0 comments on commit 038a219

Please sign in to comment.