Tuning editor and debug position
Adjust where an item sits in your hand with the in-game Hand Editor, save profiles, export a compat file for your pack, and test arm offsets with the debug position commands.
This page has not been translated into Norwegian Bokmål yet, so it is shown in English. Read in English
On this page
Punchy! has a tuning window inside the game. It lets you slide an item or an arm into the right place in first person and watch the result live, then save it as a profile or export it as a file for your resource pack. This page is for pack authors who want exact numbers without guessing them in a text editor, and for players who only want to nudge one item for themselves.
It also covers the three debug position commands, which move the first-person arms for a quick look.
Before you start
- Punchy! installed and switched on (the Enable Punchy switch under DONE in the left column of the Punchy menu). Getting started covers the install.
- A world to stand in, in first person, with the item you want to edit in a hand.
- For shipping your result: a resource pack folder you can edit. Compat files live in
assets/minecraft/punchy/compat/, see Compat rules.
Open the Hand Editor and move an item
- Join a world and hold the item you want to place, for example a diamond sword.
- Press F8 to open the Punchy menu. In Options, Controls, Key Binds the key is called Open Punchy Menu.
- Open the General tab, find the Tools section and click Open on the Hand Editor row. The Punchy Tuning Editor window opens over the game.
- Check the two lines at the top. The first row shows Scope: Specific, Hand: Main and Editor: Item. The line below shows the held item’s icon and its name, for example Diamond Sword. It reads No item when the hand is empty. That line is a label, not a button: the editor picks the item from your hand by itself.
- Press and hold the left mouse button on a slider, such as Offset X, and drag left or right. While you hold, every other control hides so you can see the item. Let go and the window comes back.
- Work through Offset X, Offset Y and Offset Z until the item is where you want it. Then use Rotation X, Rotation Y and Rotation Z, and Scale if the item is too big or too small.
- Scroll the mouse wheel over the sliders to reach Pivot X, Pivot Y and Pivot Z. Move the pivot when the item turns around the wrong point, then touch up the rotation.
- Click Mirror Hand to copy the pose to your other hand, flipped to fit it.
Video coming soon
Drag with the left mouse button to move a slider. A plain click does not jump the value. A slider moves relative to where you pressed, so the value never jumps. The sliders show three decimals. Only some of them fit in the window at once: scroll the wheel over the list, or drag its scroll bar with the left mouse button.
The editor does not pause the game. A dark, partly see-through veil covers the screen behind the window. At a high GUI scale, such as Auto on a 1920 by 1080 screen, the window fills most of the screen, and your hand shows while you hold a slider.
Move the arm
The Editor button cycles what the sliders change. Click it once to switch from Editor: Item to Editor: Arm.
- Click Editor: Item. It now reads Editor: Arm, and the Scope button comes alive.
- Click the scope button to choose. Scope: Specific changes the arm only for the item in your hand, or for your empty hand when you hold nothing (the line below then reads No item). Scope: Global changes the arm for every item.
- Drag the Offset and Rotation sliders as before. With Scope: Global they start at 0 and move the arm away from the default global pose. With Scope: Specific they show the arm’s numbers as they are now, which can already be above or below 0, for example for the empty hand. There are no pivot sliders, and with Scope: Global the rotation sliders are hidden too.
- Click Mirror Hand to copy the arm pose to the other arm.
Hand: Main and Hand: Off pick the hand. They follow your Main Hand setting in Minecraft, so for a left-handed player Main edits the left arm. If the selected hand is empty and the other holds an item, the editor switches hands for you.
Fishing rods
If you hold a fishing rod, one more click on the editor button gives Line. It appears only while a fishing rod is in the selected hand, and it adjusts where the cast line leaves a rod that has no tip for Punchy! to start the line from.
In first person the cast line starts at the tip of the rod in your hand on every Minecraft version, for a flat rod and for a 3D rod model alike, so the Line sliders do not move it there. They place the line for a rod drawn as model parts whose definition has no fishing_line_anchor. A rod drawn as model parts starts the line at the fishing_line_anchor of its definition, a bone name and a position inside that bone. The same definition can list bones to hide while the line is out in hide_bones_while_cast, for a line you drew into the model. Both keys are read on every version, from the definition that draws the rod in your hand.
{
"items": ["minecraft:fishing_rod"],
"geo": "mypack:punchy/model_parts_items/geo/fishing_rod.geo.json",
"texture": "mypack:punchy/model_parts_items/textures/fishing_rod",
"fishing_line_anchor": { "bone": "rod_tip", "position": [0, 9.5, 0.85] },
"hide_bones_while_cast": ["hanging_line"]
}
Save that as assets/mypack/punchy/model_parts_items/definitions/fishing_rod.json. The geometry and the texture are your own rod model, built as in Geometry and textures: save them as assets/mypack/punchy/model_parts_items/geo/fishing_rod.geo.json and assets/mypack/punchy/model_parts_items/textures/fishing_rod.png. Give the geometry a bone named rod_tip at the rod’s tip, with position in pixels inside that bone, and a bone named hanging_line for any line you drew into the model. See Definitions for every key.
Save a profile and export a file
Edits are live, but they last only while the editor is open unless you save them.
- Open the profile list. In a small window or at a high GUI scale, such as Auto on a 1920 by 1080 screen, click Profiles to switch to it; in a larger window the list is already in the column on the right. Type a name in the Profile Name box under the list and click Save Profile. Leave the box empty and Punchy names it for you, such as
diamond_sword_main_specific. The status line at the bottom of the window saysProfile saved: your_name, with the name as you typed it. The file itself has spaces and other odd characters turned into underscores, sowiki demois saved aswiki_demo.json. - To use the result in a pack, click Editor to go back if you switched to the profile list, then click Export Tuning Helper. Punchy writes
tuning_helper_dev.jsonand opens its folder,config/punchy/dev_tuning_helper, in your file browser. The status line saysTuning helper exported. - Open
tuning_helper_dev.jsonand check it. It holds only what you changed since Punchy last loaded its tuning. - Copy the file into your pack as
assets/minecraft/punchy/compat/my_tuning.json, or paste its entries into a compat file you already have. - Click Reset To Default so your profile does not cover the pack, click Done, close the Punchy menu, then press F3+T to reload resources and see the pack’s own numbers.
Video coming soon
Here is the core of an export after moving a diamond sword in the right hand. A real export can hold a few more keys, such as armKind, described below:
{
"itemSpecific": {
"minecraft:diamond_sword": {
"kind": "SWORD",
"transforms": {
"right": {
"scale": 1.0,
"offX": 0.06,
"offY": -0.12,
"offZ": 0.0,
"rotX": 0.0,
"rotY": 0.0,
"rotZ": 18.0,
"pivotX": 0.0,
"pivotY": 0.0,
"pivotZ": 0.0
}
}
}
}
}
This is an ordinary compat file, so it works as it is. The key under itemSpecific is the item id. kind sets the kind Punchy uses for that item at runtime, in capital letters such as SWORD, and it overrides the kind the item would have by itself. transforms places the item and armTransforms places the arm, each with a right and a left pose. A side you did not touch is usually left out. Moving the arm of a held item adds armTransforms next to transforms. There you can also set armKind, the kind used for the arm pose: Punchy reads it only when armTransforms is present, and without it the arm pose uses kind. Scope: Global in the Arm editor adds a globalArm entry instead. The other keys are in Compat rules.
What is on the window
The sliders
Each slider writes one number of a pose. The keys are the same ones you write by hand in a compat file.
| Key | Type | Default | What it does |
|---|---|---|---|
offX, offY, offZ | number | 0 | Offset X, Offset Y, Offset Z. Move the item or arm. Range -2 to 2. In the Arm editor with Scope: Global the slider is the distance from the default global arm pose; with Scope: Specific it shows the arm's own value. In the Arm editor with Scope: Global the file stores the final pose. With Scope: Specific and an item in the hand, the file stores the offsets and scale relative to the global arm pose (rotations as they are), and Punchy adds the global arm back when it loads them. With Scope: Specific and an empty hand, the file keeps the arm pose as it would be on the default global arm. |
rotX, rotY, rotZ | number | 0 | Rotation X, Rotation Y, Rotation Z. Turn the item or arm, in degrees. Range -180 to 180. Hidden in the Arm editor with Scope: Global. |
scale | number | 0 | Scale. Multiplies the size of the item or arm. Range 0.1 to 3, and the item slider starts at 1. In a file, a pose without scale counts as 0 and the item disappears, so keep scale in every pose you write. The export always includes it. |
pivotX, pivotY, pivotZ | number | 0 | Pivot X, Pivot Y, Pivot Z. Move the point an item turns around. Range -1 to 1. Item editor only. |
In the Line editor the ranges are wider: offsets -32 to 32, rotations -720 to 720 and scale 0.01 to 10. There are no pivot sliders there.
The buttons
| Button | What it does |
|---|---|
| Scope: Specific / Scope: Global | Chooses whether an edit applies to the held item only or to everything. In the Item editor it stays on Specific and cannot be clicked. In the Arm editor it switches. |
| Hand: Main / Hand: Off | Chooses the hand you are editing. |
| Editor: Item / Editor: Arm / Line | Chooses what the sliders change. Line shows up only while you hold a fishing rod. |
| The item line below the first row | Shows the item in the selected hand (icon and name, or No item). It cannot be clicked. |
| Reset To Default | Clears the active profile, deletes the saved config/ if it exists, and returns to the numbers your resource packs give. Your profile files stay in the profiles folder. Status line: Returned to default tuning. |
| Reset Current | Puts the sliders of the current target back to neutral: offsets, rotations and pivots at 0 and scale at 1 for an item; for an arm, offsets and rotations at 0 and scale at 1 with Scope: Specific, or the default global pose with Scope: Global. Use Reset To Default to get the pack’s numbers back. Status line: Current profile reset. |
| Mirror Hand | Copies the current pose, flipped, to the other hand. Status line: Mirrored to opposite hand. |
| Export Tuning Helper | Writes config/ and opens the folder. |
| Profile Name and the profile list | Pick a saved profile by clicking its row, or type a new name. The list scrolls with the mouse wheel. |
| Save Profile | Saves your changes to the named profile and makes it the active one. |
| Load Profile | Loads the selected profile and makes it the active one. |
| Delete Profile | Removes the selected profile file. On Minecraft 1.20.1 to 1.21.11 it first asks Delete profile? with Cancel and Delete. On 26.1 and newer it deletes at once. If the profile was the active one, it also clears the active profile and deletes config/ if it exists, like Reset To Default. Status line: Profile deleted: your_. |
| Open Profiles Folder | Opens config/ in your file browser. |
| Done | Closes the editor. On Minecraft 1.20.1 to 1.21.11 you are back in the Punchy menu, and on 26.1 and newer back in the game. Esc closes it too. |
| Profiles / Editor | Appears only in a small window or at a high GUI scale. The editor and the profile list share the window, and this button switches between them. |
The status line along the bottom shows the result of the last action.
Profiles and files
Profile names keep the letters A to Z (no accents), digits, dots, hyphens and underscores. Any other character, including accented letters, becomes an underscore, dots at the start are dropped, and a name can be 64 characters long. A saved profile holds only the differences from what your resource packs set, in the same keys a compat file uses.
| File or folder | What it is |
|---|---|
config/ | Your saved profiles, one .json file each. The file . in the same folder names the active one. |
config/ | A saved tuning file. The Hand Editor does not write it, but Punchy reads it when it is there and no profile is active. Reset To Default deletes it. |
config/ | The file Export Tuning Helper writes. |
assets/ | Where a pack keeps compat files. Copy your export here. |
On every start and every resource reload, Punchy applies things in this order: the compat files from your packs, then punchy_tuning.json if there is one and no profile is active, then your Mix Packs choices, then the active profile last. The active profile therefore wins over every compat file. On Minecraft 26.2 the active profile comes before the Mix Packs choices, and the positions it sets stay. Export compares against the state Punchy had when it last loaded its tuning (game start, F3+T, loading a profile or Reset To Default, and a pick on the Mix Packs tab once it is applied), so it lists everything you changed since then.
Debug position commands
Three commands move the first-person arms by typed numbers. They are client commands, so they work in single player and on servers, and nothing is sent to the server.
- Open chat with T and run
/punchy debugposition. Chat answersDebug position: ON. This also switches Enable Punchy on if it was off, and it flips Enable Tuning (General tab, Tools section) on too. - Run
/punchy pos 0 -2 0. Chat answersPos set to: 0.0, -2.0, 0.0and the arms shift. - Run
/punchy rot 0 0 15. Chat answersRot set to: 0.0, 0.0, 15.0and the arms turn. - Run
/punchy debugpositionagain to turn it off. Chat answersDebug position: OFFand the arms go back. Enable Tuning switches off with it.
Video coming soon
| Command | Arguments | What it does |
|---|---|---|
/ | none | Turns debug position mode on or off. Starts off every time the game launches. |
/ | three numbers | Moves the arms. Each number is in sixteenths of a block, so 16 is one block. Starts at 0 0 0. |
/ | three numbers | Turns the arms, in degrees around each axis. Starts at 0 0 0. |
You can also switch debug position mode on and off with Enable Tuning in the Punchy menu: it takes effect the moment you flip it, turning it on also turns Punchy on, and turning Punchy off also turns Enable Tuning off. The numbers act only while debug position says ON. They are not saved and they are not part of an export. Use the commands to look at an arm offset, and use the Hand Editor to make the numbers you keep.
Things that go wrong
- My changes vanished when I closed the editor. If you moved sliders and did not save, Done asks
Unsaved profile. Ignore and exit puts everything back as it was when you opened the editor (or when you last saved or loaded a profile), and Cancel keeps you in the editor. Click Save Profile first. Export Tuning Helper keeps your numbers in the file, but the editor still asksUnsaved profileon Done until you save a profile. - The sliders are grey. The Item editor needs an item in the selected hand. Pick up the item, or use Editor: Arm to edit the empty hand.
- I copied the export into my pack and nothing changed. Check these in order. Reload with F3+T. Make sure no profile is active that sets the same item, because the active profile wins over packs: click Reset To Default or delete the profile. Make sure the pack is higher in the Resource Packs list than any other pack that sets the same item, because the first pack wins each field. Check the JSON: a comma after the last member of an object, or a quote that is never closed, makes Punchy skip the whole file without a message.
- I deleted the wrong profile. Delete Profile removes the file and cannot be undone, and on Minecraft 26.1 and newer it does not ask first. If it was the active profile, Punchy goes back to the pack numbers and also deletes
config/punchy/punchy_tuning.json, if you have one. - The status line says
Failed to export tuning helper.The file is written before Punchy tries to open the folder. If your system cannot open folders from the game, look inconfig/punchy/dev_tuning_helperyourself. - I hand-edited a pose and the item disappeared. A pose without a
scalekey counts as scale 0. Keepscalein every pose you write, as the export does. - I edited a renamed item or one with a custom model. The export names the entry with a
#or|suffix and also writes acustomModelDataorrenamedfield, and that field does the matching, so the entry applies to that stack only. If you delete the field, the entry applies to every stack of that item. /punchy posdoes nothing. Run/punchy debugpositionfirst and wait forDebug position: ON.
Related pages
- Compat rules for every key you can put in the exported file.
- Mix the packs to choose which pack wins when several set the same item.
- Item physics for the pendulum settings that go next to a pose.
- Settings and controls for the rest of the Punchy menu.
- Resource packs for where a pack folder goes.
- Punchy! Studio to test animations on a held item with a timeline.
Last checked against the mod on 29 October 2026.