mirror of
https://github.com/YouHaveTrouble/YardWatch.git
synced 2026-05-12 06:26:59 +00:00
afdb3a0e3e
* query command + fix wg exception * remove empty statement and unused imports * added feedback for case when there are no protections in queried location --------- Co-authored-by: YouHaveTrouble <youhavetrouble@youhavetrouble.me>
94 lines
4.2 KiB
Java
94 lines
4.2 KiB
Java
package me.youhavetrouble.yardwatch.hooks;
|
|
|
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
|
import com.sk89q.worldguard.LocalPlayer;
|
|
import com.sk89q.worldguard.WorldGuard;
|
|
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
|
import com.sk89q.worldguard.domains.Association;
|
|
import com.sk89q.worldguard.protection.association.Associables;
|
|
import com.sk89q.worldguard.protection.flags.Flags;
|
|
import com.sk89q.worldguard.protection.regions.RegionContainer;
|
|
import com.sk89q.worldguard.protection.regions.RegionQuery;
|
|
import me.youhavetrouble.yardwatch.Protection;
|
|
import me.youhavetrouble.yardwatch.YardWatch;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.block.BlockState;
|
|
import org.bukkit.entity.Entity;
|
|
import org.bukkit.entity.Player;
|
|
|
|
public class WorldGuardProtection implements Protection {
|
|
|
|
private final YardWatch plugin;
|
|
|
|
public WorldGuardProtection(YardWatch plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
@Override
|
|
public boolean isEnabled() {
|
|
return plugin.getServer().getPluginManager().isPluginEnabled("WorldGuard");
|
|
}
|
|
|
|
@Override
|
|
public boolean isProtected(Location location) {
|
|
if (!isEnabled()) return false;
|
|
if (location.getWorld() == null) return false;
|
|
com.sk89q.worldedit.util.Location wgLocation = BukkitAdapter.adapt(location);
|
|
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
|
RegionQuery query = container.createQuery();
|
|
return query.testBuild(wgLocation, Associables.constant(Association.NON_MEMBER));
|
|
}
|
|
|
|
@Override
|
|
public boolean canBreakBlock(Player player, BlockState blockState) {
|
|
if (!isEnabled()) return true;
|
|
Location location = blockState.getLocation();
|
|
com.sk89q.worldedit.util.Location wgLocation = BukkitAdapter.adapt(location);
|
|
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player, true);
|
|
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
|
RegionQuery query = container.createQuery();
|
|
return query.testState(wgLocation, localPlayer, Flags.BUILD);
|
|
}
|
|
|
|
@Override
|
|
public boolean canPlaceBlock(Player player, Location location) {
|
|
if (!isEnabled()) return true;
|
|
com.sk89q.worldedit.util.Location wgLocation = BukkitAdapter.adapt(location);
|
|
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player, true);
|
|
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
|
RegionQuery query = container.createQuery();
|
|
return query.testState(wgLocation, localPlayer, Flags.BUILD);
|
|
}
|
|
|
|
@Override
|
|
public boolean canInteract(Player player, BlockState blockState) {
|
|
if (!isEnabled()) return true;
|
|
com.sk89q.worldedit.util.Location wgLocation = BukkitAdapter.adapt(blockState.getLocation());
|
|
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player, true);
|
|
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
|
RegionQuery query = container.createQuery();
|
|
return query.testState(wgLocation, localPlayer, Flags.INTERACT);
|
|
}
|
|
|
|
@Override
|
|
public boolean canInteract(Player player, Entity entity) {
|
|
if (!isEnabled()) return true;
|
|
com.sk89q.worldedit.util.Location wgLocation = BukkitAdapter.adapt(entity.getLocation());
|
|
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player, true);
|
|
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
|
RegionQuery query = container.createQuery();
|
|
return query.testState(wgLocation, localPlayer, Flags.INTERACT);
|
|
}
|
|
|
|
@Override
|
|
public boolean canDamage(Entity attacker, Entity target) {
|
|
if (!isEnabled()) return true;
|
|
if (!(attacker instanceof Player player)) return true;
|
|
com.sk89q.worldedit.util.Location wgLocation = BukkitAdapter.adapt(target.getLocation());
|
|
LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player, true);
|
|
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
|
RegionQuery query = container.createQuery();
|
|
return query.testState(wgLocation, localPlayer, Flags.INTERACT);
|
|
}
|
|
}
|