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

Помогите Размещение схематики лицевой стороной

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

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

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    У меня есть определенное здание, расположенное входом, например, к северу. Как ставить схематику через we api, чтобы здание ставилось лицевой стороной к поставившему?
     
  2. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Что значит "лицевая сторона"?
     
  3. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Сторона, на которой вход (условно)
     
  4. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Загружашь схематик, вертишь его методом rotate2D
     
  5. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Я так и делал, но не смог определить, сколько раз поворачивать.
     
  6. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Тут еще раз надо задать что такое "Лицевая сторона"

    Для сервера лицевая сторона - одно
    Для игрока - другое
    Правильный вариант - делать правильные схематики

    Если же вопрос стоит в Relative, то работай с yaw и сторонами света
     
  7. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    @ql_Nik_lp, Хочу поинтересоваться, где же лицевая сторона у постройки для сервера?

    Для игрока, это, очевидно, сторона со входом. И мне не ясно, как узнать, сколько раз её нужно повернуть.
     
  8. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Ты как человек понимаешь что есть "вход"
    Для сервера шематик - не более чем массив блоков
     
  9. Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Чертёж объекта! Можно просто чертёж. А можно просто объект (но если просто объект, то может быть не понятно какой именно, т.к. есть ещё .BO2/.bo3)
     
    Последнее редактирование: 27 апр 2015
  10. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Плюсую человека выше.

    В плане произношения - вариантов много, гугл транслейт вообще говорит как "скематик"
     
  11. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ну если ты знаешь к какой стороне у тебя повернут схематик, то можно просто поворачивать его в сторону, противоположную направлению взгляда игрока.
     
  12. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Вот и я об этом, для сервера нет лицевой стороны.

    Сейчас попробую ещё раз поворачивать его.
    Нет, не поворачивается как надо.

    Допустим, у меня у всех строений лицевая сторона смотрит на восток
    Код:
    int direction = Math.round(yaw / 90f) & 0x3; //Направление взгляда игрока
    int rotate = ...//?????
    clipboard.rotate2D(rotate * 90);
    
     
  13. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
  14. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Как мне это использовать?
    В какую сторону поворачивается постройка при rotate2D?
    Кажется, мне удалось сделать что-то похожее на решение.
    Код:
        private BlockFace getCardinalDirection(org.bukkit.util.Vector vector) {
            BlockFace[] faces = { BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST };
            org.bukkit.util.Vector n, e, s, w;
            w = new org.bukkit.util.Vector(-1, 0, 0);
            n = new org.bukkit.util.Vector(0, 0, -1);
            s = n.clone().multiply(-1);
            e = w.clone().multiply(-1);
    
            org.bukkit.util.Vector[] vectors = { n, e, s, w };
    
            double comp = 0;
            int besti = 0;
            for (int i = 0; i < vectors.length; i++) {
                double dot = vector.dot(vectors[i]);
                if (dot > comp) {
                    comp = dot;
                    besti = i;
                }
            }
    
            return faces[besti];
        }
    
            BlockFace bf = getCardinalDirection(direction);
            int rotate = bf.ordinal() + 1;
    
            clipboard.rotate2D(rotate * 90);
    По крайней мере, одна и та же точка тут всегда оказывается на одном месте.
    Немного мучений с подбором координат для смещения постройки и все заработало как надо. Всем спасибо за помощь.
     
  15. Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Её вообще нету, больше скажу)
    Только //rotate 180
    По часовой
    Забыл закрыть
     
  16. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Поэтому я и написал "условно".
     
Статус темы:
Закрыта.

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