RetroAPI 0.3.1 для Minecraft b1.7.3 (Ornithe)
Это не последняя версия. Последняя для b1.7.3 · Ornithe — 0.4.1Открыть 0.4.1 →
Тестовая версия — возможны ошибки.
Файлы · 1
Что изменилось
Crash fixes, and a suite that catches them.
0.3.0 shipped two crashes that nothing in the build could see. Update if you are on 0.3.0.
- Fixed: the client crashed on launch.
WorldRendererParticleMixinshadowed a field namedminecraft; the field inWorldRendererisclient. A@Shadowis not checked at compile time — it is checked the moment the game loads the target class, andWorldRendereris built duringMinecraft.init(), so every client died at startup withInvalidMixinException: @Shadow field minecraft was not located. - Fixed: tags that reference other tags crashed with a
StackOverflowError. Resolving a#namespace:tagentry called the publicblocksIn/itemsIn, which re-enter the tag cache — and the cache is not populated until resolution finishes, so resolution restarted from the top and recursed until the stack died. Any pack whose tag files reference each other hit it. The resolver now reads code-registered membership straight from its own map. - Changed: contextual tool tiers receive the player —
.tier((stack, block, player) -> ...), where the old form took(stack, block). The documentation always advertised "a tool that is weaker in the nether", but the lambda had no way to reach a world, so it could not actually be written. The player carries one, and both harvest hooks already had it. It isnullonly when a tier is asked for outside a harvest;RetroToolTier.of(stack, block)still exists and passesnull. - New launch smoke suite:
./gradlew smokeTest(clientSmokeTest,serverSmokeTest, and both again under-Pstationapi). Each one boots the game, reads RetroAPI's mixin configs, and force-loads every class RetroAPI mixes into withinitialize = false— so every mixin is applied and every injector runs, in one pass, in seconds. Mixin only validates a mixin when the game happens to load its target, which is exactly why a broken@Shadowon a render class can ship: nothing in a build, and nothing in a data-level test, ever loads it. The client run also asserts the particle registry resolves and that the world-renderer hook is present in the class. The server half runs in CI; the client half needs a display. - The test mod now registers a particle and ships tag files that reference other tags, so both crashes are covered by a test that would have caught them.
Full feature set: https://matthewperiut.github.io/retroapi/features-0.3.0.html
Built and validated with -Pstationapi on Ornithe (b1.7.3): all four smoke suites pass (client 56/65 and server 45/45 mixin targets applied, 60/69 and 47/47 with StationAPI), plus the headless populate self-check and the vanilla↔StationAPI conversion round-trip.