mirror of
https://github.com/aikar/commands.git
synced 2026-06-29 18:08:25 +00:00
Add support for per issuer locale in Sponge and BungeeCord (#104)
* Add support for per issuer locale in Sponge and BungeeCord * Added Optional<UUID> getUniqueId to CommandIssuer * Added update task and delayed join listener in BungeeCord * Added settings change listener in Sponge * Moved setLocale method up to the CommandManager to remove the amount of duplicated code * Remove Optional usage * Remove player terminology in core
This commit is contained in:
@@ -25,6 +25,9 @@ package co.aikar.commands;
|
||||
|
||||
import co.aikar.locales.MessageKey;
|
||||
import co.aikar.locales.MessageKeyProvider;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public interface CommandIssuer {
|
||||
/**
|
||||
@@ -50,6 +53,11 @@ public interface CommandIssuer {
|
||||
getManager().sendMessage(this, MessageType.INFO, MessageKeys.INFO_MESSAGE, "{message}", message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the unique id of that issuer
|
||||
*/
|
||||
@NotNull UUID getUniqueId();
|
||||
|
||||
/**
|
||||
* Has permission node
|
||||
* @param permission
|
||||
|
||||
@@ -27,6 +27,7 @@ import co.aikar.commands.annotation.Dependency;
|
||||
import co.aikar.locales.MessageKeyProvider;
|
||||
import com.google.common.collect.HashBasedTable;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.collect.Table;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -35,14 +36,16 @@ import java.lang.reflect.Field;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Parameter;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.Stack;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
public abstract class CommandManager <
|
||||
@@ -76,6 +79,8 @@ public abstract class CommandManager <
|
||||
protected MF defaultFormatter;
|
||||
protected int defaultHelpPerPage = 10;
|
||||
|
||||
protected Map<UUID, Locale> issuersLocale = Maps.newConcurrentMap();
|
||||
|
||||
private Set<String> unstableAPIs = Sets.newHashSet();
|
||||
|
||||
public static CommandOperationContext getCurrentCommandOperationContext() {
|
||||
@@ -344,7 +349,25 @@ public abstract class CommandManager <
|
||||
});
|
||||
}
|
||||
|
||||
public Locale setIssuerLocale(IT issuer, Locale locale) {
|
||||
I commandIssuer = getCommandIssuer(issuer);
|
||||
|
||||
Locale old = issuersLocale.put(commandIssuer.getUniqueId(), locale);
|
||||
if (!Objects.equals(old, locale)) {
|
||||
this.notifyLocaleChange(commandIssuer, old, locale);
|
||||
}
|
||||
|
||||
return old;
|
||||
}
|
||||
|
||||
public Locale getIssuerLocale(CommandIssuer issuer) {
|
||||
if (usingPerIssuerLocale()) {
|
||||
Locale locale = issuersLocale.get(issuer.getUniqueId());
|
||||
if (locale != null) {
|
||||
return locale;
|
||||
}
|
||||
}
|
||||
|
||||
return getLocales().getDefaultLocale();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user