Minecraft(我的世界)中文论坛

标题: Sponge插件开发样例

作者: RecursiveG    时间: 2015-1-13 12:07
标题: Sponge插件开发样例
本帖最后由 RecursiveG 于 2015-1-13 12:07 编辑

考虑到SpongeAPI已经发布了1.0版本,我在这写个短短的小样例,让各位(主要是各位Bukkit插件开发者)对Sponge插件开发有个基本认识。
具体的教程在这里都可以查到https://docs.spongepowered.org/en/latest/plugins/。不过是英文的,应该不久就有人去翻译成中文吧。
我在这里写一个小小的“Hello World”插件:每个玩家登录时显示一条欢迎信息。
我以Gradle和Intellij作为开发环境来演示。

首先是建一个文件夹来放你的代码,然后建立一个build.gradle文件,内容如下:
  1. apply plugin: 'java'

  2. sourceCompatibility = 1.6
  3. version = '1.0'

  4. repositories {
  5.     mavenCentral()
  6.     maven {
  7.         name 'Sponge maven repo'
  8.         url 'http://repo.spongepowered.org/maven/'
  9.     }
  10. }

  11. dependencies {
  12.     compile "org.spongepowered:spongeapi:1.1-SNAPSHOT"
  13.     testCompile group: 'junit', name: 'junit', version: '4.11'
  14. }
复制代码
接着打开IDE,导入这个Gradle项目,各种建立文件夹,各种设定source。而依赖会由Gradle帮你搞定。

最终的目录结构会像是这样的:

主类的代码像是这样的:


是不是有一种似曾相识的感觉?需要注意的是,Sponge插件不再需要plugin.yml文件,而是用@Plugin这个Annotation代替,注册事件使用@Subscribe。大部分事件都位于org.spongepowered.api.event包下,有需要的可以自行查看。

最后,运行gradle的build task,编译好的jar就会在build/libs文件夹下了。然后把这个jar拖进mods文件夹即可运行(没错!是mods文件夹而不是plugins文件夹)虽然现在Sponge还没正式发布。

最后来一发测试时候的截图(不要问我是怎么跑起来的)

(全文完)
作者: End_KG    时间: 2015-1-13 12:18
挺不错的
作者: SPE__HaiKuo    时间: 2015-1-13 13:16
终于有人发Sponge的教程了'_>'
作者: 叁只番茄    时间: 2015-1-13 13:23
本帖最后由 叁只番茄 于 2015-1-13 13:27 编辑

前几天配置好了sponge的开发环境然后就一直没弄
刚刚我也还在看里面的官方教程还有sponge的API来着_(:з」∠)_
sponge有点微妙♂ 因为他还有客户端版本_(:з」∠)_
其实到现在我都只会从eclipse我配置好的运行调试启动一个有sponge的客户端或者服务端
gradlew一下出来的那个sponge jar扔forge服务端和客户端都报错_(:з」∠)_

作者: RecursiveG    时间: 2015-1-13 17:27
叁只番茄 发表于 2015-1-13 13:23
前几天配置好了sponge的开发环境然后就一直没弄
刚刚我也还在看里面的官方教程还有sponge的API来着_(:з」 ...

估计还要在classpath加一堆东西吧(虽然我也没试过。。。。。)
作者: huanghongxun    时间: 2015-1-13 18:03
原来SpongeAPI已经发布了。。
可以欢乐的学API了0w0
作者: poi4399    时间: 2015-1-17 22:32
SPE__HaiKuo 发表于 2015-1-13 13:16
终于有人发Sponge的教程了'_>'

发现了签名,我们需要聊一下_(:зゝ∠)_
作者: 默默、无闻    时间: 2015-6-25 12:51
{:10_522:}2.1的API SendMessage 报错什么鬼。。。。。。
作者: 默默、无闻    时间: 2015-6-25 14:05
{:10_527:}原来要格式化文本 ......
作者: JovisBone    时间: 2015-12-18 15:39

我想请问版主我导入gradle项目后和你的不一样呀,是不是少了什么步骤(第一次用IDEA

作者: 插件达人    时间: 2016-4-18 12:28
下载地址给一个可以不

作者: RecursiveG    时间: 2016-4-19 02:25
JovisBone 发表于 2015-12-18 15:39
我想请问版主我导入gradle项目后和你的不一样呀,是不是少了什么步骤(第一次用IDEA
...

尝试手动建立一下?
作者: liach    时间: 2016-5-11 11:52
呵呵API5都快出了……
作者: Tollainmear    时间: 2017-8-12 00:45
谢谢分享~短小精悍~!
作者: @TGL    时间: 2018-8-23 17:51
为什么你写的事件我不能用,我这边能用的事件很少,根本没有玩家登录,服务器启动的事件
(添加了API的)