New modules again + some pom refactor

This commit is contained in:
2022-07-22 00:17:36 +02:00
parent f4d436671c
commit aff229164c
17 changed files with 1314 additions and 50 deletions

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>pandalib-parent</artifactId>
<groupId>fr.pandacube.lib</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>pandalib-bungee-permissions</artifactId>
<repositories>
<repository>
<id>bungeecord-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>fr.pandacube.lib</groupId>
<artifactId>pandalib-players-permissible</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>fr.pandacube.lib</groupId>
<artifactId>pandalib-permissions</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId>
<version>${bungeecord.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,57 @@
package fr.pandacube.lib.bungee.permissions;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.connection.Server;
import net.md_5.bungee.api.event.PermissionCheckEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.event.EventHandler;
import fr.pandacube.lib.permissions.Permissions;
import fr.pandacube.lib.players.permissible.PermissibleOnlinePlayer;
import fr.pandacube.lib.players.permissible.PermissiblePlayerManager;
public class PandalibBungeePermissions implements Listener {
public static void init(Plugin bungeePlugin) {
ProxyServer.getInstance().getPluginManager().registerListener(bungeePlugin, new PandalibBungeePermissions());
}
@EventHandler(priority = Byte.MAX_VALUE)
public void onPermissionCheck(PermissionCheckEvent event)
{
CommandSender s = event.getSender();
if (s instanceof ProxiedPlayer p) {
event.setHasPermission(hasPerm(p, event.getPermission()));
}
else {
event.setHasPermission(true);
}
}
private volatile boolean tryPermPlayerManager = true;
private boolean hasPerm(ProxiedPlayer p, String permission) {
if (tryPermPlayerManager) {
try {
PermissiblePlayerManager<?, ?> pm = PermissiblePlayerManager.getInstance();
if (pm != null) {
PermissibleOnlinePlayer op = pm.get(p.getUniqueId());
if (op != null) {
return op.hasPermission(permission);
}
}
} catch (NoClassDefFoundError ignored) {
tryPermPlayerManager = false;
}
}
// if not using player manager, fallback to directly call permissions API
Server sv = p.getServer();
String server = sv == null ? null : sv.getInfo().getName();
return Permissions.getPlayer(p.getUniqueId()).hasPermissionOr(permission, server, null, false);
}
}