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

Помогите Строительство как в RUST

Тема в разделе "Разработка плагинов для новичков", создана пользователем diego070202, 28 окт 2019.

  1. alexandrage

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

    Баллы:
    173
    Дык на видио идею видно. Иди и реалищовывай. Или ты уже передумал писать самопис?
    Делаешь этот sendBlockChange со стеклом по направлению взгляда и все.
     
  2. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Я не знаю как сделать так, чтоб стенка поворачивалась в нужном направлении. Т.е не перпендикулярно тебе например, а паралельно
     
  3. Namudos

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

    Баллы:
    66
    Имя в Minecraft:
    Uninstal
    Получаешь сторону, в которую смотрит игрок, сравниваешь и делаешь поворот в ту сторону, относительно которой смотрит игрок.
     
  4. nutrolshok

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

    Баллы:
    76
    Можешь вставить этот метод и проверять сторону с помощью switch'a, а потом уже свой код вставлять. Можешь с помощью вектора это делать, но это сложнее.

    Тут с северо-востоков, северо-западом, юго-востоком, юго-западом
    Код:
    private static String getDirection(float yaw) {
            if(yaw >= 157.5 && yaw <= 202.5) return "North";
            else if(yaw > 202.5 && yaw < 247.5) return "NorthEast";
            else if(yaw >= 247.5 && yaw <= 292.5) return "East";
            else if(yaw > 292.5 && yaw < 337.5) return "SouthEast";
            else if(yaw > 22.5 && yaw < 67.5) return "SouthWest";
            else if(yaw >= 67.5 && yaw <= 112.5) return "West";
            else if(yaw > 112.5 && yaw < 157.5) return "NorthWest";
            else return "South";
        }
    
    Тут без:
    Код:
    private static String getDirection(float yaw) {
            if(yaw >= 135 && yaw <= 225) return "North";
            else if(yaw > 225 && yaw <= 315) return "East";
            else if(yaw > 45 && yaw <= 135) return "West";
            else return "South";
        }
    

    Получать направление так
    Код:
    String direction = getDirection(player.getLocation().getYaw());
    
     
    Последнее редактирование: 10 ноя 2019
  5. alexandrage

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

    Баллы:
    173
    Писец костыльщик :D.
    Нате. А то глазам страшно.
    Код:
        public static BlockFace[] AXIS = {BlockFace.WEST,BlockFace.NORTH,BlockFace.EAST,BlockFace.SOUTH};
        public static BlockFace yawToFace(float yaw) {
            return AXIS[Math.round(yaw / 90f) & 0x3];
        }
     
    Последнее редактирование: 16 ноя 2019
  6. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Сейчас затещу
     
  7. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
  8. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Кароче.
    Если пару раз покрутиться подряд влево, то направление может принимать отрицательное значение. Если покрутиться пару раз вправо, то они положительные становятся.
    Объясните пожалуйста, что за...
     
  9. alexandrage

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

    Баллы:
    173
    Забей на цифры, результат моей формулы юзай и все, а не код костыльщиков.
     
  10. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    1. Я не могу разобраться в том, что написано(я не топ кодер,ахах)
    2. Я не знаю как реализовать, чтоб блок, который изменяется, через 1-2 сек изменялся на тот, каким был
     
  11. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Полтора месяца уже долблюсь с этой системой строительства.
    Хочу +/- как в расте чтоб было, но не могу я с этими стенками...
    Как это реализовать...
    Наработки бросать жалко, а сил уже нет
     
  12. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Почитай про побитовые операции в java
    Почитай про шедулер в бакките
    Ну, значит для твоего уровня знаний такой плагин пока сложен. Попробуй сделать что-то попроще. И через какое-то время уже вернись к работе над растом
     
  13. alexandrage

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

    Баллы:
    173
    Ну все - выбрасывай. Не твое это писать плагины. Ты даже готовый кусок кода не можешь применить по назначению.
     
  14. alexandrage

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

    Баллы:
    173
    Вызвать обновление блоков, проще некуда, BlockState#update(). Само отошлет пакет нужный.
     
  15. mc-luxe

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

    Баллы:
    88
    Даже порно с животными не выглядит так отвратно, как реализация подобного через плагин :/
     
  16. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Знаю что такое шедулеры.
    Просто делаю sendChangeBlock и делаю чтоб через 2 сек выставлялся блок, который был. Делаю через цикл, но он перебивает все, и значения улетают
     
  17. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Я могу, но у меня принцип, что нужно разобраться.
     
  18. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Т.е через 2 сек выполнять этот метод?
     
  19. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Ну у меня такая цель.
    1. Моды пока для меня сложно.
    2. Пишу для своего НЕ ЛАУНЧЕРНОГО сервака
     
  20. alexandrage

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

    Баллы:
    173
    Когда локация блока смещается, делаем getState().update(), если кеш не пустой и sendBlockChange. Ничего сложного.
     
    Последнее редактирование: 19 ноя 2019

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