Repository navigation
Releases: Team-Arcadia/arcadia-patchcreate
Release list
Arcadia Patch Create 1.4.3
Performance release targeting the hotspots measured on the production servers, plus a fix that made adaptive throttling inoperative.
Requires Create 6.0.10. Every patch is validated against an exact bytecode fingerprint and disables itself on any other build.
Performance
CreateHeatJS metadata cache — the addon rebuilt a recipe context on every basin heat check, and each context walked the entire recipe list to recover one identifier. This ran even with no custom heat provider configured.
Measured on server 1: 1.907 ms/tick → 0.002 ms/tick. Basin recipe handling dropped by 99%, mixers by 98%, presses by 89%. Only immutable recipe identifiers are cached; a fresh context is still built for every check, so predicates and custom heat levels are unaffected.
Mechanical Arm simulation reuse — while searching for an item, an arm probes every slot of every input and simulates insertion against every output for each one. Identical stacks ran the identical simulation repeatedly. Results are now memoized for the duration of a single search pass. simulateInsertion mutates nothing, so this is strictly equivalent.
Item Drain lookup reuse — Create resolved the same emptying recipe twice per processing call. The first positive result is reused for the simulation that immediately follows. Measured: 0.227 → 0.135 ms/tick.
Fluid pipes — the idle fast-path no longer inspects Create state reflectively, which cost up to 0.272 ms/tick on its own. The connection map moved from an IdentityHashMap to an EnumMap: at most six entries, iterated four times per pipe per tick, and profiling attributed 0.218 ms/tick to that iterator alone.
Belt fast-path anchor — moved after Create's own housekeeping. Injected at HEAD it could leave a stale lazyClientItem behind or miss the synchronization of an inversion on an empty belt.
Fixes
Adaptive throttling never engaged. The MSPT accessor was looked up under a single hardcoded name taken from the compile classpath, but the deployed server is remapped to official names. The lookup failed silently and the reading was always zero, so the 35 / 45 / 55 ms steps were never crossed — a server measured at 33.7 ms average and 42 ms at the 95th percentile stayed on interval 1.
Chute throttle removed. It cancelled the input probe before re-reading the capability, delaying a valid transfer by one to four ticks, and never targeted the real hotspot. Removing it costs nothing: chute tick time is unchanged at 0.86 ms/tick.
Administration
The panel moved to a six-row layout with modules grouped by family, and gained a health banner: current MSPT against the 50 ms budget, throttle mode and interval, and how many modules are effective versus how many had their target rejected. A patch disabled by a fingerprint mismatch was previously invisible without running a debug dump.
Each module now reports configured, available and effective as three distinct states, across the panel, the commands and the debug dump.
New: /arcadiapatchcreate arm status|enabled <bool>.
Still server-side only — vanilla menu type, no custom screen or packet, works the same in single player.
Notes
Measurements come from two 120-second Spark profiles taken four days apart on the same production server under comparable load. Observable was running during both captures, which inflates absolute values equally on each side; the comparisons hold.
Create's own block entity tick time dropped by 1.405 ms/tick overall. Note that on the observed server this gain was offset by unrelated content growth over the same period.
Build verification: ./gradlew.bat clean build, plus a dedicated server startup with and without CreateHeatJS installed.
Arcadia Patch Create 1.4.2
Conservative Create crash guards.\n\n- Guard invalid continuous OBB collision manifolds where Create can expose a null axis during contraption collision.\n- Reject unreadable or corrupted contraption NBT before Create dereferences invalid state.\n- Discard invalid contraption entities during load instead of crashing the server tick.\n\nBuild verification: ./gradlew.bat clean build.
v1.4.1
Arcadia Patch Create 1.4.1
Correctifs
- Panel admin — Les clics sur les catégories naviguent maintenant correctement vers les sous-pages (fix sync
server.execute) - Panel admin — Les messages de navigation affichaient toujours "Panel refreshed" au lieu du nom de la page ouverte
- Panel admin — Le clic droit sur le bouton délai drops dupliquait le toggle on/off du bouton principal, comportement clarifié
Nettoyage
PatchRuntime: suppression de la réflexion surgetAverageTickTime(), appel direct àserver.getAverageTickTime()PatchRuntime: 6 aliases factory gauge obsolètes supprimés, champs réorganisésisAdaptiveThrottleActive()renommé enisThrottleActive()(le nom était trompeur : retournaittruepour STATIC aussi)
Patches validés
| Patch | Cible | Effet |
|---|---|---|
| Belt | BeltInventory.tick() |
Skip si belt complètement vide |
| Fluid | FluidTransportBehaviour.tick() |
Fast-path idle si aucune pression/flow |
| Factory Gauge | FactoryPanelBehaviour.tickStorageMonitor() |
Throttle adaptatif si état stable |
| Chute | ChuteBlockEntity.handleInputFromAbove/Below() |
Throttle adaptatif si idle |
| Create Drops | ItemEntity |
Despawn anticipé des items Create |
Dépendances
- Minecraft 1.21.1
- NeoForge 21.1.221+
- Create 6.0.9+
- Côté serveur uniquement