Publishing Your Mod¶
Once your mod is working locally, here's how to share it with other players.
Preparing for Release¶
1. Test Thoroughly¶
Before releasing: - Test all features multiple times - Test with other mods enabled - Test after game restarts - Check logs for errors
2. Clean Up Your Code¶
- Remove debug logging (or keep minimal)
- Remove commented-out code
- Ensure meaningful variable names
3. Complete Your manifest.json¶
{
"id": "your-mod-id",
"name": "Your Mod Name",
"version": "1.0.0",
"description": "Clear description of what your mod does",
"author": "Your Name",
"entry_dll": "YourMod.dll",
"framework_version": ">=0.4.0",
"multiplayer": "client-only",
"icon": "icon.png",
"keybinds": []
}
Required fields:
- id - Unique identifier (lowercase, hyphens only)
- name - Display name
- version - Semantic version (major.minor.patch)
- author - Your name
- description - What the mod does
- entry_dll - Your compiled DLL filename (if omitted, inferred from id)
Optional but recommended:
- multiplayer - "required" (all players need it), "optional" (server has it, clients can join without), or "client-only" (no server impact). Mods with custom items are automatically required.
- framework_version - Minimum Core version (e.g., ">=0.4.0")
- icon - Path to icon.png (displayed in mod menu)
4. Choose a License¶
Add a LICENSE file to your mod folder. Common choices: - MIT - Permissive, allows anything - GPL - Requires derivative works to be open source - Unlicense - Public domain
Package Structure¶
Your release should be a zip file containing:
YourModName/
├── manifest.json <- Required
├── YourMod.dll <- Your compiled mod
├── icon.png <- Optional: mod icon (shown in UI headers)
├── README.md <- Optional but recommended
└── LICENSE <- Optional but recommended
Creating the Package¶
- Build your mod in Release mode
- Create a folder with your mod ID
- Copy the required files into it
- Zip the folder
@echo off
set MOD_NAME=your-mod
mkdir %MOD_NAME%
copy bin\Release\YourMod.dll %MOD_NAME%\
copy manifest.json %MOD_NAME%\
copy README.md %MOD_NAME%\
copy LICENSE %MOD_NAME%\
powershell Compress-Archive -Path %MOD_NAME% -DestinationPath %MOD_NAME%.zip
rmdir /s /q %MOD_NAME%
Where to Publish¶
Nexus Mods (Recommended)¶
Publish on Nexus Mods to reach the most players. The TerrariaModder Vault discovers mods through Nexus's declared requirements rather than a name or description search.
- Create a mod page at nexusmods.com/terraria
- Add TerrariaModder Core (mod 135) in the page's Requirements
- Upload your mod zip as an active main file on the Files tab
- The current active main release can now appear in Vault Browse
See The Vault for packaging requirements (zip structure, manifest.json fields, versioning) that ensure your mod installs cleanly through the Vault.
GitHub Releases¶
Also recommended — keeps your source available and provides a version history:
- Create a GitHub repository for your mod
- Push your source code
- Go to Releases > Create new release
- Tag with version number (v1.0.0)
- Upload your zip file
- Write release notes
Terraria Forums¶
Post in the Terraria Community Forums: - Include clear description - Screenshots if applicable - Link to download - Installation instructions
Discord¶
Share in Terraria modding Discord servers: - Provide direct download link - Explain what it does - Note any requirements
Installation Instructions for Users¶
If your mod declares TerrariaModder Core in Nexus Requirements, players can install it through the TerrariaModder Vault. Premium accounts download directly; free accounts use Nexus's Manual Download / Slow Download controls in the embedded page. For fully manual installs, include this in your README:
## Installation
### Option A: TerrariaModder Vault (Recommended)
Install from the [TerrariaModder Vault](https://www.nexusmods.com/terraria/mods/159). Free Nexus accounts complete the Manual Download / Slow Download step; Premium accounts download directly.
### Option B: Manual
1. Install TerrariaModder framework (if not already installed)
2. Download `your-mod.zip`
3. Extract to `Terraria/TerrariaModder/mods/`
4. Launch game with TerrariaInjector.exe
Your folder structure should look like:
Terraria/TerrariaModder/mods/your-mod/
├── manifest.json
└── YourMod.dll
Versioning¶
Use semantic versioning: - Major (1.0.0 -> 2.0.0): Breaking changes - Minor (1.0.0 -> 1.1.0): New features, backward compatible - Patch (1.0.0 -> 1.0.1): Bug fixes
Update version in manifest.json with each release.
Updating Your Mod¶
When releasing updates:
- Increment version number appropriately
- Write changelog describing changes
- Test the update process (install over old version)
Common Issues¶
"Mod not loading"¶
Users should check: - manifest.json is valid JSON - DLL name matches manifest id - Folder is in mods/ directory - Using correct Terraria version
"Feature X doesn't work"¶
- Check if feature requires specific game state (world loaded, etc.)
- Verify keybinds aren't conflicting
- Look for errors in logs
Tips for Success¶
- Declare the Core requirement on Nexus Mods - Makes the current active main file discoverable through the TerrariaModder Vault
- Clear naming - Make it obvious what your mod does
- Good documentation - README with features, installation, keybinds
- Responsive - Answer questions, fix reported bugs
- Updates - Keep compatible with new Terraria versions
- Source available - Helps others learn and contribute