Merge branch 'dev' of gitlab.com:ajg0702/ajqueue into dev

# Conflicts:
#	api/src/main/java/us/ajg0702/queue/api/queues/QueueServer.java
This commit is contained in:
ajgeiss0702
2021-10-09 11:34:41 -07:00
9 changed files with 58 additions and 11 deletions
@@ -3,6 +3,7 @@ package us.ajg0702.queue.api.commands;
import net.kyori.adventure.audience.Audience; import net.kyori.adventure.audience.Audience;
import us.ajg0702.queue.api.util.Handle; import us.ajg0702.queue.api.util.Handle;
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
public interface ICommandSender extends Handle, Audience { public interface ICommandSender extends Handle, Audience {
boolean hasPermission(String permission); boolean hasPermission(String permission);
boolean isPlayer(); boolean isPlayer();
@@ -13,7 +13,7 @@ import java.util.UUID;
/** /**
* Represents a server or a group that can be queued for * Represents a server or a group that can be queued for
*/ */
@SuppressWarnings("unused") @SuppressWarnings({"unused", "BooleanMethodIsAlwaysInverted"})
public interface QueueServer { public interface QueueServer {
/** /**
@@ -238,6 +238,13 @@ public interface QueueServer {
*/ */
Balancer getBalancer(); Balancer getBalancer();
/**
* Checks if the player can join this server even if its full
* @param player The player
* @return If the player can join this server if its full
*/
boolean canJoinFull(AdaptedPlayer player);
/** /**
* elliot is bad * elliot is bad
@@ -54,6 +54,7 @@ public class BaseCommand implements IBaseCommand {
sender.sendMessage(Component.text("Unimplemented command")); sender.sendMessage(Component.text("Unimplemented command"));
} }
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
public boolean checkPermission(ICommandSender sender) { public boolean checkPermission(ICommandSender sender) {
if(getPermission() != null && !sender.hasPermission(getPermission())) { if(getPermission() != null && !sender.hasPermission(getPermission())) {
sender.sendMessage(getMessages().getComponent("noperm")); sender.sendMessage(getMessages().getComponent("noperm"));
@@ -33,6 +33,10 @@ public class EventHandlerImpl implements EventHandler {
try { try {
String subchannel = in.readUTF(); String subchannel = in.readUTF();
if(subchannel.equals("ack")) {
main.getPlatformMethods().sendPluginMessage(recievingPlayer, "ack", "yes, im here");
}
if(subchannel.equals("queue")) { if(subchannel.equals("queue")) {
String rawData = in.readUTF(); String rawData = in.readUTF();
String[] args = new String[1]; String[] args = new String[1];
@@ -530,11 +530,7 @@ public class QueueManagerImpl implements QueueManager {
AdaptedPlayer player = p.getPlayer(); AdaptedPlayer player = p.getPlayer();
if(player == null) continue; if(player == null) continue;
boolean bypassFull = if(server.isFull() && !server.canJoinFull(p.getPlayer())) continue;
p.getPlayer().hasPermission("ajqueue.joinfull") ||
p.getPlayer().hasPermission("ajqueue.joinfullserver."+server.getName());
if(server.isFull() && !bypassFull) continue;
AdaptedServer selected = server.getIdealServer(player); AdaptedServer selected = server.getIdealServer(player);
if(selected == null) { if(selected == null) {
@@ -580,7 +576,7 @@ public class QueueManagerImpl implements QueueManager {
if(!server.canAccess(nextPlayer)) continue; if(!server.canAccess(nextPlayer)) continue;
if(server.isFull() && !nextPlayer.hasPermission("ajqueue.joinfull")) continue; if(server.isFull() && !server.canJoinFull(nextPlayer)) continue;
if(main.getConfig().getBoolean("enable-bypasspaused-permission")) { if(main.getConfig().getBoolean("enable-bypasspaused-permission")) {
if(server.isPaused() && !nextPlayer.hasPermission("ajqueue.bypasspaused")) continue; if(server.isPaused() && !nextPlayer.hasPermission("ajqueue.bypasspaused")) continue;
@@ -253,12 +253,16 @@ public class QueueServerImpl implements QueueServer {
@Override @Override
public boolean isJoinable(AdaptedPlayer p) { public boolean isJoinable(AdaptedPlayer p) {
if(p != null && isWhitelisted() && !whitelistedUUIDs.contains(p.getUniqueId())) { if(p != null) {
return false; if (isWhitelisted() && !whitelistedUUIDs.contains(p.getUniqueId())) {
return false;
}
if (isFull() && !canJoinFull(p)) {
return false;
}
} }
return isOnline() && return isOnline() &&
canAccess(p) && canAccess(p) &&
!isFull() &&
!isPaused(); !isPaused();
} }
@@ -428,4 +432,13 @@ public class QueueServerImpl implements QueueServer {
public void setSupportedProtocols(List<Integer> list) { public void setSupportedProtocols(List<Integer> list) {
supportedProtocols = new ArrayList<>(list); supportedProtocols = new ArrayList<>(list);
} }
@Override
public boolean canJoinFull(AdaptedPlayer player) {
return
player.hasPermission("ajqueue.joinfull") ||
player.hasPermission("ajqueue.joinfullserver."+name) ||
player.hasPermission("ajqueue.joinfullandbypassserver."+name) ||
player.hasPermission("ajqueue.joinfullandbypass");
}
} }
@@ -39,6 +39,8 @@ public class PremiumLogic implements Logic {
if( if(
player.hasPermission("ajqueue.bypass") || player.hasPermission("ajqueue.bypass") ||
player.hasPermission("ajqueue.serverbypass."+server.getName()) || player.hasPermission("ajqueue.serverbypass."+server.getName()) ||
player.hasPermission("ajqueue.joinfullandbypassserver."+server.getName()) ||
player.hasPermission("ajqueue.joinfullandbypass") ||
permissionGetter.hasContextBypass(player, server.getName()) permissionGetter.hasContextBypass(player, server.getName())
) { ) {
if(debug) { if(debug) {
@@ -17,6 +17,10 @@ public class Commands implements CommandExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
if(!pl.hasProxy()) {
sender.sendMessage(color("&cajQueue must also be installed on the proxy!&7 If it has been installed on the proxy, make sure it loaded correctly and try relogging."));
return true;
}
Player player = null; Player player = null;
if(sender instanceof Player) { if(sender instanceof Player) {
player = (Player) sender; player = (Player) sender;
@@ -9,6 +9,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
@@ -27,6 +28,8 @@ public class SpigotMain extends JavaPlugin implements PluginMessageListener,List
ConfigFile config; ConfigFile config;
boolean hasProxy = false;
@SuppressWarnings("ConstantConditions") @SuppressWarnings("ConstantConditions")
public void onEnable() { public void onEnable() {
getServer().getMessenger().registerIncomingPluginChannel(this, "ajqueue:tospigot", this); getServer().getMessenger().registerIncomingPluginChannel(this, "ajqueue:tospigot", this);
@@ -75,6 +78,10 @@ public class SpigotMain extends JavaPlugin implements PluginMessageListener,List
getLogger().info("Spigot side enabled! v"+getDescription().getVersion()); getLogger().info("Spigot side enabled! v"+getDescription().getVersion());
} }
public boolean hasProxy() {
return hasProxy;
}
final HashMap<Player, String> queuebatch = new HashMap<>(); final HashMap<Player, String> queuebatch = new HashMap<>();
@Override @Override
@@ -85,6 +92,10 @@ public class SpigotMain extends JavaPlugin implements PluginMessageListener,List
String subchannel = in.readUTF(); String subchannel = in.readUTF();
if(subchannel.equals("ack")) {
hasProxy = true;
}
if(subchannel.equals("inqueueevent")) { if(subchannel.equals("inqueueevent")) {
String playername = in.readUTF(); String playername = in.readUTF();
Player p = Bukkit.getPlayer(playername); Player p = Bukkit.getPlayer(playername);
@@ -180,6 +191,14 @@ public class SpigotMain extends JavaPlugin implements PluginMessageListener,List
placeholders.cleanCache(); placeholders.cleanCache();
} }
@EventHandler
public void onJoin(PlayerJoinEvent e) {
if(hasProxy) return;
Bukkit.getScheduler().runTask(this, () -> {
sendMessage(e.getPlayer(), "ack", "");
});
}
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.HIGH)
public void onServerPing(ServerListPingEvent e) { public void onServerPing(ServerListPingEvent e) {
if(!config.getBoolean("take-over-motd-for-whitelist")) return; if(!config.getBoolean("take-over-motd-for-whitelist")) return;