Add custom image option for servers

This commit is contained in:
rtm516 2020-12-10 11:57:40 +00:00
parent 9d1ecdf52c
commit ef54d8c959
No known key found for this signature in database
GPG key ID: 331715B8B007C67A
4 changed files with 38 additions and 5 deletions

18
pom.xml
View file

@ -84,8 +84,22 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.CloudburstMC.Protocol</groupId> <groupId>com.github.CloudburstMC.Protocol</groupId>
<artifactId>bedrock-v419</artifactId> <artifactId>bedrock-v422</artifactId>
<version>ce59d39118</version> <version>87d862d69d</version>
<scope>compile</scope>
<exclusions>
<!-- Stay on the older version of Network while it's rewritten -->
<exclusion>
<groupId>com.nukkitx.network</groupId>
<artifactId>raknet</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.nukkitx.network</groupId>
<artifactId>raknet</artifactId>
<version>1.6.20</version>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.minecrell</groupId> <groupId>net.minecrell</groupId>

View file

@ -58,13 +58,13 @@ public class UIHandler {
for (Server server : MasterServer.getInstance().getGeyserConnectConfig().getServers()) { for (Server server : MasterServer.getInstance().getGeyserConnectConfig().getServers()) {
// These images would be better if there was a default to fall back on // These images would be better if there was a default to fall back on
// But that would require a web api as bedrock doesn't support doing that // But that would require a web api as bedrock doesn't support doing that
window.getButtons().add(new FormButton(server.toString(), new FormImage(FormImage.FormImageType.URL, "https://eu.mc-api.net/v3/server/favicon/" + server.getAddress() + ":" + server.getPort() + ".png?use-fallback-icon=true"))); window.getButtons().add(new FormButton(server.toString(), server.getFormImage()));
} }
// Add a button for each personal server // Add a button for each personal server
if (MasterServer.getInstance().getGeyserConnectConfig().getCustomServers().isEnabled()) { if (MasterServer.getInstance().getGeyserConnectConfig().getCustomServers().isEnabled()) {
for (Server server : servers) { for (Server server : servers) {
window.getButtons().add(new FormButton(server.toString(), new FormImage(FormImage.FormImageType.URL, "https://eu.mc-api.net/v3/server/favicon/" + server.getAddress() + ":" + server.getPort() + ".png?use-fallback-icon=true"))); window.getButtons().add(new FormButton(server.toString(), server.getFormImage()));
} }
window.getButtons().add(new FormButton("Edit servers")); window.getButtons().add(new FormButton("Edit servers"));

View file

@ -28,6 +28,7 @@ package org.geysermc.connect.utils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.geysermc.common.window.button.FormImage;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
@ -39,6 +40,7 @@ public class Server {
private boolean online = true; private boolean online = true;
private boolean bedrock = false; private boolean bedrock = false;
private String name = null; private String name = null;
private String imageUrl = null;
public Server(String address) { public Server(String address) {
this(address, -1); this(address, -1);
@ -53,7 +55,11 @@ public class Server {
} }
public Server(String address, int port, boolean online, boolean bedrock) { public Server(String address, int port, boolean online, boolean bedrock) {
this(address, port, online, false, null); this(address, port, online, bedrock, null);
}
public Server(String address, int port, boolean online, boolean bedrock, String name) {
this(address, port, online, bedrock, name, null);
} }
private int defaultPort() { return bedrock ? 19132 : 25565; } private int defaultPort() { return bedrock ? 19132 : 25565; }
@ -64,4 +70,12 @@ public class Server {
public String toString() { public String toString() {
return name != null ? name : address + (getPort() != defaultPort() ? ":" + getPort() : ""); return name != null ? name : address + (getPort() != defaultPort() ? ":" + getPort() : "");
} }
public FormImage getFormImage() {
if (imageUrl != null && !imageUrl.isEmpty()) {
return new FormImage(FormImage.FormImageType.URL, imageUrl);
} else {
return new FormImage(FormImage.FormImageType.URL, "https://eu.mc-api.net/v3/server/favicon/" + address + ":" + port + ".png?use-fallback-icon=true");
}
}
} }

View file

@ -34,6 +34,11 @@ geyser:
# A global list of servers sent to all clients # A global list of servers sent to all clients
servers: servers:
- address: test.geysermc.org
port: 19132
bedrock: true
name: Official Geyser Test Server
imageUrl: https://geysermc.org/android-chrome-192x192.png
- address: "play.cubecraft.net" - address: "play.cubecraft.net"
- address: "127.0.0.1" - address: "127.0.0.1"
port: 25565 port: 25565