Иконка ресурса

Руководство Как написать свой 1-й скрипт на LuaMine?

Поддерживаемые версии
  1. 1.21

LuaMine: пишем первый скрипт для своего сервера​


You must be logged in to see this link. - плагин, который встраивает в ваш Bukkit/Spigot/Paper сервер лёгкий движок Lua. Вместо того чтобы компилировать Java-плагин под каждую мелочь (приветствие игроков, кастомные команды, простые ивенты), вы просто кладёте .lua-файл в папку scripts/ и перезагружаете скрипты одной командой - без рестарта сервера.

В этом туториале разберём базовый скрипт с нуля: от приветствия игрока до собственной команды и таймера.




Установка​

  1. Скачайте LuaMine.jar и киньте в папку plugins/.
  2. Запустите/перезапустите сервер один раз - плагин создаст папку plugins/LuaMine/scripts/ и положит туда пример скрипта.
  3. Дальше все скрипты кладутся именно в эту папку - любой файл с расширением .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(...) - рассылает сообщение всем на сервере, с поддержкой цветовых кодов &.
Чтобы применить скрипт без рестарта сервера, наберите в консоли (или в игре, если есть права): /minelua reload

Дальше зайдите на сервер - должно появиться сообщение о заходе.



Какие события ещё есть​

Помимо входа игрока, 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..
Автор
DarkWhite
Просмотры
20
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Поделиться ресурсом

Назад
Сверху Снизу