promotional bannermobile promotional banner

Ultimate Custom Gear

Ultimate Custom Gear lets server owners and modpack creators add fully custom content to Minecraft through simple JSON files. No coding required, hot-reloadable, and verified between server and clients automatically.
Back to Files

UltimateCustomGear-26.1.2-2.0.2-NeoForge.jar

File nameultimatecustomgear-26.1.2-2.0.2-NeoForge.jar
Uploaded
Sep 30, 2026
Downloads
6
Size
2.2 MB
Mod Loaders
NeoForge
File ID
9014776
Type
R
Release
Supported game versions
  • 26.1.2

Curse Maven Snippet

NeoForge

implementation "curse.maven:ultimate-custom-gear-1563239:9014776"

Learn more about Curse Maven

What's new

⚠️ Important Notes

The port to Minecraft 26.1.2. Packs written for 1.7.x load unchanged, references included: no field was added, removed or renamed. Every field this mod has ever read means the same thing it did in 1.7.x. If you have a pack, copy it across and it works.

  • Minecraft 26.1.2 only. This version does not run on 26.2 or 1.21.1, and neither of those runs on 26.1.2. They are separate branches, not an upgrade path in one jar
  • 3.0.1 is this same port, for Minecraft 26.2. The version number is what tells the jars apart: 1.x is 1.21.1, 2.x is 26.1.2, 3.x is 26.2
  • Java 25 is required, up from Java 21. Your launcher almost certainly handles this for you, but a server pinned to an old JDK will refuse to start
  • Every dependency moved with the game: GeckoLib 5.5.2, JEI 29.29.0.77, Curios 15.0.0. Older builds of those will not load
  • One thing is outside this mod's control: GeckoLib moved its models. What lived under geo/ in a 1.21.1 jar is under geckolib/models/ now, so a reference into another mod's assets needs that segment updated — "othermod:geckolib/models/armor/their.geo.json", or the short "othermod:armor/their". Both work. texture is unaffected and keeps its full path with .png
  • Double chests saved before this version may have their contents split across both halves. Opening one shows the same items, in different slots; nothing was lost
  • Texture changes still need F3+T to show, as always

✨ New Features

Chest and shulker textures accept the short form

A container texture can now be written the way the game addresses it:

"refs": { "single": "minecraft:normal" }

The long form you have been writing keeps working — minecraft:textures/entity/chest/normal.png and minecraft:entity/chest/normal are trimmed to the same thing — so nothing needs editing. The short form exists because that is what these textures actually are now: entries in an atlas, not loose files.

Armour layers accept the short form too

"armor_layers": { "layer_1": "othermod:diamond" }

The old othermod:models/armor/diamond_layer_1 still resolves to the same asset. Both forms are read; the shorter one matches how equipment is named in this version.

🐛 Bug Fixes

Containers

  • Breaking one half of a double chest dropped the wrong half. Breaking the main half spilled the whole pair's contents and left the other half empty; breaking the other half dropped nothing and left the survivor holding both halves. The split that hands each half its own items ran after the game had already removed the inventory, so it never found anything to split
  • A container with keeps_contents spilled its contents instead of dropping itself, on every break and on explosions, pistons and /setblock. The drop now runs on every kind of removal, while the inventory still exists, exactly as it did in 1.7.x
  • Placing a copied chest next to another sometimes did not form a pair. A chest copied with Ctrl+pick remembered that it had already been merged with its old partner, so depending on the side it was placed on, the new pair skipped the merge: the window showed a single chest and the other half's items were unreachable until it was broken
  • A chest left alone after its partner was broken never paired again. It kept believing it was merged, so the next chest placed beside it hit the same problem as above
  • Copying the main half of a double chest with Ctrl+pick duplicated its contents. The item carried the inventory twice — once as the half this mod writes, once inside the block entity data vanilla attaches — and placing it put one copy inside and dropped the other on the floor
  • A double chest split its contents across both halves on every world load. The merge that forms a pair did not record that it had already run, so it ran again on an inventory that was already merged
  • An empty backpack could be placed inside another backpack. Nesting is refused for anything that carries an inventory, but the check only ever looked at block-backed containers, and a backpack is a plain item
  • The container screen had no text. Its title, the inventory label and the search box were drawn fully transparent: text colours are now read with their alpha channel, and these had none
  • The mod crashed on startup when no containers were defined. The block entity type was built from an empty list of blocks, which the game now rejects outright — so an instance with gear but no containers, the most ordinary setup there is, would not boot at all

