Начало
Приветствую читателей! Данное руководство расскажет о моде-библиотеке Fireflies.
Данная мод-библиотека была написана с целью добавления более понятного api для объектно-ориентированного подхода, а так же недостающих на взгляд автора инструментов, по типу новых важных событий и методов. Она нацелена в основном на TypeScript, но может использоваться и без.
А при чём тут светлячки?
Эта библиотека изначально разрабатывалась как аналог BlockEngine
для таких проектов, как Galacticraft и Infinite Forest, поэтому в некоторых случаях может использоваться как аналог.
Возможности
Ниже будут рассмотрены некоторые возможности, добавляемые мод-библиотекой.
Блоки
Блоки получили отдельный класс BasicBlock
, который располагает инструментами добавления событий для блока, тегов, блокстейтов, моделей и тайл-энтити; которые так же позволяют полностью исключить специальные типы блоков, заменяя их методами с возвратом значений, что широко практикуется в Java моддинге.
Блоки имеют свои классы-наследники, добавляя классы для создания блоков-растений, кустов и блоков, относящихся к дереву.
Предметы
Предметы получили отдельный класс BasicItem
, который располагает инструментами добавления событий предметов, в том числе и новых, а так же тегов и свойств предмета.
Тайл-энтити
Та йл-энтити получили два класса: CommonTileEntity
и LocalTileEntity
, а так же удобный декоратор NetworkEvent
, который позволяет добавлять пакеты в зависимости от разновидности тайла.
Тайлы были разделены на клиентские и серверные, которые выражены в отдельных классах. Это позволяет разделить визуальную часть и серверные вычисления явно.
Измерения
Добавлен новый класс Dimension
, который позволяет в виде класса создавать кастомные миры и использовать события по типу входа-выхода игрока из мира и генерации чанка мира. Так же есть некоторые новые возможности по типу автоматического создания слоя бедрока на нижнем слое мира.
Рендеринг
Добавлены инструменты для более удобного создания рендеров Animation.Base
в мире в виде класса RenderObject
, который делает некоторую работу за вас:
- Автоматически описывает рендер ис ходя из указанных данных в методах.
- Запускает и убирает поток исходя из того, описали ли вы действия в нём, позволяет автоматически указать количество fps при помощи метода.
- Позволяет автоматически менять позицию рендера при смене параметров: x, y, z. Работает если эта фишка включена при помощи метода.
- Позволяет переиспользовать созданный рендер нужное количество раз.
Новые возможности для кастомизации мира
В модуль World были добавлены новые методы, которые позволяют менять цвета неба, тумана, подводного тумана и облаков во время игры. Так же переключать сложность и получать значение сложности игры.
Подписка на события
Благодаря новому декоратору SubscribeEvent
вы можете "подписываться" на события так же, как и в Java моддинге. До статочно просто объявить декоратор над методом в классе.
Подключение
Подключить можно двумя способами:
ModAPI
Такой способ позволяет подключить api для конкретных участков кода, и выглядит так:
ModAPI.addAPICallback("FirefliesAPI", function(api) {
// Ваш код. В api лежат все модули и классы мода-библиотеки
});
ModAPI и launcher.js
Данный способ более предпочтителен. Он позволяет запустить мод сразу с запуском api мода-библиотеки. Это значит, что вы сможете его использовать так же, как оно используется в коде библиотеки, сразу по имени модулей и классов.
ModAPI.addAPICallback("FirefliesAPI", function(api) {
Launch(api);
});