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

Помогите как сделать чтобы вокруг поршня проверялось, есть ли впритык к нему наблюдатель или нет?

Тема в разделе "Разработка плагинов для новичков", создана пользователем БулатРС, 25 апр 2022.

  1. Автор темы
    БулатРС

    БулатРС Ньюби

    Баллы:
    1
    Как сделать чтобы вокруг поршня проверялось, есть ли впритык к нему наблюдатель или нет, а если есть то поршень может выдвинуть на 12 блоков больше?
    Я совсем новичок и ничего не понимаю, так что если можно растолкуйте и как можно проще, пожалуйста.
     
  2. Zuif

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

    Баллы:
    76
    Block#getRelative(BlockFace face) позволяет получить соседний блок, проверяешь на то что он наблюдатель. намчет выдвижения поршня не понял, объясни подробнее
     
  3. Автор темы
    БулатРС

    БулатРС Ньюби

    Баллы:
    1
    ну у поршня есть лимит что он может сдвинуть 12 блоков, но не больше и я хочу чтобы если по соседству с поршнем есть наблюдатель, то поршень может сдвинуть на 12 блоков больше.
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    При выдвижении поршня получаешь сторону, в которую он выдвигается (BlockFace), из него получаешь противоположную сторону - getOppositeFace(), по нему получаешь блок, стоящий позади поршня. Проверяешь, что это наблюдатель, после чего двигаешь нужное кол-во блоков по направлению поршня
     
  5. Автор темы
    БулатРС

    БулатРС Ньюби

    Баллы:
    1
    Спасибо!
     
  6. Автор темы
    БулатРС

    БулатРС Ньюби

    Баллы:
    1
    Извините, но у меня программа жалуется что getRelative нельзя использовать внутри события BlockEvent, что делать?
     
  7. Zuif

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

    Баллы:
    76
    скинь скрин/текст ошибки
     
  8. Автор темы
    БулатРС

    БулатРС Ньюби

    Баллы:
    1
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockEvent;


    public class porshen implements Listener {

    @EventHandler
    public void handleBlockEvent(BlockEvent e) {
    if (e.getBlock().getType() == Material.PISTON) {
    int radius = 1;
    for (int x = -(radius); x <= radius; x++) {
    for (int y = -(radius); y <= radius; y++) {
    for (int z = -(radius); z <= radius; z++) {
    if (e.getRelative(x, y, z).getType() == Material.OBSERVER && (x != 0 || y != 0 || z != 0)) {
    {

    }
    }
    }

    }
    }
    }
    }
    }
    это код который я написал

    а это ошибка
    Cannot resolve method 'getRelative' in 'BlockEvent'
     
  9. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Так этот метод класса Block, а не BlockEvent.
     
  10. Автор темы
    БулатРС

    БулатРС Ньюби

    Баллы:
    1
    ааааааааааааа, спасибо
     
  11. Автор темы
    БулатРС

    БулатРС Ньюби

    Баллы:
    1
    public void handleBlockEvent(BlockEvent e, Block b) {
    if (e.getBlock().getType() == Material.PISTON) {
    int radius = 1;
    for (int x = -(radius); x <= radius; x++) {
    for (int y = -(radius); y <= radius; y++) {
    for (int z = -(radius); z <= radius; z++) {
    if (b.getRelative(x, y, z).getType() == Material.OBSERVER && (x != 0 || y != 0 || z != 0)) {
    {

    }
    }
    }
    }
    }
    }
    }
    }
    теперь ведь всё правильно, да?
     
  12. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Проверить код на практике гораздо проще, чем проверить его визуально. Тестируй, проверяй.
    Если есть вопросы или сложности - задавай вопросы
     

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