[GTNH矿物处理教程][IV可用][良好通用性]基于粘性卡和矿典过滤卡的AE分类物流网络 - [GTNH]格雷科技:新视野 (GT: New Horizons) - MC百科

[GTNH矿物处理教程][IV可用][良好通用性]基于粘性卡和矿典过滤卡的AE分类物流网络 - [GTNH]格雷科技:新视野 (GT: New Horizons) - MC百科

前言

"矿物处理"作为一个贯彻整个游戏流程的问题,想必各位玩家都有着深刻的体会。不像原版游戏里直接烧一下就能用的铁锭或挖出即用的钻石,GTNH中的很多矿物必须经过冗长的处理才能加工为方便我们使用的形态。而对于绝大多数矿石来说,选择一条合适的处理流程能够为我们带来不小的回报,尤其是做出大粉碎机解锁副产之后。

也许前期我们还能靠手搓处理矿石,但随着科技的发展和生产力的提高,很快你的仓库就会被堆积如山的矿石塞满,手搓处理会渐渐变得难以完成——在如此巨大的需求量面前。更何况,GTNH中还存在着大量需要专门处理流程的矿物——要是一直手搓铂处理的话想必这辈子有了(笑)

矿物处理的意义,便是为了解放玩家双手。我们只需要投入采矿机(采矿场)生产的各种矿石原料,经过处理就能够得到我们想要的矿粉、矿锭、宝石等材料。从此之后黑奴就可以专心挖矿了(悲)

一套"矿物处理"系统应该包括'原材料的输入和分类'、'各形态矿物加工'和'产物的输出'这三个组成部分。这些物流分类和处理步骤必须全部靠系统本身独立流畅完成不能卡住,也就是说玩家只要挂机就可以了。需要人力去疏通的"矿物处理"都是不合格的!合格的"矿物处理"系统,其矿物分类和物流不容出现一丝谬误,否则你就等着被乱窜的矿石搞得手忙脚乱吧。

本教程从游戏中期的视角出发,探讨如何实现这样一种"无人工"和"防误操作"特性的"矿物处理系统"。什么?你说你想要憋出集成矿石处理场再手动标记?好吧,我尊重你的选择,但你确定不提前享受一下矿物完全自动化处理的便利吗,理论上这个系统兼容任何用于矿处的机器。

声明

还是那句话,非原教旨主义者,警察和小鬼自觉远离,鼓励留言。

教程性质为个人,可能存在作者口胡和乱玩梗行为,阅前请知悉。已经燃尽了

教程撰写时游戏版本为2.7,适用阶段至少为IV。实际上,只要关键组件"粘性卡"和"矿典过滤卡"存在,就能够于任意游戏版本实现该构筑。

如何食用本文?

在阅读之前,希望你是个mc老手,有仔细阅读任务书,参考过GTNH中文Wiki的"矿物处理"页面与"矿典过滤卡" 页面,有充分的AE使用经验,熟悉AE各组件的功能并能理解主网子网的概念。该教程中存在大量枯燥的理论知识,希望你能够有耐心吃下这一坨。

本文推荐食用方式为:顺序阅读。除非确认你有十分充足的游戏经验,否则请不要跳过任何一章,每章之间都有联系,错过某些知识点会让你的学习事倍功半!

为什么点击目录标题并不能准确的跳转到对应页面?因为教程很玉藻的长而网页并不会完全加载教程所有内容,把进度条拉到底再回来就可以了!

为什么长图片不能完全显示?可以通过图片底部的进度条拖动观看,也可以点击放大直接观看!

总有一些物品及其用法并未被百科和Wiki完整收录,如果只靠自己不得其法,为何不去请教其他玩家呢?口惠而不费

矿物处理的概念、步骤与分类

"矿物处理"的概念

在教程开始前,相信你已经学会使用NEI查看矿物的形态树了。GTNH贴心的为我们列出了绝大多数矿物的处理步骤及产物,这意味着你不用再在不同的机器页面翻找这些配方了,这为我们查询配方提供了便利。

在背包里对着任意矿石按"U"键(默认)即可打开其对应的"GT矿物处理"页面。

如下图,以"黄铜矿"和"锡石矿"为例,对于绝大多数矿物(除了GT++的废土矿),GTNH都在NEI"矿物处理"页面列出了各种矿石的形态树和副产物概率。

而我们所要做的,就是根据我们的自身需求,选择一条收益最大的处理路线,来从矿物中获得我们想要的成分,毕竟很多稀有矿以副产物的形态存在于各种矿石中。即"按特定步骤处理特定矿石,以获得期望产物"。

"矿物处理"的本质

"矿物处理"的本质是"产线",一种'按特定规则分配特定形态的矿物到特定容器(机器)'的产线,由'物流网络'和各种'加工机器'组成。

