Compare commits

...

61 Commits

Author SHA1 Message Date
ajgeiss0702 7af094d1f1 [nolist] Merge pull request #31 from ajgeiss0702/dev
Java CI with Gradle / build (push) Failing after 6m40s
JavaDocs Generation / build (push) Failing after 19s
JavaDocs Generation / deploy (push) Has been skipped
Java CI with Gradle / deploy (push) Has been skipped
Java CI with Gradle / updater (push) Has been skipped
Deploy Release to Polymart/Modrinth / build (push) Failing after 15m26s
2.6.0
2023-10-21 11:43:55 -07:00
ajgeiss0702 e67b790875 Merge remote-tracking branch 'origin/dev' into dev 2023-10-21 11:38:14 -07:00
ajgeiss0702 2b9e2a9043 [nolist] 2.6.0 2023-10-21 11:37:56 -07:00
ajgeiss0702 bfe336f9e5 Skip invalid protocol names when moving them 2023-10-21 11:37:56 -07:00
ajgeiss0702 7eb1a75a35 Fixed slash-server commands ignoring pre-queue checks (e.g. joinfrom permission) 2023-10-21 11:37:56 -07:00
ajgeiss0702 d61ce73cde Fixed queue-server-delay being ignored by force-queue-server-target 2023-10-21 11:37:56 -07:00
ajgeiss0702 e8ca809cb0 Add option to delay queue-servers by up to 3 seconds 2023-10-21 11:37:56 -07:00
ajgeiss0702 b0892dd0d2 Added api to register custom PermissionHooks 2023-10-21 11:37:56 -07:00
ajgeiss0702 d769e4a6d7 Add QueueHolder API 2023-10-21 11:37:56 -07:00
ajgeiss0702 688641735c Ignore error from player no longer being online 2023-10-21 11:37:56 -07:00
ajgeiss0702 8355c7619c [nolist] 2.6.0 2023-10-21 11:30:41 -07:00
ajgeiss0702 b3480b6ac2 Skip invalid protocol names when moving them 2023-10-21 11:25:04 -07:00
ajgeiss0702 e51ff8dca5 Fixed slash-server commands ignoring pre-queue checks (e.g. joinfrom permission) 2023-10-14 16:14:18 -07:00
ajgeiss0702 cda97662d3 Fixed queue-server-delay being ignored by force-queue-server-target 2023-10-13 10:47:19 -07:00
ajgeiss0702 c5fd5fb32f Add option to delay queue-servers by up to 3 seconds 2023-10-09 09:07:57 -07:00
ajgeiss0702 52938eeb4d Added api to register custom PermissionHooks 2023-09-22 09:40:11 -07:00
ajgeiss0702 c0b736b781 Add QueueHolder API 2023-08-28 18:24:59 -07:00
ajgeiss0702 de4ff2ba26 Ignore error from player no longer being online 2023-08-19 16:54:56 -07:00
ajgeiss0702 d95f892cfe Don't parse placeholder if the player is no longer online 2023-08-14 11:25:29 -07:00
ajgeiss0702 1f875fa622 Fixed wait-after-online not doing anything 2023-08-06 08:33:41 -07:00
ajgeiss0702 6592925c6d Added manual-max-players to the config, which allows you to set a max player count for servers/groups 2023-07-31 17:53:28 -07:00
ajgeiss0702 8d7d56a8c6 move protocol-names to messages.yml and add newer version names 2023-07-27 09:40:01 -05:00
ajgeiss0702 71c471c407 Add re-check-priority option to re-queue players when their priority increases 2023-07-26 20:53:48 -05:00
ajgeiss0702 4fc7ca38ca Fixed priorities not being taken into account with make-room 2023-07-25 20:37:36 -05:00
ajgeiss0702 d92d8796fd Added ajqueue.make-room permission (disabled by default) 2023-07-25 14:37:14 -05:00
ajgeiss0702 d935ae3370 Filter auto-complete arguments 2023-07-22 16:41:30 -05:00
ajgeiss0702 3a33b7b512 Fix player being removed before allow-group-requeue could work 2023-07-20 23:17:27 -05:00
ajgeiss0702 391080483b Add option to allow re-queueing for groups 2023-07-20 22:41:41 -05:00
ajgeiss0702 8fe8713aaf [nolist] remove unnecessary synchronized 2023-07-10 10:56:24 -05:00
ajgeiss0702 a0e8411cc6 Should fix nullpointers while modifying queue 2023-07-08 18:37:34 -05:00
ajgeiss0702 567f97f440 Ignore timeouts in placeholders 2023-07-07 22:21:25 -05:00
ajgeiss0702 89a11c176b Fixed QueueScoreboardActivator not activating on the correct player 2023-06-29 20:10:30 -05:00
ajgeiss0702 46fedd2276 Added plus-level-fallback to allow some leveled permissions on ajQueuePlus to work without a supported permission plugin 2023-06-29 12:36:53 -05:00
ajgeiss0702 412d173d82 Better fetching of players for spigot api 2023-06-29 11:35:34 -05:00
ajgeiss0702 fab9cd8d34 Fixed whitelisted status not showing for the non-player status placeholder 2023-06-19 11:50:45 -07:00
ajgeiss0702 06ed22e65f Fixed player status placeholder not working 2023-06-19 07:54:33 -07:00
ajgeiss0702 12031cf8dd Added require-queueserver-permission option to the config 2023-06-18 17:23:47 -07:00
ajgeiss0702 3e25fd7e2d [nolist] add more aliases for permissionlist debug command 2023-06-17 11:55:59 -07:00
ajgeiss0702 ca36bdfc1f Config re-format 2023-06-17 11:55:42 -07:00
ajgeiss0702 06a4c47072 Fixed invalid servers in placeholders throwing an error instead of just saying the server is invalid 2023-06-13 14:53:33 -07:00
ajgeiss0702 e0c8c29204 [nolist] found why I needed fakeultraperms 2023-06-11 10:44:13 -07:00
ajgeiss0702 bc3aa1ffe1 [nolist] 2.5.0 2023-06-11 10:42:06 -07:00
ajgeiss0702 609f1e4b81 [nolist] use real UltraPermissionsAPI 2023-06-11 10:41:42 -07:00
ajgeiss0702 fa9f594830 Fixed PositionChangeEvent being called when a player's position didn't change 2023-06-10 09:41:42 -07:00
ajgeiss0702 49a3812867 [nolist] remove debug spigot-side warning 2023-06-10 09:38:26 -07:00
ajgeiss0702 e5d9df9aa8 Ignore plugin messages from disconnected players 2023-06-10 09:34:02 -07:00
ajgeiss0702 0899bf88ed Add API events system 2023-06-08 17:00:49 -07:00
ajgeiss0702 2414c698ed Seperate sudo-queueing and normal queueing on spigot side. /queue <player> <server> on the spigot side now acts the same as /ajqueue send 2023-06-08 10:05:53 -07:00
ajgeiss0702 80289de371 Fixed whitelist/restricted not working well in groups 2023-06-06 09:09:54 -07:00
ajgeiss0702 a99bd73614 Added %ajqueue_status_<server>_player% 2023-05-29 11:31:41 -07:00
ajgeiss0702 429eb354b0 Fixed API not having javadocs & sources 2023-05-28 16:57:04 -07:00
ajgeiss0702 67aece11f0 Parse colors after placeholders so that colors work in placeholders 2023-05-28 16:48:29 -07:00
ajgeiss0702 17c6963889 [nolist] whoops, don't need gson 2023-05-27 18:15:44 -07:00
ajgeiss0702 c26e5835b7 Added Spigot-side API 2023-05-27 18:14:34 -07:00
ajgeiss0702 9f0881756d Legacy format velocity kick reason instead of just stripping all formatting 2023-05-24 17:08:24 -07:00
ajgeiss0702 a91d271932 Allow disabling of queue command cooldown system 2023-04-30 10:12:41 -07:00
ajgeiss0702 f1c9749c59 Throw warning instead of error when trying to send a plugin message to a player thats not connected to a server 2023-04-30 09:59:16 -07:00
ajgeiss0702 e9bfeb22b9 Update adventure 2023-04-23 19:10:53 -07:00
ajgeiss0702 786a302a2a (spigot) echo queue name when sending a player to a queue 2023-04-20 14:19:09 -07:00
ajgeiss0702 1c9a41316c Fixed fulljoin and bypasspaused priority options not working 2023-04-16 12:25:08 -07:00
ajgeiss0702 4fd393c4fe Slash server commands will now not be shown if the user doesnt have permissions 2023-04-16 10:04:23 -07:00
23 changed files with 324 additions and 51 deletions
@@ -3,6 +3,8 @@ package us.ajg0702.queue.api;
import us.ajg0702.queue.api.events.utils.EventReceiver;
import us.ajg0702.queue.api.premium.Logic;
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.spigot.AjQueueSpigotAPI;
import us.ajg0702.queue.api.util.QueueLogger;
import us.ajg0702.utils.common.Config;
@@ -12,6 +14,10 @@ import java.util.concurrent.ExecutorService;
public abstract class AjQueueAPI {
public static QueueHolderRegistry queueHolderRegistry = new QueueHolderRegistry();
public static PermissionHookRegistry permissionHookRegistry = new PermissionHookRegistry();
public static AjQueueAPI INSTANCE;
public static AjQueueSpigotAPI SPIGOT_INSTANCE;
@@ -121,6 +127,14 @@ public abstract class AjQueueAPI {
*/
public abstract void shutdown();
public static QueueHolderRegistry getQueueHolderRegistry() {
return queueHolderRegistry;
}
public static PermissionHookRegistry getPermissionHookRegistry() {
return permissionHookRegistry;
}
public abstract <E> void listen(Class<E> event, EventReceiver<E> handler);
public abstract ExecutorService getServersUpdateExecutor();
@@ -1,6 +0,0 @@
package us.ajg0702.queue.api;
public interface QueueHolder {
boolean isAvailable();
}
@@ -6,7 +6,7 @@ public interface ServerTimeManager {
/**
* Gets the time that the player specified was last seen switching servers
* @param player The player to check
* @return The time that they last switched servers, in miliseconds since midnight, January 1, 1970, UTC
* @return The time that they last switched servers, in milliseconds since midnight, January 1, 1970, UTC
*/
long getLastServerChange(AdaptedPlayer player);
}
@@ -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();
}
}
@@ -0,0 +1,84 @@
package us.ajg0702.queue.api.queueholders;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.players.QueuePlayer;
import us.ajg0702.queue.api.queues.QueueServer;
import java.util.List;
import java.util.UUID;
public abstract class QueueHolder {
private final QueueServer queueServer;
public QueueHolder(QueueServer queueServer) {
this.queueServer = queueServer;
}
/**
* Returns the identifier of this QueueHolder
* Used by the server owner in order to tell ajQueue to use this QueueHolder
* @return a string that is very unlikely to be re-used by another QueueHolder
*/
public abstract String getIdentifier();
/**
* Adds a player to the end of the queue
* NOTE: Do not manually call this! Use the QueueManager to add players to queues
* @param player The QueuePlayer to add
*/
public abstract void addPlayer(QueuePlayer player);
/**
* Adds a player to the specified position in the queue
* NOTE: Do not manually call this! Use the QueueManager to add players to queues
* @param player The QueuePlayer to add
* @param position The position to add them to
*/
public abstract void addPlayer(QueuePlayer player, int position);
public void removePlayer(AdaptedPlayer player) {
removePlayer(player.getUniqueId());
}
public void removePlayer(UUID uuid) {
QueuePlayer player = findPlayer(uuid);
if(player == null) return;
removePlayer(player);
}
/**
* Removes a player from the queue
* @param player The player to remove
*/
public abstract void removePlayer(QueuePlayer player);
/**
* Finds the player with this uuid in this queue and returns the representative QueuePlayer
* @return The QueuePlayer representing the player, null if not found
*/
public abstract QueuePlayer findPlayer(UUID uuid);
/**
* Finds the player with this username in this queue and returns the representative QueuePlayer
* @return The QueuePlayer representing the player, null if not found
*/
public abstract QueuePlayer findPlayer(String name);
public QueuePlayer findPlayer(AdaptedPlayer player) {
return findPlayer(player.getUniqueId());
}
/**
* Returns the size of the queue
* @return The number of players in the queue
*/
public abstract int getQueueSize();
/**
* Get all players that are in the queue
* @return a list of players in the queue
*/
public abstract List<QueuePlayer> getAllPlayers();
}
@@ -0,0 +1,44 @@
package us.ajg0702.queue.api.queueholders;
import us.ajg0702.queue.api.AjQueueAPI;
import us.ajg0702.queue.api.queues.QueueServer;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class QueueHolderRegistry {
private Map<String, Class<? extends QueueHolder>> holders = new ConcurrentHashMap<>();
/**
* Register a QueueHolder that can be used
* @param holder The QueueHolder to register
*/
public void register(String identifier, Class<? extends QueueHolder> holder) {
holders.put(identifier, holder);
}
public QueueHolder getQueueHolder(QueueServer queueServer) {
String queueHolderName = AjQueueAPI.getInstance().getConfig().getString("queue-holder");
QueueHolder queueHolder = getQueueHolder(queueHolderName, queueServer);
if(queueHolder == null) {
AjQueueAPI.getInstance().getLogger().warn("Invalid queue-holder '" + queueHolderName + "'! Using the default one");
return getQueueHolder("default", queueServer);
}
return queueHolder;
}
public QueueHolder getQueueHolder(String identifier, QueueServer queueServer) {
Class<? extends QueueHolder> holder = holders.get(identifier);
if(holder == null) return null;
try {
return holder.getConstructor(QueueServer.class).newInstance(queueServer);
} catch(NoSuchMethodException e) {
throw new IllegalArgumentException("QueueHolder " + identifier + " is missing the required constructor!");
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}
}
@@ -3,6 +3,7 @@ package us.ajg0702.queue.api.queues;
import com.google.common.collect.ImmutableList;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.players.QueuePlayer;
import us.ajg0702.queue.api.queueholders.QueueHolder;
import us.ajg0702.queue.api.server.AdaptedServer;
import java.util.List;
@@ -17,7 +18,9 @@ public interface QueueServer {
/**
* Get the players who are queued.
* @return The players who are queued
* @deprecated It is recommended to not use this method unless you absolutely have to. If you have to, use getQueueHolder().getAllPlayers()
*/
@Deprecated
ImmutableList<QueuePlayer> getQueue();
/**
@@ -219,6 +222,12 @@ public interface QueueServer {
*/
Balancer getBalancer();
/**
* Gets the QueueHolder for this queue
* @return the QueueHolder that holds the queue
*/
QueueHolder getQueueHolder();
/**
* elliot is bad
+1 -1
View File
@@ -12,7 +12,7 @@ repositories {
}
allprojects {
version = "2.5.0"
version = "2.6.0"
group = "us.ajg0702"
plugins.apply("java")
@@ -1,6 +1,7 @@
package us.ajg0702.queue.commands.commands.SlashServer;
import com.google.common.collect.ImmutableList;
import us.ajg0702.queue.api.commands.IBaseCommand;
import us.ajg0702.queue.api.commands.ICommandSender;
import us.ajg0702.queue.commands.BaseCommand;
import us.ajg0702.queue.common.QueueMain;
@@ -14,6 +15,10 @@ public class SlashServerCommand extends BaseCommand {
final QueueMain main;
final String server;
final String command;
private IBaseCommand moveCommand;
public SlashServerCommand(QueueMain main, String server) {
this.main = main;
this.server = server;
@@ -51,11 +56,10 @@ public class SlashServerCommand extends BaseCommand {
sender.sendMessage(getMessages().getComponent("errors.player-only"));
return;
}
if(main.getConfig().getBoolean("require-permission") && !sender.hasPermission("ajqueue.queue."+server)) {
sender.sendMessage(getMessages().getComponent("noperm"));
return;
if(moveCommand == null) {
moveCommand = main.getPlatformMethods().getCommands().get(0);
}
main.getQueueManager().addToQueue(main.getPlatformMethods().senderToPlayer(sender), server);
moveCommand.execute(sender, new String[]{server});
}
@Override
@@ -0,0 +1,69 @@
package us.ajg0702.queue.common;
import com.google.common.collect.ImmutableList;
import us.ajg0702.queue.api.players.QueuePlayer;
import us.ajg0702.queue.api.queueholders.QueueHolder;
import us.ajg0702.queue.api.queues.QueueServer;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
public class DefaultQueueHolder extends QueueHolder {
List<QueuePlayer> queue = new CopyOnWriteArrayList<>();
public DefaultQueueHolder(QueueServer queueServer) {
super(queueServer);
}
@Override
public String getIdentifier() {
return "default";
}
@Override
public void addPlayer(QueuePlayer player) {
queue.add(player);
}
@Override
public void addPlayer(QueuePlayer player, int position) {
queue.add(position, player);
}
@Override
public void removePlayer(QueuePlayer player) {
queue.remove(player);
}
@Override
public QueuePlayer findPlayer(UUID uuid) {
for(QueuePlayer queuePlayer : queue) {
if(queuePlayer.getUniqueId().toString().equals(uuid.toString())) {
return queuePlayer;
}
}
return null;
}
@Override
public QueuePlayer findPlayer(String name) {
for(QueuePlayer queuePlayer : queue) {
if(queuePlayer.getName().equalsIgnoreCase(name)) {
return queuePlayer;
}
}
return null;
}
@Override
public int getQueueSize() {
return queue.size();
}
@Override
public List<QueuePlayer> getAllPlayers() {
return ImmutableList.copyOf(queue);
}
}
@@ -118,7 +118,19 @@ public class EventHandlerImpl implements EventHandler {
player.hasPermission("ajqueue.queueserver." + to.getName())
)
) {
int delay = Math.min(main.getConfig().getInt("queue-server-delay"), 3000);
Runnable task = () -> {
if(to.getServers().contains(player.getCurrentServer())) return;
main.getQueueManager().addToQueue(player, to);
};
Debug.info("Delaying queue-server by " + delay);
if(delay > 0) {
main.getTaskManager().executor.schedule(task, delay, TimeUnit.MILLISECONDS);
} else {
task.run();
}
}
}
}
@@ -200,6 +200,8 @@ public class QueueMain extends AjQueueAPI {
constructMessages();
getQueueHolderRegistry().register("default", DefaultQueueHolder.class);
logic = logicGetter.constructLogic();
aliasManager = logicGetter.constructAliasManager(config);
@@ -339,6 +341,10 @@ public class QueueMain extends AjQueueAPI {
List<String> oldProtocolNames = config.getStringList("protocol-names");
for (String oldProtocolName : oldProtocolNames) {
String[] parts = oldProtocolName.split(":");
if(parts.length != 2) {
logger.warn("Invalid old (in the config) protocol name '" + oldProtocolName + "'. Skipping.");
continue;
}
String protocol = parts[0];
String name = parts[1];
@@ -470,6 +470,11 @@ public class QueueManagerImpl implements QueueManager {
}
return;
}
long lastSwitch = main.getServerTimeManager().getLastServerChange(player);
int delay = Math.min(Math.max(main.getConfig().getInt("queue-server-delay"), 0), 3000);
if(System.currentTimeMillis() - lastSwitch < delay + 1000 || !player.getCurrentServer().equals(from)) {
return;
}
if(
!getPlayerQueues(player).contains(to) &&
(
@@ -1,9 +1,11 @@
package us.ajg0702.queue.common.queues;
import com.google.common.collect.ImmutableList;
import us.ajg0702.queue.api.AjQueueAPI;
import us.ajg0702.queue.api.events.PositionChangeEvent;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.players.QueuePlayer;
import us.ajg0702.queue.api.queueholders.QueueHolder;
import us.ajg0702.queue.api.queues.Balancer;
import us.ajg0702.queue.api.queues.QueueServer;
import us.ajg0702.queue.api.server.AdaptedServer;
@@ -17,7 +19,6 @@ import us.ajg0702.queue.common.utils.Debug;
import us.ajg0702.utils.common.Messages;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
public class QueueServerImpl implements QueueServer {
@@ -27,7 +28,7 @@ public class QueueServerImpl implements QueueServer {
private final List<AdaptedServer> servers;
private final List<QueuePlayer> queue = new CopyOnWriteArrayList<>();
private final QueueHolder queueHolder = AjQueueAPI.getQueueHolderRegistry().getQueueHolder(this);
private List<Integer> supportedProtocols = new ArrayList<>();
@@ -123,7 +124,7 @@ public class QueueServerImpl implements QueueServer {
@Override
public ImmutableList<QueuePlayer> getQueue() {
return ImmutableList.copyOf(queue);
return ImmutableList.copyOf(queueHolder.getAllPlayers());
}
@Override
@@ -248,7 +249,7 @@ public class QueueServerImpl implements QueueServer {
@Override
public void removePlayer(QueuePlayer player) {
main.getQueueManager().getSendingAttempts().remove(player);
queue.remove(player);
queueHolder.removePlayer(player);
positionChange();
}
@@ -266,12 +267,12 @@ public class QueueServerImpl implements QueueServer {
@Override
public void addPlayer(QueuePlayer player, int position) {
if(!player.getQueueServer().equals(this) || queue.contains(player)) return;
if(!player.getQueueServer().equals(this) || queueHolder.findPlayer(player.getUniqueId()) != null) return;
if(position >= 0) {
queue.add(position, player);
queueHolder.addPlayer(player, position);
} else {
queue.add(player);
queueHolder.addPlayer(player);
}
positionChange();
}
@@ -328,12 +329,7 @@ public class QueueServerImpl implements QueueServer {
@Override
public QueuePlayer findPlayer(String player) {
for(QueuePlayer queuePlayer : queue) {
if(queuePlayer.getName().equalsIgnoreCase(player)) {
return queuePlayer;
}
}
return null;
return queueHolder.findPlayer(player);
}
@Override
public QueuePlayer findPlayer(AdaptedPlayer player) {
@@ -341,12 +337,7 @@ public class QueueServerImpl implements QueueServer {
}
@Override
public QueuePlayer findPlayer(UUID uuid) {
for(QueuePlayer queuePlayer : queue) {
if(queuePlayer.getUniqueId().toString().equals(uuid.toString())) {
return queuePlayer;
}
}
return null;
return queueHolder.findPlayer(uuid);
}
@Override
@@ -369,9 +360,14 @@ public class QueueServerImpl implements QueueServer {
return balancer;
}
@Override
public QueueHolder getQueueHolder() {
return queueHolder;
}
private void positionChange() {
main.getTaskManager().runNow(
() -> queue.forEach(queuePlayer -> {
() -> queueHolder.getAllPlayers().forEach(queuePlayer -> {
if(((QueuePlayerImpl) queuePlayer).lastPosition != queuePlayer.getPosition()) {
main.call(new PositionChangeEvent(queuePlayer));
}
+13 -1
View File
@@ -84,6 +84,13 @@ auto-add-kick-reasons:
queue-servers:
- 'limbo:lobbys'
# How much should we delay queueing players in queue servers?
# You should only use this if you have issues with the instant sending.
# Set to 0 or any negative number to disable
# In milliseconds. Maximum value is 3000 (3 seconds)
# Default: 0
queue-server-delay: 0
# Should we completely kick the user from the server if they are in a queue-server
# and are kicked from the server with one of the above reasons?
# Note this will do nothing on servers that aren't queue-servers
@@ -290,6 +297,11 @@ require-queueserver-permission: false
# Default: 10
max-tries: 10
# What QueueHolder should we use?
# By default, the only QueueHolder available is 'default'
# But more may be available via addons (registered via the API)
queue-holder: default
# Should we enable the ajqueue.make-room permission?
# The make-room permission will force there to be room in a server.
@@ -377,7 +389,7 @@ debug: false
# Don't touch this number please
config-version: 42
config-version: 44
# This is ONLY here so that they can be moved to messages.yml. Please edit these in messages.yml!
@@ -1,9 +1,11 @@
package us.ajg0702.queue.logic.permissions;
import us.ajg0702.queue.api.AjQueueAPI;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.premium.PermissionGetter;
import us.ajg0702.queue.api.premium.PermissionHook;
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.BuiltInHook;
import us.ajg0702.queue.logic.permissions.hooks.LuckPermsHook;
@@ -13,16 +15,15 @@ import java.util.*;
public class PermissionGetterImpl implements PermissionGetter {
private final List<PermissionHook> hooks;
private final QueueMain main;
private PermissionHook builtInHook;
public PermissionGetterImpl(QueueMain main) {
hooks = Arrays.asList(
new BuiltInHook(main),
AjQueueAPI.getPermissionHookRegistry().register(
new LuckPermsHook(main),
new UltraPermissionsHook(main),
new AquaCoreHook(main)
);
builtInHook = new BuiltInHook(main);
this.main = main;
}
@@ -30,16 +31,15 @@ public class PermissionGetterImpl implements PermissionGetter {
@Override
public PermissionHook getSelected() {
if(selected != null) return selected;
if(hooks == null) {
throw new IllegalStateException("Hooks are not initialized yet!");
}
for(PermissionHook hook : hooks) {
if(hook.canUse()) {
for(PermissionHook hook : AjQueueAPI.getPermissionHookRegistry().getRegisteredHooks()) {
boolean canUse = hook.canUse();
Debug.info(hook.getName() + " "+ canUse);
if(canUse) {
selected = hook;
}
}
if(selected == null) {
throw new IllegalStateException("All hooks are unusable!");
selected = builtInHook;
}
main.getLogger().info("Using "+selected.getName()+" for permissions.");
return selected;
@@ -41,7 +41,7 @@ public class EstimatedTime extends Placeholder {
cache.put(p.getUniqueId(), response.getEither());
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
} catch (TimeoutException ignored) {}
} catch (TimeoutException | IllegalArgumentException ignored) {}
});
return cache.getOrDefault(p.getUniqueId(), "...");
@@ -40,7 +40,7 @@ public class InQueue extends Placeholder {
cache.put(p.getUniqueId(), response + "");
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
} catch (TimeoutException ignored) {}
} catch (TimeoutException | IllegalArgumentException ignored) {}
});
return cache.getOrDefault(p.getUniqueId(), "...");
@@ -41,7 +41,7 @@ public class Position extends Placeholder {
cache.put(p.getUniqueId(), response.getEither());
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
} catch (TimeoutException ignored) {}
} catch (TimeoutException | IllegalArgumentException ignored) {}
});
return cache.getOrDefault(p.getUniqueId(), "...");
@@ -41,7 +41,7 @@ public class PositionOf extends Placeholder {
cache.put(p.getUniqueId(), response.getEither());
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
} catch (TimeoutException ignored) {}
} catch (TimeoutException | IllegalArgumentException ignored) {}
});
return cache.getOrDefault(p.getUniqueId(), "...");
@@ -41,7 +41,7 @@ public class Queued extends Placeholder {
cache.put(p.getUniqueId(), response.getEither());
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
} catch (TimeoutException ignored) {}
} catch (TimeoutException | IllegalArgumentException ignored) {}
});
return cache.getOrDefault(p.getUniqueId(), "...");
@@ -50,7 +50,7 @@ public class Status extends Placeholder {
} else {
throw new RuntimeException(e);
}
} catch (TimeoutException ignored) {}
} catch (TimeoutException | IllegalArgumentException ignored) {}
});
return cached;
@@ -47,7 +47,7 @@ public class StatusPlayer extends Placeholder {
cache.put(key, response);
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
} catch (TimeoutException ignored) {}
} catch (TimeoutException | IllegalArgumentException ignored) {}
});
return cache.getOrDefault(key, "...");