2.4.0 • Published 1 month ago

@kp-mods/mods-settings v2.4.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 month ago

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

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:

    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:

         ```bash
         npm install -D @kp-mods/mods-settings
         ```
      2. Add types to your mod:
         Changes in `MyMod.js`:
         ```diff
          // #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.
         ```ts
         // 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:
         ```ts
         if (settings.get('isEanbled')) {
             const usefulValue = settings.get('someValueYouWillUse') * 100;
             console.log('Very useful mod here! Useful value is: ' + usefulValue);
         }
         ```
      
      Resulted `MyMod.js`:
      
      ```ts
      // #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);
      }
      ```
  • 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

2.4.0

1 month ago

2.3.5

6 months ago

2.3.4

6 months ago

2.3.3

6 months ago

2.3.2

7 months ago

2.3.1

7 months ago

2.3.0

7 months ago

2.2.3

8 months ago

2.2.2

8 months ago

2.2.1

8 months ago

2.2.0

8 months ago

2.1.2

10 months ago

2.1.1

10 months ago

2.1.0

10 months ago

2.0.0

10 months ago

1.1.5

10 months ago

1.1.4

10 months ago

1.1.3

10 months ago

1.1.2

10 months ago

1.1.1

10 months ago

1.1.0

10 months ago

1.0.5

10 months ago

1.0.4

10 months ago

1.0.3

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago