Для ломания определенного блока в определенном регионе с помощью BukkitAPI можно использовать следующий код:
```java
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class YourPlugin extends JavaPlugin {
@Override
public void onEnable() {
getLogger().info("YourPlugin has been enabled!");
}
@Override
public void onDisable() {
getLogger().info("YourPlugin has been disabled!");
}
public boolean inRegion(Location location, Location min, Location max) {
if (location.getBlockX() >= min.getBlockX() && location.getBlockX() <= max.getBlockX() &&
location.getBlockY() >= min.getBlockY() && location.getBlockY() <= max.getBlockY() &&
location.getBlockZ() >= min.getBlockZ() && location.getBlockZ() <= max.getBlockZ())
return true;
return false;
}
public boolean breakBlockInRegion(Player player, Material material, Location min, Location max) {
World world = player.getWorld();
for (int x = min.getBlockX(); x <= max.getBlockX(); x++) {
for (int y = min.getBlockY(); y <= max.getBlockY(); y++) {
for (int z = min.getBlockZ(); z <= max.getBlockZ(); z++) {
Location location = new Location(world, x, y, z);
if (inRegion(location, min, max)) {
Block block = location.getBlock();
if (block.getType() == material) {
block.breakNaturally(player.getInventory().getItemInMainHand());
return true;
}
}
}
}
}
return false;
}
}
```
Вызов метода `breakBlockInRegion` позволит ломать блоки заданного типа в определенном регионе при условии, что игрок находится внутри этого региона. Пример вызова метода:
```java
Location min = new Location(world, 100, 50, 100);
Location max = new Location(world, 110, 60, 110);
if (inRegion(player.getLocation(), min, max))
breakBlockInRegion(player, Material.STONE, min, max);
```
В данном примере метод вызывается для ломания всех блоков типа `STONE` в регионе с границами от `X=100, Y=50, Z=100` до `X=110, Y=60, Z=110`, если игрок находится внутри этого региона.