# Uploading a Mod

Thunderstore requires 4 different things to upload a mod, but there are also a few best practices.

(these are all links lol, you can click them to scroll to one)

1. [#required-files](#required-files "mention")
2. [#override-folders](#override-folders "mention") (important if you want your file structure to stay the same)
3. [#making-modpacks](#making-modpacks "mention")

## Required Files <a href="#required-files" id="required-files"></a>

The three things ***required*** are&#x20;

* manifest.json
* README.md
* icon.png&#x20;

everything else is optional, even your mod.&#x20;

### manifest.json

manifest should be set up like so,&#x20;

![](https://1229800202-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQAkTlyeVttU3CJdmYk%2Fuploads%2Fh8dNoh0hYkQBZ7d40gvT%2Fimage.png?alt=media\&token=a7edd3d3-7562-42dc-8cd5-4b42b4147dac)

and can be validated by using this page.&#x20;

<https://enter-the-gungeon.thunderstore.io/tools/manifest-v1-validator/>\
\
dependencies can be found on the mods page, for example, if you were to depend on BepInEx you would grab the dependency string from its page

![](https://1229800202-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQAkTlyeVttU3CJdmYk%2Fuploads%2FurnnbVnQ3DXnwcjr0yEb%2FdependsString.png?alt=media\&token=400a891a-0989-4379-81b0-268ab8802151)

### README.md

The README.md is basically your mods' description. Use this page to view how it will look on thunderstore.

<https://enter-the-gungeon.thunderstore.io/tools/markdown-preview/>\
\
this runs off of markdown so you can have some text or embed things like gifs if you want.

### Icon.png

this icon is what is going to show up as your mod, ie. it's the picture shown here&#x20;

![](https://1229800202-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQAkTlyeVttU3CJdmYk%2Fuploads%2FjDHjiDFTpRNBMgW68BK3%2Fimage.png?alt=media\&token=c8cee373-dba2-4781-b1ef-eae550ce71a4)

and here when browsing&#x20;

![](https://1229800202-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQAkTlyeVttU3CJdmYk%2Fuploads%2FO4e748UfJs5S0acY49Ot%2Fimage.png?alt=media\&token=34dd5a88-db82-4149-ba7a-df180514b96e)

The icon ***must*** be 256 pixels by 256 pixels

## Override folders

* plugins
* monomod (`.mm.dll` will implicitly install to a subdirectory within this folder)
* patchers
* core
* config

these folders in your mod will put them in the files from your mod into the corresponding bepInEx folder when installed via the mod manager, and will also keep the file structure.&#x20;

If you dont use the override folders, and your mod looks like this

![](https://1229800202-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQAkTlyeVttU3CJdmYk%2Fuploads%2FCgT4yprQL0g7HHJvfwsu%2Fimage.png?alt=media\&token=0fce59df-d20c-474d-8cfb-b5910c79f7ed)

And its installed by the mod manager, it will look like this in the plugins folder

![](https://1229800202-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQAkTlyeVttU3CJdmYk%2Fuploads%2FxoMKDGVMzJRPlW1fU376%2Fimage.png?alt=media\&token=52315c56-9d4a-438f-8c38-b06e142f367f)

However, if the mod went plugins/all the files then all the stuff like sprites etc. would have come out the same.&#x20;

## Making Modpacks

Making a modpack is pretty simple in thunderstore, you don't need to put the files from every mod you want when you upload, but rather, in your manifest.json, just add the dependency string of all the mods you want and they will automatically be downloaded when a user downloads with dependencies.
