Примечание: Minecrafter, второй туториал вышел немного лучше чем первый, но все же очень много ошибок, и мало чего обьясняется. Просто говорю, чтобы не спрашивал, почему я публикую именно свой туториал…

Всем привет! Это очередная статья для новичков!
С самого начала я даже не поверил в успех фейерверков, которые были добавлены в игру относительно недавно. Но я был очень неправ — это просто замечательная вещь! Она сильно расширяет возможности Майнкрафта, и к тому же дает некий стимул к дальнейшему прохождению. Почему — сейчас узнаете!

Собственно — для чего нужны фейерверки?
Понятное дело, они делаются для того, чтобы их запускать. Конечно, взрыв немного маленький и не такой торжественный, как это могло бы быть. Но он гораздо лучше того унылого взрыва от динамита, из которого раньше и делали фейерверки.
Их можно запускать при прохождении какого-то барьера, празднования — в общем, все соответствует реальной жизни.

Как делаются ракеты(фейерверки)?

Фейерверки в Minecraft | Майнкрафт Открытия


Крафт их сложен. Это обьясняется одной простой причиной:
Сама система крафта и взрыва ракет намного опережает свое время. Проще говоря, она очень сложная. Есть несколько компонентов, из которых она делается, и которые тоже можно редактировать, чтобы добавлять новый эффект или менять его. Ну ладно, не буду вас заморачивать. Вот крафт ракет, всех компонентов:

Звездочка(1-7)
Бумага
Порох(1-3)

Из этого делается сама ракета, в такой последовательности. Звездочка дает различные эффекты взрыва. А порох дает длительность взрыва ракеты. Для успеха нужно иметь хотя бы один из верхних компонентов и бумагу. Ах, да.

А какие эффекты дает звездочка и как их поставить?

Огненный шар — огромный радиус взрыва:

2012-12-07 18.53.01.png

Золотой самородок — взрыв в форме звезды:

2012-12-07 18.52.56.png

Любая голова — взрыв в форме крипера:

Creeper firework.png

Перо — хаотичный взрыв:

2012-12-07 18.53.15.png

Также может быть добавлен алмаз для оставления следов в небе после взрыва, или пыль австралия(глоустоун) для интересного звукового эффекта.

И теперь — а как крафтить звезду?

— в такой последовательности! Разберем:

1). Порох. Тут все ясно.
2). Любой краситель для придавания цвета. После крафта звезды цвет можно менять аналогичным образом.
3). Доп. ингредиент(в данном случае — самородок).

Это Видео Изменит Представление о Фейерверках в Майнкрафте


Вот мы и закончили со звездочкой, только скажу еще одно — после крафта звезды, цвет и эффекты можно легко поменять. Сами поняли, как.

  • Ракета, как вагонетки и мобы, может проходить сквозь портал в Ад.
  • Ракета может взрываться под водой.
  • Ракета может быть запущена с раздатчика, но она будет лететь только вертикально вверх.
  • Есть 52 480 различных комбинаций при создании ракеты.
  • Ракета не сгорит в лаве или огне при запуске.
  • Ракеты — единственный предмет, который нельзя найти в меню Креатива
Читайте также:  Очень крутые сборки Майнкрафт

Итак, на этом все! До скорого!

Источник: minestory.ru

Взрыв фейерверка (пока 1.7.10)

Однако, последней переменной он требует NBTTagCompound, откуда и берутся все параметры.
Сам же NBTTagCompound берётся из предмета.
У меня нет задачи создавать такую же вариативность взрывов как в ванильном мк, поэтому я пытаюсь создать NBTTagCompound прямо по месту, записав в него все данные.
А именно:

NBTTagCompound nbt = new NBTTagCompound(); NBTTagCompound nbt1 = new NBTTagCompound(); NBTTagCompound nbt2 = new NBTTagCompound(); nbt1.setByte(«Flight», (byte)3); nbt2.setIntArray(«Colors», new int[] ); nbt2.setBoolean(«Flicker», true); nbt2.setByte(«Type», (byte)1); nbt.setTag(«Fireworks», nbt1); nbt.setTag(«Explosions», nbt2);

В итоге, получается следующее:

Но, то ли я что-то путаю в иерархии данных, то ли вообще не правильно создаю NBT, ибо плохо в них разбираюсь.
В общем, взрыва не происходит или его не видно.

wilah

Если не путаю, то вот(да, я лох и не могу выделить квадрат)

Liahim

