本帖最后由 hahahawtf123 于 2020-2-27 18:02 编辑 
 
          
   
如何实现让僵尸在白天不会自燃
我用ai给它设置当着火时会设置FireTick为0
但是还是会着一下马上消失 还会扣血
除了带帽子和喷药水有其他办法吗
修改生物特效或者是给玩家发视觉包
最好能附上一些关键代码
等待大佬
也许可以通过把服务器时间设置为晚上,然后给玩家客户端设置本地时间(LocalTime)为白天
仅提供建议,没有做过实际测试
仅提供建议,没有做过实际测试
Akkariin 发表于 2020-2-27 18:13
也许可以通过把服务器时间设置为晚上,然后给玩家客户端设置本地时间(LocalTime)为白天
仅提供建议,没有 ...
感谢建议
 本帖最后由 南外丶仓鼠 于 2020-2-27 20:54 编辑 
死方法:
僵尸头顶有东西时不会燃烧
在僵尸头上看不见的很高高空放置一个方块。
僵尸走到哪方块放到哪,你可以做一个task放置方块并且清除过时的方块。
但这样貌似开销有点大不太建议这样实现在
死方法:
僵尸头顶有东西时不会燃烧
在僵尸头上看不见的很高高空放置一个方块。
僵尸走到哪方块放到哪,你可以做一个task放置方块并且清除过时的方块。
但这样貌似开销有点大不太建议这样实现在
见NMS代码: EntityZombile#movementTick()
复制代码
燃烧是基于判断怪物所处位置的亮度的, 貌似没有nbt标签可以控制
你可以给怪物带上帽子, 帽子会每tick损耗0~1点, 可以通过给帽子加上"Unbreakable"标签来禁止帽子损耗
如果不想让玩家看见帽子,可以使用ProtocolLib发包隐藏掉帽子(在服务器上任然存在,只是发包欺骗客户端)
-     public void movementTick() {
 
-         if (this.isAlive()) {
 
-             boolean flag = this.K_() && this.en();
 
-             if (flag) {
 
-                 ItemStack itemstack = this.getEquipment(EnumItemSlot.HEAD);
 
-                 if (!itemstack.isEmpty()) {
 
-                     if (itemstack.e()) {
 
-                         itemstack.setDamage(itemstack.getDamage() + this.random.nextInt(2));
 
-                         if (itemstack.getDamage() >= itemstack.h()) {
 
-                             this.c(EnumItemSlot.HEAD);
 
-                             this.setSlot(EnumItemSlot.HEAD, ItemStack.a);
 
-                         }
 
-                     }
 
 
-                     flag = false;
 
-                 }
 
 
-                 if (flag) {
 
-                     this.setOnFire(8);
 
-                 }
 
-             }
 
-         }
 
 
-         super.movementTick();
 
- }
燃烧是基于判断怪物所处位置的亮度的, 貌似没有nbt标签可以控制
你可以给怪物带上帽子, 帽子会每tick损耗0~1点, 可以通过给帽子加上"Unbreakable"标签来禁止帽子损耗
如果不想让玩家看见帽子,可以使用ProtocolLib发包隐藏掉帽子(在服务器上任然存在,只是发包欺骗客户端)
jebme 发表于 2020-2-27 21:32
见NMS代码: EntityZombile#movementTick()
燃烧是基于判断怪物所处位置的亮度的, 貌似没有nbt标签可以控制 ...
谢谢大佬
南外丶仓鼠 发表于 2020-2-27 20:52
死方法:
僵尸头顶有东西时不会燃烧
感谢建议