move spawnEntity to WorldAccess

This commit is contained in:
dfsek
2021-11-28 11:35:12 -07:00
parent a52271dfb9
commit b880b6592b
5 changed files with 27 additions and 6 deletions

View File

@@ -17,9 +17,6 @@ import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
public interface World extends WorldAccess {
Entity spawnEntity(Vector3 location, EntityType entityType);
Chunk getChunkAt(int x, int z);
default Chunk getChunkAt(Vector3 location) {

View File

@@ -3,6 +3,8 @@ package com.dfsek.terra.api.world.access;
import com.dfsek.terra.api.Handle;
import com.dfsek.terra.api.block.entity.BlockEntity;
import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType;
import com.dfsek.terra.api.util.vector.Vector3;
@@ -38,4 +40,10 @@ public interface WorldAccess extends Handle {
return getBlockState(position.getBlockX(), position.getBlockY(), position.getBlockZ());
}
int getMinHeight();
default Entity spawnEntity(Vector3 location, EntityType entityType) {
return spawnEntity(location.getX(), location.getY(), location.getZ(), entityType);
}
Entity spawnEntity(double x, double y, double z, EntityType entityType);
}

View File

@@ -31,7 +31,7 @@ import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
public class DummyWorld implements World {
@Override
public Entity spawnEntity(Vector3 location, EntityType entityType) {
public Entity spawnEntity(double x, double y, double z, EntityType entityType) {
throw new UnsupportedOperationException("Cannot spawn entity in DummyWorld");
}

View File

@@ -2,12 +2,19 @@ package com.dfsek.terra.bukkit.world;
import com.dfsek.terra.api.block.entity.BlockEntity;
import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType;
import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.chunk.generation.ProtoWorld;
import com.dfsek.terra.bukkit.BukkitEntity;
import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState;
import com.dfsek.terra.bukkit.world.block.state.BukkitBlockEntity;
import com.dfsek.terra.bukkit.world.entity.BukkitEntityType;
import org.bukkit.Location;
import org.bukkit.generator.LimitedRegion;
@@ -54,6 +61,13 @@ public class BukkitProtoWorld implements ProtoWorld {
return delegate.getWorld().getMinHeight();
}
@Override
public Entity spawnEntity(double x, double y, double z, EntityType entityType) {
return new BukkitEntity(
delegate.spawnEntity(new Location(delegate.getWorld(), x, y, z), ((BukkitEntityType) entityType).getHandle()));
}
@Override
public int centerChunkX() {
return delegate.getCenterChunkX();

View File

@@ -35,6 +35,8 @@ import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper;
import com.dfsek.terra.bukkit.world.block.state.BukkitBlockEntity;
import com.dfsek.terra.bukkit.world.entity.BukkitEntityType;
import org.bukkit.Location;
public class BukkitWorld implements World {
private final org.bukkit.World delegate;
@@ -56,9 +58,9 @@ public class BukkitWorld implements World {
}
@Override
public Entity spawnEntity(Vector3 location, EntityType entityType) {
public Entity spawnEntity(double x, double y, double z, EntityType entityType) {
return new BukkitEntity(
delegate.spawnEntity(BukkitAdapter.adapt(location).toLocation(delegate), ((BukkitEntityType) entityType).getHandle()));
delegate.spawnEntity(new Location(delegate, x, y, z), ((BukkitEntityType) entityType).getHandle()));
}
@Override