si_12
本帖最后由 hahahawtf123 于 2020-2-27 18:02 编辑

如何实现让僵尸在白天不会自燃

我用ai给它设置当着火时会设置FireTick为0

但是还是会着一下马上消失 还会扣血

除了带帽子和喷药水有其他办法吗

修改生物特效或者是给玩家发视觉包


最好能附上一些关键代码
等待大佬
            


Akkariin
也许可以通过把服务器时间设置为晚上,然后给玩家客户端设置本地时间(LocalTime)为白天
仅提供建议,没有做过实际测试

si_12
Akkariin 发表于 2020-2-27 18:13
也许可以通过把服务器时间设置为晚上,然后给玩家客户端设置本地时间(LocalTime)为白天
仅提供建议,没有 ...

感谢建议

夏日冰熊
本帖最后由 南外丶仓鼠 于 2020-2-27 20:54 编辑

死方法:

僵尸头顶有东西时不会燃烧
在僵尸头上看不见的很高高空放置一个方块。

僵尸走到哪方块放到哪,你可以做一个task放置方块并且清除过时的方块。

但这样貌似开销有点大不太建议这样实现在

RE_OVO
见NMS代码: EntityZombile#movementTick()
  1.     public void movementTick() {
  2.         if (this.isAlive()) {
  3.             boolean flag = this.K_() && this.en();
  4.             if (flag) {
  5.                 ItemStack itemstack = this.getEquipment(EnumItemSlot.HEAD);
  6.                 if (!itemstack.isEmpty()) {
  7.                     if (itemstack.e()) {
  8.                         itemstack.setDamage(itemstack.getDamage() + this.random.nextInt(2));
  9.                         if (itemstack.getDamage() >= itemstack.h()) {
  10.                             this.c(EnumItemSlot.HEAD);
  11.                             this.setSlot(EnumItemSlot.HEAD, ItemStack.a);
  12.                         }
  13.                     }

  14.                     flag = false;
  15.                 }

  16.                 if (flag) {
  17.                     this.setOnFire(8);
  18.                 }
  19.             }
  20.         }

  21.         super.movementTick();
  22.     }
复制代码

燃烧是基于判断怪物所处位置的亮度的, 貌似没有nbt标签可以控制
你可以给怪物带上帽子, 帽子会每tick损耗0~1点, 可以通过给帽子加上"Unbreakable"标签来禁止帽子损耗
如果不想让玩家看见帽子,可以使用ProtocolLib发包隐藏掉帽子(在服务器上任然存在,只是发包欺骗客户端)

si_12
jebme 发表于 2020-2-27 21:32
见NMS代码: EntityZombile#movementTick()

燃烧是基于判断怪物所处位置的亮度的, 貌似没有nbt标签可以控制 ...

谢谢大佬

si_12
南外丶仓鼠 发表于 2020-2-27 20:52
死方法:

僵尸头顶有东西时不会燃烧

感谢建议