MZIMU
本帖最后由 MZIMU 于 2020-4-22 13:22 编辑

我想让我的实体 [继承的是EntityZombie] 穿上装备 使用了
CraftItemStack.asNMSCopy
来转化为nms的item后
再通过
this.setEquipment来设置 但实际生成的却没有
装备的来源是通过 击杀的当前目标身上的装备
具体的代码如下
  1. EntityEquipment ee = entiry.getEquipment();
  2. ItemStack item = CraftItemStack.asNMSCopy(ee.getChestplate());
  3. this.setEquipment(EnumItemSlot.CHEST,item);
  4. item = CraftItemStack.asNMSCopy(ee.getHelmet());
  5. this.setEquipment(EnumItemSlot.HEAD,item);
  6. item = CraftItemStack.asNMSCopy(ee.getItemInOffHand());
  7. this.setEquipment(EnumItemSlot.OFFHAND,item);
  8. item = CraftItemStack.asNMSCopy(ee.getItemInMainHand());
  9. this.setEquipment(EnumItemSlot.MAINHAND,item);
  10. item = CraftItemStack.asNMSCopy(ee.getBoots());
  11. this.setEquipment(EnumItemSlot.FEET,item);
  12. item = CraftItemStack.asNMSCopy(ee.getLeggings());
  13. this.setEquipment(EnumItemSlot.LEGS,item);
复制代码
是写错了什么吗 还是说不是这样的 亦或者有什么更新数据的方法...求教...

谢谢各位大佬了

3422328989cx
学过化学分析方法春风花草法国

MZIMU
好吧 已经解决了 发现在EntityZombie下面有一个
  1. protected void a(DifficultyDamageScaler difficultydamagescaler) {
  2.         super.a(difficultydamagescaler);
  3.         if (this.random.nextFloat() < (this.world.getDifficulty() == EnumDifficulty.HARD ? 0.05F : 0.01F)) {
  4.             int i = this.random.nextInt(3);
  5.             if (i == 0) {
  6.                 this.setSlot(EnumItemSlot.MAINHAND, new ItemStack(Items.IRON_SWORD));
  7.             } else {
  8.                 this.setSlot(EnumItemSlot.MAINHAND, new ItemStack(Items.IRON_SHOVEL));
  9.             }
  10.         }

  11.     }
复制代码


看着像是。。。根据难度要不要给僵尸一把剑之类的把
然后把setEquipment改成setSlot就好了。。。
那setEquipment难道是设置。。装备掉落的???看到有个dropEquipment。。。。。。。。。。

第一页 上一页 下一页 最后一页