Begin reimplementing agnostic versions of Bukkit classes with delegate implementations

This commit is contained in:
dfsek
2020-12-10 10:19:16 -07:00
parent 75f39640b0
commit 392ba59741
26 changed files with 214 additions and 21 deletions

View File

@@ -0,0 +1,21 @@
package com.dfsek.terra.api.bukkit;
import com.dfsek.terra.api.generic.world.Chunk;
public class BukkitChunk implements Chunk {
private final org.bukkit.Chunk delegate;
public BukkitChunk(org.bukkit.Chunk delegate) {
this.delegate = delegate;
}
@Override
public int getX() {
return delegate.getX();
}
@Override
public int getZ() {
return delegate.getZ();
}
}

View File

@@ -0,0 +1,16 @@
package com.dfsek.terra.api.bukkit;
import com.dfsek.terra.api.generic.world.World;
public class BukkitWorld implements World {
private final org.bukkit.World delegate;
public BukkitWorld(org.bukkit.World delegate) {
this.delegate = delegate;
}
@Override
public long getSeed() {
return delegate.getSeed();
}
}

View File

@@ -0,0 +1,10 @@
package com.dfsek.terra.api.generic.generator;
import com.dfsek.terra.api.generic.world.Chunk;
import com.dfsek.terra.api.generic.world.World;
import java.util.Random;
public abstract class BlockPopulator {
public abstract void populate(World world, Random random, Chunk chunk);
}

View File

@@ -0,0 +1,4 @@
package com.dfsek.terra.api.generic.generator;
public abstract class ChunkGenerator {
}

View File

@@ -0,0 +1,4 @@
package com.dfsek.terra.api.generic.world;
public interface Block {
}

View File

@@ -0,0 +1,7 @@
package com.dfsek.terra.api.generic.world;
public interface Chunk {
int getX();
int getZ();
}

View File

@@ -0,0 +1,5 @@
package com.dfsek.terra.api.generic.world;
public interface World {
long getSeed();
}

View File

@@ -0,0 +1,27 @@
package com.dfsek.terra.api.generic.world.vector;
import com.dfsek.terra.api.generic.world.World;
public class Location implements Cloneable {
private final World world;
private final Vector3 vector;
public Location(World w, double x, double y, double z) {
this.world = w;
this.vector = new Vector3(x, y, z);
}
public Location(World w, Vector3 vector) {
this.world = w;
this.vector = vector;
}
@Override
public Location clone() {
try {
return (Location) super.clone();
} catch(CloneNotSupportedException e) {
throw new Error(e);
}
}
}

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.procgen.math;
package com.dfsek.terra.api.generic.world.vector;
import net.jafama.FastMath;

View File

@@ -0,0 +1,104 @@
package com.dfsek.terra.api.generic.world.vector;
import com.dfsek.terra.api.generic.world.World;
import net.jafama.FastMath;
public class Vector3 implements Cloneable {
private double x;
private double y;
private double z;
public Vector3(double x, double y, double z) {
this.x = x;
this.y = y;
this.z = z;
}
public double getZ() {
return z;
}
public Vector3 setZ(double z) {
this.z = z;
return this;
}
public double getX() {
return x;
}
public Vector3 setX(double x) {
this.x = x;
return this;
}
public double getY() {
return y;
}
public Vector3 setY(double y) {
this.y = y;
return this;
}
public int getBlockX() {
return FastMath.floorToInt(x);
}
public int getBlockY() {
return FastMath.floorToInt(y);
}
public int getBlockZ() {
return FastMath.floorToInt(z);
}
public Vector3 multiply(int m) {
x *= m;
y *= m;
z *= m;
return this;
}
public Vector3 add(double x, double y, double z) {
this.x += x;
this.y += y;
this.z += z;
return this;
}
public Vector3 add(Vector3 other) {
this.x += other.getX();
this.y += other.getY();
this.z += other.getZ();
return this;
}
public Vector3 add(Vector2 other) {
this.x += other.getX();
this.z += other.getZ();
return this;
}
public double lengthSq() {
return x * x + y * y + z * z;
}
public double length() {
return FastMath.sqrt(lengthSq());
}
@Override
public Vector3 clone() {
try {
return (Vector3) super.clone();
} catch(CloneNotSupportedException e) {
throw new Error(e);
}
}
public Location toLocation(World world) {
return new Location(world, this.clone());
}
}

View File

@@ -1,5 +1,6 @@
package com.dfsek.terra.biome.grid.master;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.biome.BiomeZone;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.UserDefinedGrid;
@@ -7,7 +8,6 @@ import com.dfsek.terra.biome.postprocessing.CoordinatePerturb;
import com.dfsek.terra.biome.postprocessing.ErosionNoise;
import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.config.base.ConfigPackTemplate;
import com.dfsek.terra.procgen.math.Vector2;
import net.jafama.FastMath;
import org.bukkit.Location;
import org.bukkit.World;

