Privacy
Language: Nederlands

Mix the packs

Choose which resource pack supplies the animations for each kind of item, preview each choice, save the choices as setups, and see how several packs combine.

This page has not been translated into Dutch yet, so it is shown in English. Read in English

On this page

Mix the Packs is the Mix Packs tab of the Punchy! menu, where you pick, for each kind of item, which resource pack its animations come from. Use it when two packs change the same item and you prefer one pack for it. To take just one move, such as the attack, from another pack, see Take one animation type from another pack. It is for players, and for pack makers who want to see how their pack behaves next to others.

Mix the Packs is always on. There is no switch for it. Until you pick a pack for a row, the pack nearest the top of your Selected list that has something for that row wins it. A pick is saved, and there is nothing to apply yourself.

Before you start

  • You need Punchy! and at least one other pack in Selected under Options, Resource Packs that gives animations to a kind of item. The row then offers that pack and the built-in Punchy! pack. Use two such packs to compare them with each other.
  • With only the built-in Punchy! pack the tab shows the message “Only Punchy’s default animations are available. Add animation resource packs to choose between them.” and no rows.
  • The rows are built when the game loads its resources. After you move packs in the list, let the game reload before you open the tab.
  • If you open the menu from the title screen on Minecraft 26.1 to 26.4, for example with Mod Menu, the rows show without item icons until you have joined a world. The names are there, and the icons appear once a world has loaded. The preview shows the arms without the held item until then. On 1.20.1 to 1.21.11 the icons show everywhere.

Choose a pack for an item kind

  1. Press F8 in the game. This is Open Punchy Menu.
  2. Click Mix Packs in the left column. The Mix Packs page opens. Its subtitle says “Pick a pack for each item type. Hover to preview.”
  3. Find the row for your item kind, for example Sword. The rows sit in groups that fold: Hands, Melee, Ranged and use, Held items, Vehicles, Blocks, Specific items and Other. A row has an icon of a typical item of that kind (the Empty Hand row has none), the kind’s name on the left and a chooser on the right that shows the pack in use.
  4. Type part of the name in the Search box if the list is long. The box filters the rows as you type.
  5. Open the chooser on the row and pick the pack. Most rows use a drop-down. A row with at most three short pack names, none of them Punchy! Default, shows a row of buttons instead. With the chooser focused, the Left and Right arrow keys step through the packs.
  6. Optional: to keep this set of choices, click Save as…, type a name in the Name box and click Save. A message says “Setup” and the name, then “saved.”
  7. Close the menu with Done, Esc or F8.

Your choice is saved at once and needs no restart. The preview on the tab shows it straight away, and Punchy! applies it in game a fraction of a second after it gets the pick, while the game is running. In single player the menu pauses the game by default (Pause game while open on the General tab), so on Minecraft 1.20.1, 1.21.1 and 26.1 to 26.4 the pick reaches your hand when you close the menu. On 1.21.5 and 1.21.11 it is applied while the menu is still open.

Video coming soon

Picking another pack for the Sword row and saving the choices as a setup.

Video coming soon

The same swing before and after the choice.

Preview a pack before you pick it

On the Mix Packs tab the box at the top of the left column becomes a live preview. It shows your first person arms in your skin, holding an item of the kind you point at, and playing the moves of the chosen pack.

  • Point at a row, or focus it with the keyboard, and the preview switches to that kind. Point at a pack in an open drop-down and the preview plays that pack before you pick it.
  • The name of the move shows at the top, for example “Attack (variation 1)”, with a < and a > beside it to step to the previous or next move. The name of the pack is on the strip at the bottom of the preview. If the pack does not change the move on show, a small tag next to the name says “Punchy’s default”, or “No animation” when it has none. A tag “Resource pack order” shows when the move comes from the pack order. Click the preview, or the Replay button (a circular arrow) that shows when you hover it, to play the move again. With Reduce motion on, a pause button also appears, and it turns into a play button while paused.
  • Special items show their own moves: the shield, the fishing rod (cast and reel in), the trident throws, the draw and shot of the bow, and the load and shot of the crossbow.
  • The preview also works from the title screen, on 26.1 to 26.4 without the held item until a world has loaded. When Punchy! is off it says “Punchy is off. This is how it will look.”

