LuaInMinecraftBukkit II —— 用简单的Lua编写你的Bukkit插件
本帖最后由 hahahahahah 于 2025-10-3 12:15 编辑LuaInMinecraftBukkit II在你的服务器中运行 Lua 吧!https://img.shields.io/github/v/release/SmileYik/LuaInMinecraftBukkitII?style=flat-square https://img.shields.io/badge/API-blue?style=flat-square https://img.shields.io/badge/%E6%96%87%E6%A1%A3-blue?style=flat-square https://img.shields.io/badge/%E5%BF%AB%E9%80%9F%E4%BD%BF%E7%94%A8-blue?style=flat-square https://img.shields.io/badge/%E4%BA%8B%E4%BB%B6%E7%9B%91%E5%90%AC-blue?style=flat-square https://img.shields.io/badge/%E6%8C%87%E4%BB%A4%E6%B3%A8%E5%86%8C-blue?style=flat-square
与上一代 LuaInMinecraftBukkit 相比, 本代主要聚焦于Lua原生版本, 并且增加了多核运行 Lua 脚本的能力, 目的是为了提供一个更加易用的插件. 目前本插件支持系统包含MacOS, Linux, 以及Windows. 支持的Lua版本包含: Lua5.1(LuaJIT), Lua5.2, Lua5.3, Lua5.4.
目前插件还在开发中, 若遇到问题欢迎去github上提交issue.
交流群: 662312388
: https://github.com/jasonsantos/luajava
: https://github.com/SmileYik/luajava
: https://github.com/SmileYik/LuaInMinecraftBukkitII/blob/gh-page/docs/zh/GlobalVariable.md#pooledcallable---transform-a-lua-closure-into-a-closure-that-can-be-run-in-the-lua-pool
: https://github.com/SmileYik/LuaInMinecraftBukkitII/modules/jni-bridge
## 简介
LuaInMinecraftBukkit II 是一个 Minecraft Bukkit 服务端插件, 目的是实现使用 Lua 脚本与 Bukkit 服务器交互.
Lua 是一个小巧的脚本语言, 拥有非常简单的语法, 还有着较为不错的运行速度. 试想一下, 用一个轻巧的, 不需要编译就可以运行的脚本编写Bukkit插件将多么美好. 如果要修改一个地方, 那就修改, 然后重新加载脚本就好了, 简直就像梦一样.
## 与上一代的区别
相比于上一代, 本代更注重于Lua原生虚拟机. 同样的, 本代也基于项目.不过与上一代相比, 本代使用[克隆后的luajava]仓库. 与原仓库相比, 克隆后的luajava仓库基本上重写了反射部分功能, 能够进一步简化Lua调用Java方法之间的过程, 并且在C语言端提供了非常友好的异常提示.
## 能做什么?
本插件主要有三大功能:
+ 注册指令: 注册你想要的任何指令, 并且自动生成帮助信息和指令层级关系
+ 监听事件: 监听任何你想要的Bukkit事件, 即使这个事件是其他插件的自定义事件
+ Lua池化: 将 Lua 池化后, 允许提交 Lua 闭包至其他状态机上运行, 以获取真正的多线程并行运行能力: [示例]
其他功能有:
+ 快速反射: 现在, 为 Lua 的反射组件接入了以 MethodHandle 为基础的快速反射, 相比于标准反射能快上不少.
+ 自动重载: 插件能够监控到 Lua 脚本文件的更改, 并自动重新加载脚本文件.
不过依托于Java的反射机制和动态代理机制, 目前可以实现在lua脚本中继承Java接口,调用Java类型中的任何公开方法, 公开属性. 也就是说本插件可以动态的加载脚本, 享受Java的子集功能. 当然, 反射也不是万能的, 还是会出现很多Lua端无法处理的情况, 此时就需要使用Java为Lua架桥了. 不过在开发过程中我会尽量简化Lua与Java中的交互流程.
除开上述所说内容, 与第一代相同, 还能够加载C/C++所编写的动态链接库. 当然这都是 Lua 语言本身就支持的功能.
## Lua 的池化
依托于 的不懈努力, 现在可以在多个线程上执行不同的 Lua 代码.
在本插件中, 每个 Lua 环境配置都拥有一个**主要的 Lua 虚拟机**.
在没有池化 Lua 虚拟机时, **主Lua虚拟机**正在运行的同时, 另外一个线程B需要获取**主Lua虚拟机**的运行权(如 Bukkit 事件触发时, 或 Bukkit 的异步任务)去运行 Lua 的代码(如 Lua 的闭包函数), 此时线程B需要**阻塞等待主Lua虚拟机**, 当**主Lua虚拟机**当前任务完成后, 线程B才能获取到**主Lua虚拟机**的运行权去运行 Lua 代码; 并在等待运行完 Lua 代码后, 才能释放**主Lua虚拟机**的运行权. 假设线程B执行的代码耗时非常长, 则会导致 **主Lua虚拟机** 一直被线程B所占用, 阻塞其他 Lua 代码的执行, 直到线程B释放运行权.
而在拥有 Lua 池后, 相同的情况下, 线程B在获取到 **主Lua虚拟机** 运行权后, 会将即将执行的Lua代码及所有相关的数据全部转移到 **其他Lua虚拟机** 中, 转移完成后会立即释放 **主Lua虚拟机** 的运行权, 而去获取 **其他Lua虚拟机** 的运行权去运行刚刚转移的代码. 此时线程B就能做到在获取到 **主Lua虚拟机** 运行权的极短时间内释放运行权, 而不必等待 Lua 代码运行完毕, 以保证 **主Lua虚拟机** 能够快速响应其他调用.
这里举一个更加具体的例子, 如下代码会调用两次Bukkit的异步任务, 并且要执行的异步任务都是无限循环.
```lua
local import = require "import"
local Thread = import "java.lang.Thread"
for i = 1, 2 do
luaBukkit.helper:asyncCall(luaBukkit.env:pooledCallable(
function ()
while true do
luaBukkit.log:info(Thread:currentThread():getName() .. " async call " .. i .. "!")
Thread:sleep(1000)
end
end
))
end
```
当启用 Lua 池, 并且容量大小为 2 时, 上述代码输出以下内容, 可以看到有多个线程的输出, 并且能够响应 `stop` 指令关闭服务器:
```
: Craft Scheduler Thread - 3 - LuaInMinecraftBukkitII async call 1!
: Craft Scheduler Thread - 1 - LuaInMinecraftBukkitII async call 2!
: Craft Scheduler Thread - 1 - LuaInMinecraftBukkitII async call 2!
: Craft Scheduler Thread - 3 - LuaInMinecraftBukkitII async call 1!
```
禁用 Lua 池功能后, 上述代码输出以下内容, 可以看到仅有一个线程的输出, 并且虽然能够响应 `stop` 指令, 但是无法关闭服务器, 因为尝试释放 Lua 虚拟机资源时无法从死循环情况下获取到运行权:
```
: Craft Scheduler Thread - 2 - LuaInMinecraftBukkitII async call 2!
: Craft Scheduler Thread - 2 - LuaInMinecraftBukkitII async call 2!
stop
: Craft Scheduler Thread - 2 - LuaInMinecraftBukkitII async call 2!
: Stopping the server
: Stopping server
: Disabling LuaInMinecraftBukkitII vmaster-59748d7+luajava-master-a3ddaf6+java-21
: Shutdown auto-reload.
: Craft Scheduler Thread - 2 - LuaInMinecraftBukkitII async call 2!
: Craft Scheduler Thread - 2 - LuaInMinecraftBukkitII async call 2!
: Craft Scheduler Thread - 2 - LuaInMinecraftBukkitII async call 2!
```
## JNIBridge
多亏了 cffi 的加持, 为此而生! 现在能够与动态链接库进行交互了. 目前 JNIBridge 还在完善中, 现支持功能有:
+ Java 方法调用
+ 基础类型转换
下一阶段计划支持的功能有:
- [ ] 字段访问与赋值
- [ ] 数组访问与赋值
下图是一个简单的玩家加入服务器事件, 不过事件处理逻辑由 CPP 端处理.
!(https://github.com/SmileYik/LuaInMinecraftBukkitII/blob/master/docs/ffi-plugin.png?raw=true)
## 支持的服务器核心
本插件支持大量的服务器核心, 基本上支持 BUKKIT API 的服务器核心都能够支持, 例如: Bukkit, Spigot, Paper, Mohist 等等. 目前在 1.7.10 的 Mod 端上主体功能运行良好.
此外在 1.0.9 版本开始, 增加了对 Folia 服务端的支持.
## 下载地址
: https://www.spigotmc.org/resources/luainminecraftbukkit-ii.126395/history
: https://modrinth.com/plugin/luainminebukkit/versions
: https://github.com/SmileYik/LuaInMinecraftBukkitII/releases
: https://github.com/SmileYik/LuaInMinecraftBukkitII/tree/gh-page/natives
目前下载地址可以前往 , 或者 页面进行下载.
对于**高版本用户**或**Folia服务端用户**(或使用 Java17+ 运行服务端的用户)可以直接下载文件名中带有 `+folia` 字样的文件版本.
对于选择在 页面中下载的用户, 请确保下载文件名带有 `-all` 结尾的 jar 包.
## 安装方式
仅需要将插件放入 `plugins` 文件夹中即可. 插件会在加载时, 检测运行环境并自动获取匹配的动态链接库.
由于插件本身未打包动态链接库, 并且动态链接库存放在 Github 仓库中, 若遭遇网络困难, 可能需要手动安装动态链接库. 可以先前往[仓库]中下载 `natives.json`以及对应系统和版本的 `luajava` 动态链接库后, 放入 `/plugins/LuaInMinecraftBukkitII/natives` 文件夹下即可.
## 指令
插件指令仅 op 可用, 可以在服务器中输入 `/lua help` 查看拥有的指令.
## 文档
: https://github.com/SmileYik/LuaInMinecraftBukkitII/tree/gh-page/docs
: https://blog.smileyik.eu.org/?blog=other&album=LuaInMinecraftBukkit&post=zh
本插件拥有较为详细的文档, 可以选择前往 页面, 或者我的 [博客] 页面浏览相关文档.
## 已知问题
注意: **标记为`[ ]`的代表未修复, 标记为 `` 代表已经修复**
[ ] 对于 Mohist 等 Mod/Bukkit 混合端将无法正常使用指令注册功能, 或指令注册仅首次加载有效, 重载 Lua 环境后失效.
[ ] FastReflection 快速反射目前遇到无法生成的字节码时将会直接报错, 而不会回退到标准反射.
无法正常处理 Emoji 文本 (1.0.9已修复)
无法正常调用接口类中定义的默认方法 (1.0.9已修复)
提交任务至 Lua 池时随机崩溃 JVM (1.0.9已修复)
Windows 无法正常下载 LuaJIT 的动态链接库 (1.0.9已修复)
Lua脚本中无法读取类中公共静态变量 (1.0.7已修复)
LuaHelper 中的 `castArray` 方法始终失败 (1.0.7已修复)
## 声明
**本插件极大部分代码均为原创,不存在借用/抄袭等行为, 本插件所使用的 由 分叉而来**
**本插件源代码以 MIT 协议进行开源**
!(https://bstats.org/signatures/bukkit/LuaInMinecraftBukkitII.svg)
# 更新日志
# 1.0.9
**Full Changelog**: https://github.com/SmileYik/LuaInMinecraftBukkitII/compare/1.0.8...1.0.9
## 主要改变:
+ Folia 服务端支持: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/c965f4d5e33c610bceb0828bae003371ff180c2c), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/4bd8abcde26b6853b7908ff5c142e3f100b0c2f4)
+ Lua 脚本修改后自动重载: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/a35c51fe2727107ab203a8be68d9d3b7f3321989)
+ Lua 脚本将能够调用 Java 接口定义的默认方法, 并且能够支持配置Lua环境在寻找到多个匹配的方法时的行为: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/59e6367a907683e3fa53c6c685422874b170dcff)
+ 添加新的API使得能够在 Lua 中自由切换Lua环境在寻找到多个匹配的方法时的行为: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/65f76ae3d9f746b2847edbdc8c970af382d2d131)
+ 当第一次初始化插件时, 会生成样例 Lua 脚本文件: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/6e90f974a8b6e2bc0df2df49213171454810288a)
+ 添加快速反射支持: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/12effeb96a2e008aa62677301a6852c509699cda), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/8af8c92fe93c6722a418ddc9acd25e331c349243), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/0c4de69780300916aa60789e483b1c0e0a6e4b46), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/59ad309c65f70f0585b8f907858fdd2ec0fb5d60), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/a2c95f939cc4b18cd286edd1a838c720d83dc8fd), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/50675fe13c915658133e1e8ed178041857418bf8), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/b6cbecd16dd05162b5ab59f3ac0dfb1869455dcd)
+ 移除Lua环境全局变量分隔: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/50d789d042a760dc2f39d6ca887544b9e19783e7)
+ 修复 emoji 代理对无法正常识别问题: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/5ebacface1493e3f00827f03c7b2ec7092d8c8e2)
+ 修复 Lua 池实现过程中导致的栈不平衡及随机崩溃问题: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/0f7524b97e700f89ed6134795e4e0dc7289c261e), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/7afdfc8bd333754e985398f3d6182dce9be8f58f), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/8529109debc3ae6de3507e5c98c801da10e32d49)
+ 修复停用插件时, 无法正常关闭异步线程以及Bukkit事件问题: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/ad928e23a86e862163ddce7851d0e9bd57e3f667), (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/7311e8db60dcc1917e22173109c3cbf34a6582cd)
+ 修复反射缓存在多线程下报错问题: (https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/aa7923dc66e90b3408d541ddc14c0b21ca398147)
## Changes
+ Folia Server Support: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/c965f4d5e33c610bceb0828bae003371ff180c2c)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/c965f4d5e33c610bceb0828bae003371ff180c2c), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/4bd8abcde26b6853b7908ff5c142e3f100b0c2f4)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/4bd8abcde26b6853b7908ff5c142e3f100b0c2f4)
+ Automatic Lua script reload after modification: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/a35c51fe2727107ab203a8be68d9d3b7f3321989)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/a35c51fe2727107ab203a8be68d9d3b7f3321989)
+ Lua scripts can now call default methods defined in Java interfaces and support configuring the behavior when the Lua environment finds multiple matching methods: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/59e6367a907683e3fa53c6c685422874b170dcff)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/59e6367a907683e3fa53c6c685422874b170dcff)
+ Added new API to freely switch the Lua environment's behavior when multiple matching methods are found: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/65f76ae3d9f746b2847edbdc8c970af382d2d131)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/65f76ae3d9f746b2847edbdc8c970af382d2d131)
+ A sample Lua script file is now generated on the first plugin initialization: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/6e90f974a8b6e2bc0df2df49213171454810288a)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/6e90f974a8b6e2bc0df2df49213171454810288a)
+ Added fast reflection support: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/12effeb96a2e008aa62677301a6852c509699cda)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/12effeb96a2e008aa62677301a6852c509699cda), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/8af8c92fe93c6722a418ddc9acd25e331c349243)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/8af8c92fe93c6722a418ddc9acd25e331c349243), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/0c4de69780300916aa60789e483b1c0e0a6e4b46)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/0c4de69780300916aa60789e483b1c0e0a6e4b46), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/59ad309c65f70f0585b8f907858fdd2ec0fb5d60)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/59ad309c65f70f0585b8f907858fdd2ec0fb5d60), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/a2c95f939cc4b18cd286edd1a838c720d83dc8fd)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/a2c95f939cc4b18cd286edd1a838c720d83dc8fd), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/50675fe13c915658133e1e8ed178041857418bf8)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/50675fe13c915658133e1e8ed178041857418bf8), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/b6cbecd16dd05162b5ab59f3ac0dfb1869455dcd)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/b6cbecd16dd05162b5ab59f3ac0dfb1869455dcd)
+ Removed Lua environment global variable separation: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/50d789d042a760dc2f39d6ca887544b9e19783e7)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/50d789d042a760dc2f39d6ca887544b9e19783e7)
+ Fixed incorrect recognition of emoji proxies: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/5ebacface1493e3f00827f03c7b2ec7092d8c8e2)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/5ebacface1493e3f00827f03c7b2ec7092d8c8e2)
+ Fixed stack imbalance and random crashes caused by the Lua pool implementation: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/0f7524b97e700f89ed6134795e4e0dc7289c261e)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/0f7524b97e700f89ed6134795e4e0dc7289c261e), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/7afdfc8bd333754e985398f3d6182dce9be8f58f)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/7afdfc8bd333754e985398f3d6182dce9be8f58f), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/8529109debc3ae6de3507e5c98c801da10e32d49)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/8529109debc3ae6de3507e5c98c801da10e32d49)
+ Fixed issues where asynchronous threads and Bukkit events could not be properly shut down when disabling the plugin: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/ad928e23a86e862163ddce7851d0e9bd57e3f667)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/ad928e23a86e862163ddce7851d0e9bd57e3f667), [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/7311e8db60dcc1917e22173109c3cbf34a6582cd)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/7311e8db60dcc1917e22173109c3cbf34a6582cd)
+ Fixed errors in the reflection cache under multithreaded conditions: [(https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/aa7923dc66e90b3408d541ddc14c0b21ca398147)](https://github.com/SmileYik/LuaInMinecraftBukkitII/commit/aa7923dc66e90b3408d541ddc14c0b21ca398147)
# 1.0.8:
**Full Changelog**: https://github.com/SmileYik/LuaInMinecraftBukkitII/compare/1.0.7...1.0.8
## 主要改变:
+ [优先使用 config.json 中设置的 projectUrl 下载依赖](https://github.com/SmileYik/LuaI ... c65645eb95e5cc5c9c0)
+ Lua 池实现, 允许传输 Lua 闭包到其他 Lua 状态机中运行, 并允许将运行的返回值传输给主 Lua 状态机(多线程运行Lua脚本): (https://github.com/SmileYik/LuaI ... b840cade87156017ebf), (https://github.com/SmileYik/LuaI ... 4cc71ad92cd031f57c8), (https://github.com/SmileYik/LuaI ... ef5a6f378459ce5e268)
## Changes
+ (https://github.com/SmileYik/LuaI ... c65645eb95e5cc5c9c0)
+ Implementation of Lua pool, allow running Lua closure on other lua state, and allow transfer return values to main lua state(Running Lua scripts in multiple threads): (https://github.com/SmileYik/LuaI ... b840cade87156017ebf), (https://github.com/SmileYik/LuaI ... 4cc71ad92cd031f57c8), (https://github.com/SmileYik/LuaI ... ef5a6f378459ce5e268)
# 1.0.7:
**Full Changelog**: https://github.com/SmileYik/LuaInMinecraftBukkitII/compare/1.0.6...1.0.7
## 主要改变
### 错误修复
+ [修复Lua端无法读取公共静态字段问题](https://github.com/SmileYik/LuaI ... a658ba979963878c3d4)
+ [修复LuaHelper中同步/异步方法返回的future结果始终为空的问题](https://github.com/SmileYik/LuaI ... 1062a2ec418d3c8c07e)
+ (https://github.com/SmileYik/LuaI ... ed840471c7263a2f253)
### 功能增加
+ [添加 forName 方法用于通过标准类名或非标准类名寻找 Java 类](https://github.com/SmileYik/LuaI ... 6b61a8a4aeb612fda9b)
## Major Changes
### Fixes
+ (https://github.com/SmileYik/LuaI ... a658ba979963878c3d4)
+ (https://github.com/SmileYik/LuaI ... 1062a2ec418d3c8c07e)
+ (https://github.com/SmileYik/LuaI ... ed840471c7263a2f253)
### Features
+ (https://github.com/SmileYik/LuaI ... 6b61a8a4aeb612fda9b)
# 1.0.6:
**Full Changelog**: https://github.com/SmileYik/LuaInMinecraftBukkitII/compare/1.0.4...1.0.6
## 主要改变
### 指令
+ 新增软重启Lua环境指令, 允许不关闭 Lua 虚拟机情况下重载 Lua 环境. ((https://github.com/SmileYik/LuaI ... b2aa6ec47508eb62b61))
### Lua API
+ `luaBukkit.env` 新增 `registerSoftReload(ILuaCallable)` 方法用于注册软重启时执行的Lua闭包. ((https://github.com/SmileYik/LuaI ... b2aa6ec47508eb62b61))
+ 新增 'import' 模块, 用于导入 Java 类. ((https://github.com/SmileYik/LuaI ... d4b0763f9cb1884e42e))
# 1.0.4:
更新了动态链接库, 需要删除natives文件夹
主要变化:
添加动态链接库模组管理器, 能够在config.json 中自定义启用或禁用动态链接库模组
添加新的Lua环境提供于其他插件
Lua 端, 允许从 luaLibraries 文件夹中导入动态链接库 (.so/.dylib/*.dll)
添加cffi模组, 允许使用ffi在lua51~lua54上
添加 jni-bridge 模组(实验, 仅提供 linux 预编译), 允许使用 C++ 代码与 Java / Bukkit 服务器进行交互.
允许设置异步初始化lua脚本文件, 可在config.yml中编辑.
允许使用require导入网络库(即通过URL导入Lua依赖)
# 1.0.0:
主要变化:
+ 为 Lua 端添加 `luajava.class2Obj()` 方法. 现在可以通过 Lua 端操作 java 反射.
+ 允许在 Lua 端访问受限 Java 实例字段或方法. 访问过程自动完成, 无需额外操作, 可在配置选项中自助开启
+ 修复 CommandBuilder 与 EventListenerBuilder 之间的问题.
页:
[1]