Drop Vault for LuckPerms

This commit is contained in:
NotAlexNoyle committed 2026-04-25 08:30:16 -04:00
1 parent 628040a439
commit e97966187e
5 files changed
+185 -127

No files matched your search

+1
View File
@@ -44,6 +44,7 @@ dependencies {
"compileOnly"("org.jetbrains:annotations:20.1.0")
"implementation"("io.papermc:paperlib:1.0.7")
"compileOnly"("com.sk89q:dummypermscompat:1.10")
"compileOnly"("net.luckperms:api:5.5")
"implementation"("org.bstats:bstats-bukkit:2.2.1")
"implementation"("it.unimi.dsi:fastutil")
project.project(":worldedit-bukkit:adapters").subprojects.forEach {
@@ -0,0 +1,158 @@
/*
* WorldEdit, a Minecraft world manipulation toolkit
* Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.sk89q.wepif;
import com.sk89q.util.yaml.YAMLProcessor;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.context.ImmutableContextSet;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
import net.luckperms.api.model.user.UserManager;
import net.luckperms.api.query.QueryOptions;
import org.bukkit.OfflinePlayer;
import org.bukkit.Server;
import org.bukkit.plugin.RegisteredServiceProvider;
import java.util.Locale;
import java.util.UUID;
public class LuckPermsResolver implements PermissionsResolver {
private static LuckPerms luckPerms = null;
public static PermissionsResolver factory(Server server, YAMLProcessor config) {
if (server.getPluginManager().getPlugin("LuckPerms") == null) {
return null;
}
RegisteredServiceProvider<LuckPerms> rsp = server.getServicesManager().getRegistration(LuckPerms.class);
if (rsp == null) {
return null;
}
luckPerms = rsp.getProvider();
if (luckPerms == null) {
return null;
}
return new LuckPermsResolver(server);
}
private final Server server;
public LuckPermsResolver(Server server) {
this.server = server;
}
@Override
public void load() {
}
@Override
public String getDetectionMessage() {
return "LuckPerms detected! Using LuckPerms for permissions";
}
@Override
@SuppressWarnings("deprecation")
public boolean hasPermission(String name, String permission) {
return hasPermission(server.getOfflinePlayer(name), permission);
}
@Override
@SuppressWarnings("deprecation")
public boolean hasPermission(String worldName, String name, String permission) {
return hasPermission(worldName, server.getOfflinePlayer(name), permission);
}
@Override
@SuppressWarnings("deprecation")
public boolean inGroup(String player, String group) {
return inGroup(server.getOfflinePlayer(player), group);
}
@Override
@SuppressWarnings("deprecation")
public String[] getGroups(String player) {
return getGroups(server.getOfflinePlayer(player));
}
@Override
public boolean hasPermission(OfflinePlayer player, String permission) {
return hasPermission(resolveWorld(player), player, permission);
}
@Override
public boolean hasPermission(String worldName, OfflinePlayer player, String permission) {
User user = loadUser(player.getUniqueId());
if (user == null) {
return false;
}
return user.getCachedData().getPermissionData(queryOptions(worldName))
.checkPermission(permission).asBoolean();
}
@Override
public boolean inGroup(OfflinePlayer player, String group) {
User user = loadUser(player.getUniqueId());
if (user == null) {
return false;
}
return user.getInheritedGroups(queryOptions(resolveWorld(player))).stream()
.anyMatch(g -> g.getName().equalsIgnoreCase(group));
}
@Override
public String[] getGroups(OfflinePlayer player) {
User user = loadUser(player.getUniqueId());
if (user == null) {
return new String[0];
}
return user.getInheritedGroups(queryOptions(resolveWorld(player))).stream()
.map(Group::getName)
.toArray(String[]::new);
}
private static String resolveWorld(OfflinePlayer player) {
if (player.isOnline() && player.getPlayer() != null) {
return player.getPlayer().getWorld().getName();
}
return null;
}
private static QueryOptions queryOptions(String worldName) {
if (worldName == null) {
return luckPerms.getContextManager().getStaticQueryOptions();
}
return QueryOptions.contextual(ImmutableContextSet.of("world", worldName.toLowerCase(Locale.ROOT)));
}
private static User loadUser(UUID uuid) {
UserManager userManager = luckPerms.getUserManager();
User user = userManager.getUser(uuid);
if (user != null) {
return user;
}
try {
return userManager.loadUser(uuid).join();
} catch (Exception e) {
return null;
}
}
}
@@ -91,7 +91,7 @@ public class PermissionsResolverManager implements PermissionsResolver {
bPermissionsResolver.class,
GroupManagerResolver.class,
NijiPermissionsResolver.class,
VaultResolver.class,
LuckPermsResolver.class,
DinnerPermsResolver.class,
FlatFilePermissionsResolver.class
};
@@ -220,6 +220,10 @@ public class PermissionsResolverManager implements PermissionsResolver {
} else {
List<String> disabledResolvers = config.getStringList("resolvers.disabled", new ArrayList<>());
List<String> stagedEnabled = config.getStringList("resolvers.enabled", null);
if (migrateVaultToLuckPerms(stagedEnabled) | migrateVaultToLuckPerms(disabledResolvers)) {
LOGGER.info("WEPIF: Migrated VaultResolver entry to LuckPermsResolver in wepif.yml");
isUpdated = true;
}
for (Iterator<String> i = stagedEnabled.iterator(); i.hasNext();) {
String nextName = i.next();
Class<?> next = null;
@@ -270,6 +274,24 @@ public class PermissionsResolverManager implements PermissionsResolver {
return isUpdated;
}
private static boolean migrateVaultToLuckPerms(List<String> entries) {
if (entries == null) {
return false;
}
boolean changed = false;
for (int i = 0; i < entries.size(); i++) {
if ("VaultResolver".equals(entries.get(i))) {
if (entries.contains("LuckPermsResolver")) {
entries.remove(i--);
} else {
entries.set(i, "LuckPermsResolver");
}
changed = true;
}
}
return changed;
}
public static class MissingPluginException extends Exception {
}
@@ -282,7 +304,7 @@ public class PermissionsResolverManager implements PermissionsResolver {
setPluginPermissionsResolver(plugin);
} else if ("permissions".equalsIgnoreCase(name) || "permissionsex".equalsIgnoreCase(name)
|| "bpermissions".equalsIgnoreCase(name) || "groupmanager".equalsIgnoreCase(name)
|| "vault".equalsIgnoreCase(name)) {
|| "luckperms".equalsIgnoreCase(name)) {
load();
}
}
@@ -294,7 +316,7 @@ public class PermissionsResolverManager implements PermissionsResolver {
if (event.getPlugin() instanceof PermissionsProvider
|| "permissions".equalsIgnoreCase(name) || "permissionsex".equalsIgnoreCase(name)
|| "bpermissions".equalsIgnoreCase(name) || "groupmanager".equalsIgnoreCase(name)
|| "vault".equalsIgnoreCase(name)) {
|| "luckperms".equalsIgnoreCase(name)) {
load();
}
}
@@ -1,123 +0,0 @@
/*
* WorldEdit, a Minecraft world manipulation toolkit
* Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldEdit team and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.sk89q.wepif;
import com.sk89q.util.yaml.YAMLProcessor;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.OfflinePlayer;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
public class VaultResolver implements PermissionsResolver {
private static Permission perms = null;
public static PermissionsResolver factory(Server server, YAMLProcessor config) {
if (server.getPluginManager().getPlugin("Vault") == null) {
return null;
}
RegisteredServiceProvider<Permission> rsp = server.getServicesManager().getRegistration(Permission.class);
if (rsp == null) {
return null;
}
perms = rsp.getProvider();
if (perms == null) {
return null;
}
return new VaultResolver(server);
}
private final Server server;
public VaultResolver(Server server) {
this.server = server;
}
@Override
public void load() {
}
@Override
public String getDetectionMessage() {
return "Vault detected! Using Vault for permissions";
}
@Override
@SuppressWarnings("deprecation")
public boolean hasPermission(String name, String permission) {
return hasPermission(server.getOfflinePlayer(name), permission);
}
@Override
@SuppressWarnings("deprecation")
public boolean hasPermission(String worldName, String name, String permission) {
return hasPermission(worldName, server.getOfflinePlayer(name), permission);
}
@Override
@SuppressWarnings("deprecation")
public boolean inGroup(String player, String group) {
return inGroup(server.getOfflinePlayer(player), group);
}
@Override
@SuppressWarnings("deprecation")
public String[] getGroups(String player) {
return getGroups(server.getOfflinePlayer(player));
}
@Override
public boolean hasPermission(OfflinePlayer player, String permission) {
Player onlinePlayer = player.getPlayer();
if (onlinePlayer == null) {
return perms.playerHas(null, player, permission);
} else {
return perms.playerHas(onlinePlayer.getWorld().getName(), player, permission);
}
}
@Override
public boolean hasPermission(String worldName, OfflinePlayer player, String permission) {
return perms.playerHas(worldName, player, permission);
}
@Override
public boolean inGroup(OfflinePlayer player, String group) {
Player onlinePlayer = player.getPlayer();
if (onlinePlayer == null) {
return perms.playerInGroup(null, player, group);
} else {
return perms.playerInGroup(onlinePlayer, group);
}
}
@Override
public String[] getGroups(OfflinePlayer player) {
Player onlinePlayer = player.getPlayer();
if (onlinePlayer == null) {
return perms.getPlayerGroups(null, player);
} else {
return perms.getPlayerGroups(onlinePlayer);
}
}
}
@@ -3,6 +3,6 @@ main: com.sk89q.worldedit.bukkit.WorldEditPlugin
version: "${internalVersion}"
load: STARTUP
api-version: 1.13
softdepend: [Vault]
softdepend: [LuckPerms]
author: EngineHub
website: https://enginehub.org/worldedit