Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 1739|回复: 0

[技巧教程] [思路分享+举例教程]用刷怪蛋生成特殊功能的方块

[复制链接]
zjqing 当前离线
积分
268
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-8-26
查看详细资料
发表于 2020-8-30 15:11:12 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 zjqing 于 2020-9-7 21:39 编辑

金山文档即时同步文档:https://www.kdocs.cn/l/skTIlXGISK38
从这个文档里看最新的更新,不要尝试私改文档,我这边都能看到。此文档持续更新。

9.7更新:
添加了上文所说的遗漏的命令并更新了图片,
将“活塞直接推动特殊方块”的制作状态由“暂无好方法”改为“已有好方法且待优化”


8.31更新:
更新了部分命令,将蝙蝠由标签选择,改为了由名称选择。
更新了“待修bug”,列出了一些bug,都会直接影响使用,所列bug来自实测之后,版本1.16.0,测试人PFiS(本人)。注,此次更新并没有添加下文中第三部分第二条命令后遗漏的命令,因为要更新图片,所以需另选择他日。


前言

    前几天一直在做One_Tree_Skyblock科技空岛,应为许多地方都要用实体帮助定位,所以就想出来了这个装置(总不能手动放盔甲架吧)。Java版那边似乎也有类似的东西(OOC一键指令里见的多),思路一不一样我也没看(Java版我不大玩),就算一样,因为Java版和基岩版的命令的差距也很大,做出来也是有难度的。
    思路我会尽可能讲的详细,但是存档的话是不会有的。  (也是不得已,原因现在我还玩不了游戏,你看下面配的图就知道了,都是用Blockbench做的)

思路分享
为什么要做这个东西?
    因为在基岩版原版中,很难(也许不能,没做太多研究)做到所谓的方块之间的互动、和增加新的功能性方块或多方块结构,所以,设计出这个,来变相的补齐这方面的短板。
    有关此设计的运用,我总结出以下3点:
    1.基于原版的功能性方块的自定义互动:例子是“随时随地的容器内自定义合成”,其原理不必多说;加上此装置即可实现“随时随地合成”的效果,即通过/execute @e[type=xxx,tag/name=xxx] ~ ~ ~ testforblocks ...的方式对容器进行定位并比较。
    2.添加自定义的方块外的互动:例子是“物品传送带”,用此装置可以做到类似各模组中的效果,做到:用自定义合成器合成出对应的刷怪蛋,用刷怪蛋“放置”对应方块,实现对应功能。(有关物品传送带,因为涉及到方向问题,以后会在第八部分详讲)
    3.多方块结构的核心方块:例子是“熔融熔炉”,做到:用自定义合成的方式做出所谓“熔融熔炉核心”,用合成出的刷怪蛋“放置”此核心,再在此核心周围按一定顺序摆放一些方块,最终建立多方块结构。通过/execute @e[type=xxx,tag/name=xxx] ~ ~ ~ testforblock/testforblocks ...探测以此核心为基准点的相对坐标处是否有指定的方块,以此建立多方块结构。(有关熔融熔炉等不成中心对称的多方块结构,因为涉及到方向问题和容积问题,以后会在第八部分详讲)
    *以上所举的三个例子,将来都会在One_Tree_Skyblock空岛中体现。
