13
0
geforkt von Mirrors/Velocity

Allow ping passthrough for descriptions too

Dieser Commit ist enthalten in:
Andrew Steinborn 2020-02-21 18:36:10 -05:00
Ursprung c63bd4cd02
Commit 3e053d63b4
3 geänderte Dateien mit 30 neuen und 8 gelöschten Zeilen

Datei anzeigen

@ -3,5 +3,6 @@ package com.velocitypowered.proxy.config;
public enum PingPassthroughMode {
DISABLED,
MODS,
DESCRIPTION,
ALL
}

Datei anzeigen

@ -90,14 +90,17 @@ public class VelocityConfiguration extends AnnotatedConfig implements ProxyConfi
@Comment({
"Should Velocity pass server list ping requests to a backend server?",
"Available options:",
"- \"disabled\": No pass-through will be done. The velocity.toml and server-icon.png",
" will determine the initial server list ping response.",
"- \"mods\": Passes only the mod list from your backend server into the response.",
" The first server in your try list (or forced host) with a mod list will be",
" used. If no backend servers can be contacted, Velocity will not display any",
" mod information.",
"- \"all\": Passes everything from the backend server into the response. The Velocity",
" configuration is used if no servers could be contacted."
"- \"disabled\": No pass-through will be done. The velocity.toml and server-icon.png",
" will determine the initial server list ping response.",
"- \"mods\": Passes only the mod list from your backend server into the response.",
" The first server in your try list (or forced host) with a mod list will be",
" used. If no backend servers can be contacted, Velocity will not display any",
" mod information.",
"- \"description\": Uses the description and mod list from the backend server. The first",
" server in the try (or forced host) list that responds is used for the",
" description and mod list.",
"- \"all\": Passes everything from the backend server into the response. The Velocity",
" configuration is used if no servers could be contacted."
})
@ConfigKey("ping-passthrough")
private PingPassthroughMode pingPassthrough = PingPassthroughMode.DISABLED;

Datei anzeigen

@ -97,6 +97,24 @@ public class StatusSessionHandler implements MinecraftSessionHandler {
}
return fallback;
});
case DESCRIPTION:
return pingResponses.thenApply(responses -> {
// Find the first non-fallback. If it includes a modlist, add it too.
for (ServerPing response : responses) {
if (response == fallback) {
continue;
}
return new ServerPing(
fallback.getVersion(),
fallback.getPlayers().orElse(null),
response.getDescription(),
fallback.getFavicon().orElse(null),
response.getModinfo().orElse(null)
);
}
return fallback;
});
default:
// Not possible, but covered for completeness.
return CompletableFuture.completedFuture(fallback);