World -> ServerWorld

This commit is contained in:
dfsek
2021-11-28 16:36:29 -07:00
parent da34aeed42
commit 4287ff8a3c
37 changed files with 122 additions and 122 deletions
@@ -7,6 +7,7 @@
package com.dfsek.terra.addons.chunkgenerator.generation.generators; package com.dfsek.terra.addons.chunkgenerator.generation.generators;
import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.access.WritableWorld; import com.dfsek.terra.api.world.access.WritableWorld;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -23,7 +24,6 @@ import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
import com.dfsek.terra.api.util.math.Sampler; import com.dfsek.terra.api.util.math.Sampler;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.biome.GenerationSettings;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
@@ -99,7 +99,7 @@ public class NoiseChunkGenerator3D implements ChunkGenerator {
} }
@Override @Override
public Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, World world, int elevationSmooth) { public Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, ServerWorld world, int elevationSmooth) {
return new Sampler3D(chunkX, chunkZ, provider, world, elevationSmooth); return new Sampler3D(chunkX, chunkZ, provider, world, elevationSmooth);
} }
@@ -119,7 +119,7 @@ public class NoiseChunkGenerator3D implements ChunkGenerator {
} }
@Override @Override
public BlockState getBlock(World world, int x, int y, int z) { public BlockState getBlock(ServerWorld world, int x, int y, int z) {
BiomeProvider provider = world.getBiomeProvider(); BiomeProvider provider = world.getBiomeProvider();
TerraBiome biome = provider.getBiome(x, z, world.getSeed()); TerraBiome biome = provider.getBiome(x, z, world.getSeed());
Sampler sampler = world.getConfig().getSamplerCache().get(x, z); Sampler sampler = world.getConfig().getSamplerCache().get(x, z);
@@ -7,6 +7,7 @@
package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation;
import com.dfsek.terra.api.world.access.ServerWorld;
import net.jafama.FastMath; import net.jafama.FastMath;
import java.util.HashMap; import java.util.HashMap;
@@ -15,7 +16,6 @@ import java.util.function.BiFunction;
import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.api.util.mutable.MutableInteger;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.biome.GenerationSettings;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.ChunkInterpolator; import com.dfsek.terra.api.world.generator.ChunkInterpolator;
@@ -36,7 +36,7 @@ public class ChunkInterpolator2D implements ChunkInterpolator {
* @param chunkZ Z coordinate of the chunk. * @param chunkZ Z coordinate of the chunk.
* @param provider Biome Provider to use for biome fetching. * @param provider Biome Provider to use for biome fetching.
*/ */
public ChunkInterpolator2D(World w, int chunkX, int chunkZ, BiomeProvider provider, public ChunkInterpolator2D(ServerWorld w, int chunkX, int chunkZ, BiomeProvider provider,
BiFunction<GenerationSettings, Vector3, Double> noiseGetter) { BiFunction<GenerationSettings, Vector3, Double> noiseGetter) {
this.noiseGetter = noiseGetter; this.noiseGetter = noiseGetter;
int xOrigin = chunkX << 4; int xOrigin = chunkX << 4;
@@ -7,6 +7,7 @@
package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation;
import com.dfsek.terra.api.world.access.ServerWorld;
import net.jafama.FastMath; import net.jafama.FastMath;
import java.util.HashMap; import java.util.HashMap;
@@ -15,7 +16,6 @@ import java.util.function.BiFunction;
import com.dfsek.terra.api.util.mutable.MutableInteger; import com.dfsek.terra.api.util.mutable.MutableInteger;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.biome.GenerationSettings;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.ChunkInterpolator; import com.dfsek.terra.api.world.generator.ChunkInterpolator;
@@ -39,7 +39,7 @@ public class ChunkInterpolator3D implements ChunkInterpolator {
* @param chunkZ Z coordinate of the chunk. * @param chunkZ Z coordinate of the chunk.
* @param provider Biome Provider to use for biome fetching. * @param provider Biome Provider to use for biome fetching.
*/ */
public ChunkInterpolator3D(World w, int chunkX, int chunkZ, BiomeProvider provider, public ChunkInterpolator3D(ServerWorld w, int chunkX, int chunkZ, BiomeProvider provider,
BiFunction<GenerationSettings, Vector3, Double> noiseGetter) { BiFunction<GenerationSettings, Vector3, Double> noiseGetter) {
this.noiseGetter = noiseGetter; this.noiseGetter = noiseGetter;
int xOrigin = chunkX << 4; int xOrigin = chunkX << 4;
@@ -7,7 +7,7 @@
package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.biome.GenerationSettings; import com.dfsek.terra.api.world.biome.GenerationSettings;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
@@ -15,7 +15,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
public class ElevationInterpolator { public class ElevationInterpolator {
private final double[][] values = new double[18][18]; private final double[][] values = new double[18][18];
public ElevationInterpolator(World world, int chunkX, int chunkZ, BiomeProvider provider, int smooth) { public ElevationInterpolator(ServerWorld world, int chunkX, int chunkZ, BiomeProvider provider, int smooth) {
int xOrigin = chunkX << 4; int xOrigin = chunkX << 4;
int zOrigin = chunkZ << 4; int zOrigin = chunkZ << 4;
@@ -7,12 +7,12 @@
package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers; package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers;
import com.dfsek.terra.api.world.access.ServerWorld;
import net.jafama.FastMath; import net.jafama.FastMath;
import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ChunkInterpolator3D; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ChunkInterpolator3D;
import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ElevationInterpolator; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ElevationInterpolator;
import com.dfsek.terra.api.util.math.Sampler; import com.dfsek.terra.api.util.math.Sampler;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
@@ -20,7 +20,7 @@ public class Sampler3D implements Sampler {
private final ChunkInterpolator3D interpolator; private final ChunkInterpolator3D interpolator;
private final ElevationInterpolator elevationInterpolator; private final ElevationInterpolator elevationInterpolator;
public Sampler3D(int x, int z, BiomeProvider provider, World world, int elevationSmooth) { public Sampler3D(int x, int z, BiomeProvider provider, ServerWorld world, int elevationSmooth) {
this.interpolator = new ChunkInterpolator3D(world, x, z, provider, (generator, coord) -> generator.getBaseSampler() this.interpolator = new ChunkInterpolator3D(world, x, z, provider, (generator, coord) -> generator.getBaseSampler()
.noise(coord, .noise(coord,
world.getSeed())); world.getSeed()));
@@ -7,13 +7,14 @@
package com.dfsek.terra.addons.biome.command.biome; package com.dfsek.terra.addons.biome.command.biome;
import com.dfsek.terra.api.world.access.ServerWorld;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
@@ -29,12 +30,12 @@ public class AsyncBiomeFinder implements Runnable {
protected final int maxRadius; protected final int maxRadius;
protected final int centerX; protected final int centerX;
protected final int centerZ; protected final int centerZ;
protected final World world; protected final ServerWorld world;
protected final Platform platform; protected final Platform platform;
private final Consumer<Vector3> callback; private final Consumer<Vector3> callback;
protected int searchSize = 1; protected int searchSize = 1;
public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Vector3 origin, ServerWorld world, int startRadius, int maxRadius,
Consumer<Vector3> callback, Platform platform) { Consumer<Vector3> callback, Platform platform) {
this.provider = provider; this.provider = provider;
this.target = target; this.target = target;
@@ -105,7 +106,7 @@ public class AsyncBiomeFinder implements Runnable {
return target; return target;
} }
public World getWorld() { public ServerWorld getWorld() {
return world; return world;
} }
@@ -7,6 +7,8 @@
package com.dfsek.terra.addons.structure.command; package com.dfsek.terra.addons.structure.command;
import com.dfsek.terra.api.world.access.ServerWorld;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -14,7 +16,6 @@ import java.util.function.Consumer;
import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.structure.configured.ConfiguredStructure; import com.dfsek.terra.api.structure.configured.ConfiguredStructure;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
@@ -25,12 +26,12 @@ public class AsyncStructureFinder implements Runnable {
protected final int maxRadius; protected final int maxRadius;
protected final int centerX; protected final int centerX;
protected final int centerZ; protected final int centerZ;
protected final World world; protected final ServerWorld world;
protected final Platform platform; protected final Platform platform;
private final Consumer<Vector3> callback; private final Consumer<Vector3> callback;
protected int searchSize = 1; protected int searchSize = 1;
public AsyncStructureFinder(BiomeProvider provider, ConfiguredStructure target, @NotNull Vector3 origin, World world, int startRadius, public AsyncStructureFinder(BiomeProvider provider, ConfiguredStructure target, @NotNull Vector3 origin, ServerWorld world, int startRadius,
int maxRadius, Consumer<Vector3> callback, Platform platform) { int maxRadius, Consumer<Vector3> callback, Platform platform) {
//setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); //setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation());
this.provider = provider; this.provider = provider;
@@ -99,7 +100,7 @@ public class AsyncStructureFinder implements Runnable {
return target; return target;
} }
public World getWorld() { public ServerWorld getWorld() {
return world; return world;
} }
@@ -10,8 +10,8 @@ package com.dfsek.terra.addons.terrascript.buffer;
import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.Buffer;
import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.structure.buffer.BufferedItem;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World;
public class IntermediateBuffer implements Buffer { public class IntermediateBuffer implements Buffer {
@@ -29,7 +29,7 @@ public class IntermediateBuffer implements Buffer {
} }
@Override @Override
public void paste(Vector3 origin, World world) { public void paste(Vector3 origin, ServerWorld world) {
// no-op // no-op
} }
@@ -7,6 +7,7 @@
package com.dfsek.terra.addons.terrascript.script; package com.dfsek.terra.addons.terrascript.script;
import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.access.WritableWorld; import com.dfsek.terra.api.world.access.WritableWorld;
import com.google.common.cache.Cache; import com.google.common.cache.Cache;
@@ -53,7 +54,6 @@ import com.dfsek.terra.api.structure.buffer.buffers.StructureBuffer;
import com.dfsek.terra.api.util.Rotation; import com.dfsek.terra.api.util.Rotation;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -164,7 +164,7 @@ public class StructureScript implements Structure {
} }
@SuppressWarnings("try") @SuppressWarnings("try")
public boolean test(Vector3 location, World world, Random random, Rotation rotation) { public boolean test(Vector3 location, ServerWorld world, Random random, Rotation rotation) {
try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_test:" + id)) { try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_test:" + id)) {
StructureBuffer buffer = computeBuffer(location, world, random, rotation); StructureBuffer buffer = computeBuffer(location, world, random, rotation);
return buffer.succeeded(); return buffer.succeeded();
@@ -21,14 +21,14 @@ import com.dfsek.terra.api.tectonic.LoaderHolder;
import com.dfsek.terra.api.tectonic.LoaderRegistrar; import com.dfsek.terra.api.tectonic.LoaderRegistrar;
import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.util.StringIdentifiable;
import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.util.reflection.TypeKey;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider;
public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder, StringIdentifiable { public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolder, StringIdentifiable {
WorldConfig toWorldConfig(World world); WorldConfig toWorldConfig(ServerWorld world);
void registerConfigType(ConfigType<?, ?> type, String id, int priority); void registerConfigType(ConfigType<?, ?> type, String id, int priority);
@@ -11,7 +11,7 @@ import java.util.Map;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.util.StringIdentifiable;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.api.world.generator.SamplerCache;
@@ -31,7 +31,7 @@ public interface WorldConfig extends StringIdentifiable {
<T> Registry<T> getRegistry(Class<T> clazz); <T> Registry<T> getRegistry(Class<T> clazz);
World getWorld(); ServerWorld getWorld();
SamplerCache getSamplerCache(); SamplerCache getSamplerCache();
@@ -8,7 +8,7 @@
package com.dfsek.terra.api.entity; package com.dfsek.terra.api.entity;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
public interface Entity extends CommandSender { public interface Entity extends CommandSender {
@@ -16,7 +16,7 @@ public interface Entity extends CommandSender {
void position(Vector3 position); void position(Vector3 position);
void world(World world); void world(ServerWorld world);
World world(); ServerWorld world();
} }
@@ -9,7 +9,7 @@ package com.dfsek.terra.api.structure.buffer;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import org.jetbrains.annotations.ApiStatus.Experimental; import org.jetbrains.annotations.ApiStatus.Experimental;
@@ -18,7 +18,7 @@ import org.jetbrains.annotations.ApiStatus.Experimental;
public interface Buffer { public interface Buffer {
void paste(Vector3 origin, Chunk chunk); void paste(Vector3 origin, Chunk chunk);
void paste(Vector3 origin, World world); void paste(Vector3 origin, ServerWorld world);
Buffer addItem(BufferedItem item, Vector3 location); Buffer addItem(BufferedItem item, Vector3 location);
@@ -15,7 +15,7 @@ import com.dfsek.terra.api.structure.buffer.BufferedItem;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.WritableWorld; import com.dfsek.terra.api.world.access.WritableWorld;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import org.jetbrains.annotations.ApiStatus.Experimental; import org.jetbrains.annotations.ApiStatus.Experimental;
@@ -40,7 +40,7 @@ public class DirectBuffer implements Buffer {
} }
@Override @Override
public void paste(Vector3 origin, World world) { public void paste(Vector3 origin, ServerWorld world) {
// no-op // no-op
} }
@@ -7,6 +7,8 @@
package com.dfsek.terra.api.structure.buffer.buffers; package com.dfsek.terra.api.structure.buffer.buffers;
import com.dfsek.terra.api.world.access.ServerWorld;
import net.jafama.FastMath; import net.jafama.FastMath;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@@ -17,7 +19,6 @@ import com.dfsek.terra.api.structure.buffer.BufferedItem;
import com.dfsek.terra.api.structure.buffer.items.Cell; import com.dfsek.terra.api.structure.buffer.items.Cell;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World;
import org.jetbrains.annotations.ApiStatus.Experimental; import org.jetbrains.annotations.ApiStatus.Experimental;
@@ -41,7 +42,7 @@ public class StructureBuffer implements Buffer {
})); }));
} }
public void paste(Vector3 origin, World world) { public void paste(Vector3 origin, ServerWorld world) {
bufferedItemMap.forEach(((vector3, item) -> item.paste(origin.clone().add(vector3), world))); bufferedItemMap.forEach(((vector3, item) -> item.paste(origin.clone().add(vector3), world)));
} }
@@ -8,10 +8,10 @@
package com.dfsek.terra.api.world; package com.dfsek.terra.api.world;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.chunk.ChunkAccess; import com.dfsek.terra.api.world.chunk.ChunkAccess;
public interface Carver { public interface Carver {
void carve(World world, int chunkX, int chunkZ, ChunkAccess chunk); void carve(ServerWorld world, int chunkX, int chunkZ, ChunkAccess chunk);
} }
@@ -11,12 +11,12 @@ import java.util.List;
import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.Range;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
public interface Flora { public interface Flora {
boolean plant(Vector3 l, World world); boolean plant(Vector3 l, ServerWorld world);
List<Vector3> getValidSpawnsAt(Chunk chunk, int x, int z, Range check); List<Vector3> getValidSpawnsAt(Chunk chunk, int x, int z, Range check);
} }
@@ -11,7 +11,7 @@ import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
public interface World extends WritableWorld { public interface ServerWorld extends WritableWorld {
Chunk getChunkAt(int x, int z); Chunk getChunkAt(int x, int z);
default Chunk getChunkAt(Vector3 location) { default Chunk getChunkAt(Vector3 location) {
@@ -9,7 +9,7 @@ package com.dfsek.terra.api.world.chunk;
import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -27,5 +27,5 @@ public interface Chunk extends ChunkAccess {
int getZ(); int getZ();
World getWorld(); ServerWorld getWorld();
} }
@@ -9,6 +9,7 @@ package com.dfsek.terra.api.world.chunk.generation;
import com.dfsek.terra.api.util.vector.integer.Vector3Int; import com.dfsek.terra.api.util.vector.integer.Vector3Int;
import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.access.WritableWorld; import com.dfsek.terra.api.world.access.WritableWorld;
import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage;
@@ -21,14 +22,13 @@ import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.util.math.Sampler; import com.dfsek.terra.api.util.math.Sampler;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
public interface ChunkGenerator { public interface ChunkGenerator {
void generateChunkData(@NotNull ProtoChunk chunk, @NotNull WritableWorld world, void generateChunkData(@NotNull ProtoChunk chunk, @NotNull WritableWorld world,
int chunkZ, int chunkX); int chunkZ, int chunkX);
Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, World world, int elevationSmooth); Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, ServerWorld world, int elevationSmooth);
ConfigPack getConfigPack(); ConfigPack getConfigPack();
@@ -36,13 +36,13 @@ public interface ChunkGenerator {
List<GenerationStage> getGenerationStages(); List<GenerationStage> getGenerationStages();
BlockState getBlock(World world, int x, int y, int z); BlockState getBlock(ServerWorld world, int x, int y, int z);
default BlockState getBlock(World world, Vector3 vector3) { default BlockState getBlock(ServerWorld world, Vector3 vector3) {
return getBlock(world, vector3.getBlockX(), vector3.getBlockY(), vector3.getBlockZ()); return getBlock(world, vector3.getBlockX(), vector3.getBlockY(), vector3.getBlockZ());
} }
default BlockState getBlock(World world, Vector3Int vector3) { default BlockState getBlock(ServerWorld world, Vector3Int vector3) {
return getBlock(world, vector3.getX(), vector3.getY(), vector3.getZ()); return getBlock(world, vector3.getX(), vector3.getY(), vector3.getZ());
} }
} }
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.world.chunk.generation; package com.dfsek.terra.api.world.chunk.generation;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.access.WritableWorld; import com.dfsek.terra.api.world.access.WritableWorld;
@@ -15,5 +15,5 @@ public interface ProtoWorld extends WritableWorld {
* <b>Do not read from/write to this world!</b> * <b>Do not read from/write to this world!</b>
* @return The world * @return The world
*/ */
World getWorld(); ServerWorld getWorld();
} }
@@ -22,14 +22,13 @@ import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.config.WorldConfig;
import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.EntityType;
import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
public class DummyWorld implements World { public class DummyServerWorld implements ServerWorld {
@Override @Override
public Entity spawnEntity(double x, double y, double z, EntityType entityType) { public Entity spawnEntity(double x, double y, double z, EntityType entityType) {
throw new UnsupportedOperationException("Cannot spawn entity in DummyWorld"); throw new UnsupportedOperationException("Cannot spawn entity in DummyWorld");
@@ -30,6 +30,9 @@ import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.tectonic.yaml.YamlConfiguration;
import com.dfsek.terra.api.world.access.ServerWorld;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -73,11 +76,10 @@ import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.registry.meta.RegistryFactory;
import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.generic.pair.Pair;
import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.api.util.reflection.ReflectionUtil;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
import com.dfsek.terra.api.world.generator.GenerationStageProvider; import com.dfsek.terra.api.world.generator.GenerationStageProvider;
import com.dfsek.terra.config.dummy.DummyWorld; import com.dfsek.terra.config.dummy.DummyServerWorld;
import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.FolderLoader;
import com.dfsek.terra.config.fileloaders.ZIPLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader;
import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader;
@@ -164,7 +166,7 @@ public class ConfigPackImpl implements ConfigPack {
logger.error("Failed to load config pack from folder \"{}\"", folder.getAbsolutePath(), e); logger.error("Failed to load config pack from folder \"{}\"", folder.getAbsolutePath(), e);
throw e; throw e;
} }
toWorldConfig(new DummyWorld()); // Build now to catch any errors immediately. toWorldConfig(new DummyServerWorld()); // Build now to catch any errors immediately.
} }
public ConfigPackImpl(ZipFile file, Platform platform) throws ConfigException { public ConfigPackImpl(ZipFile file, Platform platform) throws ConfigException {
@@ -218,7 +220,7 @@ public class ConfigPackImpl implements ConfigPack {
throw e; throw e;
} }
toWorldConfig(new DummyWorld()); // Build now to catch any errors immediately. toWorldConfig(new DummyServerWorld()); // Build now to catch any errors immediately.
} }
@Override @Override
@@ -244,7 +246,7 @@ public class ConfigPackImpl implements ConfigPack {
} }
@Override @Override
public WorldConfigImpl toWorldConfig(World world) { public WorldConfigImpl toWorldConfig(ServerWorld world) {
return new WorldConfigImpl(world, this, platform); return new WorldConfigImpl(world, this, platform);
} }
@@ -25,7 +25,7 @@ import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.config.WorldConfig;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.api.world.generator.SamplerCache;
import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl;
@@ -37,12 +37,12 @@ public class WorldConfigImpl implements WorldConfig {
private final BiomeProvider provider; private final BiomeProvider provider;
private final World world; private final ServerWorld world;
private final ConfigPackImpl pack; private final ConfigPackImpl pack;
private final Map<Type, Registry<?>> registryMap = new HashMap<>(); private final Map<Type, Registry<?>> registryMap = new HashMap<>();
public WorldConfigImpl(World world, ConfigPackImpl pack, Platform platform) { public WorldConfigImpl(ServerWorld world, ConfigPackImpl pack, Platform platform) {
this.world = world; this.world = world;
this.pack = pack; this.pack = pack;
this.samplerCache = new SamplerCacheImpl(platform, world); this.samplerCache = new SamplerCacheImpl(platform, world);
@@ -89,7 +89,7 @@ public class WorldConfigImpl implements WorldConfig {
} }
@Override @Override
public World getWorld() { public ServerWorld getWorld() {
return world; return world;
} }
@@ -17,6 +17,7 @@
package com.dfsek.terra.world; package com.dfsek.terra.world;
import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.generator.SamplerCache; import com.dfsek.terra.api.world.generator.SamplerCache;
import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheBuilder;
@@ -28,13 +29,12 @@ import org.jetbrains.annotations.NotNull;
import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.MathUtil;
import com.dfsek.terra.api.util.math.Sampler; import com.dfsek.terra.api.util.math.Sampler;
import com.dfsek.terra.api.world.access.World;
public class SamplerCacheImpl implements SamplerCache { public class SamplerCacheImpl implements SamplerCache {
private final LoadingCache<Long, Sampler> cache; private final LoadingCache<Long, Sampler> cache;
public SamplerCacheImpl(Platform platform, World world) { public SamplerCacheImpl(Platform platform, ServerWorld world) {
cache = CacheBuilder.newBuilder().maximumSize(platform.getTerraConfig().getSamplerCache()) cache = CacheBuilder.newBuilder().maximumSize(platform.getTerraConfig().getSamplerCache())
.build(new CacheLoader<>() { .build(new CacheLoader<>() {
@Override @Override
@@ -21,7 +21,7 @@ import org.bukkit.Location;
import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
@@ -48,14 +48,14 @@ public class BukkitEntity implements Entity {
} }
@Override @Override
public void world(World world) { public void world(ServerWorld world) {
Location newLoc = entity.getLocation().clone(); Location newLoc = entity.getLocation().clone();
newLoc.setWorld(BukkitAdapter.adapt(world)); newLoc.setWorld(BukkitAdapter.adapt(world));
entity.teleport(newLoc); entity.teleport(newLoc);
} }
@Override @Override
public World world() { public ServerWorld world() {
return BukkitAdapter.adapt(entity.getWorld()); return BukkitAdapter.adapt(entity.getWorld());
} }
@@ -21,7 +21,7 @@ import org.bukkit.Location;
import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.entity.Player;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
@@ -49,14 +49,14 @@ public class BukkitPlayer implements Player {
} }
@Override @Override
public void world(World world) { public void world(ServerWorld world) {
Location newLoc = delegate.getLocation().clone(); Location newLoc = delegate.getLocation().clone();
newLoc.setWorld(BukkitAdapter.adapt(world)); newLoc.setWorld(BukkitAdapter.adapt(world));
delegate.teleport(newLoc); delegate.teleport(newLoc);
} }
@Override @Override
public World world() { public ServerWorld world() {
return BukkitAdapter.adapt(delegate.getWorld()); return BukkitAdapter.adapt(delegate.getWorld());
} }
@@ -18,6 +18,8 @@
package com.dfsek.terra.bukkit.world; package com.dfsek.terra.bukkit.world;
import com.dfsek.terra.api.world.access.ServerWorld;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.TreeType; import org.bukkit.TreeType;
@@ -36,7 +38,6 @@ import com.dfsek.terra.api.inventory.ItemStack;
import com.dfsek.terra.api.inventory.item.Enchantment; import com.dfsek.terra.api.inventory.item.Enchantment;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.BukkitEntity;
import com.dfsek.terra.bukkit.BukkitPlayer; import com.dfsek.terra.bukkit.BukkitPlayer;
@@ -173,11 +174,11 @@ public final class BukkitAdapter {
return ((BukkitCommandSender) sender).getHandle(); return ((BukkitCommandSender) sender).getHandle();
} }
public static World adapt(org.bukkit.World world) { public static ServerWorld adapt(org.bukkit.World world) {
return new BukkitWorld(world); return new BukkitServerWorld(world);
} }
public static org.bukkit.World adapt(World world) { public static org.bukkit.World adapt(ServerWorld world) {
return (org.bukkit.World) world.getHandle(); return (org.bukkit.World) world.getHandle();
} }
@@ -22,7 +22,7 @@ import com.dfsek.terra.api.world.chunk.Chunk;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
public class BukkitChunk implements Chunk { public class BukkitChunk implements Chunk {
@@ -63,7 +63,7 @@ public class BukkitChunk implements Chunk {
} }
@Override @Override
public World getWorld() { public ServerWorld getWorld() {
return BukkitAdapter.adapt(delegate.getWorld()); return BukkitAdapter.adapt(delegate.getWorld());
} }
} }
@@ -5,8 +5,7 @@ import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.config.WorldConfig;
import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.EntityType;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
import com.dfsek.terra.api.world.chunk.generation.ProtoWorld; import com.dfsek.terra.api.world.chunk.generation.ProtoWorld;
@@ -99,7 +98,7 @@ public class BukkitProtoWorld implements ProtoWorld {
} }
@Override @Override
public World getWorld() { public ServerWorld getWorld() {
return new BukkitWorld(delegate.getWorld()); return new BukkitServerWorld(delegate.getWorld());
} }
} }
@@ -25,9 +25,8 @@ import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.config.WorldConfig;
import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.EntityType;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
import com.dfsek.terra.bukkit.BukkitEntity; import com.dfsek.terra.bukkit.BukkitEntity;
@@ -38,10 +37,10 @@ import com.dfsek.terra.bukkit.world.entity.BukkitEntityType;
import org.bukkit.Location; import org.bukkit.Location;
public class BukkitWorld implements World { public class BukkitServerWorld implements ServerWorld {
private final org.bukkit.World delegate; private final org.bukkit.World delegate;
public BukkitWorld(org.bukkit.World delegate) { public BukkitServerWorld(org.bukkit.World delegate) {
this.delegate = delegate; this.delegate = delegate;
} }
@@ -125,7 +124,7 @@ public class BukkitWorld implements World {
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if(!(obj instanceof BukkitWorld other)) return false; if(!(obj instanceof BukkitServerWorld other)) return false;
return other.getHandle().equals(delegate); return other.getHandle().equals(delegate);
} }
@@ -17,13 +17,13 @@
package com.dfsek.terra.fabric.generation; package com.dfsek.terra.fabric.generation;
import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.chunk.generation.ProtoWorld; import com.dfsek.terra.api.world.chunk.generation.ProtoWorld;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.entity.SpawnGroup; import net.minecraft.entity.SpawnGroup;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.structure.StructureManager; import net.minecraft.structure.StructureManager;
import net.minecraft.util.collection.Pool; import net.minecraft.util.collection.Pool;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -56,7 +56,6 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.chunk.generation.ProtoChunk; import com.dfsek.terra.api.world.chunk.generation.ProtoChunk;
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
import com.dfsek.terra.api.world.chunk.generation.stage.Chunkified; import com.dfsek.terra.api.world.chunk.generation.stage.Chunkified;
@@ -90,7 +89,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
private final TerraBiomeSource biomeSource; private final TerraBiomeSource biomeSource;
private ChunkGenerator delegate; private ChunkGenerator delegate;
private ConfigPack pack; private ConfigPack pack;
private ServerWorld world; private net.minecraft.server.world.ServerWorld world;
public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) { public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) {
super(biomeSource, new StructuresConfig(false)); super(biomeSource, new StructuresConfig(false));
@@ -228,9 +227,9 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
@Override @Override
public int getHeight(int x, int z, Heightmap.Type heightmap, HeightLimitView heightmapType) { public int getHeight(int x, int z, Heightmap.Type heightmap, HeightLimitView heightmapType) {
int height = ((World) world).getMaxHeight(); int height = ((ServerWorld) world).getMaxHeight();
while(height >= ((World) world).getMinHeight() && !heightmap.getBlockPredicate().test( while(height >= ((ServerWorld) world).getMinHeight() && !heightmap.getBlockPredicate().test(
((FabricBlockState) ((World) world).getGenerator().getBlock((World) world, x, height - 1, z)).getHandle())) { ((FabricBlockState) ((ServerWorld) world).getGenerator().getBlock((ServerWorld) world, x, height - 1, z)).getHandle())) {
height--; height--;
} }
return height; return height;
@@ -240,7 +239,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
public VerticalBlockSample getColumnSample(int x, int z, HeightLimitView view) { public VerticalBlockSample getColumnSample(int x, int z, HeightLimitView view) {
BlockState[] array = new BlockState[view.getHeight()]; BlockState[] array = new BlockState[view.getHeight()];
for(int y = view.getBottomY() + view.getHeight() - 1; y >= view.getBottomY(); y--) { for(int y = view.getBottomY() + view.getHeight() - 1; y >= view.getBottomY(); y--) {
array[y] = ((FabricBlockState) ((World) world).getGenerator().getBlock((World) world, x, y, z)).getHandle(); array[y] = ((FabricBlockState) ((ServerWorld) world).getGenerator().getBlock((ServerWorld) world, x, y, z)).getHandle();
} }
return new VerticalBlockSample(view.getBottomY(), array); return new VerticalBlockSample(view.getBottomY(), array);
} }
@@ -268,7 +267,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
} }
public void setWorld(ServerWorld world) { public void setWorld(net.minecraft.server.world.ServerWorld world) {
this.world = world; this.world = world;
} }
@@ -17,6 +17,7 @@
package com.dfsek.terra.fabric.mixin.implementations.chunk; package com.dfsek.terra.fabric.mixin.implementations.chunk;
import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -29,7 +30,6 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.block.FabricBlockState;
@@ -59,8 +59,8 @@ public abstract class ChunkRegionMixin {
return centerPos.getPos().z; return centerPos.getPos().z;
} }
public World terraChunk$getWorld() { public ServerWorld terraChunk$getWorld() {
return (World) this; return (ServerWorld) this;
} }
// getHandle already added in world/ChunkRegionMixin. // getHandle already added in world/ChunkRegionMixin.
@@ -17,6 +17,7 @@
package com.dfsek.terra.fabric.mixin.implementations.chunk; package com.dfsek.terra.fabric.mixin.implementations.chunk;
import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -31,7 +32,6 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.block.FabricBlockState;
@@ -69,8 +69,8 @@ public abstract class WorldChunkMixin {
return ((net.minecraft.world.chunk.Chunk) (Object) this).getPos().z; return ((net.minecraft.world.chunk.Chunk) (Object) this).getPos().z;
} }
public World terra$getWorld() { public ServerWorld terra$getWorld() {
return (World) world; return (ServerWorld) world;
} }
@Intrinsic @Intrinsic
@@ -30,7 +30,7 @@ import org.spongepowered.asm.mixin.Shadow;
import java.util.UUID; import java.util.UUID;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.fabric.util.FabricAdapter; import com.dfsek.terra.fabric.util.FabricAdapter;
@@ -62,8 +62,8 @@ public abstract class EntityMixin {
teleport(location.getX(), location.getY(), location.getZ()); teleport(location.getX(), location.getY(), location.getZ());
} }
public World terra$world() { public ServerWorld terra$world() {
return (World) world; return (ServerWorld) world;
} }
public void terra$sendMessage(String message) { public void terra$sendMessage(String message) {
@@ -21,7 +21,6 @@ import com.dfsek.terra.api.world.chunk.generation.ProtoWorld;
import net.minecraft.block.FluidBlock; import net.minecraft.block.FluidBlock;
import net.minecraft.fluid.Fluid; import net.minecraft.fluid.Fluid;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ChunkRegion; import net.minecraft.world.ChunkRegion;
import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.ServerWorldAccess;
@@ -48,7 +47,7 @@ import com.dfsek.terra.api.config.WorldConfig;
import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.EntityType;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.block.FabricBlockState;
@@ -64,7 +63,7 @@ public abstract class ChunkRegionMixin {
@Shadow @Shadow
@Final @Final
private ServerWorld world; private net.minecraft.server.world.ServerWorld world;
@Shadow @Shadow
@Final @Final
@@ -79,9 +78,9 @@ public abstract class ChunkRegionMixin {
@Inject(at = @At("RETURN"), @Inject(at = @At("RETURN"),
method = "<init>(Lnet/minecraft/server/world/ServerWorld;Ljava/util/List;Lnet/minecraft/world/chunk/ChunkStatus;I)V") method = "<init>(Lnet/minecraft/server/world/ServerWorld;Ljava/util/List;Lnet/minecraft/world/chunk/ChunkStatus;I)V")
public void injectConstructor(ServerWorld world, List<net.minecraft.world.chunk.Chunk> list, ChunkStatus chunkStatus, int i, public void injectConstructor(net.minecraft.server.world.ServerWorld world, List<net.minecraft.world.chunk.Chunk> list, ChunkStatus chunkStatus, int i,
CallbackInfo ci) { CallbackInfo ci) {
this.config = ((World) world).getConfig(); this.config = ((ServerWorld) world).getConfig();
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@@ -146,8 +145,8 @@ public abstract class ChunkRegionMixin {
return centerPos.getPos().z; return centerPos.getPos().z;
} }
public World terraWorld$getWorld() { public ServerWorld terraWorld$getWorld() {
return (World) world; return (ServerWorld) world;
} }
public WorldConfig terraWorld$getConfig() { public WorldConfig terraWorld$getConfig() {
@@ -20,7 +20,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.server.WorldGenerationProgressListener; import net.minecraft.server.WorldGenerationProgressListener;
import net.minecraft.server.world.ServerChunkManager; import net.minecraft.server.world.ServerChunkManager;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.RegistryKey; import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.ServerWorldAccess;
@@ -49,7 +48,7 @@ import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.EntityType;
import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World; import com.dfsek.terra.api.world.access.ServerWorld;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.block.FabricBlockState;
@@ -58,8 +57,8 @@ import com.dfsek.terra.fabric.generation.TerraBiomeSource;
import com.dfsek.terra.fabric.util.FabricUtil; import com.dfsek.terra.fabric.util.FabricUtil;
@Mixin(ServerWorld.class) @Mixin(net.minecraft.server.world.ServerWorld.class)
@Implements(@Interface(iface = World.class, prefix = "terra$", remap = Interface.Remap.NONE)) @Implements(@Interface(iface = ServerWorld.class, prefix = "terra$", remap = Interface.Remap.NONE))
public abstract class ServerWorldMixin { public abstract class ServerWorldMixin {
private WorldConfig config; private WorldConfig config;
@Shadow @Shadow
@@ -81,20 +80,20 @@ public abstract class ServerWorldMixin {
net.minecraft.world.gen.chunk.ChunkGenerator chunkGenerator, boolean debugWorld, long seed, net.minecraft.world.gen.chunk.ChunkGenerator chunkGenerator, boolean debugWorld, long seed,
List<Spawner> spawners, boolean shouldTickTime, CallbackInfo ci) { List<Spawner> spawners, boolean shouldTickTime, CallbackInfo ci) {
if(chunkGenerator instanceof FabricChunkGeneratorWrapper) { if(chunkGenerator instanceof FabricChunkGeneratorWrapper) {
config = ((FabricChunkGeneratorWrapper) chunkGenerator).getPack().toWorldConfig((World) this); config = ((FabricChunkGeneratorWrapper) chunkGenerator).getPack().toWorldConfig((ServerWorld) this);
} }
} }
public Entity terra$spawnEntity(Vector3 location, EntityType entityType) { public Entity terra$spawnEntity(Vector3 location, EntityType entityType) {
net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType<?>) entityType).create(((ServerWorld) (Object) this)); net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType<?>) entityType).create(((net.minecraft.server.world.ServerWorld) (Object) this));
entity.setPos(location.getX(), location.getY(), location.getZ()); entity.setPos(location.getX(), location.getY(), location.getZ());
((ServerWorld) (Object) this).spawnEntity(entity); ((net.minecraft.server.world.ServerWorld) (Object) this).spawnEntity(entity);
return (Entity) entity; return (Entity) entity;
} }
public void terra$setBlockData(int x, int y, int z, BlockState data, boolean physics) { public void terra$setBlockData(int x, int y, int z, BlockState data, boolean physics) {
BlockPos pos = new BlockPos(x, y, z); BlockPos pos = new BlockPos(x, y, z);
((ServerWorld) (Object) this).setBlockState(pos, ((FabricBlockState) data).getHandle(), physics ? 3 : 1042); ((net.minecraft.server.world.ServerWorld) (Object) this).setBlockState(pos, ((FabricBlockState) data).getHandle(), physics ? 3 : 1042);
} }
@Intrinsic @Intrinsic
@@ -103,15 +102,15 @@ public abstract class ServerWorldMixin {
} }
public int terra$getMaxHeight() { public int terra$getMaxHeight() {
return (((ServerWorld) (Object) this).getBottomY()) + ((ServerWorld) (Object) this).getHeight(); return (((net.minecraft.server.world.ServerWorld) (Object) this).getBottomY()) + ((net.minecraft.server.world.ServerWorld) (Object) this).getHeight();
} }
public Chunk terra$getChunkAt(int x, int z) { public Chunk terra$getChunkAt(int x, int z) {
return (Chunk) ((ServerWorld) (Object) this).getChunk(x, z); return (Chunk) ((net.minecraft.server.world.ServerWorld) (Object) this).getChunk(x, z);
} }
public BlockState terra$getBlockData(int x, int y, int z) { public BlockState terra$getBlockData(int x, int y, int z) {
return new FabricBlockState(((ServerWorld) (Object) this).getBlockState(new BlockPos(x, y, z))); return new FabricBlockState(((net.minecraft.server.world.ServerWorld) (Object) this).getBlockState(new BlockPos(x, y, z)));
} }
public BlockEntity terra$getBlockState(int x, int y, int z) { public BlockEntity terra$getBlockState(int x, int y, int z) {
@@ -119,7 +118,7 @@ public abstract class ServerWorldMixin {
} }
public int terra$getMinHeight() { public int terra$getMinHeight() {
return ((ServerWorld) (Object) this).getBottomY(); return ((net.minecraft.server.world.ServerWorld) (Object) this).getBottomY();
} }
public ChunkGenerator terra$getGenerator() { public ChunkGenerator terra$getGenerator() {
@@ -127,7 +126,7 @@ public abstract class ServerWorldMixin {
} }
public BiomeProvider terra$getBiomeProvider() { public BiomeProvider terra$getBiomeProvider() {
return ((TerraBiomeSource) ((ServerWorld) (Object) this).getChunkManager().getChunkGenerator().getBiomeSource()).getProvider(); return ((TerraBiomeSource) ((net.minecraft.server.world.ServerWorld) (Object) this).getChunkManager().getChunkGenerator().getBiomeSource()).getProvider();
} }
public WorldConfig terra$getConfig() { public WorldConfig terra$getConfig() {