8-27 1,414 views
作者:nenn(百度id:正正正正正好)
注1:本文中提到的所有Minecraft版本均为1.12。
1.意义和功能
矿车分类模块对于铁路系统尤为重要,它允许不同的矿车共用铁轨,并自动分拣矿车,而无需玩家的任何手动操作。矿车按照各自的运动规律可以分为四大类[1][2],它们是:
而根据矿车的运动规律来分类矿车的技术,已经在[1]中实现。但[1]中的类模块仅实现了矿车大类的分拣,而无法细分矿车种类。例如对于货运矿车,即II类矿车而言,[1]中的类模块只能区分矿车是不是空载,而无法区分矿车究竟为运输矿车还是漏斗矿车。
一般的铁路系统中,运输矿车和漏斗矿车有着完全不同的用途。运输矿车主要用于大量物资的搬运和存储,而漏斗矿车多用于收集和投递物品。因此,设计一种可以分类货运矿车的模块就显得尤为重要。
2.货运矿车分类的基本思路
要实现运输矿车和漏斗矿车的分类,首选需要谙熟这两种矿车的区别。这两者最显著的区别,莫过于是否可以吸取容器内的物品了。虽然这一区别很容易理解,但是在设计具体的分类模块时,会遇到几个主要问题:
1)如果矿车满载或空载该如何检测?
2)是否允许分类后矿车内的载物发生变化?
3)不同载物量是否会获得不同的分类结果?
4)是否是无损的检测?
这几个问题很重要的原因,在于你可以有很多的方法分辨这两种矿车,但是你可能无法保证经过模块的矿车还保持原状。比如,你可以将矿车投向仙人掌,然后收集矿车的掉落物。通过分辨掉落物含有箱子还是漏斗,你可以获知矿车的种类。但是这种检测会破坏矿车,矿车无法拥有本来的功能了,这样的分类就没有了意义。又比如,你可以往矿车内投递同样多的物品,然后观察矿车通过比较器输出的信号强度。但是这种分类操作会造成矿车载物量的变化,你无法对同一辆矿车无限次使用这种方法。毕竟,如果矿车满载,这种方法显然是无效的。
所以我们在设计时应该遵循什么原则呢?
1)矿车经过分类模块后,依然具有原来的功能。
2)矿车经过分类模块后,矿车的载物量不发生变化。
3)分类过程尽可能快速。
4)适用于不同载物量的矿车。
1)和2)是为了保证对同一辆矿车可以无限次使用同样的方法进行分类,也是为了保证铁路系统具有实用性。你肯定不希望你的矿车被分类以后,好友送你的生日蛋糕消失了,或者莫名其妙多了许多双破烂的皮靴。4)是为了保证铁路系统的实用性,避免分类错误。
遵循上述原则的设计并不是很难想到。首先分辨矿车是不是空载。如果矿车是空载的,那么给它塞一个不可堆叠物品后,再检测矿车的载物信号强度。如果为1,则为运输矿车,如果为3,则为漏斗矿车。最后取走矿车内的物品即可。这种方法基于漏斗矿车和运输矿车的载物量和载物信号强度的关系并不相同[2]。
如果矿车不是空载,那么先从矿车中取出一个物品,并将这个物品放到一个容器内。如果矿车能够吸走容器内的物品,那么这就是漏斗矿车。如果矿车无法吸走容器内的物品,那么这就是运输矿车。再通过漏斗把物品还给运输矿车即可。
写成思维导图的形式后,这个思路可以更容易被理解。红色表示分类模块需要执行的操作。
3.技术实现
从上面的设计思路出发,很容易理解的是,空载和非空载的货运矿车会使用不同的分类模块。货运矿车空载与非空载的检验相当简单,[1]的设计中也包含了这种检测功能,所以不在这里赘述。
1)对于空载的货运矿车
使用蓝色箭头标记了矿车的轨迹。黄色和灰色箭头分别表示分离后运输矿车和漏斗矿车的轨迹。
红色方块表示模块的输入铁轨。其主要功能是重置矿车速度和动量。
粉色方块表示放物和取物的子模块。其主要功能是将一个不可堆叠物品放入矿车中,然后测量矿车的载物信号强度。
紫色方块表示取走物品的子模块。其主要功能是清空矿车中的物品。
橙色方块为分类执行器。其主要功能是分轨。
这一模块占地不大,十分适合生存搭建。
2)对于非空载的货运矿车
使用蓝色箭头标记了矿车的轨迹。红色箭头表示被吸走的物品轨迹。黄色和灰色箭头分别表示向运输矿车和漏斗矿车归还物品的物品轨迹。
红色方块表示模块的输入铁轨。其主要功能是重置矿车速度和动量。
粉色方块表示从矿车取物的子模块。其主要功能是从矿车中取出仅一个物品,并将这个物品放置在一个被激活的漏斗内。
紫色方块表示归还物品的子模块。其主要功能是归还物品。
蓝色方块为RS锁存器。其主要功能是记录矿车是否有能力吸走漏斗内的物品。
橙色方块为分类执行器。其主要功能是根据RS锁存器记录的信息进行分轨。
这一模块同样占地不大,十分适合生存搭建。
4.方案优势
对矿车进行分类并不是一个新问题。来自TopologyCraft的璺斝薧(百度id:璺斝薧)就已经给出了高集成化的矿车分拣模块[3]。其方案(下图)基于碰撞对不同矿车的作用效果不同,其同样可以实现矿车大类的分拣。此外,其还可以细分普通矿车与TNT矿车。
这一方案相对稳定,是一种高度压缩的分类模块。但需要指出的是,还存在一些不足:
1)分拣无法实现自动化。待分类的矿车需要手动放置。
2)没有考虑载物量对货运矿车造成的影响。
3)耗材相对昂贵,搭建过程需要控制实体。
而本文给出的方案则弥补了这些不足,但相比之下,模块的体积较大。
5.参考文献
[1] 《矿车分类的基本模块》
[4] 与技术玩家璺斝薧(百度id:璺斝薧)的交流与学习。
版权属于: Redstone Machinery Communication
原文地址: http://www.rmcteam.org/machinery-circiut/railway/iicart_sorting_system.html
转载时必须以链接形式注明原始出处及本声明。
璺斝薧的设计应该说是纯作品,对铁路设计没什么价值;但是常规分类器加上区分普通车和tnt车还是有需求的(虽然实际操作经常是直接扎烂回收)