diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/access/World.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/access/World.java index a8a6e180d..182c6b481 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/access/World.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/access/World.java @@ -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) { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/access/WorldAccess.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/access/WorldAccess.java index 64d030d7f..206a66752 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/access/WorldAccess.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/access/WorldAccess.java @@ -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); } diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/base/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index d74cdc93c..1ad958991 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -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"); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java index c3b8037e3..f47404fe0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java @@ -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(); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 8009b2e2b..c69f42cb2 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -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