具体思路:
    要完成这个设计,思路也较为简单,其主要分为提前准备、放置、破坏、活塞直接推动、活塞间接移动、保障措施、效果制作8部分,和可选模块
    提前准备:准备装置需要用到的包含特殊实体的刷怪蛋和需要用到的结构。
    放置:即“放置特殊方块”,通过/execute ... fill/clone ...命令,在检测到指定实体后填充或复制特殊方块到该实体处。
    破坏:即“破坏特殊方块”,指存在特殊方块的位置变为空气,通过检测指定实体处是否为空气,然后依次执行生清除原有掉落物、生成实际掉落物、清除指定实体3步,其中第2步“生成实际掉落物”是难点,也是重点,主要原理是通过激活结构方块,生成保存的掉落物实体,然后传送至指定地点。
    活塞直接推动:指通过同一坐标轴上的活塞推动该特殊方块,目前除穷举外,还没有讨论出好的方法,如果有人想到了较好的方法,欢迎联系我(们)。
    活塞间接移动:指通过活塞连接的粘液块或蜂蜜块移动该特殊方块,由于穷举过于繁琐、麻烦,目前还没有较好的待选方案,如果有人想到了较好的方法,欢迎联系我(们)。
    保障措施:通过给予药水效果等方式,防止辅助用的实体死亡或移动。
    效果制作:这个检测指定实体的相对坐标处有无指定的实体或方块,以执行对应的命令。
    可选模块:即根据实际情况,主观选择加入的部分,可能是必要的,也可能是非必要的。


举例教程
目标效果:
    用一颗刷怪蛋放置一个方块破坏器(一个石头),它可以破坏它上面一格的泥土。
目前的成品图片:
     图片介绍:第1行第1格和第2格是第二部分和第七部分,第3行是第六部分,其他的是第三部分,其他部分并未完成。
下载 (12).png
注释:
    ↓这是操作方式,意思是与上一个命令方块连在一起,或与上一步连在一起。
    →这也是操作方式,意思是自己单独运行或一串命令方块或操作的开头。
    ↘表示即可以自己单独运行,也可以和上一个命令方块连在一起,此种情况下,在图片中演示时将默认为“链”型。
    /这是指令
       #这是指令翻译或对这样操作后效果的描述。
    !这是注意事项或对命令的解释。
需要用到的工具:
    Blocktopograph(简称Btr)。

             !这只是一个例子,在使用时需按照实际情况添加或修改。
                          !部分游戏中的“错误翻译”并未订正。
                          !此教程中,所有相对坐标的偏移量,视图片而定:
                                  向上即为y+,向下即为y-;
                                  向右即为x+,向左即为x-;
                                  向前(似乎正在向你靠近)即为z+,向后(似乎正在离你远去)即为z-。
                          !本例子以石头(stone)举例,其主要原因的:
                                  1.该方块有两种掉落物。
                                  2.该方块的不同数据标签指向不同方块,其中数据标签“0”指石头(stone)。
                !本例子以蝙蝠作为辅助实体的主要原因有:
                                  1.碰撞箱较小。
                                  2.生成时处于悬浮状态,不易发生位移。

第一部分:提前准备
→创造一个世界,记得将“作弊”选项打开。

→在身边放置一个蝙蝠,在对话栏内输入:
/tag @e[type=bat,c=1] add stone
#给距离玩家最近(c=1)的蝙蝠(bat)添加(add)“stone”标签(tag)。
!使用标签而不是命名,是为了避免因玩家命名成相同实体而造成的误判。
!请确保该蝙蝠离你最近。


↓在背包里放一个任意刷怪蛋。
↓退出游戏打开Btr,将这个蝙蝠的全部标签复制,替换到背包里那个刷怪蛋所包含的生物的标签里。
#这样生成的生物就是一个标签为“stone”的蝙蝠了。
可参照视频:BV1ZQ4y1A7NA

↓将这个刷怪蛋扔出,使其成为掉落物实体,在对话栏内输入:
/tag @e[type=item,c=1] add stone
#给距离玩家最近(c=1)的掉落物实体(type=item)添加(add)“stone”标签(tag)。
!请确保该掉落物实体离你最近。


↓在对话栏内输入
/give @s structure_block
#给予(give)命令执行者(@s)一个结构方块(structure_block)。
↓放置后保存一格空气,确保含有一个实体。
↓退出游戏打开Btr,将这个掉落物实体的全部标签复制,替换到刚刚保存的结构包含的生物的标签里。
#这样就可以用结构方块生成此掉落物实体了。
可参照视频:BV1r64y1F7Wi

→在对话栏内输入
/give @s command_block
#给予(give)命令执行者(@s)一个命令方块(command_block)。