"矿物处理"绝对是你在解决了基地供电问题后最值得在第一时间建造的产线,只要有了它与采矿场的组合,我们就能通过挂机就能获得源源不断的矿物资源。越早将它建造好便能够越早享受它的便利,越早完成'矿物的原始积累'。

矿物处理的步骤及分类

原始步骤和一次处理

根据"矿物形态树",我们把只经过"粉碎机"、"洗矿机"、"化学浸洗机"、"离心机"、"热力离心机"、"筛选机"、"电磁离析机"这些机器处理配方的,最终处理结果为"非含杂/洁净矿粉或各品相宝石"的处理步骤,称为"原始步骤"或"一次步骤"。

与之对应的,将只运行一次步骤的矿物处理产线称为"原始矿处"或"一次矿处"。然而目前电磁离析机的应用场景很窄,只在处理废沙粉和独居石处理上有用。

如图,当前版本(2.7)解锁"一次处理"大机器的顺序如下:

HV解锁——工业筛选机;

EV解锁——工业粉碎机、工业洗矿机、工业热力精炼厂、工业离心机;

IV解锁——磁通量效应监视器。

易知采矿场生产的各种粉碎矿石、各形态矿粉,经过"一次矿处"的处理后,其形态均被处理为"不含杂不纯净"的矿粉和各种品质的"宝石",这些产物有的可以直接使用,而有的需要进一步加工才能使用。

我们把无论后续要如何处理,但必须先经过"原始矿处"处理为对应矿粉或宝石的矿石称为"普通矿",将该类型的处理过程称为"原始处理"或"一次处理"。

什么是矿物的可用形态?

答:指的是矿物用途最为广泛,最方便我们使用的形态,如绝大多数的单质矿粉,既可以直接烧炼成锭以制造金属零件,也可以制成合金或作为某个产线的原材料使用。

注意,并非所有矿粉都要处理为单质形态,这样做反而会使其失去价值!如"云母粉"、"石棉粉"、"皂石粉"、"滑石粉"等等矿物,我们应该根据其用途保留原始形态储存。

进阶步骤和二次处理

很遗憾,并非所有矿石经过"原始矿处"后都能够被我们直接利用。大部分非单质矿粉需要经过离心或电解处理后才能变成可用的单质矿粉,而像镭-226粉则需要放入铅封盒衰变后才可以电解为氡。

目前能够进行"二次处理"配方的机器有:铅封盒、离心机、电解机、脱水机。

一般的,我们把"非含杂/洁净矿粉"、"各种矿渣、星尘"等等经单步加工为其可用形态的处理步骤,称为"二次处理"或"进阶处理"。在产线中,这个步骤也可以称作"末端处理"。

如图,当前版本(2.7)解锁"二次处理"大机器的顺序如下:

MV解锁——铅封盒;

EV解锁——工业离心机;

IV解锁——工业电解机;

LuV解锁——真空干燥炉。

类似的,在你拥有艾萨研磨机之前,真空干燥炉的用途也十分有限——主要用于某些干燥配方和稀土处理。

易知,"二次处理"的加工对象包含"一次处理"的加工产物。但是"二次处理"不包括需要专业产线处理的矿粉,如铂金属粉;也不包括将矿粉熔炼成锭或任何金属加工的步骤,如熔炉和高炉。

对于像是矿物的"一次处理"和"二次处理"这样能够针对绝大多数矿物的处理流程,我们也将这两者称为矿物的"通用处理"。

专用步骤和专线处理

一些需要经过专用产线才能处理或最大化收益的矿石,我们须以其特定形态将其保存。比如"粉碎的铝土矿矿石"(用于铝土处理产镓)、"粉碎的钛铁矿矿石"(湿法处理产金红石)、"洗净的黄铜矿/镍黄铁矿矿石"(湿法处理产铂系矿泥粉)、"粉碎的独居石矿石"(镧系),等等。

一般的,我们把如同"铝土处理"、"铂处理"、"独居石处理"、"硅岩处理"等等需要建造冗长产线的"专业"加工步骤,称为"专用步骤";对应的处理方式称为"专线处理"。

我们把需要以"特定(子)形态"且经过"专业步骤"处理的矿石称为"专线矿"。顾名思义,"专线矿"的处理除了可能经过"洗矿"或"化学浸洗"的通用步骤外,还须建造一整条对应的产线,而不是全都做成矿粉,那样会导致矿物失去价值!

然而,需要专线处理的矿物只占据所有矿石中的小部分,而本教程的主要内容便聚焦于建造用于处理绝大多数矿物的"一次处理"+"二次处理"这样的"通用处理"过程。

