Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-11-16 21:10:30 +01:00
Custom localization for each player (#537)
Dieser Commit ist enthalten in:
Ursprung
adcf428e8f
Commit
3d8e9091c0
@ -19,6 +19,7 @@ import com.velocitypowered.api.proxy.server.RegisteredServer;
|
|||||||
import com.velocitypowered.api.util.GameProfile;
|
import com.velocitypowered.api.util.GameProfile;
|
||||||
import com.velocitypowered.api.util.ModInfo;
|
import com.velocitypowered.api.util.ModInfo;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.function.UnaryOperator;
|
import java.util.function.UnaryOperator;
|
||||||
@ -45,6 +46,22 @@ public interface Player extends CommandSource, Identified, InboundConnection,
|
|||||||
*/
|
*/
|
||||||
String getUsername();
|
String getUsername();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the locale the proxy will use to send messages translated via the Adventure global translator.
|
||||||
|
* By default, the value of {@link PlayerSettings#getLocale()} is used.
|
||||||
|
*
|
||||||
|
* <p>This can be {@code null} when the client has not yet connected to any server.</p>
|
||||||
|
*
|
||||||
|
* @return the locale.
|
||||||
|
*/
|
||||||
|
@Nullable Locale getEffectiveLocale();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the locale the proxy will be translating its messages to.
|
||||||
|
*
|
||||||
|
* @param locale the locale to translate to
|
||||||
|
*/
|
||||||
|
void setEffectiveLocale(Locale locale);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the player's UUID.
|
* Returns the player's UUID.
|
||||||
|
@ -48,7 +48,6 @@ import com.velocitypowered.api.proxy.server.RegisteredServer;
|
|||||||
import com.velocitypowered.api.util.GameProfile;
|
import com.velocitypowered.api.util.GameProfile;
|
||||||
import com.velocitypowered.api.util.ModInfo;
|
import com.velocitypowered.api.util.ModInfo;
|
||||||
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;
|
||||||
@ -79,7 +78,6 @@ import java.util.Collection;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -97,8 +95,6 @@ import net.kyori.adventure.text.format.NamedTextColor;
|
|||||||
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.plain.PlainComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer;
|
||||||
import net.kyori.adventure.title.Title;
|
|
||||||
import net.kyori.adventure.title.Title.Times;
|
|
||||||
import net.kyori.adventure.translation.GlobalTranslator;
|
import net.kyori.adventure.translation.GlobalTranslator;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
@ -149,6 +145,7 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
|
|||||||
.withStatic(PermissionChecker.POINTER, getPermissionChecker())
|
.withStatic(PermissionChecker.POINTER, getPermissionChecker())
|
||||||
.build();
|
.build();
|
||||||
private @Nullable String clientBrand;
|
private @Nullable String clientBrand;
|
||||||
|
private @Nullable Locale effectiveLocale;
|
||||||
|
|
||||||
ConnectedPlayer(VelocityServer server, GameProfile profile, MinecraftConnection connection,
|
ConnectedPlayer(VelocityServer server, GameProfile profile, MinecraftConnection connection,
|
||||||
@Nullable InetSocketAddress virtualHost, boolean onlineMode) {
|
@Nullable InetSocketAddress virtualHost, boolean onlineMode) {
|
||||||
@ -178,6 +175,19 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
|
|||||||
return profile.getName();
|
return profile.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Locale getEffectiveLocale() {
|
||||||
|
if (effectiveLocale == null && settings != null) {
|
||||||
|
return settings.getLocale();
|
||||||
|
}
|
||||||
|
return effectiveLocale;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setEffectiveLocale(Locale locale) {
|
||||||
|
effectiveLocale = locale;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UUID getUniqueId() {
|
public UUID getUniqueId() {
|
||||||
return profile.getId();
|
return profile.getId();
|
||||||
@ -276,7 +286,7 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
|
|||||||
*/
|
*/
|
||||||
public Component translateMessage(Component message) {
|
public Component translateMessage(Component message) {
|
||||||
Locale locale = ClosestLocaleMatcher.INSTANCE
|
Locale locale = ClosestLocaleMatcher.INSTANCE
|
||||||
.lookupClosest(this.settings == null ? Locale.getDefault() : this.settings.getLocale());
|
.lookupClosest(getEffectiveLocale() == null ? Locale.getDefault() : getEffectiveLocale());
|
||||||
return GlobalTranslator.render(message, locale);
|
return GlobalTranslator.render(message, locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren