1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем NoExpression, 15 фев 2024.

  1. Автор темы
    NoExpression

    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;
    }
     
  2. Fizer228

    Fizer228 Активный участник Пользователь

    Баллы:
    66
    Здраствуй, есть несколько вопросов:
    1. есть ли какие-либо ошибки в консоли?
    2. код так и выглядит в оригинале?
    Поправь пожалуйста расположение строк, а то ориентироваться так крайне сложно(
    Ещё могу предложить крайне простой способ выявления проблемы. Просто проставляешь между всеми строками вывод чисел в консоль от 1 до нужного тебе количества. А затем тестируешь на сервере и в зависимости от того, где остановился вывод чисел в консоли, выявляешь проблему
     
    Последнее редактирование: 15 фев 2024

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