至此,我们根据矿物的处理流程,将处理方式进行了划分。这是十分有必要的事情,关系到我们搭建"矿物处理"的思路,后续的所有内容便都是建立在此基础上的!

矿物的各子形态及分类

一般的,对于绝大多数矿物,通过"原始处理",不考虑副产物,一共存在着8种主要形态,分别为:

形态名称原矿x矿石粗矿粗x矿石粉碎矿粉碎的x矿石洗净矿洗净的x矿石离心矿离心x矿石含杂粉含杂x粉洁净粉洁净x粉粉x粉以铁矿石为例,这8种形态如图所示:

在这之中,"原矿"、"粗矿"和"离心矿"一般都要粉碎处理;"含杂矿粉"和"洁净矿粉"一般都要离心处理;"矿粉"为末端产物,直接储存。

当然,在产能落后的前期直接把你的粗矿扔进熔炉或高炉里炼成锭也是不错的选择。

那么,剩下的"粉碎矿"和"洗净矿"按后续处理步骤的不同,我们可以将其再分类为⑨种形态,分别是:

形态\处理方式粉碎洗矿化学浸洗筛选热力离心专用产线粉碎矿二次粉碎矿水洗粉碎矿浸洗粉碎矿\热离粉碎矿专线粉碎矿洗净矿粉碎洗净矿\\筛选洗净矿热离洗净矿专线洗净矿其中,"水洗粉碎矿"、"粉碎洗净矿"为默认矿物处理步骤。"热离粉碎"这一处理工序会损失一次副产,一般不采用。

"粉碎矿"有3种特殊处理工序,即"二次粉碎"、"浸洗粉碎"和"专线粉碎";"洗净矿"有3种特殊处理工序,即"筛选洗净"、"热离洗净"和"专线洗净";其中"专线粉碎矿"和"专线洗净矿"不经过分类处理直接进入库存。

综上,对于"原始矿处"中的各种机器,分别需要处理如下种类的矿石:

机器/处理类型需要处理的矿物种类粉碎机原矿、粗矿、离心矿、粉碎洗净矿、二次粉碎矿洗矿机水洗粉碎矿化学浸洗机浸洗粉碎矿离心机含杂矿粉、洁净矿粉热力离心机热离洗净矿筛选机筛选洗净矿"不处理,直接进库存"专线粉碎矿、专线洗净矿、矿粉而对于"二次矿处",其选择就比较自由了,如下表格中的矿粉需要我们自己根据需求去分类:

机器/处理类型需要处理的矿粉种类铅封盒待衰变矿粉离心机待离心化合物矿粉、待离心液体、各种矿渣、星尘电解机待电解化合物矿粉、待电解液体脱水机待脱水化合物矿粉、待脱水液体至此,我们只需要将矿物对号入座,那么,如何将矿物送到它们该去的地方呢?

基于AE的矿物分类网络

GTNH特供版AE为我们提供了很多方便的工具卡,这使得我们可以十分轻松的利用AE网络来实现其他mod做不到的复杂分类功能。

一般的,作者不推荐在未解锁AE的情况下搭建复杂的矿处产线。一方面,前期向上突破的收益要高于原地踏步,另一方面,受限于工具,低阶段制造的矿物处理系统功能并不完美,与其耗费大量精力研究流水线分类器,不如努力发展解锁AE和各种大机器。在前期,利用好EIO物品导管和物品转运器便足够解决大多数问题了。

物品分类网络的结构

一个"分类网络"一般由最少两层AE网络组成,即'输入分类主网'和'分区存储子网',这样的设计能够起到良好的隔离效果,保证分类输出不受输入源污染。实际上,物品分类网络的基础仍然是"主网存储总线贴子网ME接口"的模式,只不过在该应用中,存储总线承担了分类功能,其使用模式为"只写",这样能够避免子网向主网递归从而减少卡顿。也就是说,物品在"分类网络"中的流动是单向的。

那么,有什么工具可以实现这样分区和分类的功能吗?

分区工具:粘性卡

看看这张被设了一脸粘液的工具卡吧,从它的外表和名称上我们很难看出什么有用的信息......而任务书上也缺乏关于这些AE卡用法的描述,至少作者很难靠着和粘性活塞对比去理解它"粘性"的概念。

实际上,这是一张用于给同一网络中的存储设备"分区"的工具卡,简单来说,它可以指定物品令他们只被存储于插入了粘性卡的设备。

"粘性卡"只须EV阶段解锁AE便可制作。

"粘性卡"的适用范围是"ME(物品)/虚空/流体存储元件"和"ME(物品)/流体存储总线"。也就是说,你可以单独给一个元件使用,或者给一整个存储总线下的存储子网使用。

