本帖最后由 BlueHalo 于 2019-6-13 21:50 编辑
(插件百科链接)
复制代码
复制代码
复制代码
复制代码
复制代码
复制代码
复制代码# category为分类,item为新物品的物品堆,id为Slimefun中的物品检索(指令可以通过物品检索获取指定数量的该种物品,也可以用于其它合成表对其的调用),recipeType为合成方式(可以是slimefun里的机器!),recipe用于定义合成表(注意是数组类型,空的合成格子用null)
复制代码
复制代码
复制代码
粘液科技附属编写(基础)教程
粘液科技(SlimeFun)是一款几乎可以让你的水桶服务器变成一个像具有FTB模组包的服务器的插件,但不需要安装任何的模组。
它为游戏中加入了几乎你能够想到的任何东西,从背包到飞行背包······
它也提供了一个可以让你们简单的做附属插件的API。
如果你拥有一个不是以小游戏为主体的服务器,且你的玩家已经玩够了原版生存的话,
你就会深深地爱上这款插件!它为你的服务器带来了 400 多件新物品,为服务器添加了新的生存法则!
但令人苦恼的是,每一个科技的解锁,都要相当的一些经验,这对新手玩家很不友好;
也许在原版当中,30级左右就足够了,但面对粘液科技,你得确保你的经验条撑得住。
————mineplugin.org
(插件百科链接)
此教程由作者在github项目的Wiki中的内容汉化而来
相信粘液科技(即远古工艺)只要玩纯净服的玩家们都是耳熟能详的——没错,就是当下最流行(BUG最多)的科技插件。可是它只有这么几个附属插件(附属列表详见Slimefun4原贴)——不用担心!SF为我们提供了一个API接口,让我们可以自己编写SF物品!
前提:你至少需要会写一个含有事件监听的插件
准备:
下载合适版本的CS-CoreLib、最新版Slimefun4放在同一个目录
开始:
首先把CS-CoreLib和SF4两个插件的jar文件添加到你插件的classpath
然后在plugin.yml中添加内容
- depend: [CS-CoreLib, Slimefun]
创建一个分类(就是“武器”、“基础机器”、“矿物”之类出现在手册首页上的图标):
- new Category(ItemStack item)
# 这会创建一个以你给出的物品堆为图标的分类
- new Category(ItemStack item, int level)
# 第二个参数用于设定分类的等级(分类的等级可以在书本GUI中查看,第一页是一级,第二页是二级,以此类推)
- new LockedCategory(ItemStack item, Category... categories)
# 创建一个锁住的分类,第二个参数需要指定前置分类(例如原版分类中,“能源器械”需要解锁所有的基础器械才能解锁)
- new LockedCategory(ItemStack item, int level, Category... categories)
# 上面两者的结♂合体
示例(创建一个名字叫“令人惊叹的钻石”,注释为“> 点击打开”的图标为钻石的分类):
- Category category = new Category(new CustomItem(new MaterialData(Material.DIAMOND), "&4令人惊叹的钻石", "", "&a> 点击打开"));
创建新的物品(分类中的物品):
- new SlimefunItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe)
示例(创建一个在“令人惊叹的钻石”分类中的粘液科技物品——能够在加强工作台(上面一个工作台下面一个发射器)中用2个钻石、1个泥土合成的名字为“绿色的钻石”的图标为钻石的新物品,其检索名为“GREEN_DIAMOND”):
- SlimefunItem item = new SlimefunItem(category, new CustomItem(new MaterialData(Material.DIAMOND), "&a绿色的钻石"), "GREEN_DIAMOND",RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.DIAMOND), null, null, new ItemStack(Material.DIRT), null, null, new ItemStack(Material.DIAMOND), null});
创建新的方块(可放置,挖掘后掉落原来的物品,不 会 失 去 NBT 属 性):
代码与创建物品完全一样,只需要确保新物品的材质是一个方块(Block)就好了
示例(创建一个在“令人惊叹的钻石”分类中的粘液科技方块——能够在加强工作台(上面一个工作台下面一个发射器)中用1个泥土、一个钻石块、1个钻石合成的名字为“绿色的钻石块”的图标为钻石块的新物品,其检索名为“GREEN_DIAMOND_BLOCK”):
复制代码
- SlimefunItem block = new SlimefunItem(category, new CustomItem(new MaterialData(Material.DIAMOND_BLOCK), "&a绿色的钻石块"), "GREEN_DIAMOND_BLOCK", RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {null, new ItemStack(Material.DIAMOND), null, null, new ItemStack(Material.DIRT), null, null, new ItemStack(Material.DIAMOND_BLOCK), null});
创建新的研究,并注册你的物品、方块:
你可能注意到:上面的代码写完后,粘液科技里是不会多长东西的
其实它们需要注册(写好之后只是存储在变量里的,注册后才会出现在游戏中)qwq
注册物品、方块(item为变量名):
复制代码现在该物品会出现在你的分类中了
- item.register();
添加研究项目(一项研究可以包含多个物品):
复制代码# id为研究的id,可以理解为模组中物品的id,name是研究的名称,一般为英文(例如4件强化合金护甲的研究名为“强化合金套”),level是解锁需要的等级
- Research research = new Research(int id, String name, int level);
给一项研究添加物品:
- research.addItems(SlimefunItem... items);
注册一项研究(不注册就不会出现在游戏中):
- research.register();
个人编写经验:
每个粘液科技物品的变量声明并赋值后一定要紧跟着注册代码,否则如果在没注册的情况下调用该物品,在游戏中会显示为空气
另外,FOR循环会给编程效率带来意想不到的提高qwq(参考ExtraGear)
感谢楼主,非常有用!
感谢教程,涨知识了。
评个分鸭qwq
楼主还在吗,想问一下电力机器怎么弄?看半天源码都没找到电在哪
lingshen233 发表于 2019-8-20 19:55
楼主还在吗,想问一下电力机器怎么弄?看半天源码都没找到电在哪
有几个附属插件添加了电力机器(例如量子科技),你可以去看看他们的源码
BlueHalo 发表于 2019-8-22 07:57
有几个附属插件添加了电力机器(例如量子科技),你可以去看看他们的源码 ...
好的,谢谢楼主