本篇教程由作者设定使用 CC BY-NC 协议。

简介

NEI算是一个功能非常杂的mod了,但是很多人对NEI的了解甚至还只局限于作弊上,然而实际上NEI的功能对无论是生存还是创造都有很大的帮助。

NEI完全开源,作者为Chickenbones,如果想要贡献代码可以去:https://github.com/Chicken-Bones/NotEnoughItems


安装的时候注意一点,NEI在客户端和服务器都能安装,而且推荐两端同时安装。

在下面我会详细列出NEI的绝大部分功能,不过可能还有遗漏,如果发现请告诉我,回来慢慢翻源码看看能不能再发现什么。

注意,下面写出的快捷键都为默认按键,可以在左下角Options里面更改。使用的MC版本为1.7.10+1.8。


如果觉得百科的页面太挤了,可以到mcbbs去看:http://www.mcbbs.net/thread-495961-1-1.html


由于Chickenbones的弃坑,NEI在1.9+的版本将由covers1624维护,最新的工程可以在这里找到:https://github.com/TheCBProject/NotEnoughItems

同时,你也可以选择其它几个NEI的port版本:


对于区块边界的显示暂时可以使用下面几个工程代替:


本教程使用Creative Commons 4.0 BY-NC协议,如果想要转载请不要有商业用途,署名(喵呜J或fyfly),并告知我。另外,请最好不要转载,要是真是想宣传请直接发送链接,我这里会更新很频繁,转载之后可能会导致一些错误没有被改过来。


合成配方篇

NEI查看合成配方非常方便,最基础的操作就是鼠标悬停在一个物品上方按下R键就行了。当然,除此之外还有很多其他的功能,总结在下面这个列表:

  • 查看选中物品的合成配方:悬停物品上方按R,或Recipe模式右侧物品栏左键

  • 查看选中物品的用途:悬停在物品上方U,或者悬停物品上Shift+R,或者Recipe模式右侧物品栏右键

  • 查看指向方块的合成配方(Waila):指向方块按小键盘3,注意这一条是Waila的功能,Creative+模式下有Bug

  • 查看指向方块的用途(Waila):指向方块按小键盘4,注意这一条是Waila的功能,Creative+模式下有Bug


下面是一张合成表的截图:

NEI使用教程-第1张图片

介绍一下界面:

  • 点击上方的箭头可以切换不同的配方类型(有序合成,无序合成,机器等)

  • 点击合成表中间的箭头可查看该类型的所有配方

  • 左键任意物品或悬停按R能够查看物品的配方

  • 右键任意物品或Shift+R或U键能够查看物品的用途

  • 如果你在合成表界面里查看了其他物品的合成表,可以用Backspace键退回上一级合成表

  • 如果合成表使用了Ore Dictionary,匹配的物品会轮流显示,按住Shift键可以停止变换

  • 右下角有个"?"的按钮,3x3配方在工作台中查看配方才会显示,2x2及以下背包内就有显示

    • 直接单击它会在合成格子内投影出选中的配方

    • 如果你包里已经有了配方所需所有的物品,Shift+点击它会自动在合成格中摆放选中的配方(不支持包含武器或工具的配方已在1.7最新版本中修复,1.8好像还没修)


搜索篇

背包里面最下面那条黑色的框框就是搜索框,单击一下或者按一下F键就能输入了。


NEI的搜索是支持正则表达式的!如果你不喜欢正则表达式搜索,可以把Options>Inventory>Search Mode调成Plain。搜索是不分大小写的,也就是说Apple和apple效果一样的。另外,搜索会匹配物品的ToolTips(就是有些物品下面的说明),比如如果你搜索"No effects"就能搜索到那几个无效果的药水。


另外,搜索框的内容是记录到地图数据里去的。如果重新载入地图,之前的搜索数据不会丢失。


一些小技巧:

  • 输入"@x.y.z"格式能匹配到上方Item Subsets的物品选项卡,比如匹配Items>Potions>Neutral内物品,直接输入"@Items.Potions.Neutral"

  • 右键搜索框能直接清空

  • 双击搜索框能切换到高亮模式,他会将你背包所有格子变暗,之后将背包里匹配搜索内容的物品高亮。再次双击可取消