"粘性卡"必须配合"元件工作台"或"存储总线"的白名单标记功能使用。白名单加粘性卡的作用相当于将此白名单的内容作为黑名单应用于同一网络中的其他存储组件。这个效果对于元件和存储总线来说是相同的。

也就是说,标记白名单配合粘性卡可以实现让输入网络中的被标记物品只从标记存储设备中读写。基于粘性卡,我们可以很轻松的实现物品的"分区储存",这样我们就能给予标记物品配置特定的存储设备,也就是独立的存储空间。妈妈再也不用担心我的AE被石头粉挤爆导致全网瘫痪辣!

那么,如果存在两个及以上白名单完全相同的添加了粘性卡的存储组件,白名单中的物品将如何存储呢?

答:粘性卡白名单对其他非粘性卡存储组件建立的黑名单仍有效,有相同粘性卡白名单的的存储组件,在指定了AE网络优先级的情况下按我们配置的优先级分配,在未指定的情况下按网络默认优先级分配。

以图中AE网络为例,被红色笔迹画圈的部分为主网部分,被绿色笔迹画圈的部分为子网部分。这是一个SSD网络,主网的作用是将外界输入到网络的物品(数据)按分类由存储总线输入到各子网之中,子网由存储设备和一个ME接口组成,子网本身只充当储存容器。可以通过粘性卡+白名单设置自由配置子网分区储存的内容。

粘性卡在划分存储分区和防止个别物品堵塞网络上起着至关重要的作用!

如果作者弄错了或遗漏了粘性卡的特性,请务必留言纠正或补充。

分类工具:矿典过滤卡

矿典过滤卡是分类网络的核心插件。顾名思义,其作用是代替手动标记白名单,根据"矿物词典"匹配物品。最关键的是,矿典过滤卡支持"正则表达式"模式,这令我们能够利用正则表达式按逻辑灵活匹配跨矿物,功能十分强大。

"矿典过滤卡"的适用范围是"ME(物品)/虚空存储元件"、"ME(物品)存储总线"、"ME输入/输出总线"和"显示元件"。很显然,它并不适用于流体元件和流体总线。问题是流体也没有矿物词典啊

"矿典过滤卡"必须点击其图标后在其GUI中输入用来匹配的字符串才能使用。注意,添加了"矿典过滤卡"后元件或总线本身的白名单标记功能将被禁用!原有的过滤名单均被矿典过滤卡的过滤逻辑代替。

矿典过滤卡GUI如图所示,在其文本输入框内,可以输入的最大字符串长度为256个字符(半角符号)。很遗憾,虽然256已经很长了但对于某些场合还是鞭长莫及。

矿典过滤卡支持不含元字符的普通匹配模式,也支持含元字符的正则表达式匹配模式。

在使用它之前,我们首先要弄明白'矿物辞典为何物'以及'如何使用"正则表达式"匹配字符(串)'。通常在游戏中我们不会遇到过于复杂的情况,只需要简单了解部分用法就足够了。

关于矿典过滤卡的详细用法案例可以参考Wiki"矿典过滤卡"页面。

为了能够按我们的需求精准匹配矿物,接下来作者将简单介绍"矿物词典"的概念和"正则表达式"的用法。

矿物词典:矿物的身份证

什么是矿物词典呢?

矿物词典亦称矿物辞典,是一种用来给物品分类的物品标签,几乎所有同名矿物都会注册相同的矿物词典,是统一不同mod间矿物必不可少的工具。同类物品通常有着相似的"矿物辞典",以便我们对整个"类"进行匹配。在高版本,矿物辞典已经演变成了"物品标签",分类用途不再局限于矿物。

使用NEI显示物品的矿物词典

打开背包,点击屏幕左下角的"NEI设置",进入"NEI选项",点击"物品栏",进入"物品栏"设置,进度条托到底,点击"显示矿物词典名",改为"是"。这样当你在NEI中查看物品信息时,在其图标底部便能列出其存在的矿物词典。

如图,一个物品可能存在着两个以上的矿物词典,也可能不存在矿物词典。对于未注册任何矿物词典的物品,显然是无法利用"矿典过滤卡"进行匹配的。

矿物词典的编写规律

让我们回顾一下矿物的形态与分类,显然,不同形态的矿物其矿物辞典有各自的命名规律,同形态不同种类的矿物,其辞典构造总是有着相似的部分。

还是以铁和钻石为例,下表列出了其不同形态下的矿辞名称。

形态名称矿物辞典形态标签成分标签原矿铁矿石oreIron / oreAnyIronoreIron/AnyIron粗矿粗铁矿石rawOreIron / rawOreAnyIronrawOre粉碎矿粉碎的铁矿石crushedIron / crushedAnyIroncrushed洗净矿洗净的铁矿石crushedPurifiedIron / crushedPurifiedAnyIroncrushedPurified离心矿离心铁矿石crushedCentrifugedIron / crushedCentrifugedAnyIroncrushedCentrifuged含杂粉含杂铁粉dustImpureIron / dustImpureAnyIrondustImpure洁净粉洁净铁粉dustPureIron / dustPureAnyIrondustPure粉铁粉dustIron / dustAnyIrondust锭铁锭ingotIron / ingotAnyIroningot可见,绝大多数矿物的矿辞构造均为"形态标签(头)+成分标签(尾)"的组合。一些材料如"铁",可能存在多个"成分标签",在使用的时候应该灵活考虑。

形态名称矿物辞典形态标签成分标签原矿钻石矿石oreDiamondoreDiamond粗矿粗钻石矿石rawOreDiamondrawOre粉碎矿粉碎的钻石矿石crushedDiamondcrushed洗净矿洗净的钻石矿石crushedPurifiedDiamondcrushedPurified离心矿离心钻石矿石crushedCentrifugedDiamondcrushedCentrifuged含杂粉含杂钻石粉dustImpureDiamonddustImpure洁净粉洁净钻石粉dustPureDiamonddustPure粉钻石粉dustDiamonddust(普通)宝石钻石gemDiamondgem破碎宝石破碎的钻石gemChippedDiamondgemChipped有瑕宝石有瑕的钻石gemFlawedDiamondgemFlawed无暇宝石无暇的钻石gemFlawlessDiamondgemFlawless精致宝石精致的钻石gemExquisiteDiamondgemExquisite宝石类矿物按品质分为5种不同的子形态,但矿物辞典依旧遵循着相同的命名规则。实际上,对于同种矿物的材料树,其矿辞命名方式也同样遵循这个规则,这里不再一一列出。

你也发现了,同"形态"不同"状态"的情况下,"形态标签"本身也遵循着同样的构造规则。

形态形态标签形态主标签形态子标签粉碎矿crushedcrushed无洗净矿crushedPurifiedcrushedPurified离心矿crushedCentrifugedcrushedCentrifuged含杂粉dustImpuredustImpure洁净粉dustPuredustPure粉dustdust无破碎宝石gemChippedgemChipped有瑕宝石gemFlawedgemFlawed(普通)宝石gemgem无无暇宝石gemFlawlessgemFlawless精致宝石gemExquisitegemExquisite综上,我们可以得出结论:绝大多数矿物的矿物辞典是以"形态标签"开头,以"成分标签"结尾的字符串。其中,"形态标签"又遵循同样规则的由主标签和子标签构成。

简单来说,矿物词典的编写遵循着"先大类,后小类"的顺序。也就是说,我们能够通过"大类"匹配到整个类别的矿石,再加上"小类"实现精准匹配。

矿物词典意义ore所有原矿dust所有粉末gem所有宝石ingot所有锭匹配语法:正则表达式

好了,了解了矿物辞典的构成规律后我们就能着手匹配这些词条了。首先要明确一点,作为一种按规则严格匹配字符(串)的工具,正则表达式大小写敏感!但NEI大小写不敏感。也就是说,不要在你的表达式里出现大小写错误,尽管在NEI中你仍然能够搜索到,但在实际应用中会导致匹配失败。

举个例子,输入"rawOre"可以匹配到所有粗矿,但如果输错成"rawore"你将无法匹配到任何矿石。

调整NEI搜索模式为"正则"

按E打开背包,点击屏幕左下角的"NEI设置",进入"NEI选项",点击"物品栏",进入"物品栏"设置,点击"搜索栏",进入"搜索栏"设置,点击"搜索模式",将其调整为"正则"。这样,你就能在NEI搜索栏中使用正则表达式匹配物品了。

藏的可真深呢

再次强调,NEI的"正则"搜索模式大小写不敏感,且没有录入绝大多数矿物的各个子形态(能猜出来是为了节省资源加快NEI加载速度)。如果你用了NEI里这样错误的方法匹配矿物,很可能什么都无法匹配到!

浅谈部分元字符的用法

关于这方面,Wiki上的"矿典过滤卡"页面已经讲的很清楚了,这里只举常用的例子。网上也有很多关于正则表达式的教程,读者可以自行学习。

注意,本教程中的引号""仅起高亮内容的作用,并无任何含义!

".*"匹配任意,".+"匹配字符(串),"?"修饰前字符

实际上,"."匹配0个或1个任意字符,"*"表示重复任意次,".*"组合起来的意思就是匹配任意长度的字符串,包括啥也没有。

同样的,"+"匹配1个字符,"*"表示重复任意次,".+"组合起来的意思就是匹配任意长度不为0的字符串。

