mirror of
https://github.com/exituser/Brewery.git
synced 2026-09-17 05:28:59 +00:00
64 lines
2.1 KiB
Java
64 lines
2.1 KiB
Java
package com.dre.brewery.integration;
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
|
|
import org.bukkit.block.Block;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.plugin.Plugin;
|
|
|
|
import com.dre.brewery.P;
|
|
import com.sk89q.worldguard.LocalPlayer;
|
|
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
|
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
|
import com.sk89q.worldguard.protection.flags.DefaultFlag;
|
|
import com.sk89q.worldguard.protection.flags.StateFlag;
|
|
import com.sk89q.worldguard.protection.managers.RegionManager;
|
|
|
|
|
|
public class WGBarrelOld implements WGBarrel {
|
|
|
|
private Method allows;
|
|
private Method canBuild;
|
|
private Method getApplicableRegions;
|
|
|
|
public WGBarrelOld() {
|
|
try {
|
|
allows = ApplicableRegionSet.class.getMethod("allows", StateFlag.class, LocalPlayer.class);
|
|
canBuild = ApplicableRegionSet.class.getMethod("canBuild", LocalPlayer.class);
|
|
getApplicableRegions = RegionManager.class.getMethod("getApplicableRegions", Location.class);
|
|
} catch (NoSuchMethodException e) {
|
|
P.p.errorLog("Failed to Hook WorldGuard for Barrel Open Permissions! Opening Barrels will NOT work!");
|
|
P.p.errorLog("Brewery was tested with version 5.8, 6.1 to 7.0 of WorldGuard!");
|
|
P.p.errorLog("Disable the WorldGuard support in the config and do /brew reload");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@SuppressWarnings("deprecation")
|
|
public boolean checkAccess(Player player, Block spigot, Plugin plugin) {
|
|
WorldGuardPlugin wg = (WorldGuardPlugin) plugin;
|
|
if (!wg.getGlobalRegionManager().hasBypass(player, player.getWorld())) {
|
|
try {
|
|
Object region = getApplicableRegions.invoke(wg.getRegionManager(player.getWorld()), spigot.getLocation());
|
|
|
|
if (region != null) {
|
|
LocalPlayer localPlayer = wg.wrapPlayer(player);
|
|
|
|
if (!(Boolean) allows.invoke(region, DefaultFlag.CHEST_ACCESS, localPlayer)) {
|
|
if (!(Boolean) canBuild.invoke(region, localPlayer)) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
} catch (IllegalAccessException | InvocationTargetException e) {
|
|
e.printStackTrace();
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|