From a52271dfb936724bf6fc9650aabb5000f00b96fb Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 27 Nov 2021 17:25:55 -0700 Subject: [PATCH] implement BukkitProtoWorld --- .../world/chunk/generation/ProtoWorld.java | 3 + .../generator/BukkitPopulatorWrapper.java | 7 ++ .../terra/bukkit/world/BukkitProtoWorld.java | 66 +++++++++++++++++++ .../dfsek/terra/bukkit/world/BukkitWorld.java | 4 -- 4 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/chunk/generation/ProtoWorld.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/chunk/generation/ProtoWorld.java index 3bfd8c249..080d9fb0d 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/chunk/generation/ProtoWorld.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/chunk/generation/ProtoWorld.java @@ -4,4 +4,7 @@ import com.dfsek.terra.api.world.access.WorldAccess; public interface ProtoWorld extends WorldAccess { + int centerChunkX(); + + int centerChunkZ(); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java index 62f38b26c..5255cf19b 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java @@ -20,6 +20,8 @@ package com.dfsek.terra.bukkit.generator; import org.bukkit.Chunk; import org.bukkit.World; import org.bukkit.generator.BlockPopulator; +import org.bukkit.generator.LimitedRegion; +import org.bukkit.generator.WorldInfo; import org.jetbrains.annotations.NotNull; import java.util.Random; @@ -44,4 +46,9 @@ public class BukkitPopulatorWrapper extends BlockPopulator { } }); } + + @Override + public void populate(@NotNull WorldInfo worldInfo, @NotNull Random random, int x, int z, @NotNull LimitedRegion limitedRegion) { + super.populate(worldInfo, random, x, z, limitedRegion); + } } 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 new file mode 100644 index 000000000..c3b8037e3 --- /dev/null +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitProtoWorld.java @@ -0,0 +1,66 @@ +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.world.chunk.generation.ProtoWorld; + +import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; + +import com.dfsek.terra.bukkit.world.block.state.BukkitBlockEntity; + +import org.bukkit.generator.LimitedRegion; + + +public class BukkitProtoWorld implements ProtoWorld { + private final LimitedRegion delegate; + + public BukkitProtoWorld(LimitedRegion delegate) { this.delegate = delegate; } + + @Override + public LimitedRegion getHandle() { + return delegate; + } + + @Override + public void setBlockData(int x, int y, int z, BlockState data, boolean physics) { + delegate.setBlockData(x, y, z, BukkitAdapter.adapt(data)); + if(physics) { + delegate.scheduleBlockUpdate(x, y, z); + } + } + + @Override + public long getSeed() { + return delegate.getWorld().getSeed(); + } + + @Override + public int getMaxHeight() { + return delegate.getWorld().getMaxHeight(); + } + + @Override + public BlockState getBlockData(int x, int y, int z) { + return BukkitBlockState.newInstance(delegate.getBlockData(x, y, z)); + } + + @Override + public BlockEntity getBlockState(int x, int y, int z) { + return BukkitBlockEntity.newInstance(delegate.getBlockState(x, y, z)); + } + + @Override + public int getMinHeight() { + return delegate.getWorld().getMinHeight(); + } + + @Override + public int centerChunkX() { + return delegate.getCenterChunkX(); + } + + @Override + public int centerChunkZ() { + return delegate.getCenterChunkZ(); + } +} 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 ceb77d38b..8009b2e2b 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 @@ -43,10 +43,6 @@ public class BukkitWorld implements World { this.delegate = delegate; } - public String getName() { - return delegate.getName(); - } - public UUID getUID() { return delegate.getUID(); }