- Поддерживаемые версии
- 1.21
LuaMine: пишем первый скрипт для своего сервера
You must be logged in to see this link. - плагин, который встраивает в ваш Bukkit/Spigot/Paper сервер лёгкий движок Lua. Вместо того чтобы компилировать Java-плагин под каждую мелочь (приветствие игроков, кастомные команды, простые ивенты), вы просто кладёте .lua-файл в папку scripts/ и перезагружаете скрипты одной командой - без рестарта сервера.
В этом туториале разберём базовый скрипт с нуля: от приветствия игрока до собственной команды и таймера.
Установка
- Скачайте LuaMine.jar и киньте в папку plugins/.
- Запустите/перезапустите сервер один раз - плагин создаст папку plugins/LuaMine/scripts/ и положит туда пример скрипта.
- Дальше все скрипты кладутся именно в эту папку - любой файл с расширением .lua.
Первый скрипт: приветствие игрока
Создайте файл plugins/LuaMine/scripts/welcome.lua:
Код:
local mc = require("Minecraft")
function onPlayerJoin(player)
mc.broadcast("&a" .. player:getName() .. " &fзашёл на сервер!")
end
Разбираем:
- require("Minecraft") - подключаем модуль Minecraft, через него доступны почти все функции API (сообщения, команды, таймеры и т.д.). Обычно кладут в переменную mc для краткости.
- function onPlayerJoin(player) - это You must be logged in to see this link.: LuaMine сам вызовет эту функцию, когда игрок зайдёт на сервер, и передаст объект player.
- player:getName() - метод прямо на объекте игрока. LuaMine оборачивает Player в удобную Lua-таблицу с ООП-синтаксисом (player:метод(...)), полный список - в разделе You must be logged in to see this link..
- mc.broadcast(...) - рассылает сообщение всем на сервере, с поддержкой цветовых кодов &.
Дальше зайдите на сервер - должно появиться сообщение о заходе.
Какие события ещё есть
Помимо входа игрока, LuaMine даёт ещё несколько готовых событий - просто объявите функцию с нужным именем, и она будет вызываться автоматически:| Событие | Когда срабатывает |
|---|---|
| You must be logged in to see this link. | Один раз, когда сервер полностью загрузился |
| You must be logged in to see this link. | Игрок зашёл на сервер |
| You must be logged in to see this link. | Игрок написал в чат |
| You must be logged in to see this link. | Игрок сломал блок |
| You must be logged in to see this link. | Игрок кликнул ПКМ |
| You must be logged in to see this link. | Игрок ударил другого игрока |
Например, лечим игрока при ударе по нему через ПКМ:
Код:
function onPlayerInteract(player)
player:heal(4) -- +2 сердца
player:sendMessage("&bВы восстановили здоровье!")
end
Все методы, которые можно вызывать через player:...() (телепорт, здоровье, эффекты зелий и т.д.) - смотрите в разделе You must be logged in to see this link..
Своя команда
Скрипты могут регистрировать полноценные команды сервера через You must be logged in to see this link.:
Код:
local mc = require("Minecraft")
mc.registerCommand("heal", function(sender, args)
mc.sendMessage(sender, "&aВы исцелены!")
end, "Лечит вас", "/heal")
После /minelua reload команда /heal уже доступна на сервере. Если поменять код функции и снова сделать /minelua reload - команда сразу подхватит новую версию, без рестарта сервера.
Таймеры и отложенные действия
Через You must be logged in to see this link. можно выполнить что-то с задержкой (20 тиков = 1 секунда):
Код:
function onPlayerJoin(player)
mc.sendMessage(player, "&eЧерез 5 секунд начнётся ивент!")
mc.wait(100, function()
mc.broadcast("&6Ивент начался!")
end)
end
Что дальше
Это база - а в API ещё есть звуки, титры, консольные команды, работа с цветом и многое другое. Вся документация с примерами лежит здесь: You must be logged in to see this link.Если что-то не работает или есть вопросы - пишите в теме на SpigotMC или в Discussions на You must be logged in to see this link..