虽然这种TNT复制归中思路早就应用地非常普遍了,但完整的教程似乎仍没有,所以,我这几天摸索出来了一个这样能用的320TNT复制阵列准备简要讲解一下。存档是1.16.4的,但是理论上可以兼容1.14-1.17.1以及以后的版本(如果Bugjump不乱改)。耗材和卡顿没怎么专门优化,所以不大推荐生存实装。使用方法很简单,机器顶部数控部分(布线最奥利给的地方)附近有五个拉杆,所有拉杆关闭时每次输出10TNT,面朝拉杆使从左到右拉开各个拉杆分别增加10、20、40、80、160输出TNT,最高320,然后在机器顶部附近找到一个与众不同的音符盒,右键即可工作。
先来一张整体外观:

由于网络问题上面该贴截图的似乎贴不上截图,改天会挪上面去。

第二项只是理论上可行,没有实际用途,写在这凑个数罢了。
于是,目前的TNT复制归中阵列中大都采用第三种思路。
至于如何实现,可以搭建这样一个结构:

然后打掉红石线指向的那个红石块,你会发现:

红石线是激活的并且指向TNT了,但是TNT却没有被点燃!这意味着,这个TNT已经进入了BUD态,接下来给它更新一下(比如在旁边放个石头)它就会被点燃了,这里就不单独演示了。
活塞在伸出时会创建一个包含所有被推动方块的列表,TNT方块被包括在内,然后才会更新到TNT,TNT被点燃,再然后列表中的TNT被以36号方块的形式重新放置。这时原来的就变成了了两个TNT,一个TNT实体的和一个36号方块形式的TNT。但是在活塞收回时,活塞头B36的创建导致的方块更新会先于方块列表统计,此时更新BUD会导致掉TNT的问题,所以在活塞开始收回时(具体延迟与信号类型有关),红石线应该停止指向TNT。TNT到位时同理。
现在,我们要做的有:

工作时序如下:














先来一张整体外观:

由于网络问题上面该贴截图的似乎贴不上截图,改天会挪上面去。
一.TNT复制
说简单了,复制TNT的方法就是用活塞合适地推动处于BUD态的TNT(即本来应点燃却因为未收到方块更新暂时不被点燃的TNT)。
首先,我们要以某种方式获取一些BUD态的TNT。与制作活塞BUD不同,制作TNT的BUD不能使用**激活的特性,所以,构建BUD态的TNT需要一些黑科技:
- 被激活的探测铁轨推动到位时仅产生毗邻更新,而到位后激活毗邻方块的毗邻方块(沿轴方向相邻两格和对角线)是有可能的。
- 一次性更新大量方块导致堆栈溢出(更新抑制)
- 红石线朝向的变更不造成方块更新

第二项只是理论上可行,没有实际用途,写在这凑个数罢了。
于是,目前的TNT复制归中阵列中大都采用第三种思路。
至于如何实现,可以搭建这样一个结构:

然后打掉红石线指向的那个红石块,你会发现:

红石线是激活的并且指向TNT了,但是TNT却没有被点燃!这意味着,这个TNT已经进入了BUD态,接下来给它更新一下(比如在旁边放个石头)它就会被点燃了,这里就不单独演示了。
活塞在伸出时会创建一个包含所有被推动方块的列表,TNT方块被包括在内,然后才会更新到TNT,TNT被点燃,再然后列表中的TNT被以36号方块的形式重新放置。这时原来的就变成了了两个TNT,一个TNT实体的和一个36号方块形式的TNT。但是在活塞收回时,活塞头B36的创建导致的方块更新会先于方块列表统计,此时更新BUD会导致掉TNT的问题,所以在活塞开始收回时(具体延迟与信号类型有关),红石线应该停止指向TNT。TNT到位时同理。
现在,我们要做的有:
- 以某种方式持续激活红石线,并以某种可以影响红石线的朝向的方块”引走“红石线使之无法激活TNT
- 在复制机启动时,移走那个影响红石线的朝向的方块,使TNT进入BUD态
- 推动TNT(0t信号激活活塞应该不行),使之被更新并被点燃
- 各部件依次复位

工作时序如下:
- 右键音符盒,此时记为第1gt
- 第11gt,红石线熄灭1gt,粘性活塞收回,红石块变成B36形式,红石粉强充能TNT上方方块,TNT进入BUD态。充能铁轨(侦测器上面的,图中不大清楚)失去充能
- 第12gt,粘性活塞再次被充能,尝试伸出,但被前方带方块实体B36阻挡,进入BUD态
- 第14gt,红石块B36到位,更新到粘性活塞,粘性活塞计划在下一gt重新尝试伸出
- 第15gt,粘性活塞开始伸出
- 第16gt,推动TNT的活塞开始伸出,TNT复制发生
- 第17gt,粘性活塞伸出到位,红石线不再间接充能TNT,TNT退出BUD态
- 第25gt,装置复位

2.TNT归中
复制了那么多TNT可不只是为了让它们落在地上乱炸一通,还需要对TNT进行归中(原名压缩,Compress)处理使它们在同一处爆炸。
如图,目前TNT归中经常采用栅栏门+弹射的方案。

如果嫌TNT复制那一坨太乱,还可以看这个不复制TNT的版本

