Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package games.coob.laserturrets.hook;
- import com.palmergames.bukkit.towny.object.TownyPermission;
- import com.palmergames.bukkit.towny.utils.PlayerCacheUtil;
- import com.sk89q.worldedit.bukkit.BukkitAdapter;
- import com.sk89q.worldedit.world.World;
- import com.sk89q.worldguard.LocalPlayer;
- import com.sk89q.worldguard.WorldGuard;
- import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
- import com.sk89q.worldguard.protection.flags.Flags;
- import com.sk89q.worldguard.protection.regions.RegionContainer;
- import com.sk89q.worldguard.protection.regions.RegionQuery;
- import me.angeschossen.lands.api.LandsIntegration;
- import me.angeschossen.lands.api.land.LandWorld;
- import org.bukkit.Location;
- import org.bukkit.block.Block;
- import org.bukkit.entity.Player;
- import org.kingdoms.constants.group.Kingdom;
- import org.kingdoms.constants.group.model.relationships.StandardRelationAttribute;
- import org.kingdoms.constants.land.Land;
- import org.kingdoms.constants.player.KingdomPlayer;
- import org.mineacademy.fo.plugin.SimplePlugin;
- public class RegionHook {
- public static boolean canPlaceTurret(final Location location, final Player player) {
- return canPlaceInRegion(location, player) && canPlaceInLand(player, location.getBlock()) && canPlaceInTown(player, location.getBlock()) && canPlaceInKingdom(location, player);
- }
- // TODO WorldGuard, Towny, Lands, KingdomsX
- public static boolean canPlaceInRegion(final Location location, final Player player) {
- final LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
- final com.sk89q.worldedit.util.Location location1 = BukkitAdapter.adapt(location);
- final RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
- final RegionQuery query = container.createQuery();
- final World world = BukkitAdapter.adapt(player.getWorld());
- final boolean canBypass = WorldGuard.getInstance().getPlatform().getSessionManager().hasBypass(localPlayer, world);
- if (canBypass)
- return true;
- return query.testState(location1, localPlayer, Flags.BUILD);
- }
- public static boolean canPlaceInTown(final Player player, final Block block) {
- return PlayerCacheUtil.getCachePermission(player, block.getLocation(), block.getType(), TownyPermission.ActionType.BUILD);
- }
- public static boolean canPlaceInLand(final Player player, final Block block) {
- final LandsIntegration api = LandsIntegration.of(SimplePlugin.getInstance());
- final LandWorld world = api.getWorld(player.getWorld());
- if (world != null) // Lands is enabled in this world
- return world.hasRoleFlag(player.getUniqueId(), block.getLocation(), me.angeschossen.lands.api.flags.type.Flags.BLOCK_PLACE);
- return false;
- }
- public static boolean canPlaceInKingdom(final Location location, final Player player) {
- final Land land = Land.getLand(location);
- if (land != null) {
- if (land.isClaimed()) {
- final Kingdom kingdom = land.getKingdom();
- final KingdomPlayer damagerKp = KingdomPlayer.getKingdomPlayer(player);
- final Kingdom damagerKingdom = damagerKp.getKingdom();
- if (kingdom == null)
- return false;
- return kingdom.hasAttribute(damagerKingdom, StandardRelationAttribute.BUILD);
- }
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement