君の名
如题,我创建了一个类,继承了EntityAnimal, 并使用
  1. @Override
  2.         protected void applyEntityAttributes()
  3.     {
  4.         super.applyEntityAttributes();
  5.         this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(50);
  6.         this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.5);
  7.         this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(0);
  8.         this.getEntityAttribute(SharedMonsterAttributes.KNOCKBACK_RESISTANCE).setBaseValue(10);
  9.         this.getEntityAttribute(SharedMonsterAttributes.ARMOR).setBaseValue(5);
  10.     }
复制代码

来定义生物属性,但奇怪的是,一旦定义了属性生物进游戏就无法生成,目前测试中只有Mob类才能正常生成。

道家深湖
本帖最后由 道家深湖 于 2021-9-18 10:26 编辑

无法生成一般是因为报错了,贴出你控制台的报错或者自己先根据输出调试一下。
这个报错是不崩溃的,因为内部catch了
就你贴出的代码里,有问题的应该是这句。


this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(0);

你有没有看过,EntityAnimal是否有ATTACK_DAMAGE这条属性,你就直接setBaseValue了?不是每个实体都有这条属性,这也是怪物和其他生物的一大区别。你要手动注册一个这属性,才能设置数值。

你不是在定义属性,你是在给属性赋值,而赋值的前提是这个属性在这个实体上定义(注册)了。