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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Ты как человек понимаешь что есть "вход"
    Для сервера шематик - не более чем массив блоков
     
  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
    Вот и я об этом, для сервера нет лицевой стороны.

    Сейчас попробую ещё раз поворачивать его.[DOUBLEPOST=1430140043,1430137749][/DOUBLEPOST]Нет, не поворачивается как надо.

    Допустим, у меня у всех строений лицевая сторона смотрит на восток
    Код:
    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
    Как мне это использовать?[DOUBLEPOST=1430143381,1430141668][/DOUBLEPOST]В какую сторону поворачивается постройка при rotate2D?[DOUBLEPOST=1430149151][/DOUBLEPOST]Кажется, мне удалось сделать что-то похожее на решение.
    Код:
        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);
    По крайней мере, одна и та же точка тут всегда оказывается на одном месте.[DOUBLEPOST=1430150621][/DOUBLEPOST]Немного мучений с подбором координат для смещения постройки и все заработало как надо. Всем спасибо за помощь.
     
  15. Автор темы
    serega6531

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

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

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