From 28e8a234e95ac1102f2eb52e3ed9c402bbf3f85a Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Sat, 5 Sep 2020 22:41:16 -0400 Subject: [PATCH] Experiment --- pom.xml | 5 -- .../gen/bindings/BukkitTerrainProvider.java | 61 +++++++++++++++++++ .../iris/gen/bindings/TerrainProvider.java | 33 ++++++++++ .../iris/gen/bindings/TerrainTarget.java | 31 ++++++++++ 4 files changed, 125 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/volmit/iris/gen/bindings/BukkitTerrainProvider.java create mode 100644 src/main/java/com/volmit/iris/gen/bindings/TerrainProvider.java create mode 100644 src/main/java/com/volmit/iris/gen/bindings/TerrainTarget.java diff --git a/pom.xml b/pom.xml index e94bef677..1b3282972 100644 --- a/pom.xml +++ b/pom.xml @@ -161,17 +161,12 @@ 1.16.1-R0.1-SNAPSHOT provided - - - org.bukkit.craftbukkit cb-1.16.2 1.16.2 provided - - org.bstats diff --git a/src/main/java/com/volmit/iris/gen/bindings/BukkitTerrainProvider.java b/src/main/java/com/volmit/iris/gen/bindings/BukkitTerrainProvider.java new file mode 100644 index 000000000..e2b9fae20 --- /dev/null +++ b/src/main/java/com/volmit/iris/gen/bindings/BukkitTerrainProvider.java @@ -0,0 +1,61 @@ +package com.volmit.iris.gen.bindings; + +import java.util.List; +import java.util.Random; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.generator.BlockPopulator; +import org.bukkit.generator.ChunkGenerator; + +public abstract class BukkitTerrainProvider extends ChunkGenerator implements TerrainProvider +{ + private final TerrainTarget target; + + public BukkitTerrainProvider(TerrainTarget target) + { + this.target = target; + } + + @Override + public abstract void generate(Random random, int x, int z, BiomeGrid biome, ChunkData data); + + @Override + public ChunkData generateChunkData(World world, Random random, int x, int z, BiomeGrid biome) + { + ChunkData data = Bukkit.getServer().createChunkData(world); + generate(random, x, z, biome, data); + return data; + } + + @Override + public abstract boolean canSpawn(World world, int x, int z); + + @Override + public abstract List getDefaultPopulators(World world); + + @Override + public abstract Location getFixedSpawnLocation(World world, Random random); + + @Override + public abstract boolean isParallelCapable(); + + @Override + public abstract boolean shouldGenerateCaves(); + + @Override + public abstract boolean shouldGenerateDecorations(); + + @Override + public abstract boolean shouldGenerateMobs(); + + @Override + public abstract boolean shouldGenerateStructures(); + + @Override + public TerrainTarget getTarget() + { + return target; + } +} diff --git a/src/main/java/com/volmit/iris/gen/bindings/TerrainProvider.java b/src/main/java/com/volmit/iris/gen/bindings/TerrainProvider.java new file mode 100644 index 000000000..fa38302ee --- /dev/null +++ b/src/main/java/com/volmit/iris/gen/bindings/TerrainProvider.java @@ -0,0 +1,33 @@ +package com.volmit.iris.gen.bindings; + +import java.util.List; +import java.util.Random; + +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.generator.BlockPopulator; +import org.bukkit.generator.ChunkGenerator.BiomeGrid; +import org.bukkit.generator.ChunkGenerator.ChunkData; + +public interface TerrainProvider +{ + public TerrainTarget getTarget(); + + public void generate(Random random, int x, int z, BiomeGrid biome, ChunkData data); + + public boolean canSpawn(World world, int x, int z); + + public List getDefaultPopulators(World world); + + public Location getFixedSpawnLocation(World world, Random random); + + public boolean isParallelCapable(); + + public boolean shouldGenerateCaves(); + + public boolean shouldGenerateDecorations(); + + public boolean shouldGenerateMobs(); + + public boolean shouldGenerateStructures(); +} diff --git a/src/main/java/com/volmit/iris/gen/bindings/TerrainTarget.java b/src/main/java/com/volmit/iris/gen/bindings/TerrainTarget.java new file mode 100644 index 000000000..88cb7871e --- /dev/null +++ b/src/main/java/com/volmit/iris/gen/bindings/TerrainTarget.java @@ -0,0 +1,31 @@ +package com.volmit.iris.gen.bindings; + +import java.io.File; + +import org.bukkit.World; +import org.bukkit.World.Environment; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class TerrainTarget +{ + private long seed; + private Environment environment; + private String name; + private File folder; + + public static TerrainTarget from(World world) + { + //@builder + return new TerrainTargetBuilder() + .environment(world.getEnvironment()) + .seed(world.getSeed()) + .folder(world.getWorldFolder()) + .name(world.getName()) + .build(); + //@done + } +}