ClayCoffee
本帖最后由 都非常多舒 于 2020-3-18 14:56 编辑

最近我在论坛上发布了一个粘液拓展
有人想让我发一个拓展教程 那我就发一个吧!(好尴)
本教程使用eclipse&maven和1.15.2核心,使用粘液科技和CS-CoreLib官方最新开发版作为依赖
阅读本教程需要有一定的java基础


①.配置项目
(创建一个Maven项目,可以去网上找教程,非常简单)
项目创建完毕之后,找到根目录下的pom.xml文件
</project>前添加如下内容并保存。
  1. <properties>
  2.           <maven.compiler.source>1.8</maven.compiler.source>
  3.           <maven.compiler.target>1.8</maven.compiler.target>
  4.           <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  5.   </properties>
  6.   
  7.   <repositories>
  8.           <repository>
  9.                   <id>paper-repo</id>
  10.                   <url>https://repo.destroystokyo.com/repository/maven-public/</url>
  11.           </repository>
  12.           <repository>
  13.                   <id>spigot-repo</id>
  14.                   <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
  15.           </repository>
  16.           <repository>
  17.                   <id>jitpack.io</id>
  18.                   <url>https://jitpack.io</url>
  19.           </repository>
  20.   </repositories>
  21.   
  22.   <build>
  23.           <finalName>${project.name} v${project.version}</finalName>
  24.           <defaultGoal>clean package</defaultGoal>
  25.           <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
  26.          
  27.           <resources>
  28.                   <resource>
  29.                           <directory>${basedir}/src/main/resources</directory>
  30.                           <filtering>true</filtering>
  31.                           <includes>
  32.                                   <include>*</include>
  33.                           </includes>
  34.                   </resource>
  35.           </resources>
  36.   </build>
  37.   
  38.   <dependencies>
  39.           <dependency>
  40.                   <groupId>org.bukkit</groupId>
  41.                   <artifactId>bukkit</artifactId>
  42.                   <version>1.15.2-R0.1-SNAPSHOT</version>
  43.                   <scope>provided</scope>
  44.           </dependency>
  45.           <dependency>
  46.                   <groupId>com.github.TheBusyBiscuit</groupId>
  47.                   <artifactId>CS-CoreLib</artifactId>
  48.                   <version>master-SNAPSHOT</version>
  49.                   <scope>provided</scope>
  50.                   <exclusions>
  51.                           <exclusion>
  52.                                   <groupId>io.github.thebusybiscuit</groupId>
  53.                                   <artifactId>cscorelib2</artifactId>
  54.                           </exclusion>
  55.                           <exclusion>
  56.                                   <groupId>org.bstats</groupId>
  57.                                   <artifactId>bstats-bukkit</artifactId>
  58.                           </exclusion>
  59.                   </exclusions>
  60.           </dependency>
  61.           <dependency>
  62.                   <groupId>com.github.TheBusyBiscuit</groupId>
  63.                   <artifactId>Slimefun4</artifactId>
  64.                   <version>master-SNAPSHOT</version>
  65.                   <scope>provided</scope>
  66.                   <exclusions>
  67.                           <exclusion>
  68.                                   <groupId>io.github.thebusybiscuit</groupId>
  69.                                   <artifactId>cscorelib2</artifactId>
  70.                           </exclusion>
  71.                           <exclusion>
  72.                                   <groupId>org.bstats</groupId>
  73.                                   <artifactId>bstats-bukkit</artifactId>
  74.                           </exclusion>
  75.                   </exclusions>
  76.           </dependency>
  77.   </dependencies>
复制代码
此时你的pom.xml应该是这样的:
然后右键项目-Maven-Update Project更新下项目,让maven帮你下载依赖。
然后创建好包、主类和plugin.yml,就可以开始开发了。
我们需要对plugin.yml做一些改动。
在version下面加入一行 depend: [CS-CoreLib, Slimefun] 就行了。
改完之后应该是这样的:

②.配置拓展
接下来,打开主类,实现SlimefunAddon接口,然后添加未实现的方法。
一切搞完之后,应该是这样的:

至此,拓展配置完毕。


③.我的第一个分类
  1. new Category(NamespacedKey 分类id, CustomItem 分类显示在菜单上物品)
复制代码
分类id就是这个新分类的标识。可以使用NamespacedKey的构造函数创建。
  1. new NamespacedKey(插件主类,String 名称)
复制代码

第二个参数需要用到CustomItem这个类。这个类也可以使用它的构造函数创建。
  1. new CustomItem(Material 材质,String 显示名)
