Back
modules.md
markdownwiki/modules.md
# π Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ScriptsLab
ΠΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½Π° ScriptsLab.
---
## Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ?
ΠΠΎΠ΄ΡΠ»ΠΈ Π² ScriptsLab - ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°.
### ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
| ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|--------------|----------|
| π **ΠΠΎΡΡΡΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°** | ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅/ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° |
| π¦ **ΠΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΡΡΡ** | ΠΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ
ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ
|
| π **ΠΠ·ΠΎΠ»ΡΡΠΈΡ** | ΠΠΎΠ΄ΡΠ»ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° (Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅) |
| π οΈ **Π£Π΄ΠΎΠ±ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ** | ΠΡΠΎΡΡΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΈ API |
---
## Π‘ΡΡΡΠΊΡΡΡΠ° ΠΌΠΎΠ΄ΡΠ»Ρ
```
modules/
βββ mymodule/
βββ module.yml # ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ
βββ scripts/ # Π‘ΠΊΡΠΈΠΏΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ)
βββ script.js
```
### module.yml
```yaml
# ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ
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`
**ΠΡΠΈΠΌΠ΅Ρ**:
```yaml
authors:
- MyName
- OtherAuthor
```
---
### dependencies
**ΠΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ**
**Π’ΠΈΠΏ**: `list`
**ΠΡΠΈΠΌΠ΅Ρ**:
```yaml
dependencies:
- economy
- customitems
```
---
### soft-dependencies
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅**: ΠΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ
**Π’ΠΈΠΏ**: `list`
**ΠΡΠΈΠΌΠ΅Ρ**:
```yaml
soft-dependencies:
- tokens
```
---
### load-order
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅**: ΠΠΎΡΡΠ΄ΠΎΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ
**Π’ΠΈΠΏ**: `string`
| ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|----------|-----------|
| `STARTUP` | ΠΠ°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ |
| `POSTWORLD` | ΠΠ°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΌΠΈΡΠ° |
| `LAZY` | ΠΠ°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ |
**ΠΡΠΈΠΌΠ΅Ρ**:
```yaml
load-order: STARTUP
```
---
### enabled
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅**: ΠΠΊΠ»ΡΡΡΠ½ Π»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
**Π’ΠΈΠΏ**: `boolean`
**ΠΡΠΈΠΌΠ΅Ρ**:
```yaml
enabled: true
```
---
## Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ
### ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
| ΠΠΎΠΌΠ°Π½Π΄Π° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---------|----------|
| `/module list` | Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ |
| `/module enable <name>` | ΠΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ |
| `/module disable <name>` | ΠΡΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ |
| `/module reload <name>` | ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ |
---
## ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ: Demo
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ demo:
**Π€Π°ΠΉΠ»**: `plugins/ScriptsLab/modules/demo/module.yml`
```yaml
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`:
```yaml
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`:
```yaml
modules:
enabled-modules:
- mymodule
```
### Π¨Π°Π³ 5: ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ `/module reload` ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ.
---
## ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π² config.yml
### enabled-modules
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅**: Π‘ΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ
**Π’ΠΈΠΏ**: `list`
**ΠΡΠΈΠΌΠ΅Ρ**:
```yaml
modules:
enabled-modules:
- demo
- economy
- customitems
```
---
### disabled-modules
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅**: Π‘ΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄Π»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
**Π’ΠΈΠΏ**: `list`
**ΠΡΠΈΠΌΠ΅Ρ**:
```yaml
modules:
disabled-modules:
- debug
- testmodule
```
---
### auto-load
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅**: ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅
**Π’ΠΈΠΏ**: `boolean`
**ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ**: `true`
**ΠΡΠΈΠΌΠ΅Ρ**:
```yaml
modules:
auto-load: true
```
---
## ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ
### ΠΡΡΡΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (dependencies)
ΠΠΎΠ΄ΡΠ»Ρ Π½Π΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡΡ, Π΅ΡΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π½Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π°:
```yaml
dependencies:
- economy
- tokens
```
### ΠΡΠ³ΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (soft-dependencies)
ΠΠΎΠ΄ΡΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡΡ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
```yaml
soft-dependencies:
- chat
```
---
## ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ
### 1. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ID
```yaml
id: economy # Π₯ΠΎΡΠΎΡΠΎ
id: economic # ΠΠ»ΠΎΡ
ΠΎ
id: e # ΠΠ»ΠΎΡ
ΠΎ
```
### 2. Π£ΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ Π°Π²ΡΠΎΡΠΎΠ²
```yaml
authors:
- YourName
```
### 3. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ
```yaml
description: |
ΠΠΎΠ΄ΡΠ»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠΈ.
ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² ΠΈ Π²Π°Π»ΡΡΡ.
```
### 4. ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΡΠΉΡΠ΅
```yaml
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
```
```yaml
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](script-api.md) | API Π΄Π»Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ² |
| [ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ](configuration.md) | ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ»Π°Π³ΠΈΠ½Π° |
| [ΠΡΠΈΠΌΠ΅ΡΡ](examples/) | ΠΠΎΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ |