Система модулей 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
Модуль не загружается
- Проверьте синтаксис
module.yml - Проверьте зависимости
- Проверьте
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 API | API для скриптов |
| Конфигурация | Настройка плагина |
| Примеры | Готовые примеры |
🔌 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
| Advantage | Description |
|---|---|
| 🔄 Hot Loading | Enable/disable without server restart |
| 📦 Reusability | One module can be used on different servers |
| 🔒 Isolation | Modules don't depend on each other (unless specified) |
| 🛠️ Development Convenience | Simple 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
| Value | Description |
|---|---|
STARTUP | Load on startup |
POSTWORLD | Load after world |
LAZY | Load on first use |
Example:
load-order: STARTUP
enabled
Description: Module enabled by default
Type: boolean
Example:
enabled: true
Module Management
Management Commands
| Command | Description |
|---|---|
/module list | List 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
- Check
module.ymlsyntax - Check dependencies
- 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
| Step | Description |
|---|---|
| Script API | API for scripts |
| Configuration | Plugin setup |
| Examples | Ready-made examples |