Skip to content

v0.7.8

Choose a tag to compare

@Onyx-i7 Onyx-i7 released this 14 Jun 01:40
ac83eaf

Release v0.7.8 - Memory Leak Purge & Performance

Main Features

  • Massive Garbage Collector Leak Purge
    Critical performance bottlenecks on both client and server threads have been thoroughly eliminated. Iterative loops that handle real-time rendering, translation keys, and thirst/temperature attributes have been structurally detached from volatile array cloning allocations, resulting in a dramatic reduction in CPU overhead and fluid frame pacing.

  • Functional Lambda Translation for Item Properties
    Legacy, verbose anonymous inner classes used by Forge’s item property override registries have been completely modernized into efficient functional lambda streams. This prevents the runtime heap from being bloated by micro-instantiations during inventory ticks and visual item updates.

  • Deep Code Archeology & Legacy Removal
    Continuing the structural cleanup started in v0.7.7, ancient "fossilized" code remnants dating back 7 years to version v0.1.0 and obsolete layers from 4 years ago have been entirely eradicated. The codebase is now a lean, optimized, and fully modernized environment tailored for high-performance 1.12.2 technical modpacks.

  • Robust NBT & Boundary Fail-Safes
    Enhanced protection layers have been injected into item metadata and compound NBT handlers. The mod now gracefully handles corrupt itemstacks, extreme edge-case sub-types, or unexpected sub-zero metadata indexing without throwing null pointer exceptions or crashing server tickers.


Technical changes & Refactoring of sources

  • ItemCanteen.java & ItemDragonCanteen.java:

    • Resolved a severe client-side GC leak inside getTranslationKey by caching the immutable ThirstEnum.values() array into a local static reference (THIRST_VALUES), saving megabytes of redundant heap allocations per minute.
    • Re-engineered the "contain" ResourceLocation property getter override using an optimized lambda expression.
    • Secured type safety and cleared raw type compilation warnings by adding explicit diamond types (<ItemStack>) to the ActionResult instantiations.
  • ItemIronCanteen.java:

    • Modernized property overrides using functional lambda structures to compress bytecode and speed up rendering calls.
    • Fixed a potential heap leak by replacing repetitive enum evaluation loops with cached static value lookups.
  • ItemDrinkBase.java:

    • Fixed an optimization flaw inside onItemUseFinish where calling .getRegistryName().toString() repeatedly forced redundant string objects into memory; now safely assigned and evaluated via a local variable wrapper.
    • Optimized JSON configuration lookups by changing the jctList loop to utilize an explicit null/empty pre-check gate, completely skipping iterator allocations when no custom consumable thirst overrides are present.
  • ItemJuice.java:

    • Solved a critical real-time performance bottleneck by caching JuiceEnum.values() locally to JUICE_VALUES, cutting off constant array cloning across rendering, thirst level updates, and dirty saturation checks.
    • Hardened the getEnumForStack subroutine against out-of-bounds corruption by introducing a strict lower-bound array index validation gate (meta < 0).
  • ItemThermometer.java:

    • Replaced a highly inefficient map auditing system that previously generated massive autoboxing overhead during real-time client texture wobbling (wobble).
    • Implemented an advanced high-performance map clearing sequence using Java 8 lambda removeIf streams directly on the entrySet(), dropping the redundant tracking list entirely.
    • Purged old, experimental, and dead commented code sections to restore source sanitization under strict developer guidelines.

Download Guide

  • Correct file: SimpleDifficulty-1.12.2-0.7.8.jar
  • Developer files: Avoid files ending in -api.jar or -sources.jar.