Blocks using the "minecraft:material_instances" component with "render_method" = "alpha_test_single_sided" display properly when in the player's hand
翻译过来,就是
使用"alpha_test_single_sided"渲染方法的方块在玩家手中能正确显示。
这时,我看到了以前从未看到过的渲染方法——alpha_test_single_sided。这是什么?根据名称,它应该与alpha_test类似。如果double_sided是“双面”(禁用背面剔除),那single_sided应该是“单面”(启用背面剔除)。进游戏测试了一下,果然是这样的,使用这种渲染方法的方块与空气方块相邻时不再渲染原先的最多6个面,而是最多3个面。
于是,我就把这种渲染方法写到了我的文档里,更新了我的那个页面。不过连官方文档也没有提到这个渲染方法,大多数人也不知道,更新日志却提到了,这有点让人费解。
------
之前一段时间,官方把查询生物群系标签的Molang给移除掉了,于是好多生物群系检测器都不能用了。我的添补附加包里有一个方块,叫漆黑虚空,它的设计初衷是希望玩家掉入末地的虚空里之后能从天空中再掉下来。我已经能让它只生成在末地维度的底部了,本来只需要设计成摔落到上面就tp到y=256的地方。可是我想到玩家很可能把它挖到主世界来尝试,主世界和末地的维度高度又不一样,这就需要检测维度。但是这个方块是很久很久以前加入的,当时是22年,我还不知道怎么实现判断维度这个功能。后来我给它设计成使用触发器组件的condition字段检测维度,好用是好用,最近官方却给它移除了。
于是我想了好久好久,想单纯地用命令来检测维度。最初的思路是用execute命令,但是子命令in只能把执行位置放在某个维度,不能“检测维度”。后来我突然想起,execute的子命令是按顺序执行的,我就完成了命令检测维度的方案。这个命令要放在全局生效的地方,比如tick.json重复触发的函数,位于常加载区块里的循环命令方块等:execute as @e at @s in <维度> if entity @s[r=1] run ...
这条命令的意思很简单,让每个实体在自身位置并在<维度>里检测一格内是否有自身,有就运行后面的命令。比如要检测的维度是下界,一个实体在主世界时检测自身是否在对应下界坐标的一格内,由于它实际上在主世界,所以不会检测到。而它在下界时,就会检测到自身。
就这样,我完成了一条命令的维度检测。在选择器里运用y和dy参数能检测我们的高度,所以即使不用方块作为载体,我们也能做出虚空检测并传送到高空的行为了。