3D Packs
Contents
Overview
Models, textures and sounds are all stored in pack files, held under the wurm/packs directory. These are the material that are automatically downloaded to make Wurm look nice when you start the client. The pack file format is a JAR file which is basically a ZIP file with some extra meta-data.
Note that modifying the pack files is a bannable offense
Using Pack Files
Pack files can be opened and edited with any ZIP archive manager like WinZip, WinRAR, 7Zip, TUGZip and even the Windows XP/Windows Vista compressed folder extension.
Pack Layout
For a JAR/ZIP file to become a pack file, it needs the following mandatory descriptors in the root directory of the archive. If any of these files are not present in the correct location, the pack won't work and might even crash the client.
Although you could put all files into the root directory of a pack, it is recommended that you create different folders for at least textures, sounds, models and misc resources to keep your packs organized.
packs.txt
This file contains the "pack descriptor" which specifies an (currently unused) type, human-readable name and source URL for the pack. For example, the pack descriptor for the base pack looks like this:
type = basepack description = Official base pack url = http://www.wurmonline.com/packs/base.jar
mappings.txt
This is the "registry" of each pack where the resource names used by the client are mapped to actual files in the pack. Every resource (texture, model, sound, ...) is given a unique identifier by the game and the mappings tell the client what file to load for each identifier.
For example, "img.texture.house.wall.solid" is the unique identifier for your average solid wooden house wall; as of this writing, it maps to the file "texture/house/wood.png" in the base pack by the following mapping:
img.texture.house.wall.solid = texture/house/wood.png
Any white space before or after the identifier or file name is ignored and all paths have to be relative to the root of the pack file.
If a unique identifier is not found, the client steps back to the next broader identifier, i.e. "img.texture.house.wall.solid" becomes "img.texture.house.wall", then "img.texture.house", "img.texture" and finally "img". This stepping-back continues as long as the client has either found a resource or reached the top of this "resource chain" -- in that case it will use either a dummy texture (red X on white square) or the famous question mark bag.