Advertisement
JackOUT

Untitled

Mar 18th, 2023 (edited)
884
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.20 KB | None | 0 0
  1. package games.coob.laserturrets.hook;
  2.  
  3. import com.palmergames.bukkit.towny.object.TownyPermission;
  4. import com.palmergames.bukkit.towny.utils.PlayerCacheUtil;
  5. import com.sk89q.worldedit.bukkit.BukkitAdapter;
  6. import com.sk89q.worldedit.world.World;
  7. import com.sk89q.worldguard.LocalPlayer;
  8. import com.sk89q.worldguard.WorldGuard;
  9. import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
  10. import com.sk89q.worldguard.protection.flags.Flags;
  11. import com.sk89q.worldguard.protection.regions.RegionContainer;
  12. import com.sk89q.worldguard.protection.regions.RegionQuery;
  13. import me.angeschossen.lands.api.LandsIntegration;
  14. import me.angeschossen.lands.api.land.LandWorld;
  15. import org.bukkit.Location;
  16. import org.bukkit.block.Block;
  17. import org.bukkit.entity.Player;
  18. import org.kingdoms.constants.group.Kingdom;
  19. import org.kingdoms.constants.group.model.relationships.StandardRelationAttribute;
  20. import org.kingdoms.constants.land.Land;
  21. import org.kingdoms.constants.player.KingdomPlayer;
  22. import org.mineacademy.fo.plugin.SimplePlugin;
  23.  
  24. public class RegionHook {
  25.  
  26.     public static boolean canPlaceTurret(final Location location, final Player player) {
  27.         return canPlaceInRegion(location, player) && canPlaceInLand(player, location.getBlock()) && canPlaceInTown(player, location.getBlock()) && canPlaceInKingdom(location, player);
  28.     }
  29.  
  30.     // TODO WorldGuard, Towny, Lands, KingdomsX
  31.     public static boolean canPlaceInRegion(final Location location, final Player player) {
  32.         final LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
  33.         final com.sk89q.worldedit.util.Location location1 = BukkitAdapter.adapt(location);
  34.         final RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
  35.         final RegionQuery query = container.createQuery();
  36.         final World world = BukkitAdapter.adapt(player.getWorld());
  37.         final boolean canBypass = WorldGuard.getInstance().getPlatform().getSessionManager().hasBypass(localPlayer, world);
  38.  
  39.         if (canBypass)
  40.             return true;
  41.  
  42.         return query.testState(location1, localPlayer, Flags.BUILD);
  43.     }
  44.  
  45.     public static boolean canPlaceInTown(final Player player, final Block block) {
  46.         return PlayerCacheUtil.getCachePermission(player, block.getLocation(), block.getType(), TownyPermission.ActionType.BUILD);
  47.     }
  48.  
  49.     public static boolean canPlaceInLand(final Player player, final Block block) {
  50.         final LandsIntegration api = LandsIntegration.of(SimplePlugin.getInstance());
  51.         final LandWorld world = api.getWorld(player.getWorld());
  52.  
  53.         if (world != null) // Lands is enabled in this world
  54.             return world.hasRoleFlag(player.getUniqueId(), block.getLocation(), me.angeschossen.lands.api.flags.type.Flags.BLOCK_PLACE);
  55.  
  56.         return false;
  57.     }
  58.  
  59.     public static boolean canPlaceInKingdom(final Location location, final Player player) {
  60.         final Land land = Land.getLand(location);
  61.  
  62.         if (land != null) {
  63.             if (land.isClaimed()) {
  64.                 final Kingdom kingdom = land.getKingdom();
  65.                 final KingdomPlayer damagerKp = KingdomPlayer.getKingdomPlayer(player);
  66.                 final Kingdom damagerKingdom = damagerKp.getKingdom();
  67.  
  68.                 if (kingdom == null)
  69.                     return false;
  70.  
  71.                 return kingdom.hasAttribute(damagerKingdom, StandardRelationAttribute.BUILD);
  72.             }
  73.         }
  74.  
  75.         return false;
  76.     }
  77. }
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement