import java.util.List;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.bukkit.cause.Cause;
import com.sk89q.worldguard.bukkit.event.block.BreakBlockEvent;
import com.sk89q.worldguard.protection.flags.Flags;
import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.regions.RegionQuery;
public class EventListener implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public void onp(BreakBlockEvent e) {
Cause cause = e.getCause();
Block block = cause.getFirstBlock();
if (block != null && (block.getType() == Material.MOVING_PISTON || block.getType() == Material.PISTON
|| block.getType() == Material.STICKY_PISTON)) {
List<Block> blocks = (List<Block>) e.getBlocks();
for (final Block b : blocks) {
if (isFlagAllows(null, b.getLocation(), Flags.PISTONS)) {
e.setResult(Event.Result.ALLOW);
}
}
}
}
public boolean isFlagAllows(Player player, Location location, StateFlag flag) {
WorldGuardPlugin wg = WorldGuardPlugin.inst();
RegionQuery rg = WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery();
return rg.testState(BukkitAdapter.adapt(location), wg.wrapPlayer(player), flag);
}
}