Implement Block interface

This commit is contained in:
dfsek
2020-12-10 12:28:59 -07:00
parent d9f585e4b2
commit 9f4e120283
6 changed files with 98 additions and 14 deletions

View File

@@ -0,0 +1,27 @@
package com.dfsek.terra.api.bukkit;
import com.dfsek.terra.api.generic.BlockData;
import com.dfsek.terra.api.generic.world.Block;
public class BukkitBlock implements Block {
private final org.bukkit.block.Block delegate;
public BukkitBlock(org.bukkit.block.Block delegate) {
this.delegate = delegate;
}
@Override
public void setBlockData(BlockData data, boolean physics) {
delegate.setBlockData(((BukkitBlockData) data).getHandle(), physics);
}
@Override
public BlockData getBlockData() {
return new BukkitBlockData(delegate.getBlockData());
}
@Override
public Object getHandle() {
return delegate;
}
}

View File

@@ -1,18 +1,19 @@
package com.dfsek.terra.api.bukkit;
import com.dfsek.terra.api.generic.world.WorldHandle;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
public class BukkitWorldHandle implements WorldHandle {
@Override
public void setBlockData(Block block, BlockData data, boolean physics) {
public void setBlockData(Block block, org.bukkit.block.data.BlockData data, boolean physics) {
block.setBlockData(data, physics);
}
@Override
public BlockData getBlockData(Block block) {
public org.bukkit.block.data.BlockData getBlockData(Block block) {
return block.getBlockData();
}
@@ -20,4 +21,9 @@ public class BukkitWorldHandle implements WorldHandle {
public Material getType(Block block) {
return block.getType();
}
@Override
public com.dfsek.terra.api.generic.BlockData createBlockData(String data) {
return new BukkitBlockData(Bukkit.createBlockData(data));
}
}

View File

@@ -4,27 +4,25 @@ import com.dfsek.terra.api.bukkit.BukkitBiomeGrid;
import com.dfsek.terra.api.bukkit.BukkitBlockData;
import com.dfsek.terra.api.bukkit.BukkitWorld;
import com.dfsek.terra.api.generic.BlockData;
import com.dfsek.terra.api.generic.generator.BlockPopulator;
import org.bukkit.World;
import org.bukkit.generator.ChunkGenerator;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Random;
public abstract class BukkitChunkGenerator extends ChunkGenerator implements com.dfsek.terra.api.generic.generator.ChunkGenerator {
public class BukkitChunkGenerator extends ChunkGenerator {
private final com.dfsek.terra.api.generic.generator.ChunkGenerator delegate;
@Override
public ChunkGenerator.@NotNull ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) {
BukkitChunkData data = new BukkitChunkData(createChunkData(((BukkitWorld) world).getHandle()));
generateChunkData(new BukkitWorld(world), random, x, z, new BukkitBiomeGrid(biome), data);
return data.getHandle();
public BukkitChunkGenerator(com.dfsek.terra.api.generic.generator.ChunkGenerator delegate) {
this.delegate = delegate;
}
@Override
public List<BlockPopulator> getDefaultPopulators(com.dfsek.terra.api.generic.world.World world) {
return null;
public @NotNull ChunkData generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome) {
BukkitWorld bukkitWorld = new BukkitWorld(world);
BukkitChunkData data = new BukkitChunkData(createChunkData(world));
delegate.generateChunkData(bukkitWorld, random, x, z, new BukkitBiomeGrid(biome), data);
return data.getHandle();
}
public static class BukkitChunkData implements com.dfsek.terra.api.generic.generator.ChunkGenerator.ChunkData {

View File

@@ -1,6 +1,10 @@
package com.dfsek.terra.api.generic.world;
import com.dfsek.terra.api.generic.BlockData;
import com.dfsek.terra.api.generic.Handle;
public interface Block extends Handle {
void setBlockData(BlockData data, boolean physics);
BlockData getBlockData();
}

View File

@@ -13,4 +13,6 @@ public interface WorldHandle {
BlockData getBlockData(Block block);
Material getType(Block block);
com.dfsek.terra.api.generic.BlockData createBlockData(String data);
}

View File

@@ -0,0 +1,47 @@
package com.dfsek.terra.generation;
import com.dfsek.terra.api.generic.generator.BlockPopulator;
import com.dfsek.terra.api.generic.generator.ChunkGenerator;
import com.dfsek.terra.api.generic.world.BiomeGrid;
import com.dfsek.terra.api.generic.world.World;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Random;
public class ChunkGeneratorImpl implements ChunkGenerator {
@Override
public boolean isParallelCapable() {
return false;
}
@Override
public boolean shouldGenerateCaves() {
return false;
}
@Override
public boolean shouldGenerateDecorations() {
return false;
}
@Override
public boolean shouldGenerateMobs() {
return false;
}
@Override
public boolean shouldGenerateStructures() {
return false;
}
@Override
public void generateChunkData(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome, ChunkData data) {
}
@Override
public List<BlockPopulator> getDefaultPopulators(World world) {
return null;
}
}