- 205
- 12
- 103
Всем привет. Хочу в биоме заменить генерацию камня на блок, созданный мной. Смотрю в билдер окружения, вижу там следующие опции:
Сперва думал что underWaterMaterial как раз определяет блок, который будет генерироваться под землей, но это не подтвердилось. Я вообще не нахожу указанный мною блок в сгенерированном биоме, на его месте появляется обычный камень. Потому напрашивается вопрос: каким образом можно заменить камень на свой блок?
Биом:
Тип мира для упрощения теста:
UPD: Немного почитав разных форумов узнал, что, мол, лучше сгенерить отдельный мир, если планируются настолько фундаментальные изменения. Что думаете?
UPD^2: Нашел в GenerationSettings переменную:
Что-то мне подсказывает что без АСМ тут не обойтись.
Java:
public SurfaceBuilderConfig(BlockState topMaterial, BlockState underMaterial, BlockState underWaterMaterial) {
this.topMaterial = topMaterial;
this.underMaterial = underMaterial;
this.underWaterMaterial = underWaterMaterial;
}
Биом:
Java:
public class TerraForestBiome extends Biome {
public TerraForestBiome(Builder biomeBuilder) {
super((new Biome.Builder()
.surfaceBuilder(new ConfiguredSurfaceBuilder<SurfaceBuilderConfig>(SurfaceBuilder.DEFAULT, new SurfaceBuilderConfig(
AmbientBlocks.Blocks.grass.getDefaultState(),
AmbientBlocks.Blocks.dirt.getDefaultState(),
AmbientBlocks.Blocks.stone.getDefaultState())))
.precipitation(RainType.RAIN)
.category(Category.PLAINS)
.downfall(0.25F)
.depth(0.1F)
.scale(0.1F)
.temperature(0.8F)
.waterColor(4159204)
.waterFogColor(329011)
.parent(null)));
this.addCarver(GenerationStage.Carving.AIR, Biome.createCarver(WorldCarver.CAVE, new ProbabilityConfig(0.2F)));
this.addCarver(GenerationStage.Carving.AIR, Biome.createCarver(WorldCarver.CANYON, new ProbabilityConfig(0.02F)));
}
}
Тип мира для упрощения теста:
Java:
public class TerraWorldType extends WorldType {
public TerraWorldType(String name) {
super(name);
}
@Override
public ChunkGenerator<?> createChunkGenerator(World world) {
OverworldGenSettings settings = new OverworldGenSettings();
SingleBiomeProviderSettings single = new SingleBiomeProviderSettings(world.getWorldInfo());
single.setBiome(ModBiomes.Biomes.forest);
return new OverworldChunkGenerator(world, new SingleBiomeProvider(single), settings);
}
}
UPD: Немного почитав разных форумов узнал, что, мол, лучше сгенерить отдельный мир, если планируются настолько фундаментальные изменения. Что думаете?
UPD^2: Нашел в GenerationSettings переменную:
Java:
protected BlockState defaultBlock = Blocks.STONE.getDefaultState();
Последнее редактирование: