我想在没有损坏的实体上显示损坏动画。不是:
entity.damage(2);
然后
public void onEntityDamage(EntityDamageEvent event) {
event.setDamage(0);
更像这样:
entity.setHealth(entity.getHealth - 2);
"Send a packet to Player Damage Animation IF POSSIBLE WITH ProtocolLib"
方法Player.损坏
方法使一切“正常”。
如果您想发送自己的数据包,您应该使用PacketPlayOut动画
,值为1
(为什么?)
对于1.16及更低版本:
import net.minecraft.server.MC_VERSION.PacketPlayOutAnimation;
EntityPlayer ep = ((CraftPlayer) p).getHandle();
ep.playerConnection.sendPacket(new PacketPlayOutAnimation(ep, 1));
对于1.17及以上:
import net.minecraft.network.protocol.game.PacketPlayOutAnimation;
EntityPlayer ep = ((CraftPlayer) p).getHandle();
ep.b.sendPacket(new PacketPlayOutAnimation(ep, 1));
这是一个带有直接minecraft版本导入的版本。您可以使用反射将这些NMS用于所有版本。
或者使用Protocol colLib,它似乎是这样的:
PacketContainer packetContainer = protocolManager.createPacket(Play.Server.ANIMATION);
packetContainer.getIntegers().write(0, entityId);
packetContainer.getIntegers().write(0, 1);
manager.sendServerPacket(p, packetContainer); // seems to be how you send packet
在此处了解有关Protocol colLib中数据包的更多信息