From 85d2f0b51f7378fcf024046c5c1c4ca9e163bfbb Mon Sep 17 00:00:00 2001 From: Luck Date: Thu, 7 Feb 2019 12:24:23 +0000 Subject: [PATCH] Add method to unregister context calculators (#1422) --- .../luckperms/api/context/ContextManager.java | 7 +++--- .../luckperms/bungee/LPBungeePlugin.java | 2 +- .../api/implementation/ApiContextManager.java | 5 ++-- .../common/context/ContextManager.java | 23 ++++++++----------- .../plugin/AbstractLuckPermsPlugin.java | 2 +- 5 files changed, 17 insertions(+), 22 deletions(-) diff --git a/api/src/main/java/me/lucko/luckperms/api/context/ContextManager.java b/api/src/main/java/me/lucko/luckperms/api/context/ContextManager.java index 116dd5e2..74a4167f 100644 --- a/api/src/main/java/me/lucko/luckperms/api/context/ContextManager.java +++ b/api/src/main/java/me/lucko/luckperms/api/context/ContextManager.java @@ -150,13 +150,12 @@ public interface ContextManager { void registerCalculator(@NonNull ContextCalculator calculator); /** - * Registers a static context calculator with the manager. - * - *

Static calculators provide the same context for all subjects.

+ * Unregisters a context calculator with the manager. * * @param calculator the calculator + * @since 4.4 */ - void registerStaticCalculator(@NonNull StaticContextCalculator calculator); + void unregisterCalculator(@NonNull ContextCalculator calculator); /** * Invalidates the lookup cache for a given subject diff --git a/bungee/src/main/java/me/lucko/luckperms/bungee/LPBungeePlugin.java b/bungee/src/main/java/me/lucko/luckperms/bungee/LPBungeePlugin.java index e33f1b83..4936710e 100644 --- a/bungee/src/main/java/me/lucko/luckperms/bungee/LPBungeePlugin.java +++ b/bungee/src/main/java/me/lucko/luckperms/bungee/LPBungeePlugin.java @@ -141,7 +141,7 @@ public class LPBungeePlugin extends AbstractLuckPermsPlugin { this.contextManager.registerCalculator(new BackendServerCalculator(this)); if (this.bootstrap.getProxy().getPluginManager().getPlugin("RedisBungee") != null) { - this.contextManager.registerStaticCalculator(new RedisBungeeCalculator()); + this.contextManager.registerCalculator(new RedisBungeeCalculator()); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiContextManager.java b/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiContextManager.java index 27b12f3d..ca2125c0 100644 --- a/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiContextManager.java +++ b/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiContextManager.java @@ -29,7 +29,6 @@ import me.lucko.luckperms.api.Contexts; import me.lucko.luckperms.api.User; import me.lucko.luckperms.api.context.ContextCalculator; import me.lucko.luckperms.api.context.ImmutableContextSet; -import me.lucko.luckperms.api.context.StaticContextCalculator; import me.lucko.luckperms.common.context.ContextManager; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; @@ -109,9 +108,9 @@ public class ApiContextManager implements me.lucko.luckperms.api.context.Context } @Override - public void registerStaticCalculator(@NonNull StaticContextCalculator calculator) { + public void unregisterCalculator(@NonNull ContextCalculator calculator) { Objects.requireNonNull(calculator, "calculator"); - this.handle.registerStaticCalculator(calculator); + } @Override 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 34cede38..c288cdf6 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 @@ -163,24 +163,21 @@ public abstract class ContextManager { ); } - /** - * Registers a context calculator with the manager. - * - * @param calculator the calculator - */ public void registerCalculator(ContextCalculator calculator) { // calculators registered first should have priority (and be checked last.) this.calculators.add(0, calculator); + + if (calculator instanceof StaticContextCalculator) { + StaticContextCalculator staticCalculator = (StaticContextCalculator) calculator; + this.staticCalculators.add(0, staticCalculator); + } } - /** - * Registers a static context calculator with the manager. - * - * @param calculator the calculator - */ - public void registerStaticCalculator(StaticContextCalculator calculator) { - registerCalculator(calculator); - this.staticCalculators.add(0, calculator); + public void unregisterCalculator(ContextCalculator calculator) { + this.calculators.remove(calculator); + if (calculator instanceof StaticContextCalculator) { + this.staticCalculators.remove(calculator); + } } /** 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 2df7d326..9473c2d5 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 @@ -153,7 +153,7 @@ public abstract class AbstractLuckPermsPlugin implements LuckPermsPlugin { // setup contextmanager & register common calculators setupContextManager(); - getContextManager().registerStaticCalculator(new LPStaticContextsCalculator(getConfiguration())); + getContextManager().registerCalculator(new LPStaticContextsCalculator(getConfiguration())); // setup platform hooks setupPlatformHooks();