diff --git a/src/main/java/ru/betterend/blocks/BlockUmbrellaTreeMembrane.java b/src/main/java/ru/betterend/blocks/BlockUmbrellaTreeMembrane.java index 1f4a4a98..8b3b5544 100644 --- a/src/main/java/ru/betterend/blocks/BlockUmbrellaTreeMembrane.java +++ b/src/main/java/ru/betterend/blocks/BlockUmbrellaTreeMembrane.java @@ -1,6 +1,7 @@ package ru.betterend.blocks; import java.io.Reader; +import java.util.Collections; import java.util.List; import com.google.common.collect.Lists; @@ -27,6 +28,7 @@ import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.patterns.BlockPatterned; import ru.betterend.patterns.Patterns; +import ru.betterend.registry.EndBlocks; import ru.betterend.util.MHelper; public class BlockUmbrellaTreeMembrane extends AbstractGlassBlock implements IRenderTypeable, BlockPatterned { @@ -57,7 +59,12 @@ public class BlockUmbrellaTreeMembrane extends AbstractGlassBlock implements IRe @Override public List getDroppedStacks(BlockState state, LootContext.Builder builder) { - return Lists.newArrayList(new ItemStack(this)); + if (state.get(COLOR) > 0) { + return Lists.newArrayList(new ItemStack(this)); + } + else { + return MHelper.RANDOM.nextInt(4) == 0 ? Lists.newArrayList(new ItemStack(EndBlocks.UMBRELLA_TREE_SAPLING)) : Collections.emptyList(); + } } @Override diff --git a/src/main/java/ru/betterend/blocks/BlockUmbrellaTreeSapling.java b/src/main/java/ru/betterend/blocks/BlockUmbrellaTreeSapling.java new file mode 100644 index 00000000..485008e1 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockUmbrellaTreeSapling.java @@ -0,0 +1,31 @@ +package ru.betterend.blocks; + +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.WorldView; +import net.minecraft.world.gen.feature.Feature; +import ru.betterend.blocks.basis.BlockFeatureSapling; +import ru.betterend.client.render.ERenderLayer; +import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndFeatures; + +public class BlockUmbrellaTreeSapling extends BlockFeatureSapling { + public BlockUmbrellaTreeSapling() { + super(); + } + + @Override + protected Feature getFeature() { + return EndFeatures.UMBRELLA_TREE.getFeature(); + } + + @Override + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return world.getBlockState(pos.down()).isOf(EndBlocks.JUNGLE_MOSS); + } + + @Override + public ERenderLayer getRenderLayer() { + return ERenderLayer.TRANSLUCENT; + } +} diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 28f3db1f..895820b1 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -72,6 +72,7 @@ import ru.betterend.blocks.BlockUmbrellaMossTall; import ru.betterend.blocks.BlockUmbrellaTreeCluster; import ru.betterend.blocks.BlockUmbrellaTreeClusterEmpty; import ru.betterend.blocks.BlockUmbrellaTreeMembrane; +import ru.betterend.blocks.BlockUmbrellaTreeSapling; import ru.betterend.blocks.BlockVentBubbleColumn; import ru.betterend.blocks.EndPortalBlock; import ru.betterend.blocks.EndStoneSmelter; @@ -181,6 +182,7 @@ public class EndBlocks { public static final Block HELIX_TREE_LEAVES = registerBlock("helix_tree_leaves", new BlockHelixTreeLeaves()); public static final WoodenMaterial HELIX_TREE = new WoodenMaterial("helix_tree", MaterialColor.GRAY, MaterialColor.ORANGE); + public static final Block UMBRELLA_TREE_SAPLING = registerBlock("umbrella_tree_sapling", new BlockUmbrellaTreeSapling()); public static final Block UMBRELLA_TREE_MEMBRANE = registerBlock("umbrella_tree_membrane", new BlockUmbrellaTreeMembrane()); public static final Block UMBRELLA_TREE_CLUSTER = registerBlock("umbrella_tree_cluster", new BlockUmbrellaTreeCluster()); public static final Block UMBRELLA_TREE_CLUSTER_EMPTY = registerBlock("umbrella_tree_cluster_empty", new BlockUmbrellaTreeClusterEmpty()); diff --git a/src/main/java/ru/betterend/world/features/SingleInvertedScatterFeature.java b/src/main/java/ru/betterend/world/features/SingleInvertedScatterFeature.java index b3091c7a..18e7c812 100644 --- a/src/main/java/ru/betterend/world/features/SingleInvertedScatterFeature.java +++ b/src/main/java/ru/betterend/world/features/SingleInvertedScatterFeature.java @@ -21,6 +21,9 @@ public class SingleInvertedScatterFeature extends InvertedScatterFeature { @Override public boolean canGenerate(StructureWorldAccess world, Random random, BlockPos center, BlockPos blockPos, float radius) { + if (!world.isAir(blockPos)) { + return false; + } BlockState state = block.getDefaultState(); if (block instanceof BlockAttached) { state = state.with(Properties.FACING, Direction.DOWN); diff --git a/src/main/java/ru/betterend/world/features/trees/JellyshroomFeature.java b/src/main/java/ru/betterend/world/features/trees/JellyshroomFeature.java index 00dce3bc..df53b4a7 100644 --- a/src/main/java/ru/betterend/world/features/trees/JellyshroomFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/JellyshroomFeature.java @@ -36,7 +36,6 @@ public class JellyshroomFeature extends DefaultFeature { public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) { if (!world.getBlockState(pos.down()).getBlock().isIn(EndTags.END_GROUND)) return false; - BlockState log = EndBlocks.JELLYSHROOM.log.getDefaultState(); BlockState bark = EndBlocks.JELLYSHROOM.bark.getDefaultState(); BlockState membrane = EndBlocks.JELLYSHROOM_CAP_PURPLE.getDefaultState(); diff --git a/src/main/resources/assets/betterend/textures/block/umbrella_tree_sapling.png b/src/main/resources/assets/betterend/textures/block/umbrella_tree_sapling.png new file mode 100644 index 00000000..220d8de0 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/umbrella_tree_sapling.png differ