How saved designs work, what is stored, and what must be configured in 0r-clothing_designer
Saved designs are optional.
If you do not need them, turn them off:
Config.SavedDesigns.Enabled = false
If you do want them, read this page and make sure the setup guide was completed first.
1. What Must Exist Before Saved Designs Work#
All of these must be true:
Config.SavedDesigns.Enabled = true- the SQL table was imported
oxmysqlis running- a valid remote preview storage provider is configured
If one of these is missing, save and restore flows can fail.
2. What Gets Saved#
When a player saves a design, the resource stores:
- project metadata
- template metadata
- normalized workspace JSON
- a remote preview image reference
- remote image-layer asset references when needed
Each saved design is tied to the player's license identifier.
3. Why Remote Storage Is Needed#
Saved designs do not only store database rows.
The preview image and some uploaded image-layer assets are stored through a remote provider, then referenced by the saved design record.
Current providers:
discord_webhookfivemanage
4. Provider Setup#
Discord webhook#
Use this when you want preview assets uploaded to a Discord webhook destination.
Required field:
Config.SavedDesigns.Storage.DiscordWebhook.Url = ""
Optional display field:
Config.SavedDesigns.Storage.DiscordWebhook.BotName = "0Resmon Clothing Designer"
FiveManage#
Use this when you want preview assets uploaded through FiveManage.
Required field:
Config.SavedDesigns.Storage.FiveManage.ApiKey = ""
Optional path field:
Config.SavedDesigns.Storage.FiveManage.BasePath = "clothing-designer/saved-designs"
5. Choosing a Primary Provider and Fallback#
Set the main provider here:
Config.SavedDesigns.Storage.Provider = "discord_webhook"
Fallback providers are tried in order if the primary one fails:
Config.SavedDesigns.Storage.FallbackProviders = {
"fivemanage"
}
Simple rule:
- set one primary provider
- add fallback providers only if you actually want them
6. Delete Behavior#
If this setting is enabled:
Config.SavedDesigns.Storage.DeleteRemoteOnDesignDelete = true
deleting a design also queues remote cleanup for:
- the saved preview image
- remote image-layer assets referenced by that workspace
This cleanup is asynchronous, so the design delete can succeed even if remote cleanup finishes later.
7. Queue Monitoring#
The resource keeps separate upload and cleanup queues for saved design storage work.
You can inspect queue stats with:
exports["0r-clothing_designer"]:getSavedDesignStorageQueueStats()
This is useful when you want to confirm whether uploads or cleanup jobs are stuck.
8. Fast Checklist#
If saved designs do not work, check these first:
- the SQL file was imported
oxmysqlis runningConfig.SavedDesigns.Enabled = true- the selected provider credentials are valid
- the remote provider is not blocked or rate-limited
If those are correct and it still fails, continue with the troubleshooting page.