add aquacore support (but it doesnt work because it turns out aquacore api is only on spigot)

This commit is contained in:
ajgeiss0702
2021-08-21 07:56:39 -07:00
parent 8bec8aeea7
commit 434e5e2a88
23 changed files with 153 additions and 31 deletions
+11 -5
View File
@@ -5,11 +5,17 @@
[Spigot (premium)](https://www.spigotmc.org/resources/ajqueueplus.79123/) [Spigot (premium)](https://www.spigotmc.org/resources/ajqueueplus.79123/)
ajQueue is (as far as I can tell) the best queue plugin out there. ajQueue is (as far as I can tell) the best queue plugin out there.
It was made because I wasn't satisfied with the existing queue plugins, all of them either being massively overpriced, It was made because I wasn't satisfied with the existing queue plugins,
or lacking basic features all of them either being massively overpriced, or lacking basic features
# Contributing # Contributing
As long as you don't break anything, i'll probably accept any merge requests you submit. As long as you don't break anything,
I like to have the least number of steps possible for server owners updating my plugin. i'll probably accept any merge requests you submit.
I like to have the least number of steps possible for server owners
updating my plugin.
If you need *any* help making your changes, feel free to contact me on discord. The invite link is on the plugin page ;) If you need *any* help making your changes, feel free to contact me
on discord. The invite link is on the plugin page ;)
# Note on compiling ajQueuePlus
If you want to compile ajQueuePlus, please read the readme file that is in libs/private
@@ -1,4 +1,4 @@
package us.ajg0702.queue.api; package us.ajg0702.queue.api.premium;
import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.players.QueuePlayer; import us.ajg0702.queue.api.players.QueuePlayer;
@@ -26,4 +26,10 @@ public interface Logic {
* @return true if the player has been disconnected for too long and should be removed from the queue * @return true if the player has been disconnected for too long and should be removed from the queue
*/ */
boolean playerDisconnectedTooLong(QueuePlayer player); boolean playerDisconnectedTooLong(QueuePlayer player);
/**
* Gets the permissionGetter. Only available on ajQueuePlus
* @return the permission getter
*/
PermissionGetter getPermissionGetter();
} }
@@ -1,6 +1,8 @@
package us.ajg0702.queue.api; package us.ajg0702.queue.api.premium;
import us.ajg0702.queue.api.AliasManager;
import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.premium.Logic;
import us.ajg0702.utils.common.Config; import us.ajg0702.utils.common.Config;
import java.util.List; import java.util.List;
@@ -10,4 +12,5 @@ public interface LogicGetter {
Logic constructLogic(); Logic constructLogic();
AliasManager constructAliasManager(Config config); AliasManager constructAliasManager(Config config);
List<String> getPermissions(AdaptedPlayer player); List<String> getPermissions(AdaptedPlayer player);
PermissionGetter getPermissionGetter();
} }
@@ -0,0 +1,14 @@
package us.ajg0702.queue.api.premium;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.premium.PermissionHook;
public interface PermissionGetter {
PermissionHook getSelected();
int getMaxOfflineTime(AdaptedPlayer player);
int getPriority(AdaptedPlayer player);
int getServerPriotity(String server, AdaptedPlayer player);
}
@@ -1,4 +1,4 @@
package us.ajg0702.queue.logic.permissions; package us.ajg0702.queue.api.premium;
import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.AdaptedPlayer;
+1 -1
View File
@@ -12,7 +12,7 @@ repositories {
} }
allprojects { allprojects {
version = "2.0.4-pre1" version = "2.0.4-pre2"
group = "us.ajg0702" group = "us.ajg0702"
plugins.apply("java") plugins.apply("java")
@@ -83,6 +83,7 @@ public class ManageCommand extends BaseCommand {
if(args.length > 1) { if(args.length > 1) {
for(ISubCommand subCommand : subCommands) { for(ISubCommand subCommand : subCommands) {
if(args[0].equalsIgnoreCase(subCommand.getName()) || subCommand.getAliases().contains(args[0].toLowerCase(Locale.ROOT))) { if(args[0].equalsIgnoreCase(subCommand.getName()) || subCommand.getAliases().contains(args[0].toLowerCase(Locale.ROOT))) {
if(!sender.hasPermission(subCommand.getPermission())) continue;
return subCommand.autoComplete(sender, Arrays.copyOfRange(args, 1, args.length)); return subCommand.autoComplete(sender, Arrays.copyOfRange(args, 1, args.length));
} }
} }
@@ -91,6 +92,7 @@ public class ManageCommand extends BaseCommand {
List<String> commands = new ArrayList<>(); List<String> commands = new ArrayList<>();
for(ISubCommand subCommand : subCommands) { for(ISubCommand subCommand : subCommands) {
if(!subCommand.showInTabComplete()) continue; if(!subCommand.showInTabComplete()) continue;
if(!sender.hasPermission(subCommand.getPermission())) continue;
commands.add(subCommand.getName()); commands.add(subCommand.getName());
commands.addAll(subCommand.getAliases()); commands.addAll(subCommand.getAliases());
} }
@@ -65,6 +65,11 @@ public class PermissionList extends SubCommand {
if(!s.toLowerCase(Locale.ROOT).contains("ajqueue")) return; if(!s.toLowerCase(Locale.ROOT).contains("ajqueue")) return;
sender.sendMessage(Component.text(s)); sender.sendMessage(Component.text(s));
}); });
sender.sendMessage(
Component.text(
"Using: "+main.getLogicGetter().getPermissionGetter().getSelected().getName())
.color(NamedTextColor.GOLD)
);
} }
@Override @Override
@@ -2,6 +2,8 @@ package us.ajg0702.queue.common;
import org.spongepowered.configurate.ConfigurateException; import org.spongepowered.configurate.ConfigurateException;
import us.ajg0702.queue.api.*; import us.ajg0702.queue.api.*;
import us.ajg0702.queue.api.premium.Logic;
import us.ajg0702.queue.api.premium.LogicGetter;
import us.ajg0702.queue.api.util.QueueLogger; import us.ajg0702.queue.api.util.QueueLogger;
import us.ajg0702.queue.common.utils.LogConverter; import us.ajg0702.queue.common.utils.LogConverter;
import us.ajg0702.queue.logic.LogicGetterImpl; import us.ajg0702.queue.logic.LogicGetterImpl;
@@ -312,6 +312,7 @@ public class QueueManagerImpl implements QueueManager {
"TIME:"+ TimeUtils.timeString(time, msgs.getString("format.time.mins"), msgs.getString("format.time.secs")) "TIME:"+ TimeUtils.timeString(time, msgs.getString("format.time.mins"), msgs.getString("format.time.secs"))
)); ));
} }
} }
} }
} }
@@ -341,7 +342,7 @@ public class QueueManagerImpl implements QueueManager {
"SERVER:"+server.getAlias(), "SERVER:"+server.getAlias(),
"STATUS:"+status "STATUS:"+status
); );
Component subTitleMessage = msgs.getComponent("title.title", Component subTitleMessage = msgs.getComponent("title.subtitle",
"POS:"+pos, "POS:"+pos,
"LEN:"+server.getQueue().size(), "LEN:"+server.getQueue().size(),
"SERVER:"+server.getAlias(), "SERVER:"+server.getAlias(),
@@ -1,8 +1,9 @@
package us.ajg0702.queue.logic; package us.ajg0702.queue.logic;
import us.ajg0702.queue.api.Logic; import us.ajg0702.queue.api.premium.Logic;
import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.players.QueuePlayer; import us.ajg0702.queue.api.players.QueuePlayer;
import us.ajg0702.queue.api.premium.PermissionGetter;
import us.ajg0702.queue.api.queues.QueueServer; import us.ajg0702.queue.api.queues.QueueServer;
public class FreeLogic implements Logic { public class FreeLogic implements Logic {
@@ -20,4 +21,9 @@ public class FreeLogic implements Logic {
public boolean playerDisconnectedTooLong(QueuePlayer player) { public boolean playerDisconnectedTooLong(QueuePlayer player) {
return player.getMaxOfflineTime() < player.getTimeSinceOnline()*1000; return player.getMaxOfflineTime() < player.getTimeSinceOnline()*1000;
} }
@Override
public PermissionGetter getPermissionGetter() {
return null;
}
} }
@@ -1,13 +1,15 @@
package us.ajg0702.queue.logic; package us.ajg0702.queue.logic;
import us.ajg0702.queue.api.AliasManager; import us.ajg0702.queue.api.AliasManager;
import us.ajg0702.queue.api.Logic; import us.ajg0702.queue.api.premium.Logic;
import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.premium.LogicGetter;
import us.ajg0702.queue.api.premium.PermissionGetter;
import us.ajg0702.utils.common.Config; import us.ajg0702.utils.common.Config;
import java.util.List; import java.util.List;
public class LogicGetterImpl implements us.ajg0702.queue.api.LogicGetter { public class LogicGetterImpl implements LogicGetter {
@Override @Override
public Logic constructLogic() { public Logic constructLogic() {
@@ -23,4 +25,9 @@ public class LogicGetterImpl implements us.ajg0702.queue.api.LogicGetter {
public List<String> getPermissions(AdaptedPlayer player) { public List<String> getPermissions(AdaptedPlayer player) {
return null; return null;
} }
@Override
public PermissionGetter getPermissionGetter() {
return null;
}
} }
Binary file not shown.
@@ -5,6 +5,7 @@ import com.google.common.io.ByteStreams;
import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.connection.Server;
import us.ajg0702.queue.api.PlatformMethods; import us.ajg0702.queue.api.PlatformMethods;
import us.ajg0702.queue.api.commands.IBaseCommand; import us.ajg0702.queue.api.commands.IBaseCommand;
import us.ajg0702.queue.api.commands.ICommandSender; import us.ajg0702.queue.api.commands.ICommandSender;
@@ -40,13 +41,15 @@ public class BungeeMethods implements PlatformMethods {
ByteArrayDataOutput out = ByteStreams.newDataOutput(); ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF(channel); out.writeUTF(channel);
out.writeUTF(player.getName()); out.writeUTF(player.getName());
int length = data.length;
for (String s : data) { for (String s : data) {
out.writeUTF(s); out.writeUTF(s);
} }
ProxiedPlayer proxiedPlayer = ((BungeePlayer) player).getHandle();
((BungeePlayer) player).getHandle().getServer().sendData("ajqueue:tospigot", out.toByteArray()); if(proxiedPlayer == null) return;
Server server = proxiedPlayer.getServer();
if(server == null) return;
server.sendData("ajqueue:tospigot", out.toByteArray());
} }
} }
@@ -29,6 +29,7 @@ import us.ajg0702.queue.platforms.bungeecord.players.BungeePlayer;
import us.ajg0702.queue.platforms.bungeecord.server.BungeeServer; import us.ajg0702.queue.platforms.bungeecord.server.BungeeServer;
import java.io.File; import java.io.File;
import java.time.Duration;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
+3 -2
View File
@@ -21,11 +21,12 @@ dependencies {
compileOnly("com.google.guava:guava:30.1.1-jre") compileOnly("com.google.guava:guava:30.1.1-jre")
compileOnly("us.ajg0702:ajUtils:1.1.9") compileOnly("us.ajg0702:ajUtils:1.1.10")
compileOnly("net.kyori:adventure-api:4.8.1") compileOnly("net.kyori:adventure-api:4.8.1")
compileOnly(fileTree(mapOf("dir" to "../libs", "include" to listOf("*.jar")))) compileOnly(fileTree(mapOf("dir" to "../libs/private", "include" to listOf("*.jar"))))
compileOnly(fileTree(mapOf("dir" to "../libs/public", "include" to listOf("*.jar"))))
compileOnly("net.luckperms:api:5.0") compileOnly("net.luckperms:api:5.0")
} }
@@ -1,11 +1,11 @@
package us.ajg0702.queue.logic; package us.ajg0702.queue.logic;
import us.ajg0702.queue.api.AliasManager; import us.ajg0702.queue.api.AliasManager;
import us.ajg0702.queue.api.Logic; import us.ajg0702.queue.api.premium.Logic;
import us.ajg0702.queue.api.LogicGetter; import us.ajg0702.queue.api.premium.LogicGetter;
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.common.QueueMain; import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.queue.logic.permissions.PermissionGetter;
import us.ajg0702.utils.common.Config; import us.ajg0702.utils.common.Config;
import java.util.List; import java.util.List;
@@ -31,4 +31,9 @@ public class LogicGetterImpl implements LogicGetter {
if(logic == null) return null; if(logic == null) return null;
return logic.getPermissionGetter().getSelected().getPermissions(player); return logic.getPermissionGetter().getSelected().getPermissions(player);
} }
@Override
public PermissionGetter getPermissionGetter() {
return logic.getPermissionGetter();
}
} }
@@ -1,14 +1,15 @@
package us.ajg0702.queue.logic; package us.ajg0702.queue.logic;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import us.ajg0702.queue.api.Logic; import us.ajg0702.queue.api.premium.Logic;
import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.players.QueuePlayer; import us.ajg0702.queue.api.players.QueuePlayer;
import us.ajg0702.queue.api.queues.QueueServer; import us.ajg0702.queue.api.queues.QueueServer;
import us.ajg0702.queue.api.util.QueueLogger; import us.ajg0702.queue.api.util.QueueLogger;
import us.ajg0702.queue.common.QueueMain; import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.queue.common.players.QueuePlayerImpl; import us.ajg0702.queue.common.players.QueuePlayerImpl;
import us.ajg0702.queue.logic.permissions.PermissionGetter; import us.ajg0702.queue.api.premium.PermissionGetter;
import us.ajg0702.queue.logic.permissions.PermissionGetterImpl;
public class PremiumLogic implements Logic { public class PremiumLogic implements Logic {
@@ -18,7 +19,7 @@ public class PremiumLogic implements Logic {
private final PermissionGetter permissionGetter; private final PermissionGetter permissionGetter;
public PremiumLogic(QueueMain main) { public PremiumLogic(QueueMain main) {
permissionGetter = new PermissionGetter(main); permissionGetter = new PermissionGetterImpl(main);
} }
@Override @Override
@@ -1,28 +1,33 @@
package us.ajg0702.queue.logic.permissions; package us.ajg0702.queue.logic.permissions;
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.PermissionHook;
import us.ajg0702.queue.common.QueueMain; import us.ajg0702.queue.common.QueueMain;
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;
import us.ajg0702.queue.logic.permissions.hooks.UltraPermissionsHook; import us.ajg0702.queue.logic.permissions.hooks.UltraPermissionsHook;
import java.util.*; import java.util.*;
public class PermissionGetter { public class PermissionGetterImpl implements PermissionGetter {
private final List<PermissionHook> hooks; private final List<PermissionHook> hooks;
private final QueueMain main; private final QueueMain main;
public PermissionGetter(QueueMain main) { public PermissionGetterImpl(QueueMain main) {
hooks = Arrays.asList( hooks = Arrays.asList(
new BuiltInHook(main), new BuiltInHook(main),
new LuckPermsHook(main), new LuckPermsHook(main),
new UltraPermissionsHook(main) new UltraPermissionsHook(main),
new AquaCoreHook(main)
); );
this.main = main; this.main = main;
} }
private PermissionHook selected; private PermissionHook selected;
@Override
public PermissionHook getSelected() { public PermissionHook getSelected() {
if(selected != null) return selected; if(selected != null) return selected;
if(hooks == null) { if(hooks == null) {
@@ -40,14 +45,17 @@ public class PermissionGetter {
return selected; return selected;
} }
@Override
public int getMaxOfflineTime(AdaptedPlayer player) { public int getMaxOfflineTime(AdaptedPlayer player) {
return getHighestPermission(player, "ajqueue.stayqueued."); return getHighestPermission(player, "ajqueue.stayqueued.");
} }
@Override
public int getPriority(AdaptedPlayer player) { public int getPriority(AdaptedPlayer player) {
return getHighestPermission(player, "ajqueue.priority."); return getHighestPermission(player, "ajqueue.priority.");
} }
@Override
public int getServerPriotity(String server, AdaptedPlayer player) { public int getServerPriotity(String server, AdaptedPlayer player) {
return getHighestPermission(player, "ajqueue.serverpriority."+server+"."); return getHighestPermission(player, "ajqueue.serverpriority."+server+".");
} }
@@ -0,0 +1,51 @@
package us.ajg0702.queue.logic.permissions.hooks;
import me.activated.core.plugin.AquaCoreAPI;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.queue.api.premium.PermissionHook;
import java.util.ArrayList;
import java.util.List;
public class AquaCoreHook implements PermissionHook {
private final QueueMain main;
public AquaCoreHook(QueueMain main) {
this.main = main;
}
@Override
public String getName() {
return "AquaCore";
}
@Override
public boolean canUse() {
if(!main.getPlatformMethods().hasPlugin("AquaProxy") ) return false;
try {
if(AquaCoreAPI.INSTANCE == null) {
main.getLogger().warn("AquaCore is installed, but its INSTANCE returned null! Unable to hook into it.");
return false;
}
} catch(NoClassDefFoundError e) {
main.getLogger().warning("AquaCore seems to be installed, but its api doesnt seem to be!");
return false;
}
return true;
}
@Override
public List<String> getPermissions(AdaptedPlayer player) {
AquaCoreAPI api = AquaCoreAPI.INSTANCE;
List<String> permissions = new ArrayList<>();
api.getPlayerData(player.getUniqueId()).getActiveGrants().forEach(grant -> {
if(!grant.isActiveSomewhere() || grant.hasExpired()) return;
permissions.addAll(grant.getRank().getAvailablePermissions());
});
return permissions;
}
}
@@ -2,7 +2,7 @@ package us.ajg0702.queue.logic.permissions.hooks;
import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.common.QueueMain; import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.queue.logic.permissions.PermissionHook; import us.ajg0702.queue.api.premium.PermissionHook;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -8,7 +8,7 @@ import net.luckperms.api.node.NodeType;
import net.luckperms.api.query.QueryOptions; import net.luckperms.api.query.QueryOptions;
import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.common.QueueMain; import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.queue.logic.permissions.PermissionHook; import us.ajg0702.queue.api.premium.PermissionHook;
import java.util.*; import java.util.*;
@@ -5,7 +5,7 @@ import me.TechsCode.UltraPermissions.UltraPermissionsAPI;
import me.TechsCode.UltraPermissions.storage.objects.User; import me.TechsCode.UltraPermissions.storage.objects.User;
import us.ajg0702.queue.api.players.AdaptedPlayer; import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.common.QueueMain; import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.queue.logic.permissions.PermissionHook; import us.ajg0702.queue.api.premium.PermissionHook;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -27,7 +27,7 @@ public class UltraPermissionsHook implements PermissionHook {
public boolean canUse() { public boolean canUse() {
if(!main.getPlatformMethods().hasPlugin("UltraPermissions") ) return false; if(!main.getPlatformMethods().hasPlugin("UltraPermissions") ) return false;
if(UltraPermissions.getAPI() == null) { if(UltraPermissions.getAPI() == null) {
main.getLogger().warn("UltraPermissions getApi() method returned null! Unable to hook into it."); main.getLogger().warn("UltraPermissions is installed, but its getApi() method returned null! Unable to hook into it.");
return false; return false;
} }
return true; return true;