Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-12-26 00:00:55 +01:00
Add configurable messages for disconnect and kick prefix
Dieser Commit ist enthalten in:
Ursprung
26f3cb43c7
Commit
9e27dac557
@ -22,6 +22,7 @@ import java.util.Map;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
import net.kyori.adventure.text.serializer.legacytext3.LegacyText3ComponentSerializer;
|
import net.kyori.adventure.text.serializer.legacytext3.LegacyText3ComponentSerializer;
|
||||||
@ -49,22 +50,24 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
private final Advanced advanced;
|
private final Advanced advanced;
|
||||||
private final Query query;
|
private final Query query;
|
||||||
private final Metrics metrics;
|
private final Metrics metrics;
|
||||||
|
private final Messages messages;
|
||||||
private net.kyori.adventure.text.@MonotonicNonNull Component motdAsComponent;
|
private net.kyori.adventure.text.@MonotonicNonNull Component motdAsComponent;
|
||||||
private @Nullable Favicon favicon;
|
private @Nullable Favicon favicon;
|
||||||
|
|
||||||
private VelocityConfiguration(Servers servers, ForcedHosts forcedHosts, Advanced advanced,
|
private VelocityConfiguration(Servers servers, ForcedHosts forcedHosts, Advanced advanced,
|
||||||
Query query, Metrics metrics) {
|
Query query, Metrics metrics, Messages messages) {
|
||||||
this.servers = servers;
|
this.servers = servers;
|
||||||
this.forcedHosts = forcedHosts;
|
this.forcedHosts = forcedHosts;
|
||||||
this.advanced = advanced;
|
this.advanced = advanced;
|
||||||
this.query = query;
|
this.query = query;
|
||||||
this.metrics = metrics;
|
this.metrics = metrics;
|
||||||
|
this.messages = messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
private VelocityConfiguration(String bind, String motd, int showMaxPlayers, boolean onlineMode,
|
private VelocityConfiguration(String bind, String motd, int showMaxPlayers, boolean onlineMode,
|
||||||
boolean announceForge, PlayerInfoForwarding playerInfoForwardingMode, byte[] forwardingSecret,
|
boolean announceForge, PlayerInfoForwarding playerInfoForwardingMode, byte[] forwardingSecret,
|
||||||
boolean onlineModeKickExistingPlayers, PingPassthroughMode pingPassthrough, Servers servers,
|
boolean onlineModeKickExistingPlayers, PingPassthroughMode pingPassthrough, Servers servers,
|
||||||
ForcedHosts forcedHosts, Advanced advanced, Query query, Metrics metrics) {
|
ForcedHosts forcedHosts, Advanced advanced, Query query, Metrics metrics, Messages messages) {
|
||||||
this.bind = bind;
|
this.bind = bind;
|
||||||
this.motd = motd;
|
this.motd = motd;
|
||||||
this.showMaxPlayers = showMaxPlayers;
|
this.showMaxPlayers = showMaxPlayers;
|
||||||
@ -79,6 +82,7 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
this.advanced = advanced;
|
this.advanced = advanced;
|
||||||
this.query = query;
|
this.query = query;
|
||||||
this.metrics = metrics;
|
this.metrics = metrics;
|
||||||
|
this.messages = messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -359,6 +363,10 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
return advanced.isLogCommandExecutions();
|
return advanced.isLogCommandExecutions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Messages getMessages() {
|
||||||
|
return messages;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return MoreObjects.toStringHelper(this)
|
return MoreObjects.toStringHelper(this)
|
||||||
@ -418,6 +426,7 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
CommentedConfig advancedConfig = config.get("advanced");
|
CommentedConfig advancedConfig = config.get("advanced");
|
||||||
CommentedConfig queryConfig = config.get("query");
|
CommentedConfig queryConfig = config.get("query");
|
||||||
CommentedConfig metricsConfig = config.get("metrics");
|
CommentedConfig metricsConfig = config.get("metrics");
|
||||||
|
CommentedConfig messagesConfig = config.get("messages");
|
||||||
PlayerInfoForwarding forwardingMode = config.getEnumOrElse("player-info-forwarding-mode",
|
PlayerInfoForwarding forwardingMode = config.getEnumOrElse("player-info-forwarding-mode",
|
||||||
PlayerInfoForwarding.NONE);
|
PlayerInfoForwarding.NONE);
|
||||||
PingPassthroughMode pingPassthroughMode = config.getEnumOrElse("ping-passthrough",
|
PingPassthroughMode pingPassthroughMode = config.getEnumOrElse("ping-passthrough",
|
||||||
@ -444,7 +453,8 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
new ForcedHosts(forcedHostsConfig),
|
new ForcedHosts(forcedHostsConfig),
|
||||||
new Advanced(advancedConfig),
|
new Advanced(advancedConfig),
|
||||||
new Query(queryConfig),
|
new Query(queryConfig),
|
||||||
new Metrics(metricsConfig)
|
new Metrics(metricsConfig),
|
||||||
|
new Messages(messagesConfig)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -781,4 +791,31 @@ public class VelocityConfiguration implements ProxyConfig {
|
|||||||
return fromConfig;
|
return fromConfig;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class Messages {
|
||||||
|
private String kickPrefix = "&cKicked from %s: ";
|
||||||
|
private String disconnectPrefix = "&cCan't connect to %s: ";
|
||||||
|
|
||||||
|
private Messages(CommentedConfig toml) {
|
||||||
|
if (toml != null) {
|
||||||
|
this.kickPrefix = toml.getOrElse("kick-prefix", kickPrefix);
|
||||||
|
this.disconnectPrefix = toml.getOrElse("disconnect-prefix", disconnectPrefix);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Component getKickPrefix(String server) {
|
||||||
|
return serialize(String.format(kickPrefix, server));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Component getDisconnectPrefix(String server) {
|
||||||
|
return serialize(String.format(disconnectPrefix, server));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Component serialize(String str) {
|
||||||
|
if (str.startsWith("{")) {
|
||||||
|
return GsonComponentSerializer.gson().deserialize(str);
|
||||||
|
}
|
||||||
|
return LegacyComponentSerializer.legacyAmpersand().deserialize(str);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import com.velocitypowered.api.util.title.TextTitle;
|
|||||||
import com.velocitypowered.api.util.title.Title;
|
import com.velocitypowered.api.util.title.Title;
|
||||||
import com.velocitypowered.api.util.title.Titles;
|
import com.velocitypowered.api.util.title.Titles;
|
||||||
import com.velocitypowered.proxy.VelocityServer;
|
import com.velocitypowered.proxy.VelocityServer;
|
||||||
|
import com.velocitypowered.proxy.config.VelocityConfiguration;
|
||||||
import com.velocitypowered.proxy.connection.MinecraftConnection;
|
import com.velocitypowered.proxy.connection.MinecraftConnection;
|
||||||
import com.velocitypowered.proxy.connection.MinecraftConnectionAssociation;
|
import com.velocitypowered.proxy.connection.MinecraftConnectionAssociation;
|
||||||
import com.velocitypowered.proxy.connection.backend.VelocityServerConnection;
|
import com.velocitypowered.proxy.connection.backend.VelocityServerConnection;
|
||||||
@ -517,13 +518,14 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VelocityConfiguration.Messages messages = this.server.getConfiguration().getMessages();
|
||||||
Component disconnectReason = GsonComponentSerializer.gson().deserialize(disconnect.getReason());
|
Component disconnectReason = GsonComponentSerializer.gson().deserialize(disconnect.getReason());
|
||||||
String plainTextReason = PASS_THRU_TRANSLATE.serialize(disconnectReason);
|
String plainTextReason = PASS_THRU_TRANSLATE.serialize(disconnectReason);
|
||||||
if (connectedServer != null && connectedServer.getServerInfo().equals(server.getServerInfo())) {
|
if (connectedServer != null && connectedServer.getServerInfo().equals(server.getServerInfo())) {
|
||||||
logger.error("{}: kicked from server {}: {}", this, server.getServerInfo().getName(),
|
logger.error("{}: kicked from server {}: {}", this, server.getServerInfo().getName(),
|
||||||
plainTextReason);
|
plainTextReason);
|
||||||
handleConnectionException(server, disconnectReason, TextComponent.builder()
|
handleConnectionException(server, disconnectReason, TextComponent.builder()
|
||||||
.content("Kicked from " + server.getServerInfo().getName() + ": ")
|
.append(messages.getKickPrefix(server.getServerInfo().getName()))
|
||||||
.color(NamedTextColor.RED)
|
.color(NamedTextColor.RED)
|
||||||
.append(disconnectReason)
|
.append(disconnectReason)
|
||||||
.build(), safe);
|
.build(), safe);
|
||||||
@ -531,7 +533,7 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
|
|||||||
logger.error("{}: disconnected while connecting to {}: {}", this,
|
logger.error("{}: disconnected while connecting to {}: {}", this,
|
||||||
server.getServerInfo().getName(), plainTextReason);
|
server.getServerInfo().getName(), plainTextReason);
|
||||||
handleConnectionException(server, disconnectReason, TextComponent.builder()
|
handleConnectionException(server, disconnectReason, TextComponent.builder()
|
||||||
.content("Can't connect to server " + server.getServerInfo().getName() + ": ")
|
.append(messages.getDisconnectPrefix(server.getServerInfo().getName()))
|
||||||
.color(NamedTextColor.RED)
|
.color(NamedTextColor.RED)
|
||||||
.append(disconnectReason)
|
.append(disconnectReason)
|
||||||
.build(), safe);
|
.build(), safe);
|
||||||
|
@ -158,3 +158,12 @@ id = ""
|
|||||||
|
|
||||||
log-failure = false
|
log-failure = false
|
||||||
|
|
||||||
|
# Legacy color codes and JSON are accepted in all messages.
|
||||||
|
[messages]
|
||||||
|
# Prefix when the player gets kicked from a server.
|
||||||
|
# First argument '%s': the server name
|
||||||
|
kick-prefix = "&cKicked from %s: "
|
||||||
|
|
||||||
|
# Prefix when the player is disconnected from a server.
|
||||||
|
# First argument '%s': the server name
|
||||||
|
disconnect-prefix = "&cCan't connect to %s: "
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren