第一节:实体

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表示这个怪物是一个可以显示血条的Boss
  • IEntityOwnable表示这个生物可以被驯服,比如豹猫和狼

results matching ""

    No results matching ""