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

Туториал Кастомные и автоматические фейерверки

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем DPOH-VAR, 29 дек 2012.

  1. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    В этой статье я расскажу, как сделать свои фейерверки с блекждеком и криперами, а также как автоматически спавнить ракеты. Цвета взрывов не ограничиваются 16-ю красками, да и количество взрывов тоже.
    Для этого нам потребуются:
    1. Сервер Bukkit 1.4.6 и права ОПа на нем
    2. Плагин PowerNBT версии 0.3.2 или новее
    3. Прямые руки и внимательность.
    1 Создаем свой собственный фейерверк
    1.1 Подготовка предмета
    Для начала нужно взять пустую ракету в руки (id 401). Теперь начинаем шаманить. Ни в коем случае не запускайте ракету, пока не закончили редактировать!! Это может грозить крашем клиента. Начнем:
    /nbt item Fireworks.Flight = 2 byte
    Мы изменили высоту полета на 2. Чтобы ракета взрывалась сразу же, поставьте значение -1. При значении 0 она подлетит на высоту ~5 блоков. Не рекомендуется ставить значение больше 4. Изменить этот параметр можно будет в любое время.

    1.2 Создание и редактирование цветов
    Для начала обязательно нужно задать цвета взрыва:
    /nbt item Fireworks.Explosions[0].Colors = [#FF0000,#FFFF00,#0000FF] int[]
    Мы задали три цвета для фейерверка: красный, желтый, синий. Эти цвета намного ярче тех, которые используются при крафте. цвета задаются в шестнадцатеричном RGB формате. Цвета можно брать отсюда или генерировать тут.
    Можно указать сколько угодно цветов, но нельзя оставлять массив пустым!
    После этого, мы можем добавлять сюда цвета:
    /nbt item Fireworks.Explosions[0].Colors[] = #FFFFFF
    Этой командой мы добавляем в список ярко-белый цвет.
    Удалить цвет из списка можно так:
    /nbt item Fireworks.Explosions[0].Colors[2] remove
    Эта команда удалит 2-й цвет из списка. В данном случае это синий (#0000FF), т.к. нумерация начинается с нуля.

    1.3 Создание градиента
    Теперь можно задать второй цвет - в который фейерверк будет переливаться после взрыва.
    Это делать не обязательно, но чтобы фейерверк вышел красивый - необходимо.
    Итак, задаем цвета:
    /nbt item Fireworks.Explosions[0].FadeColors = [#FF0000,#FFFF00,#0000FF] int[]
    Далее все действия аналогичны пункту 1.2, с той лишь разницей, что нужно редактировать тег FadeColors вместо Colors.

    1.4 Изменение типа взрыва
    Теперь мы можем изменить тип взрыва.
    /nbt item Fireworks.Explosions[0].Type = 3 byte
    0 = малый радиус
    1 = большой радиус
    2 = звезда
    3 = сущность в виде крипера
    4 = какая-то белиберда.
    По умолчанию (если не поменять) будет взрыв малого радиуса.

    1.5 Дополнительные эффекты
    Можно установить еще два разных эффекта:
    /nbt item Fireworks.Explosions[0].Trail = 1 byte
    Устанавливает длинный шлейф за огоньками.
    /nbt item Fireworks.Explosions[0].Flicker = 1 byte
    Добавляет эффект мерцания.
    Чтобы удалить эффект, можно либо установить значение в 0 byte, либо выполнить
    /nbt item Fireworks.Explosions[0].Trail remove

    1.6 Добавляем еще один взрыв
    Фейерверку можно добавить еще один взрыв, другого типа и с другими цветами.
    Для этого повторяем все, начиная с пункта 1.2, но изменяем индекс у Explosions с 0 на 1. Например, чтобы добавить цвета второму взрыву, нужно выполнить
    /nbt item Fireworks.Explosions[1].Colors = [#FFFF80,#FF80FF] int[]
    Ракета готова! Сохраните все что можно, сделайте бэкап.
    Теперь можно запускать. Если вы ошиблись в одном из пунктов, это может грозить крашем клиента.
    Позже можно добавить еще любой взрыв.
    Или удалить лишний, командой
    /nbt item Fireworks.Explosions[1] remove
    где 1 - индекс того взрыва, который удаляем.

    2. Создаем мобспавнер с фейерверками
    2.1 Теория
    В мобспавнерах, начиная с версии 1.4.6 заложен механизм, позволяющий с определенной долей вероятности создать любой объект из перечисленных. Каждый из перечисленных вариантов имеет вес. Чем вес больше, тем больше вероятность заспавниться именно этому объекту. Все что требуется - это указать для каждого из них вес, тип и параметры.​
    Редактировать мобспавнер напрямую опасно, поэтому нужно сначала подготовить теги в буфере, а потом уже установить их в спавнер​
    2.2 Подготовка
    Первым делом, нужно очистить буфер:​
    /nbt compound copy
    2.3 Заполнение буфера
    Теперь обязательно выполнить эти команды:​
    /nbt buffer Type = "FireworksRocketEntity"
    /nbt buffer Weight = 5 int
    5 - это "вес" варианта. Ставьте любой по желанию, кроме 0.​
    2.4 Добавление параметров ракеты
    Указываем эти параметры:​
    /nbt buffer Properties.Life = 60 int
    60 количество тиков, сколько ракета будет лететь​
    /nbt buffer Properties.LifeTime = 70 int
    тут 70 - это количество тиков, после которых она взорвется​
    Теперь ставим обязательный параметр - настройки ракеты.​
    Простейший способ - берем ракету в самый первый слот инвентаря (по клавише 1) и пишем команду:​
    /nbt buffer Properties.FireworksItem = me Inventory[0]
    Буфер подготовлен!​
    2.5 Добавляем ракету в мобспавнер
    Теперь пишем​
    /save-all
    А лучше даже сделать бекап.​
    Сделали? отлично.​
    Пишем команду​
    /nbt * SpawnPotentials[0] = buffer
    И кликаем правой кнопкой мыши по спавнеру.​
    Либо подходим к спавнеру, смотрим на него и вводим​
    /nbt block SpawnPotentials[0] = buffer
    (оба варианта равносильны)​
    Чтобы добавить другие типы ракет, нужно повторить действия начиная с пункта 2.3 или 2.4. В этом пункте потом указываем SpawnPotentials[1] и т.д. Нельзя оставлять пустые элементы в массиве SpawnPotentials т.е. идем строго по порядку.​
    Все еще крутится свинка?​
    Ракеты в спавнере стоят на очереди. Как только свинья появится, следующим обязательно будет фейерверк ;)
    2.6 Редактируем радиус действия и количество ракет
    Тут все проще некуда.​
    Подходим к блоку спавнера, смотрим на него и пишем команды:​
    /nbt block SpawnCount = 5 short
    сколько ракет спавнить каждый раз.​
    /nbt block SpawnRange = 15 short
    в каком радиусе (в блоках) спавнить ракеты.​
    /nbt block MinSpawnDelay= 20 short
    /nbt block MinSpawnDelay= 30 short
    тут соответственно, минимальная и максимальная задержка между циклами спавна​
    /nbt block MaxNearbyEntities= 10 short
    максимальное количество ракет. Если их больше - новые спавниться не будут.​
    /nbt block RequiredPlayerRange = 30 short
    на какое расстояние должен подойти игрок, чтобы активировать спавнер.​
    Вот, собственно и вся настройка.​
    Такой спавнер может украсить новогоднюю елку на сервере (^___^)​
     
    Alexgrist, cookie_Dice, limito и 9 другим нравится это.
  2. LiveD

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

    Баллы:
    153
    Skype:
    LiveDRus
    Отдуши спасибо.
     
  3. Alastar

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

    Баллы:
    173
    Классно!:) Но бесполезно!:( Но классно!:)
     
    nvidia_hl2 нравится это.
  4. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Я еще не дописал)
    Можно же поставить под елку мобспавнер, который будет выстреливать рандомными фейерверками в энном радиусе.
    Таким образом можно создать праздничную атмосферу на сервере :p
    Допишу завтра. может быть.
     
    slavik123123123, nvidia_hl2 и Alastar нравится это.
  5. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Дописал :)
     
    nvidia_hl2 нравится это.
  6. zixel

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

    Баллы:
    78
    Имя в Minecraft:
    _Zixel_
    Очень хорошая вещь. Автор молодец :)
    Жаль, что не все актуальные ядра CB поддерживают этот плагин.
    Я знаю, как исправить эту проблему, но к сожалению без сорцов это будет сложнее. Сейчас попробую найти переменную, содержащую в себе путь к классу и подменить её на необходимую, для работы на другом CB.
     
  7. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    @zixel,
    Сорцы есть от версии 0.3.1 https://github.com/DPOH-VAR/PowerNBT
    Сам плагин вот http://dev.bukkit.org/server-mods/powernbt/
    Я очень сильно накалякал с подменой пути класса.
    Первым делом плагин узнает путь к пакету org.bukkit.craftbukkit.XXX.server и запоминает его
    Все объекты NBTBase он инкапсулирует вовнутрь прокси-объекта, который потом обращается к полям и методам оригинального объекта через рефлексии,а также для удобства реализует заранее подготовленный интерфейс, похожий на оригинал.
    Таким образом нам не важно, какое имя имеет данный класс, и какая версия CB установлена.
    Но обращение с такими объектами сложнее, чем напрямую.

    Такого в принципе быть не должно, начиная с CB 1.3
    Какая у вас версия ядра и версия плагина?
     
  8. zixel

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

    Баллы:
    78
    Имя в Minecraft:
    _Zixel_
    @DPOH-VAR,
    Благодарю за информацию. Я использую последнюю версию плагина. Вышеописанная проблема возникает на последних сборках Spigot (CB--), из-за того, что там используется кастомный путь к ядру сервера.
     
  9. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Постараюсь позже добавить также вариант для Spigot. Нужно всего лишь указать еще один возможный путь к ядру CB.
     
    zixel нравится это.
  10. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    Видео от меня: Как сделать спавнер фейерверка(ранромные!) в mcedit! ВОТ
    PS Первое видео!
     
    DPOH-VAR нравится это.
  11. Jesus

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

    Баллы:
    78
    я использую программируемые салюты в Craftbook
     
  12. ApaDoctor

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

    Баллы:
    103
    Не хочу, конечно показаться идиотом, но не могу до конца разобраться с работой плагина.
    Например, как на данном примере сделать спавнер взрывающегося динамита?
     
  13. DoctorDoom

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

    Баллы:
    63
    Спасибо. Хороший туториал.
     
  14. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Хм... Полезный туториал... Слышал что фейверками можно глушить WorldDownloader, который будет крашить клиент если на карте взрывается фейверк. Спасибо)
     

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