图中TNT紧邻的栅栏门并没有摆满,中间留了四个洞,TNT不是直接从洞里落下去并被TNT(或红色玻璃)推到栅栏门上消除活塞指向的轴上的随机速度,就是被TNT(或红色玻璃)推到栅栏门上消除活塞指向的轴上的随机速度,总之TNT都是要落到那个洞里的。注意一部分TNT开始是卡在某个栅栏门中的,这时TNT不会检查那一个栅栏门的碰撞,直到TNT完全移出那个栅栏门的范围。这样一排TNT就成了四堆TNT了。
然后那一排连着的粘液块会一次弹射那四堆TNT式它们撞到黑曜石上面的玻璃上,对应轴上速度被消除,坐标确定,再然后TNT正好落在下面那一排粘液块和打开的栅栏门的组合体中栅栏门的位置,等TNT下落的高度合适后第二次弹射就会进行,最后TNT依次撞到那一竖排玻璃上消除对应轴上坐标的随机性以及速度。这时,这一行TNT归中完成。
需要注意,为了显示出关键结构,上面的装置中省略了未染色玻璃下方的树叶,但是在实际使用中树叶是必不可少的。因为TNT实体略小于完整方块(棱长0.98m),在它的初速度太小时落出玻璃高度范围前可能撞不到玻璃导致与那一列TNT垂直的轴上的的速度不归零,进而会使TNT依旧沿原来的初始速度运动落到用于一次弹射粘液块棒上,最终导致炸膛。
这里个人认为最烦人的事调整延迟。
然后,照此原理可以组装出一个20TNT归中的阵列,不过另一列TNT的一次弹射装置需要改变引线策略从另一侧引线推动粘液块棒。

类似地,也可以堆叠复制阵列归中阵列增加阵列中TNT数量,这种方法的上限估计在150TNT左右,因为TNT的水平位移最大值限制。图为80TNT复制阵列(用结构方块结合地毯端的关闭更新拼凑出来的,不推荐用创世神,因为会莫名其妙地激活电路)。

这里个人认为最烦的是弹射的粘液块棒相互粘住(遇到不下30次)
为了进一步提高阵列强度,通常会将四个(确切来说是2x2个)这样的阵列组合成一个大阵列,并在下方接上一个将四大堆TNT归中成一堆TNT的装置(个人习惯称之为底层归中)。



3.多阵列组合
320TNT虽然满足了大部分中小型TNT炮的需求,但是如果只用一个320阵列去做较大型炮(一打两三万格的那种)或矢量炮(无论如何至少两个阵列配合)是满足不了需求的。这个阵列输出的TNT带有越50m/gt的初始Motion,可以使多个阵列(已测试4个阵列1280TNT,去硬搞上限可以很高)的TNT飞到一起。
这里利用一个小阵列(就上面提到的80TNT阵列)复制80TNT作为推进,在复制推进TNT时用粘性活塞推出的那一排红石块抑制其他小阵列的工作,并在复制完成后取消抑制。

为了让推进TNT与输出TNT位置不同,需要改一下下面的底层归中,也就是再加一个之推输出TNT或只推推进TNT的活塞,原理很简单。

后续处理因炮种而异,此处不便细说,如需要可以参考存档中的珍珠炮
4.数字控制
如果这个阵列一次只能输出320TNT不能降当量就会显得比较鸡肋,所以,这里加了一个简单的数控装置。该数控装置通过常充能铁轨防止铁轨状态变化,进而阻止活塞推动更新TNT,最终阻止了TNT复制的过程。但这显然不是最优解,因为那些拉着红石块的粘性活塞该收回的还会收回,下方的二次弹射装置仍会全部运作,额外卡顿较高。

信号产生最高两位很简单,一个是直接控制两个小阵列(160TNT)的开关,另一个直接控制一个小阵列(80TNT)的开关;另外三个接上了一个三位数模转换器(听起来很吓人,但实际上特别简单),将拉杆输入转化为红石线激活长度,再转化为常充能铁轨个数,最后控制TNT输出个数。
数模转换器单独拆下来一份:

另外,还得记得防止数控干扰推进TNT的复制:

5.应用举例
这种TNT归中阵列最适合的应用场所应该就是珍珠炮了,实际上这里的设计就完全是冲着珍珠炮来的,底层归中时使用花盆卡坐标就是证明。
用这个凑出来一个凑合能打珍珠的珍珠炮,不知道改进差不多了会不会水一贴。

mcbbs有你更精彩
qwq整了个好活
干得漂亮
qwq整了个好活
干得漂亮

话说这个可以简化吗

comdom 发表于 2021-8-29 09:40
话说这个可以简化吗
这种结构如果不用复制TNT(不考虑生存实装)上面可能可以简化一点,真就一点,但改用塔式结构可以简化很多
布线太乱,没有精控到1tnt,横向利用率不高,导致如果实装到珍珠炮上阵列过多,数控不便,虽说是无轨,但炮口体积++。总结,创造美观不够,生存实装意义不大。建议改改布线,装个1tnt的精控(这真的不难!)。另外,顺带一提,第一次归中的粘液棒子同时伸出收回就不会黏上。
希望可以采纳


希望可以采纳

