Horizon / Native mod API
Native mod API gaps
Find which capabilities are on main, which have work in review, and where to start investigating a gap. Coverage describes the specific seam in each row. It does not certify end-to-end behavior or full NeoForge parity.
Statuses reviewed 10 November 2026 against cf0113879ebe (opens in a new tab) · Horizon main 99379ade14fa (opens in a new tab), synced · NeoForge 26.1 docs and 26.3 release notes
Team's open PRs
- arismoko/horizon#2922 Sync upstream to 7b42678bcd (opens in a new tab)
Ari
- arismoko/horizon#2971 Preserve mixed tooltip order and pass whole content box to images (opens in a new tab)
Ari
- arismoko/horizon#2975 Rollup 26: mod loading, rendering, riding and interaction fixes (opens in a new tab)
Ari
- arismoko/horizon#2968 Return full interaction results from use_item Parts (opens in a new tab)
Ari
- arismoko/horizon#2970 Freeze the generated game graph before native mod resolution (opens in a new tab)
Ari
- arismoko/horizon#2948 Rollup 24: datapack stack, item models and runtime fixes (opens in a new tab)
Ari
- arismoko/horizon#2916 Commit block-entity tick item writes atomically (opens in a new tab)
Ari
- arismoko/horizon#2923 mod-api: mod_mismatch hook and the world's saved mod list (ModMismatchEvent) (opens in a new tab)
Juan Luci
- arismoko/horizon#2835 mod-api: register_cauldron_fluid_content (RegisterCauldronFluidContentEvent) (opens in a new tab)
Juan Luci
- arismoko/horizon#2823 Load content mods' own biomes into the biome table and the synced registry (opens in a new tab)
Xmilon
- arismoko/horizon#2811 Sync replaced and modified biomes to clients, ambient and music fields for modify_biome (opens in a new tab)
Xmilon
- arismoko/horizon#2757 Let mods read their datapack registry entries (opens in a new tab)
Xmilon
Summary
- Covered
- 38
- Partial
- 32
- Missing
- 5
- Not applicable
- 2
Claimable now
Open issues with a public design or implementation outline, no public claim and no linked PR in the Up for grabs board snapshot (opens in a new tab).
- #2690 Let mods register configuration-phase tasks for a joining player (opens in a new tab)
openassigned to Azed1239Status may have changed: check before claiming
The issue specifies the registrar, completion gate and timeout fixture. Typed payload work is a dependency. #813 (opens in a new tab) · open · no public claim found
- #2740 mob_submit can't read a mob's synced attachments (opens in a new tab)
closedassigned to OlaHullebergStatus may have changed: check before claiming
The maintainer outlined a direct immutable existing-value lookup and asked for client-sync and stale-handle coverage.
Other issues and claim history
Excluded from this list: #815 (opens in a new tab) · open · OlaHulleberg posted a claim before the maintainer reopened claiming (review the claim chronology and open evidence PR before taking this on), #2554 (opens in a new tab) both scopes (claimed by Xmilon with PRs open), #2640 (opens in a new tab) (reporter has a working fork implementation and offered to port it), and #857 (opens in a new tab) (the design still calls for approval of the worker contract).
Other candidates to investigate: #860 non-mob entity renderers (opens in a new tab) and #867 typed frame passes (opens in a new tab). Both have written scope. Check for linked or overlapping PRs before claiming. #897 entity render state (opens in a new tab) was reopened to claim after Ola’s comment and needs a shared render-preparation boundary.
Capability comparison
Partial includes a narrower seam or an implementation in review. Missing means the reviewed surface has no implementation, including cases with a design or evidence PR.
Jump to an area
No features match these filters.
Blocks
3 covered · 1 partial
Block declarations, states and placement
Block Parts expose declared content, state facts and placement callbacks.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Ticks, neighbour notifications and redstone
Random and scheduled ticks, neighbour notifications and signal queries have dedicated seams.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Block entities, persistence and synchronization
Block-entity types, ticks and update tags have typed APIs.
Sources and counterpart
- parts/block_entities.rs
- hooks/block_entity_tick.rs
- hooks/block_entity_update_tag.rs
- how-to/block-entities.md
26.1 docs (opens in a new tab) · 26.3 unverified
Block connections and item post-placement
Connection and placement seams exist. The precise post-placement contract is separate from the placement state callback.
Sources and counterpart
Items
4 covered
Item declarations and behaviour
Item Parts handle use, tool modification and inventory ticks.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Custom data components and defaults
The catalog exposes component type declarations and item-default changes alongside stack values.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Creative inventory contributions
The catalog provides a creative tab contents hook.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Tools, consumables and held-use timing
Consumable effects and held-use timing are separate typed seams.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Entities
2 covered · 2 partial
General mod entity types
Entity Parts and goals exist. The broader entity storage and lifecycle contract is still a proposal.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Entity attributes, goals and spawn checks
Existing Parts expose attributes, goals and spawn placement without depending on the general entity type proposal.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Entity lifecycle, damage and interaction
The catalog has explicit join, leave, interaction, damage and death moments.
Sources and counterpart
- hooks/entity_join_level.rs
- hooks/entity_leave_level.rs
- hooks/entity_interact.rs
- hooks/living_damage_pre.rs
- hooks/living_death.rs
26.1 docs (opens in a new tab) · 26.3 unverified
Entity rendering registration
Mob rendering callbacks are present. Custom non-mob renderers are tracked separately.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Registries
1 covered · 1 partial
Typed registration and registry lookups
Typed registry keys and game-owned registrars cover supported content families.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
General-purpose extension registries
Existing registration is split into content and Parts. The extension design includes registries for mods to extend the API itself.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Datapack registries
2 partial
Mod-owned datapack registry declarations and typed reads
The design is in main. Registration, candidate storage, world wiring and Host reads are tracked as separate slices. Check their merge states below.
#2549 is now merged. #2751 is now merged. #2756 is now merged.
Sources and counterpart
Client snapshot negotiation and reload publication
The design covers generation-scoped reads, optional or required client sync and publication. Snapshot and join tests are in review. Play-traffic gating, required-registry reconfiguration and wasm client projection remain open.
Sources and counterpart
Events
1 covered · 1 partial
Side-aware lifecycle and gameplay subscriptions
The catalog defines side and contract for typed callbacks. Its index includes named counterpart metadata where declared.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Listener priorities and event-bus result semantics
Listen, cancel, collect and replace are explicit hook contracts. Per-event priority parity is unverified.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Networking
1 partial · 1 missing
Typed payload registration, dispatch and send
Main exposes named channels and raw bytes. Typed registration, codec negotiation and owned dispatch remain tracked work.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Mod-defined configuration-phase tasks
Raw channel payloads are available. The join-time task registrar depends on the typed payload work.
Capabilities
2 covered
Item, fluid and energy access
Parts and transactional providers expose storage and automation through typed handles.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Custom capability providers
The book documents custom providers and limits on capability answers.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Data attachments
1 covered · 2 partial
Typed holder storage, persistence and client sync
Immutable Host queries can read synced client attachments. A direct per-holder lookup and worker disk callbacks remain separate gaps.
#2740 is now closed.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Player copy on death
The runtime attachment policy includes copy on player death.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Game-session attachments
Horizon has holder-scoped attachment storage. A matching game-session lifetime and synchronization contract was not established.
Sources and counterpart
Data maps
2 partial
Reloadable registry annotations
Item and block maps load and reload. Public typed value reads are tracked separately.
#2722 is now closed.
Advanced mergers, removers and client projection
The audited load path handles pack merge and remove. General mod-defined merge callbacks and network projections were not established.
#2722 is now closed.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Loot
1 covered · 1 partial · 1 missing
Loot tables, conditions and functions
Loot tables and typed mod condition and function callbacks have public seams.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Global loot modifiers
The Horizon data audit found no reader or application path for the modifier list. Code-level drop hooks cover a separate path. The maintainer identified a shared top-level roll seam as a design prerequisite.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Typed loot evaluation context
The current context view and drop hooks cover narrower reads. A broader typed evaluation context is under design.
Sources and counterpart
Worldgen
1 covered · 2 missing
Custom worldgen features and placement modifiers
The Horizon design is merged. PR #2799 adds bytecode evidence and random oracle tests. It does not implement feature or placer callbacks. Ola’s claim predates the maintainer’s availability announcement.
#2799 is now merged.
Sources and counterpart
26.3 primer (opens in a new tab) · exact API contract unverified
Custom structure types and placement
Typed structure generation, pieces and placement are present. Structure modifiers are a separate row.
Sources and counterpart
26.3 primer (opens in a new tab) · exact API contract unverified
Custom carver types
Biome-list editing is separate from defining a new carver type. No typed carver-type registrar was found in the reviewed API surface.
Sources and counterpart
26.3 primer (opens in a new tab) · exact API contract unverified
Rendering
1 covered · 1 partial
Model geometry, tint sources and render-stage callbacks
The native surface exposes geometry submission, tint hooks and level render stages.
Custom render pipelines and passes
Model and geometry seams exist. Pipeline and frame-pass registration remain tracked.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
GUI
1 covered · 1 partial
Screens, widgets, menu slots and HUD layers
Typed widgets, menu Parts, input hooks and GUI layers cover native UI contributions.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Configuration screens and custom controls
Native settings and GUI building blocks exist. Game-rendered typed settings controls are tracked.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Resources
1 covered · 1 partial
Resource packs, pack finders and reload listeners
The catalog exposes pack discovery and distinct client and server reload listener hooks.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Conditional pack data
The data audit lists supported condition kinds and paths. Other condition kinds are omitted by the loader.
Data generation
1 missing
Provider-based generation for models, recipes, tags and other data
Horizon documents packaged data and content declarations. A public equivalent for the provider-run pipeline was not found in the reviewed book or registrar surface.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Commands
1 covered
Server/client registration and typed arguments
The native API supports server and client command hooks and command argument registration.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Configuration
1 covered
Mod config files, settings and change events
Config files and setting hooks provide the core registration and update surface.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Sounds
1 covered · 1 partial
Pack-defined sounds and playback
The catalog exposes sound events and level playback seams.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Custom entity sound routing
Playback exists. Content-mod living types using their own sounds are a tracked gap.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Particles
1 covered
Particle types, providers and spawning
The particle registrar and provider hooks expose registration and effects.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Recipes
1 covered · 1 partial
Pack recipes, ingredient codecs and reload
Typed ingredient tests, recipe queries, reload and recipe-book registration are present.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Recipe viewer transfer validation
Recipes and menus are queryable. A dry run explaining missing input for a mod crafting grid is tracked.
Sources and counterpart
Advancements
1 partial
Pack advancements, progress and criteria
The surface includes typed criterion tests and progress observation. Player recipe/advancement views and crafted triggers remain tracked.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Dimensions
1 covered · 1 partial · 1 not applicable
Custom dimension declarations and generators
Dimension Parts can declare a dimension and use the chunk-generator interface.
Sources and counterpart
26.3 primer (opens in a new tab) · exact API contract unverified
Explicit multi-noise points in a mod's dimension
Dimension sources are present. Explicit climate-point declarations and selection coverage are tracked in the scope 1 PRs.
#2730 is now merged. #2749 is now merged.
Sources and counterpart
26.3 primer (opens in a new tab) · exact API contract unverified
Weighted region injection in existing vanilla dimensions
The Horizon issue identifies this as a TerraBlender comparison outside NeoForge core. Horizon’s own scope 2 design is still in review.
#2731 is now merged.
Sources and counterpart
26.3 primer (opens in a new tab) · exact API contract unverified
Biome modifiers
1 covered · 2 partial
JSON feature, spawn and spawn-cost edits
Horizon already applies additions and removals in order through the content-pack path.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Code registration, carvers and late modification
The JSON route is merged. The native declaration and added operations are on stacked PRs. The changelog mentions a registry-access argument and removal of the no-op modifier; exact setter signatures are unverified.
#2744 is now merged. #2745 is now merged. #2788 is now merged. #2800 is now merged.
Per-biome visuals, audio and replacement sync
Pack effects and base biome sync already exist. Code declarations, effect edits and replacement acceptance are in review. The renderer has a pack-biome path. PR #2843 uses the active table for particles and adds fixture coverage for local loading, pack replacement and registry sync.
Sources and counterpart
Structure modifiers
1 partial
Data-driven changes to existing structures
Main reads add, remove and clear spawn overrides. Other JSON types are skipped, and the public 26.3 contract could not be checked. PR #2140 merged and closed #1269.
Sources and counterpart
26.3 Javadoc (opens in a new tab) · unavailable, contract unverified
Fluids
1 covered · 1 partial
Fluid type, world flow and storage
Native fluid declarations, flow callbacks and fluid storage access are exposed.
Sources and counterpart
26.3 Javadoc (opens in a new tab) · unavailable, contract unverified
Cauldron content for mod fluids
Fluid declaration and ticks exist. Mod-defined cauldron behavior has separate tracked work.
Sources and counterpart
26.3 Javadoc (opens in a new tab) · unavailable, contract unverified
Saved data
1 partial
Persistent level data
The attachment guide documents level-scoped persistence. A separate counterpart for keyed SavedData is unverified.
Sources and counterpart
26.1 docs (opens in a new tab) · 26.3 unverified
Java integration
1 not applicable
JVM access transformers and coremod field redirects
Horizon native mods use Rust interfaces and named injection points. JVM class transformations are specific to the Java loader.
Sources and counterpart
Mod tooling and runtime
2 covered · 2 partial
Injection points and internal access
Named injection points are documented. Internal access has separate target admission rules and should be checked for the point and target in use.
Native and wasm targets, Wire and admission
The dependency model is shared. A native callback alone does not establish support across the wasm boundary.
Launcher builds, packages and dependencies
The native mod guide and manifest describe build and installation routes, packages and dependency declarations.
Diagnostics and profiling
The native entry point documents diagnostics. The vocabulary exposes mod profiler controls.
Sources and counterpart
Horizon API surface
Input and effects
2 covered · 1 partial
Key mappings and binding reads
Mods can register key mappings and read client input and bindings.
Sources and counterpart
Horizon API surface
Status effects and attribute definitions
The Parts registrars expose custom definitions. Living handles provide runtime reads and writes.
Enchantment behavior and data-defined contracts
Enchanting and enchanted loot have hooks. The complete data-defined enchantment contract was not audited.
Sources and counterpart
Horizon API surface
World and player services
6 covered · 3 partial
Typed game rules
Game-rule declarations, world reads and change hooks have dedicated seams.
Sources and counterpart
Horizon API surface
Player statistics
Player Host methods read and award statistics, and a dedicated hook intercepts awards.
World borders
Level Host methods read and change border geometry, damage and warnings.
Chunk tickets and ownership
Mods can register ticket controllers and manage forced chunks. Saved ticket validation has a dedicated hook.
Fake players and simulated actions
The player Host exposes fake-player creation and actions through typed handles.
Permissions and authority
Vanilla permission levels and side-typed Host calls are available. A general provider or permission-node interface is unverified.
Indexed attachments and transactions
Indexed snapshots and transactions are documented. Broader holder coverage and query work remain tracked.
Sources and counterpart
Horizon API surface
Scheduling and task lifetime
Mod code can schedule and cancel server tasks through the Host. Join-time tasks have their own row.
Cross-dimension world and entity visibility
Public level and entity handles provide reads and writes. The broader visibility contract is still tracked.
Sources and counterpart
Horizon API surface
Evidence inventory
Read from main at 99379ade14fa (opens in a new tab) when a group is opened, with links to the exact lines.
Host methods · 937 symbols in 37 files
Loading…
Hook catalog and named counterparts · 656 symbols in 609 files
Loading…
Registrar traits and registration methods · 78 symbols in 27 files
Loading…
Horizon modding book · 166 pages
Loading…
NeoForge documentation topics and headings · 33 topics
Loading…
NeoForge 26.3.0.102 changelog index · 103 entries
Loading…
The older workspace RUST-API-STATUS.md is historical context. The sibling Horizon checkout’s docs/decompilation-status.md describes vanilla evidence coverage rather than native mod API coverage. NeoForge’s 26.1 guides are background for rows marked unverified. The 26.3 Javadoc returned HTTP 503. Source evidence is pinned to the stated Horizon revision. Public issue and board data reflect this sweep. Coverage is a source-level assessment.