This commit is contained in:
ajgeiss0702
2021-07-27 18:41:55 -07:00
parent 6e53584261
commit a88a142348
24 changed files with 404 additions and 88 deletions
+50
View File
@@ -0,0 +1,50 @@
plugins {
`java-library`
id("com.github.johnrengelman.shadow")
`maven-publish`
}
group = "us.ajg0702.queue"
repositories {
mavenCentral()
maven { url = uri("https://repo.ajg0702.us") }
}
dependencies {
implementation(project(":free"))
compileOnly(project(":api"))
compileOnly(project(":common"))
compileOnly("com.google.guava:guava:30.1.1-jre")
compileOnly("us.ajg0702:ajUtils:1.1.6")
compileOnly("net.kyori:adventure-api:4.8.1")
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifact(tasks["jar"])
}
}
repositories {
val mavenUrl = "https://repo.ajg0702.us/releases"
if(!System.getenv("REPO_TOKEN").isNullOrEmpty()) {
maven {
url = uri(mavenUrl)
name = "ajRepo"
credentials {
username = "plugins"
password = System.getenv("REPO_TOKEN")
}
}
}
}
}
@@ -0,0 +1,18 @@
package us.ajg0702.queue.logic;
import us.ajg0702.queue.api.AliasManager;
import us.ajg0702.queue.api.Logic;
import us.ajg0702.queue.api.LogicGetter;
import us.ajg0702.utils.common.Config;
public class LogicGetterImpl implements LogicGetter {
@Override
public Logic constructLogic() {
return new PremiumLogic();
}
@Override
public AliasManager constructAliasManager(Config config) {
return new PremiumAliasManager(config);
}
}
@@ -0,0 +1,37 @@
package us.ajg0702.queue.logic;
import us.ajg0702.queue.api.AliasManager;
import us.ajg0702.utils.common.Config;
import java.util.List;
public class PremiumAliasManager implements AliasManager {
private final Config config;
protected PremiumAliasManager(Config config) {
this.config = config;
}
@Override
public String getAlias(String server) {
List<String> aliasesraw = config.getStringList("server-aliases");
for(String aliasraw : aliasesraw) {
String realname = aliasraw.split(":")[0];
if(!realname.equalsIgnoreCase(server)) continue;
return aliasraw.split(":")[1];
}
return server;
}
@Override
public String getServer(String alias) {
List<String> aliasesraw = config.getStringList("server-aliases");
for(String aliasraw : aliasesraw) {
String salias = aliasraw.split(":")[1];
if(!alias.equalsIgnoreCase(salias)) continue;
return aliasraw.split(":")[0];
}
return alias;
}
}
@@ -0,0 +1,80 @@
package us.ajg0702.queue.logic;
import com.google.common.collect.ImmutableList;
import us.ajg0702.queue.api.Logic;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.api.players.QueuePlayer;
import us.ajg0702.queue.api.queues.QueueServer;
import us.ajg0702.queue.api.util.QueueLogger;
import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.queue.common.players.QueuePlayerImpl;
import us.ajg0702.queue.logic.permissions.PermissionGetter;
public class PremiumLogic implements Logic {
@Override
public boolean isPremium() {
return true;
}
@Override
public QueuePlayer priorityLogic(QueueServer server, AdaptedPlayer player) {
int maxOfflineTime = PermissionGetter.getMaxOfflineTime(player);
QueueMain main = QueueMain.getInstance();
if(player.hasPermission("ajqueue.bypass") || player.hasPermission("ajqueue.serverbypass."+server.getName())) {
QueuePlayer queuePlayer = new QueuePlayerImpl(player, server, Integer.MAX_VALUE, maxOfflineTime);
server.addPlayer(queuePlayer, 0);
main.getQueueManager().sendPlayers(server);
return queuePlayer;
}
int priority = PermissionGetter.getPriority(player);
int serverPriority = PermissionGetter.getServerPriotity(server.getName(), player);
int highestPriority = Math.max(priority, serverPriority);
QueuePlayer queuePlayer = new QueuePlayerImpl(player, server, highestPriority, maxOfflineTime);
QueueLogger logger = main.getLogger();
boolean debug = main.getConfig().getBoolean("priority-queue-debug");
if(debug) {
logger.info("[priority] "+player.getName()+" highestPriority: "+highestPriority);
logger.info("[priority] "+player.getName()+" priority: "+priority);
logger.info("[priority] "+player.getName()+" serverPriority: "+serverPriority);
}
if(highestPriority <= 0) {
if(debug) {
logger.info("[priority] "+player.getName()+" No priority" );
}
server.addPlayer(queuePlayer);
return queuePlayer;
}
ImmutableList<QueuePlayer> list = server.getQueue();
for(int i = 0; i < list.size(); i++) {
QueuePlayer pl = list.get(i);
if(pl.getPriority() < highestPriority) {
if(debug) {
logger.info("[priority] "+player.getName()+" Adding to: "+i);
}
server.addPlayer(queuePlayer, i);
return queuePlayer;
}
}
if(debug) {
logger.info("[priority] "+player.getName()+" Cant go infront of anyone" );
}
server.addPlayer(queuePlayer);
return queuePlayer;
}
@Override
public boolean playerDisconnectedTooLong(QueuePlayer player) {
return player.getTimeSinceOnline() > player.getMaxOfflineTime();
}
}
@@ -0,0 +1,20 @@
package us.ajg0702.queue.logic.permissions;
import us.ajg0702.queue.api.players.AdaptedPlayer;
public class PermissionGetter {
//TODO: all of this
public static int getMaxOfflineTime(AdaptedPlayer player) {
return -1;
}
public static int getPriority(AdaptedPlayer player) {
return -1;
}
public static int getServerPriotity(String server, AdaptedPlayer player) {
return -1;
}
}