package net.minecraft.network.protocol.game; import java.util.Optional; import net.minecraft.core.Holder; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.PacketType; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.phys.Vec3; public record ClientboundExplodePacket(Vec3 center, Optional playerKnockback, ParticleOptions explosionParticle, Holder explosionSound) implements Packet { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( Vec3.STREAM_CODEC, ClientboundExplodePacket::center, Vec3.STREAM_CODEC.apply(ByteBufCodecs::optional), ClientboundExplodePacket::playerKnockback, ParticleTypes.STREAM_CODEC, ClientboundExplodePacket::explosionParticle, SoundEvent.STREAM_CODEC, ClientboundExplodePacket::explosionSound, ClientboundExplodePacket::new ); @Override public PacketType type() { return GamePacketTypes.CLIENTBOUND_EXPLODE; } /** * Passes this Packet on to the NetHandler for processing. */ public void handle(ClientGamePacketListener handler) { handler.handleExplosion(this); } }