mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-18 06:40:55 +00:00
clean up ChunkGenerator API
This commit is contained in:
@@ -8,8 +8,8 @@ import com.dfsek.terra.api.platform.world.World;
|
|||||||
import com.dfsek.terra.config.PluginConfig;
|
import com.dfsek.terra.config.PluginConfig;
|
||||||
import com.dfsek.terra.config.lang.Language;
|
import com.dfsek.terra.config.lang.Language;
|
||||||
import com.dfsek.terra.debug.DebugLogger;
|
import com.dfsek.terra.debug.DebugLogger;
|
||||||
import com.dfsek.terra.registry.AddonRegistry;
|
import com.dfsek.terra.registry.master.AddonRegistry;
|
||||||
import com.dfsek.terra.registry.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.dfsek.terra.api.platform.world.generator;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.platform.world.ChunkAccess;
|
||||||
|
|
||||||
|
public interface ChunkData extends ChunkAccess {
|
||||||
|
/**
|
||||||
|
* Get the maximum height for the chunk.
|
||||||
|
* <p>
|
||||||
|
* Setting blocks at or above this height will do nothing.
|
||||||
|
*
|
||||||
|
* @return the maximum height
|
||||||
|
*/
|
||||||
|
int getMaxHeight();
|
||||||
|
}
|
||||||
@@ -1,43 +1,7 @@
|
|||||||
package com.dfsek.terra.api.platform.world.generator;
|
package com.dfsek.terra.api.platform.world.generator;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.Handle;
|
import com.dfsek.terra.api.platform.Handle;
|
||||||
import com.dfsek.terra.api.platform.world.BiomeGrid;
|
|
||||||
import com.dfsek.terra.api.platform.world.ChunkAccess;
|
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
|
||||||
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
public interface ChunkGenerator extends Handle {
|
public interface ChunkGenerator extends Handle {
|
||||||
boolean isParallelCapable();
|
|
||||||
|
|
||||||
boolean shouldGenerateCaves();
|
|
||||||
|
|
||||||
boolean shouldGenerateDecorations();
|
|
||||||
|
|
||||||
boolean shouldGenerateMobs();
|
|
||||||
|
|
||||||
boolean shouldGenerateStructures();
|
|
||||||
|
|
||||||
ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome);
|
|
||||||
|
|
||||||
|
|
||||||
List<BlockPopulator> getDefaultPopulators(World world);
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
TerraChunkGenerator getTerraGenerator();
|
|
||||||
|
|
||||||
interface ChunkData extends ChunkAccess {
|
|
||||||
/**
|
|
||||||
* Get the maximum height for the chunk.
|
|
||||||
* <p>
|
|
||||||
* Setting blocks at or above this height will do nothing.
|
|
||||||
*
|
|
||||||
* @return the maximum height
|
|
||||||
*/
|
|
||||||
int getMaxHeight();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
-6
@@ -1,6 +0,0 @@
|
|||||||
package com.dfsek.terra.api.platform.world.generator;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.Handle;
|
|
||||||
|
|
||||||
public interface GeneratorWrapper extends Handle {
|
|
||||||
}
|
|
||||||
@@ -28,7 +28,7 @@ import com.dfsek.terra.api.structures.structure.Rotation;
|
|||||||
import com.dfsek.terra.api.structures.structure.buffer.Buffer;
|
import com.dfsek.terra.api.structures.structure.buffer.Buffer;
|
||||||
import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer;
|
import com.dfsek.terra.api.structures.structure.buffer.DirectBuffer;
|
||||||
import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer;
|
import com.dfsek.terra.api.structures.structure.buffer.StructureBuffer;
|
||||||
import com.dfsek.terra.registry.FunctionRegistry;
|
import com.dfsek.terra.registry.config.FunctionRegistry;
|
||||||
import com.dfsek.terra.registry.config.LootRegistry;
|
import com.dfsek.terra.registry.config.LootRegistry;
|
||||||
import com.dfsek.terra.registry.config.ScriptRegistry;
|
import com.dfsek.terra.registry.config.ScriptRegistry;
|
||||||
import com.dfsek.terra.world.generation.math.SamplerCache;
|
import com.dfsek.terra.world.generation.math.SamplerCache;
|
||||||
@@ -47,7 +47,7 @@ public class StructureScript {
|
|||||||
private final String id;
|
private final String id;
|
||||||
private final Cache<Location, StructureBuffer> cache;
|
private final Cache<Location, StructureBuffer> cache;
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
String tempID;
|
private String tempID;
|
||||||
|
|
||||||
public StructureScript(InputStream inputStream, TerraPlugin main, ScriptRegistry registry, LootRegistry lootRegistry, SamplerCache cache, FunctionRegistry functionRegistry) throws ParseException {
|
public StructureScript(InputStream inputStream, TerraPlugin main, ScriptRegistry registry, LootRegistry lootRegistry, SamplerCache cache, FunctionRegistry functionRegistry) throws ParseException {
|
||||||
Parser parser;
|
Parser parser;
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ package com.dfsek.terra.api.world.generation;
|
|||||||
import com.dfsek.terra.api.core.TerraPlugin;
|
import com.dfsek.terra.api.core.TerraPlugin;
|
||||||
import com.dfsek.terra.api.platform.world.BiomeGrid;
|
import com.dfsek.terra.api.platform.world.BiomeGrid;
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
import com.dfsek.terra.api.platform.world.World;
|
||||||
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
import com.dfsek.terra.api.platform.world.generator.ChunkData;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public interface TerraChunkGenerator {
|
public interface TerraChunkGenerator {
|
||||||
ChunkGenerator.ChunkData generateChunkData(@NotNull World world, Random random, int x, int z, ChunkGenerator.ChunkData original);
|
ChunkData generateChunkData(@NotNull World world, Random random, int x, int z, ChunkData original);
|
||||||
|
|
||||||
void generateBiomes(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome);
|
void generateBiomes(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome);
|
||||||
|
|
||||||
|
|||||||
@@ -46,11 +46,11 @@ import com.dfsek.terra.config.templates.OreTemplate;
|
|||||||
import com.dfsek.terra.config.templates.PaletteTemplate;
|
import com.dfsek.terra.config.templates.PaletteTemplate;
|
||||||
import com.dfsek.terra.config.templates.StructureTemplate;
|
import com.dfsek.terra.config.templates.StructureTemplate;
|
||||||
import com.dfsek.terra.config.templates.TreeTemplate;
|
import com.dfsek.terra.config.templates.TreeTemplate;
|
||||||
import com.dfsek.terra.registry.FunctionRegistry;
|
|
||||||
import com.dfsek.terra.registry.TerraRegistry;
|
import com.dfsek.terra.registry.TerraRegistry;
|
||||||
import com.dfsek.terra.registry.config.BiomeRegistry;
|
import com.dfsek.terra.registry.config.BiomeRegistry;
|
||||||
import com.dfsek.terra.registry.config.CarverRegistry;
|
import com.dfsek.terra.registry.config.CarverRegistry;
|
||||||
import com.dfsek.terra.registry.config.FloraRegistry;
|
import com.dfsek.terra.registry.config.FloraRegistry;
|
||||||
|
import com.dfsek.terra.registry.config.FunctionRegistry;
|
||||||
import com.dfsek.terra.registry.config.LootRegistry;
|
import com.dfsek.terra.registry.config.LootRegistry;
|
||||||
import com.dfsek.terra.registry.config.NoiseRegistry;
|
import com.dfsek.terra.registry.config.NoiseRegistry;
|
||||||
import com.dfsek.terra.registry.config.OreRegistry;
|
import com.dfsek.terra.registry.config.OreRegistry;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.dfsek.terra.profiler;
|
package com.dfsek.terra.profiler;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
import com.dfsek.terra.api.platform.world.World;
|
||||||
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
import com.google.common.collect.BiMap;
|
import com.google.common.collect.BiMap;
|
||||||
import com.google.common.collect.HashBiMap;
|
import com.google.common.collect.HashBiMap;
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
@@ -13,7 +14,7 @@ public class WorldProfiler {
|
|||||||
private boolean isProfiling;
|
private boolean isProfiling;
|
||||||
|
|
||||||
public WorldProfiler(World w) {
|
public WorldProfiler(World w) {
|
||||||
if(w.getGenerator().getTerraGenerator() == null)
|
if(!TerraWorld.isTerraWorld(w))
|
||||||
throw new IllegalArgumentException("Attempted to instantiate profiler on non-Terra managed world!");
|
throw new IllegalArgumentException("Attempted to instantiate profiler on non-Terra managed world!");
|
||||||
this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime")
|
this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime")
|
||||||
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "FloraTime")
|
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "FloraTime")
|
||||||
@@ -21,7 +22,7 @@ public class WorldProfiler {
|
|||||||
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "OreTime")
|
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "OreTime")
|
||||||
.addMeasurement(new Measurement(5000000, DataType.PERIOD_MILLISECONDS), "CaveTime")
|
.addMeasurement(new Measurement(5000000, DataType.PERIOD_MILLISECONDS), "CaveTime")
|
||||||
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "StructureTime");
|
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "StructureTime");
|
||||||
;
|
|
||||||
isProfiling = false;
|
isProfiling = false;
|
||||||
this.world = w;
|
this.world = w;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -1,6 +1,7 @@
|
|||||||
package com.dfsek.terra.registry;
|
package com.dfsek.terra.registry.config;
|
||||||
|
|
||||||
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
|
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
|
||||||
|
import com.dfsek.terra.registry.TerraRegistry;
|
||||||
|
|
||||||
public class FunctionRegistry extends TerraRegistry<FunctionBuilder<?>> {
|
public class FunctionRegistry extends TerraRegistry<FunctionBuilder<?>> {
|
||||||
}
|
}
|
||||||
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.dfsek.terra.registry;
|
package com.dfsek.terra.registry.master;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.addon.TerraAddon;
|
import com.dfsek.terra.addons.addon.TerraAddon;
|
||||||
import com.dfsek.terra.addons.injection.InjectionException;
|
import com.dfsek.terra.addons.injection.InjectionException;
|
||||||
@@ -8,6 +8,7 @@ import com.dfsek.terra.addons.loading.AddonLoadException;
|
|||||||
import com.dfsek.terra.addons.loading.pre.AddonPool;
|
import com.dfsek.terra.addons.loading.pre.AddonPool;
|
||||||
import com.dfsek.terra.addons.loading.pre.PreLoadAddon;
|
import com.dfsek.terra.addons.loading.pre.PreLoadAddon;
|
||||||
import com.dfsek.terra.api.core.TerraPlugin;
|
import com.dfsek.terra.api.core.TerraPlugin;
|
||||||
|
import com.dfsek.terra.registry.TerraRegistry;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.dfsek.terra.registry.master;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
||||||
|
import com.dfsek.terra.registry.TerraRegistry;
|
||||||
|
|
||||||
|
public class ChunkGeneratorRegistry extends TerraRegistry<ChunkGenerator> {
|
||||||
|
}
|
||||||
+2
-1
@@ -1,8 +1,9 @@
|
|||||||
package com.dfsek.terra.registry;
|
package com.dfsek.terra.registry.master;
|
||||||
|
|
||||||
import com.dfsek.tectonic.exception.ConfigException;
|
import com.dfsek.tectonic.exception.ConfigException;
|
||||||
import com.dfsek.terra.api.core.TerraPlugin;
|
import com.dfsek.terra.api.core.TerraPlugin;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
|
import com.dfsek.terra.registry.TerraRegistry;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -6,7 +6,7 @@ import com.dfsek.terra.api.math.vector.Location;
|
|||||||
import com.dfsek.terra.api.math.vector.Vector3;
|
import com.dfsek.terra.api.math.vector.Vector3;
|
||||||
import com.dfsek.terra.api.platform.block.BlockData;
|
import com.dfsek.terra.api.platform.block.BlockData;
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
import com.dfsek.terra.api.platform.world.World;
|
||||||
import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper;
|
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
||||||
import com.dfsek.terra.api.world.biome.UserDefinedBiome;
|
import com.dfsek.terra.api.world.biome.UserDefinedBiome;
|
||||||
import com.dfsek.terra.api.world.biome.provider.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.provider.BiomeProvider;
|
||||||
import com.dfsek.terra.api.world.palette.Palette;
|
import com.dfsek.terra.api.world.palette.Palette;
|
||||||
@@ -40,7 +40,7 @@ public class TerraWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isTerraWorld(World w) {
|
public static boolean isTerraWorld(World w) {
|
||||||
return w.getGenerator().getHandle() instanceof GeneratorWrapper;
|
return w.getGenerator().getHandle() instanceof ChunkGenerator;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeProvider getBiomeProvider() {
|
public BiomeProvider getBiomeProvider() {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import com.dfsek.terra.api.platform.block.data.Stairs;
|
|||||||
import com.dfsek.terra.api.platform.block.data.Waterlogged;
|
import com.dfsek.terra.api.platform.block.data.Waterlogged;
|
||||||
import com.dfsek.terra.api.platform.world.BiomeGrid;
|
import com.dfsek.terra.api.platform.world.BiomeGrid;
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
import com.dfsek.terra.api.platform.world.World;
|
||||||
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
import com.dfsek.terra.api.platform.world.generator.ChunkData;
|
||||||
import com.dfsek.terra.api.util.world.PaletteUtil;
|
import com.dfsek.terra.api.util.world.PaletteUtil;
|
||||||
import com.dfsek.terra.api.world.biome.TerraBiome;
|
import com.dfsek.terra.api.world.biome.TerraBiome;
|
||||||
import com.dfsek.terra.api.world.biome.UserDefinedBiome;
|
import com.dfsek.terra.api.world.biome.UserDefinedBiome;
|
||||||
@@ -92,7 +92,7 @@ public class MasterChunkGenerator implements TerraChunkGenerator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings({"try"})
|
@SuppressWarnings({"try"})
|
||||||
public ChunkGenerator.ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkGenerator.ChunkData chunk) {
|
public ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkData chunk) {
|
||||||
TerraWorld tw = main.getWorld(world);
|
TerraWorld tw = main.getWorld(world);
|
||||||
BiomeProvider grid = tw.getBiomeProvider();
|
BiomeProvider grid = tw.getBiomeProvider();
|
||||||
try(ProfileFuture ignore = tw.getProfiler().measure("TotalChunkGenTime")) {
|
try(ProfileFuture ignore = tw.getProfiler().measure("TotalChunkGenTime")) {
|
||||||
@@ -151,7 +151,7 @@ public class MasterChunkGenerator implements TerraChunkGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void prepareBlockPartFloor(BlockData down, BlockData orig, ChunkGenerator.ChunkData chunk, Vector3 block, Map<MaterialData, Palette<BlockData>> slabs,
|
private void prepareBlockPartFloor(BlockData down, BlockData orig, ChunkData chunk, Vector3 block, Map<MaterialData, Palette<BlockData>> slabs,
|
||||||
Map<MaterialData, Palette<BlockData>> stairs, double thresh, Sampler sampler) {
|
Map<MaterialData, Palette<BlockData>> stairs, double thresh, Sampler sampler) {
|
||||||
if(sampler.sample(block.getX(), block.getY() - 0.4, block.getZ()) > thresh) {
|
if(sampler.sample(block.getX(), block.getY() - 0.4, block.getZ()) > thresh) {
|
||||||
if(stairs != null) {
|
if(stairs != null) {
|
||||||
@@ -172,7 +172,7 @@ public class MasterChunkGenerator implements TerraChunkGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void prepareBlockPartCeiling(BlockData up, BlockData orig, ChunkGenerator.ChunkData chunk, Vector3 block, Map<MaterialData, Palette<BlockData>> slabs,
|
private void prepareBlockPartCeiling(BlockData up, BlockData orig, ChunkData chunk, Vector3 block, Map<MaterialData, Palette<BlockData>> slabs,
|
||||||
Map<MaterialData, Palette<BlockData>> stairs, double thresh, Sampler sampler) {
|
Map<MaterialData, Palette<BlockData>> stairs, double thresh, Sampler sampler) {
|
||||||
if(sampler.sample(block.getX(), block.getY() + 0.4, block.getZ()) > thresh) {
|
if(sampler.sample(block.getX(), block.getY() + 0.4, block.getZ()) > thresh) {
|
||||||
if(stairs != null) {
|
if(stairs != null) {
|
||||||
@@ -196,7 +196,7 @@ public class MasterChunkGenerator implements TerraChunkGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean placeStair(BlockData orig, ChunkGenerator.ChunkData chunk, Vector3 block, double thresh, Sampler sampler, Stairs stairNew) {
|
private boolean placeStair(BlockData orig, ChunkData chunk, Vector3 block, double thresh, Sampler sampler, Stairs stairNew) {
|
||||||
|
|
||||||
if(sampler.sample(block.getBlockX() - 0.55, block.getY(), block.getZ()) > thresh) {
|
if(sampler.sample(block.getBlockX() - 0.55, block.getY(), block.getZ()) > thresh) {
|
||||||
|
|
||||||
|
|||||||
@@ -34,10 +34,10 @@ import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader;
|
|||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.config.templates.AbstractableTemplate;
|
import com.dfsek.terra.config.templates.AbstractableTemplate;
|
||||||
import com.dfsek.terra.debug.DebugLogger;
|
import com.dfsek.terra.debug.DebugLogger;
|
||||||
import com.dfsek.terra.registry.AddonRegistry;
|
|
||||||
import com.dfsek.terra.registry.ConfigRegistry;
|
|
||||||
import com.dfsek.terra.registry.config.BiomeRegistry;
|
import com.dfsek.terra.registry.config.BiomeRegistry;
|
||||||
import com.dfsek.terra.registry.config.NoiseRegistry;
|
import com.dfsek.terra.registry.config.NoiseRegistry;
|
||||||
|
import com.dfsek.terra.registry.master.AddonRegistry;
|
||||||
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ import com.dfsek.terra.config.lang.LangUtil;
|
|||||||
import com.dfsek.terra.config.lang.Language;
|
import com.dfsek.terra.config.lang.Language;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.debug.DebugLogger;
|
import com.dfsek.terra.debug.DebugLogger;
|
||||||
import com.dfsek.terra.registry.AddonRegistry;
|
import com.dfsek.terra.registry.master.AddonRegistry;
|
||||||
import com.dfsek.terra.registry.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
import com.dfsek.terra.world.generation.MasterChunkGenerator;
|
import com.dfsek.terra.world.generation.MasterChunkGenerator;
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ import com.dfsek.terra.bukkit.BukkitCommandSender;
|
|||||||
import com.dfsek.terra.bukkit.command.Command;
|
import com.dfsek.terra.bukkit.command.Command;
|
||||||
import com.dfsek.terra.config.lang.LangUtil;
|
import com.dfsek.terra.config.lang.LangUtil;
|
||||||
import com.dfsek.terra.config.pack.ConfigPackTemplate;
|
import com.dfsek.terra.config.pack.ConfigPackTemplate;
|
||||||
import com.dfsek.terra.registry.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
|||||||
+1
-51
@@ -1,20 +1,10 @@
|
|||||||
package com.dfsek.terra.bukkit.generator;
|
package com.dfsek.terra.bukkit.generator;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.block.BlockData;
|
import com.dfsek.terra.api.platform.block.BlockData;
|
||||||
import com.dfsek.terra.api.platform.world.BiomeGrid;
|
import com.dfsek.terra.api.platform.world.generator.ChunkData;
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
|
||||||
import com.dfsek.terra.api.platform.world.generator.BlockPopulator;
|
|
||||||
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
|
|
||||||
import com.dfsek.terra.bukkit.world.BukkitBiomeGrid;
|
|
||||||
import com.dfsek.terra.bukkit.world.BukkitWorld;
|
|
||||||
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
|
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockData;
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class BukkitChunkGenerator implements com.dfsek.terra.api.platform.world.generator.ChunkGenerator {
|
public class BukkitChunkGenerator implements com.dfsek.terra.api.platform.world.generator.ChunkGenerator {
|
||||||
private final ChunkGenerator delegate;
|
private final ChunkGenerator delegate;
|
||||||
@@ -28,46 +18,6 @@ public class BukkitChunkGenerator implements com.dfsek.terra.api.platform.world.
|
|||||||
return delegate;
|
return delegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isParallelCapable() {
|
|
||||||
return delegate.isParallelCapable();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateCaves() {
|
|
||||||
return delegate.shouldGenerateCaves();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateDecorations() {
|
|
||||||
return delegate.shouldGenerateDecorations();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateMobs() {
|
|
||||||
return delegate.shouldGenerateMobs();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateStructures() {
|
|
||||||
return delegate.shouldGenerateStructures();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) {
|
|
||||||
return new BukkitChunkData(delegate.generateChunkData(((BukkitWorld) world).getHandle(), random, x, z, ((BukkitBiomeGrid) biome).getHandle()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BlockPopulator> getDefaultPopulators(World world) {
|
|
||||||
return delegate.getDefaultPopulators(((BukkitWorld) world).getHandle()).stream().map(BukkitPopulator::new).collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable TerraChunkGenerator getTerraGenerator() {
|
|
||||||
return delegate instanceof BukkitChunkGeneratorWrapper ? ((BukkitChunkGeneratorWrapper) delegate).getHandle() : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class BukkitChunkData implements ChunkData {
|
public static class BukkitChunkData implements ChunkData {
|
||||||
|
|
||||||
private final ChunkGenerator.ChunkData delegate;
|
private final ChunkGenerator.ChunkData delegate;
|
||||||
|
|||||||
+2
-3
@@ -2,7 +2,6 @@ package com.dfsek.terra.bukkit.generator;
|
|||||||
|
|
||||||
import com.dfsek.terra.api.core.TerraPlugin;
|
import com.dfsek.terra.api.core.TerraPlugin;
|
||||||
import com.dfsek.terra.api.platform.world.Chunk;
|
import com.dfsek.terra.api.platform.world.Chunk;
|
||||||
import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper;
|
|
||||||
import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
|
import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
|
||||||
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
|
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
|
||||||
import com.dfsek.terra.bukkit.population.PopulationManager;
|
import com.dfsek.terra.bukkit.population.PopulationManager;
|
||||||
@@ -32,7 +31,7 @@ import java.util.Random;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper {
|
public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements com.dfsek.terra.api.platform.world.generator.ChunkGenerator {
|
||||||
|
|
||||||
private static final Map<com.dfsek.terra.api.platform.world.World, PopulationManager> popMap = new HashMap<>();
|
private static final Map<com.dfsek.terra.api.platform.world.World, PopulationManager> popMap = new HashMap<>();
|
||||||
|
|
||||||
@@ -123,7 +122,7 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Gener
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldGenerateStructures() {
|
public boolean shouldGenerateStructures() {
|
||||||
return super.shouldGenerateStructures();
|
return delegate.shouldGenerateStructures();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ import com.dfsek.terra.fabric.world.FabricWorldHandle;
|
|||||||
import com.dfsek.terra.fabric.world.TerraBiomeSource;
|
import com.dfsek.terra.fabric.world.TerraBiomeSource;
|
||||||
import com.dfsek.terra.fabric.world.features.PopulatorFeature;
|
import com.dfsek.terra.fabric.world.features.PopulatorFeature;
|
||||||
import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper;
|
import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper;
|
||||||
import com.dfsek.terra.registry.AddonRegistry;
|
import com.dfsek.terra.registry.master.AddonRegistry;
|
||||||
import com.dfsek.terra.registry.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
@@ -200,7 +200,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
return debugLogger;
|
return debugLogger;
|
||||||
}
|
}
|
||||||
|
|
||||||
Transformer<String, Biome> biomeFixer = new Transformer.Builder<String, Biome>()
|
private Transformer<String, Biome> biomeFixer = new Transformer.Builder<String, Biome>()
|
||||||
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse(id)), new NotNullValidator<>())
|
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse(id)), new NotNullValidator<>())
|
||||||
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse("minecraft:" + id.toLowerCase())), new NotNullValidator<>()).build();
|
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse("minecraft:" + id.toLowerCase())), new NotNullValidator<>()).build();
|
||||||
|
|
||||||
@@ -286,7 +286,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
|||||||
Registry.register(Registry.CHUNK_GENERATOR, new Identifier("terra:terra"), FabricChunkGeneratorWrapper.CODEC);
|
Registry.register(Registry.CHUNK_GENERATOR, new Identifier("terra:terra"), FabricChunkGeneratorWrapper.CODEC);
|
||||||
Registry.register(Registry.BIOME_SOURCE, new Identifier("terra:terra"), TerraBiomeSource.CODEC);
|
Registry.register(Registry.BIOME_SOURCE, new Identifier("terra:terra"), TerraBiomeSource.CODEC);
|
||||||
|
|
||||||
if(FabricLoader.getInstance().getEnvironmentType().equals(EnvType.CLIENT)) {
|
if(FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) {
|
||||||
GeneratorTypeAccessor.getValues().add(new GeneratorType("terra") {
|
GeneratorTypeAccessor.getValues().add(new GeneratorType("terra") {
|
||||||
@Override
|
@Override
|
||||||
protected ChunkGenerator getChunkGenerator(Registry<Biome> biomeRegistry, Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry, long seed) {
|
protected ChunkGenerator getChunkGenerator(Registry<Biome> biomeRegistry, Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry, long seed) {
|
||||||
|
|||||||
+2
-2
@@ -1,13 +1,13 @@
|
|||||||
package com.dfsek.terra.fabric.world.generator;
|
package com.dfsek.terra.fabric.world.generator;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.block.BlockData;
|
import com.dfsek.terra.api.platform.block.BlockData;
|
||||||
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
import com.dfsek.terra.api.platform.world.generator.ChunkData;
|
||||||
import com.dfsek.terra.fabric.world.block.FabricBlockData;
|
import com.dfsek.terra.fabric.world.block.FabricBlockData;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.chunk.Chunk;
|
import net.minecraft.world.chunk.Chunk;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class FabricChunkData implements ChunkGenerator.ChunkData {
|
public class FabricChunkData implements ChunkData {
|
||||||
private final Chunk handle;
|
private final Chunk handle;
|
||||||
|
|
||||||
public FabricChunkData(Chunk handle) {
|
public FabricChunkData(Chunk handle) {
|
||||||
|
|||||||
-50
@@ -1,15 +1,6 @@
|
|||||||
package com.dfsek.terra.fabric.world.generator;
|
package com.dfsek.terra.fabric.world.generator;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.world.BiomeGrid;
|
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
|
||||||
import com.dfsek.terra.api.platform.world.generator.BlockPopulator;
|
|
||||||
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
||||||
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
public class FabricChunkGenerator implements ChunkGenerator {
|
public class FabricChunkGenerator implements ChunkGenerator {
|
||||||
private final net.minecraft.world.gen.chunk.ChunkGenerator delegate;
|
private final net.minecraft.world.gen.chunk.ChunkGenerator delegate;
|
||||||
@@ -18,47 +9,6 @@ public class FabricChunkGenerator implements ChunkGenerator {
|
|||||||
this.delegate = delegate;
|
this.delegate = delegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isParallelCapable() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateCaves() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateDecorations() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateMobs() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateStructures() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BlockPopulator> getDefaultPopulators(World world) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable TerraChunkGenerator getTerraGenerator() {
|
|
||||||
if(delegate instanceof FabricChunkGeneratorWrapper) return ((FabricChunkGeneratorWrapper) delegate).getHandle();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public net.minecraft.world.gen.chunk.ChunkGenerator getHandle() {
|
public net.minecraft.world.gen.chunk.ChunkGenerator getHandle() {
|
||||||
return delegate;
|
return delegate;
|
||||||
|
|||||||
+1
-2
@@ -1,6 +1,5 @@
|
|||||||
package com.dfsek.terra.fabric.world.generator;
|
package com.dfsek.terra.fabric.world.generator;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.world.generator.GeneratorWrapper;
|
|
||||||
import com.dfsek.terra.api.util.FastRandom;
|
import com.dfsek.terra.api.util.FastRandom;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.fabric.TerraFabricPlugin;
|
import com.dfsek.terra.fabric.TerraFabricPlugin;
|
||||||
@@ -30,7 +29,7 @@ import net.minecraft.world.gen.chunk.ChunkGenerator;
|
|||||||
import net.minecraft.world.gen.chunk.StructuresConfig;
|
import net.minecraft.world.gen.chunk.StructuresConfig;
|
||||||
import net.minecraft.world.gen.chunk.VerticalBlockSample;
|
import net.minecraft.world.gen.chunk.VerticalBlockSample;
|
||||||
|
|
||||||
public class FabricChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper {
|
public class FabricChunkGeneratorWrapper extends ChunkGenerator implements com.dfsek.terra.api.platform.world.generator.ChunkGenerator {
|
||||||
private final long seed;
|
private final long seed;
|
||||||
private final MasterChunkGenerator delegate;
|
private final MasterChunkGenerator delegate;
|
||||||
private final TerraBiomeSource biomeSource;
|
private final TerraBiomeSource biomeSource;
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ import com.dfsek.terra.config.lang.Language;
|
|||||||
import com.dfsek.terra.debug.DebugLogger;
|
import com.dfsek.terra.debug.DebugLogger;
|
||||||
import com.dfsek.terra.platform.RawBiome;
|
import com.dfsek.terra.platform.RawBiome;
|
||||||
import com.dfsek.terra.platform.RawWorldHandle;
|
import com.dfsek.terra.platform.RawWorldHandle;
|
||||||
import com.dfsek.terra.registry.AddonRegistry;
|
import com.dfsek.terra.registry.master.AddonRegistry;
|
||||||
import com.dfsek.terra.registry.ConfigRegistry;
|
import com.dfsek.terra.registry.master.ConfigRegistry;
|
||||||
import com.dfsek.terra.world.TerraWorld;
|
import com.dfsek.terra.world.TerraWorld;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import com.dfsek.terra.api.math.vector.Vector3;
|
|||||||
import com.dfsek.terra.api.platform.block.Block;
|
import com.dfsek.terra.api.platform.block.Block;
|
||||||
import com.dfsek.terra.api.platform.block.BlockData;
|
import com.dfsek.terra.api.platform.block.BlockData;
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
import com.dfsek.terra.api.platform.world.World;
|
||||||
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
import com.dfsek.terra.api.platform.world.generator.ChunkData;
|
||||||
import net.querz.mca.Chunk;
|
import net.querz.mca.Chunk;
|
||||||
import net.querz.nbt.tag.CompoundTag;
|
import net.querz.nbt.tag.CompoundTag;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class DirectChunkData implements ChunkGenerator.ChunkData, com.dfsek.terra.api.platform.world.Chunk {
|
public class DirectChunkData implements ChunkData, com.dfsek.terra.api.platform.world.Chunk {
|
||||||
private final Chunk delegate;
|
private final Chunk delegate;
|
||||||
private final DirectWorld world;
|
private final DirectWorld world;
|
||||||
private final int x;
|
private final int x;
|
||||||
|
|||||||
@@ -1,17 +1,7 @@
|
|||||||
package com.dfsek.terra.platform;
|
package com.dfsek.terra.platform;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.world.BiomeGrid;
|
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
|
||||||
import com.dfsek.terra.api.platform.world.generator.BlockPopulator;
|
|
||||||
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
import com.dfsek.terra.api.platform.world.generator.ChunkGenerator;
|
||||||
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
|
|
||||||
import com.dfsek.terra.world.generation.MasterChunkGenerator;
|
import com.dfsek.terra.world.generation.MasterChunkGenerator;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
public class GenWrapper implements ChunkGenerator {
|
public class GenWrapper implements ChunkGenerator {
|
||||||
private final MasterChunkGenerator generator;
|
private final MasterChunkGenerator generator;
|
||||||
@@ -25,43 +15,4 @@ public class GenWrapper implements ChunkGenerator {
|
|||||||
return generator;
|
return generator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isParallelCapable() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateCaves() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateDecorations() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateMobs() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldGenerateStructures() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) {
|
|
||||||
throw new UnsupportedOperationException(); // gen is directly handled by Generator
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BlockPopulator> getDefaultPopulators(World world) {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable TerraChunkGenerator getTerraGenerator() {
|
|
||||||
return generator;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user