Originating from Heroes of the Storm (CASC '1.0'), the Content Addressable Storage Container is a new file system for WoW, introduced in Warlords of Draenor as a replacement for MPQ archives (CASC '2.0'). As such, it needs to be worked with in order to use custom game files in WoD, Legion, and BfA. CASCHost is a tool for just that.
Tools and resources
- CASCHost itself
- Patched WoW.exe
- This file might be in your WoW folder - if it is, use that file for CASCHost as will be described below, and temporarily remove it from your client. While this file is in the same folder as WoW.exe, the latter will ignore your custom CASC and only download files from Blizzard servers.
- Alternatively, you can always get one here. Make sure to choose the correct version.
Download CASCHost from the link above (either the pre-built version, or clone it from GitHub and build yourself).
- If you build the program yourself, you will need to manually create some of the folders I talk about below.
- Place your .build.info in CASCHost folder/wwwroot/SystemFiles/.
- Place your custom files in CASCHost folder/wwwroot/Data/ with the correct structure (e.g. wwwroot/Data/Character/Human/...).
Open the file CASCHost folder/appsettings.json to edit:
- RebuildPassword - use this field if you would like CASCHost to require a password when issuing rebuild commands from a browser.
HostDomain - your server domain in the form domain:port. IP addresses are not supported, apparently.
- Leave as "localhost:5100" to use the pre-patched WoW.exe.
- SqlConnection - the IP address of your SQL server, the username and password (typically, trinity/trinity), and the name for the database CASCHost should use. Sometimes you might need to create the database yourself instead of letting CASCHost do it.
- Locale - the localisation of your server and client(s), e.g. enUS, deDE, enGB, ruRU, etc.
- (Optional) To publicly host your custom files for other players to download, open the file CASCHost folder/hosting.json, and add your domain:port to the urls list.
- Apply the TrinityCore Connection Patcher to your WoW.exe.
- Open this WoW.exe in 010 Editor.
Search (Ctrl+F) for 'trinity'. The first occurence should look like this:
Place your cursor before 'trinity' in the column on the right, as shown on the screenshot, and type your domain, a semicolon, and port (same as the HostDomain in CASCHost settings). Add to that '/versions'. The result should look like:
The colouring conveniently indicates where the string you just typed ends. Now go to the respective location in the left column (in the case of this screenshot, it is right before 2F). Then just type 0s until you get to the already present 00s like this:
Move to the string below and perform the same algorithm to type up 'yourdomain:port/cdns' and remove the extra characters:
- Save the executable and close 010 Editor.
You can now run Start.bat from your CASCHost folder and, once that loads, start WoW.exe. The client should begin downloading the files you placed in CASCHost folder/wwwroot/Data/ (don't worry, it will download whatever it needs from Blizzard servers as well, but your files have priority).
While CASCHost is running, you may add/edit/remove files in the Data folder. In order for the changes to take effect, you must open your browser and go to http://yourdomain:port/rebuild
- In the default case, it will be http://localhost:5100/rebuild
- If you have set up a rebuild password in CASCHost settings, you will need to go to http://yourdomain:port/rebuild_yourpassword
- To stop CASCHost, press Ctrl+C in the window, and choose Y.
For all of your CASCHost troubles (a file not appearing/updating/being removed, etc.), there is a simple algorithm: try the first step, move to 2 if it doesn't help. It might sometimes be helpful to clear the client cache between steps.
- Stop CASCHost and run it again.
- Stop CASCHost, delete the Output folder (in wwwroot/), and run it again. This might take some time if there are a lot of files.
- Stop CASCHost, delete the Output folder, open the CASCHost database with your SQL editor of choice and delete the root_entries table (Warning: this will lead to all of your custom FileDataIDs being jumbled up!), run it again.
- Complain on Discord.
- Create an issue on GitHub.
I am hoping this guide will answer most questions and resolve most problems people have when introducing themselves to CASCHost. As a semi-experienced user myself, I might have made some mistakes while writing it, and so will welcome any constructive criticism.