复制代码
(粘液科技中的新物品/方块/分类都需要注册,用register(SlimefunAddon 插件主类)方法即可,不然不会被添加)(分类会在添加第一个新物品时自动注册)
根据实际情况,创建完之后大概应该是这样子的:

(菜单和研究的register()方法不需要参数)
*注: 可以在名称后面再加上一个等级,用于控制分类在菜单中的显示位置

④.我的第一个物品
首先,我们需要创建一个粘液科技中的ItemStack.
  1. new SlimefunItemStack(String id, Material 材质, String 物品显示名, String lore...)
复制代码
*注意: id请使用英文字母,而且要全大写,不然会有一些莫名其妙的bug发生..
然后创建一个物品对象
  1. new SlimefunItem(Category 分类,SlimefunItemStack 物品堆,RecipeType 合成方式,ItemStack[] 合成表)
复制代码
*注意: 合成表是一个物品堆的数组,有且只能有9个成员,用null来表示空物品。某些合成方式可能会有一定的限制,比如远古祭坛。
创建完一个物品后,不要忘记注册。
此时,代码应该是这样的:

在实际插件开发中,可以添加一个SlimefunUtils类,直接一键注册,没必要这么麻烦。
*注: 创建方块的方法也和此一样,不过请把Material换成对应的方块。

⑤.我的第一个研究
如果一个物品没有指定一个能解锁他的研究,那么这个物品就会被默认解锁.
那么如何创建一个新研究呢?
  1. new Research(NamespacedKey id, int 研究ID, String 研究名, int 花费的等级)
复制代码
*注意: 研究ID可以写一个比较大的数目,如从10000开头,以此类推
创建完研究后需要给研究添加物品.可以使用addItems()方法.然后使用register()方法注册即可。
创建完研究后,代码应该是这样的:

*注: 可以使用SlimefunItem.getByItem()方法通过一个已经被注册过的ItemStack获取对应的SlimefunItemStack对象
*注2: 一个研究可以添加多个物品,用","号分隔开即可。

⑥.编译
右键项目,找到运行方式-Maven install,在根目录的target文件夹下即可看到你的新拓展。然后拖到plugins目录下,就能正常使用了。

下一篇预告: 创建一个上锁的分类 & 特殊物品





Freeze_Dolphin
新版Slimefun的API改了好多....
连Category都有注册了...
话说Category不应该有等级的嘛?

ClayCoffee
本帖最后由 都非常多舒 于 2020-3-18 14:43 编辑
Freeze_Dolphin 发表于 2020-3-18 14:39
新版Slimefun的API改了好多....
连Category都有注册了...
话说Category不应该有等级的嘛? ...

没有,我还特地去查了,粘液科技官方教程中貌似没有提到这个..
另外Category不用手动注册,在添加新物品时会自动注册的
帖子里我说了

Freeze_Dolphin
都非常多舒 发表于 2020-3-18 14:41
没有,我还特地去查了,粘液科技官方教程中貌似没有提到这个..
另外Category不用手动注册,在添加新物品时 ...

用IDE的补全功能看看有没有指定level的实例化方法吧(官方教程我就没见他全过= =)

ClayCoffee
Freeze_Dolphin 发表于 2020-3-18 14:48
用IDE的补全功能看看有没有指定level的实例化方法吧(官方教程我就没见他全过= =) ...

找到了
用这个教程里的方法,再在后面添加等级就行了

wordangyou
感谢作者

墨斗庄主
大佬,可不可以做一个快速点亮区块的mod啊

1795170103
本帖最后由 1795170103 于 2020-3-30 16:27 编辑

人民教师老咖在线教学

不扰小屈
什么时候更新?

asd1468125425
我也想学,有没有大佬教一教

many先生
楼主加油,顶顶

赤瞳蓝宝
粘液科技 NB            

crazy438
感谢作者

砚澜
咖啡牛!!!

WeiQu_钻石块
作者能不能写个远古工艺的附属编写?

ClayCoffee
梦小白 发表于 2020-8-28 17:13
作者能不能写个远古工艺的附属编写?

不会考虑。建议使用粘液科技+科技复兴,包括远古工艺新增物品。

WeiQu_钻石块
ClayCoffee 发表于 2020-8-28 22:42
不会考虑。建议使用粘液科技+科技复兴,包括远古工艺新增物品。

啊这
考虑可否?

ClayCoffee

不会考虑
远古工艺使用人数太少了,远不如粘液科技
我们造的附属要尽量给更多人用

qazyjy
之前在服务器玩过,但是好像有一点点的bug

TheGiftMouse
厉害了!!