MC百科社群

标题: 什么是方块实体,和实体方块? [打印本页]

作者: dinnerbone    时间: 2022-10-25 11:17
标题: 什么是方块实体,和实体方块?
方块是方块(block),实体是实体(entity),那么方块实体是什么?实体方块又是什么?

作者: QQ酱219479    时间: 2022-10-25 11:17
本帖最后由 QQ酱219479 于 2022-10-25 13:04 编辑

方块实体(Forge文档)
实体方块我觉得是有歧义
Minecraft WIKI上写:
能被充能的方块叫做实体方块,也叫物理学不透明方块。官方混淆映射表中称为红石导体(Redstone Conductor)。

一般地,一个方块的材料完全阻挡、碰撞体积完整,这个方块就是实体方块。特别地,移动中的活塞、未伸出的活塞、红石块、侦测器不是实体方块;灵魂沙是实体方块。

实体方块放置在红石线四周会阻止红石信号向斜下方的红石线传播,这被称为压线。比较器可以隔着一个实体方块进行满箱检测。在铁轨上的矿车碰到实体方块会回弹回来。蝙蝠只能悬挂在实体方块下面。实体方块下面的箱子不能打开。实体方块放置在红石线下面会允许红石信号向斜下方的红石线传播。非实体方块则没有这些性质。

但注意到不少玩家使用实体方块这个词时,指的实际是那些外观或功能上更像方块但以实体(Entities)的形式存在的对象,比如下落中的方块(沙子、沙砾等)、盔甲架等。
作者: QQ酱22956    时间: 2022-10-26 19:49
基本正确,顺便补充几点:
BlockEntity和TileEntity是同一个东西,在不同版本里的不同叫法。以下统一简称TE。这个概念有时候会被称作方块实体,但因为四个字太长,多数时候都称之为te。
TE既不是实体,也不是方块,他是一种特殊的对象。这个概念概念就像ItemStack,是存在于MC源码中的,一般的玩家基本接触不到,服主和开发者会用到。
在MC里,方块是不能存储信息的,每个方块最多只能存储一下meta,一个4bit的信息。如果你想让一个方块记住某些信息,比如存储一件物品,那么必须为他制作一个te。每个te都是单独的对象,分配单独的内存,在存档里也会专门占据一块磁盘。相对的,红石块就是红石块,所有的红石块共用同一个Block和BlockState对象,他们之间无法有任何的区别,不能单独存储信息。另外,普通的方块在低版本也不能均匀定时触发逻辑。如果你想做个每3秒钟做一次某件事的东西,那必须为他制作TE,或者把逻辑写在方块以外。

实体方块的概念很少提及。由于有多种映射表,多数mc代码概念的英文名字都很混乱,我们一般只会提及其英文原名,比如solid cube,或者full cube之类的。我对此不做过多评论,在我的开发历程中,实体方块是没有一个清晰的指代的,一般是根据上下文指代不同的东西。





欢迎光临 MC百科社群 (https://bbs.mcmod.cn/) MC百科|最大的MineCraft中文模组百科