Video coming soon

Pointing at a row and at a pack to see its moves before picking.

Try it with two small packs

This is the quickest way to see how the packs combine. You make two tiny packs, each with a pack.mcmeta, one compat file and one clip file. Make a folder for each pack with the files below, then zip the contents of each folder so that pack.mcmeta and assets sit at the top level of the zip, not inside an extra folder. The Mix Packs tab names a pack after its zip, so keep the names sword_pack_a.zip and sword_pack_b.zip.

sword_pack_a.zip
  pack.mcmeta
  assets/minecraft/punchy/
    compat/sword_pack_a.json
    animations/sword_pack_a.animation.json
sword_pack_b.zip
  pack.mcmeta
  assets/minecraft/punchy/
    compat/sword_pack_b.json
    animations/sword_pack_b.animation.json

pack.mcmeta of Pack A:

{
  "pack": {
    "description": "Sword Pack A",
    "pack_format": 97,
    "min_format": 97,
    "max_format": 97
  }
}

The numbers are for Minecraft 26.3; the table on Resource packs has the other versions. Pack B uses the same file with the description Sword Pack B.

Pack A is sword_pack_a.zip. It gives swords an attack clip and an inspect clip.

assets/minecraft/punchy/compat/sword_pack_a.json

{
  "item": {
    "SWORD": {
      "customAnimation": [
        { "type": "attack", "name": "a_swing" },
        { "type": "inspect", "name": "a_inspect" }
      ]
    }
  }
}

assets/minecraft/punchy/animations/sword_pack_a.animation.json

{
  "format_version": "1.8.0",
  "animations": {
    "a_swing": {
      "animation_length": 0.6,
      "bones": {
        "right_arm": {
          "rotation": {
            "0.0": [0, 0, 0],
            "0.2": [-40, 0, 10],
            "0.35": [35, 0, -10],
            "0.6": [0, 0, 0]
          }
        }
      },
      "timeline": {
        "0.0": "anim_speed_1;dual_handed;use_keyframes_v2;"
      }
    },
    "a_inspect": {
      "animation_length": 1.0,
      "bones": {
        "right_arm": {
          "rotation": {
            "0.0": [0, 0, 0],
            "0.5": [-70, 20, 0],
            "1.0": [0, 0, 0]
          }
        }
      },
      "timeline": {
        "0.0": "anim_speed_1;dual_handed;use_keyframes_v2;"
      }
    }
  }
}

Pack B is sword_pack_b.zip. It gives swords an attack clip only.

assets/minecraft/punchy/compat/sword_pack_b.json

{
  "item": {
    "SWORD": {
      "customAnimation": [
        { "type": "attack", "name": "b_swing" }
      ]
    }
  }
}

assets/minecraft/punchy/animations/sword_pack_b.animation.json

{
  "format_version": "1.8.0",
  "animations": {
    "b_swing": {
      "animation_length": 0.5,
      "bones": {
        "right_arm": {
          "rotation": {
            "0.0": [0, 0, 0],
            "0.15": [-60, 0, 0],
            "0.3": [50, 0, 0],
            "0.5": [0, 0, 0]
          }
        }
      },
      "timeline": {
        "0.0": "anim_speed_1;dual_handed;use_keyframes_v2;"
      }
    }
  }
}
  1. Put both zips in your resourcepacks folder and open Options, Resource Packs.
  2. Move both packs to Selected, with sword_pack_a above sword_pack_b, and both above Punchy!. Press Done and let the game reload.
  3. Hold an iron sword in first person and swing. You see a_swing. Press I (Inspect) and you see a_inspect.
  4. Press F8, click Mix Packs and look at the Sword row. It shows Sword Pack A, because that pack is on top. The row offers Sword Pack A, Sword Pack B and Punchy! Default.
  5. Open the drop-down on the Sword row and pick Sword Pack B. The row is a drop-down because Punchy! Default is among its options. The change applies without a restart.
  6. Close the menu with F8 and swing again. You see b_swing. Press I again: you still see a_inspect.

