Package net.minecraft.world.gen.foliage
Class FoliagePlacer
java.lang.Object
net.minecraft.world.gen.foliage.FoliagePlacer
- Direct Known Subclasses:
AcaciaFoliagePlacer
,BlobFoliagePlacer
,DarkOakFoliagePlacer
,JungleFoliagePlacer
,MegaPineFoliagePlacer
,PineFoliagePlacer
,SpruceFoliagePlacer
public abstract class FoliagePlacer extends Object
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FoliagePlacer.TreeNode
A point on a tree to generate foliage around -
Field Summary
Fields Modifier and Type Field Description protected UniformIntDistribution
offset
protected UniformIntDistribution
radius
static com.mojang.serialization.Codec<FoliagePlacer>
TYPE_CODEC
-
Constructor Summary
Constructors Constructor Description FoliagePlacer(UniformIntDistribution radius, UniformIntDistribution offset)
-
Method Summary
Modifier and Type Method Description protected static <P extends FoliagePlacer>
com.mojang.datafixers.Products.P2<com.mojang.serialization.codecs.RecordCodecBuilder.Mu<P>,UniformIntDistribution,UniformIntDistribution>fillFoliagePlacerFields(com.mojang.serialization.codecs.RecordCodecBuilder.Instance<P> instance)
protected abstract void
generate(ModifiableTestableWorld world, Random random, TreeFeatureConfig config, int trunkHeight, FoliagePlacer.TreeNode treeNode, int foliageHeight, int radius, Set<BlockPos> leaves, int offset, BlockBox box)
This is the main method used to generate foliage.void
generate(ModifiableTestableWorld world, Random random, TreeFeatureConfig config, int trunkHeight, FoliagePlacer.TreeNode treeNode, int foliageHeight, int radius, Set<BlockPos> leaves, BlockBox box)
protected void
generateSquare(ModifiableTestableWorld world, Random random, TreeFeatureConfig config, BlockPos pos, int radius, Set<BlockPos> leaves, int y, boolean giantTrunk, BlockBox box)
Generates a square of leaves with the given radius.abstract int
getRandomHeight(Random random, int trunkHeight, TreeFeatureConfig config)
private int
getRandomOffset(Random random)
int
getRandomRadius(Random random, int baseHeight)
protected abstract FoliagePlacerType<?>
getType()
protected abstract boolean
isInvalidForLeaves(Random random, int baseHeight, int dx, int y, int dz, boolean giantTrunk)
Used to exclude certain positions such as corners when creating a square of leaves.protected boolean
isPositionInvalid(Random random, int dx, int y, int dz, int radius, boolean giantTrunk)
Normalizes x and z coords before checking if they are invalid.
-
Field Details
-
TYPE_CODEC
-
radius
-
offset
-
-
Constructor Details
-
FoliagePlacer
-
-
Method Details
-
fillFoliagePlacerFields
protected static <P extends FoliagePlacer> com.mojang.datafixers.Products.P2<com.mojang.serialization.codecs.RecordCodecBuilder.Mu<P>,UniformIntDistribution,UniformIntDistribution> fillFoliagePlacerFields(com.mojang.serialization.codecs.RecordCodecBuilder.Instance<P> instance) -
getType
-
generate
public void generate(ModifiableTestableWorld world, Random random, TreeFeatureConfig config, int trunkHeight, FoliagePlacer.TreeNode treeNode, int foliageHeight, int radius, Set<BlockPos> leaves, BlockBox box) -
generate
protected abstract void generate(ModifiableTestableWorld world, Random random, TreeFeatureConfig config, int trunkHeight, FoliagePlacer.TreeNode treeNode, int foliageHeight, int radius, Set<BlockPos> leaves, int offset, BlockBox box)This is the main method used to generate foliage. -
getRandomHeight
-
getRandomRadius
-
getRandomOffset
-
isInvalidForLeaves
protected abstract boolean isInvalidForLeaves(Random random, int baseHeight, int dx, int y, int dz, boolean giantTrunk)Used to exclude certain positions such as corners when creating a square of leaves. -
isPositionInvalid
protected boolean isPositionInvalid(Random random, int dx, int y, int dz, int radius, boolean giantTrunk)Normalizes x and z coords before checking if they are invalid. -
generateSquare
protected void generateSquare(ModifiableTestableWorld world, Random random, TreeFeatureConfig config, BlockPos pos, int radius, Set<BlockPos> leaves, int y, boolean giantTrunk, BlockBox box)Generates a square of leaves with the given radius. Sub-classes can use the methodisInvalidForLeaves
to exclude certain positions, such as corners.
-