mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-08-29 21:30:43 +00:00
delete tree generation stage addon
This commit is contained in:
@@ -1,45 +0,0 @@
|
|||||||
import com.dfsek.terra.configureCompilation
|
|
||||||
import com.dfsek.terra.configureDependencies
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
`java-library`
|
|
||||||
`maven-publish`
|
|
||||||
idea
|
|
||||||
}
|
|
||||||
|
|
||||||
configureCompilation()
|
|
||||||
configureDependencies()
|
|
||||||
|
|
||||||
group = "com.dfsek.terra.common"
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
"shadedApi"(project(":common:api"))
|
|
||||||
"compileOnly"("com.google.guava:guava:30.0-jre")
|
|
||||||
|
|
||||||
"testImplementation"("com.google.guava:guava:30.0-jre")
|
|
||||||
}
|
|
||||||
|
|
||||||
publishing {
|
|
||||||
publications {
|
|
||||||
create<MavenPublication>("mavenJava") {
|
|
||||||
artifact(tasks["sourcesJar"])
|
|
||||||
artifact(tasks["jar"])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
val mavenUrl = "https://repo.codemc.io/repository/maven-releases/"
|
|
||||||
val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/"
|
|
||||||
|
|
||||||
maven(mavenUrl) {
|
|
||||||
val mavenUsername: String? by project
|
|
||||||
val mavenPassword: String? by project
|
|
||||||
if (mavenUsername != null && mavenPassword != null) {
|
|
||||||
credentials {
|
|
||||||
username = mavenUsername
|
|
||||||
password = mavenPassword
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-19
@@ -1,19 +0,0 @@
|
|||||||
package com.dfsek.terra.addons.generation.tree;
|
|
||||||
|
|
||||||
import com.dfsek.tectonic.annotations.Default;
|
|
||||||
import com.dfsek.tectonic.annotations.Value;
|
|
||||||
import com.dfsek.tectonic.loading.object.ObjectTemplate;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class BiomeTreeTemplate implements ObjectTemplate<BiomeTrees> {
|
|
||||||
@Value("trees")
|
|
||||||
@Default
|
|
||||||
private List<TreeLayer> trees = Collections.emptyList();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BiomeTrees get() {
|
|
||||||
return new BiomeTrees(trees);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-17
@@ -1,17 +0,0 @@
|
|||||||
package com.dfsek.terra.addons.generation.tree;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.properties.Properties;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class BiomeTrees implements Properties {
|
|
||||||
private final List<TreeLayer> trees;
|
|
||||||
|
|
||||||
public BiomeTrees(List<TreeLayer> trees) {
|
|
||||||
this.trees = trees;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<TreeLayer> getTrees() {
|
|
||||||
return trees;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-38
@@ -1,38 +0,0 @@
|
|||||||
package com.dfsek.terra.addons.generation.tree;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.TerraPlugin;
|
|
||||||
import com.dfsek.terra.api.addon.TerraAddon;
|
|
||||||
import com.dfsek.terra.api.addon.annotations.Addon;
|
|
||||||
import com.dfsek.terra.api.addon.annotations.Author;
|
|
||||||
import com.dfsek.terra.api.addon.annotations.Version;
|
|
||||||
import com.dfsek.terra.api.event.EventListener;
|
|
||||||
import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
|
|
||||||
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
|
|
||||||
import com.dfsek.terra.api.injection.annotations.Inject;
|
|
||||||
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
|
|
||||||
import com.dfsek.terra.api.world.biome.TerraBiome;
|
|
||||||
import com.dfsek.terra.api.world.generator.GenerationStageProvider;
|
|
||||||
|
|
||||||
@Addon("generation-stage-tree")
|
|
||||||
@Version("1.0.0")
|
|
||||||
@Author("Tree")
|
|
||||||
public class TreeGenerationAddon extends TerraAddon implements EventListener {
|
|
||||||
@Inject
|
|
||||||
private TerraPlugin main;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void initialize() {
|
|
||||||
main.getEventManager().registerListener(this, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException {
|
|
||||||
event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main));
|
|
||||||
event.getPack().applyLoader(TreeLayer.class, TreeLayerTemplate::new);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBiomeLoad(ConfigurationLoadEvent event) {
|
|
||||||
if(event.is(TerraBiome.class)) {
|
|
||||||
event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeTreeTemplate()).get());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-54
@@ -1,54 +0,0 @@
|
|||||||
package com.dfsek.terra.addons.generation.tree;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.block.state.BlockState;
|
|
||||||
import com.dfsek.terra.api.noise.NoiseSampler;
|
|
||||||
import com.dfsek.terra.api.util.PopulationUtil;
|
|
||||||
import com.dfsek.terra.api.util.Range;
|
|
||||||
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
|
||||||
import com.dfsek.terra.api.vector.Vector2;
|
|
||||||
import com.dfsek.terra.api.vector.Vector3;
|
|
||||||
import com.dfsek.terra.api.world.Chunk;
|
|
||||||
import com.dfsek.terra.api.world.Tree;
|
|
||||||
|
|
||||||
public class TreeLayer {
|
|
||||||
protected final double density;
|
|
||||||
protected final Range level;
|
|
||||||
protected final ProbabilityCollection<Tree> layer;
|
|
||||||
protected final NoiseSampler noise;
|
|
||||||
|
|
||||||
public TreeLayer(double density, Range level, ProbabilityCollection<Tree> layer, NoiseSampler noise) {
|
|
||||||
this.density = density;
|
|
||||||
this.level = level;
|
|
||||||
this.layer = layer;
|
|
||||||
this.noise = noise;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NoiseSampler getNoise() {
|
|
||||||
return noise;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getDensity() {
|
|
||||||
return density;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Range getLevel() {
|
|
||||||
return level;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProbabilityCollection<Tree> getLayer() {
|
|
||||||
return layer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void place(Chunk chunk, Vector2 coords) {
|
|
||||||
Tree item = layer.get(noise, coords.getX(), coords.getZ(), chunk.getWorld().getSeed());
|
|
||||||
BlockState current;
|
|
||||||
int cx = (chunk.getX()) << 4;
|
|
||||||
int cz = (chunk.getZ()) << 4;
|
|
||||||
for(int y : level) {
|
|
||||||
current = chunk.getBlock((int) coords.getX(), y, (int) coords.getZ());
|
|
||||||
if(item.getSpawnable().contains(current.getBlockType())) {
|
|
||||||
item.plant(new Vector3((int) coords.getX() + cx, y+1, (int) coords.getZ() + cz), chunk.getWorld(), PopulationUtil.getRandom(chunk, coords.hashCode()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-27
@@ -1,27 +0,0 @@
|
|||||||
package com.dfsek.terra.addons.generation.tree;
|
|
||||||
|
|
||||||
import com.dfsek.tectonic.annotations.Value;
|
|
||||||
import com.dfsek.tectonic.loading.object.ObjectTemplate;
|
|
||||||
import com.dfsek.terra.api.noise.NoiseSampler;
|
|
||||||
import com.dfsek.terra.api.util.Range;
|
|
||||||
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
|
||||||
import com.dfsek.terra.api.world.Tree;
|
|
||||||
|
|
||||||
public class TreeLayerTemplate implements ObjectTemplate<TreeLayer> {
|
|
||||||
@Value("density")
|
|
||||||
private double density;
|
|
||||||
|
|
||||||
@Value("y")
|
|
||||||
private Range y;
|
|
||||||
|
|
||||||
@Value("items")
|
|
||||||
private ProbabilityCollection<Tree> items;
|
|
||||||
|
|
||||||
@Value("distribution")
|
|
||||||
private NoiseSampler distribution;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TreeLayer get() {
|
|
||||||
return new TreeLayer(density, y, items, distribution);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-50
@@ -1,50 +0,0 @@
|
|||||||
package com.dfsek.terra.addons.generation.tree;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.TerraPlugin;
|
|
||||||
import com.dfsek.terra.api.profiler.ProfileFrame;
|
|
||||||
import com.dfsek.terra.api.util.PopulationUtil;
|
|
||||||
import com.dfsek.terra.api.vector.Vector2;
|
|
||||||
import com.dfsek.terra.api.world.Chunk;
|
|
||||||
import com.dfsek.terra.api.world.TerraWorld;
|
|
||||||
import com.dfsek.terra.api.world.World;
|
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
|
||||||
import com.dfsek.terra.api.world.generator.TerraGenerationStage;
|
|
||||||
import net.jafama.FastMath;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
|
|
||||||
public class TreePopulator implements TerraGenerationStage {
|
|
||||||
private final TerraPlugin main;
|
|
||||||
|
|
||||||
public TreePopulator(TerraPlugin main) {
|
|
||||||
this.main = main;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int offset(Random r, int i) {
|
|
||||||
return FastMath.min(FastMath.max(i + r.nextInt(3) - 1, 0), 15);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SuppressWarnings("try")
|
|
||||||
public void populate(@NotNull World world, @NotNull Chunk chunk) {
|
|
||||||
TerraWorld tw = main.getWorld(world);
|
|
||||||
try(ProfileFrame ignore = main.getProfiler().profile("tree")) {
|
|
||||||
if(tw.getConfig().disableTrees()) return;
|
|
||||||
|
|
||||||
BiomeProvider provider = tw.getBiomeProvider();
|
|
||||||
Random random = PopulationUtil.getRandom(chunk);
|
|
||||||
long seed = world.getSeed();
|
|
||||||
for(int x = 0; x < 16; x += 2) {
|
|
||||||
for(int z = 0; z < 16; z += 2) {
|
|
||||||
for(TreeLayer layer : provider.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, seed).getContext().get(BiomeTrees.class).getTrees()) {
|
|
||||||
if(layer.getDensity() >= random.nextDouble() * 100) {
|
|
||||||
layer.place(chunk, new Vector2(offset(random, x), offset(random, z)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user