package com.nisovin.magicspells.castmodifiers.conditions;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import com.nisovin.magicspells.castmodifiers.Condition;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
public class InRegionCondition extends Condition {
WorldGuardPlugin worldGuard;
String worldName;
String regionName;
ProtectedRegion region;
@Override
public boolean setVar(String var) {
if (var == null) return false;
worldGuard = (WorldGuardPlugin)Bukkit.getPluginManager().getPlugin("WorldGuard");
if (worldGuard == null || !worldGuard.isEnabled()) return false;
String[] split = var.split(":");
if (split.length == 2) {
worldName = split[0];
regionName = split[1];
return true;
} else {
return false;
}
}
@Override
public boolean check(Player player) {
return check(player, player.getLocation());
}
@Override
public boolean check(Player player, LivingEntity target) {
return check(player, target.getLocation());
}
@Override
public boolean check(Player player, Location location) {
if (region == null) {
World world = Bukkit.getWorld(worldName);
if (world == null) return false;
if (!world.equals(location.getWorld())) return false;
RegionManager regionManager = worldGuard.getRegionManager(world);
if (regionManager == null) return false;
region = regionManager.getRegion(regionName);
}
if (region == null) return false;
return region.contains(new Vector(location.getX(), location.getY(), location.getZ()));
}
}