NoExpression
Активный участник
- Баллы
- 61
Почему-то при вводе команды у одного игрока все идеально работает, то есть заполняются блоки, рандомятся его координаты, телепортирует в эту точку и возле сетаются блоки, а у другого игрока заполняются блоки, рандомятся координаты, телепортирует в эту точку, но блоки возле него не сетаются, он просто задыхается в блоках. Надеюсь доступно объяснил, помогите, пожалуйста, уже сколько времени ломаю голову.
Вот код:
Вот код:
Код:
Вот код:
public void fillBlocks(int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Material material) {
for (int x = minX; x < maxX; x++) {
for (int y = minY; y < maxY; y++) {
for (int z = minZ; z < maxZ; z++) {
val location = new Location(Bukkit.getServer().getWorld("world"), x, y, z);
val block = Bukkit.getServer().getWorld("world").getBlockAt(location);
if (block.getType() != Material.BEDROCK) {
block.setType(material);
}
}
}
}
}
@Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
if (args[0].equals("start")) {
for (val player : Bukkit.getOnlinePlayers()) {
fillBlocks(40, 69, 135, 190, 119, 285, Material.DIRT);
val random = new Random();
int randomX = random.nextInt(90);
int randomY = random.nextInt(40);
int randomZ = random.nextInt(90);
val location = new Location(Bukkit.getServer().getWorld("world"), 40 + 4 + randomX, 69 + 4 + randomY, 135 + 4 + randomZ); // левый нижний угол
val block = Bukkit.getServer().getWorld("world").getBlockAt((int) location.toCenterLocation().getX(), (int) location.toCenterLocation().getY(), (int) location.toCenterLocation().getZ());
player.teleport(block.getLocation());
player.setGameMode(GameMode.SURVIVAL);
fillBlocks((int) (player.getLocation().getX() - 2), (int) (player.getLocation().getY() - 2), (int) (player.getLocation().getZ() - 2), (int) (player.getLocation().getX() + 1), (int) (player.getLocation().getY() + 1), (int) (player.getLocation().getZ() + 1), Material.AIR);
}
return true;
}
return false;
}