Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Не сетаются блоки

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;
}
 
Здраствуй, есть несколько вопросов:
1. есть ли какие-либо ошибки в консоли?
2. код так и выглядит в оригинале?
Поправь пожалуйста расположение строк, а то ориентироваться так крайне сложно(
Код:
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;
}
Ещё могу предложить крайне простой способ выявления проблемы. Просто проставляешь между всеми строками вывод чисел в консоль от 1 до нужного тебе количества. А затем тестируешь на сервере и в зависимости от того, где остановился вывод чисел в консоли, выявляешь проблему
 
Последнее редактирование:

Поделиться этой страницей

Назад
Верх