Skip to content
This repository was archived by the owner on Dec 22, 2025. It is now read-only.

Commit cbadda0

Browse files
committed
更新插件系统文档
1 parent 4b4cb74 commit cbadda0

File tree

5 files changed

+86
-60
lines changed

5 files changed

+86
-60
lines changed

plugin/command.md

Lines changed: 0 additions & 28 deletions
This file was deleted.

plugin/event.md

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,39 @@ title: 事件
44

55
# 事件系统
66

7-
新插件系统的事件注册方式和Bukkit不一样,主要因为Bukkit用java、LemonMint用Lua,所以导致的插件写法的不同。但是LemonMint的事件注册难度其实比Bukkit还低。
8-
97
## 基本运用
108

11-
> 该插件系统的事件已经大部分完善,事件名与Bukkit事件类名对照在这里:[EventMap.java](https://github.com/MenthaMC/LemonMint/blob/dev/1.21.8/lemint-server/src/main/java/me/coderfrish/event/EventMap.java)
12-
13-
```lua
14-
local plugin = function(plugin)
15-
-- 玩家加入事件
16-
local join = function(event)
17-
event.setJoinMessage("Welcome " .. event:getPlayer():getName() .. " Join this server!!")
18-
end
19-
20-
plugin.enable = function()
21-
-- 注册事件
22-
plugin.event.listen("player_join", join)
23-
end
24-
end
25-
26-
-- 编写meta和注册自己明白
9+
可以通过调用plugin中的registerEvent方法注册事件,但是事件类型需要通过Java.type 获取java来注册。
10+
11+
```js
12+
const Bukkit = Java.type("org.bukkit.Bukkit")
13+
const PlayerJoinEvent = Java.type("org.bukkit.event.player.PlayerJoinEvent")
14+
15+
const installer = (plugin) => {
16+
return {
17+
onLoaded() {
18+
sendMessage("Loaded Plugin")
19+
},
20+
21+
onEnabled() {
22+
sendMessage("Enabled Plugin")
23+
plugin.registerEvent(PlayerJoinEvent, function (event) {
24+
event.getPlayer().sendMessage("Hello World!!")
25+
})
26+
},
27+
28+
onDisabled() {
29+
sendMessage("Disabled Plugin")
30+
}
31+
}
32+
}
33+
34+
function sendMessage(message) {
35+
Bukkit.getConsoleSender().sendMessage("Hello World!!")
36+
}
37+
38+
export default { name: "TestPlugin", version: "1.0.0", installer }
2739
```
40+
41+
效果
42+
![img.png](event/results.png)

plugin/event/results.png

39.4 KB
Loading

plugin/java.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
title: 调用Java
3+
---
4+
5+
# 调用Java
6+
7+
插件即使是用javascript写的,但是也不少要调用java,一下的示例可以简单的让你调用Java
8+
9+
## 基本运用
10+
11+
```js
12+
const Bukkit = Java.type("org.bukkit.Bukkit") // 获取 java类
13+
14+
const installer = (plugin) => {
15+
return {
16+
onLoaded() {
17+
sendMessage("Loaded Plugin")
18+
},
19+
20+
onEnabled() {
21+
sendMessage("Enabled Plugin")
22+
},
23+
24+
onDisabled() {
25+
sendMessage("Disabled Plugin")
26+
}
27+
}
28+
}
29+
30+
function sendMessage(message) {
31+
Bukkit.getConsoleSender().sendMessage("Hello World!!")
32+
}
33+
34+
export default { name: "TestPlugin", version: "1.0.0", installer }
35+
```
36+
37+
除了获取java类不太一样,基本实例化java类和你在java的操作里面一样都是`new TheClass(args...)`

plugin/overview.md

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,29 @@ title: 插件系统概述
44

55
# 插件系统概述
66

7-
该插件系统并不是Bukkit和Paper的Java插件系统,而是LemonMint在1.21.8-R0.1版本中添加的新特性。该插件系统抛弃了传统的Java语言开发插件,转为更小巧更简易的Lua脚本插件,其目的是为了让编写插件更快速更简单。(注:Mint没有该特性)
7+
该插件系统并不是Bukkit和Paper的Java插件系统,而是LemonMint在1.21.8-R0.1版本中添加的新特性。该插件系统抛弃了传统的Java语言开发插件,转为JavaScript脚本插件,其目的是为了让编写插件更快速更简单。(注:Mint没有该特性)
88

99
## 开始
1010

11-
该插件系统不需要引入Jar包也不需要用什么构建系统,一个文件就可以搞定。
11+
该插件系统不需要引入Jar包也不需要用什么构建系统,一个文件就可以搞定,而且支持ESM语法(当然CommonJS不支持)
1212

13-
> 注:meta中name和version是必须写的,不然会报错。
13+
> 注:name和version是必须写的,不然会报错。
1414
15-
```lua
16-
local plugin = function(plugin)
17-
plugin.enable = function()
18-
plugin.logger:info("Enabled {}.", plugin.meta:getName())
19-
end
20-
end
15+
```js
16+
const installer = (plugin) => {
17+
return {
18+
onLoaded() {
19+
},
2120

22-
local meta = {
23-
name = "Test",
24-
version = "1.0.0"
21+
onEnabled() {
22+
},
23+
24+
onDisabled() {
25+
}
26+
}
2527
}
2628

27-
pluginManager:register(plugin, meta)
29+
export default { name: "TestPlugin", version: "1.0.0", installer }
2830
```
2931

30-
以上就是最简单的插件示例,在初始化加载的时候以及后面执行pl(plugins命令的简写)都能看到该插件。
32+
以上就是最简单的插件示例,在初始化加载的时候以及后面执行pl(plugins命令的简写)都能看到该插件。(插件如果是绿色字体,那么就是已经启用了,反之为禁用)

0 commit comments

Comments
 (0)