mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-10-26 22:10:22 +00:00
haha yes it works sort of
This commit is contained in:
1 parent
4b2c2d8ba2
commit
c7539dc5dd
9 files changed
+29
-19
No files matched your search
@@ -2,8 +2,8 @@ package com.dfsek.terra;
|
|||||||
|
|
||||||
import com.dfsek.terra.api.gaea.biome.BiomeGrid;
|
import com.dfsek.terra.api.gaea.biome.BiomeGrid;
|
||||||
import com.dfsek.terra.api.generic.TerraPlugin;
|
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||||
import com.dfsek.terra.api.generic.generator.TerraChunkGenerator;
|
|
||||||
import com.dfsek.terra.api.generic.world.World;
|
import com.dfsek.terra.api.generic.world.World;
|
||||||
|
import com.dfsek.terra.api.implementations.bukkit.generator.BukkitChunkGenerator;
|
||||||
import com.dfsek.terra.biome.BiomeZone;
|
import com.dfsek.terra.biome.BiomeZone;
|
||||||
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
|
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
|
||||||
import com.dfsek.terra.biome.grid.master.TerraRadialBiomeGrid;
|
import com.dfsek.terra.biome.grid.master.TerraRadialBiomeGrid;
|
||||||
@@ -55,7 +55,7 @@ public class TerraWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isTerraWorld(World w) {
|
public static boolean isTerraWorld(World w) {
|
||||||
return w.getGenerator() instanceof TerraChunkGenerator;
|
return w.getGenerator() instanceof BukkitChunkGenerator;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TerraBiomeGrid getGrid() {
|
public TerraBiomeGrid getGrid() {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package com.dfsek.terra.api.gaea.profiler;
|
package com.dfsek.terra.api.gaea.profiler;
|
||||||
|
|
||||||
import com.dfsek.terra.api.generic.generator.TerraChunkGenerator;
|
|
||||||
import com.dfsek.terra.api.generic.world.World;
|
import com.dfsek.terra.api.generic.world.World;
|
||||||
|
import com.dfsek.terra.api.implementations.bukkit.generator.BukkitChunkGenerator;
|
||||||
|
import com.dfsek.terra.api.implementations.bukkit.generator.BukkitChunkGeneratorWrapper;
|
||||||
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;
|
||||||
@@ -15,7 +16,7 @@ public class WorldProfiler {
|
|||||||
private boolean isProfiling;
|
private boolean isProfiling;
|
||||||
|
|
||||||
public WorldProfiler(World w) {
|
public WorldProfiler(World w) {
|
||||||
if(!(w.getGenerator() instanceof TerraChunkGenerator))
|
if(!(w.getGenerator() instanceof BukkitChunkGenerator))
|
||||||
throw new IllegalArgumentException("Attempted to instantiate profiler on non-Gaea managed world!");
|
throw new IllegalArgumentException("Attempted to instantiate profiler on non-Gaea managed world!");
|
||||||
this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime")
|
this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime")
|
||||||
.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "ChunkBaseGenTime")
|
.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "ChunkBaseGenTime")
|
||||||
@@ -23,7 +24,7 @@ public class WorldProfiler {
|
|||||||
.addMeasurement(new Measurement(2000000, DataType.PERIOD_MILLISECONDS), "PopulationManagerTime");
|
.addMeasurement(new Measurement(2000000, DataType.PERIOD_MILLISECONDS), "PopulationManagerTime");
|
||||||
isProfiling = false;
|
isProfiling = false;
|
||||||
this.world = w;
|
this.world = w;
|
||||||
((TerraChunkGenerator) w.getGenerator()).attachProfiler(this);
|
((BukkitChunkGeneratorWrapper) ((BukkitChunkGenerator) w.getGenerator()).getHandle()).getDelegate().attachProfiler(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getResultsFormatted() {
|
public String getResultsFormatted() {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ public interface ChunkGenerator extends Handle {
|
|||||||
|
|
||||||
ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome);
|
ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome);
|
||||||
|
|
||||||
|
|
||||||
List<BlockPopulator> getDefaultPopulators(World world);
|
List<BlockPopulator> getDefaultPopulators(World world);
|
||||||
|
|
||||||
interface ChunkData {
|
interface ChunkData {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public interface TerraChunkGenerator {
|
public interface TerraChunkGenerator {
|
||||||
void generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome, ChunkGenerator.ChunkData data);
|
ChunkGenerator.ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome, ChunkGenerator.ChunkData original);
|
||||||
|
|
||||||
void attachProfiler(WorldProfiler profiler);
|
void attachProfiler(WorldProfiler profiler);
|
||||||
|
|
||||||
@@ -24,4 +24,5 @@ public interface TerraChunkGenerator {
|
|||||||
boolean shouldGenerateStructures();
|
boolean shouldGenerateStructures();
|
||||||
|
|
||||||
ConfigPack getConfigPack();
|
ConfigPack getConfigPack();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -6,11 +6,14 @@ import com.dfsek.terra.api.GenericLoaders;
|
|||||||
import com.dfsek.terra.api.gaea.GaeaPlugin;
|
import com.dfsek.terra.api.gaea.GaeaPlugin;
|
||||||
import com.dfsek.terra.api.gaea.lang.Language;
|
import com.dfsek.terra.api.gaea.lang.Language;
|
||||||
import com.dfsek.terra.api.generic.TerraPlugin;
|
import com.dfsek.terra.api.generic.TerraPlugin;
|
||||||
|
import com.dfsek.terra.api.generic.world.Biome;
|
||||||
import com.dfsek.terra.api.generic.world.World;
|
import com.dfsek.terra.api.generic.world.World;
|
||||||
import com.dfsek.terra.api.generic.world.WorldHandle;
|
import com.dfsek.terra.api.generic.world.WorldHandle;
|
||||||
import com.dfsek.terra.api.generic.world.block.BlockData;
|
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.block.MaterialData;
|
||||||
|
import com.dfsek.terra.api.implementations.bukkit.generator.BukkitChunkGenerator;
|
||||||
import com.dfsek.terra.api.implementations.bukkit.generator.BukkitChunkGeneratorWrapper;
|
import com.dfsek.terra.api.implementations.bukkit.generator.BukkitChunkGeneratorWrapper;
|
||||||
|
import com.dfsek.terra.api.implementations.bukkit.world.BukkitBiome;
|
||||||
import com.dfsek.terra.command.TerraCommand;
|
import com.dfsek.terra.command.TerraCommand;
|
||||||
import com.dfsek.terra.command.structure.LocateCommand;
|
import com.dfsek.terra.command.structure.LocateCommand;
|
||||||
import com.dfsek.terra.config.base.ConfigPack;
|
import com.dfsek.terra.config.base.ConfigPack;
|
||||||
@@ -24,7 +27,6 @@ import com.dfsek.terra.registry.ConfigRegistry;
|
|||||||
import com.dfsek.terra.util.PaperUtil;
|
import com.dfsek.terra.util.PaperUtil;
|
||||||
import org.bstats.bukkit.Metrics;
|
import org.bstats.bukkit.Metrics;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.block.Biome;
|
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
@@ -130,7 +132,8 @@ public class TerraBukkitPlugin extends GaeaPlugin implements TerraPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public TerraWorld getWorld(World w) {
|
public TerraWorld getWorld(World w) {
|
||||||
if(!(w.getGenerator() instanceof TerraChunkGenerator)) throw new IllegalArgumentException("Not a Terra world!");
|
if(!(w.getGenerator() instanceof BukkitChunkGenerator))
|
||||||
|
throw new IllegalArgumentException("Not a Terra world! " + w.getGenerator());
|
||||||
if(!worlds.containsKey(w.getName())) {
|
if(!worlds.containsKey(w.getName())) {
|
||||||
getLogger().warning("Unexpected world load detected: \"" + w.getName() + "\"");
|
getLogger().warning("Unexpected world load detected: \"" + w.getName() + "\"");
|
||||||
return new TerraWorld(w, ((TerraChunkGenerator) w.getGenerator()).getConfigPack(), this);
|
return new TerraWorld(w, ((TerraChunkGenerator) w.getGenerator()).getConfigPack(), this);
|
||||||
@@ -151,9 +154,10 @@ public class TerraBukkitPlugin extends GaeaPlugin implements TerraPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(TypeRegistry registry) {
|
public void register(TypeRegistry registry) {
|
||||||
registry.registerLoader(Biome.class, (t, o, l) -> Biome.valueOf((String) o))
|
registry
|
||||||
.registerLoader(BlockData.class, (t, o, l) -> handle.createBlockData((String) o))
|
.registerLoader(BlockData.class, (t, o, l) -> handle.createBlockData((String) o))
|
||||||
.registerLoader(MaterialData.class, (t, o, l) -> handle.createMaterialData((String) o))
|
.registerLoader(MaterialData.class, (t, o, l) -> handle.createMaterialData((String) o))
|
||||||
|
.registerLoader(Biome.class, (t, o, l) -> new BukkitBiome(org.bukkit.block.Biome.valueOf((String) o)))
|
||||||
.registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o));
|
.registerLoader(EntityType.class, (t, o, l) -> EntityType.valueOf((String) o));
|
||||||
genericLoaders.register(registry);
|
genericLoaders.register(registry);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-3
@@ -19,8 +19,11 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator {
|
|||||||
@Override
|
@Override
|
||||||
public @NotNull ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) {
|
public @NotNull ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) {
|
||||||
BukkitWorld bukkitWorld = new BukkitWorld(world);
|
BukkitWorld bukkitWorld = new BukkitWorld(world);
|
||||||
BukkitChunkGenerator.BukkitChunkData data = new BukkitChunkGenerator.BukkitChunkData(createChunkData(world));
|
|
||||||
delegate.generateChunkData(bukkitWorld, random, x, z, new BukkitBiomeGrid(biome), new BukkitChunkGenerator.BukkitChunkData(createChunkData(bukkitWorld.getHandle())));
|
return (ChunkData) delegate.generateChunkData(bukkitWorld, random, x, z, new BukkitBiomeGrid(biome), new BukkitChunkGenerator.BukkitChunkData(createChunkData(world))).getHandle();
|
||||||
return data.getHandle();
|
}
|
||||||
|
|
||||||
|
public TerraChunkGenerator getDelegate() {
|
||||||
|
return delegate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,6 @@ import com.dfsek.tectonic.loading.ConfigLoader;
|
|||||||
import com.dfsek.tectonic.loading.TypeLoader;
|
import com.dfsek.tectonic.loading.TypeLoader;
|
||||||
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||||
import com.dfsek.terra.util.MaterialSet;
|
import com.dfsek.terra.util.MaterialSet;
|
||||||
import org.bukkit.Material;
|
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -20,7 +19,7 @@ public class MaterialSetLoader implements TypeLoader<MaterialSet> {
|
|||||||
for(String string : stringData) {
|
for(String string : stringData) {
|
||||||
try {
|
try {
|
||||||
if(string.startsWith("#")) set.addTag(string.substring(1));
|
if(string.startsWith("#")) set.addTag(string.substring(1));
|
||||||
else set.add((MaterialData) configLoader.loadType(Material.class, string));
|
else set.add((MaterialData) configLoader.loadType(MaterialData.class, string));
|
||||||
} catch(NullPointerException e) {
|
} catch(NullPointerException e) {
|
||||||
throw new LoadException("Invalid data identifier \"" + string + "\"", e);
|
throw new LoadException("Invalid data identifier \"" + string + "\"", e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import com.dfsek.terra.api.gaea.math.ProbabilityCollection;
|
|||||||
import com.dfsek.terra.api.gaea.tree.Tree;
|
import com.dfsek.terra.api.gaea.tree.Tree;
|
||||||
import com.dfsek.terra.api.gaea.world.Flora;
|
import com.dfsek.terra.api.gaea.world.Flora;
|
||||||
import com.dfsek.terra.api.gaea.world.palette.Palette;
|
import com.dfsek.terra.api.gaea.world.palette.Palette;
|
||||||
|
import com.dfsek.terra.api.generic.world.block.BlockData;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.data.BlockData;
|
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|||||||
@@ -95,8 +95,8 @@ public class TerraChunkGenerator implements com.dfsek.terra.api.generic.generato
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings({"deprecation", "try"})
|
@SuppressWarnings({"try"})
|
||||||
public void generateChunkData(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, @NotNull BiomeGrid biome, ChunkGenerator.ChunkData chunk) {
|
public ChunkGenerator.ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, @NotNull BiomeGrid biome, ChunkGenerator.ChunkData chunk) {
|
||||||
TerraWorld tw = main.getWorld(world);
|
TerraWorld tw = main.getWorld(world);
|
||||||
com.dfsek.terra.api.gaea.biome.BiomeGrid grid = tw.getGrid();
|
com.dfsek.terra.api.gaea.biome.BiomeGrid grid = tw.getGrid();
|
||||||
try(ProfileFuture ignore = tw.getProfiler().measure("TotalChunkGenTime")) {
|
try(ProfileFuture ignore = tw.getProfiler().measure("TotalChunkGenTime")) {
|
||||||
@@ -105,7 +105,7 @@ public class TerraChunkGenerator implements com.dfsek.terra.api.generic.generato
|
|||||||
interp = new ChunkInterpolator3(world, chunkX, chunkZ, tw.getGrid());
|
interp = new ChunkInterpolator3(world, chunkX, chunkZ, tw.getGrid());
|
||||||
if(needsLoad) load(world); // Load population data for world.
|
if(needsLoad) load(world); // Load population data for world.
|
||||||
|
|
||||||
if(!tw.isSafe()) return;
|
if(!tw.isSafe()) return chunk;
|
||||||
int xOrig = (chunkX << 4);
|
int xOrig = (chunkX << 4);
|
||||||
int zOrig = (chunkZ << 4);
|
int zOrig = (chunkZ << 4);
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ public class TerraChunkGenerator implements com.dfsek.terra.api.generic.generato
|
|||||||
}
|
}
|
||||||
paletteLevel++;
|
paletteLevel++;
|
||||||
} else if(y <= sea) {
|
} else if(y <= sea) {
|
||||||
chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, z + zOrig));
|
//chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, z + zOrig));
|
||||||
if(justSet && c.doSlabs()) {
|
if(justSet && c.doSlabs()) {
|
||||||
SlabUtil.prepareBlockPartCeiling(data, chunk.getBlockData(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler);
|
SlabUtil.prepareBlockPartCeiling(data, chunk.getBlockData(x, y, z), chunk, new Vector3(x, y, z), c.getSlabPalettes(), c.getStairPalettes(), c.getSlabThreshold(), sampler);
|
||||||
}
|
}
|
||||||
@@ -170,6 +170,7 @@ public class TerraChunkGenerator implements com.dfsek.terra.api.generic.generato
|
|||||||
biome.setBiome(x << 2, z << 2, b.getVanillaBiome());
|
biome.setBiome(x << 2, z << 2, b.getVanillaBiome());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return chunk;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user