EntityTrowable или предмет, который можно кинуть

Доброго времени суток, господа.
Этот туториал ориентирован, прежде всего, на новичков и ничего сложного не представляет. Здесь я даже не упомяну про рендер, пользуясь исключительно ванильными средствами.
Однако, на эту версию подобных статей практически нет, и я думаю лишней она не будет.
Ну а те, кто не новички, возможно, найдут что-нибудь интересное в главе 5.
Ладно, хватит лирики, поехали!

  1. Глава 0. Предисловие
  2. Глава 1. Подготовка
  3. Глава 2. Класс entity
  4. Глава 3. Рендер
  5. Глава 4. Привязка entity к предмету
  6. Глава 5. Для продвинутых

Глава 1. Подготовка:
1.Будет неплохо, если у нас уже есть готовый предмет, или на худой конец основа мода и настроенный прокси. Если вы этого не сделали, советую заглянуть сюда: Прокси, Предмет.
2.Также нам потребуется сделать инстанцию.

снег — physics mod (PRO версия)

Для этого в главном классе нашего мода (в моём случае он называется FlyApple) добавим вот такой код:

Если вы проделали всё вышеописанное, можете переходить к следующей главе.

Глава 2. Класс entity:
В основном пакете мода (в моём случае это ru.mousecray.flyapple ) создадим пакет entity .
Далее создадим класс EntityFlyApple:

Теперь зарегистрируем entity. Для этого в классе CommonProxy в методе preInit
добавим вот эту строчку:

EntityRegistry.registerModEntity(new ResourceLocation(«flyapple», «flying_apple»), EntityFlyApple.class, «flyapple:flying_apple», 0, FlyApple.instance, 64, 20, true);

new ResourceLocation(«flyapple», «flying_apple») — Ссылка на ресурсы нашего entity (modid:name).
EntityFlyApple.class — Имя класса нашего entity.
«flyapple:flying_apple» — Имя entity. Рекомендуется писать в стиле modid:name чтобы не было конфликтов с майнкрафтом.
0 — Идентификатор нашего entity. В одном моде, у каждого entity должен быть свой уникальный id.
FlyApple.instance — То, о чём мы говорили в первой главе — инстанция.
64, 20 — 1. Радиус, в котором entity будет замечать других существ; 2.Частота этого наблюдения.
true — Нужно ли слать пакеты об изменении скорости. Не имеет смысла, для неподвижных существ.

Читайте также:  Как в Майнкрафте срубить дерево одним ударом

Screenshot_1.png

Теперь мы можем запустить игру и посмотреть, что получилось.

Мы можем призвать наш entity, однако не увидим его. Ведь мы не сделали ему рендер.

Глава 3. Рендер:
В отличии от других примеров по созданию entity мы Не будем делать свой рендер, мы просто используем ванильный класс RenderSnowball .
Итак, приступим!

Затем мы зарегистрируем рендер для яблока, используя наш RenderFactory. В ClientProxy , нашего мода добавим такую строчку:

//Регистрируем рендер, и в качестве 1-ого аргумента передаём класс нашего entity, //а в качестве второго — наш RenderFactory. Items.APPLE — предмет, с которого entity //возьмёт текстуру. RenderingRegistry.registerEntityRenderingHandler(EntityFlyApple.class, new SnowballRenderFactory(Items.APPLE));

ВАЖНО: Эту строчку нужно поместить в метод preInit, и только в него. НЕ в init, НЕ в postInit. Иначе рендер entity работать не будет.
После того, как мы всё сделали, запустим игру и посмотрим, что получилось:

Screenshot_2.png

Чтобы призвать entity, введите вот такую команду:
/summon flyapple:flying_apple ~2 ~2 ~

Глава 4. Привязка entity к предмету:
Мы ведь хотим, чтобы у нас не просто был свой снаряд, но и чтобы его можно было кинуть с помощью предмета. Всё, что нам нужно, это добавить в класс предмета вот этот метод:

