Links
Tags
Creators
Details
0.3.0
Compatibility
Required content
Changes
The retroapi entrypoint, particles, and world features.
- New
retroapi/retroapi-client/retroapi-serverentrypoints (RetroModInitializer.initRetro()). RetroAPI invokes them at the one point where registration is safe: registries/tags/lang ready, vanilla'sBlock/Item/Statsstatic-init cycle entered from the safe side, before RetroAPI's own registration events, before recipes are sorted, and before any world assigns ids. The loader'sinitstage has no defined order, so a consuming mod could register into a platform that was not built yet. They also fire identically with and without StationAPI, which the registration events do not.initkeeps working. - Fixed: recipes that silently stopped working. An
ItemStackstores a numeric id, and mods build them at init, when ids are still provisional; the real ids arrive from a world'sid_map.dator a server's sync. Stale stacks left recipes in the list with the right count and no matches, which is why relaunching sometimes "fixed" it. Id changes are now collected into anIdRemapthat repairs crafting/smelting recipes, fuels and achievement icons, firesIdRemapCallbackfor mod-held stacks, and re-sorts the crafting list. - Fixed: modded tools could not break modded blocks (and vanilla tools could not break modded stone). Beta answers tool effectiveness from hardcoded block lists inside each vanilla tool. Blocks with no
mineabletag now infer one from their material, andItem.isSuitableForis answered from tags + tier, so drops, breaking speed and the correct-tool check agree. Leaves are mineable by shears/sword/hoe as a result. - Fixed: interface injection never applied on Ornithe. The
loom:injected_interfaceskeys were babric-era intermediary names; the gen2 build matched nothing, so consumers had to cast. Both namespaces are declared now. - Fixed:
.states(...)after.facing()dropped the facing property; blocks with more than 16 states truncated to the metadata nibble when broken and replaced;Block.setUnbreakable()was unreachable (now.unbreakable()). - Particles:
RetroParticleRegistry+RetroParticles+RetroSpriteParticle, and a server→client bridge (vanilla's server-sideaddParticleis an empty method, so server-spawned particles reached nobody). - World features:
RetroFeatures.ore/cluster/customwith count, height range, rarity, dimension filter, and for ores size/meta/replace. Hooked on the chunk cache, so vanilla dimensions, modded dimensions and custom generators are all covered; deterministic per seed. - Blocks: per-face textures in code (
.sided,.column,.textures),.facingAll()six-way facing,.tint(...)per-position color with no model,.overlay(...)extra render passes,.tag(...),.needsTool(...), andRetroCharProperty. - Tools: built from parameters instead of a (non-extensible)
ToolMaterial..miningSpeed,.attackDamage,.durability,.damageOnMineplus a block-awareRetroToolTier.Contextual. - Positions & multiblocks:
RetroVec3i,RetroDirection,RetroMultiblock(ASCII patterns, any rotation), andBlockEntityLoadedCallback, which fires once NBT is read and the world exists. - Custom renderers:
BlockRenderContextgainedspriteOverride,flipTexture,faceRotation,renderAllFaces,renderFaceUvandrenderFaceCorner, enough for connected textures without bounding-box tricks. - Logging: registration, id assignment, tag/lang/sound loading, atlas expansion and id sync moved to debug. A launch now prints one line.
Full feature set: https://matthewperiut.github.io/retroapi/features-0.3.0.html
Built and validated with -Pstationapi on Ornithe (b1.7.3). All features exercised by the headless populate self-check (14 [new-features] PASS, populate: PASS).
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:iFaqJ8QH:lX3qoNkM"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:iFaqJ8QH:lX3qoNkM"
}