View File

@@ -1,5 +1,6 @@
package com.dfsek.terra.biome.grid.master;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.biome.BiomeZone;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.UserDefinedGrid;
@@ -7,7 +8,6 @@ import com.dfsek.terra.biome.postprocessing.CoordinatePerturb;
import com.dfsek.terra.biome.postprocessing.ErosionNoise;
import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.config.base.ConfigPackTemplate;
import com.dfsek.terra.procgen.math.Vector2;
import org.bukkit.Location;
import org.bukkit.World;
import org.polydev.gaea.biome.Biome;

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.biome.postprocessing;
import com.dfsek.terra.procgen.math.Vector2;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import org.polydev.gaea.math.FastNoiseLite;
/**

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.generation.items;
import com.dfsek.terra.procgen.math.Vector2;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import org.bukkit.Chunk;
import org.polydev.gaea.math.FastNoiseLite;
import org.polydev.gaea.math.ProbabilityCollection;

View File

@@ -1,7 +1,7 @@
package com.dfsek.terra.generation.items.flora;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.generation.items.PlaceableLayer;
import com.dfsek.terra.procgen.math.Vector2;
import org.bukkit.Chunk;
import org.polydev.gaea.math.FastNoiseLite;
import org.polydev.gaea.math.ProbabilityCollection;

View File

@@ -1,7 +1,7 @@
package com.dfsek.terra.generation.items.tree;
import com.dfsek.terra.Terra;
import com.dfsek.terra.procgen.math.Vector2;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.structure.Rotation;
import com.dfsek.terra.structure.Structure;
import com.dfsek.terra.structure.StructureContainedBlock;

View File

@@ -1,7 +1,7 @@
package com.dfsek.terra.generation.items.tree;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.generation.items.PlaceableLayer;
import com.dfsek.terra.procgen.math.Vector2;
import org.bukkit.Chunk;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;

View File

@@ -12,7 +12,6 @@ import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.BlockPopulator;
import org.jetbrains.annotations.NotNull;
@@ -103,8 +102,4 @@ public class CavePopulator extends BlockPopulator {
}
}
private boolean borderingOcean(Block b) {
return b.getRelative(BlockFace.UP).getType().equals(Material.WATER) || b.getType().equals(Material.LAVA);
}
}

View File

@@ -2,10 +2,10 @@ package com.dfsek.terra.population;
import com.dfsek.terra.Terra;
import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.generation.items.flora.FloraLayer;
import com.dfsek.terra.procgen.math.Vector2;
import org.bukkit.Chunk;
import org.bukkit.World;
import org.jetbrains.annotations.NotNull;

View File

@@ -2,12 +2,12 @@ package com.dfsek.terra.population;
import com.dfsek.terra.Terra;
import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.debug.Debug;
import com.dfsek.terra.generation.items.TerraStructure;
import com.dfsek.terra.procgen.math.Vector2;
import com.dfsek.terra.structure.Rotation;
import com.dfsek.terra.structure.Structure;
import com.dfsek.terra.structure.StructureContainedInventory;

View File

@@ -2,10 +2,10 @@ package com.dfsek.terra.population;
import com.dfsek.terra.Terra;
import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.generation.items.tree.TreeLayer;
import com.dfsek.terra.procgen.math.Vector2;
import net.jafama.FastMath;
import org.bukkit.Chunk;
import org.bukkit.World;

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.procgen.pixel;
import com.dfsek.terra.procgen.math.Vector2;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import java.util.Set;

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.procgen.pixel;
import com.dfsek.terra.procgen.math.Vector2;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import net.jafama.FastMath;
import java.util.HashSet;

View File

@@ -2,8 +2,8 @@ package com.dfsek.terra.structure;
import com.dfsek.terra.Terra;
import com.dfsek.terra.api.generic.world.WorldHandle;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.debug.Debug;
import com.dfsek.terra.procgen.math.Vector2;
import com.dfsek.terra.util.structure.RotationUtil;
import net.jafama.FastMath;
import org.bukkit.Bukkit;

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.structure;
import com.dfsek.terra.procgen.math.Vector2;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import net.jafama.FastMath;
import java.io.Serializable;

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.util.structure;
import com.dfsek.terra.procgen.math.Vector2;
import com.dfsek.terra.api.generic.world.vector.Vector2;
import com.dfsek.terra.structure.Rotation;
import com.google.common.collect.Sets;
import net.jafama.FastMath;