This repository was archived by the owner on Dec 22, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 5 files changed +86
-60
lines changed
Expand file tree Collapse file tree 5 files changed +86
-60
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff 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 )
Original file line number Diff line number Diff line change 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...) `
Original file line number Diff line number Diff 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命令的简写)都能看到该插件。(插件如果是绿色字体,那么就是已经启用了,反之为禁用)
You can’t perform that action at this time.
0 commit comments