> For the complete documentation index, see [llms.txt](https://wiki.thunderstore.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.thunderstore.io/mods/packaging-your-mods.md).

# Packaging Your Mods

When a mod is installed with Thunderstore Mod Manager, the files might not be copied as-is into the profile folder. For example files placed in subfolders might end up getting copied to the root folder. How exactly the files are copied depends on the mod loader used by the game.

## BepInEx Games

**Folders**

The Thunderstore Mod Manager will empty the contents of folders in your package's .zip file unless they are inside specifically named folders. The name of the folder decides where the file will be extracted to. Here are the common folder routes in most games that use BepInEx for modding (the BepInEx folder can be omitted):

* BepInEx/plugins
* BepInEx/core
* BepInEx/patchers
* BepInEx/monomod
* BepInEx/config

For a full list of install rules for each game, check the [ecosystem-schema](https://github.com/thunderstore-io/ecosystem-schema/tree/master/games/data)

<figure><img src="/files/G0rfAwV21D3nqzDzvDE2" alt=""><figcaption><p>An example of a Thunderstore package having its folder emptied into the root of the package folder</p></figcaption></figure>

<figure><img src="/files/LKzdYA9sgRfVojG5ZNQF" alt=""><figcaption><p>An example of the Thunderstore package having its folder preserved</p></figcaption></figure>

## MelonLoader Games

{% hint style="danger" %}
For **Backpack Hero, BONELAB, BONEWORKS, HardBullet, Patch Quest, and RUMBLE** refer to <https://github.com/ebkr/r2modmanPlus/wiki/Structuring-your-Thunderstore-package#melonloader-legacy-support>
{% endhint %}

{% hint style="warning" %}
This guide is intended only for games using MelonLoader v0.7.0 or higher.
{% endhint %}

**Folders in a package's zip**

* Place the required files (manifest.json, icon.png, and README.md) at the root of the zip
* Place **regular mod dlls** either at the root of the zip or in a *Mods* subfolder
* Place **MelonLoader plugins** in a *Plugins* subfolder
* Place **external libraries** in a *UserLibs* subfolder
* Place **data files** in a *UserData* subfolder

**Folders when installed to a profile**

* Thunderstore Mod Manager will install files and folders in a package's *UserData* folder as-is to `UserData/TeamName-PackageName`
* All other files and folders will be installed as-is to `Mods/TeamName-PackageName`
  * MelonLoader will load the mods, plugins, and libraries from there as long as they're placed in proper subfolders as described above

## Other Games

* Games using [GDWeave](https://github.com/NotNite/GDWeave/blob/main/MODS.md) mod loader
* Games using [ReturnOfModding](https://github.com/xiaoxiao921/ReturnOfModdingBase?tab=readme-ov-file#creating-mods) mod loader
* Games using [Shimloader](https://pwmodding.wiki/docs/mod-publishing/packaging-your-mod#structure) mod loader

## Tips

If you still have problems getting the files into right places, you can download another package for the same game from <https://thunderstore.io/> and see how it's structured.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wiki.thunderstore.io/mods/packaging-your-mods.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
