@kp-mods/mods-settings
TypeScript icon, indicating that this package has built-in type declarations

2.4.0 • Public • Published

Mods Settings

pipeline status Latest Release Discord server

[TOC]

Description

Adds menu with settings to configure mods.

Download

Download the latest version of the mod.

Installation

Use this installation guide.

Preview

settings

mods-menu

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:

  • By using global library (click me!)

    Register settings using global library

    To add settings to the mod perform following steps:

    1. Add dependency to your mod's declarations (at the beginning). It will ensure that ModsSettings loaded before MyMod. Changes in MyMod.js:

       // #MODS TXT LINES:
      +// {"name":"ModsSettings","status":true,"parameters":{}}
       // {"name":"MyMod","status":true,"description":"","parameters":{}}
       // #MODS TXT LINES END
    2. Optional. Install and use types if you want to operate with strongly typed settings.

      1. Install types:
        npm install -D @kp-mods/mods-settings
      2. 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!');
      3. 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();
      4. Use settings:
        if (settings.get('isEanbled')) {
            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);
      }
  • By bundling with a module (click me!)

    Register settings using a module

    Alternatively, you can import the library as module, if you use bundler (e.g. webpack):

    1. Add dependency to your mod's declarations (at the beginning). It will ensure that ModsSettings loaded before MyMod. Changes in MyMod.js:
       // #MODS TXT LINES:
      +// {"name":"ModsSettings","status":true,"parameters":{}}
       // {"name":"MyMod","status":true,"description":"","parameters":{}}
       // #MODS TXT LINES END
    2. Install library @kp-mods/mods-settings
      npm install @kp-mods/mods-settings
    3. 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();
    4. Use settings:
      if (settings.get('isEanbled')) {
          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);
    }

Links

Discord server

Readme

Keywords

none

Package Sidebar

Install

npm i @kp-mods/mods-settings

Weekly Downloads

0

Version

2.4.0

License

MIT

Unpacked Size

38.7 kB

Total Files

26

Last publish

Collaborators

  • madtisa