ClientboundDamageEventPacket.java
net.minecraft.network.protocol.game.ClientboundDamageEventPacket
信息
- 全限定名:net.minecraft.network.protocol.game.ClientboundDamageEventPacket
- 类型:public record
- 包:net.minecraft.network.protocol.game
- 源码路径:src/main/java/net/minecraft/network/protocol/game/ClientboundDamageEventPacket.java
- 起始行号:L16
- 实现:Packet
- 职责:
TODO
字段/常量
STREAM_CODEC- 类型:
StreamCodec<RegistryFriendlyByteBuf,ClientboundDamageEventPacket> - 修饰符:
public static final - 源码定位:
L18 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ClientboundDamageEventPacket(Entity entity, DamageSource source) @ L22
- 构造器名:ClientboundDamageEventPacket
- 源码定位:L22
- 修饰符:public
参数:
- entity: Entity
- source: DamageSource
说明:
TODO
private ClientboundDamageEventPacket(RegistryFriendlyByteBuf input) @ L32
- 构造器名:ClientboundDamageEventPacket
- 源码定位:L32
- 修饰符:private
参数:
- input: RegistryFriendlyByteBuf
说明:
TODO
方法
下面的方法块按源码顺序生成。
private static void writeOptionalEntityId(FriendlyByteBuf output, int id) @ L42
- 方法名:writeOptionalEntityId
- 源码定位:L42
- 返回类型:void
- 修饰符:private static
参数:
- output: FriendlyByteBuf
- id: int
说明:
TODO
private static int readOptionalEntityId(FriendlyByteBuf input) @ L46
- 方法名:readOptionalEntityId
- 源码定位:L46
- 返回类型:int
- 修饰符:private static
参数:
- input: FriendlyByteBuf
说明:
TODO
private void write(RegistryFriendlyByteBuf output) @ L50
- 方法名:write
- 源码定位:L50
- 返回类型:void
- 修饰符:private
参数:
- output: RegistryFriendlyByteBuf
说明:
TODO
public PacketType<ClientboundDamageEventPacket> type() @ L62
- 方法名:type
- 源码定位:L62
- 返回类型:PacketType
- 修饰符:public
参数:
- 无
说明:
TODO
public void handle(ClientGamePacketListener listener) @ L67
- 方法名:handle
- 源码定位:L67
- 返回类型:void
- 修饰符:public
参数:
- listener: ClientGamePacketListener
说明:
TODO
public DamageSource getSource(Level level) @ L71
- 方法名:getSource
- 源码定位:L71
- 返回类型:DamageSource
- 修饰符:public
参数:
- level: Level
说明:
TODO
代码
public record ClientboundDamageEventPacket(int entityId, Holder<DamageType> sourceType, int sourceCauseId, int sourceDirectId, Optional<Vec3> sourcePosition)
implements Packet<ClientGamePacketListener> {
public static final StreamCodec<RegistryFriendlyByteBuf, ClientboundDamageEventPacket> STREAM_CODEC = Packet.codec(
ClientboundDamageEventPacket::write, ClientboundDamageEventPacket::new
);
public ClientboundDamageEventPacket(Entity entity, DamageSource source) {
this(
entity.getId(),
source.typeHolder(),
source.getEntity() != null ? source.getEntity().getId() : -1,
source.getDirectEntity() != null ? source.getDirectEntity().getId() : -1,
Optional.ofNullable(source.sourcePositionRaw())
);
}
private ClientboundDamageEventPacket(RegistryFriendlyByteBuf input) {
this(
input.readVarInt(),
DamageType.STREAM_CODEC.decode(input),
readOptionalEntityId(input),
readOptionalEntityId(input),
input.readOptional(i -> new Vec3(i.readDouble(), i.readDouble(), i.readDouble()))
);
}
private static void writeOptionalEntityId(FriendlyByteBuf output, int id) {
output.writeVarInt(id + 1);
}
private static int readOptionalEntityId(FriendlyByteBuf input) {
return input.readVarInt() - 1;
}
private void write(RegistryFriendlyByteBuf output) {
output.writeVarInt(this.entityId);
DamageType.STREAM_CODEC.encode(output, this.sourceType);
writeOptionalEntityId(output, this.sourceCauseId);
writeOptionalEntityId(output, this.sourceDirectId);
output.writeOptional(this.sourcePosition, (o, pos) -> {
o.writeDouble(pos.x());
o.writeDouble(pos.y());
o.writeDouble(pos.z());
});
}
@Override
public PacketType<ClientboundDamageEventPacket> type() {
return GamePacketTypes.CLIENTBOUND_DAMAGE_EVENT;
}
public void handle(ClientGamePacketListener listener) {
listener.handleDamageEvent(this);
}
public DamageSource getSource(Level level) {
if (this.sourcePosition.isPresent()) {
return new DamageSource(this.sourceType, this.sourcePosition.get());
} else {
Entity cause = level.getEntity(this.sourceCauseId);
Entity direct = level.getEntity(this.sourceDirectId);
return new DamageSource(this.sourceType, direct, cause);
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
实现/方法调用 - 关联成员:
Packet.codec()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/构造调用/返回值 - 关联成员:
DamageSource()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
Vec3()
- 引用位置: