public abstract class FoliagePlacer extends Object
Modifier and Type | Class and Description |
---|---|
static class |
FoliagePlacer.TreeNode
A point on a tree to generate foliage around
|
Modifier and Type | Field and Description |
---|---|
protected UniformIntDistribution |
offset |
protected UniformIntDistribution |
radius |
static com.mojang.serialization.Codec<FoliagePlacer> |
TYPE_CODEC |
Constructor and Description |
---|
FoliagePlacer(UniformIntDistribution radius,
UniformIntDistribution offset) |
Modifier and Type | Method and Description |
---|---|
protected static <P extends FoliagePlacer> |
fillFoliagePlacerFields(com.mojang.serialization.codecs.RecordCodecBuilder.Instance<P> instance) |
void |
generate(ModifiableTestableWorld world,
Random random,
TreeFeatureConfig config,
int trunkHeight,
FoliagePlacer.TreeNode treeNode,
int foliageHeight,
int radius,
Set<BlockPos> leaves,
BlockBox box) |
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.
|
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.
|
public static final com.mojang.serialization.Codec<FoliagePlacer> TYPE_CODEC
protected final UniformIntDistribution radius
protected final UniformIntDistribution offset
public FoliagePlacer(UniformIntDistribution radius, UniformIntDistribution offset)
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 FoliagePlacerType<?> getType()
public void generate(ModifiableTestableWorld world, Random random, TreeFeatureConfig config, int trunkHeight, FoliagePlacer.TreeNode treeNode, int foliageHeight, int radius, Set<BlockPos> leaves, BlockBox box)
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)
public abstract int getRandomHeight(Random random, int trunkHeight, TreeFeatureConfig config)
public int getRandomRadius(Random random, int baseHeight)
private int getRandomOffset(Random random)
protected abstract boolean isInvalidForLeaves(Random random, int baseHeight, int dx, int y, int dz, boolean giantTrunk)
protected boolean isPositionInvalid(Random random, int dx, int y, int dz, int radius, boolean giantTrunk)
protected void generateSquare(ModifiableTestableWorld world, Random random, TreeFeatureConfig config, BlockPos pos, int radius, Set<BlockPos> leaves, int y, boolean giantTrunk, BlockBox box)
isInvalidForLeaves
to exclude certain positions, such as corners.