|
| 1 | +# Начало |
| 2 | +Приветствую читателей! Данное руководство расскажет о моде-библиотеке Fireflies. |
| 3 | + |
| 4 | +Данная мод-библиотека была написана с целью добавления более понятного api для объектно-ориентированного подхода, а так же недостающих на взгляд автора инструментов, по типу новых важных событий и методов. Она нацелена в основном на TypeScript, но может использоваться и без. |
| 5 | + |
| 6 | +<div style={{textAlign: "center", color:"yellow", marginTop: "30px"}}> |
| 7 | + |
| 8 | +А при чём тут светлячки? |
| 9 | + |
| 10 | +</div> |
| 11 | + |
| 12 | +<div className="resource-atlas-align-box"> |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | +</div> |
| 17 | + |
| 18 | +Эта библиотека изначально разрабатывалась как аналог `BlockEngine` для таких проектов, как Galacticraft и Infinite Forest, поэтому в некоторых случаях может использоваться как аналог. |
| 19 | + |
| 20 | +## Возможности |
| 21 | +Ниже будут рассмотрены некоторые возможности, добавляемые мод-библиотекой. |
| 22 | +### Блоки |
| 23 | +Блоки получили отдельный класс `BasicBlock`, который располагает инструментами добавления событий для блока, тегов, блокстейтов, моделей и тайл-энтити; которые так же позволяют полностью исключить специальные типы блоков, заменяя их методами с возвратом значений, что широко практикуется в Java моддинге. |
| 24 | + |
| 25 | +Блоки имеют свои классы-наследники, добавляя классы для создания блоков-растений, кустов и блоков, относящихся к дереву. |
| 26 | + |
| 27 | +### Предметы |
| 28 | +Предметы получили отдельный класс `BasicItem`, который располагает инструментами добавления событий предметов, в том числе и новых, а так же тегов и свойств предмета. |
| 29 | + |
| 30 | +### Тайл-энтити |
| 31 | +Тайл-энтити получили два класса: `CommonTileEntity` и `LocalTileEntity`, а так же удобный декоратор `NetworkEvent`, который позволяет добавлять пакеты в зависимости от разновидности тайла. |
| 32 | + |
| 33 | +Тайлы были разделены на клиентские и серверные, которые выражены в отдельных классах. Это позволяет разделить визуальную часть и серверные вычисления явно. |
| 34 | + |
| 35 | +### Измерения |
| 36 | +Добавлен новый класс `Dimension`, который позволяет в виде класса создавать кастомные миры и использовать события по типу входа-выхода игрока из мира и генерации чанка мира. Так же есть некоторые новые возможности по типу автоматического создания слоя бедрока на нижнем слое мира. |
| 37 | + |
| 38 | +### Рендеринг |
| 39 | +Добавлены инструменты для более удобного создания рендеров `Animation.Base` в мире в виде класса `RenderObject`, который делает некоторую работу за вас: |
| 40 | +1. Автоматически описывает рендер исходя из указанных данных в методах. |
| 41 | +2. Запускает и убирает поток исходя из того, описали ли вы действия в нём, позволяет автоматически указать количество fps при помощи метода. |
| 42 | +3. Позволяет автоматически менять позицию рендера при смене параметров: x, y, z. Работает если эта фишка включена при помощи метода. |
| 43 | +4. Позволяет переиспользовать созданный рендер нужное количество раз. |
| 44 | + |
| 45 | +### Новые возможности для кастомизации мира |
| 46 | +В модуль World были добавлены новые методы, которые позволяют менять цвета неба, тумана, подводного тумана и облаков во время игры. Так же переключать сложность и получать значение сложности игры. |
| 47 | + |
| 48 | +### Подписка на события |
| 49 | +Благодаря новому декоратору `SubscribeEvent` вы можете "подписываться" на события так же, как и в Java моддинге. Достаточно просто объявить декоратор над методом в классе. |
| 50 | + |
| 51 | +## Подключение |
| 52 | + |
| 53 | +Подключить можно двумя способами: |
| 54 | +### ModAPI |
| 55 | +Такой способ позволяет подключить api для конкретных участков кода, и выглядит так: |
| 56 | + |
| 57 | +```js |
| 58 | +ModAPI.addAPICallback("FirefliesAPI", function(api) { |
| 59 | + // Ваш код. В api лежат все модули и классы мода-библиотеки |
| 60 | +}); |
| 61 | +``` |
| 62 | + |
| 63 | +### ModAPI и launcher.js |
| 64 | +Данный способ более предпочтителен. Он позволяет запустить мод сразу с запуском api мода-библиотеки. Это значит, что вы сможете его использовать так же, как оно используется в коде библиотеки, сразу по имени модулей и классов. |
| 65 | + |
| 66 | +```js title="launcher.js" |
| 67 | +ModAPI.addAPICallback("FirefliesAPI", function(api) { |
| 68 | + Launch(api); |
| 69 | +}); |
| 70 | +``` |
0 commit comments