3,992 62 624

Таааааааааак.
Это интересно.

NBTTagCompound nbt = new NBTTagCompound(); NBTTagCompound nbt1 = new NBTTagCompound(); NBTTagCompound nbt2 = new NBTTagCompound(); NBTTagList nbtlist = new NBTTagList(); nbt2.setIntArray(«Colors», new int[] ); nbt2.setBoolean(«Flicker», true); nbt2.setByte(«Type», (byte)1); nbt1.setTag(«Explosion», nbt2); nbtlist.appendTag(nbt1); nbt.setTag(«Explosions», nbtlist);

Начало вылетать на моменте взрыва. Значит я иду по верному пути )))
Но, ему не нравится мой массив с цветом. Что бы это значило?

wilah

Так давай краш

Liahim

3,992 62 624
А! Благодарю )
Я всё-таки немного напутал с иерархией ) Уже исправил.
Нужно делать вот так:

NBTTagCompound tag = new NBTTagCompound(); NBTTagCompound tag1 = new NBTTagCompound(); NBTTagList nbtlist = new NBTTagList(); tag1.setIntArray(«Colors», new int[] ); tag1.setIntArray(«FadeColors», new int[] ); tag1.setBoolean(«Trail», true); tag1.setByte(«Type», (byte)1); nbtlist.appendTag(tag1); tag.setTag(«Explosions», nbtlist);

[merge_posts_bbcode]Добавлено: 30.03.2016 13:13:47[/merge_posts_bbcode]

Он искал цвет не в том месте.

Liahim

3,992 62 624

И ещё раз на счёт фейерверка )
Мне необходимо после взрыва выполнить определённое действие.
Делается это тут (перед смертью ентити):

Читайте также:  Почему не закачивается Майнкрафт

this.worldObj.setEntityState(this, (byte)17); //Это посыл для клиента, что бы заспаумился взрыв //Тут должно быть моё действие this.setDead(); //Это смерть ентити

Как сделать, чтобы действие выполнялось не сразу, а через некоторый промежуток времени?

Ясное дело, что можно создать таймер и по истечении срока выполнить действие. Но ведь таймер будет действовать только пока ентити существует. А если мой фейерверк уничтожать только после срабатывания таймера, то хз куда он за это время улетит =)

То есть, необходимо выполнить действие при уже «мёртвом» ентити, но с задержкой.
Как это сделать?

wilah

Сделать шедулер и таск, но мне кажется, что идея не очень

Liahim

3,992 62 624
Что есть шедулер?
. и таск )))

wilah

Таск — задание, шедулер — планировщик. Т.е через какое-то время он будет выполнять твой таск. Не совсем то, что нужно. Так что думай что-нибудь. Сделай список тасков и выполняй их поочерёдно, а в энтити добавляй таск

Liahim

3,992 62 624

Так! Решил идти кривым путём.
Создаю на месте взрыва ещё одну энтити и она уже отсчитывает таймер. Заодно спаумит различные эффекты )
Только вот как сделать её невидимой? Сейчас на месте взрыва появляется кубик.
this.setInvisible(true); не работает (

MrYarik666

Liahim написал(а):

Так! Решил идти кривым путём.
Создаю на месте взрыва ещё одну энтити и она уже отсчитывает таймер. Заодно спаумит различные эффекты )
Только вот как сделать её невидимой? Сейчас на месте взрыва появляется кубик.
this.setInvisible(true); не работает (

Сделай свой рендер для энтити. И оставь его пустым.

Liahim

3,992 62 624

Хм. Ну, можно, конечно.
Но для чего тогда метод this.setInvisible(true);?
Наверняка же можно проще это решить.

Liahim

3,992 62 624
Эх. Видимо, свой рендер — это самое правильное решение.

Liahim

3,992 62 624

Кто-нибудь знает где лежит эвент раздатчика, если таковой имеется?
Нужно, чтобы он плевался моим фейерверком.

MrYarik666

Liahim написал(а):

Кто-нибудь знает где лежит эвент раздатчика, если таковой имеется?
Нужно, чтобы он плевался моим фейерверком.

Liahim

3,992 62 624

Кокой такой проект?
Мой проект уже опубликован в Готовых модах )))
[merge_posts_bbcode]Добавлено: 31.03.2016 15:00:57[/merge_posts_bbcode]

А на счёт эвентов, я потому и спрашиваю, что нифига не нашёл.
Может есть иной способ запустить фейерверк из раздатчика?

