Repository navigation
Entity Texture Features
Minecraft 1.20.1 / Forge: this page documents that build and its measurements. For the separate 170-control Minecraft 1.21.1 port, see Minecraft 1.21.1 NeoForge.
One control for Entity Texture Features 7.1 (mod id entity_texture_features, LGPL-3.0), client-side: each sprite's texture id is worked out once. The switch replaces one of ETF's own hooks with an equal one that remembers the id; another ETF build keeps its own hook. The switch checks the code it would change against the tested build; another build is left untouched with one WARN line (see How the patches are applied).
| Key | Target | Side | Since | Kind |
|---|---|---|---|---|
etf_sprite_texture_id_memo |
Entity Texture Features 7.1 | CLIENT | 1.0.21 | opt |
Since: 1.0.21 · Mixins: SpriteTextureVariantMixin, SpriteCoordinateExpanderAccessor · Helper: bons.furious.patch.etf.SpriteTextureIds
Patched: net.minecraft.client.resources.model.Material.buffer, where ETF's MixinSpriteIdentifier injects
What upstream did. ETF hooks Material.buffer, which chests, signs, beds, banners, shields, bells and decorated pots use every frame, to swap in texture variants. On every call the hook derived the sprite's texture id from the sprite name: a string build and a newly validated ResourceLocation.
What the patch does. While the switch applies, MixinSquared cancels ETF's MixinSpriteIdentifier and an identical handler (ETF's code statement for statement, LGPL-3.0, notice retained) takes its place at the same injection point, with the texture id taken from a memo keyed by the sprite name. A name that already ends in .png is still returned as itself; an id that fails validation is never remembered, so it fails the same way every time. The variant lookup and render-type swap that follow are ETF's own code, unchanged. On another ETF build the switch is skipped and ETF's own mixin stays in place.
What stays the same. The ids (equal, same hash, same string) and everything ETF does with them. In the 1.0.21 client run the memo was checked against ETF's own derivation for all 54,657 sprites of the chest, sign, banner, shield, bed, pot, shulker and block atlases, and Material carried only the replacement handler.
Measured. 134 → 7 ns per call on the real classes (−95 %). The hook was 0.43 % of the render thread in a storage-heavy client profile, 0.27 % of it constructing ids.
Bons and Furious is licensed GPL-3.0-only with upstream notices retained. Target mod names identify compatibility targets and do not imply endorsement; their code, assets and licenses remain their authors' property. All measurements on this wiki are focused method, phase or reproduction measurements from the pack the mod was built for, taken on the historical build named in each entry; they are not whole-game FPS or TPS promises and are not additive.
Bons and Furious
Minecraft 1.20.1 / Forge 1.0.34
- Home
- Installation and configuration
- How the patches are applied
- All controls
- Measurements and caveats
- Whole-modpack benchmark
- Troubleshooting and log messages
- Generation context fixes
- Version history
Compatibility
- Compatibility
- Known conflicts and workarounds
- Tested mod list
- Redundant mods
- Compatibility and target versions
Controls by mod
- Minecraft (51)
- Forge (6)
- Ad Astra (1)
- Alex's Caves (4)
- Alex's Mobs (2)
- Almost Unified (1)
- AmbientSounds (3)
- Architectury API (1)
- Ars Nouveau (2)
- Artifacts (1)
- Better Combat (1)
- Bosses of Mass Destruction (1)
- Butterflies (1)
- ChunkSending (1)
- CIT Reforged (1)
- Citadel (1)
- CoFH Core (1)
- Colorwheel (1)
- Cooking for Blockheads (1)
- Create (4)
- Critters and Companions (1)
- Cryptic Foes (2)
- Cucumber (1)
- Curios API (6)
- Distant Horizons (17)
- Dungeons Delight (1)
- Dynamic Trees (2)
- Embeddium (13)
- Entity Model Features (4)
- Entity Texture Features (1)
- EntityCulling (1)
- FancyMenu (1)
- Farmer's Delight (2)
- FD Bosses (2)
- Fowl Play (2)
- Fusion (2)
- GeckoLib (5)
- Goblins Tyranny (2)
- Hostile Villages (2)
- Ice and Fire (6)
- ImmediatelyFast (3)
- Immersive Engineering (1)
- Jaden's Nether Expansion (1)
- JEI (7)
- Kiwi (1)
- L2 Library (2)
- Legendary Monsters (1)
- Lionfish API (2)
- ModernFix (4)
- Mowzie's Mobs (1)
- Mutant Monsters (1)
- Nether Depths Upgrade (1)
- Occult (1)
- Oculus (12)
- Oh The Biomes We've Gone (1)
- Particular (1)
- Pehkui (1)
- Pipez (2)
- Placebo (1)
- Presence Footsteps (1)
- Radium Re-Reforged (8)
- Regions Unexplored (1)
- Relics (2)
- Ribbits (1)
- Ryoamic Lights (2)
- Sake's Structures (1)
- Scorched (1)
- Scuba Gear (1)
- Simply Swords (1)
- SlashBlade: Resharped (1)
- Slice & Dice (1)
- Spawn (4)
- Storage Drawers (2)
- Structure Gel API (1)
- Structurify (3)
- TaCZ (2)
- TerraBlender (2)
- Terramity (1)
- Under the Moon (1)
- Valkyrien Skies (15)
- Trackwork model repair
- Living Engineering (moved out in 1.0.20)
Links