{"id":156144,"date":"2026-06-09T15:23:35","date_gmt":"2026-06-09T12:23:35","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/"},"modified":"2026-06-09T15:23:35","modified_gmt":"2026-06-09T12:23:35","slug":"thunderbolt_lib","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/","title":{"rendered":"Thunderbolt_lib"},"content":{"rendered":"<p>> Plugin API and runtime bridge library for **AE2 Lightning Tech (AE2LT)**. Lets your mod integrate deeply with AE2LT&#8217;s lightning energy network **without ever touching its internal classes**.<\/p>\n<p>Thunderbolt_lib is a **required dependency** for any third-party plugin that extends, modifies, or hooks into AE2LT&#8217;s lightning system. It ships no items, blocks, or recipes of its own \u2014 only frozen public APIs, NeoForge capability contracts, recipe builders, and a reflective runtime bridge that degrades gracefully when AE2LT itself is absent.<\/p>\n<p>## Why download this?<\/p>\n<p>&#8211; **Players \/ modpack authors** \u2014 if a mod or modpack lists `ae2lt_api` as a dependency, install this jar alongside AE2 Lightning Tech.<br \/>\n&#8211; **Plugin developers** \u2014 depend on this library to access AE2LT&#8217;s machines, recipe types, and lightning energy capabilities **without coupling to AE2LT&#8217;s internal classes**.<\/p>\n<p>> **Important:** Thunderbolt_lib only does meaningful work when AE2 Lightning Tech is installed in the same Minecraft instance. Both mods must be present.<\/p>\n<p>## Target<\/p>\n<p>| | |<br \/>\n|&#8212;|&#8212;|<br \/>\n| Minecraft | 1.21.1 |<br \/>\n| Loader | NeoForge 21.1.x |<br \/>\n| Java | 21 |<br \/>\n| Targets | AE2 Lightning Tech (backwards-compatible since AE2LT introduced its lightning network) |<br \/>\n| Runtime mod ID | `ae2lt_api` |<\/p>\n<p>The project is presented as Thunderbolt_lib, but registers under `ae2lt_api`, so existing plugin dependency declarations are unaffected.<\/p>\n<p>## What it provides<\/p>\n<p>### Lightning energy capability<\/p>\n<p>Make your blocks and items first-class citizens of the AE2LT lightning network. `ILightningEnergyHandler` is exposed via two NeoForge capabilities \u2014 `LIGHTNING_ENERGY_BLOCK` (sided) and `LIGHTNING_ENERGY_ITEM` (void) \u2014 implement the interface and register it to participate in reads and writes. All quantities are expressed as `long`, scaling cleanly from a single machine to network-wide accounting.<\/p>\n<p>### Lightning energy tier<\/p>\n<p>A unified two-tier voltage definition that flows losslessly across API surfaces. `LightningEnergyTier` is a two-value enum (`HIGH_VOLTAGE` \/ `EXTREME_HIGH_VOLTAGE`), and ships with:<\/p>\n<p>&#8211; `CODEC` \u2014 Mojang `Codec<LightningEnergyTier>`<br \/>\n&#8211; `STREAM_CODEC` \u2014 vanilla `StreamCodec<RegistryFriendlyByteBuf, LightningEnergyTier>`<br \/>\n&#8211; `fromOrdinal(int)` \u2014 ordinal-based static decoder<\/p>\n<p>It shares its on-the-wire format with AE2LT&#8217;s own `LightningTier`, so packets and NBT round-trip cleanly between the two APIs without any hand-written adapter.<\/p>\n<p>### Reflective runtime bridge<\/p>\n<p>Won&#8217;t crash when AE2LT is missing \u2014 just degrades gracefully. Instead of hard-referencing AE2LT&#8217;s classes at load time, this library probes them reflectively at runtime and wires the lightning energy capability onto the five grid-connected block entities AE2LT publicly registers:<\/p>\n<p>&#8211; `ae2lt:lightning_collector`<br \/>\n&#8211; `ae2lt:lightning_simulation_room`<br \/>\n&#8211; `ae2lt:lightning_assembly_chamber`<br \/>\n&#8211; `ae2lt:overload_processing_factory`<br \/>\n&#8211; `ae2lt:tesla_coil`<\/p>\n<p>> `ae2lt:crystal_catalyzer` runs on FE only, does not participate in the lightning energy network, and is intentionally excluded.<\/p>\n<p>### Frozen ID constants<\/p>\n<p>Reference AE2LT&#8217;s registry IDs without dragging its main jar onto your compile path. Two `ResourceLocation` constant sets collect everything in one place:<\/p>\n<p>&#8211; `AE2LTBlockEntityIds` \u2014 AE2LT&#8217;s block-entity IDs, plus `LIGHTNING_GRID_MEMBERS` (the list of the five grid-connected machines above)<br \/>\n&#8211; `AE2LTRecipeIds` \u2014 AE2LT&#8217;s recipe-type IDs<\/p>\n<p>Both live in `com.qianchang.ae2lt_api.api.ids`. If AE2LT later renames any internal resource, the patch lands here so plugins don&#8217;t have to chase it.<\/p>\n<p>### Native API detection bridge<\/p>\n<p>Lets both API surfaces coexist in your mod, leaving you in control of which one to call. `com.qianchang.ae2lt_api.api.bridge.AE2LTNativeBridge` checks at runtime whether AE2LT&#8217;s first-party API package (`com.moakiee.ae2lt.api`, namespace `ae2lt`) is loaded.<\/p>\n<p>| Surface | This library | AE2LT first-party |<br \/>\n|&#8212;|&#8212;|&#8212;|<br \/>\n| Java package | `com.qianchang.ae2lt_api.api.*` | `com.moakiee.ae2lt.api.*` |<br \/>\n| Namespace | `ae2lt_api` | `ae2lt` |<br \/>\n| Capability ID | `ae2lt_api:lightning_energy` | `ae2lt:lightning_energy` |<\/p>\n<p>The two API surfaces are **deliberately namespace-distinct**; this library performs no implicit conversion between them, so callers explicitly choose which side to use.<\/p>\n<p>### Events<\/p>\n<p>Intercept lightning collection and apply your own conditional logic. `LightningCollectedEvent` is fired when an AE2LT collector picks up lightning energy. The event is cancellable and exposes `isNaturalWeather()` (to distinguish a true thunderstorm from a machine-induced strike) along with the matching 5-argument constructor; the original 4-argument constructor is preserved with `naturalWeather` defaulted to `false`, so migration is painless.<\/p>\n<p>### Recipe builders<\/p>\n<p>Generate schema-compliant JSON for all six AE2LT recipe types \u2014 **drop them straight into your data generation pipeline**:<\/p>\n<p>| Builder | Recipe type |<br \/>\n|&#8212;|&#8212;|<br \/>\n| `LightningAssemblyRecipeBuilder` | `ae2lt:lightning_assembly` |<br \/>\n| `LightningTransformRecipeBuilder` | `ae2lt:lightning_transform` |<br \/>\n| `LightningSimulationRecipeBuilder` | `ae2lt:lightning_simulation` |<br \/>\n| `OverloadProcessingRecipeBuilder` | `ae2lt:overload_processing` |<br \/>\n| `CrystalCatalyzerRecipeBuilder` | `ae2lt:crystal_catalyzer` |<br \/>\n| `LightningStrikeRecipeBuilder` | `ae2lt:lightning_strike` |<\/p>\n<p>`CrystalCatalyzerRecipeBuilder` additionally supports `dustMode()` and `outputTag(&#8230;)`, matching AE2LT&#8217;s `crystal_catalyzer\/dust\/*.json` schema.<\/p>\n<p>### Plugin loading &#038; API facade<\/p>\n<p>Unified registration callbacks, no hand-rolled NeoForge lifecycle wiring. Plugin discovery runs through `@AE2LTPlugin`, `IAE2LTPlugin`, and Java `ServiceLoader`; the static facade `AE2LTAPI` collects the API version, capability handles, and bridge utilities into a single entry point you can pull in with one `import static` and use across your codebase with minimal boilerplate.<\/p>\n<p>## Adding as a dependency<\/p>\n<p>Plugin developers \u2014 declare both `ae2lt_api` (this library) and `ae2lt` (the main mod) as required in your `neoforge.mods.toml`:<\/p>\n<p>&#8220;`toml<br \/>\n[[dependencies.your_mod_id]]<br \/>\n    modId = &#8220;ae2lt_api&#8221;<br \/>\n    type = &#8220;required&#8221;<br \/>\n    versionRange = &#8220;[1.0.0,)&#8221;<br \/>\n    ordering = &#8220;AFTER&#8221;<br \/>\n    side = &#8220;BOTH&#8221;<\/p>\n<p>[[dependencies.your_mod_id]]<br \/>\n    modId = &#8220;ae2lt&#8221;<br \/>\n    type = &#8220;required&#8221;<br \/>\n    versionRange = &#8220;1.0.0,)&#8221;<br \/>\n    ordering = &#8220;AFTER&#8221;<br \/>\n    side = &#8220;BOTH&#8221;<br \/>\n&#8220;`<\/p>\n<p>Set the lower bound of `versionRange` to the minimum version your plugin actually supports.<\/p>\n<p>## Feedback<\/p>\n<p>Bug reports and suggestions are welcome on the [project issue tracker. When reporting an issue, please include the versions of Minecraft, NeoForge, AE2 Lightning Tech, and Thunderbolt_lib you are running \u2014 it makes reproduction and triage much faster.<\/p>\n<p>## Source, changelog, releases<\/p>\n<p>&#8211; **Source code** \u2014 github.com\/QianChang-official\/Thunderbolt_lib<br \/>\n&#8211; **Changelog** \u2014 CHANGELOG.md<br \/>\n&#8211; **GitHub releases (jar mirror)** \u2014 all releases<\/p>\n<p>## Credits<\/p>\n<p>Maintained and developed by QianChang.<\/p>\n<p>Special thanks to the **AE2 Lightning Tech** team \u2014 MOAKIEE, CystrySU, gjmhmm8, _leng, TedXenon, and MHanHanBing \u2014 for publishing clear, stable registry IDs and recipe schemas that make this bridge possible.<\/p>\n<p>Thanks also to the **Applied Energistics 2** team \u2014 without AE2 there would be no AE2LT, and no reason for this bridge to exist.<\/p>\n<details>\n<summary><b>Disclaimer<\/b><\/summary>\n<p>This name is used for non-commercial community purposes only. If any rights holder considers the name to be infringing or unsuitable, please contact the maintainer and it will be changed promptly.<\/p>\n<p>Full notice \u2014 DISCLAIMER.md<\/p>\n<\/details>\n","protected":false},"excerpt":{"rendered":"<p>Thunderbolt_lib is the addon API and runtime bridge library for AE2 Lightning Tech.<\/p>\n","protected":false},"featured_media":156145,"template":"","meta":{"_minecraft_slug":"thunderbolt_lib","_minecraft_project_id":"g9oaYcWN","_minecraft_author":"QianChang-official","_minecraft_license":"MIT","_minecraft_downloads":11,"_minecraft_follows":0,"_minecraft_client_side":"required","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"thunderbolt_lib.zip","_minecraft_size_bytes":290885,"_minecraft_version_count":6,"_minecraft_updated_at":"2026-05-16T12:21:36.690353Z","_minecraft_date_created":"2026-05-12T06:06:15.565788Z","_minecraft_date_modified":"2026-05-06T15:21:09.136852Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/thunderbolt_lib","_minecraft_icon_attachment_id":156145,"_minecraft_imported_at":"2026-06-09T12:23:35+00:00","_minecraft_import_hash":"f704ec38fbefada48222e49fe12ac52c","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[873,158],"mod_loader":[160],"minecraft_version":[37],"class_list":["post-156144","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-library","mod_category-neoforge","mod_loader-neoforge","minecraft_version-1-21-1"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Thunderbolt_lib - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Thunderbolt_lib - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Thunderbolt_lib is the addon API and runtime bridge library for AE2 Lightning Tech.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/thunderbolt_lib\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/thunderbolt_lib\\\/\",\"name\":\"Thunderbolt_lib - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/thunderbolt_lib\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/thunderbolt_lib\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/thunderbolt_lib-icon-5b3cf38d820a66ce3cf12dd095d81e36f935739b_96.webp\",\"datePublished\":\"2026-06-09T12:23:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/thunderbolt_lib\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/thunderbolt_lib\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/thunderbolt_lib\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/thunderbolt_lib-icon-5b3cf38d820a66ce3cf12dd095d81e36f935739b_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/thunderbolt_lib-icon-5b3cf38d820a66ce3cf12dd095d81e36f935739b_96.webp\",\"width\":96,\"height\":60},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/thunderbolt_lib\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Thunderbolt_lib\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Thunderbolt_lib - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/","og_locale":"en_US","og_type":"article","og_title":"Thunderbolt_lib - Minecraft","og_description":"Thunderbolt_lib is the addon API and runtime bridge library for AE2 Lightning Tech.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/","name":"Thunderbolt_lib - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/thunderbolt_lib-icon-5b3cf38d820a66ce3cf12dd095d81e36f935739b_96.webp","datePublished":"2026-06-09T12:23:35+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/thunderbolt_lib-icon-5b3cf38d820a66ce3cf12dd095d81e36f935739b_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/thunderbolt_lib-icon-5b3cf38d820a66ce3cf12dd095d81e36f935739b_96.webp","width":96,"height":60},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/thunderbolt_lib\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Thunderbolt_lib"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/156144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/156145"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=156144"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=156144"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=156144"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=156144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}