Description
Seams and Stitches
Summary
This mod adds interactive sewing to Minecraft. It introduces a Tailoring Bench where players craft items by stitching along seam paths in a minigame. Hit more stitches within the timing window to produce higher-quality results. Mastering a pattern unlocks Quick Craft, letting you skip the minigame for repeat crafts. How many completions are required before mastery is unlocked is configurable per recipe.
A Needle and Scissors are required to use the bench. Both are craftable.
Quality Tiers
Each completed craft is graded based on the fraction of stitches hit and how precisely they were timed:
| Tier | Lore | Behavior |
|---|---|---|
| Poor | "Poorly sewn by <player\>" | Minimum passing threshold — item produced with lowest bonus values |
| Well | (none) | Base result — no lore added |
| Expert | "Expertly crafted by <player\>" | Hit rate meets the expert threshold |
| Master | "Masterfully crafted by <player\>" | Every stitch hit within the perfect window |
If fewer stitches are hit than the poor threshold, the craft fails entirely and no item is produced.
Quality tiers can grant per-attribute bonuses defined in quality_bonuses. Attribute values are set explicitly per tier, replacing the item's vanilla default for that attribute.
Instructions for Use
1. Folder Structure
To add custom sewing recipes, place them in the following path inside your modpack or data pack:
modpack_name/
└── data/
└── seamsandstitches/
└── recipe/
2. JSON Recipe Structure
Each custom recipe must be its own individual JSON file and can be named anything you like.
Top-level fields:
| Key | Description |
|---|---|
type |
Must be "seamsandstitches:sewing_pattern" |
texture |
Path to the item texture used as the sewing canvas (e.g., "minecraft:textures/item/leather_helmet.png") |
output |
Object with id ("mod_id:item_name") and count |
ingredients |
List of ingredient objects ({ "item": "mod_id:item_name" }), shapeless and order-independent |
seams |
List of seam definitions (see below) |
requires_pattern |
(Optional) Recipe ID the player must have unlocked before this recipe appears in the bench |
quality_breakpoints |
(Optional) Per-recipe quality thresholds (see below). Falls back to the global poorThreshold config value |
quality_bonuses |
(Optional) List of attribute bonuses applied per quality tier (see below) |
deferred_ingredients |
(Optional) List of 0-based ingredient indices that are not consumed when the craft starts. These items remain in the bench during the minigame and are consumed only on successful completion. If the craft is cancelled they are returned. |
transfer_contents |
(Optional, default false) When true, all DataComponents from the first deferred ingredient are copied onto the output via transmutation. Use this for upgrade recipes where a container item (e.g. a wallet or shulker box) should pass its stored contents to the upgraded output. Vanilla containers (shulker boxes, bundles) are detected automatically even without this flag; set it explicitly for modded containers. |
crafts_to_master |
(Optional, default 1) Number of successful minigame completions required before Quick Craft is unlocked for this recipe. While progress is below the threshold, the preview panel shows X/N where X is the current count. |
Seam fields:
| Key | Description |
|---|---|
id |
Unique name for this seam segment (e.g., "collar", "left_sleeve") |
path |
Array of [x, y] pixel coordinates (0–15 for a 16×16 texture) tracing the seam line |
speed |
Float — traversal speed in path-index units per second (e.g., 2.0) |
lead_in |
Seconds before the first stitch reaches the needle |
lead_out |
Seconds the seam lingers after the last stitch passes |
perfect_window |
Half-window (path units) for a perfect hit — determines Expert/Master quality |
Quality breakpoints fields (quality_breakpoints):
| Key | Default | Description |
|---|---|---|
poor |
0.25 |
Minimum hit fraction to produce any item. Below this the craft fails |
well |
0.5 |
Minimum hit fraction for Well quality |
expert |
0.75 |
Minimum hit fraction for Expert quality |
master |
1.0 |
Fraction of stitches that must be within perfect_window to achieve Master |
Quality bonus fields (quality_bonuses is a list of these):
| Key | Description |
|---|---|
attribute |
The attribute to modify (e.g., "minecraft:generic.armor") |
slot |
(Optional) Equipment slot group: "head", "chest", "legs", "feet", "main_hand", "off_hand", "armor", "any" |
poor |
Attribute value applied at Poor quality |
well |
Attribute value applied at Well quality |
expert |
Attribute value applied at Expert quality |
master |
Attribute value applied at Master quality |
The quality bonus replaces the item's vanilla default for that attribute rather than adding to it.
3. Example Recipe
{
"type": "seamsandstitches:sewing_pattern",
"texture": "minecraft:textures/item/leather_helmet.png",
"output": {
"id": "minecraft:leather_helmet",
"count": 1
},
"ingredients": [
{ "item": "minecraft:leather" },
{ "item": "minecraft:leather" },
{ "item": "minecraft:leather" },
{ "item": "minecraft:leather" },
{ "item": "minecraft:leather" }
],
"seams": [
{
"id": "crown",
"path": [[4,11],[3,10],[3,9],[3,8],[3,7],[3,6],[3,5],[4,4],[5,3],[6,3],[7,3],[8,3],[9,3],[10,3],[11,4],[12,5],[12,6],[12,7],[12,8],[12,9],[12,10],[11,11]],
"speed": 2,
"lead_in": 0.4,
"lead_out": 0.4,
"perfect_window": 0.05
},
{
"id": "left_strap",
"path": [[6,4],[6,5],[6,6],[7,7],[6,7],[5,8],[5,9],[5,10],[5,11]],
"speed": 2,
"lead_in": 0.4,
"lead_out": 0.4,
"perfect_window": 0.05
}
],
"quality_breakpoints": {
"poor": 0.25,
"well": 0.5,
"expert": 0.75,
"master": 1.0
},
"quality_bonuses": [
{
"attribute": "minecraft:generic.armor",
"slot": "head",
"poor": 0,
"well": 1,
"expert": 2,
"master": 3
}
]
}
4. Upgrade Recipe (Container Content Transfer)
When upgrading a container item — such as a wallet or shulker box — use deferred_ingredients to keep the source item in the bench until the craft completes, and transfer_contents to carry its stored contents onto the new item.
The deferred ingredient index refers to its position in the ingredients array (0-based). In the example below, index 0 is the copper wallet.
{
"type": "seamsandstitches:sewing_pattern",
"texture": "lightmanscurrency:textures/item/wallet/wallet_copper.png",
"output": {
"id": "lightmanscurrency:wallet_iron",
"count": 1
},
"ingredients": [
{ "item": "lightmanscurrency:wallet_copper" },
{ "item": "minecraft:iron_ingot" },
{ "item": "minecraft:iron_ingot" }
],
"deferred_ingredients": [0],
"transfer_contents": true,
"seams": [
{
"id": "stitching",
"path": [[4,4],[5,4],[6,4],[7,4],[8,4],[9,4],[10,4],[11,4],[11,5],[11,6],[11,7],[11,8],[10,9],[9,9],[8,9],[7,9],[6,9],[5,9],[4,9],[4,8],[4,7],[4,6],[4,5]],
"speed": 2.0,
"lead_in": 0.4,
"lead_out": 0.4,
"perfect_window": 0.05
}
]
}
How it works:
- The copper wallet (index
0) stays in the bench when the minigame starts. If the player cancels, the wallet is returned. - On successful completion, the wallet's contents are transmuted onto the iron wallet output before the copper wallet is consumed.
- The remaining ingredients (iron ingots) are consumed immediately when the craft starts as normal.
Configuration
Config file: config/seamsandstitches-common.toml
Recipe Overrides
When enabled, the specified items can no longer be crafted at a crafting table and must instead be made at the Tailoring Bench.
| Option | Default | Description |
|---|---|---|
enableRecipeOverrides |
true |
Globally enables or disables all recipe overrides |
override_<recipe_id> |
true |
Per-recipe toggle (only active when overrides are enabled globally) |
Overridable recipe IDs:
- Armor:
leather_helmet,leather_chestplate,leather_leggings,leather_boots,leather_horse_armor - Items:
book,painting
General Options
| Option | Default | Description |
|---|---|---|
poorThreshold |
0.25 |
Global minimum hit fraction (0.0–1.0) required to produce any item. Individual recipes can override this via quality_breakpoints.poor |
vanillafyUI |
false |
When true, the Tailoring Bench UI uses the classic vanilla gray style instead of the dark UI |
Debug Options
| Option | Default | Description |
|---|---|---|
debugOverlay |
false |
When enabled, activates debug tools on the sewing screen: hovering the canvas shows [x, y] pixel coordinates; clicking records coordinates into a growing array; R clears the array; C copies it to the clipboard. Useful when designing seam paths for custom recipes |
Default Recipes
| Output | Ingredients | Quality Bonuses |
|---|---|---|
| Book | 3x Paper, 1x Leather | — |
| Painting | 1x White Wool, 8x Sticks | — |
| Leather Helmet | 5x Leather | Armor (head): Poor 0 / Well 1 / Expert 2 / Master 3 |
| Leather Chestplate | 8x Leather | Armor (chest): Poor 0 / Well 1 / Expert 2 / Master 3 |
| Leather Leggings | 7x Leather | Armor (legs): Poor 0 / Well 1 / Expert 2 / Master 3 |
| Leather Boots | 3x Leather, 1x String | Armor (feet): Poor 0 / Well 1 / Expert 2 / Master 3 |
| Leather Horse Armor | 12x Leather | — |