第二部分:放置特殊方块
→循环,无条件,始终活动,0
/execute @e[type=bat,tag=stone,c=1] ~ ~ ~ detect ~ ~ ~ air 0 fill ~ ~ ~ ~ ~ ~ stone 0
#检测(execute)到距这个命令方块最近(c=1)的在其所在位置(detect ~ ~ ~)是空气(air)的...
#标签为“stone”(tag=stone)的蝙蝠(type=bat),在它的位置(~ ~ ~;~ ~ ~ ~ ~ ~)填充(fill)一个石头(stone 0)。
!此处“c=1”原指“一个实体”,其默认为选取离目标选择器基准点最近的1个实体,所以用在这里选择距离最近的实体。


第三部分:破坏特殊方块
图片:
下载 (14).png
→循环,无条件,始终活动,0
/execute @e[type=bat,tag=stone] ~ ~ ~ testforblock ~ ~ ~ air

#检测(execute)到标签是“stone”(tag=stone)的蝙蝠(type=bat)...
#探测(testforblock)它所在的位置(~ ~ ~;~ ~ ~)是否有空气(air)。
!此命令对应上图中第2行,第1格处的命令方块。

↓链,有条件,始终活动,0
/fill ~1 ~ ~ ~1 ~ ~ redstone_block
#在这个命令方块的相对坐标~1 ~ ~(~1 ~ ~ ~1 ~ ~)处填充(fill)红石块(redstone_block)。
!此命令对应上图中第2行,第2格处的命令方块。


这里还有一个填充空气的命令,要不然下一次用就不能正常启动了,发的太急忘了改了,因为要换图片,改天再说,今天开学了

↓脉冲,无条件,需要红石,0
/execute @e[type=bat,tag=stone] ~ ~ ~ kill @e[type=item,name=圆石,rx=0,c=1]
#检测(execute)到标签是“stone”(tag=stone)的蝙蝠(type=bat)...
#清除(kill)距它最近(c=1)的叫“圆石”(name=圆石)的自然(rx=0)掉落物(type=item)。
!此命令对应上图中第1行,第3格处的命令方块。
/execute @e[type=bat,tag=stone] ~ ~ ~ kill @e[type=item,name=石头,rx=0,c=1]
#检测(execute)到标签是“stone”(tag=stone)的蝙蝠(type=bat)...
#清除(kill)距它最近(c=1)的叫“石头”(name=石头)的自然(rx=0)掉落物(type=item)。
!此命令对应上图中第2行,第4格处的命令方块。
!此处有两条指令是因为石头有两种掉落物,需要两个命令方块,具体放置方法见上图。


↓链,有条件,始终活动,0
/fill ~1 ~ ~ ~1 ~ ~ redstone_block
#在这个命令方块的相对坐标~1 ~ ~(~1 ~ ~ ~1 ~ ~)处填充(fill)红石块(redstone_block)。
!此命令对应上图中第1行,第4格处的命令方块。

/fill ~ ~1 ~ ~ ~1 ~ redstone_block
#在这个命令方块的相对坐标~ ~1 ~(~ ~1 ~ ~ ~1 ~)处填充(fill)红石块(redstone_block)。
!此命令对应上图中第2行,第5格处的命令方块。
!这两个相对坐标均指向第1行,第5个方块处(即上图中第1行的红石块处)。

↓脉冲,无条件,需要红石,0
/fill ~-1 ~ ~ ~-1 ~ ~ air
#在这个命令方块的相对坐标~-1 ~ ~(~-1 ~ ~ ~-1 ~ ~)处填充(fill)空气(air)。
!此命令对应上图中第1行,第6格处的命令方块。
!此命令用来清除启动这串命令组的红石块,以使下次再填充红石块时,命令组可以正常启动。


↓脉冲,无条件,需要红石,0
/fill ~ ~-1 ~ ~ ~-1 ~ redstone_block
#在这个命令方块的相对坐标~ ~-1 ~(~ ~-1 ~ ~ ~-1 ~)处填充(fill)红石块(redstone_block)。
!此命令对应上图中第1行,第7格处的命令方块。

