第一节:实体
1. 实体概述
在Minecraft世界中,实体占据着非常重要的一部分。可以说,组成Minecraft世界的,除了物品和方块,基本就是实体了。不管是可怕的凋灵还是凋灵抛出去的火球,抑或是玩家还是玩家扔出去的末影之眼,小到掉落的经验球,大到飞翔的末影龙,快到在铁轨上飞奔的矿车,慢到在水中静止的钓鱼钩,在地上站立的盔甲架,在墙上悬挂的一幅画,在天上咆哮的闪电,在空中绚丽的烟花,和善如猪牛羊,恐怖如末影人,生物的掉落物品,末地的末影水晶,等等,全部都是实体完成的。
实体的核心是一个名为Entity
的类,一般一个实体都有着下面几个属性:
- 运动属性,包括一个维度坐标,三个位置坐标,和两个姿态坐标,没错,相较刚体而言少了一个姿态坐标
- 大小,也就是碰撞箱,每个实体都被看做有着固定长宽和固定高度的一个立方体,在旋转的时候这个立方体是不变的
- 状态,包括实体是不是骑着另一个实体,是否着火,是否在水中等
- 一个唯一标识ID,即UUID
生物作为一种特殊的实体,核心是一个名为EntityLiving
的类,除了刚刚所述的特性之外,生物一般还有着下面这些特性:
- 既定属性,如经验值、跟踪半径、手持物品、存活时间等
- 既定行为,如观察、行走、跳跃、攻击、寻路等
- 人工智能,也就是AI,对既定行为的一定程度的自动化实施能力
因为在Mod中创建或者改造生物要比一般的实体常见,所以说这里我们重点讲生物的相关属性,当然,其中的部分,是可以应用到实体上的。
我们来看看生物对应的类,也就是EntityLiving
类的继承树:
\-EntityLiving
\-EntityAmbientCreature
|-EntityBat
\-EntityCreature
\-EntityAgeable
\-EntityAnimal
|-EntityChicken
\-EntityCow
|-EntityMooshroom
|-EntityHorse
|-EntityPig
|-EntityRabbit
|-EntitySheep
\-EntityTameable
|-EntityOcelot
|-EntityWolf
|-EntityVillager
\-EntityGolem
|-EntityIronGolem
|-EntitySnowman
\-EntityMob
|-EntityBlaze
|-EntityCreeper
|-EntityEnderman
|-EntityEndermite
|-EntityGiantZombie
|-EntityGuardian
|-EntitySilverfish
|-EntitySkeleton
\-EntitySpider
|-EntityCaveSpider
|-EntityWitch
|-EntityWither
\-EntityZombie
|-EntityPigZombie
|-EntityDragon
\-EntityFlying
|-EntityGhast
\-EntitySlime
|-EntityMagmaCube
\-EntityWaterMob
|-EntitySquid
还有几个常用的接口:
IAnimals
表示动物,几乎所有生物对应的类都继承了这个接口IMob
表示怪物,注意怪物也是动物的一种INpc
表示像村民一样的NPC,背后一定有着一些不为人知的交易IRangedAttackMob
表示可以产生一定范围内的攻击的怪物,比如部分可以发射弹射物的怪物IBossDisplayData
表示这个怪物是一个可以显示血条的BossIEntityOwnable
表示这个生物可以被驯服,比如豹猫和狼