From fbac03e372cada4e41256132d77164753fc8fd9f Mon Sep 17 00:00:00 2001 From: Luck Date: Fri, 13 Mar 2020 18:13:12 +0000 Subject: [PATCH] Remove MinimalApiProvider & refactor usages away from static access --- .../java/net/luckperms/api/LuckPerms.java | 9 ++ .../api/node/NodeBuilderRegistry.java | 27 ++++ .../net/luckperms/api/query/QueryOptions.java | 4 +- .../api/query/QueryOptionsRegistry.java | 59 +++++++ .../bukkit/context/WorldCalculator.java | 3 +- .../permissible/MonitoredPermissibleBase.java | 4 +- .../bukkit/vault/LuckPermsVaultChat.java | 3 +- .../vault/LuckPermsVaultPermission.java | 5 +- .../context/BackendServerCalculator.java | 3 +- .../bungee/context/RedisBungeeCalculator.java | 6 +- .../BungeePermissionCheckListener.java | 5 +- .../common/api/LuckPermsApiProvider.java | 7 + .../common/api/MinimalApiProvider.java | 149 ------------------ .../implementation/ApiPermissionHolder.java | 5 +- .../ApiQueryOptionsRegistry.java | 51 ++++++ .../bulkupdate/action/UpdateAction.java | 3 +- .../command/access/ArgumentPermissions.java | 4 +- .../commands/generic/meta/MetaInfo.java | 4 +- .../generic/meta/MetaSetChatMeta.java | 4 +- .../generic/meta/MetaSetTempChatMeta.java | 4 +- .../commands/generic/parent/ParentInfo.java | 4 +- .../permission/PermissionCheckInherits.java | 4 +- .../luckperms/common/config/ConfigKeys.java | 6 +- .../common/context/ContextManager.java | 2 +- .../context/LPStaticContextsCalculator.java | 3 +- .../inheritance/InheritanceHandler.java | 9 +- .../lucko/luckperms/common/model/NodeMap.java | 9 +- .../luckperms/common/model/WeightCache.java | 4 +- .../common/node/AbstractNodeBuilder.java | 2 +- .../plugin/AbstractLuckPermsPlugin.java | 4 - .../common}/query/DefaultQueryOptions.java | 23 +-- .../common/query/QueryOptionsBuilderImpl.java | 12 +- .../common/query/QueryOptionsImpl.java | 9 +- .../nukkit/context/WorldCalculator.java | 3 +- .../permissible/MonitoredPermissibleBase.java | 4 +- .../sponge/context/WorldCalculator.java | 5 +- .../model/calculated/CalculatedSubject.java | 9 +- .../PermissionHolderSubjectData.java | 4 +- .../context/BackendServerCalculator.java | 3 +- .../MonitoringPermissionCheckListener.java | 4 +- 40 files changed, 242 insertions(+), 240 deletions(-) create mode 100644 api/src/main/java/net/luckperms/api/query/QueryOptionsRegistry.java delete mode 100644 common/src/main/java/me/lucko/luckperms/common/api/MinimalApiProvider.java create mode 100644 common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiQueryOptionsRegistry.java rename {api/src/main/java/net/luckperms/api => common/src/main/java/me/lucko/luckperms/common}/query/DefaultQueryOptions.java (74%) diff --git a/api/src/main/java/net/luckperms/api/LuckPerms.java b/api/src/main/java/net/luckperms/api/LuckPerms.java index 41eae2658..26d55d374 100644 --- a/api/src/main/java/net/luckperms/api/LuckPerms.java +++ b/api/src/main/java/net/luckperms/api/LuckPerms.java @@ -41,6 +41,7 @@ import net.luckperms.api.model.user.UserManager; import net.luckperms.api.node.NodeBuilderRegistry; import net.luckperms.api.platform.Platform; import net.luckperms.api.platform.PluginMetadata; +import net.luckperms.api.query.QueryOptionsRegistry; import net.luckperms.api.track.Track; import net.luckperms.api.track.TrackManager; @@ -172,6 +173,14 @@ public interface LuckPerms { */ @NonNull NodeBuilderRegistry getNodeBuilderRegistry(); + /** + * Gets the {@link QueryOptionsRegistry}. + * + * @return the query options registry + * @since 5.1 + */ + @NonNull QueryOptionsRegistry getQueryOptionsRegistry(); + /** * Gets the {@link MetaStackFactory}. * diff --git a/api/src/main/java/net/luckperms/api/node/NodeBuilderRegistry.java b/api/src/main/java/net/luckperms/api/node/NodeBuilderRegistry.java index f9e8bcab6..3128fd450 100644 --- a/api/src/main/java/net/luckperms/api/node/NodeBuilderRegistry.java +++ b/api/src/main/java/net/luckperms/api/node/NodeBuilderRegistry.java @@ -45,64 +45,91 @@ public interface NodeBuilderRegistry { /** * Gets a {@link NodeBuilder} applicable for the given key. * + *

Prefer using the {@link Node#builder(String)} accessor.

+ * * @param key the key * @return the node builder + * @see Node#builder(String) */ @NonNull NodeBuilder forKey(String key); /** * Gets a {@link NodeBuilder} for {@link PermissionNode}s. * + *

Prefer using the {@link PermissionNode#builder()} accessor.

+ * * @return the node builder + * @see PermissionNode#builder() */ PermissionNode.@NonNull Builder forPermission(); /** * Gets a {@link NodeBuilder} for {@link RegexPermissionNode}s. * + *

Prefer using the {@link RegexPermissionNode#builder()} accessor.

+ * * @return the node builder + * @see RegexPermissionNode#builder() */ RegexPermissionNode.@NonNull Builder forRegexPermission(); /** * Gets a {@link NodeBuilder} for {@link InheritanceNode}s. * + *

Prefer using the {@link InheritanceNode#builder()} accessor.

+ * * @return the node builder + * @see InheritanceNode#builder() */ InheritanceNode.@NonNull Builder forInheritance(); /** * Gets a {@link NodeBuilder} for {@link PrefixNode}s. * + *

Prefer using the {@link PrefixNode#builder()} accessor.

+ * * @return the node builder + * @see PrefixNode#builder() */ PrefixNode.@NonNull Builder forPrefix(); /** * Gets a {@link NodeBuilder} for {@link SuffixNode}s. * + *

Prefer using the {@link SuffixNode#builder()} accessor.

+ * * @return the node builder + * @see SuffixNode#builder() */ SuffixNode.@NonNull Builder forSuffix(); /** * Gets a {@link NodeBuilder} for {@link MetaNode}s. * + *

Prefer using the {@link MetaNode#builder()} accessor.

+ * * @return the node builder + * @see MetaNode#builder() */ MetaNode.@NonNull Builder forMeta(); /** * Gets a {@link NodeBuilder} for {@link WeightNode}s. * + *

Prefer using the {@link WeightNode#builder()} accessor.

+ * * @return the node builder + * @see WeightNode#builder() */ WeightNode.@NonNull Builder forWeight(); /** * Gets a {@link NodeBuilder} for {@link DisplayNameNode}s. * + *

Prefer using the {@link DisplayNameNode#builder()} accessor.

+ * * @return the node builder + * @see DisplayNameNode#builder() */ DisplayNameNode.@NonNull Builder forDisplayName(); diff --git a/api/src/main/java/net/luckperms/api/query/QueryOptions.java b/api/src/main/java/net/luckperms/api/query/QueryOptions.java index 60c9bb675..0f103ff0f 100644 --- a/api/src/main/java/net/luckperms/api/query/QueryOptions.java +++ b/api/src/main/java/net/luckperms/api/query/QueryOptions.java @@ -94,7 +94,7 @@ public interface QueryOptions { * @return the default non contextual query options */ static @NonNull QueryOptions nonContextual() { - return DefaultQueryOptions.nonContextual(); + return LuckPermsProvider.get().getQueryOptionsRegistry().defaultNonContextualOptions(); } /** @@ -107,7 +107,7 @@ public interface QueryOptions { * @return the default contextual query options */ static @NonNull QueryOptions defaultContextualOptions() { - return DefaultQueryOptions.contextual(); + return LuckPermsProvider.get().getQueryOptionsRegistry().defaultContextualOptions(); } /** diff --git a/api/src/main/java/net/luckperms/api/query/QueryOptionsRegistry.java b/api/src/main/java/net/luckperms/api/query/QueryOptionsRegistry.java new file mode 100644 index 000000000..1e20e3523 --- /dev/null +++ b/api/src/main/java/net/luckperms/api/query/QueryOptionsRegistry.java @@ -0,0 +1,59 @@ +/* + * This file is part of LuckPerms, licensed under the MIT License. + * + * Copyright (c) lucko (Luck) + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.luckperms.api.query; + +import org.checkerframework.checker.nullness.qual.NonNull; + +/** + * A registry providing useful {@link QueryOptions} instances. + * + * @since 5.1 + */ +public interface QueryOptionsRegistry { + + /** + * Gets the default {@link QueryMode#CONTEXTUAL contextual} + * query options. + * + *

Prefer using the {@link QueryOptions#defaultContextualOptions()} accessor.

> + * + * @return the default contextual query options + * @see QueryOptions#defaultContextualOptions() + */ + @NonNull QueryOptions defaultContextualOptions(); + + /** + * Gets the default {@link QueryMode#NON_CONTEXTUAL non contextual} + * query options. + * + *

Prefer using the {@link QueryOptions#nonContextual()} accessor.

> + * + * @return the default non contextual query options + * @see QueryOptions#nonContextual() + */ + @NonNull QueryOptions defaultNonContextualOptions(); + +} diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/context/WorldCalculator.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/context/WorldCalculator.java index a7ac2569a..9878b6450 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/context/WorldCalculator.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/context/WorldCalculator.java @@ -27,6 +27,7 @@ package me.lucko.luckperms.bukkit.context; import me.lucko.luckperms.bukkit.LPBukkitPlugin; import me.lucko.luckperms.common.config.ConfigKeys; +import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl; import net.luckperms.api.context.ContextCalculator; import net.luckperms.api.context.ContextConsumer; @@ -62,7 +63,7 @@ public class WorldCalculator implements ContextCalculator { @Override public ContextSet estimatePotentialContexts() { List worlds = this.plugin.getBootstrap().getServer().getWorlds(); - ImmutableContextSet.Builder builder = ImmutableContextSet.builder(); + ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl(); for (World world : worlds) { String name = world.getName().toLowerCase(); if (!name.trim().isEmpty()) { diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/MonitoredPermissibleBase.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/MonitoredPermissibleBase.java index 68678dac4..3aeb276a4 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/MonitoredPermissibleBase.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/MonitoredPermissibleBase.java @@ -28,10 +28,10 @@ package me.lucko.luckperms.bukkit.inject.permissible; import me.lucko.luckperms.bukkit.inject.dummy.DummyPermissibleBase; import me.lucko.luckperms.common.calculator.result.TristateResult; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.verbose.VerboseHandler; import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent; -import net.luckperms.api.query.QueryOptions; import net.luckperms.api.util.Tristate; import org.bukkit.permissions.PermissibleBase; @@ -70,7 +70,7 @@ public class MonitoredPermissibleBase extends PermissibleBase { } private void logCheck(PermissionCheckEvent.Origin origin, String permission, boolean result) { - this.plugin.getVerboseHandler().offerPermissionCheckEvent(origin, this.name, QueryOptions.defaultContextualOptions(), permission, TristateResult.of(Tristate.of(result))); + this.plugin.getVerboseHandler().offerPermissionCheckEvent(origin, this.name, QueryOptionsImpl.DEFAULT_CONTEXTUAL, permission, TristateResult.of(Tristate.of(result))); this.plugin.getPermissionRegistry().offer(permission); } diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultChat.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultChat.java index 4d54db2a7..23a71e8e7 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultChat.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultChat.java @@ -36,6 +36,7 @@ import me.lucko.luckperms.common.model.PermissionHolder; import me.lucko.luckperms.common.node.types.Meta; import me.lucko.luckperms.common.node.types.Prefix; import me.lucko.luckperms.common.node.types.Suffix; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.verbose.event.MetaCheckEvent; import net.luckperms.api.context.DefaultContextKeys; @@ -278,7 +279,7 @@ public class LuckPermsVaultChat extends AbstractVaultChat { } context.add(DefaultContextKeys.SERVER_KEY, this.vaultPermission.getVaultServer()); - QueryOptions.Builder builder = QueryOptions.defaultContextualOptions().toBuilder(); + QueryOptions.Builder builder = QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder(); builder.context(context.build()); builder.flag(Flag.INCLUDE_NODES_WITHOUT_SERVER_CONTEXT, this.vaultPermission.isIncludeGlobal()); return builder.build(); diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultPermission.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultPermission.java index 7c4938b6f..3dc9186e0 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultPermission.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultPermission.java @@ -40,6 +40,7 @@ import me.lucko.luckperms.common.model.User; import me.lucko.luckperms.common.model.manager.group.GroupManager; import me.lucko.luckperms.common.node.factory.NodeBuilders; import me.lucko.luckperms.common.node.types.Inheritance; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.util.Uuids; import me.lucko.luckperms.common.verbose.event.MetaCheckEvent; import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent; @@ -278,7 +279,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission { value = group.getPlainDisplayName(); } - this.plugin.getVerboseHandler().offerMetaCheckEvent(MetaCheckEvent.Origin.THIRD_PARTY_API, user.getPlainDisplayName(), QueryOptions.defaultContextualOptions(), "primarygroup", value); + this.plugin.getVerboseHandler().offerMetaCheckEvent(MetaCheckEvent.Origin.THIRD_PARTY_API, user.getPlainDisplayName(), QueryOptionsImpl.DEFAULT_CONTEXTUAL, "primarygroup", value); return value; } @@ -381,7 +382,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission { op = this.plugin.getConfiguration().get(ConfigKeys.VAULT_NPC_OP_STATUS); } - QueryOptions.Builder builder = QueryOptions.defaultContextualOptions().toBuilder(); + QueryOptions.Builder builder = QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder(); builder.context(context); builder.flag(Flag.INCLUDE_NODES_WITHOUT_SERVER_CONTEXT, isIncludeGlobal()); if (op) { diff --git a/bungee/src/main/java/me/lucko/luckperms/bungee/context/BackendServerCalculator.java b/bungee/src/main/java/me/lucko/luckperms/bungee/context/BackendServerCalculator.java index 9503a71e0..05b749ecd 100644 --- a/bungee/src/main/java/me/lucko/luckperms/bungee/context/BackendServerCalculator.java +++ b/bungee/src/main/java/me/lucko/luckperms/bungee/context/BackendServerCalculator.java @@ -27,6 +27,7 @@ package me.lucko.luckperms.bungee.context; import me.lucko.luckperms.bungee.LPBungeePlugin; import me.lucko.luckperms.common.config.ConfigKeys; +import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl; import net.luckperms.api.context.ContextCalculator; import net.luckperms.api.context.ContextConsumer; @@ -67,7 +68,7 @@ public class BackendServerCalculator implements ContextCalculator @Override public ContextSet estimatePotentialContexts() { Collection servers = this.plugin.getBootstrap().getProxy().getServers().values(); - ImmutableContextSet.Builder builder = ImmutableContextSet.builder(); + ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl(); for (ServerInfo server : servers) { builder.add(DefaultContextKeys.WORLD_KEY, server.getName().toLowerCase()); } diff --git a/bungee/src/main/java/me/lucko/luckperms/bungee/context/RedisBungeeCalculator.java b/bungee/src/main/java/me/lucko/luckperms/bungee/context/RedisBungeeCalculator.java index c97b828c7..392f10d74 100644 --- a/bungee/src/main/java/me/lucko/luckperms/bungee/context/RedisBungeeCalculator.java +++ b/bungee/src/main/java/me/lucko/luckperms/bungee/context/RedisBungeeCalculator.java @@ -28,6 +28,8 @@ package me.lucko.luckperms.bungee.context; import com.imaginarycode.minecraft.redisbungee.RedisBungee; import com.imaginarycode.minecraft.redisbungee.RedisBungeeAPI; +import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl; + import net.luckperms.api.context.ContextConsumer; import net.luckperms.api.context.ContextSet; import net.luckperms.api.context.ImmutableContextSet; @@ -50,10 +52,10 @@ public class RedisBungeeCalculator implements StaticContextCalculator { public ContextSet estimatePotentialContexts() { RedisBungeeAPI redisBungee = RedisBungee.getApi(); if (redisBungee == null) { - return ImmutableContextSet.empty(); + return ImmutableContextSetImpl.EMPTY; } - ImmutableContextSet.Builder builder = ImmutableContextSet.builder(); + ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl(); for (String server : redisBungee.getAllServers()) { builder.add(PROXY_KEY, server); } 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 2387d6a23..4f4ebe586 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 @@ -30,6 +30,7 @@ import me.lucko.luckperms.bungee.event.TristateCheckEvent; import me.lucko.luckperms.common.calculator.result.TristateResult; import me.lucko.luckperms.common.config.ConfigKeys; import me.lucko.luckperms.common.model.User; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import net.luckperms.api.query.QueryOptions; import net.luckperms.api.util.Tristate; @@ -113,7 +114,7 @@ public class BungeePermissionCheckListener implements Listener { Tristate result = Tristate.of(e.hasPermission()); String name = "internal/" + e.getSender().getName(); - this.plugin.getVerboseHandler().offerPermissionCheckEvent(me.lucko.luckperms.common.verbose.event.PermissionCheckEvent.Origin.PLATFORM_PERMISSION_CHECK, name, QueryOptions.defaultContextualOptions(), permission, TristateResult.of(result)); + this.plugin.getVerboseHandler().offerPermissionCheckEvent(me.lucko.luckperms.common.verbose.event.PermissionCheckEvent.Origin.PLATFORM_PERMISSION_CHECK, name, QueryOptionsImpl.DEFAULT_CONTEXTUAL, permission, TristateResult.of(result)); this.plugin.getPermissionRegistry().offer(permission); } @@ -130,7 +131,7 @@ public class BungeePermissionCheckListener implements Listener { Tristate result = e.getResult(); String name = "internal/" + e.getSender().getName(); - this.plugin.getVerboseHandler().offerPermissionCheckEvent(me.lucko.luckperms.common.verbose.event.PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK, name, QueryOptions.defaultContextualOptions(), permission, TristateResult.of(result)); + this.plugin.getVerboseHandler().offerPermissionCheckEvent(me.lucko.luckperms.common.verbose.event.PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK, name, QueryOptionsImpl.DEFAULT_CONTEXTUAL, permission, TristateResult.of(result)); this.plugin.getPermissionRegistry().offer(permission); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/api/LuckPermsApiProvider.java b/common/src/main/java/me/lucko/luckperms/common/api/LuckPermsApiProvider.java index bcfacb664..a54667494 100644 --- a/common/src/main/java/me/lucko/luckperms/common/api/LuckPermsApiProvider.java +++ b/common/src/main/java/me/lucko/luckperms/common/api/LuckPermsApiProvider.java @@ -32,6 +32,7 @@ import me.lucko.luckperms.common.api.implementation.ApiMessagingService; import me.lucko.luckperms.common.api.implementation.ApiMetaStackFactory; import me.lucko.luckperms.common.api.implementation.ApiNodeBuilderRegistry; import me.lucko.luckperms.common.api.implementation.ApiPlatform; +import me.lucko.luckperms.common.api.implementation.ApiQueryOptionsRegistry; import me.lucko.luckperms.common.api.implementation.ApiTrackManager; import me.lucko.luckperms.common.api.implementation.ApiUserManager; import me.lucko.luckperms.common.config.ConfigKeys; @@ -50,6 +51,7 @@ import net.luckperms.api.model.user.UserManager; import net.luckperms.api.node.NodeBuilderRegistry; import net.luckperms.api.platform.Platform; import net.luckperms.api.platform.PluginMetadata; +import net.luckperms.api.query.QueryOptionsRegistry; import net.luckperms.api.track.TrackManager; import org.checkerframework.checker.nullness.qual.NonNull; @@ -151,6 +153,11 @@ public class LuckPermsApiProvider implements LuckPerms { return ApiNodeBuilderRegistry.INSTANCE; } + @Override + public @NonNull QueryOptionsRegistry getQueryOptionsRegistry() { + return ApiQueryOptionsRegistry.INSTANCE; + } + @Override public @NonNull MetaStackFactory getMetaStackFactory() { return this.metaStackFactory; diff --git a/common/src/main/java/me/lucko/luckperms/common/api/MinimalApiProvider.java b/common/src/main/java/me/lucko/luckperms/common/api/MinimalApiProvider.java deleted file mode 100644 index 2ec7c5e40..000000000 --- a/common/src/main/java/me/lucko/luckperms/common/api/MinimalApiProvider.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * This file is part of LuckPerms, licensed under the MIT License. - * - * Copyright (c) lucko (Luck) - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package me.lucko.luckperms.common.api; - -import me.lucko.luckperms.common.actionlog.LoggedAction; -import me.lucko.luckperms.common.api.implementation.ApiContextSetFactory; -import me.lucko.luckperms.common.api.implementation.ApiNodeBuilderRegistry; -import me.lucko.luckperms.common.query.QueryOptionsBuilderImpl; - -import net.luckperms.api.LuckPerms; -import net.luckperms.api.actionlog.Action; -import net.luckperms.api.actionlog.ActionLog; -import net.luckperms.api.actionlog.ActionLogger; -import net.luckperms.api.context.ContextCalculator; -import net.luckperms.api.context.ContextManager; -import net.luckperms.api.context.ContextSetFactory; -import net.luckperms.api.context.ImmutableContextSet; -import net.luckperms.api.event.EventBus; -import net.luckperms.api.messaging.MessagingService; -import net.luckperms.api.messenger.MessengerProvider; -import net.luckperms.api.metastacking.MetaStackFactory; -import net.luckperms.api.model.group.GroupManager; -import net.luckperms.api.model.user.User; -import net.luckperms.api.model.user.UserManager; -import net.luckperms.api.node.NodeBuilderRegistry; -import net.luckperms.api.platform.Platform; -import net.luckperms.api.platform.PluginMetadata; -import net.luckperms.api.query.QueryMode; -import net.luckperms.api.query.QueryOptions; -import net.luckperms.api.track.TrackManager; - -import org.checkerframework.checker.nullness.qual.NonNull; - -import java.util.Objects; -import java.util.Optional; -import java.util.concurrent.CompletableFuture; - -/** - * Implements the LuckPerms API using the plugin instance - */ -public class MinimalApiProvider implements LuckPerms { - public static final MinimalApiProvider INSTANCE = new MinimalApiProvider(); - - private MinimalApiProvider() { - - } - - private static UnsupportedOperationException exception() { - return new UnsupportedOperationException("API is not fully loaded yet - current implementation is minimal."); - } - - @Override - public @NonNull ActionLogger getActionLogger() { - return MinimalActionLogger.INSTANCE; - } - - @Override - public @NonNull ContextManager getContextManager() { - return MinimalContextManager.INSTANCE; - } - - @Override - public @NonNull NodeBuilderRegistry getNodeBuilderRegistry() { - return ApiNodeBuilderRegistry.INSTANCE; - } - - @Override public @NonNull String getServerName() { throw exception(); } - @Override public @NonNull UserManager getUserManager() { throw exception(); } - @Override public @NonNull GroupManager getGroupManager() { throw exception(); } - @Override public @NonNull TrackManager getTrackManager() { throw exception(); } - @Override public @NonNull Platform getPlatform() { throw exception(); } - @Override public @NonNull PluginMetadata getPluginMetadata() { throw exception(); } - @Override public @NonNull EventBus getEventBus() { throw exception(); } - @Override public @NonNull Optional getMessagingService() { throw exception(); } - @Override public @NonNull MetaStackFactory getMetaStackFactory() { throw exception(); } - @Override public @NonNull CompletableFuture runUpdateTask() { throw exception(); } - @Override public void registerMessengerProvider(@NonNull MessengerProvider messengerProvider) { throw exception(); } - - private static final class MinimalActionLogger implements ActionLogger { - private static final MinimalActionLogger INSTANCE = new MinimalActionLogger(); - - private MinimalActionLogger() { - - } - - @Override - public Action.@NonNull Builder actionBuilder() { - return LoggedAction.build(); - } - - @Override public @NonNull CompletableFuture getLog() { throw exception(); } - @Override public @NonNull CompletableFuture submit(@NonNull Action entry) { throw exception(); } - @Override public @NonNull CompletableFuture submitToStorage(@NonNull Action entry) { throw exception(); } - @Override public @NonNull CompletableFuture broadcastAction(@NonNull Action entry) { throw exception(); } - } - - private static final class MinimalContextManager implements ContextManager { - private static final MinimalContextManager INSTANCE = new MinimalContextManager(); - - private MinimalContextManager() { - - } - - @Override - public QueryOptions.@NonNull Builder queryOptionsBuilder(@NonNull QueryMode mode) { - Objects.requireNonNull(mode, "mode"); - return new QueryOptionsBuilderImpl(mode); - } - - @Override - public @NonNull ContextSetFactory getContextSetFactory() { - return ApiContextSetFactory.INSTANCE; - } - - @Override public @NonNull ImmutableContextSet getContext(@NonNull Object subject) { throw exception(); } - @Override public @NonNull Optional getContext(@NonNull User user) { throw exception(); } - @Override public @NonNull ImmutableContextSet getStaticContext() { throw exception(); } - @Override public @NonNull QueryOptions getQueryOptions(@NonNull Object subject) { throw exception(); } - @Override public @NonNull Optional getQueryOptions(@NonNull User user) { throw exception(); } - @Override public @NonNull QueryOptions getStaticQueryOptions() { throw exception(); } - @Override public void registerCalculator(@NonNull ContextCalculator calculator) { throw exception(); } - @Override public void unregisterCalculator(@NonNull ContextCalculator calculator) { throw exception(); } - @Override public void invalidateCache(@NonNull Object subject) { throw exception(); } - } - -} diff --git a/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiPermissionHolder.java b/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiPermissionHolder.java index ddb158328..b4282d094 100644 --- a/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiPermissionHolder.java +++ b/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiPermissionHolder.java @@ -26,6 +26,7 @@ package me.lucko.luckperms.common.api.implementation; import me.lucko.luckperms.common.model.PermissionHolder; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import net.luckperms.api.cacheddata.CachedDataManager; import net.luckperms.api.context.ContextSet; @@ -110,12 +111,12 @@ public class ApiPermissionHolder implements net.luckperms.api.model.PermissionHo @Override public @NonNull List getNodes() { - return this.handle.getOwnNodes(QueryOptions.nonContextual()); + return this.handle.getOwnNodes(QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL); } @Override public @NonNull SortedSet getDistinctNodes() { - return this.handle.getOwnNodesSorted(QueryOptions.nonContextual()); + return this.handle.getOwnNodesSorted(QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL); } @Override diff --git a/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiQueryOptionsRegistry.java b/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiQueryOptionsRegistry.java new file mode 100644 index 000000000..be41c9c6b --- /dev/null +++ b/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiQueryOptionsRegistry.java @@ -0,0 +1,51 @@ +/* + * This file is part of LuckPerms, licensed under the MIT License. + * + * Copyright (c) lucko (Luck) + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package me.lucko.luckperms.common.api.implementation; + +import me.lucko.luckperms.common.query.QueryOptionsImpl; + +import net.luckperms.api.query.QueryOptions; +import net.luckperms.api.query.QueryOptionsRegistry; + +import org.checkerframework.checker.nullness.qual.NonNull; + +public final class ApiQueryOptionsRegistry implements QueryOptionsRegistry { + public static final ApiQueryOptionsRegistry INSTANCE = new ApiQueryOptionsRegistry(); + + private ApiQueryOptionsRegistry() { + + } + + @Override + public @NonNull QueryOptions defaultContextualOptions() { + return QueryOptionsImpl.DEFAULT_CONTEXTUAL; + } + + @Override + public @NonNull QueryOptions defaultNonContextualOptions() { + return QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL; + } +} diff --git a/common/src/main/java/me/lucko/luckperms/common/bulkupdate/action/UpdateAction.java b/common/src/main/java/me/lucko/luckperms/common/bulkupdate/action/UpdateAction.java index 382c1e2b9..e9ecf9ce8 100644 --- a/common/src/main/java/me/lucko/luckperms/common/bulkupdate/action/UpdateAction.java +++ b/common/src/main/java/me/lucko/luckperms/common/bulkupdate/action/UpdateAction.java @@ -27,6 +27,7 @@ package me.lucko.luckperms.common.bulkupdate.action; import me.lucko.luckperms.common.bulkupdate.PreparedStatementBuilder; import me.lucko.luckperms.common.bulkupdate.query.QueryField; +import me.lucko.luckperms.common.node.factory.NodeBuilders; import net.luckperms.api.context.DefaultContextKeys; import net.luckperms.api.context.MutableContextSet; @@ -58,7 +59,7 @@ public class UpdateAction implements Action { public Node apply(Node from) { switch (this.field) { case PERMISSION: - return Node.builder(this.value) + return NodeBuilders.determineMostApplicable(this.value) .value(from.getValue()) .expiry(from.getExpiry()) .context(from.getContexts()) diff --git a/common/src/main/java/me/lucko/luckperms/common/command/access/ArgumentPermissions.java b/common/src/main/java/me/lucko/luckperms/common/command/access/ArgumentPermissions.java index 50d64a842..9843cc190 100644 --- a/common/src/main/java/me/lucko/luckperms/common/command/access/ArgumentPermissions.java +++ b/common/src/main/java/me/lucko/luckperms/common/command/access/ArgumentPermissions.java @@ -36,12 +36,12 @@ import me.lucko.luckperms.common.model.Track; import me.lucko.luckperms.common.model.User; import me.lucko.luckperms.common.node.types.Inheritance; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.sender.Sender; import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent; import net.luckperms.api.context.Context; import net.luckperms.api.context.ContextSet; -import net.luckperms.api.query.QueryOptions; import net.luckperms.api.util.Tristate; import java.util.function.BiFunction; @@ -304,7 +304,7 @@ public final class ArgumentPermissions { throw new IllegalStateException("Unable to get a User for " + sender.getUniqueId() + " - " + sender.getName()); } - PermissionCache permissionData = user.getCachedData().getPermissionData(QueryOptions.defaultContextualOptions().toBuilder().context(contextSet).build()); + PermissionCache permissionData = user.getCachedData().getPermissionData(QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder().context(contextSet).build()); TristateResult result = permissionData.checkPermission(Inheritance.key(targetGroupName), PermissionCheckEvent.Origin.INTERNAL); return result.result() != Tristate.TRUE || result.processorClass() != MapProcessor.class; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaInfo.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaInfo.java index ee9fe408f..a45f2a736 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaInfo.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaInfo.java @@ -41,6 +41,7 @@ import me.lucko.luckperms.common.model.PermissionHolder; import me.lucko.luckperms.common.node.comparator.NodeWithContextComparator; import me.lucko.luckperms.common.node.factory.NodeCommandFactory; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.sender.Sender; import me.lucko.luckperms.common.util.Predicates; import me.lucko.luckperms.common.util.TextUtils; @@ -56,7 +57,6 @@ import net.luckperms.api.node.types.ChatMetaNode; import net.luckperms.api.node.types.MetaNode; import net.luckperms.api.node.types.PrefixNode; import net.luckperms.api.node.types.SuffixNode; -import net.luckperms.api.query.QueryOptions; import java.util.Comparator; import java.util.LinkedHashSet; @@ -89,7 +89,7 @@ public class MetaInfo extends GenericChildCommand { Set meta = new LinkedHashSet<>(); // Collect data - for (Node node : holder.resolveInheritedNodes(QueryOptions.nonContextual())) { + for (Node node : holder.resolveInheritedNodes(QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL)) { if (!NodeType.META_OR_CHAT_META.matches(node)) { continue; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetChatMeta.java index 83b5e3ac9..cef57b66a 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetChatMeta.java @@ -43,6 +43,7 @@ import me.lucko.luckperms.common.locale.message.Message; import me.lucko.luckperms.common.model.Group; import me.lucko.luckperms.common.model.PermissionHolder; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.sender.Sender; import me.lucko.luckperms.common.util.Predicates; import me.lucko.luckperms.common.util.TextUtils; @@ -53,7 +54,6 @@ import net.luckperms.api.context.MutableContextSet; import net.luckperms.api.model.data.DataMutateResult; import net.luckperms.api.model.data.DataType; import net.luckperms.api.node.ChatMetaType; -import net.luckperms.api.query.QueryOptions; import java.util.List; import java.util.OptionalInt; @@ -109,7 +109,7 @@ public class MetaSetChatMeta extends GenericChildCommand { // determine the priority to set at if (priority == Integer.MIN_VALUE) { - MetaAccumulator metaAccumulator = holder.accumulateMeta(null, QueryOptions.defaultContextualOptions().toBuilder().context(context).build()); + MetaAccumulator metaAccumulator = holder.accumulateMeta(null, QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder().context(context).build()); metaAccumulator.complete(); priority = metaAccumulator.getChatMeta(this.type).keySet().stream().mapToInt(e -> e).max().orElse(0) + 1; diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTempChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTempChatMeta.java index 5b785c234..ab6efda39 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTempChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTempChatMeta.java @@ -44,6 +44,7 @@ import me.lucko.luckperms.common.locale.message.Message; import me.lucko.luckperms.common.model.Group; import me.lucko.luckperms.common.model.PermissionHolder; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.sender.Sender; import me.lucko.luckperms.common.util.DurationFormatter; import me.lucko.luckperms.common.util.Predicates; @@ -56,7 +57,6 @@ import net.luckperms.api.model.data.DataMutateResult; import net.luckperms.api.model.data.DataType; import net.luckperms.api.model.data.TemporaryNodeMergeStrategy; import net.luckperms.api.node.ChatMetaType; -import net.luckperms.api.query.QueryOptions; import java.time.Duration; import java.util.List; @@ -119,7 +119,7 @@ public class MetaSetTempChatMeta extends GenericChildCommand { // determine the priority to set at if (priority == Integer.MIN_VALUE) { - MetaAccumulator metaAccumulator = holder.accumulateMeta(null, QueryOptions.defaultContextualOptions().toBuilder().context(context).build()); + MetaAccumulator metaAccumulator = holder.accumulateMeta(null, QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder().context(context).build()); metaAccumulator.complete(); priority = metaAccumulator.getChatMeta(this.type).keySet().stream().mapToInt(e -> e).max().orElse(0) + 1; diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentInfo.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentInfo.java index 5e6ce483d..47f7f57fb 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentInfo.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentInfo.java @@ -41,6 +41,7 @@ import me.lucko.luckperms.common.model.PermissionHolder; import me.lucko.luckperms.common.node.comparator.NodeWithContextComparator; import me.lucko.luckperms.common.node.factory.NodeCommandFactory; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.sender.Sender; import me.lucko.luckperms.common.util.DurationFormatter; import me.lucko.luckperms.common.util.Iterators; @@ -52,7 +53,6 @@ import net.kyori.text.TextComponent; import net.kyori.text.event.ClickEvent; import net.kyori.text.event.HoverEvent; import net.luckperms.api.node.types.InheritanceNode; -import net.luckperms.api.query.QueryOptions; import java.util.Collections; import java.util.Comparator; @@ -77,7 +77,7 @@ public class ParentInfo extends GenericChildCommand { // get the holders nodes List nodes = new LinkedList<>(); - holder.normalData().copyInheritanceNodesTo(nodes, QueryOptions.nonContextual()); + holder.normalData().copyInheritanceNodesTo(nodes, QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL); // remove irrelevant types (these are displayed in the other info commands) nodes.removeIf(node -> !node.getValue()); 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 a87d65ea8..e27fbbbda 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 @@ -39,13 +39,13 @@ import me.lucko.luckperms.common.locale.command.CommandSpec; import me.lucko.luckperms.common.locale.message.Message; import me.lucko.luckperms.common.model.PermissionHolder; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.sender.Sender; import me.lucko.luckperms.common.util.Predicates; import net.luckperms.api.context.MutableContextSet; import net.luckperms.api.node.Node; import net.luckperms.api.node.metadata.types.InheritanceOriginMetadata; -import net.luckperms.api.query.QueryOptions; import net.luckperms.api.util.Tristate; import java.util.List; @@ -66,7 +66,7 @@ public class PermissionCheckInherits extends GenericChildCommand { String node = ArgumentParser.parseString(0, args); MutableContextSet context = ArgumentParser.parseContext(1, args, plugin); - Optional match = holder.resolveInheritedNodes(QueryOptions.nonContextual()).stream() + Optional match = holder.resolveInheritedNodes(QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL).stream() .filter(n -> n.getKey().equalsIgnoreCase(node) && n.getContexts().equals(context)) .findFirst(); diff --git a/common/src/main/java/me/lucko/luckperms/common/config/ConfigKeys.java b/common/src/main/java/me/lucko/luckperms/common/config/ConfigKeys.java index 420702b57..fbb342f24 100644 --- a/common/src/main/java/me/lucko/luckperms/common/config/ConfigKeys.java +++ b/common/src/main/java/me/lucko/luckperms/common/config/ConfigKeys.java @@ -28,12 +28,12 @@ package me.lucko.luckperms.common.config; import com.google.common.collect.ImmutableMap; import me.lucko.luckperms.common.command.utils.ArgumentParser; -import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl; import me.lucko.luckperms.common.graph.TraversalAlgorithm; import me.lucko.luckperms.common.metastacking.SimpleMetaStackDefinition; import me.lucko.luckperms.common.metastacking.StandardStackElements; import me.lucko.luckperms.common.model.PrimaryGroupHolder; import me.lucko.luckperms.common.model.User; +import me.lucko.luckperms.common.query.QueryOptionsBuilderImpl; import me.lucko.luckperms.common.storage.StorageType; import me.lucko.luckperms.common.storage.implementation.split.SplitStorageType; import me.lucko.luckperms.common.storage.misc.StorageCredentials; @@ -43,6 +43,7 @@ import net.luckperms.api.metastacking.DuplicateRemovalFunction; import net.luckperms.api.metastacking.MetaStackDefinition; import net.luckperms.api.model.data.TemporaryNodeMergeStrategy; import net.luckperms.api.query.Flag; +import net.luckperms.api.query.QueryMode; import net.luckperms.api.query.QueryOptions; import java.lang.reflect.Field; @@ -105,7 +106,8 @@ public final class ConfigKeys { if (c.getBoolean("apply-global-world-groups", true)) { flags.add(Flag.APPLY_INHERITANCE_NODES_WITHOUT_WORLD_CONTEXT); } - return QueryOptions.contextual(ImmutableContextSetImpl.EMPTY, flags); + + return new QueryOptionsBuilderImpl(QueryMode.CONTEXTUAL).flags(flags).build(); }); /** diff --git a/common/src/main/java/me/lucko/luckperms/common/context/ContextManager.java b/common/src/main/java/me/lucko/luckperms/common/context/ContextManager.java index 3e423673d..508dfe05c 100644 --- a/common/src/main/java/me/lucko/luckperms/common/context/ContextManager.java +++ b/common/src/main/java/me/lucko/luckperms/common/context/ContextManager.java @@ -137,7 +137,7 @@ public abstract class ContextManager { } public ImmutableContextSet getPotentialContexts() { - ImmutableContextSet.Builder builder = ImmutableContextSet.builder(); + ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl(); for (ContextCalculator calculator : this.calculators) { ContextSet potentialContexts; try { diff --git a/common/src/main/java/me/lucko/luckperms/common/context/LPStaticContextsCalculator.java b/common/src/main/java/me/lucko/luckperms/common/context/LPStaticContextsCalculator.java index 47018b282..b6c37eb15 100644 --- a/common/src/main/java/me/lucko/luckperms/common/context/LPStaticContextsCalculator.java +++ b/common/src/main/java/me/lucko/luckperms/common/context/LPStaticContextsCalculator.java @@ -27,6 +27,7 @@ package me.lucko.luckperms.common.context; import me.lucko.luckperms.common.config.ConfigKeys; import me.lucko.luckperms.common.config.LuckPermsConfiguration; +import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl; import net.luckperms.api.context.ContextConsumer; import net.luckperms.api.context.ContextSet; @@ -54,7 +55,7 @@ public class LPStaticContextsCalculator implements StaticContextCalculator { @Override public ContextSet estimatePotentialContexts() { - ImmutableContextSet.Builder builder = ImmutableContextSet.builder(); + ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl(); calculate(builder::add); return builder.build(); } diff --git a/common/src/main/java/me/lucko/luckperms/common/inheritance/InheritanceHandler.java b/common/src/main/java/me/lucko/luckperms/common/inheritance/InheritanceHandler.java index 0e340f225..6f6f08178 100644 --- a/common/src/main/java/me/lucko/luckperms/common/inheritance/InheritanceHandler.java +++ b/common/src/main/java/me/lucko/luckperms/common/inheritance/InheritanceHandler.java @@ -26,6 +26,7 @@ package me.lucko.luckperms.common.inheritance; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import net.luckperms.api.query.QueryOptions; @@ -40,14 +41,14 @@ public class InheritanceHandler { public InheritanceHandler(LuckPermsPlugin plugin) { this.plugin = plugin; - this.nonContextualGraph = new InheritanceGraph(plugin, QueryOptions.nonContextual()); - this.defaultContextualGraph = new InheritanceGraph(plugin, QueryOptions.defaultContextualOptions()); + this.nonContextualGraph = new InheritanceGraph(plugin, QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL); + this.defaultContextualGraph = new InheritanceGraph(plugin, QueryOptionsImpl.DEFAULT_CONTEXTUAL); } public InheritanceGraph getGraph(QueryOptions queryOptions) { - if (queryOptions == QueryOptions.nonContextual()) { + if (queryOptions == QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL) { return this.nonContextualGraph; - } else if (queryOptions == QueryOptions.defaultContextualOptions()) { + } else if (queryOptions == QueryOptionsImpl.DEFAULT_CONTEXTUAL) { return this.defaultContextualGraph; } else { return new InheritanceGraph(this.plugin, queryOptions); diff --git a/common/src/main/java/me/lucko/luckperms/common/model/NodeMap.java b/common/src/main/java/me/lucko/luckperms/common/model/NodeMap.java index 0c4c1ff2f..2e82b8ba4 100644 --- a/common/src/main/java/me/lucko/luckperms/common/model/NodeMap.java +++ b/common/src/main/java/me/lucko/luckperms/common/model/NodeMap.java @@ -35,6 +35,7 @@ import me.lucko.luckperms.common.context.ContextSetComparator; import me.lucko.luckperms.common.node.comparator.NodeComparator; import me.lucko.luckperms.common.node.comparator.NodeWithContextComparator; import me.lucko.luckperms.common.node.model.InheritanceOrigin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import net.luckperms.api.context.ContextSet; import net.luckperms.api.context.DefaultContextKeys; @@ -113,25 +114,25 @@ public final class NodeMap { public LinkedHashSet asSet() { LinkedHashSet set = new LinkedHashSet<>(); - copyTo(set, QueryOptions.nonContextual()); + copyTo(set, QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL); return set; } public SortedSet asSortedSet() { SortedSet set = new TreeSet<>(NodeWithContextComparator.reverse()); - copyTo(set, QueryOptions.nonContextual()); + copyTo(set, QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL); return set; } public LinkedHashSet inheritanceAsSet() { LinkedHashSet set = new LinkedHashSet<>(); - copyInheritanceNodesTo(set, QueryOptions.nonContextual()); + copyInheritanceNodesTo(set, QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL); return set; } public SortedSet inheritanceAsSortedSet() { SortedSet set = new TreeSet<>(NodeWithContextComparator.reverse()); - copyInheritanceNodesTo(set, QueryOptions.nonContextual()); + copyInheritanceNodesTo(set, QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL); return set; } diff --git a/common/src/main/java/me/lucko/luckperms/common/model/WeightCache.java b/common/src/main/java/me/lucko/luckperms/common/model/WeightCache.java index 575d26734..420904b96 100644 --- a/common/src/main/java/me/lucko/luckperms/common/model/WeightCache.java +++ b/common/src/main/java/me/lucko/luckperms/common/model/WeightCache.java @@ -27,10 +27,10 @@ package me.lucko.luckperms.common.model; import me.lucko.luckperms.common.cache.Cache; import me.lucko.luckperms.common.config.ConfigKeys; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import net.luckperms.api.node.Node; import net.luckperms.api.node.types.WeightNode; -import net.luckperms.api.query.QueryOptions; import org.checkerframework.checker.nullness.qual.NonNull; @@ -51,7 +51,7 @@ public class WeightCache extends Cache { protected @NonNull OptionalInt supply() { boolean seen = false; int best = 0; - for (Node n : this.group.getOwnNodes(QueryOptions.nonContextual())) { + for (Node n : this.group.getOwnNodes(QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL)) { if (n instanceof WeightNode) { WeightNode weightNode = (WeightNode) n; int value = weightNode.getWeight(); diff --git a/common/src/main/java/me/lucko/luckperms/common/node/AbstractNodeBuilder.java b/common/src/main/java/me/lucko/luckperms/common/node/AbstractNodeBuilder.java index 004c5310f..8ae2f63df 100644 --- a/common/src/main/java/me/lucko/luckperms/common/node/AbstractNodeBuilder.java +++ b/common/src/main/java/me/lucko/luckperms/common/node/AbstractNodeBuilder.java @@ -62,7 +62,7 @@ public abstract class AbstractNodeBuilder, B extends } protected AbstractNodeBuilder() { - this(true, 0L, ImmutableContextSet.empty(), Collections.emptyMap()); + this(true, 0L, ImmutableContextSetImpl.EMPTY, Collections.emptyMap()); } @Override 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 9ee6b2115..f3ba80213 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 @@ -28,7 +28,6 @@ package me.lucko.luckperms.common.plugin; import me.lucko.luckperms.common.actionlog.LogDispatcher; import me.lucko.luckperms.common.api.ApiRegistrationUtil; import me.lucko.luckperms.common.api.LuckPermsApiProvider; -import me.lucko.luckperms.common.api.MinimalApiProvider; import me.lucko.luckperms.common.calculator.CalculatorFactory; import me.lucko.luckperms.common.config.AbstractConfiguration; import me.lucko.luckperms.common.config.ConfigKeys; @@ -106,9 +105,6 @@ public abstract class AbstractLuckPermsPlugin implements LuckPermsPlugin { // send the startup banner displayBanner(getConsoleSender()); - // minimal api - ApiRegistrationUtil.registerProvider(MinimalApiProvider.INSTANCE); - // load some utilities early this.verboseHandler = new VerboseHandler(getBootstrap().getScheduler()); this.permissionRegistry = new PermissionRegistry(getBootstrap().getScheduler()); diff --git a/api/src/main/java/net/luckperms/api/query/DefaultQueryOptions.java b/common/src/main/java/me/lucko/luckperms/common/query/DefaultQueryOptions.java similarity index 74% rename from api/src/main/java/net/luckperms/api/query/DefaultQueryOptions.java rename to common/src/main/java/me/lucko/luckperms/common/query/DefaultQueryOptions.java index 09c2f5ccd..1a830c940 100644 --- a/api/src/main/java/net/luckperms/api/query/DefaultQueryOptions.java +++ b/common/src/main/java/me/lucko/luckperms/common/query/DefaultQueryOptions.java @@ -23,7 +23,9 @@ * SOFTWARE. */ -package net.luckperms.api.query; +package me.lucko.luckperms.common.query; + +import net.luckperms.api.query.QueryOptions; /** * Some default {@link QueryOptions} instances. @@ -33,27 +35,12 @@ final class DefaultQueryOptions { throw new AssertionError(); } - private static boolean setup = false; - private static QueryOptions contextual; - private static QueryOptions nonContextual; - - private static void setup() { - if (setup) { - return; - } - setup = true; - contextual = QueryOptions.builder(QueryMode.CONTEXTUAL).build(); - nonContextual = QueryOptions.builder(QueryMode.NON_CONTEXTUAL).build(); - } - static QueryOptions contextual() { - setup(); - return contextual; + return QueryOptionsImpl.DEFAULT_CONTEXTUAL; } static QueryOptions nonContextual() { - setup(); - return nonContextual; + return QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL; } } diff --git a/common/src/main/java/me/lucko/luckperms/common/query/QueryOptionsBuilderImpl.java b/common/src/main/java/me/lucko/luckperms/common/query/QueryOptionsBuilderImpl.java index 2f0eebc8d..8734b44a0 100644 --- a/common/src/main/java/me/lucko/luckperms/common/query/QueryOptionsBuilderImpl.java +++ b/common/src/main/java/me/lucko/luckperms/common/query/QueryOptionsBuilderImpl.java @@ -150,20 +150,16 @@ public class QueryOptionsBuilderImpl implements QueryOptions.Builder { if (this.options == null) { if (this.mode == QueryMode.NON_CONTEXTUAL) { - QueryOptionsImpl defaults = (QueryOptionsImpl) QueryOptions.nonContextual(); - //noinspection ConstantConditions - if (defaults != null && defaults.getFlagsByte() == flags) { + if (FlagUtils.DEFAULT_FLAGS == flags) { // mode same, contexts null, flags same, options null // so therefore, equal to default - return that instead! - return defaults; + return QueryOptionsImpl.DEFAULT_NON_CONTEXTUAL; } } else if (this.mode == QueryMode.CONTEXTUAL) { - QueryOptionsImpl defaults = (QueryOptionsImpl) QueryOptions.defaultContextualOptions(); - //noinspection ConstantConditions - if (defaults != null && defaults.getFlagsByte() == flags && this.context.isEmpty()) { + if (FlagUtils.DEFAULT_FLAGS == flags && this.context.isEmpty()) { // mode same, contexts empty, flags same, options null // so therefore, equal to default - return that instead! - return defaults; + return QueryOptionsImpl.DEFAULT_CONTEXTUAL; } } } diff --git a/common/src/main/java/me/lucko/luckperms/common/query/QueryOptionsImpl.java b/common/src/main/java/me/lucko/luckperms/common/query/QueryOptionsImpl.java index f0041d5e0..efaef3203 100644 --- a/common/src/main/java/me/lucko/luckperms/common/query/QueryOptionsImpl.java +++ b/common/src/main/java/me/lucko/luckperms/common/query/QueryOptionsImpl.java @@ -28,6 +28,8 @@ package me.lucko.luckperms.common.query; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl; + import net.luckperms.api.context.ContextSet; import net.luckperms.api.context.ImmutableContextSet; import net.luckperms.api.query.Flag; @@ -44,6 +46,9 @@ import java.util.Optional; import java.util.Set; public class QueryOptionsImpl implements QueryOptions { + public static final QueryOptions DEFAULT_CONTEXTUAL = new QueryOptionsImpl(QueryMode.CONTEXTUAL, ImmutableContextSetImpl.EMPTY, FlagUtils.DEFAULT_FLAGS, null); + public static final QueryOptions DEFAULT_NON_CONTEXTUAL = new QueryOptionsImpl(QueryMode.NON_CONTEXTUAL, null, FlagUtils.DEFAULT_FLAGS, null); + private final QueryMode mode; private final ImmutableContextSet context; private final byte flags; @@ -60,10 +65,6 @@ public class QueryOptionsImpl implements QueryOptions { this.hashCode = calculateHashCode(); } - byte getFlagsByte() { - return this.flags; - } - @Override public @NonNull QueryMode mode() { return this.mode; diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/context/WorldCalculator.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/context/WorldCalculator.java index 18c0b4593..6e8ab6015 100644 --- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/context/WorldCalculator.java +++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/context/WorldCalculator.java @@ -26,6 +26,7 @@ package me.lucko.luckperms.nukkit.context; import me.lucko.luckperms.common.config.ConfigKeys; +import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl; import me.lucko.luckperms.nukkit.LPNukkitPlugin; import net.luckperms.api.context.ContextCalculator; @@ -63,7 +64,7 @@ public class WorldCalculator implements ContextCalculator { @Override public ContextSet estimatePotentialContexts() { Collection worlds = this.plugin.getBootstrap().getServer().getLevels().values(); - ImmutableContextSet.Builder builder = ImmutableContextSet.builder(); + ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl(); for (Level world : worlds) { builder.add(DefaultContextKeys.WORLD_KEY, world.getName().toLowerCase()); } diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/MonitoredPermissibleBase.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/MonitoredPermissibleBase.java index c8e2b4676..e1efb3b02 100644 --- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/MonitoredPermissibleBase.java +++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/MonitoredPermissibleBase.java @@ -27,11 +27,11 @@ package me.lucko.luckperms.nukkit.inject.permissible; import me.lucko.luckperms.common.calculator.result.TristateResult; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.verbose.VerboseHandler; import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent; import me.lucko.luckperms.nukkit.inject.dummy.DummyPermissibleBase; -import net.luckperms.api.query.QueryOptions; import net.luckperms.api.util.Tristate; import cn.nukkit.permission.PermissibleBase; @@ -69,7 +69,7 @@ public class MonitoredPermissibleBase extends PermissibleBase { } private void logCheck(PermissionCheckEvent.Origin origin, String permission, boolean result) { - this.plugin.getVerboseHandler().offerPermissionCheckEvent(origin, this.name, QueryOptions.defaultContextualOptions(), permission, TristateResult.of(Tristate.of(result))); + this.plugin.getVerboseHandler().offerPermissionCheckEvent(origin, this.name, QueryOptionsImpl.DEFAULT_CONTEXTUAL, permission, TristateResult.of(Tristate.of(result))); this.plugin.getPermissionRegistry().offer(permission); } diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/context/WorldCalculator.java b/sponge/src/main/java/me/lucko/luckperms/sponge/context/WorldCalculator.java index fb580cdb9..d1024becb 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/context/WorldCalculator.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/context/WorldCalculator.java @@ -26,6 +26,7 @@ package me.lucko.luckperms.sponge.context; import me.lucko.luckperms.common.config.ConfigKeys; +import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl; import me.lucko.luckperms.sponge.LPSpongePlugin; import net.luckperms.api.context.ContextCalculator; @@ -73,11 +74,11 @@ public class WorldCalculator implements ContextCalculator { public ContextSet estimatePotentialContexts() { Game game = this.plugin.getBootstrap().getGame(); if (!game.isServerAvailable()) { - return ImmutableContextSet.empty(); + return ImmutableContextSetImpl.EMPTY; } Collection worlds = game.getServer().getWorlds(); - ImmutableContextSet.Builder builder = ImmutableContextSet.builder(); + ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl(); for (World world : worlds) { builder.add(DefaultContextKeys.WORLD_KEY, world.getName().toLowerCase()); } diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/calculated/CalculatedSubject.java b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/calculated/CalculatedSubject.java index 612ceedf5..9e11e008e 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/calculated/CalculatedSubject.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/calculated/CalculatedSubject.java @@ -29,6 +29,7 @@ import com.google.common.collect.ImmutableList; import me.lucko.luckperms.common.cacheddata.type.MetaAccumulator; import me.lucko.luckperms.common.graph.TraversalAlgorithm; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.verbose.event.MetaCheckEvent; import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent; import me.lucko.luckperms.sponge.LPSpongePlugin; @@ -184,22 +185,22 @@ public abstract class CalculatedSubject implements LPSubject { @Override public Tristate getPermissionValue(ImmutableContextSet contexts, String permission) { - return getPermissionValue(QueryOptions.defaultContextualOptions().toBuilder().context(contexts).build(), permission); + return getPermissionValue(QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder().context(contexts).build(), permission); } @Override public boolean isChildOf(ImmutableContextSet contexts, LPSubjectReference parent) { - return resolveAllParents(QueryOptions.defaultContextualOptions().toBuilder().context(contexts).build()).contains(parent); + return resolveAllParents(QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder().context(contexts).build()).contains(parent); } @Override public ImmutableList getParents(ImmutableContextSet contexts) { - return ImmutableList.copyOf(resolveAllParents(QueryOptions.defaultContextualOptions().toBuilder().context(contexts).build())); + return ImmutableList.copyOf(resolveAllParents(QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder().context(contexts).build())); } @Override public Optional getOption(ImmutableContextSet contexts, String key) { - return Optional.ofNullable(this.cachedData.getMetaData(QueryOptions.defaultContextualOptions().toBuilder().context(contexts).build()).getMetaValue(key, MetaCheckEvent.Origin.PLATFORM_API)); + return Optional.ofNullable(this.cachedData.getMetaData(QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder().context(contexts).build()).getMetaValue(key, MetaCheckEvent.Origin.PLATFORM_API)); } @Override diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/PermissionHolderSubjectData.java b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/PermissionHolderSubjectData.java index ffd9540d7..e79ae1fb0 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/PermissionHolderSubjectData.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/PermissionHolderSubjectData.java @@ -38,6 +38,7 @@ import me.lucko.luckperms.common.node.types.Inheritance; import me.lucko.luckperms.common.node.types.Meta; import me.lucko.luckperms.common.node.types.Prefix; import me.lucko.luckperms.common.node.types.Suffix; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.sponge.service.LuckPermsService; import me.lucko.luckperms.sponge.service.ProxyFactory; import me.lucko.luckperms.sponge.service.model.LPSubject; @@ -53,7 +54,6 @@ import net.luckperms.api.node.types.InheritanceNode; import net.luckperms.api.node.types.MetaNode; import net.luckperms.api.node.types.PrefixNode; import net.luckperms.api.node.types.SuffixNode; -import net.luckperms.api.query.QueryOptions; import net.luckperms.api.util.Tristate; import org.spongepowered.api.service.permission.PermissionService; @@ -302,7 +302,7 @@ public class PermissionHolderSubjectData implements LPSubjectData { // remove all prefixes/suffixes from the user this.holder.removeIf(this.type, contexts, type.nodeType()::matches, false); - MetaAccumulator metaAccumulator = this.holder.accumulateMeta(null, QueryOptions.defaultContextualOptions().toBuilder().context(contexts).build()); + MetaAccumulator metaAccumulator = this.holder.accumulateMeta(null, QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder().context(contexts).build()); metaAccumulator.complete(); int priority = metaAccumulator.getChatMeta(type).keySet().stream().mapToInt(e -> e).max().orElse(0); priority += 10; diff --git a/velocity/src/main/java/me/lucko/luckperms/velocity/context/BackendServerCalculator.java b/velocity/src/main/java/me/lucko/luckperms/velocity/context/BackendServerCalculator.java index f22ff516b..b8de93774 100644 --- a/velocity/src/main/java/me/lucko/luckperms/velocity/context/BackendServerCalculator.java +++ b/velocity/src/main/java/me/lucko/luckperms/velocity/context/BackendServerCalculator.java @@ -29,6 +29,7 @@ import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.server.RegisteredServer; import me.lucko.luckperms.common.config.ConfigKeys; +import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl; import me.lucko.luckperms.velocity.LPVelocityPlugin; import net.luckperms.api.context.ContextCalculator; @@ -68,7 +69,7 @@ public class BackendServerCalculator implements ContextCalculator { @Override public ContextSet estimatePotentialContexts() { Collection servers = this.plugin.getBootstrap().getProxy().getAllServers(); - ImmutableContextSet.Builder builder = ImmutableContextSet.builder(); + ImmutableContextSet.Builder builder = new ImmutableContextSetImpl.BuilderImpl(); for (RegisteredServer server : servers) { builder.add(DefaultContextKeys.WORLD_KEY, server.getServerInfo().getName().toLowerCase()); } diff --git a/velocity/src/main/java/me/lucko/luckperms/velocity/listeners/MonitoringPermissionCheckListener.java b/velocity/src/main/java/me/lucko/luckperms/velocity/listeners/MonitoringPermissionCheckListener.java index eb8e92e8f..44bed168b 100644 --- a/velocity/src/main/java/me/lucko/luckperms/velocity/listeners/MonitoringPermissionCheckListener.java +++ b/velocity/src/main/java/me/lucko/luckperms/velocity/listeners/MonitoringPermissionCheckListener.java @@ -34,11 +34,11 @@ import com.velocitypowered.api.permission.PermissionSubject; import com.velocitypowered.api.proxy.Player; import me.lucko.luckperms.common.calculator.result.TristateResult; +import me.lucko.luckperms.common.query.QueryOptionsImpl; import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent; import me.lucko.luckperms.velocity.LPVelocityPlugin; import me.lucko.luckperms.velocity.service.CompatibilityUtil; -import net.luckperms.api.query.QueryOptions; import net.luckperms.api.util.Tristate; import org.checkerframework.checker.nullness.qual.NonNull; @@ -90,7 +90,7 @@ public class MonitoringPermissionCheckListener { // report result Tristate result = CompatibilityUtil.convertTristate(setting); - MonitoringPermissionCheckListener.this.plugin.getVerboseHandler().offerPermissionCheckEvent(PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK, this.name, QueryOptions.defaultContextualOptions(), permission, TristateResult.of(result)); + MonitoringPermissionCheckListener.this.plugin.getVerboseHandler().offerPermissionCheckEvent(PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK, this.name, QueryOptionsImpl.DEFAULT_CONTEXTUAL, permission, TristateResult.of(result)); MonitoringPermissionCheckListener.this.plugin.getPermissionRegistry().offer(permission); return setting;