!重点:上一命令中填充的红石块激活一个结构方块,这个结构方块中加载第零步中保存的结构,所生成结构的位置(即上图中第2行,红石块处)正是上一命令填充红石块的位置,所以当这个结构方块被激活的时候,红石块会被填充为空气,这样在下次填充红石块时才能正常激活结构方块,若在实际安装中位置有所改变,请务必添加:

↓链,无条件,始终活动,0
/fill ~a ~b ~c ~a ~b ~c air
#在这个命令方块的相对坐标~a ~b ~c(~a ~b ~c ~a ~b ~c)处填充(fill)红石块(redstone_block)。
!此段命令并非必要,故在上图中没有对应的命令方块。


↓链,无条件,始终活动,0
/execute @e[type=bat,tag=stone,c=1] ~ ~ ~ detect ~ ~ ~ air 0 tp @e[type=item,tag=stone,c=-1] @s
#检测(execute)到距在其位置(detect ~ ~ ~)为空气(air)的离最近(c=1)的标签为“stone”(tag=stone)的蝙蝠(type=bat)...
#将距这个实体(~ ~ ~)最远(c=-1)的标签为“stone”(tag=stone)的掉落物实体(type=item)传送(tp)到这个实体(@s)的位置。
!此命令对应上图中第1行,第8格处的命令方块。
!此处“c=-1”指距目标选择器基准点最远的1个实体。


↓链,有条件,始终活动,0
/execute @e[type=bat,tag=stone,tag=1,c=1] ~ ~ ~ detect ~ ~ ~ air 0 kill @s
#检测(execute)到在其所在位置(detect ~ ~ ~)有空气(air)的距离这个命令方块最近(c=-1)的...
#标签为“stone”(tag=stone)的蝙蝠(type=bat),清除(kill)这个实体(@s)。
!此命令对应上图中第1行,第9格处的命令方块。


第四部分:活塞直接推动特殊方块
未完待续

第五部分:活塞间接移动特殊方块
未完待续

第六部分:装置正常运行的保障措施
图片:
下载 (1).png
→循环,无条件,始终活动,0
/effect @e[type=!item,tag=stone] invisibility 5 0 true
#赋予标签为“stone”(tag=stone)的所有不是掉落物实体的实体(type=!titem)以5秒(5)的1级(0)...
#隐身(invisibility)效果(effect),且不显示其粒子效果(true)。
!此处将时间设置为“5”是为了在实体死(被清除)后仍不显示其死亡动画。

↘链,无条件,始终活动,0
/effect @e[type=!item,tag=stone] regeneration 1 255 true
#赋予标签为“stone”(tag=stone)的所有不是掉落物实体的实体(type=!item)以1秒(1)的256级(255)...
#生命恢复(regeneration)效果(effect),且不显示其粒子效果(true)。
!使其可以迅速恢复生命。


↘链,无条件,始终活动,0
/effect @e[type=!item,tag=stone] resistance 1 255 true
#赋予标签为“stone”(tag=stone)的所有不是掉落物实体的实体(type=!tiem)以1秒(1)的256级(255)...
#抗性提升(resistance)效果(effect),且不显示其粒子效果(true)。
!使其可以几乎免疫伤害。


↘链,无条件,始终活动,0
/execute @e[type=bat,tag=stone] ~ ~ ~ tp @s ~ ~ ~
#检测(execute)到标签为“stone”(tag=stone)的蝙蝠(type=bat),将它(@s)传送(tp)到其自己的位置(~ ~ ~;~ ~ ~)。
!用来防止蝙蝠自己移动。


↘链,无条件,始终活动,0
/tag @e[type=item,tag=stone,rm=3] remove stone
#将5格以外(rm=5)的标签为“stone”(tag=stone)的蝙蝠(type=bat)的“stone”标签(tag)移除(remove)。
!用来防止第二部分倒数第二条命令选取到错误的实体(正确的实体是刚刚结构方块生成的实体)。
!此处“rm=3”需按实际情况改变,其范围须是包含第二部分中的结构方块的生成位置(即第二部分的图中的第2行的红石块处)的最小值(大点也不会怎样),最好不要在此范围内使用此装置。


第七部分:效果制作
→循环,无条件,始终活动,0
/execute @e[type=bat,tag=stone] ~ ~ ~ detect ~ ~1 ~ dirt 0 fill ~ ~1 ~ ~ ~1 ~ air 0 destroy
#检测(execute)到在其上方1格处(detect ~ ~1 ~)为空气(air)的离最近(c=1)的标签为“stone”(tag=stone)的...
#蝙蝠(type=bat),在它上方一格处(~ ~ ~;~ ~1 ~ ~ ~1 ~)填充(fill)空气(air),并掉落其以非附魔的铲子破坏后的掉落物。


第八部分:按实际情况的可选用的模块
未完待续

难点详讲
也没有什么难点,有不理解的地方可以在评论区回复,或去b站私聊(不要问为什么头像和昵称都不一样),也可以加我QQ:3487437313

已知bug
因为目前还没有进行游戏内的测试,并未发现有bug。

其他一些无关紧要的事
你知道吗?
    1.这个教程作者写了两周(当然是抽空写的)。
    2.作者写这个教程的时候已经半个月没玩游戏了(下次玩要等到国庆节)。
    3.写这个教程就只用了一个浏览器。
    4.为了给教程配图,我浏览器累计崩溃了63次(说到底还是设备太渣)。
招募启示:
    Command_block_Skyblock工作室招新,这是一个刚刚建立不久的基岩版国际版工作室,但由于缺乏可以长时间游戏在线的人员,作品进度缓慢。目前在做的(也是唯一的)作品是One_Tree_Skyblock原版科技空岛生存,希望有爱玩命令的玩家加入我们,一起做这张地图。
平原_完成品_原版 (1).png
    One_Tree_Skyblock原版科技空岛生存简介:这是一个仅仅基于原版命令方块的科技类空岛生存,中心主题的是为了让玩家更好的实现资源获取的自动化。正如地图的名称,整个空岛生存的开局中有一棵树和一块泥土,玩家要试图在这样一个空岛是生存下去。当然,我们也想到了一些必要的更改,我们让僵尸掉落铁锭的几率增加,以快速的度过前期的艰难时刻。我们让破坏泥土可以掉落“小石子”;熔融圆石可以获得岩浆以获得一些原本在这个空岛上不能获得,而生存却必须要用的材料。我们做的伪·守卫者和其他一些生物的自然生成,以满足玩家对守卫者农场的需求。到了后期,玩家还可以通过自定义合成,做出所谓“传送带”、“风机”、“熔炼熔炉”、“物品传送接口”等自定义的功能性方块,以完成所谓的自动化。除了这些,还有更多的内容等待被想出并加入(注:上文所述的装置,部分还在计划当中,因人手不足,并未制作)。
    赶快来加入我们吧,和我们一起完成这地图的制作。QQ群号:758449163,入群问题按要求回答即可。
!获得有关存档制作的最新进展,和招新的具体信息,请关注我的b站账号
合成表征集:
    可以是用原版的物品合成,也可以不用原版的(不是原版的材料需要附合成表或来源)。
    待分配合成表的物品有:物品传送带、物品传送接口、熔融熔炉核心、熔炼熔炉核心、浇铸口、液体储罐核心、风机、物品电梯、筛子、滤网、液体传送接口、液体管道。  
    点击此链接以进行回答。(有空的话还是建议填一填)








评分

参与人数 1人气 +2 金粒 +8 收起 理由
Minecraft.Wnxi + 2 + 8 神乎其技!6的飞起!

查看全部评分

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2021-9-28 04:37 , Processed in 0.068605 second(s), Total 26, Slave 19 queries, Release: Build.2021.09.22 1647, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表