Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package de.redstonecloud.bridge.platform.waterdogpe;

import com.google.gson.JsonObject;
import de.redstonecloud.api.redis.broker.packet.defaults.template.BestTemplateResultPacket;
import de.redstonecloud.api.redis.broker.packet.defaults.template.GetBestTemplatePacket;
import de.redstonecloud.bridge.cloudinterface.CloudInterface;
Expand Down Expand Up @@ -29,12 +30,12 @@ public WDPEHandler(

@Override
public ServerInfo resolveForcedHost(@Nullable String domain, @NonNull ProxiedPlayer player) {
return fetchServer();
return fetchServer(player);
}

@Override
public ServerInfo getFallbackServer(ProxiedPlayer player, ServerInfo oldServer, ReconnectReason reason, String kickMessage) {
return fetchServer();
return fetchServer(player);
}

@Override
Expand All @@ -43,16 +44,33 @@ public ServerInfo getFallbackServer(
@NonNull ServerInfo oldServer,
@NonNull String kickMessage
) {
return fetchServer();
return fetchServer(player);
}

@Override
public ServerInfo determineServer(ProxiedPlayer player) {
return fetchServer();
return fetchServer(player);
}

public static ServerInfo fetchServer() {
if(!CloudInterface.getBridgeConfig().has("hub_template")) return null;
public static ServerInfo fetchServer(ProxiedPlayer player) {
JsonObject cfg = CloudInterface.getBridgeConfig();
ServerInfo fallback = fetchFallback();
if(!cfg.has("hub_template")) return fallback;
boolean fallbackOnJoin = !cfg.has("fallback_on_join") || cfg.get("fallback_on_join").getAsBoolean();

if(!cfg.has("hub_template"))
return fallback;

ServerInfo hub = fetchHub();
if(hub != null) return hub;

if(player.getDownstreamConnection() != null && fallbackOnJoin)
return fallback;

return null;
}

public static ServerInfo fetchHub() {
CompletableFuture<String> name = new CompletableFuture<>();

new GetBestTemplatePacket(CloudInterface.getBridgeConfig().get("hub_template").getAsString())
Expand All @@ -61,9 +79,17 @@ public static ServerInfo fetchServer() {

try {
BridgeServer srv = CloudInterface.getExecutor().determineServer(name.completeOnTimeout("", 3, TimeUnit.SECONDS).get().toUpperCase());
if(srv == null) return null;

return ProxyServer.getInstance().getServerInfo(srv.getName());
} catch (Exception e) {
return null;
}
}

public static ServerInfo fetchFallback() {
JsonObject cfg = CloudInterface.getBridgeConfig();
if(!cfg.has("fallback_name")) return null;
return ProxyServer.getInstance().getServerInfo(cfg.get("fallback_name").getAsString());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public HubCommand() {
@Override
public boolean onExecute(CommandSender sender, String alias, String[] args) {
if(!(sender instanceof ProxiedPlayer)) return false;
ServerInfo hub = WDPEHandler.fetchServer();
ServerInfo hub = WDPEHandler.fetchServer((ProxiedPlayer) sender);
if(hub == null) {
sender.sendMessage(CloudInterface.getBridgeConfig().has("hubcommand_no_hub_available") ? CloudInterface.getBridgeConfig().get("hubcommand_no_hub_available").getAsString() : "No hub available");
return true;
Expand Down
Loading