implement world api changes

This commit is contained in:
dfsek
2021-11-28 12:19:10 -07:00
parent 01f6df4a19
commit 1e9e1dce75
49 changed files with 111 additions and 1428 deletions

View File

@@ -13,14 +13,14 @@ import com.dfsek.terra.api.structure.buffer.Buffer;
import com.dfsek.terra.api.util.Rotation;
import com.dfsek.terra.api.util.StringIdentifiable;
import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.WorldAccess;
import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World;
public interface Structure extends StringIdentifiable {
boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation);
boolean generate(Vector3 location, WorldAccess world, Chunk chunk, Random random, Rotation rotation);
boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions);
boolean generate(Buffer buffer, WorldAccess world, Random random, Rotation rotation, int recursions);
boolean generate(Vector3 location, World world, Random random, Rotation rotation);
boolean generate(Vector3 location, WorldAccess world, Random random, Rotation rotation);
}

View File

@@ -8,12 +8,13 @@
package com.dfsek.terra.api.structure.buffer;
import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.access.WorldAccess;
import org.jetbrains.annotations.ApiStatus.Experimental;
@Experimental
public interface BufferedItem {
void paste(Vector3 origin, World world);
void paste(Vector3 origin, WorldAccess world);
}

View File

@@ -13,6 +13,7 @@ import java.util.Map;
import com.dfsek.terra.api.structure.buffer.Buffer;
import com.dfsek.terra.api.structure.buffer.BufferedItem;
import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.WorldAccess;
import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World;
@@ -25,10 +26,10 @@ import org.jetbrains.annotations.ApiStatus.Experimental;
@Experimental
public class DirectBuffer implements Buffer {
private final Vector3 origin;
private final World target;
private final WorldAccess target;
private final Map<Vector3, String> marks = new LinkedHashMap<>();
public DirectBuffer(Vector3 origin, World target) {
public DirectBuffer(Vector3 origin, WorldAccess target) {
this.origin = origin;
this.target = target;
}

View File

@@ -7,6 +7,8 @@
package com.dfsek.terra.api.structure.buffer.items;
import com.dfsek.terra.api.world.access.WorldAccess;
import org.jetbrains.annotations.ApiStatus.Experimental;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -16,7 +18,7 @@ import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.block.state.properties.base.Properties;
import com.dfsek.terra.api.structure.buffer.BufferedItem;
import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World;
@Experimental
public class BufferedBlock implements BufferedItem {
@@ -35,7 +37,7 @@ public class BufferedBlock implements BufferedItem {
}
@Override
public void paste(Vector3 origin, World world) {
public void paste(Vector3 origin, WorldAccess world) {
try {
BlockState current = world.getBlockData(origin);
if(overwrite || current.isAir()) {

View File

@@ -12,7 +12,8 @@ import java.util.List;
import com.dfsek.terra.api.structure.buffer.BufferedItem;
import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.access.WorldAccess;
import org.jetbrains.annotations.ApiStatus.Experimental;
@@ -23,7 +24,7 @@ public class Cell implements BufferedItem {
private String mark;
@Override
public void paste(Vector3 origin, World world) {
public void paste(Vector3 origin, WorldAccess world) {
items.forEach(item -> item.paste(origin.clone(), world));
}

View File

@@ -9,10 +9,11 @@ package com.dfsek.terra.api.structure.feature;
import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.access.WorldAccess;
public interface Feature {
Structure getStructure(World world, int x, int y, int z);
Structure getStructure(WorldAccess world, int x, int y, int z);
Distributor getDistributor();

View File

@@ -19,5 +19,5 @@ public interface Locator {
return column -> this.getSuitableCoordinates(column).or(that.getSuitableCoordinates(column));
}
BinaryColumn getSuitableCoordinates(Column column);
BinaryColumn getSuitableCoordinates(Column<?> column);
}

View File

@@ -16,14 +16,14 @@ import com.dfsek.terra.api.structure.feature.BinaryColumn;
/**
* A single vertical column of a world.
*/
public interface Column {
public interface Column<T extends WorldAccess> {
int getX();
int getZ();
BlockState getBlock(int y);
World getWorld();
T getWorld();
int getMinY();

View File

@@ -7,10 +7,9 @@
package com.dfsek.terra.api.world.chunk.generation.stage;
import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.access.World;
import com.dfsek.terra.api.world.chunk.generation.ProtoWorld;
public interface GenerationStage {
void populate(World world, Chunk chunk);
void populate(ProtoWorld world);
}