Navigation Menu

Skip to content

Commit

Permalink
Minor refactor of permissions handlers
Browse files Browse the repository at this point in the history
* 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)
  • Loading branch information
mdcfe committed Dec 26, 2019
1 parent 1c4ce7b commit 4ce7dfa
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 33 deletions.
Expand Up @@ -97,7 +97,7 @@ public boolean tryProvider() {
public void checkPermissions() {
// load and assign a handler
List<Class<? extends SuperpermsHandler>> providerClazz = Arrays.asList(
PermissionsExHandler.class,
ModernVaultHandler.class,
GenericVaultHandler.class,
SuperpermsHandler.class
);
Expand Down
@@ -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());
}
}

This file was deleted.

Expand Up @@ -10,6 +10,10 @@


public class SuperpermsHandler implements IPermissionsHandler {
protected boolean emulateWildcards() {
return true;
}

@Override
public String getGroup(final Player base) {
return null;
Expand All @@ -22,7 +26,7 @@ public List<String> getGroups(final Player base) {

@Override
public boolean canBuild(final Player base, final String group) {
return false;
return hasPermission(base, "essentials.build");
}

@Override
Expand All @@ -32,6 +36,10 @@ public boolean inGroup(final Player base, final String group) {

@Override
public boolean hasPermission(final Player base, String node) {
if (!emulateWildcards()) {
return base.hasPermission(node);
}

String permCheck = node;
int index;
while (true) {
Expand Down
@@ -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;
Expand All @@ -12,7 +16,11 @@
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;
Expand All @@ -21,12 +29,6 @@
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");
Expand Down Expand Up @@ -92,7 +94,7 @@ public void onBlockPlace(final BlockPlaceEvent event) {
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()));
}
Expand All @@ -119,7 +121,7 @@ public void onBlockBreak(final BlockBreakEvent event) {
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()));
}
Expand Down Expand Up @@ -147,7 +149,7 @@ public void onHangingBreak(final HangingBreakByEntityEvent event) {
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()));
Expand Down Expand Up @@ -202,7 +204,7 @@ public void onPlayerInteract(final PlayerInteractEvent event) {
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()) {
Expand All @@ -227,7 +229,7 @@ public void onCraftItemEvent(final CraftItemEvent event) {
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()) {
Expand All @@ -244,7 +246,7 @@ public void onPlayerDropItem(final PlayerDropItemEvent event) {
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();
Expand All @@ -271,7 +273,7 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) {
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);
Expand All @@ -287,7 +289,7 @@ public void onPlayerPickupItem(PlayerPickupItemEvent event) {
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);
Expand Down

0 comments on commit 4ce7dfa

Please sign in to comment.