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

Плагин LuaMine 2026-08-13

Создайте и подтвердите аккаунт для скачивания
LuaMine 1.3

Крупный релиз по стабильности и функционалу. LuaMine прошёл через несколько
бета-циклов доработки (утечки памяти, потокобезопасность, защита от зависших
скриптов) и получил большой пакет новых возможностей — это первая версия, которую мы
называем Stable.

Добавлено
  • Fluent-билдер команд: mc.command(name):execute():description():usage():tabComplete():permission():register() — добавляет автодополнение и команды с проверкой прав. mc.registerCommand(...) по-прежнему работает без изменений для простых случаев.
  • require("json") — кодирование/декодирование Lua-таблиц в/из JSON, плюс json.save(name, table) / json.load(name) для сохранения данных в plugins/LuaMine/config/.
  • Работа с миром: mc.setBlock(x, y, z, type), mc.getBlock(x, y, z), mc.spawnEntity(type, x, y, z).
  • player:giveItem(item, amount), player:hasItem(item, amount).
  • mc.hasPermission(sender, node).
  • 12 новых событий: onPlayerDeath, onPlayerRespawn, onPlayerQuit, onBlockPlace, onEntityDeath, onInventoryClick, onWeatherChange, onWorldChange, onSneakToggle, onItemMend, onPickup, onDrop.
  • Защита от зависших скриптов — скрипт, ушедший в бесконечный цикл или зависание, теперь прерывается автоматически вместо подвисания всего сервера.

Исправлено
  • Серьёзная утечка памяти при /minelua reload — запланированные таймеры (Minecraft.wait) и зарегистрированные команды продолжали работать со старым, уже отброшенным состоянием скриптов после каждого reload, накапливаясь со временем. Теперь reload корректно их заменяет.
  • Команды, зарегистрированные через mc.registerCommand/mc.command, теперь надёжно отражают актуальную версию скрипта при каждом reload.
  • Исправлена гонка в обработке чата — onChat теперь безопасно выполняется в основном потоке, а не конкурирует с остальными событиями скриптов.
  • Снижена нагрузка на сборщик мусора на частых событиях (onPlayerInteract, onBlockBreak) — объект игрока больше не пересоздаёт свои методы при каждом вызове.
  • Исправлена ситуация, когда Minecraft.getName/kick/sendMessage тихо не срабатывали (возвращали "Unknown" / ничего не делали) при вызове с объектом игрока из колбэка события.
  • Аддоны, зависящие от LuaMine (например require("re2")), теперь гарантированно готовы к моменту первой загрузки скриптов, а не соревнуются с порядком запуска плагинов.

Безопасность
- Убран LuaMineAPI.loadScript() — он позволял любому установленному плагину внедрять произвольный Lua-код в окружение LuaMine без какой-либо проверки источника. Для открытия Java-функциональности скриптам используйте registerFunction/registerModule.

Известное ограничение
- Команда, однажды зарегистрированная за текущую сессию сервера, продолжает предлагаться в автодополнении и отображаться в /help, даже если скрипт перестал её определять — при этом она корректно сообщает о своей недоступности при попытке выполнения. Это осознанный компромисс ради надёжного обновления команд на Paper.

Добавлено​

  • Удобный конструктор команд (Fluent command builder): mc.command(name):execute():description():usage():tabComplete():Permission():register() — добавляет автодополнение (таб-комплит) и команды с проверкой прав доступа, не перегружая список аргументов функции registerCommand. Старый метод mc.registerCommand(...) по-прежнему работает без изменений для простых случаев.
  • require("json") — кодирование и декодирование таблиц Lua в формат JSON и обратно, а также функции json.save(name, table) и json.load(name) для сохранения данных в папку plugins/LuaMine/config/.
  • Взаимодействие с миром: mc.setBlock(x, y, z, type), mc.getBlock(x, y, z), mc.spawnEntity(type, x, y, z).
  • player:giveItem(item, amount), player:hasItem(item, amount).
  • mc.hasPermission(sender, node).
  • Новые события: onPlayerDeath, onPlayerRespawn, onPlayerQuit, onBlockPlace, onEntityDeath, onInventoryClick (поддерживает return "cancel" аналогично onChat).

Известное ограничение​

  • Команда, зарегистрированная через mc.command() или registerCommand, продолжает автодополняться и отображаться в списке /help до конца сессии сервера, даже если скрипт перестал её определять — при попытке выполнения она просто сообщит о своей недоступности. Это осознанный компромисс ради стабильного обновления команд на платформе Paper.
Fixed
  • Memory leak on /minelua reload — old scheduled timers and commands could keep running after a reload instead of being replaced.
  • Commands registered via mc.registerCommand() now reliably update on /minelua reload (previously could get stuck on the old version).
  • Fixed a chat-handling race condition between onChat() and other script events.
  • Reduced GC pressure on frequent events like onPlayerInteract/onBlockBreak.

Added
- Watchdog aborts scripts that hang or infinite-loop, instead of freezing the server.

Removed
- [Breaking] LuaMineAPI.loadScript() — allowed any plugin to inject arbitrary Lua code with no sandboxing. Use registerFunction/registerModule instead.
Назад
Сверху Снизу