Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите getBlockY для нескольких блоков

Тема в разделе "Разработка плагинов для новичков", создана пользователем GODZAR, 9 май 2016.

Статус темы:
Закрыта.
  1. Автор темы
    GODZAR

    GODZAR Старожил Пользователь

    Баллы:
    103
    Skype:
    goblin3004
    Есть такой код - он спавнит алмазные блоки вокруг игрока:
    Код:
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
        {
            Player player = (Player) sender;
            Location location = player.getLocation();
        
            if (command.getName().equalsIgnoreCase("start"))
            {
                for (int x = location.getBlockX() + 10; x >= location.getBlockX() - 10; x--)
                {
                    for (int z = location.getBlockZ() + 10; z >= location.getBlockZ() - 10; z--)
                    {
                        while (location.getWorld().getBlockAt(x, location.getBlockY(), z).getType() != Material.AIR)
                        {
                            location.setY(location.getBlockY() + 1);
                        }
                        location.getWorld().getBlockAt(x, location.getBlockY(), z).setType(Material.DIAMOND_BLOCK);
    
                    }
                }
            }
       }
    Собственно вопрос в теме. Нужно опустить всю поверхность, а не одну сторону.
    [​IMG]
     
    Последнее редактирование: 9 май 2016
  2. Хостинг MineCraft
    <
  3. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Так тебе нужно сделать стены или заполненный куб?
     
  4. Автор темы
    GODZAR

    GODZAR Старожил Пользователь

    Баллы:
    103
    Skype:
    goblin3004
    Мне нужно чтобы блоки спавнились на земле как на картинке в правой части. Получается только вот одна линия и все.
     
  5. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    замени на
    Код:
    int y = location.getBlockY();
    while (location.getWorld().getBlockAt(x, y, z).getType() != Material.AIR)
    {
         y++;
    }
    location.getWorld().getBlockAt(x, y, z).setType(Material.DIAMOND_BLOCK);
    
     
  6. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    Код:
                    Location loc = player.getLocation().clone();
                 
                    for(int x = loc.getBlockX() - 10; x < loc.getBlockX() + 10; x++)
                    {
                        for(int z = loc.getBlockZ() - 10; z < loc.getBlockZ() + 10; z++)
                        {
                            int y = loc.getBlockY();
                            for(; loc.getWorld().getBlockAt(x, y, z).getType() == Material.AIR; y--)
                                ;
                         
                            loc.getWorld().getBlockAt(x, y, z).setType(Material.DIAMOND_BLOCK);
                        }
                    }
     
  7. Автор темы
    GODZAR

    GODZAR Старожил Пользователь

    Баллы:
    103
    Skype:
    goblin3004
    Так он заменяет первый слой
     
  8. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    А додумать чуть-чуть не можете?
    for(; loc.getWorld().getBlockAt(x, y - 1, z).getType()== Material.AIR; y--)[DOUBLEPOST=1462817350,1462816731][/DOUBLEPOST]Заодно проверяйте, выше земля или ниже. Если выше, то запускайте другой(подобный) цикл.
     
  9. Автор темы
    GODZAR

    GODZAR Старожил Пользователь

    Баллы:
    103
    Skype:
    goblin3004
    Код:
                        for (; loc.getWorld().getBlockAt(x, y - 1, z).getType() == Material.AIR; y--)
                            ;
                        for (; loc.getWorld().getBlockAt(x, y, z).getType() != Material.AIR; y++)
                            ;
    Так работает[DOUBLEPOST=1462817503,1462817416][/DOUBLEPOST]Еще вопрос как зарандомить спавн блоков? Чтобы не платформой появлялись.
     
  10. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    Код:
                            // 1/10 шанса, что на заданных координатах появится алмазный блок
                            if(Math.random() <= 0.1d)
                                loc.getWorld().getBlockAt(x, y, z).setType(Material.DIAMOND_BLOCK);
    
     
    Последнее редактирование: 9 май 2016
  11. Автор темы
    GODZAR

    GODZAR Старожил Пользователь

    Баллы:
    103
    Skype:
    goblin3004
    Спасибо:good:
     
Статус темы:
Закрыта.

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