mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-11 11:49:12 +00:00
Minor refactor of permissions handlers
* Move `essentials.build` perm check from AntiBuild into default SuperPerms handler * Don't emulate wildcards for LuckPerms or PEX * Add `build: true` meta support for LuckPerms (+ other plugins as needed)
This commit is contained in:
parent
1c4ce7b4bd
commit
4ce7dfa8f0
5 changed files with 53 additions and 33 deletions
|
@ -97,7 +97,7 @@ public class PermissionsHandler implements IPermissionsHandler {
|
|||
public void checkPermissions() {
|
||||
// load and assign a handler
|
||||
List<Class<? extends SuperpermsHandler>> providerClazz = Arrays.asList(
|
||||
PermissionsExHandler.class,
|
||||
ModernVaultHandler.class,
|
||||
GenericVaultHandler.class,
|
||||
SuperpermsHandler.class
|
||||
);
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package com.earth2me.essentials.perm.impl;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class ModernVaultHandler extends AbstractVaultHandler {
|
||||
private final List<String> supportedPlugins = Arrays.asList("PermissionsEx", "LuckPerms");
|
||||
|
||||
@Override
|
||||
protected boolean emulateWildcards() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBuild(final Player base, final String group) {
|
||||
Objects.requireNonNull(base, "Can't check build override for nonexistent player!");
|
||||
return super.canBuild(base, group) || chat.getPlayerInfoBoolean(base.getWorld().getName(), base, "build", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryProvider() {
|
||||
return super.canLoad() && supportedPlugins.contains(getEnabledPermsPlugin());
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
package com.earth2me.essentials.perm.impl;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PermissionsExHandler extends AbstractVaultHandler {
|
||||
@Override
|
||||
public boolean canBuild(final Player base, final String group) {
|
||||
return base != null && chat.getPlayerInfoBoolean(base.getWorld().getName(), base, "build", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryProvider() {
|
||||
return super.canLoad() && Bukkit.getPluginManager().getPlugin("PermissionsEx") != null;
|
||||
}
|
||||
}
|
|
@ -10,6 +10,10 @@ import java.util.List;
|
|||
|
||||
|
||||
public class SuperpermsHandler implements IPermissionsHandler {
|
||||
protected boolean emulateWildcards() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGroup(final Player base) {
|
||||
return null;
|
||||
|
@ -22,7 +26,7 @@ public class SuperpermsHandler implements IPermissionsHandler {
|
|||
|
||||
@Override
|
||||
public boolean canBuild(final Player base, final String group) {
|
||||
return false;
|
||||
return hasPermission(base, "essentials.build");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -32,6 +36,10 @@ public class SuperpermsHandler implements IPermissionsHandler {
|
|||
|
||||
@Override
|
||||
public boolean hasPermission(final Player base, String node) {
|
||||
if (!emulateWildcards()) {
|
||||
return base.hasPermission(node);
|
||||
}
|
||||
|
||||
String permCheck = node;
|
||||
int index;
|
||||
while (true) {
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
package com.earth2me.essentials.antibuild;
|
||||
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import net.ess3.api.IEssentials;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
@ -12,7 +16,11 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.*;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockDispenseEvent;
|
||||
import org.bukkit.event.block.BlockPistonExtendEvent;
|
||||
import org.bukkit.event.block.BlockPistonRetractEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
||||
import org.bukkit.event.inventory.CraftItemEvent;
|
||||
|
@ -21,12 +29,6 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||
import org.bukkit.event.player.PlayerPickupItemEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class EssentialsAntiBuildListener implements Listener {
|
||||
private static final Logger logger = Logger.getLogger("EssentialsAntiBuild");
|
||||
|
@ -92,7 +94,7 @@ public class EssentialsAntiBuildListener implements Listener {
|
|||
final Block block = event.getBlockPlaced();
|
||||
final Material type = block.getType();
|
||||
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build") && !metaPermCheck(user, "place", block)) {
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !metaPermCheck(user, "place", block)) {
|
||||
if (ess.getSettings().warnOnBuildDisallow()) {
|
||||
user.sendMessage(tl("antiBuildPlace", type.toString()));
|
||||
}
|
||||
|
@ -119,7 +121,7 @@ public class EssentialsAntiBuildListener implements Listener {
|
|||
final Block block = event.getBlock();
|
||||
final Material type = block.getType();
|
||||
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build") && !metaPermCheck(user, "break", block)) {
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !metaPermCheck(user, "break", block)) {
|
||||
if (ess.getSettings().warnOnBuildDisallow()) {
|
||||
user.sendMessage(tl("antiBuildBreak", type.toString()));
|
||||
}
|
||||
|
@ -147,7 +149,7 @@ public class EssentialsAntiBuildListener implements Listener {
|
|||
final User user = ess.getUser((Player) entity);
|
||||
final EntityType type = event.getEntity().getType();
|
||||
final boolean warn = ess.getSettings().warnOnBuildDisallow();
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build")) {
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild()) {
|
||||
if (type == EntityType.PAINTING && !metaPermCheck(user, "break", Material.PAINTING)) {
|
||||
if (warn) {
|
||||
user.sendMessage(tl("antiBuildBreak", Material.PAINTING.toString()));
|
||||
|
@ -202,7 +204,7 @@ public class EssentialsAntiBuildListener implements Listener {
|
|||
prot.getEssentialsConnect().alert(user, item.getType().toString(), tl("alertUsed"));
|
||||
}
|
||||
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) {
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild()) {
|
||||
if (event.hasItem() && !metaPermCheck(user, "interact", item.getType(), item.getDurability())) {
|
||||
event.setCancelled(true);
|
||||
if (ess.getSettings().warnOnBuildDisallow()) {
|
||||
|
@ -227,7 +229,7 @@ public class EssentialsAntiBuildListener implements Listener {
|
|||
final User user = ess.getUser((Player) entity);
|
||||
final ItemStack item = event.getRecipe().getResult();
|
||||
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) {
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild()) {
|
||||
if (!metaPermCheck(user, "craft", item.getType(), item.getDurability())) {
|
||||
event.setCancelled(true);
|
||||
if (ess.getSettings().warnOnBuildDisallow()) {
|
||||
|
@ -244,7 +246,7 @@ public class EssentialsAntiBuildListener implements Listener {
|
|||
final User user = ess.getUser(event.getPlayer());
|
||||
final ItemStack item = event.getItemDrop().getItemStack();
|
||||
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) {
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild()) {
|
||||
if (!metaPermCheck(user, "drop", item.getType(), item.getDurability())) {
|
||||
event.setCancelled(true);
|
||||
user.getBase().updateInventory();
|
||||
|
@ -271,7 +273,7 @@ public class EssentialsAntiBuildListener implements Listener {
|
|||
final User user = ess.getUser((Player) event.getEntity());
|
||||
final ItemStack item = event.getItem().getItemStack();
|
||||
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) {
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild()) {
|
||||
if (!metaPermCheck(user, "pickup", item.getType(), item.getDurability())) {
|
||||
event.setCancelled(true);
|
||||
event.getItem().setPickupDelay(50);
|
||||
|
@ -287,7 +289,7 @@ public class EssentialsAntiBuildListener implements Listener {
|
|||
final User user = ess.getUser(event.getPlayer());
|
||||
final ItemStack item = event.getItem().getItemStack();
|
||||
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) {
|
||||
if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild()) {
|
||||
if (!metaPermCheck(user, "pickup", item.getType(), item.getDurability())) {
|
||||
event.setCancelled(true);
|
||||
event.getItem().setPickupDelay(50);
|
||||
|
|
Loading…
Reference in a new issue