举个例子,"rawOre.*Gold"可以匹配到粗金矿石"rawOreGold"和粗注魔金矿石"rawOreInfusedGlod";

而"rawOre.+Gold"只能匹配到粗注魔金矿石"rawOreInfusedGold"。

"?"修饰字符表示匹配前面的字符0次或1次。意味着某个字符可以出现也可以不出现。

一个经典例子,铝的两种矿物辞典:"Aluminium"和"Aluminum",使用"Alumini?um"即可匹配两者。

"^"匹配开头,"$"匹配结尾

^head,匹配开头为"head"的字符串,如"headshot","headache",但不能匹配head前存在其他字符串的字符串,如"bighead","d1ckhead";

end$,匹配以"end"为结尾的字符串,如"happyend","badend",但不能匹配end后存在其他字符串的字符串,如"endless","endoflife"。

为什么要匹配开头和结尾呢?为了提高匹配精度。如果不能指定开头和结尾的话,表达式会经常匹配到奇怪的东西。

输入"^ore"会匹配到以"ore"开头的字符串,比如各种原矿和GT++粗矿(oreRaw);

但输入"ore"会匹配到任何包含"ore"的字符串,如各阶段的能量核心(bufferCore)。显然我们并不想匹配到这么个莫名其妙的玩意儿。

同样的,一些矿石的"成分标签"存在相同的部分,我们可以通过指定结尾来匹配指定矿石。

输入"Cas.*e$"以匹配锡石"Cassiterite";

输入"Cas.*d$"以匹配锡石矿砂"CassiteriteSand"。

"|"表示分支,"()"打包组合

这两个符号的意义和他们数学上的意义相似,优先级高于其他元字符。

被"|"分隔的表达式,在逻辑上表示或的关系。比如用"^ore.*|^gem.*|^ingot.*"来匹配所有的矿石、宝石和锭。

被"()"打包起来的表达式,会被算作整体与其他元字符作用。比如输入"Cassiterite(Sand)?"来匹配锡石"Cassiterite"和锡石矿砂"CassiteriteSand",在这个例子中,"?"不再作用于单字符而是作用于字符串"Sand"。

利用好分支和组合能够有效缩短一些具有重复字符串的表达式的长度。

一个经典例子,要匹配所有洁净矿粉和含杂矿粉,我们可以使用"^dustPure.*|^dustImpure.*",也可以将其组合成"dust(Pure|Impure).*",但不可以把它再缩成"dust(Im)?Pure.*",因为正则表达式大小写敏感!

负向先行断言"?!"和负向后行断言"?

这些名词属实让人摸不到头脑,简单来说,"负向"的意思就是"否定',"先行"作用于符号之后,"后行"作用于符号之前。

"负向(否定)断言"可以理解为匹配"除了指定表达式之外,剩下的其他表达式"。

由于矿物词典的结构是由各个子标签按顺序由前到后从广泛到详细堆砌成的,一般的,在屏蔽某特定标签的场合中,使用"负向先行断言"的情况居多,但不代表"负向后行断言"不重要。例如使用"^dust(?!Impure|Pure).*"来匹配非含杂非洁净的矿粉,使用"ore(?!Oilsands).*"来匹配除了油砂以外的所有原矿。

在例子中能够看出,使用"()"时,负向先行断言"?!"作用于其后跟随的整个表达式。标准用法为"exp1(?!exp2)",意味查找后面不是exp2的exp1。

那么负向后行断言该如何使用呢?

举个例子,我们可以利用"负向后行断言"来指定形态不同但成分相同的矿物,输入"(?

负向后行断言"?

从例子中能够看出,负向后行断言"(?

为了加深理解,再举个例子。圆石台阶"slabCobblestone"和沙石台阶"slabSandstone",利用这两种断言如何去匹配其中的沙石台阶呢?

答:"^slab(?!Cobble).+stone"或"^slab.+(?

使用正则表达式匹配矿物词典

在了解了正则表达式如何进行匹配工作后,我们便能够利用它来完成矿物处理的分类工作了!

基础:按矿物形态匹配

回顾一下上文的内容,我们已经提前按矿物形态和其对应处理方式将其分类,其中对应矿物形态的表达式如下表

