NTM uses a fully custom power unit called HE (High Energy), stored as JavaDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/hbmmods/hbm-s-nuclear-tech-git/llms.txt
Use this file to discover all available pages before exploring further.
long values with no standardised conversion factor to RF, FE, or any other energy system. The power network is managed by PowerNetMK2, a node-based distribution system built on top of NTM’s UNINOS (Universal Node Space) framework. Each cable tile registers a PowerNode into the global Nodespace, provider and receiver tiles subscribe themselves to those nodes every tick, and the network redistributes energy proportionally — honouring per-receiver priority levels — before debiting providers. Implementing the right interface from the api.hbm.energymk2 package is all that is required to participate in this network; no event registration or IMC handshake is needed.
Interface Hierarchy
The energy API is a small, well-layered hierarchy. Choose the interface that matches what your tile does:IEnergyHandlerMK2 carries the Javadoc comment “DO NOT USE DIRECTLY!” — it is a common ancestor that unifies providers and receivers but excludes conductors. Always implement IEnergyProviderMK2 or IEnergyReceiverMK2 rather than IEnergyHandlerMK2 itself.Interface Reference
IEnergyConnectorMK2 — Base Connectivity
IEnergyConnectorMK2 — Base Connectivity
Every energy-network participant implements this interface (directly or via a descendant). Its single method controls sided connectivity.The default implementation accepts all six cardinal directions. Override it to restrict which faces expose the power port on your tile.
IEnergyHandlerMK2 — Storage State
IEnergyHandlerMK2 — Storage State
Extends
IEnergyConnectorMK2 and ILoadedTile. Declares the three state accessors shared by providers and receivers, plus an optional debug particle position helper and the EnergyControl integration hook.IEnergyProviderMK2 — Power Output
IEnergyProviderMK2 — Power Output
Extend this interface on tile entities that generate or store power and push it into the network. Each tick, call
tryProvide(world, x, y, z, dir) for every face adjacent to a cable or receiver.IEnergyReceiverMK2 — Power Input
IEnergyReceiverMK2 — Power Input
Extend this interface on tile entities that consume power from the network. Call
trySubscribe(world, x, y, z, dir) every tick for each adjacent face.Higher-priority receivers are filled first. When supply is insufficient to satisfy all demand,
HIGHEST receivers receive their full share before NORMAL or LOW receivers are considered.IEnergyConductorMK2 — Cable / Wire
IEnergyConductorMK2 — Cable / Wire
Implement this on tiles that route power but do not store it. The only required method is
createNode(), which has a full default implementation that registers a six-way connected PowerNode.PowerNetMK2 — Network Engine
PowerNetMK2 — Network Engine
PowerNetMK2 is instantiated internally and should not be constructed by addon code. However, its public fields are useful for monitoring:Nodespace — Global Node Registry
Nodespace — Global Node Registry
Nodespace is a compatibility shim over UNINOS. Use the static helpers to interact with registered nodes:These methods are marked
@Deprecated because UNINOS now manages nodes directly. The methods remain functional — the deprecation is a signal that they may be consolidated in a future release, not that they are broken.IBatteryItem — Chargeable Items
Items that act as portable power storage (batteries, capacitor packs, power cores) implementIBatteryItem.
Full Implementation Example: Simple Power Generator
The following example shows a minimal tile entity that generates HE every tick and pushes it into any connected cable or adjacent receiver. It is intentionally verbose so every required element is visible.EnergyControl Mod Integration
NTM’sIEnergyHandlerMK2 includes a default implementation of provideInfoForECMK2(NBTTagCompound data) that writes the current stored HE and maximum capacity into the compound using NTM’s EnergyControl key constants:
provideInfoForECMK2 and call super first.
Key Facts & Gotchas
HE has no RF/FE conversion
HE has no RF/FE conversion
NTM’s HE unit is self-contained. There is no official conversion rate to Redstone Flux or Forge Energy. Do not attempt to bridge the two systems via a fixed multiplier — the power magnitudes are chosen for NTM’s own balance and would not be meaningful in an RF context.
Call tryProvide / trySubscribe every tick
Call tryProvide / trySubscribe every tick
The
PowerNetMK2 prunes stale entries after 3 000 ms (about 60 ticks at 20 TPS). Providers and receivers must re-register themselves each tick by calling tryProvide or trySubscribe on every relevant adjacent position. Failing to do so causes the tile to silently drop off the network.Conductors do not need tryProvide / trySubscribe
Conductors do not need tryProvide / trySubscribe
IEnergyConductorMK2 tiles only need to call Nodespace.createNode() when they are placed and Nodespace.destroyNode() when they are broken. The node persists in world data between chunk loads; conductors do not re-register every tick.Power is a long, not an int
Power is a long, not an int
All storage fields and method parameters use
long. Be careful with literals — write 100_000L not 100_000 — to avoid accidental integer truncation at large values.ILoadedTile requirement
ILoadedTile requirement
Both
IEnergyProviderMK2 and IEnergyReceiverMK2 extend ILoadedTile through IEnergyHandlerMK2. ILoadedTile is a marker interface with no methods to implement, but it must be satisfied by the hierarchy. Since you are implementing these interfaces on a TileEntity subclass, this is automatically satisfied by the Forge tile loading mechanism.