Rename online-mode config option to use-server-uuids to better reflect/clarify its purpose

This commit is contained in:
Luck 2017-03-17 20:51:06 +00:00
parent e9e844c1f7
commit ac4bd418f3
No known key found for this signature in database
GPG Key ID: EFA9B3EC5FD90F8B
15 changed files with 81 additions and 52 deletions

View File

@ -57,6 +57,11 @@ public class BukkitConfig extends AbstractConfiguration {
configuration = YamlConfiguration.loadConfiguration(configFile); configuration = YamlConfiguration.loadConfiguration(configFile);
} }
@Override
public boolean contains(String path) {
return configuration.contains(path, true);
}
@Override @Override
public String getString(String path, String def) { public String getString(String path, String def) {
return configuration.getString(path, def); return configuration.getString(path, def);

View File

@ -26,22 +26,24 @@ apply-global-groups: true
# If users on this server should have global (non-world specific) groups applied # If users on this server should have global (non-world specific) groups applied
apply-global-world-groups: true apply-global-world-groups: true
# If this server is in offline or online mode. # If UUIDs should be pulled from the server, or looked up by username based upon previous connections.
# This setting allows a player to have the same UUID across a network of offline mode/mixed servers.
# #
# You should generally reflect the setting in server.properties here. Except when... # This option should be set to true in most cases. When set to false, in order to get a player's UUID, LuckPerms will:
# 1. Check if a player with the given username has joined before, if they have, use the UUID they used on their previous login.
# 2. Save and return the players "current" uuid.
# #
# 1. You have Spigot servers connected to a BungeeCord proxy, with online-mode set to false, but 'bungeecord' set to true in the spigot.yml # For offline mode (cracked) servers, a players UUID is generated based upon their username.
# AND 'ip-forward' set to true in the BungeeCord config.yml
# In this case, set online-mode in LuckPerms to true, despite the server being in offline mode.
# #
# 2. You are only running one server instance using LuckPerms, (not a network) # IMPORTANT:
# In this case, set online-mode to true no matter what is set in server.properties. (we can just fallback to the servers uuid cache) # If you are using BungeeCord proxy running in online mode, it is important that "online-mode=false" is set in server.properties, but
# "bungeecord: true" is set in the spigot.yml. You also need to set "ip_forward: true" in BungeeCord's config.yml.
# If for whatever reason you are not able to do this, and do not have ip-forward enabled, then you may need to set "use-server-uuids" to false.
# #
# 3. If your proxy is running in offline mode, and you are using PaperSpigot (https://ci.destroystokyo.com/job/PaperSpigot/), # If your proxy is running in offline mode, you should still be setting up ip-forwarding as described above, but may also find that you need to set
# you should set "bungee-online-mode" to false in the paper.yml, and set "online-mode" to true in all LuckPerms configs. # "bungee-online-mode" to false in paper.yml, if you are using PaperSpigot. (https://ci.destroystokyo.com/job/PaperSpigot/)
# This approach is thoroughly recommended for offline mode networks. #
online-mode: true # This option only really exists for networks who for whatever reason cannot setup proper ip forwarding.
use-server-uuids: true
# If the plugin should send log notifications to users whenever permissions are modified. # If the plugin should send log notifications to users whenever permissions are modified.
log-notify: true log-notify: true

View File

@ -72,6 +72,11 @@ public class BungeeConfig extends AbstractConfiguration {
} }
} }
@Override
public boolean contains(String path) {
return configuration.contains(path);
}
@Override @Override
public String getString(String path, String def) { public String getString(String path, String def) {
return configuration.getString(path, def); return configuration.getString(path, def);

View File

@ -101,7 +101,7 @@ public class BungeeListener extends AbstractListener implements Listener {
final UuidCache cache = plugin.getUuidCache(); final UuidCache cache = plugin.getUuidCache();
final PendingConnection c = e.getConnection(); final PendingConnection c = e.getConnection();
if (!plugin.getConfiguration().get(ConfigKeys.ONLINE_MODE)) { if (!plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUIDS)) {
UUID uuid = plugin.getStorage().getUUID(c.getName()).join(); UUID uuid = plugin.getStorage().getUUID(c.getName()).join();
if (uuid != null) { if (uuid != null) {
cache.addToCache(c.getUniqueId(), uuid); cache.addToCache(c.getUniqueId(), uuid);

View File

@ -26,22 +26,24 @@ apply-global-groups: true
# If users on this server should have global (non-world specific) groups applied # If users on this server should have global (non-world specific) groups applied
apply-global-world-groups: true apply-global-world-groups: true
# If this server is in offline or online mode. # If UUIDs should be pulled from the server, or looked up by username based upon previous connections.
# This setting allows a player to have the same UUID across a network of offline mode/mixed servers.
# #
# You should generally reflect the setting in server.properties here. Except when... # This option should be set to true in most cases. When set to false, in order to get a player's UUID, LuckPerms will:
# 1. Check if a player with the given username has joined before, if they have, use the UUID they used on their previous login.
# 2. Save and return the players "current" uuid.
# #
# 1. You have Spigot servers connected to a BungeeCord proxy, with online-mode set to false, but 'bungeecord' set to true in the spigot.yml # For offline mode (cracked) servers, a players UUID is generated based upon their username.
# AND 'ip-forward' set to true in the BungeeCord config.yml
# In this case, set online-mode in LuckPerms to true, despite the server being in offline mode.
# #
# 2. You are only running one server instance using LuckPerms, (not a network) # IMPORTANT:
# In this case, set online-mode to true no matter what is set in server.properties. (we can just fallback to the servers uuid cache) # If you are using BungeeCord proxy running in online mode, it is important that "online-mode=false" is set all backend server.properties, but
# "bungeecord: true" is set in the spigot.yml. You also need to set "ip_forward: true" in BungeeCord's config.yml.
# If for whatever reason you are not able to do this, and do not have ip-forward enabled, then you may need to set "use-server-uuids" to false.
# #
# 3. If your proxy is running in offline mode, and you are using PaperSpigot (https://ci.destroystokyo.com/job/PaperSpigot/), # If your proxy is running in offline mode, you should still be setting up ip-forwarding as described above, but may also find that you need to set
# you should set "bungee-online-mode" to false in the paper.yml, and set "online-mode" to true in all LuckPerms configs. # "bungee-online-mode" to false in paper.yml, if you are using PaperSpigot. (https://ci.destroystokyo.com/job/PaperSpigot/)
# This approach is thoroughly recommended for offline mode networks. #
online-mode: true # This option should always be set to true on the BungeeCord side. Don't change unless you're sure you know what you're doing.
use-server-uuids: true
# If the plugin should send log notifications to users whenever permissions are modified. # If the plugin should send log notifications to users whenever permissions are modified.
log-notify: true log-notify: true

View File

@ -70,7 +70,7 @@ public class LPConfigurationDelegate implements LPConfiguration {
@Override @Override
public boolean getOnlineMode() { public boolean getOnlineMode() {
return master.get(ConfigKeys.ONLINE_MODE); return master.get(ConfigKeys.USE_SERVER_UUIDS);
} }
@Override @Override

View File

@ -77,7 +77,7 @@ public class InfoCommand extends SingleCommand {
plugin.getPreProcessContexts(false).size(), plugin.getPreProcessContexts(false).size(),
plugin.getContextManager().getCalculatorsSize(), plugin.getContextManager().getCalculatorsSize(),
plugin.getPermissionVault().getSize(), plugin.getPermissionVault().getSize(),
formatBoolean(c.get(ConfigKeys.ONLINE_MODE)), formatBoolean(c.get(ConfigKeys.USE_SERVER_UUIDS)),
formatBoolean(c.get(ConfigKeys.INCLUDING_GLOBAL_PERMS)), formatBoolean(c.get(ConfigKeys.INCLUDING_GLOBAL_PERMS)),
formatBoolean(c.get(ConfigKeys.INCLUDING_GLOBAL_WORLD_PERMS)), formatBoolean(c.get(ConfigKeys.INCLUDING_GLOBAL_WORLD_PERMS)),
formatBoolean(c.get(ConfigKeys.APPLYING_GLOBAL_GROUPS)), formatBoolean(c.get(ConfigKeys.APPLYING_GLOBAL_GROUPS)),

View File

@ -58,7 +58,10 @@ public class ConfigKeys {
public static final ConfigKey<Boolean> INCLUDING_GLOBAL_WORLD_PERMS = BooleanKey.of("include-global-world", true); public static final ConfigKey<Boolean> INCLUDING_GLOBAL_WORLD_PERMS = BooleanKey.of("include-global-world", true);
public static final ConfigKey<Boolean> APPLYING_GLOBAL_GROUPS = BooleanKey.of("apply-global-groups", true); public static final ConfigKey<Boolean> APPLYING_GLOBAL_GROUPS = BooleanKey.of("apply-global-groups", true);
public static final ConfigKey<Boolean> APPLYING_GLOBAL_WORLD_GROUPS = BooleanKey.of("apply-global-world-groups", true); public static final ConfigKey<Boolean> APPLYING_GLOBAL_WORLD_GROUPS = BooleanKey.of("apply-global-world-groups", true);
public static final ConfigKey<Boolean> ONLINE_MODE = BooleanKey.of("online-mode", true); public static final ConfigKey<Boolean> USE_SERVER_UUIDS = AbstractKey.of(c -> {
// backwards compatible with the old online-mode option
return c.contains("use-server-uuids") ? c.getBoolean("use-server-uuids", true) : c.getBoolean("online-mode", true);
});
public static final ConfigKey<TemporaryModifier> TEMPORARY_ADD_BEHAVIOUR = AbstractKey.of(c -> { public static final ConfigKey<TemporaryModifier> TEMPORARY_ADD_BEHAVIOUR = AbstractKey.of(c -> {
String option = c.getString("temporary-add-behaviour", "deny").toLowerCase(); String option = c.getString("temporary-add-behaviour", "deny").toLowerCase();
if (!option.equals("deny") && !option.equals("replace") && !option.equals("accumulate")) { if (!option.equals("deny") && !option.equals("replace") && !option.equals("accumulate")) {

View File

@ -40,6 +40,8 @@ public interface LuckPermsConfiguration {
void loadAll(); void loadAll();
boolean contains(String path);
String getString(String path, String def); String getString(String path, String def);
int getInt(String path, int def); int getInt(String path, int def);

View File

@ -170,7 +170,7 @@ public enum Message {
"{PREFIX}&f- &3Context Calculators: &a{14}" + "\n" + "{PREFIX}&f- &3Context Calculators: &a{14}" + "\n" +
"{PREFIX}&f- &3Unique permissions: &a{15}" + "\n" + "{PREFIX}&f- &3Unique permissions: &a{15}" + "\n" +
"{PREFIX}&f- &bConfiguration:" + "\n" + "{PREFIX}&f- &bConfiguration:" + "\n" +
"{PREFIX}&f- &3Online Mode: {16}" + "\n" + "{PREFIX}&f- &3Use Server UUIDs: {16}" + "\n" +
"{PREFIX}&f- &bPermission Calculation:" + "\n" + "{PREFIX}&f- &bPermission Calculation:" + "\n" +
"{PREFIX}&f- &3Including Global: {17}" + "\n" + "{PREFIX}&f- &3Including Global: {17}" + "\n" +
"{PREFIX}&f- &3Including Global World: {18}" + "\n" + "{PREFIX}&f- &3Including Global World: {18}" + "\n" +

View File

@ -49,25 +49,25 @@ public class UuidCache {
private final UuidCacheDelegate delegate = new UuidCacheDelegate(this); private final UuidCacheDelegate delegate = new UuidCacheDelegate(this);
public UUID getUUID(UUID external) { public UUID getUUID(UUID external) {
return plugin.getConfiguration().get(ConfigKeys.ONLINE_MODE) ? external : cache.getOrDefault(external, external); return plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUIDS) ? external : cache.getOrDefault(external, external);
} }
public UUID getExternalUUID(UUID internal) { public UUID getExternalUUID(UUID internal) {
return plugin.getConfiguration().get(ConfigKeys.ONLINE_MODE) ? internal : cache.inverse().getOrDefault(internal, internal); return plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUIDS) ? internal : cache.inverse().getOrDefault(internal, internal);
} }
public void addToCache(UUID external, UUID internal) { public void addToCache(UUID external, UUID internal) {
if (plugin.getConfiguration().get(ConfigKeys.ONLINE_MODE)) return; if (plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUIDS)) return;
cache.forcePut(external, internal); cache.forcePut(external, internal);
} }
public void clearCache(UUID external) { public void clearCache(UUID external) {
if (plugin.getConfiguration().get(ConfigKeys.ONLINE_MODE)) return; if (plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUIDS)) return;
cache.remove(external); cache.remove(external);
} }
public int getSize() { public int getSize() {
return plugin.getConfiguration().get(ConfigKeys.ONLINE_MODE) ? 0 : cache.size(); return plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUIDS) ? 0 : cache.size();
} }
} }

View File

@ -43,7 +43,7 @@ public class AbstractListener {
final long startTime = System.currentTimeMillis(); final long startTime = System.currentTimeMillis();
final UuidCache cache = plugin.getUuidCache(); final UuidCache cache = plugin.getUuidCache();
if (!plugin.getConfiguration().get(ConfigKeys.ONLINE_MODE)) { if (!plugin.getConfiguration().get(ConfigKeys.USE_SERVER_UUIDS)) {
UUID uuid = plugin.getStorage().force().getUUID(username).join(); UUID uuid = plugin.getStorage().force().getUUID(username).join();
if (uuid != null) { if (uuid != null) {
cache.addToCache(u, uuid); cache.addToCache(u, uuid);

View File

@ -124,7 +124,7 @@ info: >
{PREFIX}&f- &3Context Calculators: &a{14}\n {PREFIX}&f- &3Context Calculators: &a{14}\n
{PREFIX}&f- &3Unique permissions: &a{15}\n {PREFIX}&f- &3Unique permissions: &a{15}\n
{PREFIX}&f- &bConfiguration:\n {PREFIX}&f- &bConfiguration:\n
{PREFIX}&f- &3Online Mode: {16}\n {PREFIX}&f- &3Use Server UUIDs: {16}\n
{PREFIX}&f- &bPermission Calculation:\n {PREFIX}&f- &bPermission Calculation:\n
{PREFIX}&f- &3Including Global: {17}\n {PREFIX}&f- &3Including Global: {17}\n
{PREFIX}&f- &3Including Global World: {18}\n {PREFIX}&f- &3Including Global World: {18}\n

View File

@ -79,7 +79,7 @@ public class SpongeConfig extends AbstractConfiguration {
} }
} }
private ConfigurationNode getNode(String path) { private ConfigurationNode resolvePath(String path) {
Iterable<String> paths = Splitter.on('.').split(path); Iterable<String> paths = Splitter.on('.').split(path);
ConfigurationNode node = root; ConfigurationNode node = root;
@ -90,24 +90,29 @@ public class SpongeConfig extends AbstractConfiguration {
return node; return node;
} }
@Override
public boolean contains(String path) {
return !resolvePath(path).isVirtual();
}
@Override @Override
public String getString(String path, String def) { public String getString(String path, String def) {
return getNode(path).getString(def); return resolvePath(path).getString(def);
} }
@Override @Override
public int getInt(String path, int def) { public int getInt(String path, int def) {
return getNode(path).getInt(def); return resolvePath(path).getInt(def);
} }
@Override @Override
public boolean getBoolean(String path, boolean def) { public boolean getBoolean(String path, boolean def) {
return getNode(path).getBoolean(def); return resolvePath(path).getBoolean(def);
} }
@Override @Override
public List<String> getList(String path, List<String> def) { public List<String> getList(String path, List<String> def) {
ConfigurationNode node = getNode(path); ConfigurationNode node = resolvePath(path);
if (node.isVirtual()) { if (node.isVirtual()) {
return def; return def;
} }
@ -117,7 +122,7 @@ public class SpongeConfig extends AbstractConfiguration {
@Override @Override
public List<String> getObjectList(String path, List<String> def) { public List<String> getObjectList(String path, List<String> def) {
ConfigurationNode node = getNode(path); ConfigurationNode node = resolvePath(path);
if (node.isVirtual()) { if (node.isVirtual()) {
return def; return def;
} }
@ -128,7 +133,7 @@ public class SpongeConfig extends AbstractConfiguration {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Map<String, String> getMap(String path, Map<String, String> def) { public Map<String, String> getMap(String path, Map<String, String> def) {
ConfigurationNode node = getNode(path); ConfigurationNode node = resolvePath(path);
if (node.isVirtual()) { if (node.isVirtual()) {
return def; return def;
} }

View File

@ -26,18 +26,23 @@ apply-global-groups=true
# If users on this server should have global (non-world specific) groups applied # If users on this server should have global (non-world specific) groups applied
apply-global-world-groups=true apply-global-world-groups=true
# If this server is in offline or online mode. # If UUIDs should be pulled from the server, or looked up by username based upon previous connections.
# This setting allows a player to have the same UUID across a network of offline mode/mixed servers.
# #
# You should generally reflect the setting in server.properties here. Except when... # This option should be set to true in most cases. When set to false, in order to get a player's UUID, LuckPerms will:
# 1. Check if a player with the given username has joined before, if they have, use the UUID they used on their previous login.
# 2. Save and return the players "current" uuid.
# #
# 1. You have Sponge servers connected to a BungeeCord proxy, with online-mode set to false, but 'bungeecord ip-forwarding' # For offline mode (cracked) servers, a players UUID is generated based upon their username.
# set to true in the sponge/global.conf AND 'ip-forward' set to true in the BungeeCord config.yml
# In this case, set online-mode in LuckPerms to true, despite the server being in offline mode.
# #
# 2. You are only running one server instance using LuckPerms, (not a network) In this case, set online-mode to true no # IMPORTANT:
# matter what is set in server.properties. (we can just fallback to the servers uuid cache) # If you are using BungeeCord proxy running in online mode, it is important that "online-mode=false" is set in server.properties, but
online-mode=true # "bungeecord.ip-forwarding=true" is set in Sponge's global.conf. You also need to set "ip_forward: true" in BungeeCord's config.yml.
# If for whatever reason you are not able to do this, and do not have ip-forward enabled, then you may need to set "use-server-uuids" to false.
#
# If your proxy is running in offline mode, you should still be setting up ip-forwarding as described above.
#
# This option only really exists for networks who for whatever reason cannot setup proper ip forwarding.
use-server-uuids=true
# If the plugin should send log notifications to users whenever permissions are modified. # If the plugin should send log notifications to users whenever permissions are modified.
log-notify=true log-notify=true