CustomTextureReplacer
Swap any texture in TCG Card Shop Simulator at runtime with folder watching, automatic resizing, and texture dump tooling.
By Duckieray
| Date uploaded | 9 months ago |
| Version | 1.4.0 |
| Download link | Duckieray-CustomTextureReplacer-1.4.0.zip |
| Downloads | 71 |
| Dependency string | Duckieray-CustomTextureReplacer-1.4.0 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
Custom Texture Replacer
Custom Texture Replacer lets you swap any in-game texture in TCG Card Shop Simulator at runtime. Drop your own PNG assets in the BepInEx/plugins/CustomTextures folder and the plugin will discover, resize if needed, and inject them without restarting the game. It is fully compatible with Thunderstore Mod Manager and r2modman.
Features
- Watches
BepInEx/plugins/CustomTexturesfor new or updated.pngfiles and reapplies changes automatically. - Maintains
BepInEx/plugins/TexturesList.txt, a living index of every texture name and resolution discovered in the current session. - Hooks into Unity asset loading so replacements stay applied across scene loads, asset bundle fetches, and dynamically created sprites.
- Falls back to automatic RenderTexture-based resizing when a replacement PNG does not match the original dimensions (matching resolutions still gives the best results).
- Ships with optional debug logging (
BepInEx/plugins/CustomTextureReplacer.debug.log) for troubleshooting texture discovery and swap events.
Requirements
- TCG Card Shop Simulator (latest Steam build).
- BepInEx 5.4+ (Mono) installed for the game.
- Windows has been tested; other OS targets should work so long as BepInEx 5 is available.
Installation
Thunderstore Mod Manager / r2modman
- Open your manager, select TCG Card Shop Simulator, and browse the Thunderstore listing.
- Locate Custom Texture Replacer and press Download (Latest).
- Launch the profile; the plugin is enabled automatically on the next game start.
Manual installation
- Download the release zip and extract it into the game directory so that
CustomTextureReplacer.dllends up inBepInEx/plugins/CustomTextureReplacer. - Ensure the folder structure looks like:
TCG Card Shop Simulator/ BepInEx/ plugins/ CustomTextureReplacer/ CustomTextureReplacer.dll - Start the game once to allow the plugin to create its working folders and configuration file.
Usage
Dump available texture names
- On first launch the plugin creates
BepInEx/plugins/TexturesList.txt, containing every discovered texture name and resolution. - Press
F8in-game or create an emptyBepInEx/plugins/CustomTextures.dump.nowfile to regenerate the list at any time.
Replace textures
- Open
BepInEx/plugins/TexturesList.txtand locate the texture you want to override. - Create a PNG that matches the entry (the file name should be identical to the texture name; extension must be
.png). Matching the resolution listed is strongly recommended. - Place the PNG in
BepInEx/plugins/CustomTextures. - The plugin detects changes automatically and reapplies replacements on the fly. You can also force a refresh by creating
BepInEx/plugins/CustomTextures.refresh.now.
Tip: When the replacement PNG resolution differs, the plugin attempts a RenderTexture resize so the swap still succeeds. For best quality, export PNGs at the exact dimensions shown in
TexturesList.txt.
Debugging and logs
- Runtime status messages are written to
BepInEx/LogOutput.logand toBepInEx/plugins/CustomTextureReplacer.debug.log. - Enable verbose discovery output by toggling the debug settings described below.
Configuration
Edit BepInEx/config/com.duckieray.cardshop.customtextures.cfg after the first run:
| Setting | Default | Description |
|---|---|---|
LogNewTextureNames |
true |
Logs the names and resolutions of textures discovered during runtime scans. |
LogAssetLoads |
true |
Logs when Unity Resources or AssetBundle APIs load textures or sprites, useful for tracking dynamic assets. |
Changes take effect immediately; you do not need to restart the game.
Optional tools
CustomTextureReplacer/replace.pyis a cross-platform helper that batch-copies images from any folder intoCustomTextures, renaming them to match entries inTexturesList.txt. It solves the repetitive work of matching filenames and supports both Windows and Linux installs.- Place your replacement art in a source folder and run
python replace.py <source_folder>from insideCustomTextureReplacer/. - The script locates
TexturesList.txt, filters textures by size (default819x1024), shuffles your images, and drops them intoBepInEx/plugins/CustomTextureswith the correct names. - Use
--size WIDTHxHEIGHT,--dump path/to/TexturesList.txt, or--output path/to/CustomTexturesto override defaults. Add--seed <number>for reproducible shuffles. - Running the script with no arguments prints a help summary that documents every option, making it easy to integrate into your art workflow.
- Place your replacement art in a source folder and run
Troubleshooting
- Nothing changes - Double-check the PNG file name (case-insensitive) matches the entry in
TexturesList.txtand that the file lives directly insideBepInEx/plugins/CustomTextures. - Blurred or stretched textures - Export replacement art at the exact resolution reported in
TexturesList.txtto avoid relying on the automatic resize. - Performance hiccups - Large-scale swaps can be intensive the first time they apply. After the initial pass, only modified textures are reprocessed.
- Still stuck? - Inspect
BepInEx/plugins/CustomTextureReplacer.debug.logandBepInEx/LogOutput.logfor warnings; attach them when reporting issues.
Changelog
1.4.1
- Added runtime override support for compressed textures and SpriteAtlas entries so posters, UI icons, and other DXT assets can be overridden without visual glitches.
- Apply overrides to materials, renderer property blocks, sprite renderers, and UI images only when assets change, eliminating runaway memory growth and stabilising frame times.
- Export command now favours override textures, guaranteeing
CustomTextures.extract.*.nowdumps the actual in-game artwork. - Improved diagnostics around fallback copies and override creation to simplify troubleshooting.
- Skips scanning generated override assets during texture discovery to avoid redundant refresh loops.
1.4.0
- Initial Thunderstore release featuring automatic folder watching, texture dumps, runtime refresh triggers, and optional debug logging.
Credits
- Plugin author: Duckieray
- Powered by BepInEx and Harmony