55 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.world.level.levelgen;
 | |
| 
 | |
| import com.mojang.serialization.Codec;
 | |
| import com.mojang.serialization.codecs.RecordCodecBuilder;
 | |
| import java.util.List;
 | |
| import net.minecraft.core.registries.Registries;
 | |
| import net.minecraft.tags.TagKey;
 | |
| import net.minecraft.util.ExtraCodecs;
 | |
| import net.minecraft.world.level.block.Block;
 | |
| import net.minecraft.world.level.block.state.BlockState;
 | |
| import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider;
 | |
| 
 | |
| public class GeodeBlockSettings {
 | |
| 	public final BlockStateProvider fillingProvider;
 | |
| 	public final BlockStateProvider innerLayerProvider;
 | |
| 	public final BlockStateProvider alternateInnerLayerProvider;
 | |
| 	public final BlockStateProvider middleLayerProvider;
 | |
| 	public final BlockStateProvider outerLayerProvider;
 | |
| 	public final List<BlockState> innerPlacements;
 | |
| 	public final TagKey<Block> cannotReplace;
 | |
| 	public final TagKey<Block> invalidBlocks;
 | |
| 	public static final Codec<GeodeBlockSettings> CODEC = RecordCodecBuilder.create(
 | |
| 		instance -> instance.group(
 | |
| 				BlockStateProvider.CODEC.fieldOf("filling_provider").forGetter(geodeBlockSettings -> geodeBlockSettings.fillingProvider),
 | |
| 				BlockStateProvider.CODEC.fieldOf("inner_layer_provider").forGetter(geodeBlockSettings -> geodeBlockSettings.innerLayerProvider),
 | |
| 				BlockStateProvider.CODEC.fieldOf("alternate_inner_layer_provider").forGetter(geodeBlockSettings -> geodeBlockSettings.alternateInnerLayerProvider),
 | |
| 				BlockStateProvider.CODEC.fieldOf("middle_layer_provider").forGetter(geodeBlockSettings -> geodeBlockSettings.middleLayerProvider),
 | |
| 				BlockStateProvider.CODEC.fieldOf("outer_layer_provider").forGetter(geodeBlockSettings -> geodeBlockSettings.outerLayerProvider),
 | |
| 				ExtraCodecs.nonEmptyList(BlockState.CODEC.listOf()).fieldOf("inner_placements").forGetter(geodeBlockSettings -> geodeBlockSettings.innerPlacements),
 | |
| 				TagKey.hashedCodec(Registries.BLOCK).fieldOf("cannot_replace").forGetter(geodeBlockSettings -> geodeBlockSettings.cannotReplace),
 | |
| 				TagKey.hashedCodec(Registries.BLOCK).fieldOf("invalid_blocks").forGetter(geodeBlockSettings -> geodeBlockSettings.invalidBlocks)
 | |
| 			)
 | |
| 			.apply(instance, GeodeBlockSettings::new)
 | |
| 	);
 | |
| 
 | |
| 	public GeodeBlockSettings(
 | |
| 		BlockStateProvider fillingProvider,
 | |
| 		BlockStateProvider innerLayerProvider,
 | |
| 		BlockStateProvider alternateInnerLayerProvider,
 | |
| 		BlockStateProvider middleLayerProvider,
 | |
| 		BlockStateProvider outerLayerProvider,
 | |
| 		List<BlockState> innerPlacements,
 | |
| 		TagKey<Block> cannotReplace,
 | |
| 		TagKey<Block> invalidBlocks
 | |
| 	) {
 | |
| 		this.fillingProvider = fillingProvider;
 | |
| 		this.innerLayerProvider = innerLayerProvider;
 | |
| 		this.alternateInnerLayerProvider = alternateInnerLayerProvider;
 | |
| 		this.middleLayerProvider = middleLayerProvider;
 | |
| 		this.outerLayerProvider = outerLayerProvider;
 | |
| 		this.innerPlacements = innerPlacements;
 | |
| 		this.cannotReplace = cannotReplace;
 | |
| 		this.invalidBlocks = invalidBlocks;
 | |
| 	}
 | |
| }
 |