Modpack Developer Tips
Last updated on 18th August 2017.
Due to the amount of content, granularity of content Charset provides, as well as my hesitancy to keep ideas which don't meet my standards around for very long, a fairly complex (relative to other mods) configuration system had to be built to faciliate all of this while not harming the experience for modpack developers and end users.
Charset's module configuration system is based around profiles. These provide a sane set of default settings for modpacks. There are four profiles:
- STABLE - This is the default one and the one you should probably be using in production. Features in this one are very unlikely to get removed, at least within the scope of a Minecraft version, and they have also received a fair amount of testing and refinement.
- TESTING - This is the setting I encourage for environments which can deal with content disappearing - including production ones, if any exist. However, the primary environments I foresee using this setting are "Unstable" modpacks, smaller private servers or players who like having access to more experimental features. Features in this one are generally usable, but more bugs may appear and the features may be removed at any time.
- UNSTABLE - Anything which compiles and has a minimum viable set of functionality goes in here. If you want everything, you can use this, but you probably shouldn't be using this in any environment in which world breakage could cause problems.
- VERY_UNSTABLE - Only accessible from a development environment; includes features which are unfinished and/or broken.
The difference between TESTING and UNSTABLE really comes down to the level of initial testing/refinement a feature has received - UNSTABLE is far more likely to include features I consider unpolished. Which one you choose is up to you.
By the way - If you're unsure which profile to pick, you can always ask me!
But wait - there's more! There's also a category system. Certain modules have categories for them, such as "overhaul" - if you know your modpack doesn't want a specific type of content, you can disable the category to make sure it won't appear in the pack with future updates!
In addition, you can manually force each module to be enabled or disabled in the "overrides" list - this is especially important as a few "niche" modules are off by default. They are marked as such, but their profile is still visible. The default setting for each override is DEFAULT, which means that Charset will decide whether or not to load the module itself, based on your profile configuration and whether the dependencies for a given module are present.
Another important configuration file is module/lib.cfg. It contains the functionalityRegistry, allowing you to whitelist and/or blacklist certain blocks or tile entities from given functionality.
The format for entries is "[functionality]:[registry name]", for example "carry:minecraft:stone". You may also use "carry:minecraft:*" to list an entire mod ID at a time, though I urge you to use this sparingly and with caution.
Available functionalities (DevTips also contains a list):
- carry: Allow a block to be carried by shift-middleclicking it.
- doubleDoor: Allow a given door to be used by the double door tweak.
- lock: Allow a given tile entity to be locked. (Tile entity registry name required)