形态形态标签修正含义表达式表达式含义原矿ore除了油砂以外的所有原矿^ore.+(?

进阶:按处理方式匹配

只是这种程度的简单表达式显然无法满足我们的实际需求,当我们在弄清楚矿物形态如何表达的前提下,便该在此基础上排列组合,再按处理方式(机器)再一次进行分类。

假设我们输入子网的矿物只包含如下表成分,只须"一次处理"和"二次处理"机器就能够应付,那么问题就简化成了矿物形态间的逻辑关系问题,而我们只需要找到各个矿物种类所对应的表达式。

机器/处理类型需要处理的矿物种类粉碎机原矿(除油砂)、粗矿(除油砂)、离心矿、粉碎洗净矿、二次粉碎矿洗矿机水洗粉碎矿化学浸洗机浸洗粉碎矿离心机含杂矿粉、洁净矿粉、油砂热力离心机热离洗净矿筛选机筛选洗净矿"不处理,直接进库存"专线粉碎矿、专线洗净矿、矿粉铅封盒待衰变矿粉电解机待电解矿粉脱水机待脱水矿粉各类矿物的表达式和分区情况如下表:

母类子类机器/处理类型表达式分区(粘性卡)目的原矿(除油砂)粉碎机^ore.+(?

再结合上述两表,我们便可以得到一个以"处理方式(机器)"为对象的,可根据自己需求调整的通用表达式查询表。

机器/处理类型ME存储总线1ME存储总线2表达式/矿典过滤卡分区/粘性卡表达式/矿典过滤卡分区/粘性卡粉碎机^crushed(二次粉碎矿成分1|成分2|成分3|...).*是^(ore|rawOre).+(?

优化:表达式的缩写与合并

如果我们不想办法精简表达式,那很快就没空间可供使用了。要知道,256个字符的最大长度并不算充裕,尤其是在我们需要逐个堆砌"成分标签"的情况下。

实际上,匹配矿物词典时我们并不需要完整输入,可以尽可能的去缩短表达式的长度,只要不匹配到我们不想匹配到的东西。

一些矿物的形态标签的缩写如下:

类型全称缩写粉碎矿^crushed.*^cru.*洗净矿^crushedPurified.*^cr.+Puri.*离心矿^crushedCentrifuged.*^c.+Centri.*含杂矿粉和洁净矿粉^dust(Impure|Pure).*^dust(Im|Pu).*除了油砂外所有原矿和粗矿^(ore|rawOre).+(?

在上面几个例子中,不难猜到矿物词典中标签的缩写规则:匹配开头的标签从后向前缩,匹配结尾的标签从前向后缩,多标签组合时从最后一个标签开始缩。

对于矿物的成分标签的缩写,同样遵循上述规律,但未必是最优解。实际上,GTNH中存在着同一个表达式可以匹配多个标签的情况,这样我们就不必逐一输入标签了,即节约了空间又节约了人力。

可是,有一些我们不想匹配到的矿石,其标签和他的同族们高度类似,这就需要我们开动大脑想办法把它屏蔽掉了。

例1:锡石双胞胎

名称成分标签缩写修正锡石CassiteriteCasCas.+e$锡石矿砂CassiteriteSandCas.+d$例2:石榴石家族屏蔽石榴石矿砂

名称成分标签缩写修正红石榴石GarnetRedGarnetGarnet(R|Y)黄石榴石GarnetYellow石榴石矿砂GarnetSand/例3:石英家族中屏蔽石英矿砂

名称成分标签缩写修正下界石英NetherQuartz.*Quar.*Quar(?!tzSand)

.*Quar.+(?

赛特斯石英CertusQuartz充能赛特斯石英ChargedCertusQuartz石英岩Quartzite石英矿砂QuartzSand /例4:蕴魔家族中屏蔽注魔金

名称成分标签缩写修正注魔金InfusedGoldInfu/风之蕴魔石InfusedAirInfu(?!.*G)

Infu.*(?

火之蕴魔石InfusedFire地之蕴魔石InfusedEarth水之蕴魔石InfusedWater混沌蕴魔石InfusedEntropy秩序蕴魔石InfusedOrder可以看出,"屏蔽"这个操作主要靠匹配或屏蔽矿词的特定特征实现,不同案例中先行和后行断言所占用的长度各有长短,我们取用最短的即可。和你的迪克反着来

附录:筛选洗净矿穷举

在上文中提到的"按处理方式(机器)分类"的矿石中,"筛选洗净矿"不会随着阶段发展而获得更好的处理方式,也就是说,"筛选洗净矿"就是只能通过筛选获得最大收益的矿石。

但是,并不是所有可被筛选的矿石的最优处理方式都为筛选。如铀238矿石,走"粉碎-洗矿-粉碎-离心"的处理路径可以获得铀235副产。

下表罗列了作者认为的筛选洗净矿。

名称成分标签缩写下界石英NetherQuartz.*Quar.+(?

^cr.+Puri.*(.*(Quar.+(?

请读者注意括号代表的并列关系,实测该式长度为201字符。

经过努力,我们终于把包含如此多种矿物的表达式的长度缩减到了256个字符以内,现在只需要复制一下就可以立即投入使用!可喜可贺可喜可贺

"通用矿处"的分类子网结构

到此为止,我们终于可以随心所欲的按需求匹配矿物了!但这还没完,我们还需要设计一个结构合理的ME分类网络以避免已经完成分类的物品被二次污染——你也不想自己家自来水管接到下水道上吧。那不得不玩都市天际线了

实际上,如果你搞明白了粘性卡和矿典过滤卡的用法,那么这样一个分类网络便呼之欲出了:它本身并不储存物品,只是一味将输入的物品分类。

如下图所示,其中各机器的输入库存既可以是传统容器(推荐压缩箱子),也可以使用ME网络的存储元件,而"直接储存"则直接输入到ME存储主网。各机器使用ME输出总线直接将产物再输出回来到分类网络进行再分类。

由于带有自动拉取功能的进阶存储输入总线要LuV阶段才能解锁,故在此之前还是推荐使用传统容器,缓存大小并不会成为你矿处网络的速度瓶颈,但过小的缓存仍会严重影响网络性能,同时这么做比起全AE方案造成的卡顿更多...

(点击图片以放大)

这套分类子网的瓶颈在于机器加工速度,由于存在于输入库存的矿石其加工类型统一,我们可以直接堆机器来提升处理速度,这就是按加工类型的"分类子网"的方便之处!

带矿物处理子网的AE网络结构

经理千辛万苦,我们终于完成了"矿处产线"的建造。现在,是时候将其并入到主网以给你的其他产线注入原料了!

"矿处系统"作为产线网络的第一步,能够将各种矿石处理为合适的型态,以方便后续各种产线对资源的调用,是我们自动化处理系统的"嘴巴"!

一种适用于绝大多数应用场合的AE网络结构如下图所示,矿物原料先进入"矿处产线"处理,然后"矿处网络"再将处理好的矿物通过存储总线或ME-IO端口存入主网,而主网充当库存又被其他产线网络调用。

实际上,使用ME-IO端口倒盘能够比较有效的节省服务器性能,但奈何这玩意儿有限速,这一点就比不上存储总线+ME接口了。

好吧,按照物流方向,也许各个"产线网络"才是主网,而"存储与下单系统"才是他们共用的子网。合理的网络结构能够有效降低AE网络对服务器资源的占用,按职能划分便是个不错的选择,这样能够让"中间产物"只在其专用网络中存储,能够大大缓解我们存储主网的空间压力,而不是让它变成一个任何物品都能进进出出的粪坑。

尾声

教程到此为止,该教程的目的是让玩家学会自定义"矿物处理",感谢您的阅读!

实际上,这篇教程的起草紧随核电那篇其后,但比起后者,想弄明白"矿物处理"显然需要耗费更多的时间和精力去研究……

为了把本来晦涩难懂的概念和原理以人类能听懂的形式按合理的逻辑组织起来然后表达出去真的是耗费了作者不少的脑细胞,该教程正文完全重写了3次,修修补补更是不计其数,然而却还是不免令人感到抽象和生硬。

而在研究的过程中作者更是发现了种种错误,bro,边写边改真的很痛苦(笑)。追求完美是有代价的,而如果只是要求能用的话就完全没必要如此较真,这只是个游戏而已。

感谢各位大佬们对我提问的耐心解答!没有你们的帮助便没有这篇文章的诞生。

如你所见,这就是我关于"矿物处理"的全部理解了,若是存在什么问题和错误也请自行甄别罢,我已燃尽了(悲)。

相关推荐

暴走漫画内部整顿:视频节目下线,多个App无限期关停
潮汕的老爷宫及其所供奉的“老爷”
365体育提现多久到账

潮汕的老爷宫及其所供奉的“老爷”

📅 09-18 👁️ 7586
计算机主机箱安装,教你自己动手更换电脑主机箱,装机不求人!
贪婪洞窟2与贪婪洞窟1玩法上有什么区别?
365bet娱乐登录

贪婪洞窟2与贪婪洞窟1玩法上有什么区别?

📅 08-07 👁️ 8901
修硬盘多少钱?全面解析硬盘修复费用及相关问题
365bet娱乐登录

修硬盘多少钱?全面解析硬盘修复费用及相关问题

📅 07-29 👁️ 1476
致青春劇情介紹
365体育提现多久到账

致青春劇情介紹

📅 08-13 👁️ 5101
如何去除痘疤痘印
beat365体育亚洲

如何去除痘疤痘印

📅 07-20 👁️ 3260
智能手表如何连接wifi,智能手表如何连接WiFi
365体育提现多久到账

智能手表如何连接wifi,智能手表如何连接WiFi

📅 08-21 👁️ 3557
喝中药的三个最佳时间
365bet娱乐登录

喝中药的三个最佳时间

📅 09-03 👁️ 4420