Added apple trees to world gen

This commit is contained in:
Sollace 2020-05-19 19:45:58 +02:00
parent e5e37be119
commit ca70c87b04
4 changed files with 37 additions and 15 deletions

View file

@ -18,7 +18,6 @@ import com.minelittlepony.unicopia.structure.CustomSaplingGenerator;
import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.fabricmc.fabric.api.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tools.FabricToolTags; import net.fabricmc.fabric.api.tools.FabricToolTags;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.block.FallingBlock; import net.minecraft.block.FallingBlock;
import net.minecraft.block.Material; import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor; import net.minecraft.block.MaterialColor;
@ -164,6 +163,7 @@ public interface UBlocks {
.breakByTool(FabricToolTags.SHOVELS) .breakByTool(FabricToolTags.SHOVELS)
.build())); .build()));
Block APPLE_LEAVES = register("apple_leaves", new FruitLeavesBlock(FabricBlockSettings.of(Material.LEAVES) Block APPLE_LEAVES = register("apple_leaves", new FruitLeavesBlock(FabricBlockSettings.of(Material.LEAVES)
.nonOpaque()
.strength(0.2F, 0.2F) .strength(0.2F, 0.2F)
.ticksRandomly() .ticksRandomly()
.sounds(BlockSoundGroup.GRASS) .sounds(BlockSoundGroup.GRASS)
@ -173,14 +173,12 @@ public interface UBlocks {
.fruit(W -> TreeType.OAK.pickRandomStack()) .fruit(W -> TreeType.OAK.pickRandomStack())
.compost(w -> new ItemStack(UItems.ROTTEN_APPLE))); .compost(w -> new ItemStack(UItems.ROTTEN_APPLE)));
SaplingBlock APPLE_SAPLING = register("apple_sapling", new SaplingBlock( SaplingBlock APPLE_SAPLING = register("apple_sapling", new SaplingBlock(CustomSaplingGenerator.APPLE_TREE, FabricBlockSettings.of(Material.WOOD)
new CustomSaplingGenerator(5, Blocks.OAK_LOG.getDefaultState(), APPLE_LEAVES.getDefaultState()), .noCollision()
FabricBlockSettings.of(Material.WOOD) .ticksRandomly()
.noCollision() .breakInstantly()
.ticksRandomly() .sounds(BlockSoundGroup.GRASS)
.breakInstantly() .build()) {});
.sounds(BlockSoundGroup.GRASS)
.build()) {});
static <T extends Block> T register(String name, T block) { static <T extends Block> T register(String name, T block) {

View file

@ -46,7 +46,7 @@ public interface URenderers {
BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(),
UBlocks.ENCHANTED_TORCH, UBlocks.ENCHANTED_WALL_TORCH, UBlocks.ENCHANTED_TORCH, UBlocks.ENCHANTED_WALL_TORCH,
UBlocks.BAKERY_DOOR, UBlocks.LIBRARY_DOOR, UBlocks.MISTED_GLASS_DOOR, UBlocks.DIAMOND_DOOR, UBlocks.BAKERY_DOOR, UBlocks.LIBRARY_DOOR, UBlocks.MISTED_GLASS_DOOR, UBlocks.DIAMOND_DOOR,
UBlocks.APPLE_SAPLING, UBlocks.APPLE_SAPLING, UBlocks.ALFALFA_CROPS,
UBlocks.TOMATO_PLANT, UBlocks.CLOUDSDALE_TOMATO_PLANT UBlocks.TOMATO_PLANT, UBlocks.CLOUDSDALE_TOMATO_PLANT
); );
BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getTranslucent(), BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getTranslucent(),

View file

@ -4,8 +4,10 @@ import java.util.Random;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.minelittlepony.unicopia.block.UBlocks;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.sapling.SaplingGenerator; import net.minecraft.block.sapling.SaplingGenerator;
import net.minecraft.world.gen.decorator.BeehiveTreeDecorator; import net.minecraft.world.gen.decorator.BeehiveTreeDecorator;
import net.minecraft.world.gen.feature.BranchedTreeFeatureConfig; import net.minecraft.world.gen.feature.BranchedTreeFeatureConfig;
@ -15,11 +17,12 @@ import net.minecraft.world.gen.foliage.BlobFoliagePlacer;
import net.minecraft.world.gen.stateprovider.SimpleStateProvider; import net.minecraft.world.gen.stateprovider.SimpleStateProvider;
public class CustomSaplingGenerator extends SaplingGenerator { public class CustomSaplingGenerator extends SaplingGenerator {
public static final CustomSaplingGenerator APPLE_TREE = new CustomSaplingGenerator(5, Blocks.OAK_LOG.getDefaultState(), UBlocks.APPLE_LEAVES.getDefaultState());
private final BranchedTreeFeatureConfig fancyConfig; public final BranchedTreeFeatureConfig fancyConfig;
private final BranchedTreeFeatureConfig fancyHiveConfig; public final BranchedTreeFeatureConfig fancyHiveConfig;
private final BranchedTreeFeatureConfig hiveConfig; public final BranchedTreeFeatureConfig hiveConfig;
private final BranchedTreeFeatureConfig config; public final BranchedTreeFeatureConfig config;
public CustomSaplingGenerator(int height, BlockState log, BlockState leaves) { public CustomSaplingGenerator(int height, BlockState log, BlockState leaves) {
fancyConfig = new BranchedTreeFeatureConfig.Builder( fancyConfig = new BranchedTreeFeatureConfig.Builder(

View file

@ -1,11 +1,18 @@
package com.minelittlepony.unicopia.structure; package com.minelittlepony.unicopia.structure;
import com.google.common.collect.ImmutableList;
import net.minecraft.structure.StructurePieceType; import net.minecraft.structure.StructurePieceType;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.GenerationStep;
import net.minecraft.world.gen.decorator.CountExtraChanceDecoratorConfig;
import net.minecraft.world.gen.decorator.Decorator;
import net.minecraft.world.gen.feature.DefaultFeatureConfig; import net.minecraft.world.gen.feature.DefaultFeatureConfig;
import net.minecraft.world.gen.feature.Feature; import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.FeatureConfig; import net.minecraft.world.gen.feature.FeatureConfig;
import net.minecraft.world.gen.feature.RandomFeatureConfig;
import net.minecraft.world.gen.feature.StructureFeature; import net.minecraft.world.gen.feature.StructureFeature;
public interface UStructures { public interface UStructures {
@ -23,5 +30,19 @@ public interface UStructures {
return Registry.register(Registry.FEATURE, new Identifier("unicopia", id), feature); return Registry.register(Registry.FEATURE, new Identifier("unicopia", id), feature);
} }
static void bootstrap() { } static void bootstrap() {
Registry.BIOME.forEach(biome -> {
Biome.Category category = biome.getCategory();
if (category == Biome.Category.FOREST) {
biome.addFeature(GenerationStep.Feature.VEGETAL_DECORATION,
Feature.RANDOM_SELECTOR.configure(new RandomFeatureConfig(ImmutableList.of(
Feature.NORMAL_TREE.configure(CustomSaplingGenerator.APPLE_TREE.hiveConfig).withChance(0.02F),
Feature.FANCY_TREE.configure(CustomSaplingGenerator.APPLE_TREE.fancyConfig).withChance(0.01F)),
Feature.NORMAL_TREE.configure(CustomSaplingGenerator.APPLE_TREE.config)
))
.createDecoratedFeature(Decorator.COUNT_EXTRA_HEIGHTMAP.configure(new CountExtraChanceDecoratorConfig(10, 0.1F, 1))));
}
});
}
} }