关于@标签搜索:

  • 标签的下一项用"."来表示,比如搜索Items>Potions>Neutral标签内物品,可以输入"@Items.Potions.Neutral"

  • 必须使用@符号开头的字符串搜索才能开启分类搜索功能,也就是说如果你输入"dark iron | @Factorization"并不会切换到Factorization的选项卡

  • 分类标签只输入其中一项也是可以的,比如说想要搜索Items>Potions>Neutral可以直接输"@Neutral",也就是说Mod选项卡里的内容只要输入"@mod名字"就行了

  • 分类标签匹配的内容如果在只输入一项的情况下可以不输入完全,比如Mod>BuildCraft标签直接输入"@BuildCr也可以,但是如果匹配到了多个标签,NEI会将它们都显示出来

  • 在标签搜索的过程中,也会同时进行普通的搜索,也就是说如果有一个物品叫做Factorization,那么搜索"@Factorization"的同时这个物品也会匹配上

  • 怎样搜索某个Mod下的所有物品?

    1. 搜索mod的名字,注意这个名字是与mcmod.info文件里的name项目对应的

    2. 搜索mod添加的创造模式选项卡的名字(比如BuildCraft某些物品因为创造模式选项卡才能搜索到,否则只能搜BC)

    3. 上面两项不但是不冲突的,而且是互补的


下面简单讲一下三种Search Mode的区别:

  • 简单(Plain):什么特殊功能都没有,匹配的是包含输入内容的物品

  • 正则表达式(Regex):使用正则表达式进行匹配,使用的是java.util.regex.Pattern进行的匹配

  • 拓展(Extended):默认就是这个,在正则匹配基础上添加通配符(Wildcards)匹配,它的原理就是通过将输入内容的

    • "."替换为""

    • "?"替换为"."

    • "*"替换为".+?"

    • 从而实现通配符,之后进行正则匹配


详细说一下拓展和正则模式:

拓展

本模式添加了两个通配符,分别为"*"和"?"。"*"代表任意字符串(不限长度),"?"代表一个任意字符。

比如说你如果要搜索苹果,但是你忘了怎么拼了,只记得几个字母,那么可以这样:

  • a*le:匹配任意以a开头的以le结尾的字符串,比如说apple,acble,afcle

  • ap?le:匹配任意以ap开头以le结尾的长度为5的字符串,比如说apple,apele

该模式支持正则表达式支持的所有语法,详细见下。

正则表达式

本模式支持正则表达式的所有语法,并且没有拓展模式中通配符,用起来更清爽,个人更喜欢这个模式。

由于正则表达式规则太多这里只列几个常用的,其他的请自己谷歌百度找个正则表达式教程学习(这里随便找到一个,可以点击这里学习)

  • [abc]pple:匹配apple,bpple,cpple

  • [a-c]pple:同上

  • ap{2}le:匹配apple,{2}代表重复两次,{2,}代表重复两次以上,{2,5}表示重复2到5次

  • ^apple:匹配以apple开头的物品

  • apple$:匹配以apple结尾的物品。不推荐使用,因为物品的名字包含物品原本的名字 +" "+ ID +"#"+ ToolTips,一个"#"代表一个回车。也就是说名字的末尾是ToolTips,即使没有ToolTips也需要关掉ID显示才能正常使用

  • stone|diamond:匹配stone或者diamond,这条语句可以很方便搜索多个内容

  • (?=.*diamond)(?=.*armor):匹配既包含diamond又包含armor的物品,可以弥补diamond armor搜索不到Diamond Horse Armor的问题


这里说一下NEI内部的物品名字,比如说这样一个物品:

NEI使用教程-第2张图片

它实际的名字是:

"Potion of Swiftness 373:8194#Speed (3:00)##When Applied:#+20% Speed"


但是如果你要在Regex或Extended模式搜索全称,需要搜索:

"Potion of Swiftness 373:8194#Speed \(3:00\)##When Applied:#\+20% Speed"

因为有些字符在Regex中有特殊作用,要用转义符才能匹配。当然啦,估计没有人会要搜索到这种程度/w\


另外如果加上Waila的话,如果在NEI搜索会匹配上Waila显示的那条mod名称,但是这条mod名不在物品的名字里,是作为单独的一条的。


也就是说直接搜索

"^BuildCraft$" (严格匹配"BuildCraft")

也会匹配到所有mod名显示为BuildCraft的物品。


特殊字符一共有:

  • \

  • ^

  • $

  • .

  • |

  • ?

  • *

  • +

  • (

  • )

  • [

  • {

想要搜索的话请在前面加\,比如匹配"\"就输入"\\"


背包操作篇

这应该算是NEI知道的人最少的功能了吧,但是这个绝对是辅助生存模式非常棒的一类功能,注意以下内容可能会和某些mod冲突,请自行检查。


具体有以下几点:

  • 合成物品时右击产出框:使用输入原料合成多次物品,直到满组或者原料用光,如果已经拿着物品了,合成出来的物品会堆叠到拿起的那个物品上(原理是连续处理64次合成事件orz)

  • 打开一个容器的时候,鼠标悬在物品上滑动滚轮:会将物品传输到容器当中,或从容器取出(绝对是最棒的一个功能)

  • 打开一个容器的时候,拿起一个物品,按住Shift并点击同类物品:传输所有同类物品到容器里

  • 作弊模式下Ctrl+左击物品:补满当前堆物品,如果已经满了,则再给一组

  • 作弊模式下Ctrl+右击物品:补充一个物品

  • 作弊模式下悬浮物品上方Ctrl+Q:给一个当前物品(这是原版中的扔出当前格子所有物品,被NEI覆盖)

  • 生存模式下悬浮物品上方Shift+Q:扔出当前种类所有物品,注意这个是分容器的,比如悬浮在箱子里的物品上只会扔箱子里的物品(对应原版类似功能Ctrl+Q)

  • 创造模式+(Creative+)下 Ctrl+滚轮:滚动切换工具栏的物品


物品分类篇

物品的分类(Item Subsets)就是背包NEI界面最上面的那个大大的按钮,左键点击后会出现一个下拉菜单,里面可以通过不同的分类浏览物品。


如果你在任意一个分类或子分类上Shift+左击,下面搜索框会自动输入分类名称,并匹配该分类下所有物品。

如果你任意右击一个分类或物品,那么这个物品将会被右侧的物品面板排除,如果重新左键一下就能重新选中,你可以利用这个功能排除ForgeMultipart数量众多的小方块。

双击任意一个分类能够关闭除该分类以外所有物品,注意这与Shift+左击不同,这个是隐藏了多余物品,Shift+左击是匹配了当前类别下的物品。


之前版本能够右击分类的按钮保存设置好的分类,但是新版本这个功能好像还没实现。


工具篇

这里的工具指的是Data Dumps,进入方法为Options>Tools>Data Dumps。这个小工具能够导出游戏的很多数据,特别是药水,附魔,生物群系这三项对于整合包制作者的帮助非常大,因为这三项会存在id冲突,请整合包作者随时检查这三项内容。输出的文件在.minecraft/dumps文件夹里。

下面解释具体每一项的作用:

  • 物品(Items):导出所有注册过的物品,文件名为item.csv。输出的内容包括:名字(非本地化),ID,是否是方块,所属mod,所属类

  • 方块(Blocks):导出所有注册过的方块,文件名为block.csv。输出的内容包括:名字(非本地化),ID,是否有对应物品,所属mod,所属类

  • 药水(Potions):导出所有的药水,文件名为potion.csv。输出内容包括:ID,名字(非本地化),所属类。包含三个选项:

    • All:输出所有id的药水(0-31)

    • Free:输出空闲的id

    • Used:输出已用id的药水

  • 附魔(Enchantments):导出所有的附魔,文件名为enchantment.csv。输出内容包括:ID,名字(非本地化),附魔物种类,最小等级,最高等级,所属类。包含三个选项:

    • All:输出所有id的附魔(0-255)

    • Free:输出空闲的id

    • Used:输出已用id的附魔

  • 生物群系(Biomes):导出所有的生物群系,文件名为biome.csv。输出内容包括:ID,名字,气温,降雨,生成几率,基础高度,高度变化,种类,所属类。包含三个选项:

    • All:输出所有id的生物群系(0-255)

    • Free:输出空闲的id

    • Used:输出已用id的生物群系

  • 物品面板(Item Panel):导出当前物品面板(右侧面板)中物品的信息,包含四个选项:

    • CSV:输出物品信息为CSV格式,文件名为itempanel.csv。输出内容包括:物品ID(字符串),内部ID,metadata,是否包含NBT信息,显示名字

    • NBT:输出物品的NBT信息,文件名为itempanel.nbt。输出的内容是一个包含了NBTTagList的NBTTagCompound,NBTTagList里面包含的内容有ID,数量,伤害值(即metadata)还有物品的NBT数据,不过好像想不出来有什么用途。它使用CompressedStreamTools.writeCompressed()输出,如果开发者想要读取输出的信息可以用CompressedStreamTools.readCompressed()来读取。简单写了一个读取的演示,代码见这里

    • JSON:输出物品信息为JSON格式,文件名为itempanel.json。这个实际上就是上边NBT数据转化成了JSON形式,输出内容包括物品id(id),物品伤害值(damage, 即metadata),和NBT数据(tag)

    • PNG:输出物品面板内所有物品为PNG图片,文件输出到itempanel_icons文件夹。功能类似于Item Render,并且可以选择输出大小,最小为16x16,最大为256x256。如果想用这个输出物品图片传到百科也是可以的。


作弊操作篇

这部分内容比较多,分开说,这一部分对Mod解说者来说非常强大,如果想要解说Mod视频请务必要安装NEI。本篇所有内容请保证模式为Cheat Mode。另外,各位请一定要克制住自己/w\。

首先来看下总体的界面吧:

NEI使用教程-第3张图片


一. 工具面板(左上角那个)

这个面板里的东西都是非常常用的一些选项,下面分别介绍他们,顺序为从左往右,从上往下:

  • 删除模式(Delete Mode):单击启用。使用请左击背包内的物品,被左击到的物品就会被删除。Shift+左击物品会删除同类所有物品(批量删除都包括打开的容器)。右击或Shift+右击物品会减少该堆物品的1个。Shift+单击删除模式的按钮会清空背包。拿着物品左击删除模式按钮会删除该堆物品。拿着物品右击删除模式按钮会删除一个。拿着物品Shift+左击删除模式按钮会删除同类所有物品

  • 下雨(Rain):单击切换世界的下雨状态,右击按钮直接禁用下雨(也就是世界不会下雨了),禁用状态下左击启用下雨。如果按钮变成蓝色,则世界正在下雨中(有时候有Bug)

  • 游戏模式(Gamemode):一共有4个模式(Spectator在1.8版本里也没有),分别为SurvivalCreativeCreative+Adventure,每次单击都往下切换一个。其中Creative+并不是一个真正的游戏模式,它只在NEI内部有标明,实际上对应的原版GameType都是Creative,没有区别。注意这个设置的只是玩家的游戏模式,而不是设置的世界的游戏模式

    • Creative+:这个模式在原版背包的基础上新增了54个格子,相当于一个大箱子的容量。还有一个非常特别的特性,关闭背包的时候Ctrl+滚轮能来回切换工具栏的物品。注意背包满了之后捡起的物品不会拾到到拓展的背包里。非常适合建筑党来使用

  • 磁铁模式(Magnet Mode):服务器上只有服务端也安装了NEI才能使用。这个功能会吸引半径为16x8x16(x,y,z)的掉落物.注意如果你的背包满了(C+的拓展背包不能拾起物品),磁铁模式不会主动吸引物品,范围恢复到原始,但是创造模式你仍然可以捡起物品,不过会自动删除

  • 时间(Time):一共有四个时间分别为6:00(Dawn)12:00(Noon)18:00(Dusk)0:00(Midnight),一小时为1000ticks,即时间点分别为6000,12000,18000,0。为了保证时间是永远向前运行的,每次切换会切换到第二天的该时间点,所以如果你切换频繁了,游戏天数会不断上涨。右键点击图标会禁用该时间段,最多只能禁用三个,禁用之后到达该时间段会直接跳过到该时间段的结束,左键可以重新启用

  • 治疗(Heal):点击之后会恢复玩家20点生命值,恢复饱食度,并熄灭身上的火


二. 保存背包(左边那个)

这里的功能对Mod解说者非常有用,你们可以保存解说所需要的所有东西,身上乱了之后直接Load一下就能复原了。

NEI提供了7个保存槽(代码里写死了!),每个槽都可以保存一个背包状态,这个保存状态是可以跨世界甚至是跨服的。注意这个功能能够保存C+模式的背包的,即使不在C+模式加载的背包,换成C+模式仍然会显示刚刚加载的物品! 这个保存还支持容器的保存,打开容器时候点击保存就行了。

下面是对槽的操作:

  • 保存:直接点击任何一个包含有Save字样的槽就行了

  • 读取:直接点击任何一个包含有Load字样的槽就行了

  • 重命名:右击任意一个槽就行了,不管有没有保存东西,右击之后会提示你输入字符,按回车确认

  • 删除:已经保存过的槽右边会有一个X字按钮,点一下就删除了


三. 附魔

NEI提供了一个附魔的功能,在背包里按X键打开,界面会是这样的:

NEI使用教程-第4张图片

忽略那个青金石的物品框,不需要的。

点击上面的Level左右按钮能够切换等级,最高等级为10级,点击右边附魔就能添加了,添加之后再点击一次就能取消附魔。


那个Locked选项表示检测冲突附魔及附魔工具种类,比如剑只能附和剑有关的附魔(锋利,节肢杀手等),而且锋利和节肢杀手这种冲突附魔不能共存。

点击一下那个Locked按钮就能解锁附魔,Unlocked模式下不会检测冲突和种类,所以剑就能够附装备的附魔,并且也能附冲突的附魔。


四. 药水

药水和附魔功能类似,按P键打开面板,大概是这样的:

NEI使用教程-第5张图片

在下面那个药水槽里放入除水瓶以外任意药水就行了。

如果要添加效果,左击右边的效果就行了,点击Level的左右箭头能够调整等级,最大值为4级。

点击上面的Duration能够编辑持久,右击Duration可以清空,Duration最大只能够填27:18。

如果要取消效果,右击效果就行了。

最上面有一排收藏药水,你可以把制作好的药水放到上面标记。标记过后可以源源不断地拿,Shift+左击可以拿无限数量的药水,Ctrl+左击可以直接将药水传送背包,想要取消标记右击对应药水就行了。


五. 物品面板(右边那个)

大家应该都很熟悉这个面板了,这么明显,并且都见过这么多次了。点击上方的箭头或者用滚轮或者PageUp和PageDown按钮能够翻页。

对物品一共有这些操作:

  • 获取一组:左击物品

  • 获取一个:右击物品

  • 获取特定数量:在下面那个输入框指定数量,之后左击物品

  • 获取无限物品:Shift+左击物品,无限物品能够无限放置无限扔出,显示为111个


输入框的编辑:

  • 左击:激活输入框,直接输入数字就行了

  • 右击:清零

  • 左击加号:添加1个

  • 左击减号:减少1个

  • Shift+左击加号:添加10个

  • Shift+左击减号:减少10个

  • Ctrl+左击加号:添加64个

  • Ctrl+左击减号:减少64个


刷物品的时候记得一定不要超过背包剩余容积,会崩溃的,这个Bug到现在还没修复。Not Enough Issues


其它

一. 显示/关闭NEI

按下O键即可隐藏侧边框,如果要完全禁用NEI,去设置设置NEI Disabled并按下O键就行了。


二. 方块高亮

按下小键盘0键能切换方块高亮的开关。如果想要调节位置的话去Options>World>Highlight Tooltips里面,在中间按钮为Shown的时候拖动高亮的方框,如果中间按钮为Hidden点击一下按钮就能变成Shown了。不过仍然建议安装Waila,不推荐使用NEI的方块高亮。


另外,Waila和NEI的方块高亮是独立的!也就是说你可以同时开启Waila的高亮和NEI的高亮(两个方框)。注意小键盘0这个按键如果装了Waila打开的是Waila的设置,如果想要调节Waila高亮的,按0之后点击Waila>Configure aspect...之后就可以拖动方框调节了。选项Alpha是透明度,Scale是缩放比例。


三. 怪物生成指示

按下F7键开始,再次按下结束,打开之后地面上会出现红色和黄色的网格。

黄色的网格表示该格怪物只在夜间生成,白天不会生成。

红色网格表示该格怪物会在白天和夜间都生成。

看到这两个标示就赶快插火把吧!


四. Chunk指示

按下F9开始,第一次按下显示Chunk的顶点,第二次按下显示Chunk的范围边界,再按一下就停止。

显示会是这样子的:

NEI使用教程-第6张图片

绿色标示边界,红色标示顶点。


五. asm文件夹

如果你安装了NEI,运行之后你会发现在.minecraft文件夹下多出来一个asm文件夹。


这个文件夹其实是由NEI的前置CodeChickenLib输出的。由于NEI需要注入原版代码,大量地使用了ASM,并且用的是CCL的ModularASMTransformer。这个类会自动输出转换过的结果到文件里用来debug,所以就成了现在的asm文件夹里面的文件。注意并不只有NEI用到了这个类,其他还有很多Mod也都用到了。

所以如果你想删除这个文件夹,当然可以,这个只是debug用的,代码里看到个选项能关闭生成,但是一直没找到那个选项在哪设置。


六. NEI插件

NEI由于提供了API,许多mod都对NEI进行了支持。在Forge Mods列表里你能看到加载的NEI插件:

NEI使用教程-第7张图片

目前还有很多专门的NEI插件,现在还在更新比较推荐的有:


设置篇

设置比较少用,放到最后。NEI本身还是有很多可以设置的选项的,本部分分两块来说。第一部分是Options里的选项,第二部分是config文件。注意NEI客户端的config文件在.minecraft/config/NEI下,服务端的在world/NEI下。


一. 选项(Options)

选项分为Global和World两种模式,点击右上角的按钮可以切换。Global模式下的设置是全局的,所有世界都能共享,而World模式则是对当前世界特定的,不会影响到其他世界的设定。在World模式下左边会出来一排W的按钮,左键选中右键取消,更改选项自动选中,选中代表该项采取World的设置,未选中代表直接继承Global模式下的设定

首先我们来看Inventory下的几个选项:

  • NEI Enabled/NEI Disabled:关闭NEI的显示,与O键不同,这个关掉之后左下角还是有个Options按钮,但是NEI功能完全禁用了,不像O键只是隐藏侧边框

  • 模式(Mode):一共有三种模式,分别为Cheat Mode,Recipe Mode和Utility Mode,下面分别介绍一下。另外不知道什么原因,单机在这里的设置要调到World模式更改才能更改成功,或直接在World模式中把W按钮右键关掉。在服务器模式会根据玩家是否是Op自动更新,没有Op自动Recipe Mode,有了Op作弊的按钮自动出来(其实只是改了功能而已,没改模式)

    • 作弊模式(Cheat Mode):拥有所有的功能,刷物品,调整世界设置等

    • 合成模式(Recipe Mode):推荐生存使用的模式,只有查看合成表和搜索的功能

    • 实用模式(Utility Mode):介于作弊模式和合成模式中间的一个模式,点击右边的物品面板里的物品只能查看合成表,但是你可以自定义放在左上角的那些工具,并且可以使用

  • 实用模式功能(Utilities):左击按钮就能启用功能,右击按钮就能关闭,这样可以自定义实用模式的工具面板,注意最后一个Items指的是背包状态保存功能

  • 游戏模式(Gamemodes):选择游戏模式按钮能切换的游戏模式,生存模式不可关,左击打开右击关闭

  • 布局风格(Layout Style):分为TMI和Minecraft两种,TMI风格是为了满足一些TMI老用户的需求

  • 物品排序(Item Sorting):里面有各种不同的排序因素,可以拖动排序,按照优先级排序。里面的因素分别为:

    • Minecraft:原版物品最先筛选

    • Mod:将Mod物品组合到一起,并按照Mod名称排序

    • Item ID:按照物品ID大小排序

    • Default:保持物品状态自然不变

    • Item Damage:按照物品的耐久(Metadata)排序

    • Display Name:按照显示名字排序

  • 物品ID(Item IDs):有三种模式:Auto,Shown和Hidden

    • Auto:在NEI禁用或隐藏的时候不显示ID,在NEI显示的时候显示ID

    • Shown:一直显示

    • Hidden:一直隐藏

  • 搜索模式(Search Mode):在搜索篇已经讲过了

  • 合成查阅性能分析(Profile Recipes):在物品合成表后面会多一个Crafting Profiling界面,记录查询的耗时,debug使用,一般不需要开启:

NEI使用教程-第8张图片


World选项里面只有一个Highlight Tooltips的功能,你可以调整高亮提示框的位置与是否显示,具体见其它里的方块高亮。

Command选项里面是针对一些特殊的服务器使用的指令。

Keybindings就是调整键位的地方,不多说了。唯一说一点就是右键按钮能删除当前按键设置(NONE)。


二. Config文件

能在客户端里找到的选项我这里就省略了,自己去客户端调。


客户端下client.cfg文件

# 检查更新

checkUpdates=true

#对于那些自控力低的人

#把下面这条改成对应的模式,这样你就在游戏里改不了了,可用选项:0(生存),1(创造),2(创造+),3(冒险),-1(禁用)

inventory.lockmode=-1


服务端下server.cfg文件

#使用权限

permissions

{

    adventure=OP

    creative=OP

    creative+=OP

    delete=OP

    enchant=OP

    heal=OP

    item=OP

    magnet=OP

    #这一条是刷物品的时候会得到提示

    notify-item=CONSOLE, OP

    potion=OP

    rain=OP

    save-state=OP

    time=OP

}


后面一共可以填:

  • 玩家名:例如,time=CodeChicken, Friend1

  • OP:仅限OP使用

  • CONSOLE:仅限控制台使用

  • ALL:全体玩家都能使用


服务端下banneditems.cfg文件

{name:"minecraft:command_block"}=[NONE]


这个前面是一个JSON字符串,代表一个NBT数据,Tag一共可以有四个:

  • name:名字,注意是modid:name这种形式的

  • Count:个数,不填默认为1

  • Damage:伤害值(metadata),不填默认为0

  • tag:NBTTagCompound数据,不填则为空


是不是感觉很熟悉呢?没错,结合CSV和JSON导出的信息就能很方便地填写这一项了!


后面是允许的玩家或群体,简单来讲就是白名单,一共可以填:

  • NONE:不允许任何人

  • 玩家名:例如{name:"minecraft:bedrock"}=[RebirthIsHope, Meow_J]

  • OP:允许OP

  • CONSOLE:允许控制台(基本没用)

  • ALL:无限制


插件编写篇

百科代码编辑是坏的,所以这一块推荐去mcbbs看:http://www.mcbbs.net/thread-495961-1-1.html

由于这块内容灵活度太大,我不可能将每一个方法都介绍到,所以我只会挑选出几个常用的来讲。如果你是普通玩家那么这部分你可以跳过。


一. 依赖
第一步当然就是添加依赖了。首先,打开你的build.gradle文件,在文件的下面添加这样几行:

repositories {

    maven {

        name = "chickenbones"

        url = "http://chickenbones.net/maven"

    }

}

dependencies {

    compile "codechicken:CodeChickenLib:1.8-1.1.2.139:dev"

    compile "codechicken:CodeChickenCore:1.8-1.0.5.36:dev"

    compile "codechicken:NotEnoughItems:1.8-1.0.5.104:dev"

}

当然,dependencies里面的版本请自己选择合适的,这里可能不是最新的,如果你要是1.7.10的mod就选择1.7.10的版本,具体的版本号请到这里(CCC, NEI)和这里(CCL)查看。


接下来,把那几个dev的mod文件下载下来,加到你IDE的依赖里,这里很简单就不说了。


二. IConfigureNEI
我们需要先创建一个类实现(Implements) IConfigureNEI,名称随意,我在这里将其命名为NEIConfig。这个类的作用相当于是一个入口,当NEI需要载入插件的时候会搜索到这个类,从而加载你的插件。


你一共需要实现三个方法:

  • loadConfig:这个方法是用来注册Handler或者设置一些其它东西的,经常使用的有API.registerRecipeHandler(),API.registerUsageHandler(),API.setGuiOffset()

  • getName:这里只需要返回你设定的NEI插件名字就行了,它会显示在NEI已加载插件那里

  • getVersion:返回你设定的版本号


参考代码:http://git.io/MJNEICFG


三. RecipeHandler

RecipeHandler是编写插件最重要的一部分了,当然它也非常复杂。不过还好,Chickenbones给我们提供了一个TemplateRecipeHandler,你可以直接继承这个类而不用写很多重复性的代码。这个类本身其实就相当于一个教程,里面每个方法基本都有文档,你可以参考它来写你自己的Handler。

这里我们首先新建一个类继承TemplateRecipeHandler,我这里命名为RecipeHandlerMeowMachine,作为喵呜机的配方。之后去IConfigureNEI类,在loadConfig下加入这样两行:

        API.registerRecipeHandler(new RecipeHandlerMeowMachine());

        API.registerUsageHandler(new RecipeHandlerMeowMachine());

这两行分别注册了配方和用途的Handler,都是我们刚刚注册的那个类。

接下来我们需要新建一个内部类继承CachedRecipe,这里是CachedMeowMachineRecipe。它作为NEI内部的配方形式。

我们需要实现这两个方法:

  • getIngredients:返回一个List,里面装有该配方的原材料的PositionedStack

  • getResult:返回该配方产物的PositionedStack


当然除此之外还有很多方法可以Override,比如副产物可以用getOtherStacks之类的,大家可以自行探索。这里的PositionedStack为一个有固定坐标的物品,注意在构建PositionedStack时候那个Object可以是ItemStack或者是ItemStack的List/数组。

参考代码:http://git.io/MJNEIRH


回到RecipeHandlerMeowMachine,我们实现这几个方法:

  • getGuiClass:返回你机器Gui的类,如果Gui的偏移有问题,到IConfigureNEI的loadConfig方法里添加API.setGuiOffset()调整

  • getGuiTexture:返回你机器Gui材质的地址

  • getRecipeName:返回显示在配方最上方的配方名称

  • recipiesPerPage:返回每页显示的配方数量,推荐写1防止出问题

  • loadTransferRects:里面用transferRects.add()在Gui上添加一个区域可以点击用来显示当前机器的所有配方,类似于工作台那个箭头

    • this.transferRects.add(new RecipeTransferRect(new Rectangle(起始x, 起始y, x长度, y长度), "过滤用ID"));

  • loadCraftingRecipes(String outputId, Object... results):覆盖这个是用来加载所有配方的时候过滤ID的,基本想法就是,在outputId等于过滤ID时候在this.arecipes里添加所有的配方,除此以外按照默认的来处理。注意this.arecipes代表匹配到的配方

  • loadCraftingRecipes(ItemStack result):根据产物搜索配方,基本想法是,遍历所有注册的配方,当产物相同的时候添加配方到this.arecipes

  • loadUsageRecipes(ItemStack ingredient):根据原料搜索配方,基本想法是,遍历所有注册的配方,当原料包含该物品的时候添加配方到this.arecipes


参考代码:http://git.io/MJNEIRH

如果还有什么不明白的地方,可以去这个工程参考:https://github.com/Meow-J/NEITest


如果你觉得文字教程理解太困难,请查看SF_Chipan的视频教程:http://www.bilibili.com/video/av2849844/