diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/model/permissible/MonitoredPermissibleBase.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/model/permissible/MonitoredPermissibleBase.java index 44ac6d38..85bf58f3 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/model/permissible/MonitoredPermissibleBase.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/model/permissible/MonitoredPermissibleBase.java @@ -72,7 +72,7 @@ public class MonitoredPermissibleBase extends PermissibleBase { private void logCheck(CheckOrigin origin, String permission, boolean result) { this.plugin.getVerboseHandler().offerCheckData(origin, this.name, ContextSet.empty(), permission, Tristate.fromBoolean(result)); - this.plugin.getPermissionVault().offer(permission); + this.plugin.getPermissionRegistry().offer(permission); } PermissibleBase getDelegate() { diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/model/server/LPPermissionMap.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/model/server/LPPermissionMap.java index 22688ad6..21888729 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/model/server/LPPermissionMap.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/model/server/LPPermissionMap.java @@ -32,7 +32,7 @@ import com.google.common.collect.ForwardingMap; import com.google.common.collect.ImmutableMap; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; -import me.lucko.luckperms.common.treeview.PermissionVault; +import me.lucko.luckperms.common.treeview.PermissionRegistry; import org.bukkit.permissions.Permission; import org.bukkit.plugin.PluginManager; @@ -52,7 +52,7 @@ import javax.annotation.Nullable; * * This instance allows LuckPerms to intercept calls to * {@link PluginManager#addPermission(Permission)} and record permissions in the - * {@link PermissionVault}. + * {@link PermissionRegistry}. * * It also allows us to pre-determine child permission relationships. * @@ -99,7 +99,7 @@ public final class LPPermissionMap extends ForwardingMap { Objects.requireNonNull(key, "key"); Objects.requireNonNull(value, "value"); - this.plugin.getPermissionVault().offer(key); + this.plugin.getPermissionRegistry().offer(key); Permission ret = super.put(key, value); update(); return ret; @@ -107,7 +107,7 @@ public final class LPPermissionMap extends ForwardingMap { @Override public void putAll(@Nonnull Map m) { - this.plugin.getPermissionVault().offerAll(m.keySet()); + this.plugin.getPermissionRegistry().offerAll(m.keySet()); super.putAll(m); update(); } @@ -117,7 +117,7 @@ public final class LPPermissionMap extends ForwardingMap { Objects.requireNonNull(key, "key"); Objects.requireNonNull(value, "value"); - this.plugin.getPermissionVault().offer(key); + this.plugin.getPermissionRegistry().offer(key); Permission ret = super.putIfAbsent(key, value); update(); return ret; diff --git a/bungee/src/main/java/me/lucko/luckperms/bungee/listeners/BungeePermissionCheckListener.java b/bungee/src/main/java/me/lucko/luckperms/bungee/listeners/BungeePermissionCheckListener.java index 77a5366c..75f85d8c 100644 --- a/bungee/src/main/java/me/lucko/luckperms/bungee/listeners/BungeePermissionCheckListener.java +++ b/bungee/src/main/java/me/lucko/luckperms/bungee/listeners/BungeePermissionCheckListener.java @@ -115,7 +115,7 @@ public class BungeePermissionCheckListener implements Listener { String name = "internal/" + e.getSender().getName(); this.plugin.getVerboseHandler().offerCheckData(CheckOrigin.PLATFORM_PERMISSION_CHECK, name, ContextSet.empty(), permission, result); - this.plugin.getPermissionVault().offer(permission); + this.plugin.getPermissionRegistry().offer(permission); } @EventHandler(priority = EventPriority.HIGHEST) @@ -132,6 +132,6 @@ public class BungeePermissionCheckListener implements Listener { String name = "internal/" + e.getSender().getName(); this.plugin.getVerboseHandler().offerCheckData(CheckOrigin.PLATFORM_LOOKUP_CHECK, name, ContextSet.empty(), permission, result); - this.plugin.getPermissionVault().offer(permission); + this.plugin.getPermissionRegistry().offer(permission); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/calculators/PermissionCalculator.java b/common/src/main/java/me/lucko/luckperms/common/calculators/PermissionCalculator.java index ef2839ab..6cf72346 100644 --- a/common/src/main/java/me/lucko/luckperms/common/calculators/PermissionCalculator.java +++ b/common/src/main/java/me/lucko/luckperms/common/calculators/PermissionCalculator.java @@ -100,7 +100,7 @@ public class PermissionCalculator implements CacheLoader { // offer the permission to the permission vault // we only need to do this once per permission, so it doesn't matter // that this call is behind the cache. - this.plugin.getPermissionVault().offer(permission); + this.plugin.getPermissionRegistry().offer(permission); for (PermissionProcessor processor : this.processors) { Tristate result = processor.hasPermission(permission); diff --git a/common/src/main/java/me/lucko/luckperms/common/command/utils/TabCompletions.java b/common/src/main/java/me/lucko/luckperms/common/command/utils/TabCompletions.java index 98e15ec4..cf712121 100644 --- a/common/src/main/java/me/lucko/luckperms/common/command/utils/TabCompletions.java +++ b/common/src/main/java/me/lucko/luckperms/common/command/utils/TabCompletions.java @@ -28,7 +28,7 @@ package me.lucko.luckperms.common.command.utils; import com.google.common.base.Splitter; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; -import me.lucko.luckperms.common.treeview.PermissionVault; +import me.lucko.luckperms.common.treeview.PermissionRegistry; import me.lucko.luckperms.common.treeview.TreeNode; import java.util.ArrayList; @@ -59,7 +59,7 @@ public final class TabCompletions { } } - public static List getPermissionTabComplete(List args, PermissionVault cache) { + public static List getPermissionTabComplete(List args, PermissionRegistry cache) { if (args.size() <= 1) { if (args.isEmpty() || args.get(0).equals("")) { return cache.getRootNode().getChildren() diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionCheck.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionCheck.java index 276068c7..e6c1d994 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionCheck.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionCheck.java @@ -72,6 +72,6 @@ public class PermissionCheck extends SharedSubCommand { @Override public List tabComplete(LuckPermsPlugin plugin, Sender sender, List args) { - return getPermissionTabComplete(args, plugin.getPermissionVault()); + return getPermissionTabComplete(args, plugin.getPermissionRegistry()); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionCheckInherits.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionCheckInherits.java index 433224e1..f557b93c 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionCheckInherits.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionCheckInherits.java @@ -77,6 +77,6 @@ public class PermissionCheckInherits extends SharedSubCommand { @Override public List tabComplete(LuckPermsPlugin plugin, Sender sender, List args) { - return getPermissionTabComplete(args, plugin.getPermissionVault()); + return getPermissionTabComplete(args, plugin.getPermissionRegistry()); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionSet.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionSet.java index a0ef8d6d..389935b9 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionSet.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionSet.java @@ -99,6 +99,6 @@ public class PermissionSet extends SharedSubCommand { if (!ret.isEmpty()) { return ret; } - return getPermissionTabComplete(args, plugin.getPermissionVault()); + return getPermissionTabComplete(args, plugin.getPermissionRegistry()); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionSetTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionSetTemp.java index 23f0fb65..ae90e31e 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionSetTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionSetTemp.java @@ -107,6 +107,6 @@ public class PermissionSetTemp extends SharedSubCommand { if (!ret.isEmpty()) { return ret; } - return getPermissionTabComplete(args, plugin.getPermissionVault()); + return getPermissionTabComplete(args, plugin.getPermissionRegistry()); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionUnset.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionUnset.java index ada94377..c8eb0e4f 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionUnset.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionUnset.java @@ -93,6 +93,6 @@ public class PermissionUnset extends SharedSubCommand { @Override public List tabComplete(LuckPermsPlugin plugin, Sender sender, List args) { - return getPermissionTabComplete(args, plugin.getPermissionVault()); + return getPermissionTabComplete(args, plugin.getPermissionRegistry()); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionUnsetTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionUnsetTemp.java index e1b72a61..c6cbae1e 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionUnsetTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionUnsetTemp.java @@ -93,6 +93,6 @@ public class PermissionUnsetTemp extends SharedSubCommand { @Override public List tabComplete(LuckPermsPlugin plugin, Sender sender, List args) { - return getPermissionTabComplete(args, plugin.getPermissionVault()); + return getPermissionTabComplete(args, plugin.getPermissionRegistry()); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java index ae8478d4..468b5d4b 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/misc/CheckCommand.java @@ -84,6 +84,6 @@ public class CheckCommand extends SingleCommand { } args.remove(0); - return TabCompletions.getPermissionTabComplete(args, plugin.getPermissionVault()); + return TabCompletions.getPermissionTabComplete(args, plugin.getPermissionRegistry()); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/misc/SearchCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/misc/SearchCommand.java index e80a5502..d4dd52f6 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/misc/SearchCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/misc/SearchCommand.java @@ -104,7 +104,7 @@ public class SearchCommand extends SingleCommand { @Override public List tabComplete(LuckPermsPlugin plugin, Sender sender, List args) { - return TabCompletions.getPermissionTabComplete(args, plugin.getPermissionVault()); + return TabCompletions.getPermissionTabComplete(args, plugin.getPermissionRegistry()); } private static void sendResult(Sender sender, List> results, Function lookupFunction, Message headerMessage, HolderType holderType, String label, int page) { diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/misc/TreeCommand.java b/common/src/main/java/me/lucko/luckperms/common/commands/misc/TreeCommand.java index aa465d8c..636c8c85 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/misc/TreeCommand.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/misc/TreeCommand.java @@ -83,7 +83,7 @@ public class TreeCommand extends SingleCommand { user = null; } - TreeView view = new TreeView(plugin.getPermissionVault(), selection); + TreeView view = new TreeView(plugin.getPermissionRegistry(), selection); if (!view.hasData()) { Message.TREE_EMPTY.send(sender); return CommandResult.FAILURE; diff --git a/common/src/main/java/me/lucko/luckperms/common/plugin/AbstractLuckPermsPlugin.java b/common/src/main/java/me/lucko/luckperms/common/plugin/AbstractLuckPermsPlugin.java index 7130d23d..454031b3 100644 --- a/common/src/main/java/me/lucko/luckperms/common/plugin/AbstractLuckPermsPlugin.java +++ b/common/src/main/java/me/lucko/luckperms/common/plugin/AbstractLuckPermsPlugin.java @@ -56,7 +56,7 @@ import me.lucko.luckperms.common.storage.StorageFactory; import me.lucko.luckperms.common.storage.StorageType; import me.lucko.luckperms.common.storage.dao.file.FileWatcher; import me.lucko.luckperms.common.tasks.UpdateTask; -import me.lucko.luckperms.common.treeview.PermissionVault; +import me.lucko.luckperms.common.treeview.PermissionRegistry; import me.lucko.luckperms.common.verbose.VerboseHandler; import java.io.File; @@ -71,7 +71,7 @@ public abstract class AbstractLuckPermsPlugin implements LuckPermsPlugin { // init during enable private VerboseHandler verboseHandler; - private PermissionVault permissionVault; + private PermissionRegistry permissionRegistry; private LogDispatcher logDispatcher; private LuckPermsConfiguration configuration; private LocaleManager localeManager; @@ -104,7 +104,7 @@ public abstract class AbstractLuckPermsPlugin implements LuckPermsPlugin { // load some utilities early this.verboseHandler = new VerboseHandler(); - this.permissionVault = new PermissionVault(); + this.permissionRegistry = new PermissionRegistry(); this.logDispatcher = new LogDispatcher(this); // load configuration @@ -195,7 +195,7 @@ public abstract class AbstractLuckPermsPlugin implements LuckPermsPlugin { performEarlyDisableTasks(); // shutdown permission vault and verbose handler tasks - this.permissionVault.stop(); + this.permissionRegistry.stop(); this.verboseHandler.stop(); // remove any hooks into the platform @@ -266,8 +266,8 @@ public abstract class AbstractLuckPermsPlugin implements LuckPermsPlugin { } @Override - public PermissionVault getPermissionVault() { - return this.permissionVault; + public PermissionRegistry getPermissionRegistry() { + return this.permissionRegistry; } @Override diff --git a/common/src/main/java/me/lucko/luckperms/common/plugin/LuckPermsPlugin.java b/common/src/main/java/me/lucko/luckperms/common/plugin/LuckPermsPlugin.java index 385b438c..38862893 100644 --- a/common/src/main/java/me/lucko/luckperms/common/plugin/LuckPermsPlugin.java +++ b/common/src/main/java/me/lucko/luckperms/common/plugin/LuckPermsPlugin.java @@ -50,7 +50,7 @@ import me.lucko.luckperms.common.plugin.bootstrap.LuckPermsBootstrap; import me.lucko.luckperms.common.sender.Sender; import me.lucko.luckperms.common.storage.Storage; import me.lucko.luckperms.common.storage.dao.file.FileWatcher; -import me.lucko.luckperms.common.treeview.PermissionVault; +import me.lucko.luckperms.common.treeview.PermissionRegistry; import me.lucko.luckperms.common.verbose.VerboseHandler; import java.util.Collections; @@ -208,11 +208,11 @@ public interface LuckPermsPlugin { VerboseHandler getVerboseHandler(); /** - * Gets the permission caching instance for the platform. + * Gets the permission registry for the platform. * - * @return the permission cache instance + * @return the permission registry */ - PermissionVault getPermissionVault(); + PermissionRegistry getPermissionRegistry(); /** * Gets the log dispatcher running on the platform diff --git a/common/src/main/java/me/lucko/luckperms/common/treeview/PermissionVault.java b/common/src/main/java/me/lucko/luckperms/common/treeview/PermissionRegistry.java similarity index 97% rename from common/src/main/java/me/lucko/luckperms/common/treeview/PermissionVault.java rename to common/src/main/java/me/lucko/luckperms/common/treeview/PermissionRegistry.java index a9b40153..568d7855 100644 --- a/common/src/main/java/me/lucko/luckperms/common/treeview/PermissionVault.java +++ b/common/src/main/java/me/lucko/luckperms/common/treeview/PermissionRegistry.java @@ -43,7 +43,7 @@ import java.util.stream.Collectors; /** * Stores a collection of all permissions known to the platform. */ -public class PermissionVault extends RepeatingTask { +public class PermissionRegistry extends RepeatingTask { private static final Splitter DOT_SPLIT = Splitter.on('.').omitEmptyStrings(); // the root node in the tree @@ -55,7 +55,7 @@ public class PermissionVault extends RepeatingTask { // a queue of permission strings to be processed by the tree private final Queue queue; - public PermissionVault() { + public PermissionRegistry() { super(1000, TimeUnit.MILLISECONDS, "luckperms-permission-vault"); this.rootNode = new TreeNode(); this.knownPermissions = ConcurrentHashMap.newKeySet(3000); diff --git a/common/src/main/java/me/lucko/luckperms/common/treeview/TreeView.java b/common/src/main/java/me/lucko/luckperms/common/treeview/TreeView.java index 389873a1..1a4ebeb4 100644 --- a/common/src/main/java/me/lucko/luckperms/common/treeview/TreeView.java +++ b/common/src/main/java/me/lucko/luckperms/common/treeview/TreeView.java @@ -52,7 +52,7 @@ public class TreeView { // the actual tree object private final ImmutableTreeNode view; - public TreeView(PermissionVault source, String rootPosition) { + public TreeView(PermissionRegistry source, String rootPosition) { if (rootPosition.equals("") || rootPosition.equals("*")) { rootPosition = "."; } else if (!rootPosition.equals(".") && rootPosition.endsWith(".")) { @@ -79,7 +79,7 @@ public class TreeView { * @param source the node source * @return the root, if it exists */ - private static Optional findRoot(String rootPosition, PermissionVault source) { + private static Optional findRoot(String rootPosition, PermissionRegistry source) { // get the root of the permission vault TreeNode root = source.getRootNode(); diff --git a/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java b/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java index e0bbaaaa..3046a834 100644 --- a/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java +++ b/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java @@ -103,7 +103,7 @@ public final class WebEditor { ) .add("knownPermissions", new JArray() .consume(arr -> { - for (String perm : plugin.getPermissionVault().rootAsList()) { + for (String perm : plugin.getPermissionRegistry().rootAsList()) { arr.add(perm); } }) diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/model/permissible/MonitoredPermissibleBase.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/model/permissible/MonitoredPermissibleBase.java index 9a506902..6385d5a3 100644 --- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/model/permissible/MonitoredPermissibleBase.java +++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/model/permissible/MonitoredPermissibleBase.java @@ -72,7 +72,7 @@ public class MonitoredPermissibleBase extends PermissibleBase { private void logCheck(CheckOrigin origin, String permission, boolean result) { this.plugin.getVerboseHandler().offerCheckData(origin, this.name, ContextSet.empty(), permission, Tristate.fromBoolean(result)); - this.plugin.getPermissionVault().offer(permission); + this.plugin.getPermissionRegistry().offer(permission); } PermissibleBase getDelegate() { diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/model/server/LPPermissionMap.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/model/server/LPPermissionMap.java index 65c013be..65525ac8 100644 --- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/model/server/LPPermissionMap.java +++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/model/server/LPPermissionMap.java @@ -32,7 +32,7 @@ import com.google.common.collect.ForwardingMap; import com.google.common.collect.ImmutableMap; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; -import me.lucko.luckperms.common.treeview.PermissionVault; +import me.lucko.luckperms.common.treeview.PermissionRegistry; import cn.nukkit.permission.Permission; import cn.nukkit.plugin.PluginManager; @@ -50,7 +50,7 @@ import javax.annotation.Nonnull; * * This instance allows LuckPerms to intercept calls to * {@link PluginManager#addPermission(Permission)} and record permissions in the - * {@link PermissionVault}. + * {@link PermissionRegistry}. * * It also allows us to pre-determine child permission relationships. * @@ -94,7 +94,7 @@ public final class LPPermissionMap extends ForwardingMap { @Override public Permission put(@Nonnull String key, @Nonnull Permission value) { - this.plugin.getPermissionVault().offer(key); + this.plugin.getPermissionRegistry().offer(key); Permission ret = super.put(key, value); update(); return ret; @@ -102,14 +102,14 @@ public final class LPPermissionMap extends ForwardingMap { @Override public void putAll(@Nonnull Map m) { - this.plugin.getPermissionVault().offerAll(m.keySet()); + this.plugin.getPermissionRegistry().offerAll(m.keySet()); super.putAll(m); update(); } @Override public Permission putIfAbsent(String key, Permission value) { - this.plugin.getPermissionVault().offer(key); + this.plugin.getPermissionRegistry().offer(key); Permission ret = super.putIfAbsent(key, value); update(); return ret; diff --git a/sponge/sponge-service-api6/src/main/java/me/lucko/luckperms/sponge/service/proxy/api6/DescriptionBuilder.java b/sponge/sponge-service-api6/src/main/java/me/lucko/luckperms/sponge/service/proxy/api6/DescriptionBuilder.java index 8550ce02..ed67af59 100644 --- a/sponge/sponge-service-api6/src/main/java/me/lucko/luckperms/sponge/service/proxy/api6/DescriptionBuilder.java +++ b/sponge/sponge-service-api6/src/main/java/me/lucko/luckperms/sponge/service/proxy/api6/DescriptionBuilder.java @@ -94,7 +94,7 @@ public final class DescriptionBuilder implements PermissionDescription.Builder { roleSubject.getTransientSubjectData().setPermission(ContextSet.empty(), this.id, assignment.getValue()); } - this.service.getPlugin().getPermissionVault().offer(this.id); + this.service.getPlugin().getPermissionRegistry().offer(this.id); // null stuff so this instance can be reused this.roles.clear(); diff --git a/sponge/sponge-service-api7/src/main/java/me/lucko/luckperms/sponge/service/proxy/api7/DescriptionBuilder.java b/sponge/sponge-service-api7/src/main/java/me/lucko/luckperms/sponge/service/proxy/api7/DescriptionBuilder.java index 2b6312bc..881435dc 100644 --- a/sponge/sponge-service-api7/src/main/java/me/lucko/luckperms/sponge/service/proxy/api7/DescriptionBuilder.java +++ b/sponge/sponge-service-api7/src/main/java/me/lucko/luckperms/sponge/service/proxy/api7/DescriptionBuilder.java @@ -94,7 +94,7 @@ public final class DescriptionBuilder implements PermissionDescription.Builder { roleSubject.getTransientSubjectData().setPermission(ContextSet.empty(), this.id, assignment.getValue()); } - this.service.getPlugin().getPermissionVault().offer(this.id); + this.service.getPlugin().getPermissionRegistry().offer(this.id); // null stuff so this instance can be reused this.roles.clear(); diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java index 2f6b5ff8..d14b913f 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java @@ -43,6 +43,7 @@ import me.lucko.luckperms.common.sender.DummySender; import me.lucko.luckperms.common.sender.Sender; import me.lucko.luckperms.common.tasks.CacheHousekeepingTask; import me.lucko.luckperms.common.tasks.ExpireTemporaryTask; +import me.lucko.luckperms.common.treeview.PermissionRegistry; import me.lucko.luckperms.sponge.calculators.SpongeCalculatorFactory; import me.lucko.luckperms.sponge.commands.SpongeMainCommand; import me.lucko.luckperms.sponge.contexts.SpongeContextManager; @@ -60,6 +61,7 @@ import me.lucko.luckperms.sponge.service.persisted.PersistedCollection; import me.lucko.luckperms.sponge.tasks.ServiceCacheHousekeepingTask; import org.spongepowered.api.entity.living.player.Player; +import org.spongepowered.api.service.permission.PermissionDescription; import org.spongepowered.api.service.permission.PermissionService; import org.spongepowered.api.service.permission.Subject; @@ -151,6 +153,11 @@ public class LPSpongePlugin extends AbstractLuckPermsPlugin { this.updateEventHandler = UpdateEventHandler.obtain(this); this.service = new LuckPermsService(this); + // before registering our permission service, copy any existing permission descriptions + PermissionRegistry permissionRegistry = getPermissionRegistry(); + this.bootstrap.getGame().getServiceManager().provide(PermissionService.class) + .ifPresent(ps -> ps.getDescriptions().stream().map(PermissionDescription::getId).forEach(permissionRegistry::offer)); + if (this.bootstrap.getGame().getPluginManager().getPlugin("permissionsex").isPresent()) { getLogger().warn("Detected PermissionsEx - assuming it's loaded for migration."); getLogger().warn("Delaying LuckPerms PermissionService registration."); diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/service/LuckPermsService.java b/sponge/src/main/java/me/lucko/luckperms/sponge/service/LuckPermsService.java index ae9d3bb2..790b6eb6 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/service/LuckPermsService.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/service/LuckPermsService.java @@ -55,10 +55,10 @@ import org.spongepowered.api.service.permission.Subject; import org.spongepowered.api.text.Text; import java.io.File; -import java.util.HashSet; +import java.util.HashMap; +import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Predicate; @@ -95,7 +95,7 @@ public class LuckPermsService implements LPPermissionService { /** * A set of registered permission description instances */ - private final Set permissionDescriptions; + private final Map permissionDescriptions; /** * The loaded collections in this service @@ -107,7 +107,7 @@ public class LuckPermsService implements LPPermissionService { this.plugin = plugin; this.referenceFactory = new SubjectReferenceFactory(this); this.spongeProxy = ProxyFactory.toSponge(this); - this.permissionDescriptions = ConcurrentHashMap.newKeySet(); + this.permissionDescriptions = new ConcurrentHashMap<>(); // init subject storage this.storage = new SubjectStorage(this, new File(plugin.getBootstrap().getDataDirectory(), "sponge-data")); @@ -199,37 +199,30 @@ public class LuckPermsService implements LPPermissionService { @Override public LPPermissionDescription registerPermissionDescription(String id, Text description, PluginContainer owner) { SimplePermissionDescription desc = new SimplePermissionDescription(this, id, description, owner); - this.permissionDescriptions.add(desc); + this.permissionDescriptions.put(id, desc); + this.plugin.getPermissionRegistry().offer(id); return desc; } @Override public Optional getDescription(String s) { Objects.requireNonNull(s); - for (LPPermissionDescription d : this.permissionDescriptions) { - if (d.getId().equals(s)) { - return Optional.of(d); - } - } - - return Optional.empty(); + return Optional.ofNullable(this.permissionDescriptions.get(s)); } @Override public ImmutableSet getDescriptions() { - Set descriptions = new HashSet<>(this.permissionDescriptions); + Map descriptions = new HashMap<>(this.permissionDescriptions); // collect known values from the permission vault - for (String knownPermission : this.plugin.getPermissionVault().getKnownPermissions()) { - LPPermissionDescription desc = new SimplePermissionDescription(this, knownPermission, null, null); - + for (String perm : this.plugin.getPermissionRegistry().getKnownPermissions()) { // don't override plugin defined values - if (!descriptions.contains(desc)) { - descriptions.add(desc); + if (!descriptions.containsKey(perm)) { + descriptions.put(perm, new SimplePermissionDescription(this, perm, null, null)); } } - return ImmutableSet.copyOf(descriptions); + return ImmutableSet.copyOf(descriptions.values()); } @Override