@kp-mods/mods-settings
v3.2.0
Published
[![pipeline status](https://gitgud.io/karryn-prison-mods/mods-settings/badges/master/pipeline.svg?ignore_skipped=true)](https://gitgud.io/karryn-prison-mods/mods-settings/-/commits/master) [![Latest Release](https://gitgud.io/karryn-prison-mods/mods-setti
Downloads
42
Readme
Mods Settings
[TOC]
Description
Adds menu with settings to configure mods.
Download
Download the latest version of the mod.
Installation
Preview
For mod creators
How to add settings to your mod
Let's take mod MyMod.js
as an example:
// #MODS TXT LINES:
// {"name":"MyMod","status":true,"description":"","parameters":{}}
// #MODS TXT LINES END
console.log('Very useful mod here!');
There are two ways to register settings:
Register settings using global library
To add settings to the mod perform following steps:
Add dependency to your mod's declarations (at the beginning). It will ensure that
ModsSettings
loaded beforeMyMod
. Changes inMyMod.js
:// #MODS TXT LINES: +// {"name":"ModsSettings","status":true,"parameters":{}} // {"name":"MyMod","status":true,"description":"","parameters":{}} // #MODS TXT LINES END
Optional. Install and use types if you want to operate with strongly typed settings.
- Install types:
npm install -D @kp-mods/mods-settings
- Add types to your mod:
Changes in
MyMod.js
:// #MODS TXT LINES: // {"name":"ModsSettings","status":true,"parameters":{}} // {"name":"MyMod","status":true,"description":"","parameters":{}} // #MODS TXT LINES END +/// <reference types="@kp-mods/mods-settings" /> console.log('Very useful mod here!');
- Register settings. Intelli-sense will help you if you didn't skip step 2.
After this step specified settings will be available in mods menu.
// Name of the mod must be the same as js filename. const settings = ModsSettings.forMod('MyMod') .addSettings({ // Adds ON/OFF setting with description isEnabled: { type: 'bool', defaultValue: true, description: { title: 'Is Enabled', help: 'Enables mod' } }, // Adds value gauge with range from 0 to 1 and step of 0.1 (without description) someValueYouWillUse: { type: 'volume', defaultValue: 1, step: 0.1, minValue: 0, maxValue: 1 } }) .register();
- Use settings:
if (settings.get('isEnabled')) { const usefulValue = settings.get('someValueYouWillUse') * 100; console.log('Very useful mod here! Useful value is: ' + usefulValue); }
Resulted
MyMod.js
:// #MODS TXT LINES: // {"name":"ModsSettings","status":true,"parameters":{}} // {"name":"MyMod","status":true,"description":"","parameters":{}} // #MODS TXT LINES END /// <reference types="@kp-mods/mods-settings" /> // Register settings. const settings = ModsSettings.forMod('MyMod') .addSettings({ isEnabled: { type: 'bool', defaultValue: true, description: { title: 'Is Enabled', help: 'Enables mod' } }, someValueYouWillUse: { type: 'volume', defaultValue: 1, step: 0.1, minValue: 0, maxValue: 1 } }) .register(); // Use settings if (settings.get('isEnabled')) { const usefulValue = settings.get('someValueYouWillUse') * 100; console.log('Very useful mod here! Useful value is: ' + usefulValue); }
- Install types:
Register settings using a module
Alternatively, you can import the library as module, if you use bundler (e.g. webpack):
- Add dependency to your mod's declarations (at the beginning).
It will ensure that
ModsSettings
loaded beforeMyMod
. Changes inMyMod.js
:// #MODS TXT LINES: +// {"name":"ModsSettings","status":true,"parameters":{}} // {"name":"MyMod","status":true,"description":"","parameters":{}} // #MODS TXT LINES END
- Install library
@kp-mods/mods-settings
npm install @kp-mods/mods-settings
- Register settings. After this step specified settings will be available in mods menu.
import {registerMod} from '@kp-mods/mods-settings'; // or if you use don't use typescript: // const {registerMod} = require('@kp-mods/mods-settings'); // Name of the mod must be the same as js filename. const settings = ModsSettings.forMod('MyMod') .addSettings({ // Adds ON/OFF setting with description isEnabled: { type: 'bool', defaultValue: true, description: { title: 'Is Enabled', help: 'Enables mod' } }, // Adds value gauge with range from 0 to 1 and step of 0.1 (without description) someValueYouWillUse: { type: 'volume', defaultValue: 1, step: 0.1, minValue: 0, maxValue: 1 } }) .register();
- Use settings:
if (settings.get('isEnabled')) { const usefulValue = settings.get('someValueYouWillUse') * 100; console.log('Very useful mod here! Useful value is: ' + usefulValue); }
Resulted
MyMod.js
:// #MODS TXT LINES: // {"name":"ModsSettings","status":true,"parameters":{}} // {"name":"MyMod","status":true,"description":"","parameters":{}} // #MODS TXT LINES END import {registerMod} from '@kp-mods/mods-settings'; // or if you use don't use typescript: // const {registerMod} = require('@kp-mods/mods-settings'); // Register settings. const settings = ModsSettings.forMod('MyMod') .addSettings({ isEnabled: { type: 'bool', defaultValue: true, description: { title: 'Is Enabled', help: 'Enables mod' } }, someValueYouWillUse: { type: 'volume', defaultValue: 1, step: 0.1, minValue: 0, maxValue: 1 } }) .register(); // Use settings if (settings.get('isEnabled')) { const usefulValue = settings.get('someValueYouWillUse') * 100; console.log('Very useful mod here! Useful value is: ' + usefulValue); }
- Add dependency to your mod's declarations (at the beginning).
It will ensure that