Added api to register custom PermissionHooks
This commit is contained in:
@@ -3,6 +3,7 @@ package us.ajg0702.queue.api;
|
|||||||
import us.ajg0702.queue.api.events.utils.EventReceiver;
|
import us.ajg0702.queue.api.events.utils.EventReceiver;
|
||||||
import us.ajg0702.queue.api.premium.Logic;
|
import us.ajg0702.queue.api.premium.Logic;
|
||||||
import us.ajg0702.queue.api.premium.LogicGetter;
|
import us.ajg0702.queue.api.premium.LogicGetter;
|
||||||
|
import us.ajg0702.queue.api.premium.PermissionHookRegistry;
|
||||||
import us.ajg0702.queue.api.queueholders.QueueHolderRegistry;
|
import us.ajg0702.queue.api.queueholders.QueueHolderRegistry;
|
||||||
import us.ajg0702.queue.api.spigot.AjQueueSpigotAPI;
|
import us.ajg0702.queue.api.spigot.AjQueueSpigotAPI;
|
||||||
import us.ajg0702.queue.api.util.QueueLogger;
|
import us.ajg0702.queue.api.util.QueueLogger;
|
||||||
@@ -15,6 +16,8 @@ public abstract class AjQueueAPI {
|
|||||||
|
|
||||||
public static QueueHolderRegistry queueHolderRegistry = new QueueHolderRegistry();
|
public static QueueHolderRegistry queueHolderRegistry = new QueueHolderRegistry();
|
||||||
|
|
||||||
|
public static PermissionHookRegistry permissionHookRegistry = new PermissionHookRegistry();
|
||||||
|
|
||||||
public static AjQueueAPI INSTANCE;
|
public static AjQueueAPI INSTANCE;
|
||||||
public static AjQueueSpigotAPI SPIGOT_INSTANCE;
|
public static AjQueueSpigotAPI SPIGOT_INSTANCE;
|
||||||
|
|
||||||
@@ -128,6 +131,10 @@ public abstract class AjQueueAPI {
|
|||||||
return queueHolderRegistry;
|
return queueHolderRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static PermissionHookRegistry getPermissionHookRegistry() {
|
||||||
|
return permissionHookRegistry;
|
||||||
|
}
|
||||||
|
|
||||||
public abstract <E> void listen(Class<E> event, EventReceiver<E> handler);
|
public abstract <E> void listen(Class<E> event, EventReceiver<E> handler);
|
||||||
|
|
||||||
public abstract ExecutorService getServersUpdateExecutor();
|
public abstract ExecutorService getServersUpdateExecutor();
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package us.ajg0702.queue.api.premium;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class PermissionHookRegistry {
|
||||||
|
private final Map<String, PermissionHook> hooks = new HashMap<>();
|
||||||
|
|
||||||
|
public void register(PermissionHook... permissionHooks) {
|
||||||
|
for (PermissionHook hook : permissionHooks) {
|
||||||
|
if(hooks.containsKey(hook.getName())) {
|
||||||
|
throw new IllegalArgumentException("Hook " + hook.getName() + " is already registered!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (PermissionHook hook : permissionHooks) {
|
||||||
|
hooks.put(hook.getName(), hook);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<PermissionHook> getRegisteredHooks() {
|
||||||
|
return hooks.values();
|
||||||
|
}
|
||||||
|
}
|
||||||
+10
-10
@@ -1,9 +1,11 @@
|
|||||||
package us.ajg0702.queue.logic.permissions;
|
package us.ajg0702.queue.logic.permissions;
|
||||||
|
|
||||||
|
import us.ajg0702.queue.api.AjQueueAPI;
|
||||||
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
import us.ajg0702.queue.api.players.AdaptedPlayer;
|
||||||
import us.ajg0702.queue.api.premium.PermissionGetter;
|
import us.ajg0702.queue.api.premium.PermissionGetter;
|
||||||
import us.ajg0702.queue.api.premium.PermissionHook;
|
import us.ajg0702.queue.api.premium.PermissionHook;
|
||||||
import us.ajg0702.queue.common.QueueMain;
|
import us.ajg0702.queue.common.QueueMain;
|
||||||
|
import us.ajg0702.queue.common.utils.Debug;
|
||||||
import us.ajg0702.queue.logic.permissions.hooks.AquaCoreHook;
|
import us.ajg0702.queue.logic.permissions.hooks.AquaCoreHook;
|
||||||
import us.ajg0702.queue.logic.permissions.hooks.BuiltInHook;
|
import us.ajg0702.queue.logic.permissions.hooks.BuiltInHook;
|
||||||
import us.ajg0702.queue.logic.permissions.hooks.LuckPermsHook;
|
import us.ajg0702.queue.logic.permissions.hooks.LuckPermsHook;
|
||||||
@@ -13,16 +15,15 @@ import java.util.*;
|
|||||||
|
|
||||||
public class PermissionGetterImpl implements PermissionGetter {
|
public class PermissionGetterImpl implements PermissionGetter {
|
||||||
|
|
||||||
private final List<PermissionHook> hooks;
|
|
||||||
|
|
||||||
private final QueueMain main;
|
private final QueueMain main;
|
||||||
|
private PermissionHook builtInHook;
|
||||||
public PermissionGetterImpl(QueueMain main) {
|
public PermissionGetterImpl(QueueMain main) {
|
||||||
hooks = Arrays.asList(
|
AjQueueAPI.getPermissionHookRegistry().register(
|
||||||
new BuiltInHook(main),
|
|
||||||
new LuckPermsHook(main),
|
new LuckPermsHook(main),
|
||||||
new UltraPermissionsHook(main),
|
new UltraPermissionsHook(main),
|
||||||
new AquaCoreHook(main)
|
new AquaCoreHook(main)
|
||||||
);
|
);
|
||||||
|
builtInHook = new BuiltInHook(main);
|
||||||
this.main = main;
|
this.main = main;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,16 +31,15 @@ public class PermissionGetterImpl implements PermissionGetter {
|
|||||||
@Override
|
@Override
|
||||||
public PermissionHook getSelected() {
|
public PermissionHook getSelected() {
|
||||||
if(selected != null) return selected;
|
if(selected != null) return selected;
|
||||||
if(hooks == null) {
|
for(PermissionHook hook : AjQueueAPI.getPermissionHookRegistry().getRegisteredHooks()) {
|
||||||
throw new IllegalStateException("Hooks are not initialized yet!");
|
boolean canUse = hook.canUse();
|
||||||
}
|
Debug.info(hook.getName() + " "+ canUse);
|
||||||
for(PermissionHook hook : hooks) {
|
if(canUse) {
|
||||||
if(hook.canUse()) {
|
|
||||||
selected = hook;
|
selected = hook;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(selected == null) {
|
if(selected == null) {
|
||||||
throw new IllegalStateException("All hooks are unusable!");
|
selected = builtInHook;
|
||||||
}
|
}
|
||||||
main.getLogger().info("Using "+selected.getName()+" for permissions.");
|
main.getLogger().info("Using "+selected.getName()+" for permissions.");
|
||||||
return selected;
|
return selected;
|
||||||
|
|||||||
Reference in New Issue
Block a user