欢迎光临散文网 会员登陆 & 注册

实体方块的判断——源码中调用isNormalCube()的位置总结

2019-08-10 14:19 作者:Fallen_Breath  | 我要投稿

前往TIS论坛,感受更好的 Markdown 渲染体验:https://forum.tis.world/topic/141/实体方块的判断-源码中调用isnormalcube-的位置总结


游戏版本:Minecraft Java Edition 1.13.2
源码来源:mcp
不保证下列调用目的的表述正确性,仅均为个人猜想

实体方块,实心方块,整砖,普通方块,具体指什么?

在我看来,绝大部分时间里,当我们提及“实体方块”一词的时候,指的都是能压线压箱发矿车的那一类实心完整方块。在源码中,这些,都是通过一个叫做isNormalCube()的函数进行判定的

net/minecraft/block/Block.java:293

这个函数里的三个判据我先不细究,先来看看源码中所有调用isNormalCube()的位置,来看看这个实体方块判断,会用在什么地方


箱子压箱判定

net/minecraft/block/BlockChest.java:335

箱子上面有实体方块时无法打开


末影箱压箱判定

net/minecraft/block/BlockEnderChest.java:97

末影箱上面有实体方块时无法打开


比较器隔方块检测容器的判定

net/minecraft/block/BlockRedstoneComparator.java:85

比较器可以隔着一个实体方块检测容器


红石粉压线判定

net/minecraft/block/BlockRedstoneWire.java:150

实体方块可帮助或者切断红石粉的上下连接

红石粉更新

看看是沿实体方块的表面上传还是下传

信号更新

net/minecraft/block/BlockRedstoneWire.java:222

方块增加时

net/minecraft/block/BlockRedstoneWire.java:305

方块替换时

net/minecraft/block/BlockRedstoneWire.java:341

判断信号源

net/minecraft/block/BlockRedstoneWire.java:438


地狱门方块刷新僵尸猪人

net/minecraft/block/BlockPortal.java:70

有地狱门方块引起的僵尸猪人刷新,只在实体方块上面刷


获得红石信号强度时判断强弱充能

net/minecraft/world/World.java:2548


判断更新隔实体方块检测容器的比较器输出

net/minecraft/world/World.java:3071

比较器可以隔着一个实体方块检测容器


刷怪循环

联动《MC1.13.2 刷怪机制详细讲解》里其中一种“普通方块”

集群刷怪的开始判定

net/minecraft/world/WorldEntitySpawner.java:107

实体方块会在集群刷怪的开始打断集群刷怪,这也是刷怪塔的刷怪层要避免有实体方块的原因


水生生物的刷新判定

net/minecraft/world/WorldEntitySpawner.java

水生生物刷新方块的上方不能是实体方块


挤出卡入实体方块中的玩家

net/minecraft/client/entity/EntityPlayerSP.java:474
net/minecraft/client/entity/EntityPlayerSP.java:534
net/minecraft/entity/player/EntityPlayer.java:1826


定义玩家类中的ISNORMALCUBE()

net/minecraft/entity/player/EntityPlayer.java:1830


矿车在激活的充能铁轨上贴实体方块时的启动

net/minecraft/entity/item/EntityMinecart.java:615


蝙蝠倒挂睡觉

net/minecraft/entity/passive/EntityBat.java:132
net/minecraft/entity/passive/EntityBat.java:174

蝙蝠得倒挂在实体方块下才可能睡觉


相关链接

禄存的方块属性一览


实体方块的判断——源码中调用isNormalCube()的位置总结的评论 (共 条)

分享到微博请遵守国家法律