149 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.network.protocol.game;
 | |
| 
 | |
| import net.minecraft.core.particles.ParticleOptions;
 | |
| import net.minecraft.core.particles.ParticleTypes;
 | |
| import net.minecraft.network.RegistryFriendlyByteBuf;
 | |
| import net.minecraft.network.codec.StreamCodec;
 | |
| import net.minecraft.network.protocol.Packet;
 | |
| import net.minecraft.network.protocol.PacketType;
 | |
| 
 | |
| public class ClientboundLevelParticlesPacket implements Packet<ClientGamePacketListener> {
 | |
| 	public static final StreamCodec<RegistryFriendlyByteBuf, ClientboundLevelParticlesPacket> STREAM_CODEC = Packet.codec(
 | |
| 		ClientboundLevelParticlesPacket::write, ClientboundLevelParticlesPacket::new
 | |
| 	);
 | |
| 	private final double x;
 | |
| 	private final double y;
 | |
| 	private final double z;
 | |
| 	private final float xDist;
 | |
| 	private final float yDist;
 | |
| 	private final float zDist;
 | |
| 	private final float maxSpeed;
 | |
| 	private final int count;
 | |
| 	private final boolean overrideLimiter;
 | |
| 	private final boolean alwaysShow;
 | |
| 	private final ParticleOptions particle;
 | |
| 
 | |
| 	public <T extends ParticleOptions> ClientboundLevelParticlesPacket(
 | |
| 		T particle, boolean overrideLimiter, boolean alwaysShow, double x, double y, double z, float xDist, float yDist, float zDist, float maxSpeed, int count
 | |
| 	) {
 | |
| 		this.particle = particle;
 | |
| 		this.overrideLimiter = overrideLimiter;
 | |
| 		this.alwaysShow = alwaysShow;
 | |
| 		this.x = x;
 | |
| 		this.y = y;
 | |
| 		this.z = z;
 | |
| 		this.xDist = xDist;
 | |
| 		this.yDist = yDist;
 | |
| 		this.zDist = zDist;
 | |
| 		this.maxSpeed = maxSpeed;
 | |
| 		this.count = count;
 | |
| 	}
 | |
| 
 | |
| 	private ClientboundLevelParticlesPacket(RegistryFriendlyByteBuf buffer) {
 | |
| 		this.overrideLimiter = buffer.readBoolean();
 | |
| 		this.alwaysShow = buffer.readBoolean();
 | |
| 		this.x = buffer.readDouble();
 | |
| 		this.y = buffer.readDouble();
 | |
| 		this.z = buffer.readDouble();
 | |
| 		this.xDist = buffer.readFloat();
 | |
| 		this.yDist = buffer.readFloat();
 | |
| 		this.zDist = buffer.readFloat();
 | |
| 		this.maxSpeed = buffer.readFloat();
 | |
| 		this.count = buffer.readInt();
 | |
| 		this.particle = ParticleTypes.STREAM_CODEC.decode(buffer);
 | |
| 	}
 | |
| 
 | |
| 	private void write(RegistryFriendlyByteBuf buffer) {
 | |
| 		buffer.writeBoolean(this.overrideLimiter);
 | |
| 		buffer.writeBoolean(this.alwaysShow);
 | |
| 		buffer.writeDouble(this.x);
 | |
| 		buffer.writeDouble(this.y);
 | |
| 		buffer.writeDouble(this.z);
 | |
| 		buffer.writeFloat(this.xDist);
 | |
| 		buffer.writeFloat(this.yDist);
 | |
| 		buffer.writeFloat(this.zDist);
 | |
| 		buffer.writeFloat(this.maxSpeed);
 | |
| 		buffer.writeInt(this.count);
 | |
| 		ParticleTypes.STREAM_CODEC.encode(buffer, this.particle);
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public PacketType<ClientboundLevelParticlesPacket> type() {
 | |
| 		return GamePacketTypes.CLIENTBOUND_LEVEL_PARTICLES;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Passes this Packet on to the NetHandler for processing.
 | |
| 	 */
 | |
| 	public void handle(ClientGamePacketListener handler) {
 | |
| 		handler.handleParticleEvent(this);
 | |
| 	}
 | |
| 
 | |
| 	public boolean isOverrideLimiter() {
 | |
| 		return this.overrideLimiter;
 | |
| 	}
 | |
| 
 | |
| 	public boolean alwaysShow() {
 | |
| 		return this.alwaysShow;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the x coordinate to spawn the particle.
 | |
| 	 */
 | |
| 	public double getX() {
 | |
| 		return this.x;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the y coordinate to spawn the particle.
 | |
| 	 */
 | |
| 	public double getY() {
 | |
| 		return this.y;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the z coordinate to spawn the particle.
 | |
| 	 */
 | |
| 	public double getZ() {
 | |
| 		return this.z;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the x coordinate offset for the particle. The particle may use the offset for particle spread.
 | |
| 	 */
 | |
| 	public float getXDist() {
 | |
| 		return this.xDist;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the y coordinate offset for the particle. The particle may use the offset for particle spread.
 | |
| 	 */
 | |
| 	public float getYDist() {
 | |
| 		return this.yDist;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the z coordinate offset for the particle. The particle may use the offset for particle spread.
 | |
| 	 */
 | |
| 	public float getZDist() {
 | |
| 		return this.zDist;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the speed of the particle animation (used in client side rendering).
 | |
| 	 */
 | |
| 	public float getMaxSpeed() {
 | |
| 		return this.maxSpeed;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the amount of particles to spawn
 | |
| 	 */
 | |
| 	public int getCount() {
 | |
| 		return this.count;
 | |
| 	}
 | |
| 
 | |
| 	public ParticleOptions getParticle() {
 | |
| 		return this.particle;
 | |
| 	}
 | |
| }
 |