TFirst
09/02/2026, 1:37 AMWorldGenBigTree shared by every biome in the JVM. generate keeps its state in instance fields. if we freeze giant oak tree generation on the async thread, and then populate a chunk chunk with the main thread while stopping a big tree from generating, a failed validTreeLocation call overwrites world and basePos. when generateLeadNodeBases runs on the async thread, it re-reads basePos, but foliageCoords is old position. when the async tree generates, limb creates a giant branch from the new position to the old one (confirmed). because it also sets world, it should be able to place blocks cross world and could potentially carry the async line across worlds (unconfirmed). credit @Matthew BolanTFirst
09/02/2026, 1:40 AMTFirst
09/02/2026, 1:43 AMBiomeDecorator is shared between biomes of the same type. During population, it places ores trees flowers etc. To decide on placement, it reads chunkPos at the start of each placement, and then on every placement after. If the main thread starts decorating a chunk while the async chunk is already underway, it should to overwrite chunkPos and cause the async thread to place items in the main thread's chunk.CactusCreative
09/02/2026, 1:47 AMTFirst
09/02/2026, 1:47 AMTFirst
09/02/2026, 1:47 AMTFirst
09/02/2026, 1:56 AMGlaeos
09/02/2026, 4:10 AMCactusCreative
09/02/2026, 4:11 AMCactusCreative
09/02/2026, 2:53 PMMatthew Bolan
09/02/2026, 2:54 PMCactusCreative
09/02/2026, 2:54 PMMatthew Bolan
09/02/2026, 2:54 PMGlaeos
09/02/2026, 2:54 PMMatthew Bolan
09/02/2026, 2:54 PMCactusCreative
09/02/2026, 2:54 PMCactusCreative
09/02/2026, 2:55 PMGlaeos
09/02/2026, 2:55 PMGlaeos
09/02/2026, 2:55 PMCactusCreative
09/02/2026, 2:55 PMCactusCreative
09/02/2026, 2:55 PMCactusCreative
09/02/2026, 2:56 PMCactusCreative
09/02/2026, 2:56 PMGlaeos
09/02/2026, 2:56 PMGlaeos
09/02/2026, 2:56 PMGlaeos
09/02/2026, 2:57 PMMatthew Bolan
09/02/2026, 2:57 PMCactusCreative
09/02/2026, 2:59 PMMatthew Bolan
09/02/2026, 2:59 PMGlaeos
09/02/2026, 3:00 PMCactusCreative
09/02/2026, 3:00 PMMatthew Bolan
09/02/2026, 3:00 PMMatthew Bolan
09/02/2026, 3:00 PMMatthew Bolan
09/02/2026, 3:01 PMCactusCreative
09/02/2026, 3:02 PMMarpace
09/02/2026, 3:02 PMMatthew Bolan
09/02/2026, 3:02 PMCactusCreative
09/02/2026, 3:03 PMCactusCreative
09/02/2026, 3:03 PMMatthew Bolan
09/02/2026, 3:03 PMCactusCreative
09/02/2026, 3:03 PMMatthew Bolan
09/02/2026, 3:03 PMCactusCreative
09/02/2026, 3:04 PMMatthew Bolan
09/02/2026, 3:04 PMMatthew Bolan
09/02/2026, 3:04 PMCactusCreative
09/02/2026, 3:04 PMMatthew Bolan
09/02/2026, 3:04 PMCactusCreative
09/02/2026, 3:04 PMMatthew Bolan
09/02/2026, 3:04 PMMatthew Bolan
09/02/2026, 3:05 PMCactusCreative
09/02/2026, 3:05 PMMatthew Bolan
09/02/2026, 3:05 PMjava
void generateLeafNodeBases()
{
for (WorldGenBigTree.FoliageCoordinates worldgenbigtree$foliagecoordinates : this.foliageCoords)
{
int i = worldgenbigtree$foliagecoordinates.getBranchBase();
BlockPos blockpos = new BlockPos(this.basePos.getX(), i, this.basePos.getZ());
if (!blockpos.equals(worldgenbigtree$foliagecoordinates) && this.leafNodeNeedsBase(i - this.basePos.getY()))
{
this.limb(blockpos, worldgenbigtree$foliagecoordinates, Blocks.LOG);
}
}
}Matthew Bolan
09/02/2026, 3:06 PMMatthew Bolan
09/02/2026, 3:06 PMGlaeos
09/02/2026, 3:06 PMGlaeos
09/02/2026, 3:07 PMGlaeos
09/02/2026, 3:07 PMMatthew Bolan
09/02/2026, 3:07 PMGlaeos
09/02/2026, 3:07 PMMatthew Bolan
09/02/2026, 3:08 PMMatthew Bolan
09/02/2026, 3:08 PMMatthew Bolan
09/02/2026, 3:08 PMMatthew Bolan
09/02/2026, 3:08 PMGlaeos
09/02/2026, 3:08 PMthis.basePos you can assume it will be the new one if the async thread has lagged for a whileMatthew Bolan
09/02/2026, 3:08 PMGlaeos
09/02/2026, 3:08 PMMatthew Bolan
09/02/2026, 3:08 PMCactusCreative
09/02/2026, 3:09 PMGlaeos
09/02/2026, 3:09 PMGlaeos
09/02/2026, 3:09 PMMatthew Bolan
09/02/2026, 3:09 PMCactusCreative
09/02/2026, 3:10 PMMatthew Bolan
09/02/2026, 3:10 PMMatthew Bolan
09/02/2026, 3:10 PMGlaeos
09/02/2026, 3:10 PMGlaeos
09/02/2026, 3:10 PMGlaeos
09/02/2026, 3:11 PMMatthew Bolan
09/02/2026, 3:11 PMCactusCreative
09/02/2026, 3:12 PMMatthew Bolan
09/02/2026, 3:12 PMCactusCreative
09/02/2026, 3:13 PMMatthew Bolan
09/02/2026, 3:13 PMMatthew Bolan
09/02/2026, 3:13 PMCactusCreative
09/02/2026, 3:13 PMMatthew Bolan
09/02/2026, 3:13 PMCactusCreative
09/02/2026, 3:13 PMCactusCreative
09/02/2026, 3:13 PMGlaeos
09/02/2026, 3:14 PMCactusCreative
09/02/2026, 3:14 PMCactusCreative
09/02/2026, 3:14 PMMatthew Bolan
09/02/2026, 3:14 PMMatthew Bolan
09/02/2026, 3:14 PMMatthew Bolan
09/02/2026, 3:14 PMMatthew Bolan
09/02/2026, 3:14 PMGlaeos
09/02/2026, 3:15 PMCactusCreative
09/02/2026, 3:15 PMGlaeos
09/02/2026, 3:15 PMMatthew Bolan
09/02/2026, 3:17 PMprotected BlockPos chunkPos;, but there's just one BiomeDecorator per biome I thinkGlaeos
09/02/2026, 3:17 PMMatthew Bolan
09/02/2026, 3:18 PMGlaeos
09/02/2026, 3:18 PMMatthew Bolan
09/02/2026, 3:18 PMGlaeos
09/02/2026, 3:18 PMGlaeos
09/02/2026, 3:18 PMMatthew Bolan
09/02/2026, 3:18 PMCactusCreative
09/02/2026, 3:19 PMMatthew Bolan
09/02/2026, 3:19 PMGlaeos
09/02/2026, 3:19 PMMatthew Bolan
09/02/2026, 3:19 PMGlaeos
09/02/2026, 3:19 PMGlaeos
09/02/2026, 3:20 PMMatthew Bolan
09/02/2026, 3:20 PMCactusCreative
09/02/2026, 3:20 PMCactusCreative
09/02/2026, 3:20 PMMatthew Bolan
09/02/2026, 3:22 PMMatthew Bolan
09/02/2026, 3:23 PMMatthew Bolan
09/02/2026, 3:23 PMjava
package net.minecraft.world.biome;
import net.minecraft.entity.monster.EntityEnderman;
import net.minecraft.init.Blocks;
public class BiomeEnd extends Biome
{
public BiomeEnd(Biome.BiomeProperties properties)
{
super(properties);
this.spawnableMonsterList.clear();
this.spawnableCreatureList.clear();
this.spawnableWaterCreatureList.clear();
this.spawnableCaveCreatureList.clear();
this.spawnableMonsterList.add(new Biome.SpawnListEntry(EntityEnderman.class, 10, 4, 4));
this.topBlock = Blocks.DIRT.getDefaultState();
this.fillerBlock = Blocks.DIRT.getDefaultState();
this.theBiomeDecorator = new BiomeEndDecorator();
}
/**
* takes temperature, returns color
*/
public int getSkyColorByTemp(float currentTemperature)
{
return 0;
}
}CactusCreative
09/02/2026, 3:23 PMMatthew Bolan
09/02/2026, 3:23 PMjava
protected static final WorldGenBigTree BIG_TREE_FEATURE = new WorldGenBigTree(false);
and in Biome Decorator
java
protected int treesPerChunk;
protected float extraTreeChance = 0.1F;Matthew Bolan
09/02/2026, 3:24 PMMatthew Bolan
09/02/2026, 3:24 PMjava
int k1 = this.treesPerChunk;
if (random.nextFloat() < this.extraTreeChance)
{
++k1;
}
for (int j2 = 0; j2 < k1; ++j2)
{
int k6 = random.nextInt(16) + 8;
int l = random.nextInt(16) + 8;
WorldGenAbstractTree worldgenabstracttree = biomeIn.genBigTreeChance(random);
worldgenabstracttree.setDecorationDefaults();
BlockPos blockpos = worldIn.getHeight(this.chunkPos.add(k6, 0, l));
if (worldgenabstracttree.generate(worldIn, random, blockpos))
{
worldgenabstracttree.generateSaplings(worldIn, random, blockpos);
}
}Matthew Bolan
09/02/2026, 3:24 PMjava
public WorldGenAbstractTree genBigTreeChance(Random rand)
{
return (WorldGenAbstractTree)(rand.nextInt(10) == 0 ? BIG_TREE_FEATURE : TREE_FEATURE);
}Matthew Bolan
09/02/2026, 3:25 PMMatthew Bolan
09/02/2026, 3:25 PMMatthew Bolan
09/02/2026, 3:25 PMCactusCreative
09/02/2026, 3:27 PMCactusCreative
09/02/2026, 3:27 PMCactusCreative
09/02/2026, 3:27 PMMatthew Bolan
09/02/2026, 3:28 PMCactusCreative
09/02/2026, 3:28 PMCactusCreative
09/02/2026, 3:28 PMMatthew Bolan
09/02/2026, 3:28 PMMatthew Bolan
09/02/2026, 3:28 PMCactusCreative
09/02/2026, 3:28 PMGlaeos
09/02/2026, 3:30 PMCactusCreative
09/02/2026, 3:30 PMGlaeos
09/02/2026, 3:31 PMGlaeos
09/02/2026, 3:31 PMCactusCreative
09/02/2026, 3:31 PMCactusCreative
09/02/2026, 3:31 PMCactusCreative
09/02/2026, 3:31 PMGlaeos
09/02/2026, 3:32 PMGlaeos
09/02/2026, 3:32 PMCactusCreative
09/02/2026, 3:33 PMGlaeos
09/02/2026, 3:33 PMCactusCreative
09/02/2026, 3:33 PMGlaeos
09/02/2026, 3:33 PMGlaeos
09/02/2026, 3:33 PMGlaeos
09/02/2026, 3:33 PMCactusCreative
09/02/2026, 3:33 PMCactusCreative
09/02/2026, 3:34 PMMatthew Bolan
09/02/2026, 3:34 PMMatthew Bolan
09/02/2026, 3:34 PMMatthew Bolan
09/02/2026, 3:34 PMMatthew Bolan
09/02/2026, 3:34 PMCactusCreative
09/02/2026, 3:34 PMCactusCreative
09/02/2026, 3:35 PMCactusCreative
09/02/2026, 3:35 PMCactusCreative
09/02/2026, 3:36 PMMarpace
09/02/2026, 3:36 PMCactusCreative
09/02/2026, 3:36 PMMarpace
09/02/2026, 3:36 PMCactusCreative
09/02/2026, 3:37 PMMarpace
09/02/2026, 3:37 PMMarpace
09/02/2026, 3:37 PMCactusCreative
09/02/2026, 3:37 PMGlaeos
09/02/2026, 3:37 PMMarpace
09/02/2026, 3:37 PMGlaeos
09/02/2026, 3:37 PMGlaeos
09/02/2026, 3:37 PMCactusCreative
09/02/2026, 3:37 PMCactusCreative
09/02/2026, 3:38 PMGlaeos
09/02/2026, 3:38 PMCactusCreative
09/02/2026, 3:38 PMMatthew Bolan
09/02/2026, 3:39 PMMatthew Bolan
09/02/2026, 3:39 PMMatthew Bolan
09/02/2026, 3:39 PMCactusCreative
09/02/2026, 3:39 PMMatthew Bolan
09/02/2026, 3:40 PMCactusCreative
09/02/2026, 3:40 PMMatthew Bolan
09/02/2026, 3:40 PMCactusCreative
09/02/2026, 3:41 PMMarpace
09/02/2026, 3:41 PMMatthew Bolan
09/02/2026, 3:41 PMMatthew Bolan
09/02/2026, 3:42 PMCactusCreative
09/02/2026, 3:42 PMMarpace
09/02/2026, 3:42 PMMarpace
09/02/2026, 3:42 PMMatthew Bolan
09/02/2026, 3:42 PMMatthew Bolan
09/02/2026, 3:42 PMMarpace
09/02/2026, 3:42 PMMatthew Bolan
09/02/2026, 3:42 PMMatthew Bolan
09/02/2026, 3:42 PMMatthew Bolan
09/02/2026, 3:42 PMMatthew Bolan
09/02/2026, 3:43 PMjava
public class BiomeEndDecorator extends BiomeDecoratorMatthew Bolan
09/02/2026, 3:43 PMjava
protected void genDecorations(Biome biomeIn, World worldIn, Random random)
{
this.generateOres(worldIn, random);
WorldGenSpikes.EndSpike[] aworldgenspikes$endspike = getSpikesForWorld(worldIn);
for (WorldGenSpikes.EndSpike worldgenspikes$endspike : aworldgenspikes$endspike)
{
if (worldgenspikes$endspike.doesStartInChunk(this.chunkPos))
{
this.spikeGen.setSpike(worldgenspikes$endspike);
this.spikeGen.generate(worldIn, random, new BlockPos(worldgenspikes$endspike.getCenterX(), 45, worldgenspikes$endspike.getCenterZ()));
}
}
}Marpace
09/02/2026, 3:43 PMMarpace
09/02/2026, 3:43 PMMarpace
09/02/2026, 3:43 PMCactusCreative
09/02/2026, 3:43 PMMatthew Bolan
09/02/2026, 3:44 PMMatthew Bolan
09/02/2026, 3:44 PMCactusCreative
09/02/2026, 3:44 PMMatthew Bolan
09/02/2026, 3:44 PMCactusCreative
09/02/2026, 3:44 PMCactusCreative
09/02/2026, 3:45 PMMarpace
09/02/2026, 3:45 PMMarpace
09/02/2026, 3:45 PMCactusCreative
09/02/2026, 3:45 PMMatthew Bolan
09/02/2026, 3:46 PMCactusCreative
09/02/2026, 3:46 PMCactusCreative
09/02/2026, 3:46 PMCactusCreative
09/02/2026, 3:46 PMCactusCreative
09/02/2026, 3:47 PMMatthew Bolan
09/02/2026, 3:51 PMMatthew Bolan
09/02/2026, 3:51 PMMatthew Bolan
09/02/2026, 3:51 PMMatthew Bolan
09/02/2026, 3:52 PMCactusCreative
09/02/2026, 3:52 PMMatthew Bolan
09/02/2026, 3:52 PMCactusCreative
09/02/2026, 3:52 PMGlaeos
09/02/2026, 3:59 PMCactusCreative
09/02/2026, 4:00 PMMatthew Bolan
09/02/2026, 4:00 PMCactusCreative
09/02/2026, 4:00 PMMatthew Bolan
09/02/2026, 4:00 PMCactusCreative
09/02/2026, 4:00 PMCactusCreative
09/02/2026, 4:01 PMMatthew Bolan
09/02/2026, 4:02 PMMatthew Bolan
09/02/2026, 4:02 PMCactusCreative
09/02/2026, 4:03 PMCactusCreative
09/02/2026, 4:03 PMCactusCreative
09/02/2026, 4:03 PMMatthew Bolan
09/02/2026, 4:03 PMMatthew Bolan
09/02/2026, 4:03 PMCactusCreative
09/02/2026, 4:04 PMGlaeos
09/02/2026, 4:04 PMMatthew Bolan
09/02/2026, 4:04 PMGlaeos
09/02/2026, 4:04 PMCactusCreative
09/02/2026, 4:04 PMMatthew Bolan
09/02/2026, 4:04 PMCactusCreative
09/02/2026, 4:04 PMMatthew Bolan
09/02/2026, 4:04 PMCactusCreative
09/02/2026, 4:05 PMMatthew Bolan
09/02/2026, 4:05 PMMatthew Bolan
09/02/2026, 4:05 PMCactusCreative
09/02/2026, 4:06 PMMatthew Bolan
09/02/2026, 4:06 PMCactusCreative
09/02/2026, 4:06 PMCactusCreative
09/02/2026, 4:06 PMMatthew Bolan
09/02/2026, 4:06 PMCactusCreative
09/02/2026, 4:06 PMMatthew Bolan
09/02/2026, 4:07 PMCactusCreative
09/02/2026, 4:07 PMMatthew Bolan
09/02/2026, 4:07 PMCactusCreative
09/02/2026, 4:07 PMMatthew Bolan
09/02/2026, 4:09 PMCactusCreative
09/02/2026, 4:09 PMMatthew Bolan
09/02/2026, 4:09 PMMatthew Bolan
09/02/2026, 4:09 PMMatthew Bolan
09/02/2026, 4:10 PMCactusCreative
09/02/2026, 4:10 PMMatthew Bolan
09/02/2026, 4:10 PMCactusCreative
09/02/2026, 4:10 PMCactusCreative
09/02/2026, 4:10 PMMatthew Bolan
09/02/2026, 4:10 PMCactusCreative
09/02/2026, 4:10 PMMatthew Bolan
09/02/2026, 4:10 PMMatthew Bolan
09/02/2026, 4:10 PMCactusCreative
09/02/2026, 4:11 PMCactusCreative
09/02/2026, 4:11 PMMatthew Bolan
09/02/2026, 4:11 PMMatthew Bolan
09/02/2026, 4:11 PMCactusCreative
09/02/2026, 4:12 PMCactusCreative
09/02/2026, 4:12 PMMatthew Bolan
09/02/2026, 4:12 PMCactusCreative
09/02/2026, 4:12 PMCactusCreative
09/02/2026, 4:12 PMMatthew Bolan
09/02/2026, 4:12 PMMatthew Bolan
09/02/2026, 4:12 PMMatthew Bolan
09/02/2026, 4:13 PMMatthew Bolan
09/02/2026, 4:13 PMMatthew Bolan
09/02/2026, 4:13 PMCactusCreative
09/02/2026, 4:13 PMMatthew Bolan
09/02/2026, 4:13 PMCactusCreative
09/02/2026, 4:14 PMMatthew Bolan
09/02/2026, 4:14 PMCactusCreative
09/02/2026, 4:14 PMMatthew Bolan
09/02/2026, 4:15 PMCactusCreative
09/02/2026, 4:15 PMCactusCreative
09/02/2026, 4:15 PMCactusCreative
09/02/2026, 4:15 PMMatthew Bolan
09/02/2026, 4:15 PMCactusCreative
09/02/2026, 4:15 PMMatthew Bolan
09/02/2026, 4:16 PMMatthew Bolan
09/02/2026, 4:16 PMCactusCreative
09/02/2026, 4:16 PMMatthew Bolan
09/02/2026, 4:16 PMCactusCreative
09/02/2026, 4:16 PMCactusCreative
09/02/2026, 4:16 PMGlaeos
09/02/2026, 4:17 PMGlaeos
09/02/2026, 4:17 PMGlaeos
09/02/2026, 4:17 PMCactusCreative
09/02/2026, 4:18 PMMatthew Bolan
09/02/2026, 4:18 PMCactusCreative
09/02/2026, 4:18 PMMatthew Bolan
09/02/2026, 4:18 PMMatthew Bolan
09/02/2026, 4:18 PMMatthew Bolan
09/02/2026, 4:18 PMCactusCreative
09/02/2026, 4:18 PMMatthew Bolan
09/02/2026, 4:18 PMMatthew Bolan
09/02/2026, 4:19 PMMatthew Bolan
09/02/2026, 4:19 PMMatthew Bolan
09/02/2026, 4:19 PMCactusCreative
09/02/2026, 4:21 PMCactusCreative
09/02/2026, 4:22 PMCactusCreative
09/02/2026, 4:24 PMCactusCreative
09/02/2026, 4:25 PMMatthew Bolan
09/02/2026, 4:25 PMMatthew Bolan
09/02/2026, 4:26 PMMatthew Bolan
09/02/2026, 4:26 PMCactusCreative
09/02/2026, 4:26 PMCactusCreative
09/02/2026, 4:26 PMMatthew Bolan
09/02/2026, 4:26 PMMatthew Bolan
09/02/2026, 4:27 PMMatthew Bolan
09/02/2026, 4:27 PMCactusCreative
09/02/2026, 4:27 PMCactusCreative
09/02/2026, 4:28 PMMatthew Bolan
09/02/2026, 4:28 PMCactusCreative
09/02/2026, 4:28 PMCactusCreative
09/02/2026, 4:29 PMCactusCreative
09/02/2026, 4:29 PMMatthew Bolan
09/02/2026, 4:30 PMCactusCreative
09/02/2026, 4:30 PMMatthew Bolan
09/02/2026, 4:31 PMMatthew Bolan
09/02/2026, 4:31 PMCactusCreative
09/02/2026, 4:31 PMMatthew Bolan
09/02/2026, 4:32 PMMatthew Bolan
09/02/2026, 4:32 PMCactusCreative
09/02/2026, 4:32 PMCactusCreative
09/02/2026, 4:33 PMMatthew Bolan
09/02/2026, 4:33 PMMatthew Bolan
09/02/2026, 4:33 PMMatthew Bolan
09/02/2026, 4:33 PMCactusCreative
09/02/2026, 4:33 PMMatthew Bolan
09/02/2026, 4:33 PMCactusCreative
09/02/2026, 4:34 PMMatthew Bolan
09/02/2026, 4:34 PMCactusCreative
09/02/2026, 4:34 PMCactusCreative
09/02/2026, 4:34 PMMatthew Bolan
09/02/2026, 4:35 PMMatthew Bolan
09/02/2026, 4:35 PMMatthew Bolan
09/02/2026, 4:37 PMCactusCreative
09/02/2026, 4:37 PMCactusCreative
09/02/2026, 4:37 PMMatthew Bolan
09/02/2026, 4:39 PMMatthew Bolan
09/02/2026, 4:39 PMCactusCreative
09/02/2026, 4:39 PMCactusCreative
09/02/2026, 4:39 PMMatthew Bolan
09/02/2026, 4:40 PMMatthew Bolan
09/02/2026, 4:40 PMMatthew Bolan
09/02/2026, 4:40 PMMatthew Bolan
09/02/2026, 4:40 PMMatthew Bolan
09/02/2026, 4:41 PMCactusCreative
09/02/2026, 4:41 PMCactusCreative
09/02/2026, 4:41 PMMatthew Bolan
09/02/2026, 4:42 PMMatthew Bolan
09/02/2026, 4:42 PMMatthew Bolan
09/02/2026, 4:42 PMCactusCreative
09/02/2026, 4:42 PMMatthew Bolan
09/02/2026, 4:42 PMCactusCreative
09/02/2026, 4:42 PMMatthew Bolan
09/02/2026, 4:42 PMMatthew Bolan
09/02/2026, 4:43 PMCactusCreative
09/02/2026, 4:43 PMMatthew Bolan
09/02/2026, 4:43 PMMatthew Bolan
09/02/2026, 4:43 PMCactusCreative
09/02/2026, 4:43 PMMatthew Bolan
09/02/2026, 4:43 PMMatthew Bolan
09/02/2026, 4:44 PMCactusCreative
09/02/2026, 4:44 PMCactusCreative
09/02/2026, 4:45 PMGlaeos
09/02/2026, 4:47 PMCactusCreative
09/02/2026, 4:47 PMMatthew Bolan
09/02/2026, 4:47 PMGlaeos
09/02/2026, 4:47 PMCactusCreative
09/02/2026, 4:47 PMGlaeos
09/02/2026, 4:48 PMMatthew Bolan
09/02/2026, 4:48 PMMatthew Bolan
09/02/2026, 4:48 PMCactusCreative
09/02/2026, 4:48 PMGlaeos
09/02/2026, 4:48 PMGlaeos
09/02/2026, 4:48 PMMatthew Bolan
09/02/2026, 4:49 PMGlaeos
09/02/2026, 4:49 PMCactusCreative
09/02/2026, 4:49 PMMatthew Bolan
09/02/2026, 4:49 PMMatthew Bolan
09/02/2026, 4:49 PMMatthew Bolan
09/02/2026, 4:50 PMGlaeos
09/02/2026, 4:50 PMMatthew Bolan
09/02/2026, 4:50 PMMatthew Bolan
09/02/2026, 4:51 PMMatthew Bolan
09/02/2026, 4:52 PMMatthew Bolan
09/02/2026, 4:52 PMCactusCreative
09/02/2026, 4:52 PMCactusCreative
09/02/2026, 4:52 PMMatthew Bolan
09/02/2026, 4:52 PMCactusCreative
09/02/2026, 4:53 PMMatthew Bolan
09/02/2026, 4:53 PMMatthew Bolan
09/02/2026, 4:53 PMMatthew Bolan
09/02/2026, 4:53 PMCactusCreative
09/02/2026, 4:53 PMMatthew Bolan
09/02/2026, 4:54 PMMatthew Bolan
09/02/2026, 4:54 PMCactusCreative
09/02/2026, 4:55 PMCactusCreative
09/02/2026, 4:55 PMCactusCreative
09/02/2026, 4:56 PMMatthew Bolan
09/02/2026, 4:57 PMCactusCreative
09/02/2026, 4:58 PMCactusCreative
09/02/2026, 4:58 PMMatthew Bolan
09/02/2026, 4:58 PMCactusCreative
09/02/2026, 4:59 PMCactusCreative
09/02/2026, 4:59 PMMatthew Bolan
09/02/2026, 4:59 PMMatthew Bolan
09/02/2026, 5:00 PMCactusCreative
09/02/2026, 5:00 PMMatthew Bolan
09/02/2026, 5:00 PMMatthew Bolan
09/02/2026, 5:00 PMMatthew Bolan
09/02/2026, 5:00 PMCactusCreative
09/02/2026, 5:00 PMMatthew Bolan
09/02/2026, 5:00 PMMatthew Bolan
09/02/2026, 5:00 PMMatthew Bolan
09/02/2026, 5:01 PMCactusCreative
09/02/2026, 5:01 PMCactusCreative
09/02/2026, 5:02 PMCactusCreative
09/02/2026, 5:03 PMCactusCreative
09/02/2026, 5:04 PMGlaeos
09/02/2026, 5:04 PMMatthew Bolan
09/02/2026, 5:04 PMCactusCreative
09/02/2026, 5:04 PMMatthew Bolan
09/02/2026, 5:04 PMCactusCreative
09/02/2026, 5:04 PMGlaeos
09/02/2026, 5:08 PMCactusCreative
09/02/2026, 5:08 PMGlaeos
09/02/2026, 5:08 PMMatthew Bolan
09/02/2026, 5:08 PMMatthew Bolan
09/02/2026, 5:09 PMMatthew Bolan
09/02/2026, 5:09 PMCactusCreative
09/02/2026, 5:10 PMCactusCreative
09/02/2026, 5:10 PMGlaeos
09/02/2026, 5:13 PMCactusCreative
09/02/2026, 5:14 PMGlaeos
09/02/2026, 5:14 PMGlaeos
09/02/2026, 5:15 PMGlaeos
09/02/2026, 5:16 PMGlaeos
09/02/2026, 5:16 PMGlaeos
09/02/2026, 5:16 PMGlaeos
09/02/2026, 5:17 PMMatthew Bolan
09/02/2026, 5:17 PMMatthew Bolan
09/02/2026, 5:17 PMMatthew Bolan
09/02/2026, 5:17 PMGlaeos
09/02/2026, 5:18 PMMatthew Bolan
09/02/2026, 5:18 PMGlaeos
09/02/2026, 5:18 PMMatthew Bolan
09/02/2026, 5:18 PMMatthew Bolan
09/02/2026, 5:18 PMGlaeos
09/02/2026, 5:18 PMMatthew Bolan
09/02/2026, 5:18 PMMatthew Bolan
09/02/2026, 5:18 PMGlaeos
09/02/2026, 5:18 PMGlaeos
09/02/2026, 5:19 PMMatthew Bolan
09/02/2026, 5:19 PMGlaeos
09/02/2026, 5:19 PMMatthew Bolan
09/02/2026, 5:19 PMGlaeos
09/02/2026, 5:20 PMGlaeos
09/02/2026, 5:20 PMMatthew Bolan
09/02/2026, 5:20 PMMatthew Bolan
09/02/2026, 5:21 PMGlaeos
09/02/2026, 5:21 PMGlaeos
09/02/2026, 5:21 PMMatthew Bolan
09/02/2026, 5:21 PMGlaeos
09/02/2026, 5:21 PMGlaeos
09/02/2026, 5:21 PMGlaeos
09/02/2026, 5:21 PMGlaeos
09/02/2026, 5:21 PMGlaeos
09/02/2026, 5:22 PMCactusCreative
09/02/2026, 5:22 PMCactusCreative
09/02/2026, 5:22 PMMatthew Bolan
09/02/2026, 5:22 PMGlaeos
09/02/2026, 5:22 PMCactusCreative
09/02/2026, 5:22 PMMatthew Bolan
09/02/2026, 5:23 PMMatthew Bolan
09/02/2026, 5:23 PMMatthew Bolan
09/02/2026, 5:23 PMMatthew Bolan
09/02/2026, 5:23 PMMatthew Bolan
09/02/2026, 5:24 PMMatthew Bolan
09/02/2026, 5:24 PMCactusCreative
09/02/2026, 5:24 PMMatthew Bolan
09/02/2026, 5:25 PMMatthew Bolan
09/02/2026, 5:25 PMGlaeos
09/02/2026, 5:25 PMGlaeos
09/02/2026, 5:25 PMMatthew Bolan
09/02/2026, 5:25 PMMatthew Bolan
09/02/2026, 5:25 PMMatthew Bolan
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:26 PMCactusCreative
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:26 PMGlaeos
09/02/2026, 5:26 PMMatthew Bolan
09/02/2026, 5:27 PMMatthew Bolan
09/02/2026, 5:27 PMMatthew Bolan
09/02/2026, 5:27 PMGlaeos
09/02/2026, 5:27 PMMatthew Bolan
09/02/2026, 5:27 PMMatthew Bolan
09/02/2026, 5:27 PMGlaeos
09/02/2026, 5:28 PMMatthew Bolan
09/02/2026, 5:28 PMGlaeos
09/02/2026, 5:28 PMGlaeos
09/02/2026, 5:28 PMMatthew Bolan
09/02/2026, 5:29 PMjava
private boolean validTreeLocation()
{
Block block = this.world.getBlockState(this.basePos.down()).getBlock();
if (block != Blocks.DIRT && block != Blocks.GRASS && block != Blocks.FARMLAND)
{
return false;
}
else
{
int i = this.checkBlockLine(this.basePos, this.basePos.up(this.heightLimit - 1));
if (i == -1)
{
return true;
}
else if (i < 6)
{
return false;
}
else
{
this.heightLimit = i;
return true;
}
}
java
if (this.heightLimit == 0)
{
this.heightLimit = 5 + this.rand.nextInt(this.heightLimitLimit);
}Glaeos
09/02/2026, 5:29 PMMatthew Bolan
09/02/2026, 5:29 PMMatthew Bolan
09/02/2026, 5:29 PMi to be as large as heightLimit itself I thinkMatthew Bolan
09/02/2026, 5:29 PMGlaeos
09/02/2026, 5:30 PMGlaeos
09/02/2026, 5:31 PMcheckBlockLine can only be as large as the tree is tall?Matthew Bolan
09/02/2026, 5:31 PMMatthew Bolan
09/02/2026, 5:31 PMjava
int checkBlockLine(BlockPos posOne, BlockPos posTwo)
{
BlockPos blockpos = posTwo.add(-posOne.getX(), -posOne.getY(), -posOne.getZ());
int i = this.getGreatestDistance(blockpos);
float f = (float)blockpos.getX() / (float)i;
float f1 = (float)blockpos.getY() / (float)i;
float f2 = (float)blockpos.getZ() / (float)i;
if (i == 0)
{
return -1;
}
else
{
for (int j = 0; j <= i; ++j)
{
BlockPos blockpos1 = posOne.add((double)(0.5F + (float)j * f), (double)(0.5F + (float)j * f1), (double)(0.5F + (float)j * f2));
if (!this.func_150523_a(this.world.getBlockState(blockpos1).getBlock()))
{
return j;
}
}
return -1;
}
}Matthew Bolan
09/02/2026, 5:32 PMj, we know j <= i, i is the greatest absolute value of all the coord differencesCactusCreative
09/02/2026, 5:34 PMGlaeos
09/02/2026, 5:34 PMGlaeos
09/02/2026, 5:34 PMGlaeos
09/02/2026, 5:34 PMCactusCreative
09/02/2026, 5:35 PMCactusCreative
09/02/2026, 5:46 PMMatthew Bolan
09/02/2026, 5:47 PMCactusCreative
09/02/2026, 5:47 PMMatthew Bolan
09/02/2026, 5:47 PMMatthew Bolan
09/02/2026, 5:47 PMCactusCreative
09/02/2026, 5:47 PMMatthew Bolan
09/02/2026, 5:48 PMMatthew Bolan
09/02/2026, 5:48 PMMatthew Bolan
09/02/2026, 5:48 PMMatthew Bolan
09/02/2026, 5:48 PMCactusCreative
09/02/2026, 5:48 PMCactusCreative
09/02/2026, 5:48 PMCactusCreative
09/02/2026, 5:49 PMCactusCreative
09/02/2026, 5:49 PMMatthew Bolan
09/02/2026, 5:49 PMMatthew Bolan
09/02/2026, 5:49 PMCactusCreative
09/02/2026, 5:49 PMMatthew Bolan
09/02/2026, 5:49 PMMatthew Bolan
09/02/2026, 5:50 PMTFirst
09/02/2026, 7:24 PM