44 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.core.particles;
 | |
| 
 | |
| import com.mojang.serialization.Codec;
 | |
| import com.mojang.serialization.MapCodec;
 | |
| import net.minecraft.core.registries.BuiltInRegistries;
 | |
| import net.minecraft.network.RegistryFriendlyByteBuf;
 | |
| import net.minecraft.network.codec.ByteBufCodecs;
 | |
| import net.minecraft.network.codec.StreamCodec;
 | |
| import net.minecraft.world.level.block.Block;
 | |
| import net.minecraft.world.level.block.state.BlockState;
 | |
| 
 | |
| public class BlockParticleOption implements ParticleOptions {
 | |
| 	private static final Codec<BlockState> BLOCK_STATE_CODEC = Codec.withAlternative(
 | |
| 		BlockState.CODEC, BuiltInRegistries.BLOCK.byNameCodec(), Block::defaultBlockState
 | |
| 	);
 | |
| 	private final ParticleType<BlockParticleOption> type;
 | |
| 	private final BlockState state;
 | |
| 
 | |
| 	public static MapCodec<BlockParticleOption> codec(ParticleType<BlockParticleOption> particleType) {
 | |
| 		return BLOCK_STATE_CODEC.<BlockParticleOption>xmap(
 | |
| 				blockState -> new BlockParticleOption(particleType, blockState), blockParticleOption -> blockParticleOption.state
 | |
| 			)
 | |
| 			.fieldOf("block_state");
 | |
| 	}
 | |
| 
 | |
| 	public static StreamCodec<? super RegistryFriendlyByteBuf, BlockParticleOption> streamCodec(ParticleType<BlockParticleOption> particleType) {
 | |
| 		return ByteBufCodecs.idMapper(Block.BLOCK_STATE_REGISTRY)
 | |
| 			.map(blockState -> new BlockParticleOption(particleType, blockState), blockParticleOption -> blockParticleOption.state);
 | |
| 	}
 | |
| 
 | |
| 	public BlockParticleOption(ParticleType<BlockParticleOption> type, BlockState state) {
 | |
| 		this.type = type;
 | |
| 		this.state = state;
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public ParticleType<BlockParticleOption> getType() {
 | |
| 		return this.type;
 | |
| 	}
 | |
| 
 | |
| 	public BlockState getState() {
 | |
| 		return this.state;
 | |
| 	}
 | |
| }
 |