Reimplement fractal trees

This commit is contained in:
dfsek
2020-12-14 22:51:45 -07:00
parent 0dc0742e81
commit 4d59c27a13
12 changed files with 125 additions and 8 deletions

View File

@@ -6,6 +6,7 @@ import com.dfsek.terra.api.generic.TerraPlugin;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.block.MaterialData;
import com.dfsek.terra.api.generic.world.vector.Location;
import com.dfsek.terra.util.MaterialSet;
import java.util.HashMap;
import java.util.List;
@@ -18,9 +19,11 @@ import java.util.function.Consumer;
public abstract class FractalTree {
private final Map<Location, BlockData> treeAssembler = new HashMap<>();
private final List<EntitySpawnHolder> entities = new GlueList<>();
private final Location origin;
private final Random random;
private final TerraPlugin main;
protected final Location origin;
protected final Random random;
protected final TerraPlugin main;
public abstract MaterialSet getSpawnable();
/**
* Instantiates a TreeGrower at an origin location.

View File

@@ -4,10 +4,17 @@ import com.dfsek.terra.api.gaea.tree.fractal.FractalTree;
import com.dfsek.terra.api.generic.TerraPlugin;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.vector.Location;
import com.dfsek.terra.util.MaterialSet;
import java.util.Random;
public class Cactus extends FractalTree {
@Override
public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:sand"),
main.getWorldHandle().createMaterialData("minecraft:red_sand"));
}
/**
* Instantiates a TreeGrower at an origin location.
*

View File

@@ -8,6 +8,7 @@ import com.dfsek.terra.api.generic.world.WorldHandle;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.vector.Location;
import com.dfsek.terra.api.generic.world.vector.Vector3;
import com.dfsek.terra.util.MaterialSet;
import java.util.Random;
@@ -16,6 +17,14 @@ public class IceSpike extends FractalTree {
private final TreeGeometry geo;
private final ProbabilityCollection<BlockData> ice;
@Override
public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:stone"),
main.getWorldHandle().createMaterialData("minecraft:gravel"),
main.getWorldHandle().createMaterialData("minecraft:snow_block"),
main.getWorldHandle().createMaterialData("minecraft:grass_block"));
}
/**
* Instantiates a TreeGrower at an origin location.
*

View File

@@ -6,6 +6,7 @@ import com.dfsek.terra.api.generic.TerraPlugin;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.vector.Location;
import com.dfsek.terra.api.generic.world.vector.Vector3;
import com.dfsek.terra.util.MaterialSet;
import net.jafama.FastMath;
import java.util.Random;
@@ -14,6 +15,12 @@ import java.util.Random;
public class OakTree extends FractalTree {
private final TreeGeometry geo;
@Override
public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:podzol"),
main.getWorldHandle().createMaterialData("minecraft:grass_block"));
}
/**
* Instantiates a TreeGrower at an origin location.
*

View File

@@ -4,10 +4,17 @@ import com.dfsek.terra.api.gaea.tree.fractal.FractalTree;
import com.dfsek.terra.api.generic.TerraPlugin;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.vector.Location;
import com.dfsek.terra.util.MaterialSet;
import java.util.Random;
public class ShatteredPillar extends FractalTree {
@Override
public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone"));
}
/**
* Instantiates a TreeGrower at an origin location.
*

View File

@@ -8,6 +8,7 @@ import com.dfsek.terra.api.generic.world.WorldHandle;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.vector.Location;
import com.dfsek.terra.api.generic.world.vector.Vector3;
import com.dfsek.terra.util.MaterialSet;
import net.jafama.FastMath;
import java.util.Random;
@@ -17,6 +18,11 @@ public class ShatteredTree extends FractalTree {
private final ProbabilityCollection<BlockData> bark;
private final ProbabilityCollection<BlockData> leaves;
@Override
public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone"));
}
/**
* Instantiates a TreeGrower at an origin location.
*

View File

@@ -4,10 +4,17 @@ import com.dfsek.terra.api.gaea.tree.fractal.FractalTree;
import com.dfsek.terra.api.generic.TerraPlugin;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.vector.Location;
import com.dfsek.terra.util.MaterialSet;
import java.util.Random;
public class SmallShatteredPillar extends FractalTree {
@Override
public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone"));
}
/**
* Instantiates a TreeGrower at an origin location.
*

View File

@@ -8,6 +8,7 @@ import com.dfsek.terra.api.generic.world.WorldHandle;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.vector.Location;
import com.dfsek.terra.api.generic.world.vector.Vector3;
import com.dfsek.terra.util.MaterialSet;
import net.jafama.FastMath;
import java.util.Random;
@@ -17,6 +18,11 @@ public class SmallShatteredTree extends FractalTree {
private final ProbabilityCollection<BlockData> bark;
private final ProbabilityCollection<BlockData> leaves;
@Override
public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:end_stone"));
}
/**
* Instantiates a TreeGrower at an origin location.
*

View File

@@ -6,6 +6,7 @@ import com.dfsek.terra.api.generic.TerraPlugin;
import com.dfsek.terra.api.generic.world.block.BlockData;
import com.dfsek.terra.api.generic.world.vector.Location;
import com.dfsek.terra.api.generic.world.vector.Vector3;
import com.dfsek.terra.util.MaterialSet;
import net.jafama.FastMath;
import java.util.Random;
@@ -13,6 +14,12 @@ import java.util.Random;
public class SpruceTree extends FractalTree {
private final TreeGeometry geo;
@Override
public MaterialSet getSpawnable() {
return MaterialSet.get(main.getWorldHandle().createMaterialData("minecraft:podzol"),
main.getWorldHandle().createMaterialData("minecraft:grass_block"));
}
/**
* Instantiates a TreeGrower at an origin location.
*