Everything else

  • The game crashed on startup unless every piece of gear declared enchantability. The field is optional, so omitting it is the ordinary case: it arrived as 0, and both material types now reject a value that is not positive. A material's value only grades the offers — whether gear can be enchanted at all is still the enchantable flag
  • Custom blocks and containers showed their raw translation key instead of their name, and a placed container had no title. An item's key now comes from its own registry entry unless the properties say otherwise, and a BlockItem no longer inherits its block's
  • GeckoLib 3D armor did not render. GeckoLib 5 scans one fixed directory for models and serves them from a cache keyed by a stripped id, so files written anywhere else were never found. Both the location and the id are now what it expects
  • Chest and shulker texture references only resolved in their shortest form. "minecraft:entity/chest/christmas" drew the missing-texture checkerboard, because the trim to a sprite name keyed on a textures/ segment that this spelling does not have. Every form now trims to the same sprite
  • Fluid blocks generated no blockstate and no model. Every custom fluid logged a missing-model error on each load, and breaking or splashing one produced the black-and-magenta square instead of a particle. Vanilla writes its own water exactly the way this now does
  • Every bucket model was generated twice. Two loops ran over the fluid list, the second a copy of the first with a texture step added

🔧 Technical Changes

Almost all of this is invisible from a JSON file. It is listed because the mod is 80 files smaller and several subsystems no longer exist.

  • Items are no longer built by subclassing. ArmorItem, SwordItem, PickaxeItem and friends are gone from the game; an item is now a plain Item carrying data components. CustomTier produces a vanilla ToolMaterial instead of implementing a Tier interface
  • Armour points at an equipment asset. The renderer no longer builds the texture path from a prefix plus _layer_1. GearModelGenerator writes equipment/<id>.json naming one texture per body layer, and the two layers land in two folders rather than one
  • Item models split into two files. A model under models/item/ still holds geometry and textures, but which model an item renders is now decided in items/<id>.json. The new ItemDefinitions class writes those
  • The overrides array is gone, and with it the bug it invited: the crossbow's entries were matched last-wins, so charged had to sit after pulling and reordering the array broke the item silently. The replacement says it structurally — what the crossbow is loaded with is checked above how far it is drawn
  • Three renderers deleted. The shield, chest and shulker each had a BlockEntityWithoutLevelRenderer to draw a shape no model could hold. That class no longer exists; the shape is declared in the item definition as a minecraft:special entry naming vanilla's own renderer
  • The ItemProperties registrations are gone. ClientSetup used to walk every registered item on client start to attach bow, crossbow and shield predicates. Model switching is data now, so nothing runs
  • The chest mesh is no longer written by hand. Vanilla exposes ChestModel and its three model layers, with the geometry this mod was copying cube by cube
  • Block entity renderers extract state instead of drawing. ChestRenderer was rebuilt around that: it snapshots what it needs on the main thread and submits later, off it
  • Container removal moved to BlockEntity.preRemoveSideEffects, the hook that replaced Block.onRemove. affectNeighborsAfterRemoval runs after the block entity is gone, and playerWillDestroy only runs for players; this is the one place that sees every removal with the inventory still there
  • CustomContainerBlock.onBlockEntityRemoved — new: the drop logic, called from the block entity. CustomChestBlock overrides it to split a pair before anything drops
  • removeComponentsFromTag discards Contents and Joined, so a Ctrl+pick copy carries neither the full pair's inventory nor the old pair's merge state
  • FluidTextures.java — new in resources/: sprite and tint resolution, moved out of FluidRegistry. Three callers need it, and one of them runs before the game has bootstrapped, where touching a registry throws
  • ContainerRenderState.java — new in client/render/: what one container looks like this frame
  • ShulkerRenderer.java and CustomModelLayers.java — deleted; vanilla's ShulkerBoxRenderer and model layers replace both
  • NBT on block entities moved to ValueInput / ValueOutput, and saveToItem to collectImplicitComponents
  • The access transformer gained AbstractContainerScreen.imageWidth / imageHeight, which became final, and AbstractArrow.baseDamage, which lost its getter
  • GeckoLib is compileOnly + localRuntime instead of implementation, so it no longer appears as a runtime dependency in the published POM

⚙️ Known Limitations

Everything listed under 1.7.0 still applies. On top of it:

  • A shield still cannot have its own texture. It renders through vanilla's shield renderer, which reads the vanilla atlas
  • Parchment publishes no mappings for 26.x yet, so parameter names in a decompiled view are the obfuscated ones. This affects nobody writing JSON

📦 Dependencies

  • Minecraft 26.1.2 · NeoForge 26.1.2 · Java 25
  • JEI 29.29.0.77 — optional, recommended
  • GeckoLib 5.5.2 — optional, required only for 3D armor models
  • Curios 15.0.0 — optional, only needed for curios_slots

This mod has no additional files