mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-08 16:56:07 +00:00
haha yes it works sort of
This commit is contained in:
@@ -2,8 +2,8 @@ package com.dfsek.terra;
|
||||
|
||||
import com.dfsek.terra.api.gaea.biome.BiomeGrid;
|
||||
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.implementations.bukkit.generator.BukkitChunkGenerator;
|
||||
import com.dfsek.terra.biome.BiomeZone;
|
||||
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
|
||||
import com.dfsek.terra.biome.grid.master.TerraRadialBiomeGrid;
|
||||
@@ -55,7 +55,7 @@ public class TerraWorld {
|
||||
}
|
||||
|
||||
public static boolean isTerraWorld(World w) {
|
||||
return w.getGenerator() instanceof TerraChunkGenerator;
|
||||
return w.getGenerator() instanceof BukkitChunkGenerator;
|
||||
}
|
||||
|
||||
public TerraBiomeGrid getGrid() {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
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.implementations.bukkit.generator.BukkitChunkGenerator;
|
||||
import com.dfsek.terra.api.implementations.bukkit.generator.BukkitChunkGeneratorWrapper;
|
||||
import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import net.jafama.FastMath;
|
||||
@@ -15,7 +16,7 @@ public class WorldProfiler {
|
||||
private boolean isProfiling;
|
||||
|
||||
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!");
|
||||
this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime")
|
||||
.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "ChunkBaseGenTime")
|
||||
@@ -23,7 +24,7 @@ public class WorldProfiler {
|
||||
.addMeasurement(new Measurement(2000000, DataType.PERIOD_MILLISECONDS), "PopulationManagerTime");
|
||||
isProfiling = false;
|
||||
this.world = w;
|
||||
((TerraChunkGenerator) w.getGenerator()).attachProfiler(this);
|
||||
((BukkitChunkGeneratorWrapper) ((BukkitChunkGenerator) w.getGenerator()).getHandle()).getDelegate().attachProfiler(this);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
|
||||
List<BlockPopulator> getDefaultPopulators(World world);
|
||||
|
||||
interface ChunkData {
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.util.Random;
|
||||
|
||||
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);
|
||||
|
||||
@@ -24,4 +24,5 @@ public interface TerraChunkGenerator {
|
||||
boolean shouldGenerateStructures();
|
||||
|
||||
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.lang.Language;
|
||||
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.WorldHandle;
|
||||
import com.dfsek.terra.api.generic.world.block.BlockData;
|
||||
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.world.BukkitBiome;
|
||||
import com.dfsek.terra.command.TerraCommand;
|
||||
import com.dfsek.terra.command.structure.LocateCommand;
|
||||
import com.dfsek.terra.config.base.ConfigPack;
|
||||
@@ -24,7 +27,6 @@ import com.dfsek.terra.registry.ConfigRegistry;
|
||||
import com.dfsek.terra.util.PaperUtil;
|
||||
import org.bstats.bukkit.Metrics;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
@@ -130,7 +132,8 @@ public class TerraBukkitPlugin extends GaeaPlugin implements TerraPlugin {
|
||||
}
|
||||
|
||||
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())) {
|
||||
getLogger().warning("Unexpected world load detected: \"" + w.getName() + "\"");
|
||||
return new TerraWorld(w, ((TerraChunkGenerator) w.getGenerator()).getConfigPack(), this);
|
||||
@@ -151,9 +154,10 @@ public class TerraBukkitPlugin extends GaeaPlugin implements TerraPlugin {
|
||||
|
||||
@Override
|
||||
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(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));
|
||||
genericLoaders.register(registry);
|
||||
}
|
||||
|
||||
@@ -19,8 +19,11 @@ public class BukkitChunkGeneratorWrapper extends ChunkGenerator {
|
||||
@Override
|
||||
public @NotNull ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) {
|
||||
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 data.getHandle();
|
||||
|
||||
return (ChunkData) delegate.generateChunkData(bukkitWorld, random, x, z, new BukkitBiomeGrid(biome), new BukkitChunkGenerator.BukkitChunkData(createChunkData(world))).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.terra.api.generic.world.block.MaterialData;
|
||||
import com.dfsek.terra.util.MaterialSet;
|
||||
import org.bukkit.Material;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
@@ -20,7 +19,7 @@ public class MaterialSetLoader implements TypeLoader<MaterialSet> {
|
||||
for(String string : stringData) {
|
||||
try {
|
||||
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) {
|
||||
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.world.Flora;
|
||||
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.block.data.BlockData;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -95,8 +95,8 @@ public class TerraChunkGenerator implements com.dfsek.terra.api.generic.generato
|
||||
|
||||
|
||||
@Override
|
||||
@SuppressWarnings({"deprecation", "try"})
|
||||
public void generateChunkData(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, @NotNull BiomeGrid biome, ChunkGenerator.ChunkData chunk) {
|
||||
@SuppressWarnings({"try"})
|
||||
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);
|
||||
com.dfsek.terra.api.gaea.biome.BiomeGrid grid = tw.getGrid();
|
||||
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());
|
||||
if(needsLoad) load(world); // Load population data for world.
|
||||
|
||||
if(!tw.isSafe()) return;
|
||||
if(!tw.isSafe()) return chunk;
|
||||
int xOrig = (chunkX << 4);
|
||||
int zOrig = (chunkZ << 4);
|
||||
|
||||
@@ -142,7 +142,7 @@ public class TerraChunkGenerator implements com.dfsek.terra.api.generic.generato
|
||||
}
|
||||
paletteLevel++;
|
||||
} 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()) {
|
||||
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());
|
||||
}
|
||||
}
|
||||
return chunk;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user