A custom gauntlet makes something from another mod work as an Infinity Gauntlet, without that mod knowing about Infinity Stones. Each one is a file in 'data/[your mod or pack ID]/infinity/gauntlets' (in an addon pack or a mod); its ID is '[your mod or pack ID]:[file name]', so it can't replace another mod's file (the old 'data/infinity/gauntlets' folder still works, with just the file name as the ID). While the player wears it with at least one stone inserted, they get the infinity:infinity_gauntlet power, so stones are used and snapped exactly as with the real gauntlet. An Infinity Gauntlet in the off hand or Curios hands slot takes priority, then custom gauntlets in file name order. The Open Gauntlet key (G by default) opens the stone menu for the gauntlet in the main hand, otherwise the worn one, so gauntlets that are never held still work. The stones are stored like on the real gauntlet: on the item for item gauntlets (they stay with it), and on the player per gauntlet ID for power gauntlets (they come back when it's put on again). With a stone inserted, the render_layer and the stones are drawn on top of the other mod's own rendering, each stone as a small cube on one of the player model's bones, so it follows that arm's animation; positions are Blockbench (geo) coordinates of the player model, the same as in the gauntlet's own model files. Positions are per menu slot, as on the real gauntlet: whichever stone is in a slot, custom stones included, is drawn at that slot's position. A stone in a slot without one is still usable, just not drawn. An invalid file is skipped (logged as 'Custom gauntlet [id]: ...'). Restart the game after changes.
| Setting | Type | Description | Required | Fallback Value |
|---|---|---|---|---|
| name | Component | Title of the stone menu | false | Infinity Gauntlet |
| equipment | JsonObject | What counts as wearing it. Either {"power": [power ID]} for something that is a power while worn (e.g. a coupled Omnitrix), or {"item": [item ID], "slots": [slots]} for an item in any of those slots: mainhand, offhand, head, chest, legs, feet, curios:[slot] or trinkets:[group/slot] | true | / |
| slots | JsonArray | Where the stone in each menu slot is drawn, whichever stone it is: placements in menu slot order (the Infinity Gauntlet menu's six slots are space, mind, reality, power, time, soul), or null to leave a slot undrawn | false | [] |
| gui | JsonObject | The stone menu's look and slots (see GUI below). Left out, it is the Infinity Gauntlet's own menu, with its six stone slots | false | the Infinity Gauntlet's menu |
| slim_offset | JsonArray | [x, y, z] added to every placement's origin for players with slim arms (usually [-1, 0, 0] for stones on the outer side of the left arm) | false | [0, 0, 0] |
| render_layer | ResourceLocation | Palladium render layer drawn under the stones while at least one is inserted, e.g. a glove that turns the other mod's object into a gauntlet | false | none |
| render_conditions | JsonArray | Palladium conditions that must all pass for the render_layer and stones to be drawn, e.g. only during an animation that shows the gauntlet; checked on the client | false | [] |
| first_person_tilt | Boolean | Draws the arm wearing it tilted in first person, like the Infinity Gauntlet's, while it is worn and render_conditions pass: the hand holding the item, otherwise (worn in another slot, or a power) the arm its stones are placed on, while that hand is empty | false | false |
| scale | Float | Size of every stone cube on it, each about its own center, on top of the placements' sizes and the stones' own scale (the render_layer is not scaled). Either a number, or {"base": 1, "width": 1, "height": 1} to stretch them (width is x and z, each multiplied by base); 0 counts as 1 | false | 1 |
| powers | JsonArray | Extra power IDs given while it is worn, with or without stones | false | [] |
| tooltip_items | JsonArray | For a power gauntlet: item IDs or #tags whose tooltip lists the stones inside it (the viewing player's own); item gauntlets always show the stones in the item | false | items with the same name as the power |
{"name":"Prototype Omnitrix","equipment":{"item":"examplemod:power_glove","slots":["curios:hands","offhand"]},"slots":[{"origin":[7.65,11.75,-1.15]},null],"gui":{"texture":"examplemod:textures/gui/power_glove.png","size":[176,166],"inventory":[8,84],"title":[8,6],"slots":[{"pos":[44,35]},{"pos":[116,35],"accepts":"any"}]},"slim_offset":[-1,0,0],"render_layer":"examplemod:power_glove_stones","first_person_tilt":true,"scale":0.8,"powers":["examplemod:glove_stone_powers"],"tooltip_items":["#examplemod:power_gloves"]}
The stone menu. The server sends it with the menu, so the client always matches. Invalid values are logged and fall back to the Infinity Gauntlet's. If a gauntlet's menu gets fewer slots, what was stored in the removed slots is given back to the player the next time it is opened, never deleted; items a slot no longer accepts stay in it and can still be taken out.
| Setting | Type | Description | Required | Fallback Value |
|---|---|---|---|---|
| texture | ResourceLocation | Background image, drawn from its top left corner | false | infinity:textures/gui/infinity_gauntlet.png |
| size | JsonArray | [width, height] of the menu (the part of the texture drawn), up to 1024 | false | [256, 256] |
| texture_size | JsonArray | [width, height] of the texture file | false | size, at least [256, 256] |
| inventory | JsonArray | [x, y] of the player inventory's top left slot; the hotbar is 58 pixels below | false | [48, 153] |
| title | JsonArray | [x, y] where the gauntlet's name is written; left out, it isn't | false | none |
| slots | JsonArray | The gauntlet's slots, 1 to 27, in order: each {"pos": [x, y], "accepts": ..., "max_stack": ...}. 'pos' is the slot's top left corner (16x16, its item drawn there). 'accepts' is "stones" (any Infinity Stone, custom ones included; the default), "any", or a list of item IDs and #tags. 'max_stack' (1 to 64, default 1) doesn't apply to stone slots. A stone can only be in one slot at a time, whatever the slots accept. The slot's index is also its placement's index | false | the Infinity Gauntlet's six stone slots |
One stone's cube. The stone texture and glint are the stone's own, as on the real gauntlet.
| Setting | Type | Description | Required | Fallback Value |
|---|---|---|---|---|
| origin | JsonArray | [x, y, z] corner of the cube, in Blockbench (geo) coordinates of the player model | true | / |
| slim_origin | JsonArray | [x, y, z] corner for players with slim arms, when it differs from origin + slim_offset (e.g. stones on the inner side of the arm don't move) | false | origin + slim_offset |
| size | JsonArray | [x, y, z] size of the cube in pixels | false | [1, 0.9, 0.9] |
| bone | String | Player model bone it moves with: head, body, right_arm, left_arm, right_leg or left_leg | false | left_arm |
| rotation | JsonArray | [x, y, z] rotation in degrees around the cube's center | false | [0, 0, 0] |
{"origin":[7.65,11.75,-1.15]}