Читайте также:  Тулбокс читы для Майнкрафта

Liahim

3,992 62 624
Так, понял. Всё делается через собственный BehaviorDefaultDispenseItem.

Liahim

3,992 62 624

О! Народ!
К вопросу из темы про зверушек.
Оказалось, что он больше относится к фейерверку ))) Ибо я нашёл в чём беда.
Но может мне кто-нибудь объяснить, как одно с другим связано?

В общем, тема такая.
Я регистрирую рендер для энтити в версиях 1.8.9 и 1.9:

RenderingRegistry.registerEntityRenderingHandler(EntityFeer.class, new RenderSnowball(Minecraft.getMinecraft().getRenderManager(), ModItems.feer, Minecraft.getMinecraft().getRenderItem()));

При этом мне зачёркивают registerEntityRenderingHandler и пишут мол используйте такую же версию но с IRenderFactory.
Долго ищу, что ж это за зверь. В итоге нахожу код.
Такой:

Всё работает!
НО! При этом напрочь загибаются все мои эвенты О_О

Кто-нибудь знает, в чём причина и как это побороть?
В общем-то, можно жить и с устаревшими методами, но блин. Какого ж?

timaxa007

Модератор
5,831 409 672
Я пробовал твой тип регистрации рендера и пробовал это:
Спойлер: это

RenderingRegistry.registerEntityRenderingHandler(EntityFeer.class, new RenderEntityFeer()); RenderingRegistry.registerEntityRenderingHandler(EntityTest.class, new RenderEntityTest.RenderFactoryEntityTest());
Эвент EntityJoinWorldEvent у меня работал, во всех трёх случаях.
[06:09:13] [Client thread/INFO] [STDOUT]: [com.example.examplemod.EventsForge:entityJoinWorld:10]: EntityJoinWorldEvent = EntityFeer[‘entity.examplemod.EntityFeer.name’/241, l=’MpServer’, x=66,50, y=71,50, z=118,50] [06:09:13] [Server thread/INFO] [STDOUT]: [com.example.examplemod.EventsForge:entityJoinWorld:10]: EntityJoinWorldEvent = EntityFeer[‘entity.examplemod.EntityFeer.name’/242, l=’New World’, x=66,50, y=71,50, z=118,50] [06:09:13] [Client thread/INFO] [STDOUT]: [com.example.examplemod.EventsForge:entityJoinWorld:10]: EntityJoinWorldEvent = EntityFeer[‘entity.examplemod.EntityFeer.name’/242, l=’MpServer’, x=66,50, y=71,50, z=118,50] [06:09:14] [Client thread/INFO] [STDOUT]: [com.example.examplemod.EventsForge:entityJoinWorld:10]: EntityJoinWorldEvent = EntityTest[‘entity.examplemod.EntityTest.name’/244, l=’MpServer’, x=65,50, y=71,50, z=119,50] [06:09:14] [Server thread/INFO] [STDOUT]: [com.example.examplemod.EventsForge:entityJoinWorld:10]: EntityJoinWorldEvent = EntityTest[‘entity.examplemod.EntityTest.name’/245, l=’New World’, x=65,50, y=71,50, z=119,50] [06:09:14] [Client thread/INFO] [STDOUT]: [com.example.examplemod.EventsForge:entityJoinWorld:10]: EntityJoinWorldEvent = EntityTest[‘entity.examplemod.EntityTest.name’/245, l=’MpServer’, x=65,50, y=71,50, z=119,50]

Источник: forum.mcmodding.ru

[Ответ дан] Не крафтятся фейерверки

Не крафтятся звездки ID402 так же как и сами фейерверки ID401. В запрещеных нет. Просьба по возможности исправить. Спасибо!

Zloi_Kloun

Администратор

Команда форума
Adeptus Mechanicus
Оператор-Исповедник DeusExMachine

Регистрация 17.04.2013 Сообщения 3 668 Minecraft Ururu

и не должны. на данный момент
вам об этом даж пишет. каждый раз когда вы пытаетесь его скрафтить. красненьким в чатике. даже вроде не на немецком. а на вполне русском.

отсутствие крафта в запретах совершенно не обозначает, что это запрещено. это обозначает, что у них тупо нет крафта.
хеля хотел их куда-то присобачить и сказал его не делать. я хз куда, как обычно все прослушала, мне эт не интересно, возможно в профы. спрашивайте его.

Источник: minecraft.guild-bt.ru