FastAsyncWorldedit/src/main/java/com/boydti/fawe/bukkit/regions/Worldguard.java

94 lines
3.8 KiB
Java

package com.boydti.fawe.bukkit.regions;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
import com.boydti.fawe.bukkit.FaweBukkit;
import com.boydti.fawe.object.FawePlayer;
import com.sk89q.worldedit.BlockVector;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
public class Worldguard extends BukkitMaskManager implements Listener {
WorldGuardPlugin worldguard;
FaweBukkit plugin;
private WorldGuardPlugin getWorldGuard() {
final Plugin plugin = Bukkit.getPluginManager().getPlugin("WorldGuard");
// WorldGuard may not be loaded
if ((plugin == null) || !(plugin instanceof WorldGuardPlugin)) {
return null; // Maybe you want throw an exception instead
}
return (WorldGuardPlugin) plugin;
}
public Worldguard(final Plugin p2, final FaweBukkit p3) {
super(p2.getName());
worldguard = getWorldGuard();
plugin = p3;
}
public ProtectedRegion isowner(final Player player, final Location location) {
final com.sk89q.worldguard.LocalPlayer localplayer = worldguard.wrapPlayer(player);
final RegionManager manager = worldguard.getRegionManager(player.getWorld());
final ApplicableRegionSet regions = manager.getApplicableRegions(player.getLocation());
for (final ProtectedRegion region : regions) {
if (region.isOwner(localplayer)) {
return region;
} else if (region.getId().toLowerCase().equals(player.getName().toLowerCase())) {
return region;
} else if (region.getId().toLowerCase().contains(player.getName().toLowerCase() + "//")) {
return region;
} else if (region.isOwner("*")) {
return region;
}
}
return null;
}
public ProtectedRegion getregion(final Player player, final BlockVector location) {
final com.sk89q.worldguard.LocalPlayer localplayer = worldguard.wrapPlayer(player);
final ApplicableRegionSet regions = worldguard.getRegionManager(player.getWorld()).getApplicableRegions(location);
for (final ProtectedRegion region : regions) {
if (region.isOwner(localplayer)) {
return region;
} else if (region.getId().toLowerCase().equals(player.getName().toLowerCase())) {
return region;
} else if (region.getId().toLowerCase().contains(player.getName().toLowerCase() + "//")) {
return region;
} else if (region.isOwner("*")) {
return region;
}
}
return null;
}
@Override
public FaweMask getMask(final FawePlayer<Player> fp) {
final Player player = fp.parent;
final Location location = player.getLocation();
final ProtectedRegion myregion = isowner(player, location);
if (myregion != null) {
final Location pos1 = new Location(location.getWorld(), myregion.getMinimumPoint().getBlockX(), myregion.getMinimumPoint().getBlockY(), myregion.getMinimumPoint().getBlockZ());
final Location pos2 = new Location(location.getWorld(), myregion.getMaximumPoint().getBlockX(), myregion.getMaximumPoint().getBlockY(), myregion.getMaximumPoint().getBlockZ());
return new FaweMask(pos1, pos2) {
@Override
public String getName() {
return myregion.getId();
}
};
} else {
return null;
}
}
}