WikiScriptingModules

Система модулей ScriptsLab


🔌 Система модулей ScriptsLab

Полное руководство по системе модулей плагина ScriptsLab.


Что такое модули?

Модули в ScriptsLab - это переиспользуемые пакеты функциональности, которые могут быть загружены или отключены независимо друг от друга.

Преимущества модулей

ПреимуществоОписание
🔄 Горячая загрузкаВключение/отключение без перезапуска сервера
📦 ПереиспользуемостьОдин модуль может использоваться на разных серверах
🔒 ИзоляцияМодули не зависят друг от друга (если не указано иное)
🛠️ Удобство разработкиПростая структура и API

Структура модуля

modules/
└── mymodule/
    ├── module.yml       # Конфигурация модуля
    └── scripts/         # Скрипты модуля (опционально)
        └── script.js

module.yml

# Конфигурация модуля
id: mymodule
name: My Module
version: 1.0.0
description: My custom module
authors:
  - MyName

# Зависимости
dependencies: []
soft-dependencies: []

# Порядок загрузки: STARTUP, POSTWORLD, или LAZY
load-order: STARTUP

# Включён по умолчанию
enabled: true

Параметры module.yml

id

Описание: Уникальный идентификатор модуля

Тип: string

Пример: id: economy


name

Описание: Отображаемое имя модуля

Тип: string

Пример: name: Economy System


version

Описание: Версия модуля

Тип: string

Пример: version: 1.0.0


description

Описание: Описание модуля

Тип: string

Пример: description: Система экономики


authors

Описание: Авторы модуля

Тип: list

Пример:

authors:
  - MyName
  - OtherAuthor

dependencies

Описок модулей, которые должны быть загружены перед этим модулем

Тип: list

Пример:

dependencies:
  - economy
  - customitems

soft-dependencies

Описание: Модули, которые рекомендуется загрузить

Тип: list

Пример:

soft-dependencies:
  - tokens

load-order

Описание: Порядок загрузки модуля

Тип: string

ЗначениеОписание
STARTUPЗагружается при старте
POSTWORLDЗагружается после мира
LAZYЗагружается при первом использовании

Пример:

load-order: STARTUP

enabled

Описание: Включён ли модуль по умолчанию

Тип: boolean

Пример:

enabled: true

Управление модулями

Команды управления

КомандаОписание
/module listСписок всех модулей
/module enable <name>Включить модуль
/module disable <name>Выключить модуль
/module reload <name>Перезагрузить модуль

Пример модуля: Demo

Посмотрим на пример модуля demo:

Файл: plugins/ScriptsLab/modules/demo/module.yml

id: demo
name: Demo Module
version: 1.0.0
description: Demonstration module showcasing framework capabilities
authors:
  - Framework Team

dependencies: []
soft-dependencies: []

load-order: STARTUP

enabled: true

Создание своего модуля

Шаг 1: Создайте папку

Создайте папку plugins/ScriptsLab/modules/mymodule/

Шаг 2: Создайте module.yml

Создайте файл module.yml:

id: mymodule
name: My Module
version: 1.0.0
description: Description of my module
authors:
  - YourName

load-order: STARTUP
enabled: true

Шаг 3: Добавьте скрипты (опционально)

Создайте папку scripts/ и добавьте скрипты.

Шаг 4: Включите модуль

Добавьте модуль в config.yml:

modules:
  enabled-modules:
    - mymodule

Шаг 5: Перезагрузите

Выполните /module reload или перезапустите сервер.


Конфигурация модулей в config.yml

enabled-modules

Описание: Список модулей для загрузки

Тип: list

Пример:

modules:
  enabled-modules:
    - demo
    - economy
    - customitems

disabled-modules

Описание: Список модулей для отключения

Тип: list

Пример:

modules:
  disabled-modules:
    - debug
    - testmodule

auto-load

Описание: Автоматическая загрузка модулей при старте

Тип: boolean

По умолчанию: true

Пример:

modules:
  auto-load: true

Зависимости между модулями

Жёсткие зависимости (dependencies)

Модуль не загрузится, если зависимость не загружена:

dependencies:
  - economy
  - tokens

Мягкие зависимости (soft-dependencies)

Модуль загрузится, но может использовать функции зависимости:

soft-dependencies:
  - chat

Лучшие практики

1. Используйте понятные ID

id: economy        # Хорошо
id: economic     # Плохо
id: e            # Плохо

2. Указывайте авторов

authors:
  - YourName

3. Документируйте модуль

description: |
  Модуль экономики.
  Предоставляет систему магазинов и валюты.

4. Версионируйте

version: 1.0.0

Troubleshooting

Модуль не загружается

  1. Проверьте синтаксис module.yml
  2. Проверьте зависимости
  3. Проверьте config.yml

Ошибка зависимостей

[ScriptsLab] Module 'mymodule' requires 'othermodule' which is not loaded

Решение: Добавьте зависимый модуль в enabled-modules.

Конфликт имён

[ScriptsLab] Module with ID 'mymodule' already exists

Решение: Измените ID модуля.


Структура файлов модуля

mymodule/
├── module.yml           # Обязательно
├── scripts/             # Опционально
│   ├── main.js
│   ├── commands.js
│   └── events.js
├── config/              # Опционально
│   └── settings.yml
└── locale/              # Опционально
    └── messages.yml

Примеры модулей

Минимальный модуль

mymodule/
└── module.yml
id: mymodule
name: My Module
version: 1.0.0
description: Example module
authors:
  - Author

enabled: true

Полный модуль

mymodule/
├── module.yml
├── scripts/
│   ├── main.js
│   └── events.js
└── config/
    └── settings.yml

Следующие шаги

ШагОписание
Script APIAPI для скриптов
КонфигурацияНастройка плагина
ПримерыГотовые примеры

🔌 ScriptsLab Module System (English)

Complete guide to ScriptsLab module system.


What are Modules?

Modules in ScriptsLab are reusable functionality packages that can be loaded or disabled independently from each other.

Module Advantages

AdvantageDescription
🔄 Hot LoadingEnable/disable without server restart
📦 ReusabilityOne module can be used on different servers
🔒 IsolationModules don't depend on each other (unless specified)
🛠️ Development ConvenienceSimple structure and API

Module Structure

modules/
└── mymodule/
    ├── module.yml       # Module configuration
    └── scripts/         # Module scripts (optional)
        └── script.js

module.yml

# Module configuration
id: mymodule
name: My Module
version: 1.0.0
description: My custom module
authors:
  - MyName

# Dependencies
dependencies: []
soft-dependencies: []

# Load order: STARTUP, POSTWORLD, or LAZY
load-order: STARTUP

# Enabled by default
enabled: true

module.yml Parameters

id

Description: Unique module identifier

Type: string

Example: id: economy


name

Description: Display name of module

Type: string

Example: name: Economy System


version

Description: Module version

Type: string

Example: version: 1.0.0


description

Description: Module description

Type: string

Example: description: Economy system


authors

Description: Module authors

Type: list

Example:

authors:
  - MyName
  - OtherAuthor

dependencies

Description: Modules that must be loaded before this module

Type: list

Example:

dependencies:
  - economy
  - customitems

soft-dependencies

Description: Recommended modules to load

Type: list

Example:

soft-dependencies:
  - tokens

load-order

Description: Module load order

Type: string

ValueDescription
STARTUPLoad on startup
POSTWORLDLoad after world
LAZYLoad on first use

Example:

load-order: STARTUP

enabled

Description: Module enabled by default

Type: boolean

Example:

enabled: true

Module Management

Management Commands

CommandDescription
/module listList all modules
/module enable <name>Enable module
/module disable <name>Disable module
/module reload <name>Reload module

Example Module: Demo

Let's look at the demo module example:

File: plugins/ScriptsLab/modules/demo/module.yml

id: demo
name: Demo Module
version: 1.0.0
description: Demonstration module showcasing framework capabilities
authors:
  - Framework Team

dependencies: []
soft-dependencies: []

load-order: STARTUP

enabled: true

Creating Your Own Module

Step 1: Create Folder

Create folder plugins/ScriptsLab/modules/mymodule/

Step 2: Create module.yml

Create module.yml file:

id: mymodule
name: My Module
version: 1.0.0
description: Description of my module
authors:
  - YourName

load-order: STARTUP
enabled: true

Step 3: Add Scripts (Optional)

Create scripts/ folder and add scripts.

Step 4: Enable Module

Add module to config.yml:

modules:
  enabled-modules:
    - mymodule

Step 5: Reload

Execute /module reload or restart server.


Module Configuration in config.yml

enabled-modules

Description: List of modules to load

Type: list

Example:

modules:
  enabled-modules:
    - demo
    - economy
    - customitems

disabled-modules

Description: List of modules to disable

Type: list

Example:

modules:
  disabled-modules:
    - debug
    - testmodule

auto-load

Description: Auto-load modules on startup

Type: boolean

Default: true

Example:

modules:
  auto-load: true

Module Dependencies

Hard Dependencies (dependencies)

Module won't load if dependency is not loaded:

dependencies:
  - economy
  - tokens

Soft Dependencies (soft-dependencies)

Module will load but can use dependency functions:

soft-dependencies:
  - chat

Best Practices

1. Use Clear IDs

id: economy        # Good
id: economic     # Bad
id: e            # Bad

2. Specify Authors

authors:
  - YourName

3. Document Module

description: |
  Economy module.
  Provides shop and currency systems.

4. Versioning

version: 1.0.0

Troubleshooting

Module Not Loading

  1. Check module.yml syntax
  2. Check dependencies
  3. Check config.yml

Dependency Error

[ScriptsLab] Module 'mymodule' requires 'othermodule' which is not loaded

Solution: Add dependent module to enabled-modules.

Name Conflict

[ScriptsLab] Module with ID 'mymodule' already exists

Solution: Change module ID.


Module File Structure

mymodule/
├── module.yml           # Required
├── scripts/             # Optional
│   ├── main.js
│   ├── commands.js
│   └── events.js
├── config/              # Optional
│   └── settings.yml
└── locale/              # Optional
    └── messages.yml

Module Examples

Minimal Module

mymodule/
└── module.yml
id: mymodule
name: My Module
version: 1.0.0
description: Example module
authors:
  - Author

enabled: true

Full Module

mymodule/
├── module.yml
├── scripts/
│   ├── main.js
│   └── events.js
└── config/
    └── settings.yml

Next Steps

StepDescription
Script APIAPI for scripts
ConfigurationPlugin setup
ExamplesReady-made examples

Last updated Apr 29, 2026, 6:41 AM
Edit