BE教程

基岩技术教程:5.嵌套方块

Cat_A***Lv.4 高级会员 发表于 2024-8-17 IP:山西省 2,604 0
AI 速览2026-10-02 11:14 生成

基岩版嵌套方块教程:用前景层与背景层做出含任意方块的方块

这篇教程面向基岩版技术玩家,讲解基岩版含水方块背后的前景层与背景层机制,并由此引出「嵌套方块」概念,即让两个方块处于同一位置。文中说明了嵌套方块的渲染顺序、互动与破坏规则,以及液体前景层时的特殊表现,最后给出通过移动中的方块配合修改物品栏 NBT 来获取嵌套方块的方法。适合想深入了解基岩版方块机制、尝试制作特殊方块的玩家阅读。

  • 需要修改物品栏 NBT,属于进阶操作
  • 前景层为水或流动水时可能制造难以消除的无源之水
本卡片由 AI 阅读本帖后生成,可能存在疏漏,请以帖子正文为准。
本帖最后由 Cat_Anchor 于 2024-10-4 12:50 编辑

前言
众所周知,Java 版和基岩版实现含水方块的逻辑不一样。Java 版只有一个方块状态,而基岩版不同,基岩版的实现逻辑很“厉害”,可以用这个鲜为人知的特性做出奇怪的方块。至于基岩版到底是怎么实现含水方块的,请让我引入两个概念——“前景层”和“背景层”。
概念与性质
基岩版中,要实现方块的含水,需要让方块和水处于同一位置,我们称含水方块中的方块位于“前景层”,而水位于“背景层”。

实际上,引擎没有规定前景层和背景层的方块种类,也就是说,我们可以制作“含任何方块的任何方块”,比如含蜂蜜块的末地石、含紫水晶块的玻璃,等等。我把这类方块称为“嵌套方块”,它有以下性质:
  • 渲染方法相同时,首先渲染背景层方块,然后渲染前景层方块。
  • 渲染方法不同时,首先渲染使用 blend 渲染方法的方块,然后是 alpha_test,最后是 opaque,此时两个方块的阴影会叠加。
  • 与之互动时,体现前景层方块的性质。特别地,背景层的水可以灭火;前景层为空气时,背景层不渲染,体现背景层方块的性质。
  • (除爆炸外的)破坏时,首先破坏前景层方块,然后背景层方块成为前景层方块,最后背景层方块变为空气。
  • 被爆炸破坏时,前景层方块和背景层方块一起消失。
  • 如果前景层是液体方块,背景层是完整固体方块,液体方块不会流动,嵌套方块没有碰撞体积。液体流过这个方块时,它会被取代。
  • 获取
    可以通过移动中的方块放置嵌套方块,需要修改物品栏 NBT。以下是移动中的方块的物品数据,由 NBT 转为 JSON。制作时只需要把 NBT 格式做得与以下数据格式一样即可。
    1. 以下 JSON 描述了 ~local_player 根标签中的空名称对象中的 Inventory 数组中的任意一个对象。
    2. { //一个物品堆叠
    3.   "block": {
    4.     "name": "minecraft:movingBlock", //方块 ID
    5.     "states": {}, //方块状态
    6.     "version": 17879555 //数据版本,对应游戏版本
    7.   },
    8.   "count": 64, //物品堆叠的数量
    9.   "damage": 0, //物品的损害值
    10.   "name": "minecraft:movingBlock", //物品 ID
    11.   "slot": 0, //于物品栏的槽位索引
    12.   "wasPickedUp": false, //是否刚被捡起
    13.   "tag": {
    14.     "movingBlock": { //前景层
    15.       "name": "minecraft:glass", //方块 ID
    16.       "states": {}, //方块状态
    17.       "version": 17879555 //数据版本,对应游戏版本
    18.     },
    19.     "movingBlockExtra": { //背景层
    20.       "name": "minecraft:diamond_block", //方块 ID
    21.       "states": {}, //方块状态
    22.       "version": 17879555 //数据版本,对应游戏版本
    23.     }
    24.   } //含钻石块的玻璃
    25. }
    复制代码


    以下是移动的方块的完整物品数据,由 NBT 转为 JSON。

    以下是图片。(蜂蜜块是前景层,末地石是背景层。)
    (前景层是水或流动的水,背景层是荧石。如果不停放置,会制造“无源之水”,很难消除。)
    后记
    这一期,我们讲解了嵌套方块。


    您需要登录后才可以回帖 登录 | 立即注册
    本版积分规则