diff --git a/api/src/main/java/net/luckperms/api/node/matcher/NodeMatcher.java b/api/src/main/java/net/luckperms/api/node/matcher/NodeMatcher.java index e15491725..f735fec8c 100644 --- a/api/src/main/java/net/luckperms/api/node/matcher/NodeMatcher.java +++ b/api/src/main/java/net/luckperms/api/node/matcher/NodeMatcher.java @@ -25,7 +25,6 @@ package net.luckperms.api.node.matcher; -import net.luckperms.api.LuckPerms; import net.luckperms.api.LuckPermsProvider; import net.luckperms.api.node.Node; import net.luckperms.api.node.NodeEqualityPredicate; diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/calculator/BukkitCalculatorFactory.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/calculator/BukkitCalculatorFactory.java index 958caf0c1..c3f8de994 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/calculator/BukkitCalculatorFactory.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/calculator/BukkitCalculatorFactory.java @@ -35,6 +35,7 @@ import me.lucko.luckperms.common.calculator.PermissionCalculator; import me.lucko.luckperms.common.calculator.processor.MapProcessor; import me.lucko.luckperms.common.calculator.processor.PermissionProcessor; import me.lucko.luckperms.common.calculator.processor.RegexProcessor; +import me.lucko.luckperms.common.calculator.processor.SpongeWildcardProcessor; import me.lucko.luckperms.common.calculator.processor.WildcardProcessor; import me.lucko.luckperms.common.config.ConfigKeys; import me.lucko.luckperms.common.model.HolderType; @@ -66,6 +67,10 @@ public class BukkitCalculatorFactory implements CalculatorFactory { processors.add(new WildcardProcessor()); } + if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_WILDCARDS_SPONGE)) { + processors.add(new SpongeWildcardProcessor()); + } + boolean op = queryOptions.option(BukkitContextManager.OP_OPTION).orElse(false); if (metadata.getHolderType() == HolderType.USER && this.plugin.getConfiguration().get(ConfigKeys.APPLY_BUKKIT_DEFAULT_PERMISSIONS)) { processors.add(new DefaultsProcessor(this.plugin, op)); diff --git a/bukkit/src/main/resources/config.yml b/bukkit/src/main/resources/config.yml index ac8acb884..737e72c71 100644 --- a/bukkit/src/main/resources/config.yml +++ b/bukkit/src/main/resources/config.yml @@ -444,6 +444,14 @@ meta-value-selection: # permissions matching the wildcard. apply-wildcards: true +# If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard +# inheritance system. +# +# - That being: If a user has been granted "example", then the player should have also be +# automatically granted "example.function", "example.another", "example.deeper.nesting", +# and so on. +apply-sponge-implicit-wildcards: false + # If the plugin should parse regex permissions. # # - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the diff --git a/bungee/src/main/java/me/lucko/luckperms/bungee/calculator/BungeeCalculatorFactory.java b/bungee/src/main/java/me/lucko/luckperms/bungee/calculator/BungeeCalculatorFactory.java index 3078332f6..c961dcfb9 100644 --- a/bungee/src/main/java/me/lucko/luckperms/bungee/calculator/BungeeCalculatorFactory.java +++ b/bungee/src/main/java/me/lucko/luckperms/bungee/calculator/BungeeCalculatorFactory.java @@ -34,6 +34,7 @@ import me.lucko.luckperms.common.calculator.PermissionCalculator; import me.lucko.luckperms.common.calculator.processor.MapProcessor; import me.lucko.luckperms.common.calculator.processor.PermissionProcessor; import me.lucko.luckperms.common.calculator.processor.RegexProcessor; +import me.lucko.luckperms.common.calculator.processor.SpongeWildcardProcessor; import me.lucko.luckperms.common.calculator.processor.WildcardProcessor; import me.lucko.luckperms.common.config.ConfigKeys; @@ -60,6 +61,10 @@ public class BungeeCalculatorFactory implements CalculatorFactory { processors.add(new WildcardProcessor()); } + if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_WILDCARDS_SPONGE)) { + processors.add(new SpongeWildcardProcessor()); + } + return new PermissionCalculator(this.plugin, metadata, processors.build()); } } diff --git a/bungee/src/main/resources/config.yml b/bungee/src/main/resources/config.yml index 0248fa7ec..1588c0fa4 100644 --- a/bungee/src/main/resources/config.yml +++ b/bungee/src/main/resources/config.yml @@ -452,6 +452,14 @@ meta-value-selection: # permissions matching the wildcard. apply-wildcards: true +# If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard +# inheritance system. +# +# - That being: If a user has been granted "example", then the player should have also be +# automatically granted "example.function", "example.another", "example.deeper.nesting", +# and so on. +apply-sponge-implicit-wildcards: false + # If the plugin should parse regex permissions. # # - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/calculator/SpongeWildcardProcessor.java b/common/src/main/java/me/lucko/luckperms/common/calculator/processor/SpongeWildcardProcessor.java similarity index 91% rename from sponge/src/main/java/me/lucko/luckperms/sponge/calculator/SpongeWildcardProcessor.java rename to common/src/main/java/me/lucko/luckperms/common/calculator/processor/SpongeWildcardProcessor.java index c31fb3297..382f29611 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/calculator/SpongeWildcardProcessor.java +++ b/common/src/main/java/me/lucko/luckperms/common/calculator/processor/SpongeWildcardProcessor.java @@ -23,10 +23,8 @@ * SOFTWARE. */ -package me.lucko.luckperms.sponge.calculator; +package me.lucko.luckperms.common.calculator.processor; -import me.lucko.luckperms.common.calculator.processor.AbstractPermissionProcessor; -import me.lucko.luckperms.common.calculator.processor.PermissionProcessor; import me.lucko.luckperms.common.calculator.result.TristateResult; import me.lucko.luckperms.common.node.AbstractNode; 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 334bc0112..cfab38354 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 @@ -44,6 +44,7 @@ import me.lucko.luckperms.common.util.ImmutableCollectors; import net.luckperms.api.metastacking.DuplicateRemovalFunction; import net.luckperms.api.metastacking.MetaStackDefinition; import net.luckperms.api.model.data.TemporaryNodeMergeStrategy; +import net.luckperms.api.platform.Platform; import net.luckperms.api.query.Flag; import net.luckperms.api.query.QueryMode; import net.luckperms.api.query.QueryOptions; @@ -199,6 +200,14 @@ public final class ConfigKeys { */ public static final ConfigKey APPLYING_WILDCARDS = enduringKey(booleanKey("apply-wildcards", true)); + /** + * If Sponge's implicit permission inheritance system should be applied + */ + public static final ConfigKey APPLYING_WILDCARDS_SPONGE = enduringKey(customKey(c -> { + boolean def = c.getPlugin().getBootstrap().getType() == Platform.Type.SPONGE; + return c.getBoolean("apply-sponge-implicit-wildcards", def); + })); + /** * If regex permissions are being applied */ @@ -244,11 +253,6 @@ public final class ConfigKeys { */ public static final ConfigKey APPLY_BUNGEE_CONFIG_PERMISSIONS = enduringKey(booleanKey("apply-bungee-config-permissions", false)); - /** - * If Sponge's implicit permission inheritance system should be applied - */ - public static final ConfigKey APPLY_SPONGE_IMPLICIT_WILDCARDS = enduringKey(booleanKey("apply-sponge-implicit-wildcards", true)); - /** * If Sponge default subjects should be applied */ diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/calculator/NukkitCalculatorFactory.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/calculator/NukkitCalculatorFactory.java index 124208522..39abce2ea 100644 --- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/calculator/NukkitCalculatorFactory.java +++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/calculator/NukkitCalculatorFactory.java @@ -33,6 +33,7 @@ import me.lucko.luckperms.common.calculator.PermissionCalculator; import me.lucko.luckperms.common.calculator.processor.MapProcessor; import me.lucko.luckperms.common.calculator.processor.PermissionProcessor; import me.lucko.luckperms.common.calculator.processor.RegexProcessor; +import me.lucko.luckperms.common.calculator.processor.SpongeWildcardProcessor; import me.lucko.luckperms.common.calculator.processor.WildcardProcessor; import me.lucko.luckperms.common.config.ConfigKeys; import me.lucko.luckperms.common.model.HolderType; @@ -66,6 +67,10 @@ public class NukkitCalculatorFactory implements CalculatorFactory { processors.add(new WildcardProcessor()); } + if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_WILDCARDS_SPONGE)) { + processors.add(new SpongeWildcardProcessor()); + } + boolean op = queryOptions.option(NukkitContextManager.OP_OPTION).orElse(false); if (metadata.getHolderType() == HolderType.USER && this.plugin.getConfiguration().get(ConfigKeys.APPLY_NUKKIT_DEFAULT_PERMISSIONS)) { processors.add(new DefaultsProcessor(this.plugin, op)); diff --git a/nukkit/src/main/resources/config.yml b/nukkit/src/main/resources/config.yml index 4c77c25ff..a6edea0f7 100644 --- a/nukkit/src/main/resources/config.yml +++ b/nukkit/src/main/resources/config.yml @@ -439,6 +439,14 @@ meta-value-selection: # permissions matching the wildcard. apply-wildcards: true +# If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard +# inheritance system. +# +# - That being: If a user has been granted "example", then the player should have also be +# automatically granted "example.function", "example.another", "example.deeper.nesting", +# and so on. +apply-sponge-implicit-wildcards: false + # If the plugin should parse regex permissions. # # - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/calculator/SpongeCalculatorFactory.java b/sponge/src/main/java/me/lucko/luckperms/sponge/calculator/SpongeCalculatorFactory.java index a975260e5..9b3c65767 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/calculator/SpongeCalculatorFactory.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/calculator/SpongeCalculatorFactory.java @@ -33,6 +33,7 @@ import me.lucko.luckperms.common.calculator.PermissionCalculator; import me.lucko.luckperms.common.calculator.processor.MapProcessor; import me.lucko.luckperms.common.calculator.processor.PermissionProcessor; import me.lucko.luckperms.common.calculator.processor.RegexProcessor; +import me.lucko.luckperms.common.calculator.processor.SpongeWildcardProcessor; import me.lucko.luckperms.common.calculator.processor.WildcardProcessor; import me.lucko.luckperms.common.config.ConfigKeys; import me.lucko.luckperms.common.model.HolderType; @@ -61,7 +62,7 @@ public class SpongeCalculatorFactory implements CalculatorFactory { processors.add(new WildcardProcessor()); } - if (this.plugin.getConfiguration().get(ConfigKeys.APPLY_SPONGE_IMPLICIT_WILDCARDS)) { + if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_WILDCARDS_SPONGE)) { processors.add(new SpongeWildcardProcessor()); } diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/calculated/CalculatedSubjectCachedDataManager.java b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/calculated/CalculatedSubjectCachedDataManager.java index 5d09d6066..d6f8b49a9 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/calculated/CalculatedSubjectCachedDataManager.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/calculated/CalculatedSubjectCachedDataManager.java @@ -34,12 +34,12 @@ import me.lucko.luckperms.common.calculator.CalculatorFactory; import me.lucko.luckperms.common.calculator.PermissionCalculator; import me.lucko.luckperms.common.calculator.processor.MapProcessor; import me.lucko.luckperms.common.calculator.processor.PermissionProcessor; +import me.lucko.luckperms.common.calculator.processor.SpongeWildcardProcessor; import me.lucko.luckperms.common.calculator.processor.WildcardProcessor; import me.lucko.luckperms.common.metastacking.SimpleMetaStackDefinition; import me.lucko.luckperms.common.metastacking.StandardStackElements; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.sponge.calculator.FixedDefaultsProcessor; -import me.lucko.luckperms.sponge.calculator.SpongeWildcardProcessor; import net.luckperms.api.metastacking.DuplicateRemovalFunction; import net.luckperms.api.metastacking.MetaStackDefinition; diff --git a/sponge/src/main/resources/luckperms.conf b/sponge/src/main/resources/luckperms.conf index 379921945..8a693e269 100644 --- a/sponge/src/main/resources/luckperms.conf +++ b/sponge/src/main/resources/luckperms.conf @@ -454,6 +454,14 @@ meta-value-selection { # permissions matching the wildcard. apply-wildcards = true +# If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard +# inheritance system. +# +# - That being: If a user has been granted "example", then the player should have also be +# automatically granted "example.function", "example.another", "example.deeper.nesting", +# and so on. +apply-sponge-implicit-wildcards=true + # If the plugin should parse regex permissions. # # - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the @@ -465,16 +473,6 @@ apply-regex = true # - If set to true, LuckPerms will detect and expand shorthand node patterns. apply-shorthand = true -# If LuckPerms should resolve and apply permissions according to Sponge's implicit wildcard -# inheritance system. -# -# That being: -# If a user has been granted "example", then the player should have also be automatically granted -# "example.function", "example.another", "example.deeper.nesting", and so on. -# -# If this option is set to false, this system will not be applied. -apply-sponge-implicit-wildcards=true - # If the plugin should apply Sponge default subject permissions. # Plugins can manipulate a set of default permissions granted to all users. If this option is set to # false, LuckPerms will ignore this data when considering if a player has a permission. diff --git a/velocity/src/main/java/me/lucko/luckperms/velocity/calculator/VelocityCalculatorFactory.java b/velocity/src/main/java/me/lucko/luckperms/velocity/calculator/VelocityCalculatorFactory.java index 7df3bc470..03fb23e07 100644 --- a/velocity/src/main/java/me/lucko/luckperms/velocity/calculator/VelocityCalculatorFactory.java +++ b/velocity/src/main/java/me/lucko/luckperms/velocity/calculator/VelocityCalculatorFactory.java @@ -33,6 +33,7 @@ import me.lucko.luckperms.common.calculator.PermissionCalculator; import me.lucko.luckperms.common.calculator.processor.MapProcessor; import me.lucko.luckperms.common.calculator.processor.PermissionProcessor; import me.lucko.luckperms.common.calculator.processor.RegexProcessor; +import me.lucko.luckperms.common.calculator.processor.SpongeWildcardProcessor; import me.lucko.luckperms.common.calculator.processor.WildcardProcessor; import me.lucko.luckperms.common.config.ConfigKeys; import me.lucko.luckperms.velocity.LPVelocityPlugin; @@ -60,6 +61,10 @@ public class VelocityCalculatorFactory implements CalculatorFactory { processors.add(new WildcardProcessor()); } + if (this.plugin.getConfiguration().get(ConfigKeys.APPLYING_WILDCARDS_SPONGE)) { + processors.add(new SpongeWildcardProcessor()); + } + return new PermissionCalculator(this.plugin, metadata, processors.build()); } } diff --git a/velocity/src/main/resources/config.yml b/velocity/src/main/resources/config.yml index 15059ec76..1ef6ebd22 100644 --- a/velocity/src/main/resources/config.yml +++ b/velocity/src/main/resources/config.yml @@ -443,6 +443,14 @@ meta-value-selection: # permissions matching the wildcard. apply-wildcards: true +# If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard +# inheritance system. +# +# - That being: If a user has been granted "example", then the player should have also be +# automatically granted "example.function", "example.another", "example.deeper.nesting", +# and so on. +apply-sponge-implicit-wildcards: false + # If the plugin should parse regex permissions. # # - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the