ChestShop-3/src/main/java/com/Acrobot/ChestShop/Plugins/WorldGuardBuilding.java

50 lines
1.9 KiB
Java

package com.Acrobot.ChestShop.Plugins;
import com.Acrobot.ChestShop.Configuration.Properties;
import com.Acrobot.ChestShop.Events.Protection.BuildPermissionEvent;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.internal.platform.WorldGuardPlatform;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.managers.RegionManager;
import org.bukkit.Location;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
/**
* @author Acrobot
*/
public class WorldGuardBuilding implements Listener {
private WorldGuardPlugin worldGuard;
private WorldGuardPlatform worldGuardPlatform;
public WorldGuardBuilding(Plugin plugin) {
this.worldGuard = (WorldGuardPlugin) plugin;
this.worldGuardPlatform = WorldGuard.getInstance().getPlatform();
}
@EventHandler
public void canBuild(BuildPermissionEvent event) {
ApplicableRegionSet regions = getApplicableRegions(event.getSign().getBlock().getLocation());
if (regions == null) {
event.allow(false);
} else if (Properties.WORLDGUARD_USE_FLAG) {
event.allow(regions.queryState(worldGuard.wrapPlayer(event.getPlayer()), WorldGuardFlags.ENABLE_SHOP) == StateFlag.State.ALLOW);
} else {
event.allow(regions.size() > 0);
}
}
private ApplicableRegionSet getApplicableRegions(Location location) {
RegionManager regionManager = worldGuardPlatform.getRegionContainer().get(BukkitAdapter.adapt(location.getWorld()));
if (regionManager == null) {
return null;
}
return regionManager.getApplicableRegions(BukkitAdapter.adapt(location).toVector().toBlockPoint());
}
}