Merge pull request #2769 from PEXPlugins/feature/vaultperms
Add Vault compatibility and fix PEX v2 usage
This commit is contained in:
commit
a412a5c613
5 changed files with 110 additions and 2 deletions
|
|
@ -8,10 +8,9 @@ plugins {
|
||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
mavenCentral()
|
|
||||||
maven { url "https://oss.sonatype.org/content/repositories/releases" }
|
maven { url "https://oss.sonatype.org/content/repositories/releases" }
|
||||||
maven { url "http://repo.mikeprimm.com" }
|
maven { url "http://repo.mikeprimm.com" }
|
||||||
maven { url "http://repo.maven.apache.org/maven2" }
|
maven { url "https://repo.maven.apache.org/maven2" }
|
||||||
maven { url "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" }
|
maven { url "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" }
|
||||||
maven { url "https://repo.codemc.org/repository/maven-public/" }
|
maven { url "https://repo.codemc.org/repository/maven-public/" }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,18 @@
|
||||||
|
|
||||||
description = 'dynmap'
|
description = 'dynmap'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url 'https://jitpack.io'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile group: 'org.bukkit', name: 'bukkit', version:'1.7.10-R0.1-SNAPSHOT'
|
compile group: 'org.bukkit', name: 'bukkit', version:'1.7.10-R0.1-SNAPSHOT'
|
||||||
compile 'com.nijikokun.bukkit:Permissions:3.1.6'
|
compile 'com.nijikokun.bukkit:Permissions:3.1.6'
|
||||||
compile 'me.lucko.luckperms:luckperms-api:4.3'
|
compile 'me.lucko.luckperms:luckperms-api:4.3'
|
||||||
compile 'net.luckperms:api:5.0'
|
compile 'net.luckperms:api:5.0'
|
||||||
|
compile('com.github.MilkBowl:VaultAPI:1.7') { transitive = false }
|
||||||
compile project(":dynmap-api")
|
compile project(":dynmap-api")
|
||||||
compile project(path: ":DynmapCore", configuration: "shadow")
|
compile project(path: ":DynmapCore", configuration: "shadow")
|
||||||
compile group: 'ru.tehkode', name: 'PermissionsEx', version:'1.19.1'
|
compile group: 'ru.tehkode', name: 'PermissionsEx', version:'1.19.1'
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,7 @@ import org.dynmap.bukkit.permissions.PEXPermissions;
|
||||||
import org.dynmap.bukkit.permissions.PermBukkitPermissions;
|
import org.dynmap.bukkit.permissions.PermBukkitPermissions;
|
||||||
import org.dynmap.bukkit.permissions.GroupManagerPermissions;
|
import org.dynmap.bukkit.permissions.GroupManagerPermissions;
|
||||||
import org.dynmap.bukkit.permissions.PermissionProvider;
|
import org.dynmap.bukkit.permissions.PermissionProvider;
|
||||||
|
import org.dynmap.bukkit.permissions.VaultPermissions;
|
||||||
import org.dynmap.bukkit.permissions.bPermPermissions;
|
import org.dynmap.bukkit.permissions.bPermPermissions;
|
||||||
import org.dynmap.bukkit.permissions.LuckPermsPermissions;
|
import org.dynmap.bukkit.permissions.LuckPermsPermissions;
|
||||||
import org.dynmap.bukkit.permissions.LuckPerms5Permissions;
|
import org.dynmap.bukkit.permissions.LuckPerms5Permissions;
|
||||||
|
|
@ -854,6 +855,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
||||||
perdefs.put(p.getName(), p.getDefault() == PermissionDefault.TRUE);
|
perdefs.put(p.getName(), p.getDefault() == PermissionDefault.TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
permissions = PEXPermissions.create(getServer(), "dynmap");
|
permissions = PEXPermissions.create(getServer(), "dynmap");
|
||||||
if (permissions == null)
|
if (permissions == null)
|
||||||
permissions = bPermPermissions.create(getServer(), "dynmap", perdefs);
|
permissions = bPermPermissions.create(getServer(), "dynmap", perdefs);
|
||||||
|
|
@ -867,6 +869,8 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
||||||
permissions = LuckPermsPermissions.create(getServer(), "dynmap");
|
permissions = LuckPermsPermissions.create(getServer(), "dynmap");
|
||||||
if (permissions == null)
|
if (permissions == null)
|
||||||
permissions = LuckPerms5Permissions.create(getServer(), "dynmap");
|
permissions = LuckPerms5Permissions.create(getServer(), "dynmap");
|
||||||
|
if (permissions == null)
|
||||||
|
permissions = VaultPermissions.create(this, "dynmap");
|
||||||
if (permissions == null)
|
if (permissions == null)
|
||||||
permissions = BukkitPermissions.create("dynmap", perdefs);
|
permissions = BukkitPermissions.create("dynmap", perdefs);
|
||||||
if (permissions == null)
|
if (permissions == null)
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,17 @@ public class PEXPermissions implements PermissionProvider {
|
||||||
Plugin permissionsPlugin = server.getPluginManager().getPlugin("PermissionsEx");
|
Plugin permissionsPlugin = server.getPluginManager().getPlugin("PermissionsEx");
|
||||||
if (permissionsPlugin == null)
|
if (permissionsPlugin == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
Class.forName("ru.tehkode.permissions.bukkit.PermissionsEx");
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
server.getPluginManager().enablePlugin(permissionsPlugin);
|
server.getPluginManager().enablePlugin(permissionsPlugin);
|
||||||
if(permissionsPlugin.isEnabled() == false)
|
if(permissionsPlugin.isEnabled() == false)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
//Broken in new dev builds, apparently
|
//Broken in new dev builds, apparently
|
||||||
//if(PermissionsEx.isAvailable() == false)
|
//if(PermissionsEx.isAvailable() == false)
|
||||||
// return null;
|
// return null;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
package org.dynmap.bukkit.permissions;
|
||||||
|
|
||||||
|
import net.milkbowl.vault.permission.Permission;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.server.ServiceRegisterEvent;
|
||||||
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
|
import org.dynmap.Log;
|
||||||
|
import org.dynmap.bukkit.DynmapPlugin;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class VaultPermissions implements PermissionProvider, Listener {
|
||||||
|
private RegisteredServiceProvider<Permission> permissionProvider;
|
||||||
|
private final String prefix;
|
||||||
|
|
||||||
|
public static VaultPermissions create(DynmapPlugin plugin, String name) {
|
||||||
|
try {
|
||||||
|
Class.forName("net.milkbowl.vault.permission.Permission");
|
||||||
|
} catch (ClassNotFoundException cnfx) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
RegisteredServiceProvider<Permission> provider = plugin.getServer().getServicesManager().getRegistration(Permission.class);
|
||||||
|
if (provider == null || provider.getProvider() == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
Log.info("Using Vault provider " + provider.getProvider().getName() + " for access control");
|
||||||
|
VaultPermissions ret = new VaultPermissions(name, provider);
|
||||||
|
plugin.getServer().getPluginManager().registerEvents(ret, plugin);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
private VaultPermissions(String prefix, RegisteredServiceProvider<Permission> initialProvider) {
|
||||||
|
this.prefix = prefix;
|
||||||
|
this.permissionProvider = initialProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the used permission provider if a new one becomes available
|
||||||
|
*
|
||||||
|
* @param event The event with new service registration details
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@EventHandler
|
||||||
|
public void onServiceRegister(ServiceRegisterEvent event) {
|
||||||
|
if (event.getProvider().getService().equals(Permission.class)) {
|
||||||
|
RegisteredServiceProvider<Permission> newProvider = (RegisteredServiceProvider<Permission>) event.getProvider().getProvider();
|
||||||
|
if (newProvider != this.permissionProvider && newProvider.getPriority().compareTo(this.permissionProvider.getPriority()) >= 0) {
|
||||||
|
this.permissionProvider = newProvider;
|
||||||
|
Log.info("Using Vault provider " + this.permissionProvider.getProvider().getName() + " for access control");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean has(CommandSender sender, String permission) {
|
||||||
|
return permissionProvider.getProvider().has(sender, processPermission(permission));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<String> hasOfflinePermissions(String playerName, Set<String> perms) {
|
||||||
|
final Permission vault = this.permissionProvider.getProvider();
|
||||||
|
OfflinePlayer player = Bukkit.getOfflinePlayer(playerName);
|
||||||
|
|
||||||
|
Set<String> hasperms = new HashSet<>();
|
||||||
|
|
||||||
|
for (String perm : perms) {
|
||||||
|
if (vault.playerHas(null, player, processPermission(perm))) {
|
||||||
|
hasperms.add(perm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return hasperms;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasOfflinePermission(String playerName, String perm) {
|
||||||
|
OfflinePlayer player = Bukkit.getOfflinePlayer(playerName);
|
||||||
|
return permissionProvider.getProvider().playerHas(null, player, processPermission(perm));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String processPermission(String perm) {
|
||||||
|
return prefix + "." + perm;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue