WikiSupport

Часто задаваемые вопросы (FAQ)


❓ Часто задаваемые вопросы (FAQ)

Ответы на самые популярные вопросы о ScriptsLab.


Общие вопросы

Что такое ScriptsLab?

ScriptsLab - это плагин-фреймворк для Paper/Spigot серверов, который позволяет создавать кастомный контент с помощью JavaScript. Работает на движке GraalVM.

Какие версии Minecraft поддерживаются?

ВерсияСтатус
1.20.4✅ Поддерживается
1.21+✅ Поддерживается
1.19 и ниже❌ Не поддерживается

Какие серверные типы поддерживаются?

  • Paper (рекомендуется)
  • Spigot
  • Pufferfish

Важно: CraftBukkit не поддерживается!


Установка

Какие системные требования?

ТребованиеМинимумРекомендуется
Java1717 LTS
RAM2GB4GB+
CPU1 ядро2+ ядра

Как установить плагин?

  1. Скачайте ScriptsLab-1.0.0.jar
  2. Поместите в папку plugins/
  3. Перезапустите сервер
  4. Готово!

Нужно ли пересобирать плагин из исходников?

Нет, готовый JAR уже включает GraalVM. Просто скачайте и используйте.


Скрипты

Где хранятся скрипты?

plugins/ScriptsLab/scripts/
├── hello.js
├── examples/
└── ...

Как создать свой первый скрипт?

  1. Создайте файл в папке scripts/
  2. Напишите код на JavaScript
  3. Выполните /script reload
  4. Используйте команду!

Пример:

Commands.register('hello', function(sender, args) {
    sender.sendMessage('§aПривет!');
});

Как перезагрузить скрипты?

/script reload

Поддерживается ли автоперезагрузка?

Да! Включите в config.yml:

scripts:
  auto-reload: true

Какие ограничения у скриптов?

ОграничениеЗначение
Таймаут5 секунд (настраивается)
Память128MB (настраивается)
ПесочницаОграниченный доступ

API

Какие объекты API доступны?

ОбъектОписание
ConsoleЛогирование
CommandsКоманды
EventsСобытия
SchedulerЗадачи
PlayersИгроки
ServerСервер
WorldМиры
ItemsПредметы
StorageХранилище

Можно ли использовать Java классы?

Да! ScriptsLab позволяет использовать Java:

var Material = Java.type('org.bukkit.Material');
var ItemStack = Java.type('org.bukkit.inventory.ItemStack');

Команды

Как зарегистрировать команду?

Commands.register('имя', function(sender, args) {
    // код
}, 'право');

Как проверить, что отправитель - игрок?

if (!sender.isPlayer()) {
    sender.sendMessage('§cТолько для игроков!');
    return;
}

События

Как обработать событие?

Events.on('PlayerJoinEvent', function(event) {
    var player = event.getPlayer();
    player.sendMessage('§aДобро пожаловать!');
});

Какие события доступны?

  • PlayerJoinEvent - вход
  • PlayerQuitEvent - выход
  • PlayerChatEvent - чат
  • PlayerDeathEvent - смерть
  • EntityDamageByEntityEvent - атака
  • И многие другие...

Предметы

Как создать кастомный предмет?

var item = new ItemStack(Material.DIAMOND_SWORD);
var meta = item.getItemMeta();
meta.setDisplayName('§cМой меч');
item.setItemMeta(meta);
player.getInventory().addItem(item);

Хранилище

Как сохранить данные?

Storage.save('ключ', значение);

Как загрузить данные?

Storage.load('ключ').then(function(значение) {
    Console.log(значение);
});

Модули

Как создать модуль?

  1. Создайте папку plugins/ScriptsLab/modules/моймодуль/
  2. Создайте module.yml
  3. Добавьте в config.yml

Как включить/выключить модуль?

/module enable <имя>
/module disable <имя>

Безопасность

Что такое песочница (sandbox)?

Песочница ограничивает доступ скриптов к опасным операциям. Включается в config.yml:

security:
  sandbox-enabled: true

Безопасно ли использовать ScriptsLab?

Да, при правильной настройке:

  • Включите sandbox-enabled на публичных серверах
  • Ограничьте права игроков
  • Регулярно обновляйте плагин

Производительность

Плагин вызывает лаги?

Проверьте:

  1. Нет ли бесконечных циклов в скриптах
  2. Достаточно ли памяти выделено
  3. Слишком ли часто выполняются задачи

Как оптимизировать?

  • Используйте Scheduler.runTimer вместо циклов
  • Не выполняйте тяжёлые операции в главном потоке
  • Ограничьте количество слушателей событий

Ошибки

"Unknown command"

Выполните /script list для проверки загрузки скриптов.

"You don't have permission"

Проверьте права в permissions.yml.

"Script execution timeout"

Увеличьте таймаут в config.yml:

scripts:
  timeout: 10000

Обновление

Как обновить плагин?

  1. Остановите сервер
  2. Замените JAR файл
  3. Запустите сервер

Нужно ли backup?

Да, сделайте backup перед обновлением:

  • Папка plugins/ScriptsLab/
  • База данных (если используется SQLite)

Разработка

Как стать beta-тестировщиком?

Следите за GitHub Releases.

Как предложить функцию?

Создайте Issue на GitHub.


Поддержка

Где получить помощь?

  • GitHub Issues: сообщить об ошибке
  • GitHub Discussions: задать вопрос

Как сообщить об ошибке?

Укажите:

  1. Версию ScriptsLab
  2. Версию сервера
  3. Версию Java
  4. Лог ошибки
  5. Шаги воспроизведения

Glossary

ТерминОпределение
GraalVMJavaScript движок
SandboxПесочница безопасности
Hot-reloadГорячая перезагрузка
APIИнтерфейс программирования

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

РазделОписание
Script APIПолный API
ПримерыГотовые примеры
TroubleshootingРешение проблем

❓ Frequently Asked Questions (English)

Answers to the most popular questions about ScriptsLab.


General Questions

What is ScriptsLab?

ScriptsLab is a plugin framework for Paper/Spigot servers that allows you to create custom content using JavaScript. Powered by GraalVM engine.

Which Minecraft versions are supported?

VersionStatus
1.20.4✅ Supported
1.21+✅ Supported
1.19 and below❌ Not supported

Which server types are supported?

  • Paper (recommended)
  • Spigot
  • Pufferfish

Important: CraftBukkit is NOT supported!


Installation

What are the system requirements?

RequirementMinimumRecommended
Java1717 LTS
RAM2GB4GB+
CPU1 core2+ cores

How to install the plugin?

  1. Download ScriptsLab-1.0.0.jar
  2. Place in plugins/ folder
  3. Restart server
  4. Done!

Do I need to rebuild from source?

No, the ready JAR already includes GraalVM. Just download and use.


Scripts

Where are scripts stored?

plugins/ScriptsLab/scripts/
├── hello.js
├── examples/
└── ...

How to create your first script?

  1. Create file in scripts/ folder
  2. Write JavaScript code
  3. Execute /script reload
  4. Use the command!

Example:

Commands.register('hello', function(sender, args) {
    sender.sendMessage('§aHello!');
});

How to reload scripts?

/script reload

Is auto-reload supported?

Yes! Enable in config.yml:

scripts:
  auto-reload: true

What are script limitations?

LimitationValue
Timeout5 seconds (configurable)
Memory128MB (configurable)
SandboxRestricted access

API

Which API objects are available?

ObjectDescription
ConsoleLogging
CommandsCommands
EventsEvents
SchedulerTasks
PlayersPlayers
ServerServer
WorldWorlds
ItemsItems
StorageStorage

Can I use Java classes?

Yes! ScriptsLab allows using Java:

var Material = Java.type('org.bukkit.Material');
var ItemStack = Java.type('org.bukkit.inventory.ItemStack');

Commands

How to register a command?

Commands.register('name', function(sender, args) {
    // code
}, 'permission');

How to check if sender is player?

if (!sender.isPlayer()) {
    sender.sendMessage('§cOnly for players!');
    return;
}

Events

How to handle an event?

Events.on('PlayerJoinEvent', function(event) {
    var player = event.getPlayer();
    player.sendMessage('§aWelcome!');
});

Which events are available?

  • PlayerJoinEvent - join
  • PlayerQuitEvent - quit
  • PlayerChatEvent - chat
  • PlayerDeathEvent - death
  • EntityDamageByEntityEvent - attack
  • And many others...

Items

How to create a custom item?

var item = new ItemStack(Material.DIAMOND_SWORD);
var meta = item.getItemMeta();
meta.setDisplayName('§cMy Sword');
item.setItemMeta(meta);
player.getInventory().addItem(item);

Storage

How to save data?

Storage.save('key', value);

How to load data?

Storage.load('key').then(function(value) {
    Console.log(value);
});

Modules

How to create a module?

  1. Create folder plugins/ScriptsLab/modules/mymodule/
  2. Create module.yml
  3. Add to config.yml

How to enable/disable a module?

/module enable <name>
/module disable <name>

Security

What is sandbox?

Sandbox restricts scripts' access to dangerous operations. Enable in config.yml:

security:
  sandbox-enabled: true

Is ScriptsLab safe to use?

Yes, with proper configuration:

  • Enable sandbox-enabled on public servers
  • Restrict player permissions
  • Regularly update the plugin

Performance

Plugin causes lag?

Check:

  1. No infinite loops in scripts
  2. Enough memory allocated
  3. Tasks not running too frequently

How to optimize?

  • Use Scheduler.runTimer instead of loops
  • Don't execute heavy operations on main thread
  • Limit event listener count

Errors

"Unknown command"

Execute /script list to check script loading.

"You don't have permission"

Check permissions in permissions.yml.

"Script execution timeout"

Increase timeout in config.yml:

scripts:
  timeout: 10000

Updates

How to update the plugin?

  1. Stop the server
  2. Replace JAR file
  3. Start the server

Do I need a backup?

Yes, make a backup before updating:

  • plugins/ScriptsLab/ folder
  • Database (if using SQLite)

Development

How to become a beta tester?

Follow GitHub Releases.

How to suggest a feature?

Create an Issue on GitHub.


Support

Where to get help?

  • GitHub Issues: Report a bug
  • GitHub Discussions: Ask a question

How to report a bug?

Specify:

  1. ScriptsLab version
  2. Server version
  3. Java version
  4. Error log
  5. Reproduction steps

Glossary

TermDefinition
GraalVMJavaScript engine
SandboxSecurity sandbox
Hot-reloadHot reload
APIProgramming interface

Next Steps

SectionDescription
Script APIFull API
ExamplesReady-made examples
TroubleshootingProblem solving

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