Pack B has no inspect rule, so Punchy! takes the inspect from the first other pack in the row that has one. That is how several packs combine: the pack you choose supplies every animation type it defines, and the other packs fill in the types it leaves out.

How Punchy! decides

  • A row is an item kind. The rows are kinds such as Empty Hand, Sword, Axe, Pickaxe, Shovel, Hoe, Bow, Crossbow, Shield, Fishing Rod, Mace and Spear. A kind has a row when a pack’s compat file gives it animations: a customAnimation or customItemAnimations list in its item entry, or in emptyHand. Empty Hand, when there is one, comes first. An itemSpecific entry that sets something Mix keeps (for example animations, transforms, armTransforms, physics, particles, Better Combat settings, or kind, renamed or customModelData) joins the row of its item’s kind, so the choice for Sword also switches that pack’s entries for single swords.
  • A pack is in a row when its compat file gives that kind something. That is a customAnimation or customItemAnimations list in the item entry (for Empty Hand, in emptyHand), or an itemSpecific entry for an item of that kind, as above. A pack with no compat entry for the kind is not listed, even if it ships clips. Only packs in Selected count.
  • The packs in a row are in the order of Selected, top first. The built-in Punchy! pack shows as Punchy! Default. Any other pack shows by its file name without file/ and .zip, with underscores and hyphens turned into spaces and each word in lower case with a capital first letter, so sword_pack_a.zip is Sword Pack A.
  • With no saved choice, the first pack in the row wins. That is the pack nearest the top of Selected that is in the row.
  • The winner supplies each animation type it defines. A type is the type of an entry: attack, inspect, useItem and so on. mining and mining_v2 count as one type. For a type the winner does not define, Punchy! uses the first other pack in the row, top down, that does, and when no pack does, the type stays as the normal merge of compat files left it.
  • A clip counts for the pack folder it sits in. A clip a pack puts under assets/punchy/animations/ counts for the built-in Punchy! Default option, not for that pack. Clips a pack should count for its own option go under assets/minecraft/punchy/animations/.
  • Two packs can ship a clip with the same name. The pack a row plays from uses its own copy. A pack that does not have that clip name falls back to the copy that wins by resource order.
  • A choice switches the animations. On Minecraft 1.21.11 and 26.x the positions of the kind’s entry (transforms and armTransforms) are not switched by Mix. They keep the values the normal merge of compat files gave them, in the order of Selected. On 1.20.1, 1.21.1 and 1.21.5 a choice also switches those positions, and the entry’s right and left, to the chosen pack’s.
  • A choice that cannot apply is skipped. If the pack you chose is no longer in Selected, or no longer has anything for that row, the row follows pack order again. The choice stays saved and works again when the pack returns.
  • Mix comes before the Hand Editor, except on Minecraft 26.2. On every other version a tuning profile saved in the Hand Editor is applied after Mix whenever the game loads its resources and after every pick, so what it sets for an item wins over a Mix choice. On 26.2 the profile is applied first, so a Mix choice always wins over the animations the profile sets for those kinds and items. The positions the profile sets stay. Resource packs lists the order for other versions.

The Mix Packs tab

ControlWhat it does
SearchFilters the rows by their name or id, in any letter case.
Group headerFolds and unfolds a group of rows. It shows the number of rows, and how many of them you changed, such as “5, 1 changed”. A group with no rows is not shown.
Row chooserPicks the pack for that row and applies it without a restart. It also clears any per-type choice for the row. Punchy! Default carries a Built-in tag.
Inherits tagMarks a row for a single item that Punchy! cannot sort into a kind. After you pick a different pack on the row, the tag is gone the next time you open the menu. See mixSpecificForceOverride below.
Setup listChoose a saved setup to load it: it replaces your current choices and becomes the active setup. A message says “Setup” and the name, then “loaded”, with Undo. The first entry, Current choices, only forgets which setup is active and keeps your choices. With no setups yet the list is greyed out.
Save as…Opens a Save setup box. Save writes your current choices to a setup with that name and makes it the active setup. An empty name is saved as mix_profile. The box tells you when the name replaces an existing setup.
… menu, Delete setup and the nameOne entry for each saved setup. It asks “Delete setup” and the name, with the line “Your current pack choices stay. Only the saved setup goes.”, then deletes only the saved setup.
… menu, Open folderOpens config/punchy/mix_profiles in your file browser.
Use resource pack orderClears every saved choice, forgets which setup is active and applies pack order without a restart. A message says “Pack choices follow the resource pack order.” with Undo. Saved setups are kept.

Scroll the rows with the mouse wheel. The menu closes with Done, Esc or F8. If a search is open, Esc clears it first.

Setups

A setup is a named set of your choices, stored as a Mix profile file. Save one for each arrangement you like, for example one for a duel pack and one for a building pack, and load them from the same tab. The name may use letters, digits, ., _ and -. Any other character becomes _, and leading dots are cut. The active setup is the one shown in the setup list.

Setups are kept apart from the tuning profiles of the Hand Editor and from the settings profiles of the Profiles tab. Each lives in its own folder, and none holds the others’ data.

Video coming soon

Loading a setup, then going back to pack order.

Where your choices are kept

FileWhat it holds
config/punchy/punchy_config.jsonYour current choices, next to Punchy!‘s other settings.
config/punchy/mix_profiles/<name>.jsonOne saved setup, as a Mix profile file.
config/punchy/mix_profiles/.active_mix_profileThe name of the active setup.

Every time the game loads its resources, including the first load at start and each reload with F3+T, Punchy! reads punchy_config.json and then applies the active setup on top of it. So when a setup is active, its file is the one that counts. Edit the setup file to change your choices by hand, and do it with the game closed or reload afterwards.

A setup file has the same three keys as the choices in punchy_config.json:

{
  "animationPackSelections": {
    "kind:sword": "pack:file/sword_pack_b.zip",
    "kind:empty_hand": "pack:punchy:punchy"
  },
  "animationPackTypeSelections": {},
  "mixSpecificForceOverride": {}
}
Keys of a setup file
KeyTypeDefaultWhat it doesExample
animationPackSelectionsobject, text to text{}The pack for each row. The key is the row id: kind: and the kind in lower case, such as kind:sword, kind:fishing_rod or kind:empty_hand. Write it exactly like that. The value is a pack option, see the table below. Values are read in lower case, and empty ones are dropped."kind:sword": "pack:file/sword_pack_b.zip"
animationPackTypeSelectionsobject, text to text{}The pack for one animation type in one row. The key is the row id, a vertical bar and the type in lower case. A key without a vertical bar is dropped. The tab has no control for this key. It keeps the entries you wrote until you pick a pack for that row in the tab, which clears them."kind:sword|attack": "pack:file/sword_pack_b.zip"
mixSpecificForceOverrideobject, text to boolean{}For the rare rows in the Specific items group, which stand for one item that Punchy! cannot sort into a kind. The key is specific: and the item id, exactly as the row's id, such as specific:examplemod:magic_wand. true makes the row use its own stored choice. Without it, such a row shows an Inherits tag and Mix does not apply its own choice, unless only one pack gives the row anything. Then the row uses that pack directly. Only true values are kept. Picking a pack other than the one the row shows sets it to true for you, and Use resource pack order clears it."specific:examplemod:magic_wand": true

