๐Ÿง‘โ€๐ŸŒพ Stardew World Workshop โ€ข Episode 2 of 12 โ€ข See All Episodes
๐Ÿ“ฆ Episode 2 ยท Beginner ยท How Mods Work

Inside a Mod
Episode 2: The Mods Folder

A Stardew mod is not magic. It is a folder with a name tag and a list of changes. Learn its shape now and every episode after this one gets easier to picture.

๐Ÿ‘ถ Ages 10+ โฑ๏ธ ~45 Minutes ๐ŸŒฑ Stardew Valley โœ“ Free workshop
๐Ÿท๏ธ manifest.json ๐Ÿ“ content.json ๐Ÿ“‚ assets folder ๐Ÿ†” UniqueID ๐Ÿ”„ Load order ๐Ÿชต LogName
โญ
0 XP
Level 1
๐Ÿ”ฅ0
Your Progress 0 / 6 steps
๐Ÿ’ป
Have the Mods folder open: this episode is a tour. Keep your file explorer open in Stardew Valley / Mods and follow along.
๐Ÿฏ
Ember says: once you can read a mod's folder at a glance, you can fix almost any problem yourself. This is the superpower episode, it just does not look like one.
๐Ÿ› ๏ธ
Try it in the browser: build a manifest and content file with the file builders in the Stardew Mod Studio.
1
๐Ÿ“ฆ
A Mod Is Just a Folder
One folder, two must-have files
Active
๐ŸŽฏ
Goal for this step

See that every mod is a folder with the same basic parts.

  • 1A mod is a folder inside the Mods folder. That is the whole container.
  • 2Inside, it must have manifest.json. That is the name tag that tells SMAPI who made it and what it needs.
  • 3A content pack usually also has content.json (the list of changes) and an assets folder (the maps and images).
  • 4That is it. Folder, name tag, change list, assets.
โœ๏ธ
Fill in the Blanks
+15 XP
Every mod is a inside Mods. The name tag inside it is called .json.
๐Ÿง 
Knowledge Check
+15 XP
What is a Stardew mod, at its simplest?
AA program you install for the whole computer
BA folder inside Mods with a manifest and some content
CA change you make to the game's own files
2
๐Ÿท๏ธ
The Name Tag: manifest.json
The fields every manifest needs
Locked
๐ŸŽฏ
Goal for this step

Read a manifest and know what each field is for.

  • 1Name: what shows in the SMAPI list. Author: you.
  • 2Version: like 1.0.0. Bump it when you change the mod.
  • 3UniqueID: a one-of-a-kind id, usually YourName.ModName. No two mods may share it.
  • 4ContentPackFor: tells SMAPI that Content Patcher should read your content file.
manifest.json
{
  "Name": "My First Farm",
  "Author": "You",
  "Version": "1.0.0",
  "UniqueID": "You.MyFirstFarm",
  "ContentPackFor": { "UniqueID": "Pathoschild.ContentPatcher" }
}
โœ๏ธ
Fill in the Blanks
+15 XP
The field that must be one of a kind is . The author of a mod usually writes their own next to it.
๐Ÿง 
Knowledge Check
+15 XP
Why must UniqueID never be shared with another mod?
AIt makes the mod's name longer
BTwo mods with the same id clash, so the game cannot tell them apart
CIt controls the map size
3
๐Ÿ“
The Change List: content.json
A list of edits the game applies in order
Locked
๐ŸŽฏ
Goal for this step

Understand that content.json is a list of actions.

  • 1content.json holds a Format version and a list of Changes.
  • 2Each change has an Action (what to do, e.g. Load or EditMap) and a Target (which game file to touch).
  • 3FromFile points at your own file in the assets folder to load in place of the game's.
  • 4Content Patcher reads this list and applies it without ever damaging the real game files.
content.json (a Load change)
{
  "Format": "2.9.0",
  "Changes": [
    {
      "Action": "Load",
      "Target": "Maps/Farm",
      "FromFile": "assets/maps/Farm.tmx"
    }
  ]
}
โœ๏ธ
Fill in the Blanks
+15 XP
A change's says what to do, and its says which game file to touch. Your own file is named by .
๐Ÿง 
Knowledge Check
+15 XP
What does content.json actually contain?
AThe game's own files, copied
BA list of changes (actions + targets) Content Patcher applies
CYour save file
4
๐Ÿ“‚
The assets Folder
Where your maps and images live
Locked
๐ŸŽฏ
Goal for this step

Know where your world files sit inside the mod.

  • 1The assets folder holds the files you made: maps, tilesheets, images.
  • 2Keeping maps in assets/maps and images in assets/images keeps a mod tidy.
  • 3A map file ends in .tmx. That is the Tiled map you will edit from Episode 3.
  • 4FromFile in content.json points here, so the paths must match exactly.
A tidy content pack
MyFirstFarm/
โ”œโ”€โ”€ manifest.json
โ”œโ”€โ”€ content.json
โ””โ”€โ”€ assets/
    โ”œโ”€โ”€ maps/
    โ”‚   โ””โ”€โ”€ Farm.tmx
    โ””โ”€โ”€ images/
        โ””โ”€โ”€ CustomBed.png
โœ๏ธ
Fill in the Blanks
+15 XP
Your files live in the folder. A Tiled map file ends in ..
๐Ÿง 
Knowledge Check
+15 XP
Why keep FromFile paths and real file paths matching exactly?
AIt looks neater in the folder
BContent Patcher looks for the file at that exact path, so a typo means it cannot find it
CIt changes the map size
5
๐Ÿ”„
How SMAPI Loads It
Follow the chain from folder to game
Locked
๐ŸŽฏ
Goal for this step

Picture the load chain so you can debug it later.

  • 1SMAPI scans the Mods folder and reads each manifest.json.
  • 2Because your manifest says ContentPackFor Content Patcher, SMAPI hands your folder to Content Patcher.
  • 3Content Patcher reads your content.json and applies each change at the right moment.
  • 4The game then loads the edited content. Your mod never overwrote the real files.
๐Ÿง 
Knowledge Check
+15 XP
Put the chain in order. Which reads your content.json?
ASMAPI directly
BThe game's save file
CContent Patcher, because your manifest points at it
6
๐Ÿชต
Spot Your Mod in the Log
Use LogName to find it fast
Locked
๐ŸŽฏ
Goal for this step

Add a LogName so your mod is easy to find in the console.

  • 1Add a LogName to content.json. It is the friendly label that appears in the console.
  • 2Launch the game and look for that label in the SMAPI window.
  • 3If it is there, your mod is loading. If it is missing, the folder or manifest has a problem.
  • 4This one label turns every future error into a five-second check.
content.json (top of file)
{
  "Format": "2.9.0",
  "LogName": "My First Farm",
  "Changes": [ /* ... */ ]
}
โœ๏ธ
Fill in the Blanks
+15 XP
The friendly label that shows in the console is the field in content.json.
๐Ÿง 
Knowledge Check
+15 XP
Your LogName is missing from the console. What does that usually mean?
AThe game is fine, labels are random
BContent Patcher did not load your pack, so check the folder and manifest
CYou need to reinstall the whole game
๐ŸŽ‰๐Ÿ“ฆ๐Ÿท๏ธโœจ๐ŸŽ‰
You Can Read a Mod Now!
You know the folder shape, the manifest fields, the content list and how SMAPI loads it all. Episode 3 is the big one: you copy the farm map, open it in Tiled and change a tile for real.
0
Total XP
1
Level
0
Best Streak
0%
Accuracy
๐Ÿงฑ Episode 3: Your First Change โ†’
โญ View My Progress & Certificates

This workshop was free and took many hours to build. If it helped you learn something new, consider supporting the project.

☕ Support on Ko-fi
๐Ÿงฉ
What Loads First?
+20 XP
Drag the load chain into the correct order, from the Mods folder to the game showing your change.
Content Patcher applies each change in content.json
SMAPI scans the Mods folder
The game loads the edited content
SMAPI reads each manifest.json
ContentPackFor hands your folder to Content Patcher