Skip to content
Closed
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
Expand Up @@ -559,7 +559,7 @@ public Void run() {
* @param explicitExit whether the user explicitly shut down the proxy
*/
public void shutdown(boolean explicitExit) {
shutdown(explicitExit, Component.translatable("velocity.kick.shutdown"));
shutdown(explicitExit, ClosestLocaleMatcher.translateAndParse("velocity.kick.shutdown"));
}

@Override
Expand Down Expand Up @@ -613,7 +613,8 @@ public boolean registerConnection(ConnectedPlayer connection) {
} else {
ConnectedPlayer existing = connectionsByUuid.get(connection.getUniqueId());
if (existing != null) {
existing.disconnect(Component.translatable("multiplayer.disconnect.duplicate_login"));
existing.disconnect(ClosestLocaleMatcher.translateAndParse(
"multiplayer.disconnect.duplicate_login", existing.getEffectiveLocale()));
}

// We can now replace the entries as needed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,13 @@
import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.proxy.server.RegisteredServer;
import com.velocitypowered.proxy.util.ClosestLocaleMatcher;

import java.util.List;
import java.util.Optional;
import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.text.format.NamedTextColor;

public class GlistCommand {
Expand Down Expand Up @@ -78,8 +79,11 @@ public void register() {
private int totalCount(final CommandContext<CommandSource> context) {
final CommandSource source = context.getSource();
sendTotalProxyCount(source);
source.sendMessage(Identity.nil(),
Component.translatable("velocity.command.glist-view-all", NamedTextColor.YELLOW));
source.sendMessage(
ClosestLocaleMatcher.translateAndParse(
"velocity.command.glist-view-all",
source.pointers().get(Identity.LOCALE).orElse(null),
NamedTextColor.YELLOW));
return 1;
}

Expand All @@ -94,8 +98,9 @@ private int serverCount(final CommandContext<CommandSource> context) {
} else {
Optional<RegisteredServer> registeredServer = server.getServer(serverName);
if (!registeredServer.isPresent()) {
source.sendMessage(Identity.nil(),
CommandMessages.SERVER_DOES_NOT_EXIST.args(Component.text(serverName)));
source.sendMessage(ClosestLocaleMatcher.translateAndParse(
"velocity.command.server-does-not-exist", NamedTextColor.RED,
source.pointers().get(Identity.LOCALE).orElse(null), serverName));
return -1;
}
sendServerPlayers(source, registeredServer.get(), false);
Expand All @@ -105,11 +110,12 @@ private int serverCount(final CommandContext<CommandSource> context) {

private void sendTotalProxyCount(CommandSource target) {
int online = server.getPlayerCount();
TranslatableComponent msg = online == 1
? Component.translatable("velocity.command.glist-player-singular")
: Component.translatable("velocity.command.glist-player-plural");
target.sendMessage(msg.color(NamedTextColor.YELLOW)
.args(Component.text(Integer.toString(online), NamedTextColor.GREEN)));
Component msg = ClosestLocaleMatcher.translateAndParse(online == 1
? "velocity.command.glist-player-singular"
: "velocity.command.glist-player-plural",
target.pointers().get(Identity.LOCALE).orElse(null), NamedTextColor.YELLOW,
Component.text(Integer.toString(online), NamedTextColor.GREEN));
target.sendMessage(msg);
}

private void sendServerPlayers(CommandSource target, RegisteredServer server, boolean fromAll) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,15 @@
import com.velocitypowered.api.proxy.ServerConnection;
import com.velocitypowered.api.proxy.server.RegisteredServer;
import com.velocitypowered.api.proxy.server.ServerInfo;
import com.velocitypowered.proxy.util.ClosestLocaleMatcher;

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.format.NamedTextColor;

Expand All @@ -54,7 +55,8 @@ public void execute(final SimpleCommand.Invocation invocation) {
final String[] args = invocation.arguments();

if (!(source instanceof Player)) {
source.sendMessage(Identity.nil(), CommandMessages.PLAYERS_ONLY);
source.sendMessage(ClosestLocaleMatcher.translateAndParse(
"velocity.command.players-only", null, NamedTextColor.RED));
return;
}

Expand All @@ -64,8 +66,9 @@ public void execute(final SimpleCommand.Invocation invocation) {
String serverName = args[0];
Optional<RegisteredServer> toConnect = server.getServer(serverName);
if (!toConnect.isPresent()) {
player.sendMessage(Identity.nil(), CommandMessages.SERVER_DOES_NOT_EXIST
.args(Component.text(serverName)));
player.sendMessage(ClosestLocaleMatcher.translateAndParse(
"velocity.command.server-does-not-exist",
source.pointers().get(Identity.LOCALE).orElse(null), serverName));
return;
}

Expand All @@ -78,22 +81,23 @@ public void execute(final SimpleCommand.Invocation invocation) {
private void outputServerInformation(Player executor) {
String currentServer = executor.getCurrentServer().map(ServerConnection::getServerInfo)
.map(ServerInfo::getName).orElse("<unknown>");
executor.sendMessage(Identity.nil(), Component.translatable(
executor.sendMessage(Identity.nil(), ClosestLocaleMatcher.translateAndParse(
"velocity.command.server-current-server",
executor.getEffectiveLocale(),
NamedTextColor.YELLOW,
Component.text(currentServer)));
currentServer));

List<RegisteredServer> servers = BuiltinCommandUtil.sortedServerList(server);
if (servers.size() > MAX_SERVERS_TO_LIST) {
executor.sendMessage(Identity.nil(), Component.translatable(
"velocity.command.server-too-many", NamedTextColor.RED));
executor.sendMessage(Identity.nil(), ClosestLocaleMatcher.translateAndParse(
"velocity.command.server-too-many", executor.getEffectiveLocale(), NamedTextColor.RED));
return;
}

// Assemble the list of servers as components
TextComponent.Builder serverListBuilder = Component.text()
.append(Component.translatable("velocity.command.server-available",
NamedTextColor.YELLOW))
.append(ClosestLocaleMatcher.translateAndParse("velocity.command.server-available",
null, NamedTextColor.YELLOW))
.append(Component.space());
for (int i = 0; i < servers.size(); i++) {
RegisteredServer rs = servers.get(i);
Expand All @@ -111,26 +115,23 @@ private TextComponent formatServerComponent(String currentPlayerServer, Register
TextComponent serverTextComponent = Component.text(serverInfo.getName());

int connectedPlayers = server.getPlayersConnected().size();
TranslatableComponent playersTextComponent;
if (connectedPlayers == 1) {
playersTextComponent = Component.translatable("velocity.command.server-tooltip-player-online");
} else {
playersTextComponent = Component.translatable("velocity.command.server-tooltip-players-online");
}
playersTextComponent = playersTextComponent.args(Component.text(connectedPlayers));
Component playersTextComponent = ClosestLocaleMatcher.translateAndParse(connectedPlayers == 1
? "velocity.command.server-tooltip-player-online"
: "velocity.command.server-tooltip-players-online", Component.text(connectedPlayers));
if (serverInfo.getName().equals(currentPlayerServer)) {
serverTextComponent = serverTextComponent.color(NamedTextColor.GREEN)
.hoverEvent(
showText(
Component.translatable("velocity.command.server-tooltip-current-server")
ClosestLocaleMatcher.translateAndParse("velocity.command.server-tooltip-current-server")
.append(Component.newline())
.append(playersTextComponent))
);
} else {
serverTextComponent = serverTextComponent.color(NamedTextColor.GRAY)
.clickEvent(ClickEvent.runCommand("/server " + serverInfo.getName()))
.hoverEvent(
showText(Component.translatable("velocity.command.server-tooltip-offer-connect-server")
showText(ClosestLocaleMatcher.translateAndParse(
"velocity.command.server-tooltip-offer-connect-server")
.append(Component.newline())
.append(playersTextComponent))
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.velocitypowered.api.proxy.server.RegisteredServer;
import com.velocitypowered.api.util.ProxyVersion;
import com.velocitypowered.proxy.VelocityServer;
import com.velocitypowered.proxy.util.ClosestLocaleMatcher;
import com.velocitypowered.proxy.util.InformationUtils;

import java.net.ConnectException;
Expand All @@ -51,7 +52,6 @@
import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.NamedTextColor;
Expand Down Expand Up @@ -183,16 +183,16 @@ private Reload(VelocityServer server) {
public void execute(CommandSource source, String @NonNull [] args) {
try {
if (server.reloadConfiguration()) {
source.sendMessage(Component.translatable("velocity.command.reload-success",
NamedTextColor.GREEN));
source.sendMessage(ClosestLocaleMatcher.translateAndParse("velocity.command.reload-success",
null, NamedTextColor.GREEN));
} else {
source.sendMessage(Component.translatable("velocity.command.reload-failure",
NamedTextColor.RED));
source.sendMessage(ClosestLocaleMatcher.translateAndParse("velocity.command.reload-failure",
null, NamedTextColor.RED));
}
} catch (Exception e) {
logger.error("Unable to reload configuration", e);
source.sendMessage(Component.translatable("velocity.command.reload-failure",
NamedTextColor.RED));
source.sendMessage(ClosestLocaleMatcher.translateAndParse("velocity.command.reload-failure",
null, NamedTextColor.RED));
}
}

Expand Down Expand Up @@ -276,8 +276,8 @@ public void execute(CommandSource source, String @NonNull [] args) {
int pluginCount = plugins.size();

if (pluginCount == 0) {
source.sendMessage(Component.translatable("velocity.command.no-plugins",
NamedTextColor.YELLOW));
source.sendMessage(ClosestLocaleMatcher.translateAndParse("velocity.command.no-plugins",
source.pointers().get(Identity.LOCALE).orElse(null), NamedTextColor.YELLOW));
return;
}

Expand All @@ -290,10 +290,11 @@ public void execute(CommandSource source, String @NonNull [] args) {
}
}

TranslatableComponent.Builder output = Component.translatable()
.key("velocity.command.plugins-list")
.color(NamedTextColor.YELLOW)
.args(listBuilder.build());
Component output = ClosestLocaleMatcher.translateAndParse(
"velocity.command.plugins-list",
source.pointers().get(Identity.LOCALE).orElse(null),
NamedTextColor.YELLOW,
listBuilder.build());
source.sendMessage(Identity.nil(), output);
}

Expand All @@ -305,19 +306,19 @@ private TextComponent componentForPlugin(PluginDescription description) {

description.getUrl().ifPresent(url -> {
hoverText.append(Component.newline());
hoverText.append(Component.translatable(
hoverText.append(ClosestLocaleMatcher.translateAndParse(
"velocity.command.plugin-tooltip-website",
Component.text(url)));
null, url));
});
if (!description.getAuthors().isEmpty()) {
hoverText.append(Component.newline());
if (description.getAuthors().size() == 1) {
hoverText.append(Component.translatable("velocity.command.plugin-tooltip-author",
Component.text(description.getAuthors().get(0))));
hoverText.append(ClosestLocaleMatcher.translateAndParse("velocity.command.plugin-tooltip-author",
null, description.getAuthors().get(0)));
} else {
hoverText.append(
Component.translatable("velocity.command.plugin-tooltip-author",
Component.text(String.join(", ", description.getAuthors()))
ClosestLocaleMatcher.translateAndParse("velocity.command.plugin-tooltip-author",
null, String.join(", ", description.getAuthors())
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@
import com.velocitypowered.proxy.protocol.StateRegistry;
import com.velocitypowered.proxy.protocol.packet.ServerLoginSuccess;
import com.velocitypowered.proxy.protocol.packet.SetCompression;
import com.velocitypowered.proxy.util.ClosestLocaleMatcher;

import io.netty.buffer.ByteBuf;
import java.util.Optional;
import java.util.UUID;
Expand Down Expand Up @@ -88,8 +90,8 @@ public void activated() {
mcConnection, inbound.getVirtualHost().orElse(null), onlineMode, inbound.getIdentifiedKey());
this.connectedPlayer = player;
if (!server.canRegisterConnection(player)) {
player.disconnect0(Component.translatable("velocity.error.already-connected-proxy",
NamedTextColor.RED), true);
player.disconnect0(ClosestLocaleMatcher.translateAndParse("velocity.error.already-connected-proxy",
player.getEffectiveLocale(), NamedTextColor.RED), true);
return CompletableFuture.completedFuture(null);
}

Expand Down Expand Up @@ -154,7 +156,8 @@ private void completeLoginProtocolPhaseAndInitialize(ConnectedPlayer player) {
player.disconnect0(reason.get(), true);
} else {
if (!server.registerConnection(player)) {
player.disconnect0(Component.translatable("velocity.error.already-connected-proxy"),
player.disconnect0(ClosestLocaleMatcher.translateAndParse("velocity.error.already-connected-proxy",
player.getEffectiveLocale()),
true);
return;
}
Expand Down Expand Up @@ -183,8 +186,8 @@ private CompletableFuture<Void> connectToInitialServer(ConnectedPlayer player) {
.thenRunAsync(() -> {
Optional<RegisteredServer> toTry = event.getInitialServer();
if (!toTry.isPresent()) {
player.disconnect0(Component.translatable("velocity.error.no-available-servers",
NamedTextColor.RED), true);
player.disconnect0(ClosestLocaleMatcher.translateAndParse("velocity.error.no-available-servers",
player.getEffectiveLocale(), NamedTextColor.RED), true);
return;
}
player.createConnectionRequest(toTry.get()).fireAndForget();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@
import com.velocitypowered.proxy.protocol.packet.title.GenericTitlePacket;
import com.velocitypowered.proxy.protocol.util.PluginMessageUtil;
import com.velocitypowered.proxy.util.CharacterUtil;
import com.velocitypowered.proxy.util.ClosestLocaleMatcher;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
Expand Down Expand Up @@ -113,7 +115,7 @@ public ClientPlaySessionHandler(VelocityServer server, ConnectedPlayer player) {
// I will not allow hacks to bypass this;
private boolean tickLastMessage(SignedChatMessage nextMessage) {
if (lastChatMessage != null && lastChatMessage.isAfter(nextMessage.getExpiryTemporal())) {
player.disconnect(Component.translatable("multiplayer.disconnect.out_of_order_chat"));
player.disconnect(ClosestLocaleMatcher.translateAndParse("multiplayer.disconnect.out_of_order_chat"));
return false;
}

Expand All @@ -123,8 +125,8 @@ private boolean tickLastMessage(SignedChatMessage nextMessage) {

private boolean validateChat(String message) {
if (CharacterUtil.containsIllegalCharacters(message)) {
player.disconnect(Component.translatable("velocity.error.illegal-chat-characters",
NamedTextColor.RED));
player.disconnect(ClosestLocaleMatcher.translateAndParse("velocity.error.illegal-chat-characters",
null, NamedTextColor.RED));
return false;
}
return true;
Expand All @@ -151,8 +153,8 @@ private void processCommandMessage(String message, @Nullable SignedChatCommand s
.exceptionally(e -> {
logger.info("Exception occurred while running command for {}",
player.getUsername(), e);
player.sendMessage(Component.translatable("velocity.command.generic-error",
NamedTextColor.RED));
player.sendMessage(ClosestLocaleMatcher.translateAndParse("velocity.command.generic-error",
null, NamedTextColor.RED));
return null;
});
}
Expand Down Expand Up @@ -428,8 +430,8 @@ public void disconnected() {

@Override
public void exception(Throwable throwable) {
player.disconnect(Component.translatable("velocity.error.player-connection-error",
NamedTextColor.RED));
player.disconnect(ClosestLocaleMatcher.translateAndParse("velocity.error.player-connection-error",
player.getEffectiveLocale(), NamedTextColor.RED));
}

@Override
Expand Down
Loading