//Метод вызывается, когда игрок кликет ПКМ с предметом public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) < //Получаем стак в руке игрока ItemStack itemstack = player.getHeldItem(hand); //Проверяем, что игрок НЕ в творческом режиме if (!player.capabilities.isCreativeMode) < //Уменьшаем стак на 1 itemstack.shrink(1); >//Проигрываем звук world.playSound((EntityPlayer)null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); //Делаем задержку между бросаниями player.getCooldownTracker().setCooldown(this, 20); if (!world.isRemote) < //Создаём объект нашего летающего яблока EntityFlyApple apple = new EntityFlyApple(world, player); //Поворачиваем его «лицом» к игроку и устанавливаем параметры движения apple.setHeadingFromThrower(player, player.rotationPitch, player.rotationYaw, 0.0F, 1.5F, 1.0F); //Призываем наш entity world.spawnEntity(apple); >//Для статистики player.addStat(StatList.getObjectUseStats(this)); //Возвращаем успешное действие, то-есть при ПКМ рука дёрнется как будто игрок кинул предмет return new ActionResult(EnumActionResult.SUCCESS, itemstack); >

Читайте также:  Как приручить хорька в Майнкрафте

Вот и всё! Мы сделали всё, что нужно!

    Допустим, ты хочешь, чтобы твой entity появлялся, при использовании ванильного предмета. Без проблем. Однако, тебе потребуется сделать свой EventHandler. Самый обычный — EVENT_BUS . Дальше тебе нужно добавить эвент, который будет ниже. Код практически идентичен коду, который я использовал в 4-ой главе, поэтому без комментариев:
  • Помнишь метод setHeadingFromThrower ? Да, да в 4-ой главе. К слову сказать, в конструкторе entity можно использовать метод похожий на вышеупомянутый, за исключением, пожалуй, параметров скорости, и зависимости от игрока: setThrowableHeading .

Параметры метода:​
x, y, z — Буквально, движение. Задаёт направление перемещения;​
Velocity — скорость полёта пули;​
Accuracy — разброс при стрельбе.​
Спойлер: Ссылки

Вот и всё. Всё, что я мог сказать по этой теме, я сказал. И не забывайте, что вы можете скачать архив с рабочим кодом, если у вас что-либо не получилось. А теперь. желаю удачи!

Автор mousecray Скачивания 6 Просмотры 2,245 Первый выпуск 21 Июн 2018 Обновление 21 Июн 2018 Оценка 4.50 звёзд 2 оценок

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

Текстурпак Projectile Trail

Текстурпак Projectile Trail

Если при запуске снаряда в Minecraft Bedrock Вы хотите проследить за траекторией его полета, воспользуйтесь текстурпаком «Projectile Trail (След снаряда)». С ним после бросания снежка, яйца, зелья, стрелы, жемчуга Края, а также после забрасывания удочки будут появляться частицы в тех местах, где пролетел предмет.

Цвет частиц будет изменяться в зависимости от вида снаряда.

Демонстрация пакета в Minecraft:

Текстурпак Projectile Trail Текстурпак Projectile Trail Текстурпак Projectile Trail Текстурпак Projectile Trail

Установка Projectile Trail (.mcpack)

    Скачайте текстурпак с пометкой — «.mcpack» ниже.

Источник: planet-mc.net

Мод: Стрельба динамитом

Мод: Стрельба динамитом

Ты когда-нибудь хотел получить способность швырять динамиты во врагов? Тогда мод Dynamite Projectile точно для тебя: в Майнкрафт ПЕ появится новый снаряд, который можно выбрасывать . Как только ТНТ достигнет цели, то тут же взорвется и нанесет серьезный урон любому монстру или боссу.

Читайте также:  Как установить survival minecraft

Если же снаряд выбросить высоко вверх, то взрыв произойдет через 2-3 секунды. Высчитать время невозможно, поскольку автор установил случайное время в этом интервале. После подрыва разлетаются осколки, которые также будут взрываться и наносить урон окружению.

Оружие будет полезно не только для борьбы с врагами, но и для добычи материалов или троллинга друзей. Динамит улетает на 4-6 блоков, если подпрыгнуть во время броска.

  • 4 блока — нет урона
  • 3 блока — 1 сердце
  • 2 блока — 2.5 сердца
  • 1 блок — 4 сердца
  • Если встать рядом, то отнимется 6.5 сердец

Рецепт крафта динамита

Получение динамита

  • Крафт крылатого динамита
  • Добавили крылатый динамит

Источник: mcpehub.org