promotional bannermobile promotional banner

FreshCIT

Custom Item Textures from Optifine built from ground up to lower memory overhead

Custom Item Textures for Forge 1.20.1. Lightweight, fast, and highly compatible. This is a from-scratch rewrite rather than yet another fork--as such it's lighter & more optimal in it's memory rather.

FreshCIT loads OptiFine/MCPatcher CIT resource packs without OptiFine. Any number of items can receive their own textures & change with their name or NBT. Should work out of the box with any CIT pack following the traditional Optifine form.

Why FreshCIT vs other forks?

   
Compact ~75 KB without libraries bundled with it.
Faster Each item is checked at most once per game tick, and items no CIT can match are skipped right away.
No memory leaks Refreshing w/ F3+T doesn't leave old models behind. Only the textures the item CITs actually use are added to the texture atlas.
Compatibility Only uses non-exclusive hooks, so it doesn't fight other mods over the same code. Supports ModernFix dynamic resources, and is tested against 400+ mods alongside Embeddium-based renderers, ImmediatelyFast, Oculus and cosmetic armor mods.

Config available at config/freshcit-client.toml

If you are a CIT resource-pack author, you can develop near-identically to original CIT--just make note that if you have a key that FreshCIT doesn't define, it will never be applied nor logged. cit.properties can support useGlint, cap, method, fade and root_fallback.

Noting FreshCIT is client-side only (can be installed on server-side, but won't do anything).

Below are a number of basic benchmarks on a small sample size--mostly just outlining how close parity is to vanilla in many cases.

Per-call costs (median of 10 launches)

Metric Vanilla CIT Reforged FreshCIT FreshCIT vs Reforged
Creating an item stack 46.8 ns / 264 B 67.0 ns / 472 B 44.7 ns / 264 B 1.50× faster, −44% memory
Copying an item stack 131.0 ns / 552 B 154.0 ns / 760 B 125.5 ns / 552 B 1.23× faster, −27% memory
Model lookup, CIT matches 11.3 ns / 16 B 256.4 ns / 592 B 20.2 ns / 16 B 12.7× faster, 37× less memory
Model lookup, item has CITs but none match 11.2 ns / 16 B 34.3 ns / 104 B 19.3 ns / 16 B 1.78× faster, 6.5× less memory
Model lookup, item with no CITs 11.1 ns / 16 B 30.6 ns / 104 B 21.2 ns / 16 B 1.44× faster, 6.5× less memory
Fresh stack + lookup, CIT matches 457 ns / 1528 B 1153 ns / 2576 B 618 ns / 1576 B 1.87× faster, −1000 B
Fresh stack + lookup, no match 143 ns / 568 B 321 ns / 1144 B 192 ns / 616 B 1.67× faster, −528 B

"Fresh stack" rows include copying the stack, as when a server re-sends inventory contents. Just wanted to make that distinction

Time to draw a 36-item inventory screen

Grid Vanilla CIT Reforged FreshCIT FreshCIT vs Reforged
Plain items (no CITs) 310.7 µs / 209 KB 329.7 µs / 215 KB 310.3 µs / 212 KB 6% faster, matches vanilla
Enchanted items, 2 custom glint layers + vanilla glint 971.8 µs* 1728.9 µs / 574 KB 1689.9 µs / 543 KB 2% faster, −5% memory

*Vanilla draws only its own single glint, so it does less work on that row.

FreshCIT Team

profile avatar
  • 1
    Followers
  • 7
    Projects
  • 1.8K
    Downloads
Donate

More from SolarBiscuit

  • Solix project image

    Solix

    Starlight + ScalableLux fork with upstream fixes and several other performance optimizations.

    • 1.5K
    • November 5, 2026
  • RatNetworking project image

    RatNetworking

    Mixed fork of Krypton, VMP, and PacketFixer for 1.20.1 w/ a myriad of fixes & some new behavior to optimize network behavior both client-side and server-side.

    • 106
    • October 31, 2026
  • Solix project image

    Solix

    Starlight + ScalableLux fork with upstream fixes and several other performance optimizations.

    • 1.5K
    • November 5, 2026
  • RatNetworking project image

    RatNetworking

    Mixed fork of Krypton, VMP, and PacketFixer for 1.20.1 w/ a myriad of fixes & some new behavior to optimize network behavior both client-side and server-side.

    • 106
    • October 31, 2026