Thunderbolt_lib
Thunderbolt_lib — это библиотека API для аддонов и мост времени выполнения для AE2 Lightning Tech.
- Загрузчики
- NeoForgeForge
- Скачиваний на Modrinth
- 724
- Подписчиков на Modrinth
- 0
- версий
- 13
- Обновлён
- 30 мая 202630 мая
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
Plugin API и runtime bridge-библиотека для AE2 Lightning Tech (AE2LT). Позволяет твоему моду глубоко интегрироваться с сетью молниевой энергии AE2LT без необходимости трогать его внутренние классы.
Thunderbolt_lib — обязательная зависимость для любого стороннего плагина, который расширяет, изменяет или подключается к молниевой системе AE2LT. Он не добавляет собственных предметов, блоков или рецептов — только замороженные публичные API, контракты capability NeoForge, конструкторы рецептов и рефлексивный runtime bridge, который корректно деградирует при отсутствии самого AE2LT.
Зачем это скачивать?
- Игрокам / авторам модпаков — если мод или модпак указывает
ae2lt_apiкак зависимость, установи этот jar вместе с AE2 Lightning Tech. - Разработчикам плагинов — зависьте от этой библиотеки, чтобы получить доступ к машинам, типам рецептов и capability молниевой энергии AE2LT без привязки к внутренним классам AE2LT.
Важно: Thunderbolt_lib выполняет полезную работу только когда AE2 Lightning Tech установлен в том же экземпляре Minecraft. Оба мода должны присутствовать.
Целевые версии
| Minecraft | 1.21.1 |
| Загрузчик | NeoForge 21.1.x |
| Java | 21 |
| Цели | AE2 Lightning Tech (обратно совместим с момента появления молниевой сети в AE2LT) |
| Runtime mod ID | ae2lt_api |
Проект представлен как Thunderbolt_lib, но регистрируется под ae2lt_api, так что существующие объявления зависимостей в плагинах не затрагиваются.
Что он предоставляет
Capability молниевой энергии
Сделайте свои блоки и предметы полноправными участниками молниевой сети AE2LT. ILightningEnergyHandler предоставляется через две capability NeoForge — LIGHTNING_ENERGY_BLOCK (sided) и LIGHTNING_ENERGY_ITEM (void) — реализуйте интерфейс и зарегистрируйте его, чтобы участвовать в чтении и записи. Все величины выражены как long, чисто масштабируясь от одной машины до учёта в масштабах всей сети.
Уровень молниевой энергии
Унифицированное двухуровневое определение напряжения, которое без потерь передаётся между поверхностями API. LightningEnergyTier — это enum с двумя значениями (HIGH_VOLTAGE / EXTREME_HIGH_VOLTAGE), и он поставляется с:
CODEC— Mojang `Codec`STREAM_CODEC— ванильныйStreamCodec<RegistryFriendlyByteBuf, LightningEnergyTier>fromOrdinal(int)— статический декодер по ordinal
Он использует тот же формат передачи по сети, что и собственный LightningTier из AE2LT, поэтому пакеты и NBT корректно проходят туда-обратно между двумя API без рукописного адаптера.
Рефлексивный runtime bridge
Не упадёт при отсутствии AE2LT — просто корректно деградирует. Вместо жёсткой ссылки на классы AE2LT во время загрузки эта библиотека проверяет их рефлексивно в рантайме и подключает capability молниевой энергии к пяти подключённым к сети block entity, которые AE2LT публично регистрирует:
ae2lt:lightning_collectorae2lt:lightning_simulation_roomae2lt:lightning_assembly_chamberae2lt:overload_processing_factoryae2lt:tesla_coil
ae2lt:crystal_catalyzerработает только на FE, не участвует в молниевой энергосети и намеренно исключён.
Замороженные константы ID
Ссылайтесь на registry ID из AE2LT, не таща его основной jar в свой compile path. Два набора констант ResourceLocation собирают всё в одном месте:
AE2LTBlockEntityIds— ID block entity из AE2LT, плюсLIGHTNING_GRID_MEMBERS(список пяти подключённых к сети машин выше)AE2LTRecipeIds— ID типов рецептов AE2LT
Оба находятся в com.qianchang.ae2lt_api.api.ids. Если AE2LT позже переименует какой-либо внутренний ресурс, патч появится здесь, чтобы плагинам не пришлось за этим гоняться.
Мост определения нативного API
Позволяет обеим поверхностям API сосуществовать в вашем моде, оставляя за вами контроль над тем, какую вызывать. com.qianchang.ae2lt_api.api.bridge.AE2LTNativeBridge проверяет в рантайме, загружен ли first-party API-пакет AE2LT (com.moakiee.ae2lt.api, namespace ae2lt).
| Surface | Эта библиотека | AE2LT first-party |
|---|---|---|
| Java package | com.qianchang.ae2lt_api.api.* | com.moakiee.ae2lt.api.* |
| Namespace | ae2lt_api | ae2lt |
| Capability ID | ae2lt_api:lightning_energy | ae2lt:lightning_energy |
Эти два API-интерфейса намеренно разделены по пространствам имён; библиотека не выполняет неявного преобразования между ними, так что вызывающий код явно выбирает, какую сторону использовать.
События
Перехватывайте сбор молний и применяйте свою условную логику. LightningCollectedEvent вызывается, когда коллектор AE2LT собирает энергию молнии. Событие можно отменить, и оно предоставляет isNaturalWeather() (чтобы отличить настоящую грозу от удара, вызванного машиной), а также соответствующий конструктор с 5 аргументами; оригинальный конструктор с 4 аргументами сохранён со значением naturalWeather по умолчанию false, так что миграция проходит безболезненно.
Построители рецептов
Генерируйте JSON, соответствующий схеме, для всех шести типов рецептов AE2LT — просто вставляйте их прямо в свой конвейер генерации данных:
| Построитель | Тип рецепта |
|---|---|
LightningAssemblyRecipeBuilder | ae2lt:lightning_assembly |
LightningTransformRecipeBuilder | ae2lt:lightning_transform |
LightningSimulationRecipeBuilder | ae2lt:lightning_simulation |
OverloadProcessingRecipeBuilder | ae2lt:overload_processing |
CrystalCatalyzerRecipeBuilder | ae2lt:crystal_catalyzer |
LightningStrikeRecipeBuilder | ae2lt:lightning_strike |
CrystalCatalyzerRecipeBuilder дополнительно поддерживает dustMode() и outputTag(...), что соответствует схеме crystal_catalyzer/dust/*.json в AE2LT.
Загрузка плагинов и фасад API
Унифицированные колбэки регистрации, никакой ручной обвязки жизненного цикла NeoForge. Обнаружение плагинов работает через @AE2LTPlugin, IAE2LTPlugin и Java ServiceLoader; статический фасад AE2LTAPI собирает версию API, дескрипторы capability и утилиты-мосты в единую точку входа, которую можно подключить одним import static и использовать по всей кодовой базе с минимумом шаблонного кода.
Добавление в качестве зависимости
Разработчикам плагинов — объявите и ae2lt_api (эту библиотеку), и ae2lt (основной мод) как обязательные в вашем neoforge.mods.toml:
[[dependencies.your_mod_id]]
modId = "ae2lt_api"
type = "required"
versionRange = "[1.0.0,)"
ordering = "AFTER"
side = "BOTH"
[[dependencies.your_mod_id]]
modId = "ae2lt"
type = "required"
versionRange = "[1.0.0,)"
ordering = "AFTER"
side = "BOTH"Установите нижнюю границу versionRange равной минимальной версии, которую ваш плагин действительно поддерживает.
Обратная связь
Сообщения об ошибках и предложения приветствуются в трекере задач проекта. При сообщении о проблеме, пожалуйста, укажите версии Minecraft, NeoForge, AE2 Lightning Tech и Thunderbolt_lib, которые вы используете — это значительно ускоряет воспроизведение и разбор.
Исходный код, список изменений, релизы
- Исходный код — github.com/QianChang-official/Thunderbolt_lib
- Список изменений — CHANGELOG.md
- Релизы на GitHub (зеркало jar) — все релизы
Благодарности
Поддерживается и разрабатывается QianChang.
Особая благодарность команде AE2 Lightning Tech — MOAKIEE, CystrySU, gjmhmm8, _leng, TedXenon и MHanHanBing — за публикацию чётких, стабильных ID реестра и схем рецептов, которые делают этот мост возможным.
Также спасибо команде Applied Energistics 2 — без AE2 не было бы AE2LT и не было бы причин для существования этого моста.
Отказ от ответственности
Это название используется исключительно в некоммерческих общественных целях. Если какой-либо правообладатель сочтёт название нарушающим права или неподходящим, пожалуйста, свяжитесь с сопровождающим, и оно будет оперативно изменено.
Полное уведомление — DISCLAIMER.md
Частые вопросы
Как установить Thunderbolt_lib?
Установите NeoForge под свою версию Minecraft, скачайте Thunderbolt_lib под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Thunderbolt_lib?
У Thunderbolt_lib есть сборки для Minecraft 1.20.1, 1.21.1, 26.1.2.
Нужен ли Thunderbolt_lib на сервере?
Нужен и в игре, и на сервере