pre6 - UltraPermissions hook & bstats

This commit is contained in:
ajgeiss0702
2021-08-05 17:28:11 -07:00
parent cde8c0a49c
commit 4e6c10ccb2
8 changed files with 76 additions and 2 deletions
@@ -51,6 +51,7 @@ public class PermissionList extends SubCommand {
sender.sendMessage(Component.text("no permission handler")); sender.sendMessage(Component.text("no permission handler"));
return; return;
} }
permissions.forEach(s -> { permissions.forEach(s -> {
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));
+2
View File
@@ -24,6 +24,8 @@ dependencies {
implementation("net.kyori:adventure-platform-bungeecord:4.0.0-SNAPSHOT") implementation("net.kyori:adventure-platform-bungeecord:4.0.0-SNAPSHOT")
compileOnly("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT") compileOnly("net.kyori:adventure-text-serializer-plain:4.0.0-SNAPSHOT")
implementation("org.bstats:bstats-bungeecord:2.2.1")
implementation(project(":common")) implementation(project(":common"))
implementation(project(":api")) implementation(project(":api"))
} }
@@ -8,6 +8,8 @@ import net.md_5.bungee.api.event.*;
import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.event.EventHandler; import net.md_5.bungee.event.EventHandler;
import org.bstats.bungeecord.Metrics;
import org.bstats.charts.SimplePie;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import us.ajg0702.queue.api.commands.IBaseCommand; import us.ajg0702.queue.api.commands.IBaseCommand;
import us.ajg0702.queue.api.util.QueueLogger; import us.ajg0702.queue.api.util.QueueLogger;
@@ -61,6 +63,11 @@ public class BungeeQueue extends Plugin implements Listener {
getProxy().getPluginManager().registerListener(this, this); getProxy().getPluginManager().registerListener(this, this);
Metrics metrics = new Metrics(this, 7404);
metrics.addCustomChart(new SimplePie("premium", () -> String.valueOf(main.getLogic().isPremium())));
metrics.addCustomChart(new SimplePie("implementation", () -> main.getPlatformMethods().getImplementationName()));
} }
private static BungeeAudiences adventure; private static BungeeAudiences adventure;
+2
View File
@@ -21,6 +21,8 @@ dependencies {
annotationProcessor("com.velocitypowered:velocity-api:3.0.0") annotationProcessor("com.velocitypowered:velocity-api:3.0.0")
compileOnly("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT") compileOnly("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT")
implementation("org.bstats:bstats-velocity:2.2.1")
implementation(project(":common")) implementation(project(":common"))
implementation(project(":api")) implementation(project(":api"))
} }
@@ -15,6 +15,8 @@ import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier; import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bstats.charts.SimplePie;
import org.bstats.velocity.Metrics;
import org.slf4j.Logger; import org.slf4j.Logger;
import us.ajg0702.queue.api.commands.IBaseCommand; import us.ajg0702.queue.api.commands.IBaseCommand;
import us.ajg0702.queue.commands.BaseCommand; import us.ajg0702.queue.commands.BaseCommand;
@@ -50,12 +52,16 @@ public class VelocityQueue {
final File dataFolder; final File dataFolder;
private final Metrics.Factory metricsFactory;
@Inject @Inject
public VelocityQueue(ProxyServer proxyServer, Logger logger, @DataDirectory Path dataFolder) { public VelocityQueue(ProxyServer proxyServer, Logger logger, @DataDirectory Path dataFolder, Metrics.Factory metricsFactory) {
this.proxyServer = proxyServer; this.proxyServer = proxyServer;
this.logger = new VelocityLogger(logger); this.logger = new VelocityLogger(logger);
this.dataFolder = dataFolder.toFile(); this.dataFolder = dataFolder.toFile();
this.metricsFactory = metricsFactory;
} }
List<IBaseCommand> commands; List<IBaseCommand> commands;
@@ -90,6 +96,12 @@ public class VelocityQueue {
new VelocityCommand(main, (BaseCommand) command) new VelocityCommand(main, (BaseCommand) command)
); );
} }
Metrics metrics = metricsFactory.make(this, 7404);
metrics.addCustomChart(new SimplePie("premium", () -> String.valueOf(main.getLogic().isPremium())));
metrics.addCustomChart(new SimplePie("implementation", () -> main.getPlatformMethods().getImplementationName()));
} }
@Subscribe @Subscribe
@@ -126,6 +138,7 @@ public class VelocityQueue {
main.getEventHandler().onPlayerLeave(new VelocityPlayer(e.getPlayer())); main.getEventHandler().onPlayerLeave(new VelocityPlayer(e.getPlayer()));
} }
@SuppressWarnings("SimplifyOptionalCallChains")
@Subscribe @Subscribe
public void onKick(KickedFromServerEvent e) { public void onKick(KickedFromServerEvent e) {
if(!e.getPlayer().getCurrentServer().isPresent()) return; // if the player is kicked on initial join, we dont care if(!e.getPlayer().getCurrentServer().isPresent()) return; // if the player is kicked on initial join, we dont care
+2
View File
@@ -26,6 +26,8 @@ dependencies {
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("net.luckperms:api:5.0") compileOnly("net.luckperms:api:5.0")
} }
@@ -4,6 +4,7 @@ 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.hooks.BuiltIn; import us.ajg0702.queue.logic.permissions.hooks.BuiltIn;
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 java.util.*; import java.util.*;
@@ -15,7 +16,8 @@ public class PermissionGetter {
public PermissionGetter(QueueMain main) { public PermissionGetter(QueueMain main) {
hooks = Arrays.asList( hooks = Arrays.asList(
new BuiltIn(main), new BuiltIn(main),
new LuckPermsHook(main) new LuckPermsHook(main),
new UltraPermissionsHook(main)
); );
} }
@@ -30,6 +32,7 @@ public class PermissionGetter {
selected = hook; selected = hook;
} }
} }
main.getLogger().info("Using "+selected.getName()+" for permissions.");
return selected; return selected;
} }
@@ -0,0 +1,44 @@
package us.ajg0702.queue.logic.permissions.hooks;
import me.TechsCode.UltraPermissions.UltraPermissions;
import me.TechsCode.UltraPermissions.UltraPermissionsAPI;
import me.TechsCode.UltraPermissions.storage.objects.User;
import us.ajg0702.queue.api.players.AdaptedPlayer;
import us.ajg0702.queue.common.QueueMain;
import us.ajg0702.queue.logic.permissions.PermissionHook;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@SuppressWarnings("SimplifyOptionalCallChains")
public class UltraPermissionsHook implements PermissionHook {
private final QueueMain main;
public UltraPermissionsHook(QueueMain main) {
this.main = main;
}
@Override
public String getName() {
return "UltraPermissions";
}
@Override
public boolean canUse() {
return main.getPlatformMethods().hasPlugin("UltraPermissions");
}
@Override
public List<String> getPermissions(AdaptedPlayer player) {
UltraPermissionsAPI ultraPermissionsAPI = UltraPermissions.getAPI();
Optional<User> userOptional = ultraPermissionsAPI.getUsers().uuid(player.getUniqueId());
if(!userOptional.isPresent()) return new ArrayList<>();
User user = userOptional.get();
List<String> permissions = new ArrayList<>();
user.getPermissions().bungee().forEach(permission -> permissions.add(permission.getName()));
return permissions;
}
}