The pack options a value can have:

OptionWhat it means
punchy_defaultFollow pack order for this row. The ids vanilla and mod_resources, and an empty value, mean the same.
pack:punchy:punchyThe built-in Punchy! pack, shown as Punchy! Default.
pack: and the pack idAny other pack, with the id in lower case. A pack in your resourcepacks folder has the id file/ and its file name, so sword_pack_a.zip is pack:file/sword_pack_a.zip.

The easiest way to get the exact ids is to make the choices in the tab, save a setup with Save as… and open config/punchy/mix_profiles/.

Take one animation type from another pack

To keep a pack for the row and take only the attack from a different one, add a type choice to the setup file:

{
  "animationPackSelections": {
    "kind:sword": "pack:file/sword_pack_a.zip"
  },
  "animationPackTypeSelections": {
    "kind:sword|attack": "pack:file/sword_pack_b.zip"
  },
  "mixSpecificForceOverride": {}
}

The sword row uses pack A, and the attack comes from pack B. A type choice works only when the pack it names has that type for the row. Otherwise the choice does not apply to that type. The row’s own pack supplies the type if it defines it, and if it does not, the type comes from Punchy!‘s built-in animations when they have one, not from the next pack in Selected.

Mix the Packs in Punchy! Studio

Punchy! Studio shows the result of Mix without you opening the Mix Packs tab. In the Bindings workspace the Effective column lists, for the test item and every trigger, the rule Punchy! would use, which file and pack it comes from, which Mix the Packs option won, and the rules that lost. Check Against Punchy compares that with what the game itself picks. The Test panel’s Context shows a warning when you have a stored Mix choice for the test item’s row, and lists the stored choices with a Reset Mix Choices button. See Punchy! Studio.

The Effective column on the right names the rule Punchy! would use for each trigger, and the file and pack it comes from.

Two things to know when you test there:

  • Studio exports your clips under assets/minecraft/punchy/animations, so they belong to your own pack’s option on the Mix Packs tab. Clips a pack ships under assets/punchy/animations belong to the built-in Punchy! Default option.
  • The Live mode of the Test panel runs your draft in the game without Punchy!‘s file merge and without Mix the Packs. To check how packs combine, use the Mix Packs tab in the game.

Things that go wrong

  • A pack is missing from the row. The pack must be in Selected, and its compat file must give that item kind a customAnimation or customItemAnimations list, or an itemSpecific entry for an item of that kind. A compat file with a JSON mistake is skipped whole and silently, so the pack gives the row nothing. See Compat rules.
  • I chose a pack and nothing changed. In single player on 1.20.1, 1.21.1 and 26.1 to 26.4, the pick reaches your hand when you close the menu, so close it and try again. If the pick still does nothing, a profile from the Hand Editor may set the animations for the same item. It is applied after Mix on every pick, so the pick seems to do nothing. On 26.2 the pick always wins.
  • My pick came back after a reload. A loaded setup is applied again at every reload. Click Save as… with the same name to keep the new pick, or pick Current choices in the setup list.
  • A pack I moved to the top is ignored. A row you changed keeps its saved choice, even if you changed it back to the pack that was first. A saved choice beats pack order. Click Use resource pack order to clear every choice.
  • My hand edit did not stick. An active setup is applied after punchy_config.json, so it wins over it. Edit the setup file instead. A setup with a JSON mistake shows “The setup could not be loaded.” when you load it, and is skipped at start.
  • My settings were reset. A mistake in punchy_config.json, such as a missing comma, or the same key twice inside animationPackSelections, animationPackTypeSelections or mixSpecificForceOverride, makes Punchy! write a fresh file with default settings at the next load. Keep a copy before you edit it, or edit a profile file instead.
  • The tab says only Punchy’s default animations are available. No row has more than one pack. Put a pack with animation rules for an item kind in Selected and let the game reload.

Last checked against the mod on 29 October 2026.