New general Barrel open perms checker + Towny

This commit is contained in:
Sn0wStorm
2020-11-03 21:28:50 +01:00
parent d77d511dae
commit 4228bbc02c
18 changed files with 176 additions and 6 deletions
@@ -9,6 +9,7 @@ import com.dre.brewery.filedata.BConfig;
import com.dre.brewery.integration.barrel.GriefPreventionBarrel;
import com.dre.brewery.integration.barrel.LWCBarrel;
import com.dre.brewery.integration.barrel.LogBlockBarrel;
import com.dre.brewery.integration.barrel.TownyBarrel;
import com.dre.brewery.integration.item.MMOItemsPluginItem;
import com.dre.brewery.recipe.BCauldronRecipe;
import com.dre.brewery.recipe.RecipeItem;
@@ -17,7 +18,9 @@ import net.mmogroup.mmolib.api.item.NBTItem;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -106,6 +109,7 @@ public class IntegrationListener implements Listener {
} else {
P.p.msg(player, "&cError opening Barrel, please report to an Admin!");
}
return;
}
}
}
@@ -124,6 +128,7 @@ public class IntegrationListener implements Listener {
if (!LWCBarrel.checkAccess(player, sign, plugin)) {
P.p.msg(event.getPlayer(), P.p.languageReader.get("Error_NoBarrelAccess"));
event.setCancelled(true);
return;
}
} catch (Throwable e) {
event.setCancelled(true);
@@ -137,11 +142,75 @@ public class IntegrationListener implements Listener {
} else {
P.p.msg(player, "&cError opening Barrel, please report to an Admin!");
}
return;
}
}
}
}
}
if (BConfig.useTowny) {
if (P.p.getServer().getPluginManager().isPluginEnabled("Towny")) {
try {
if (!TownyBarrel.checkAccess(event)) {
P.p.msg(event.getPlayer(), P.p.languageReader.get("Error_NoBarrelAccess"));
event.setCancelled(true);
return;
}
} catch (Throwable e) {
event.setCancelled(true);
P.p.errorLog("Failed to Check Towny for Barrel Open Permissions!");
P.p.errorLog("Brewery was tested with Towny v0.96.3.0");
P.p.errorLog("Disable the Towny support in the config and do /brew reload");
e.printStackTrace();
Player player = event.getPlayer();
if (player.hasPermission("brewery.admin") || player.hasPermission("brewery.mod")) {
P.p.msg(player, "&cTowny check Error, Brewery was tested with up to v0.96.3.0 of Towny");
P.p.msg(player, "&cSet &7useTowny: false &cin the config and /brew reload");
} else {
P.p.msg(player, "&cError opening Barrel, please report to an Admin!");
}
return;
}
}
}
if (BConfig.virtualChestPerms) {
Player player = event.getPlayer();
BlockState originalBlockState = event.getClickedBlock().getState();
event.getClickedBlock().setType(Material.CHEST, false);
PlayerInteractEvent simulatedEvent = new PlayerInteractEvent(
player,
Action.RIGHT_CLICK_BLOCK,
player.getInventory().getItemInMainHand(),
event.getClickedBlock(),
event.getClickedBlockFace(),
EquipmentSlot.HAND);
try {
P.p.getServer().getPluginManager().callEvent(simulatedEvent);
} catch (Throwable e) {
P.p.errorLog("Failed to simulate a Chest for Barrel Open Permissions!");
P.p.errorLog("Disable useVirtualChestPerms in the config and do /brew reload");
e.printStackTrace();
if (player.hasPermission("brewery.admin") || player.hasPermission("brewery.mod")) {
P.p.msg(player, "&cVirtual Chest Error");
P.p.msg(player, "&cSet &7useVirtualChestPerms: false &cin the config and /brew reload");
} else {
P.p.msg(player, "&cError opening Barrel, please report to an Admin!");
}
} finally {
event.getClickedBlock().setType(Material.AIR, false);
originalBlockState.update(true);
}
if (simulatedEvent.useInteractedBlock() == Event.Result.DENY) {
event.setCancelled(true);
P.p.msg(event.getPlayer(), P.p.languageReader.get("Error_NoBarrelAccess"));
//return;
}
}
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOW)
@@ -0,0 +1,23 @@
package com.dre.brewery.integration.barrel;
import com.dre.brewery.P;
import com.dre.brewery.api.events.barrel.BarrelAccessEvent;
import com.palmergames.bukkit.towny.TownySettings;
import com.palmergames.bukkit.towny.object.TownyPermission;
import com.palmergames.bukkit.towny.utils.PlayerCacheUtil;
import org.bukkit.Material;
public class TownyBarrel {
public static boolean checkAccess(BarrelAccessEvent event) {
if (!TownySettings.isSwitchMaterial("BREWERY") && !TownySettings.isSwitchMaterial("BARREL")) {
if (P.use1_14) {
return true;
} else if (!TownySettings.isSwitchMaterial("CHEST")) {
return true;
}
}
Material mat = P.use1_14 ? Material.BARREL : Material.CHEST;
return PlayerCacheUtil.getCachePermission(event.getPlayer(), event.getSpigot().getLocation(), mat, TownyPermission.ActionType.SWITCH);
}
}