promotional bannermobile promotional banner

Seams & Stitches

This mod adds sewing to Minecraft! In an interactive way.

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


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

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
showPixelCoordinates false When enabled, hovering over the sewing canvas shows [x, y] pixel coordinates under the cursor. Useful when designing seam paths for custom recipes

Dye Basin

The Dye Basin is a block for dyeing items. Craft it with oak planks arranged in a U-shape with a bucket in the center (W_W / WBW / WWW).

How to use:

  1. Fill the basin with a water bucket.
  2. Right-click with a dye item to load a color — the water tints to match.
  3. Right-click with an item that has a registered dye_bath recipe for that color. The item sits on the washboard ridge.
  4. Right-click empty-handed three times to dunk the item into the dye.
  5. After the third dunk, the dyed result ejects from the front face and the dye clears. The water remains for the next item.

Hold Shift + right-click empty-handed to retrieve the placed item without dyeing it.

Dye Bath Recipe Structure

Place recipe JSONs in the same data/seamsandstitches/recipe/ folder as sewing patterns.

Top-level fields:

Key Description
type Must be "seamsandstitches:dye_bath"
ingredient Ingredient object ({ "item": "..." } or { "tag": "..." }) matching the item to be dyed
dye Lowercase dye color name (e.g., "red", "light_blue")
result Object with id and count — the item produced
copy_components (Optional) When true, copies all DataComponents from the input onto the output. Use for container items (backpacks, etc.) to preserve stored contents
apply_dye_color (Optional) When true, writes the dye's RGB value to the vanilla minecraft:dyed_color component on the output. Use for leather armor and other vanilla-dyed items
result_from_input (Optional) When true, uses the input item as the base for the output via transmutation rather than creating a fresh result stack. Implies content transfer
dye_int_components (Optional) List of DataComponentType<Integer> IDs to write the dye's RGB value into. Use for modded items that store color in their own components rather than minecraft:dyed_color
display_rotation (Optional) [x, y, z] pre-rotation in degrees applied to the held item before the basin renderer tilts it onto the washboard. Defaults to [0, 0, 0], which is correct for most items. Use [-90, 0, 0] for flat items like carpet whose natural face points upward
display_translation (Optional) [x, y, z] offset in the washboard's slope-aligned frame, in blocks. Use to compensate for off-center models — e.g., carpet sits near y=0 in its cube, so [0, 0.234, 0] lifts it onto the slope surface
display_scale (Optional, default 1.0) Uniform scale applied to the item rendered on the washboard. Lower this if a full-sprite item clips through the basin's sides

Default Dye Bath Items

The following vanilla items are supported out of the box. Support is included for the minecraft:dyeable tag, so any mod item added to that tag is compatible.

Item
Leather Helmet
Leather Chestplate
Leather Leggings
Leather Boots
Leather Horse Armor
Wolf Armor
Wool
Carpet

The vanilla crafting-table recipe for dyeing leather armor is disabled when enableDyeBasinOverrides is true (the default), requiring the Dye Basin instead.

Custom Dyeing Recipes

Modded container dyeing — dyes a Sophisticated Backpacks backpack red while preserving its contents. Uses result_from_input to transmute the existing item (keeping all stored data) and dye_int_components to write the dye color into the backpack's own color component:

{
  "neoforge:conditions": [
    { "type": "neoforge:mod_loaded", "modid": "sophisticatedbackpacks" }
  ],
  "type": "seamsandstitches:dye_bath",
  "ingredient": { "item": "sophisticatedbackpacks:backpack" },
  "dye": "red",
  "result_from_input": true,
  "dye_int_components": ["sophisticatedcore:main_color"],
  "display_rotation": [0, 0, 90],
  "display_translation": [0.2, 0, 0]
}

The Seams & Stitches Team

profile avatar
  • 4
    Projects
  • 2.5K
    Downloads

More from Br00t4L17y

  • Materialistic project image

    Materialistic

    • 305
    • Mods

    Additional items and resources

    • 305
    • May 8, 2026
    • Mods
    • +1
  • Research Lab project image

    Research Lab

    • 1.1K
    • Mods

    A research lab for unlocking research patterns and schematics

    • 1.1K
    • April 28, 2026
    • Mods
    • +1
  • Synapse project image

    Synapse

    • 314
    • Modpacks

    Cream of the crop vanilla+ modpack designed around longterm engagement with character advancement

    • 314
    • August 15, 2022
    • Modpacks
    • +4
  • Materialistic project image

    Materialistic

    • 305
    • Mods

    Additional items and resources

    • 305
    • May 8, 2026
    • Mods
    • +1
  • Research Lab project image

    Research Lab

    • 1.1K
    • Mods

    A research lab for unlocking research patterns and schematics

    • 1.1K
    • April 28, 2026
    • Mods
    • +1
  • Synapse project image

    Synapse

    • 314
    • Modpacks

    Cream of the crop vanilla+ modpack designed around longterm engagement with character advancement

    • 314
    • August 15, 2022
    • Modpacks
    • +4