Перейти к основному содержанию

Начало

Приветствую читателей! Данное руководство расскажет о моде-библиотеке Fireflies.

Данная мод-библиотека была написана с целью добавления более понятного api для объектно-ориентированного подхода, а так же недостающих на взгляд автора инструментов, по типу новых важных событий и методов. Она нацелена в основном на TypeScript, но может использоваться и без.

А при чём тут светлячки?

fireflies.png

Эта библиотека изначально разрабатывалась как аналог BlockEngine для таких проектов, как Galacticraft и Infinite Forest, поэтому в некоторых случаях может использоваться как аналог.

Возможности

Ниже будут рассмотрены некоторые возможности, добавляемые мод-библиотекой.

Блоки

Блоки получили отдельный класс BasicBlock, который располагает инструментами добавления событий для блока, тегов, блокстейтов, моделей и тайл-энтити; которые так же позволяют полностью исключить специальные типы блоков, заменяя их методами с возвратом значений, что широко практикуется в Java моддинге.

Блоки имеют свои классы-наследники, добавляя классы для создания блоков-растений, кустов и блоков, относящихся к дереву.

Предметы

Предметы получили отдельный класс BasicItem, который располагает инструментами добавления событий предметов, в том числе и новых, а так же тегов и свойств предмета.

Тайл-энтити

Тайл-энтити получили два класса: CommonTileEntity и LocalTileEntity, а так же удобный декоратор NetworkEvent, который позволяет добавлять пакеты в зависимости от разновидности тайла.

Тайлы были разделены на клиентские и серверные, которые выражены в отдельных классах. Это позволяет разделить визуальную часть и серверные вычисления явно.

Измерения

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

Рендеринг

Добавлены инструменты для более удобного создания рендеров Animation.Base в мире в виде класса RenderObject, который делает некоторую работу за вас:

  1. Автоматически описывает рендер исходя из указанных данных в методах.
  2. Запускает и убирает поток исходя из того, описали ли вы действия в нём, позволяет автоматически указать количество fps при помощи метода.
  3. Позволяет автоматически менять позицию рендера при смене параметров: x, y, z. Работает если эта фишка включена при помощи метода.
  4. Позволяет переиспользовать созданный рендер нужное количество раз.

Новые возможности для кастомизации мира

В модуль World были добавлены новые методы, которые позволяют менять цвета неба, тумана, подводного тумана и облаков во время игры. Так же переключать сложность и получать значение сложности игры.

Подписка на события

Благодаря новому декоратору SubscribeEvent вы можете "подписываться" на события так же, как и в Java моддинге. Достаточно просто объявить декоратор над методом в классе.

Подключение

Подключить можно двумя способами:

ModAPI

Такой способ позволяет подключить api для конкретных участков кода, и выглядит так:

ModAPI.addAPICallback("FirefliesAPI", function(api) {
// Ваш код. В api лежат все модули и классы мода-библиотеки
});

ModAPI и launcher.js

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

launcher.js
ModAPI.addAPICallback("FirefliesAPI", function(api) {
Launch(api);
});