implement all Bukkit block data

This commit is contained in:
dfsek
2020-12-26 01:38:54 -07:00
parent bc17597923
commit ddc2cea427
14 changed files with 353 additions and 140 deletions

View File

@@ -9,22 +9,28 @@ import com.dfsek.terra.api.platform.world.WorldHandle;
import com.dfsek.terra.api.transform.Transformer;
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData;
import com.dfsek.terra.bukkit.world.block.data.BukkitAnaloguePowerable;
import com.dfsek.terra.bukkit.world.block.data.BukkitDirectional;
import com.dfsek.terra.bukkit.world.block.data.BukkitMultipleFacing;
import com.dfsek.terra.bukkit.world.block.data.BukkitOrientable;
import com.dfsek.terra.bukkit.world.block.data.BukkitRedstoneWire;
import com.dfsek.terra.bukkit.world.block.data.BukkitRotatable;
import com.dfsek.terra.bukkit.world.block.data.BukkitSlab;
import com.dfsek.terra.bukkit.world.block.data.BukkitStairs;
import com.dfsek.terra.bukkit.world.block.data.BukkitWall;
import com.dfsek.terra.bukkit.world.block.data.BukkitWaterlogged;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.AnaloguePowerable;
import org.bukkit.block.data.Directional;
import org.bukkit.block.data.MultipleFacing;
import org.bukkit.block.data.Orientable;
import org.bukkit.block.data.Rotatable;
import org.bukkit.block.data.Waterlogged;
import org.bukkit.block.data.type.RedstoneWire;
import org.bukkit.block.data.type.Slab;
import org.bukkit.block.data.type.Stairs;
import org.bukkit.block.data.type.Wall;
public class BukkitWorldHandle implements WorldHandle {
private Transformer<String, Tree> treeTransformer;
@@ -54,13 +60,21 @@ public class BukkitWorldHandle implements WorldHandle {
@Override
public BlockData createBlockData(String data) {
org.bukkit.block.data.BlockData bukkitData = Bukkit.createBlockData(data);
if(bukkitData instanceof MultipleFacing) return new BukkitMultipleFacing((MultipleFacing) bukkitData);
if(bukkitData instanceof Stairs) return new BukkitStairs((Stairs) bukkitData);
if(bukkitData instanceof Slab) return new BukkitSlab((Slab) bukkitData);
if(bukkitData instanceof Wall) return new BukkitWall((Wall) bukkitData);
if(bukkitData instanceof RedstoneWire) return new BukkitRedstoneWire((RedstoneWire) bukkitData);
if(bukkitData instanceof AnaloguePowerable) return new BukkitAnaloguePowerable((AnaloguePowerable) bukkitData);
if(bukkitData instanceof MultipleFacing) return new BukkitMultipleFacing((MultipleFacing) bukkitData);
if(bukkitData instanceof Rotatable) return new BukkitRotatable((Rotatable) bukkitData);
if(bukkitData instanceof Directional) return new BukkitDirectional((Directional) bukkitData);
if(bukkitData instanceof Orientable) return new BukkitOrientable((Orientable) bukkitData);
if(bukkitData instanceof Waterlogged) return new BukkitWaterlogged((Waterlogged) bukkitData);
return new BukkitBlockData(Bukkit.createBlockData(data));
}

View File

@@ -6,7 +6,7 @@ import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.bukkit.BukkitWorld;
import com.dfsek.terra.bukkit.world.block.data.TerraEnumAdapter;
import com.dfsek.terra.bukkit.world.block.data.BukkitEnumAdapter;
public class BukkitBlock implements Block {
private final org.bukkit.block.Block delegate;
@@ -27,12 +27,12 @@ public class BukkitBlock implements Block {
@Override
public Block getRelative(BlockFace face) {
return new BukkitBlock(delegate.getRelative(TerraEnumAdapter.fromTerraBlockFace(face)));
return new BukkitBlock(delegate.getRelative(BukkitEnumAdapter.adapt(face)));
}
@Override
public Block getRelative(BlockFace face, int len) {
return new BukkitBlock(delegate.getRelative(TerraEnumAdapter.fromTerraBlockFace(face), len));
return new BukkitBlock(delegate.getRelative(BukkitEnumAdapter.adapt(face), len));
}
@Override

View File

@@ -0,0 +1,25 @@
package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.data.AnaloguePowerable;
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
public class BukkitAnaloguePowerable extends BukkitBlockData implements AnaloguePowerable {
public BukkitAnaloguePowerable(org.bukkit.block.data.AnaloguePowerable delegate) {
super(delegate);
}
@Override
public int getMaximumPower() {
return ((org.bukkit.block.data.AnaloguePowerable) getHandle()).getMaximumPower();
}
@Override
public int getPower() {
return ((org.bukkit.block.data.AnaloguePowerable) getHandle()).getPower();
}
@Override
public void setPower(int power) {
((org.bukkit.block.data.AnaloguePowerable) getHandle()).setPower(power);
}
}

View File

@@ -11,11 +11,11 @@ public class BukkitDirectional extends BukkitBlockData implements Directional {
@Override
public BlockFace getFacing() {
return BukkitEnumAdapter.fromBukkitBlockFace(((org.bukkit.block.data.Directional) getHandle()).getFacing());
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.Directional) getHandle()).getFacing());
}
@Override
public void setFacing(BlockFace facing) {
((org.bukkit.block.data.Directional) getHandle()).setFacing(TerraEnumAdapter.fromTerraBlockFace(facing));
((org.bukkit.block.data.Directional) getHandle()).setFacing(BukkitEnumAdapter.adapt(facing));
}
}

View File

@@ -4,14 +4,17 @@ package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.Axis;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.data.Bisected;
import com.dfsek.terra.api.platform.block.data.Rail;
import com.dfsek.terra.api.platform.block.data.RedstoneWire;
import com.dfsek.terra.api.platform.block.data.Slab;
import com.dfsek.terra.api.platform.block.data.Stairs;
import org.bukkit.block.data.type.Wall;
/**
* Utility class to adapt Bukkit enums to Terra enums.
*/
public final class BukkitEnumAdapter {
public static Stairs.Shape fromBukkitStair(org.bukkit.block.data.type.Stairs.Shape shape) {
public static Stairs.Shape adapt(org.bukkit.block.data.type.Stairs.Shape shape) {
switch(shape) {
case STRAIGHT:
return Stairs.Shape.STRAIGHT;
@@ -28,7 +31,7 @@ public final class BukkitEnumAdapter {
}
}
public static Axis fromBukkitAxis(org.bukkit.Axis axis) {
public static Axis adapt(org.bukkit.Axis axis) {
switch(axis) {
case X:
return Axis.X;
@@ -41,7 +44,7 @@ public final class BukkitEnumAdapter {
}
}
public static Bisected.Half fromBukkitHalf(org.bukkit.block.data.Bisected.Half half) {
public static Bisected.Half adapt(org.bukkit.block.data.Bisected.Half half) {
switch(half) {
case BOTTOM:
return Bisected.Half.BOTTOM;
@@ -52,7 +55,7 @@ public final class BukkitEnumAdapter {
}
}
public static BlockFace fromBukkitBlockFace(org.bukkit.block.BlockFace face) {
public static BlockFace adapt(org.bukkit.block.BlockFace face) {
switch(face) {
case DOWN:
return BlockFace.DOWN;
@@ -97,7 +100,7 @@ public final class BukkitEnumAdapter {
}
}
public static Slab.Type fromBukkitSlabType(org.bukkit.block.data.type.Slab.Type type) {
public static Slab.Type adapt(org.bukkit.block.data.type.Slab.Type type) {
switch(type) {
case BOTTOM:
return Slab.Type.BOTTOM;
@@ -110,4 +113,209 @@ public final class BukkitEnumAdapter {
}
}
public static RedstoneWire.Connection adapt(org.bukkit.block.data.type.RedstoneWire.Connection connection) {
switch(connection) {
case NONE:
return RedstoneWire.Connection.NONE;
case UP:
return RedstoneWire.Connection.UP;
case SIDE:
return RedstoneWire.Connection.SIDE;
default:
throw new IllegalStateException();
}
}
public static org.bukkit.block.data.type.RedstoneWire.Connection adapt(RedstoneWire.Connection connection) {
switch(connection) {
case SIDE:
return org.bukkit.block.data.type.RedstoneWire.Connection.SIDE;
case UP:
return org.bukkit.block.data.type.RedstoneWire.Connection.UP;
case NONE:
return org.bukkit.block.data.type.RedstoneWire.Connection.NONE;
default:
throw new IllegalStateException();
}
}
public static org.bukkit.block.data.type.Stairs.Shape adapt(Stairs.Shape shape) {
switch(shape) {
case STRAIGHT:
return org.bukkit.block.data.type.Stairs.Shape.STRAIGHT;
case INNER_LEFT:
return org.bukkit.block.data.type.Stairs.Shape.INNER_LEFT;
case OUTER_LEFT:
return org.bukkit.block.data.type.Stairs.Shape.OUTER_LEFT;
case INNER_RIGHT:
return org.bukkit.block.data.type.Stairs.Shape.INNER_RIGHT;
case OUTER_RIGHT:
return org.bukkit.block.data.type.Stairs.Shape.OUTER_RIGHT;
default:
throw new IllegalStateException();
}
}
public static Rail.Shape adapt(org.bukkit.block.data.Rail.Shape shape) {
switch(shape) {
case SOUTH_WEST:
return Rail.Shape.SOUTH_WEST;
case SOUTH_EAST:
return Rail.Shape.SOUTH_EAST;
case NORTH_EAST:
return Rail.Shape.NORTH_EAST;
case NORTH_WEST:
return Rail.Shape.NORTH_WEST;
case ASCENDING_EAST:
return Rail.Shape.ASCENDING_EAST;
case ASCENDING_WEST:
return Rail.Shape.ASCENDING_WEST;
case ASCENDING_SOUTH:
return Rail.Shape.ASCENDING_SOUTH;
case ASCENDING_NORTH:
return Rail.Shape.ASCENDING_NORTH;
case NORTH_SOUTH:
return Rail.Shape.NORTH_SOUTH;
case EAST_WEST:
return Rail.Shape.EAST_WEST;
default:
throw new IllegalStateException();
}
}
public static org.bukkit.block.data.Rail.Shape adapt(Rail.Shape shape) {
switch(shape) {
case EAST_WEST:
return org.bukkit.block.data.Rail.Shape.EAST_WEST;
case NORTH_SOUTH:
return org.bukkit.block.data.Rail.Shape.NORTH_SOUTH;
case ASCENDING_NORTH:
return org.bukkit.block.data.Rail.Shape.ASCENDING_NORTH;
case ASCENDING_SOUTH:
return org.bukkit.block.data.Rail.Shape.ASCENDING_SOUTH;
case ASCENDING_WEST:
return org.bukkit.block.data.Rail.Shape.ASCENDING_WEST;
case ASCENDING_EAST:
return org.bukkit.block.data.Rail.Shape.ASCENDING_EAST;
case NORTH_WEST:
return org.bukkit.block.data.Rail.Shape.NORTH_WEST;
case NORTH_EAST:
return org.bukkit.block.data.Rail.Shape.NORTH_EAST;
case SOUTH_EAST:
return org.bukkit.block.data.Rail.Shape.SOUTH_EAST;
case SOUTH_WEST:
return org.bukkit.block.data.Rail.Shape.SOUTH_WEST;
default:
throw new IllegalStateException();
}
}
public static org.bukkit.block.data.Bisected.Half adapt(Bisected.Half half) {
switch(half) {
case TOP:
return org.bukkit.block.data.Bisected.Half.TOP;
case BOTTOM:
return org.bukkit.block.data.Bisected.Half.BOTTOM;
default:
throw new IllegalStateException();
}
}
public static org.bukkit.Axis adapt(Axis axis) {
switch(axis) {
case Z:
return org.bukkit.Axis.Z;
case Y:
return org.bukkit.Axis.Y;
case X:
return org.bukkit.Axis.X;
default:
throw new IllegalStateException();
}
}
public static org.bukkit.block.BlockFace adapt(BlockFace face) {
switch(face) {
case DOWN:
return org.bukkit.block.BlockFace.DOWN;
case UP:
return org.bukkit.block.BlockFace.UP;
case NORTH_WEST:
return org.bukkit.block.BlockFace.NORTH_WEST;
case NORTH_EAST:
return org.bukkit.block.BlockFace.NORTH_EAST;
case SOUTH_EAST:
return org.bukkit.block.BlockFace.SOUTH_EAST;
case SOUTH_WEST:
return org.bukkit.block.BlockFace.SOUTH_WEST;
case NORTH_NORTH_WEST:
return org.bukkit.block.BlockFace.NORTH_NORTH_WEST;
case WEST_NORTH_WEST:
return org.bukkit.block.BlockFace.WEST_NORTH_WEST;
case WEST_SOUTH_WEST:
return org.bukkit.block.BlockFace.WEST_SOUTH_WEST;
case SOUTH_SOUTH_WEST:
return org.bukkit.block.BlockFace.SOUTH_SOUTH_WEST;
case EAST_NORTH_EAST:
return org.bukkit.block.BlockFace.EAST_NORTH_EAST;
case WEST:
return org.bukkit.block.BlockFace.WEST;
case SOUTH:
return org.bukkit.block.BlockFace.SOUTH;
case EAST:
return org.bukkit.block.BlockFace.EAST;
case NORTH:
return org.bukkit.block.BlockFace.NORTH;
case SELF:
return org.bukkit.block.BlockFace.SELF;
case EAST_SOUTH_EAST:
return org.bukkit.block.BlockFace.EAST_SOUTH_EAST;
case NORTH_NORTH_EAST:
return org.bukkit.block.BlockFace.NORTH_NORTH_EAST;
case SOUTH_SOUTH_EAST:
return org.bukkit.block.BlockFace.SOUTH_SOUTH_EAST;
default:
throw new IllegalStateException();
}
}
public static org.bukkit.block.data.type.Slab.Type adapt(Slab.Type type) {
switch(type) {
case TOP:
return org.bukkit.block.data.type.Slab.Type.TOP;
case DOUBLE:
return org.bukkit.block.data.type.Slab.Type.DOUBLE;
case BOTTOM:
return org.bukkit.block.data.type.Slab.Type.BOTTOM;
default:
throw new IllegalStateException();
}
}
public static Wall.Height adapt(com.dfsek.terra.api.platform.block.data.Wall.Height height) {
switch(height) {
case NONE:
return Wall.Height.NONE;
case LOW:
return Wall.Height.LOW;
case TALL:
return Wall.Height.TALL;
default:
throw new IllegalStateException();
}
}
public static com.dfsek.terra.api.platform.block.data.Wall.Height adapt(Wall.Height height) {
switch(height) {
case TALL:
return com.dfsek.terra.api.platform.block.data.Wall.Height.TALL;
case LOW:
return com.dfsek.terra.api.platform.block.data.Wall.Height.LOW;
case NONE:
return com.dfsek.terra.api.platform.block.data.Wall.Height.NONE;
default:
throw new IllegalStateException();
}
}
}

View File

@@ -15,21 +15,21 @@ public class BukkitMultipleFacing extends BukkitBlockData implements MultipleFac
@Override
public Set<BlockFace> getFaces() {
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getFaces().stream().map(BukkitEnumAdapter::fromBukkitBlockFace).collect(Collectors.toSet());
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getFaces().stream().map(BukkitEnumAdapter::adapt).collect(Collectors.toSet());
}
@Override
public void setFace(BlockFace face, boolean facing) {
((org.bukkit.block.data.MultipleFacing) super.getHandle()).setFace(TerraEnumAdapter.fromTerraBlockFace(face), facing);
((org.bukkit.block.data.MultipleFacing) super.getHandle()).setFace(BukkitEnumAdapter.adapt(face), facing);
}
@Override
public Set<BlockFace> getAllowedFaces() {
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getAllowedFaces().stream().map(BukkitEnumAdapter::fromBukkitBlockFace).collect(Collectors.toSet());
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getAllowedFaces().stream().map(BukkitEnumAdapter::adapt).collect(Collectors.toSet());
}
@Override
public boolean hasFace(BlockFace f) {
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).hasFace(TerraEnumAdapter.fromTerraBlockFace(f));
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).hasFace(BukkitEnumAdapter.adapt(f));
}
}

View File

@@ -15,16 +15,16 @@ public class BukkitOrientable extends BukkitBlockData implements Orientable {
@Override
public Set<Axis> getAxes() {
return ((org.bukkit.block.data.Orientable) getHandle()).getAxes().stream().map(BukkitEnumAdapter::fromBukkitAxis).collect(Collectors.toSet());
return ((org.bukkit.block.data.Orientable) getHandle()).getAxes().stream().map(BukkitEnumAdapter::adapt).collect(Collectors.toSet());
}
@Override
public Axis getAxis() {
return BukkitEnumAdapter.fromBukkitAxis(((org.bukkit.block.data.Orientable) getHandle()).getAxis());
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.Orientable) getHandle()).getAxis());
}
@Override
public void setAxis(Axis axis) {
((org.bukkit.block.data.Orientable) getHandle()).setAxis(TerraEnumAdapter.fromTerraAxis(axis));
((org.bukkit.block.data.Orientable) getHandle()).setAxis(BukkitEnumAdapter.adapt(axis));
}
}

View File

@@ -0,0 +1,20 @@
package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.data.Rail;
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
public class BukkitRail extends BukkitBlockData implements Rail {
public BukkitRail(org.bukkit.block.data.Rail delegate) {
super(delegate);
}
@Override
public Shape getShape() {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.Rail) getHandle()).getShape());
}
@Override
public void setShape(Shape newShape) {
((org.bukkit.block.data.Rail) getHandle()).setShape(BukkitEnumAdapter.adapt(newShape));
}
}

View File

@@ -0,0 +1,28 @@
package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.data.RedstoneWire;
import java.util.Set;
import java.util.stream.Collectors;
public class BukkitRedstoneWire extends BukkitAnaloguePowerable implements RedstoneWire {
public BukkitRedstoneWire(org.bukkit.block.data.type.RedstoneWire delegate) {
super(delegate);
}
@Override
public Set<BlockFace> getAllowedFaces() {
return ((org.bukkit.block.data.type.RedstoneWire) getHandle()).getAllowedFaces().stream().map(BukkitEnumAdapter::adapt).collect(Collectors.toSet());
}
@Override
public Connection getFace(BlockFace face) {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.RedstoneWire) getHandle()).getFace(BukkitEnumAdapter.adapt(face)));
}
@Override
public void setFace(BlockFace face, Connection connection) {
((org.bukkit.block.data.type.RedstoneWire) getHandle()).setFace(BukkitEnumAdapter.adapt(face), BukkitEnumAdapter.adapt(connection));
}
}

View File

@@ -11,11 +11,11 @@ public class BukkitRotatable extends BukkitBlockData implements Rotatable {
@Override
public BlockFace getRotation() {
return BukkitEnumAdapter.fromBukkitBlockFace(((org.bukkit.block.data.Rotatable) getHandle()).getRotation());
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.Rotatable) getHandle()).getRotation());
}
@Override
public void setRotation(BlockFace face) {
((org.bukkit.block.data.Rotatable) getHandle()).setRotation(TerraEnumAdapter.fromTerraBlockFace(face));
((org.bukkit.block.data.Rotatable) getHandle()).setRotation(BukkitEnumAdapter.adapt(face));
}
}

View File

@@ -9,11 +9,11 @@ public class BukkitSlab extends BukkitWaterlogged implements Slab {
@Override
public Type getType() {
return BukkitEnumAdapter.fromBukkitSlabType(((org.bukkit.block.data.type.Slab) getHandle()).getType());
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Slab) getHandle()).getType());
}
@Override
public void setType(Type type) {
((org.bukkit.block.data.type.Slab) getHandle()).setType(TerraEnumAdapter.fromTerraSlabType(type));
((org.bukkit.block.data.type.Slab) getHandle()).setType(BukkitEnumAdapter.adapt(type));
}
}

View File

@@ -12,32 +12,32 @@ public class BukkitStairs extends BukkitBlockData implements Stairs {
@Override
public Shape getShape() {
return BukkitEnumAdapter.fromBukkitStair(((org.bukkit.block.data.type.Stairs) super.getHandle()).getShape());
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getShape());
}
@Override
public void setShape(Shape shape) {
((org.bukkit.block.data.type.Stairs) super.getHandle()).setShape(TerraEnumAdapter.fromTerraStair(shape));
((org.bukkit.block.data.type.Stairs) super.getHandle()).setShape(BukkitEnumAdapter.adapt(shape));
}
@Override
public Half getHalf() {
return BukkitEnumAdapter.fromBukkitHalf(((org.bukkit.block.data.type.Stairs) super.getHandle()).getHalf());
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getHalf());
}
@Override
public void setHalf(Half half) {
((org.bukkit.block.data.type.Stairs) super.getHandle()).setHalf(TerraEnumAdapter.fromTerraHalf(half));
((org.bukkit.block.data.type.Stairs) super.getHandle()).setHalf(BukkitEnumAdapter.adapt(half));
}
@Override
public BlockFace getFacing() {
return BukkitEnumAdapter.fromBukkitBlockFace(((org.bukkit.block.data.type.Stairs) super.getHandle()).getFacing());
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Stairs) super.getHandle()).getFacing());
}
@Override
public void setFacing(BlockFace facing) {
((org.bukkit.block.data.type.Stairs) super.getHandle()).setFacing(TerraEnumAdapter.fromTerraBlockFace(facing));
((org.bukkit.block.data.type.Stairs) super.getHandle()).setFacing(BukkitEnumAdapter.adapt(facing));
}
@Override

View File

@@ -0,0 +1,30 @@
package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.data.Wall;
public class BukkitWall extends BukkitWaterlogged implements Wall {
public BukkitWall(org.bukkit.block.data.type.Wall delegate) {
super(delegate);
}
@Override
public boolean isUp() {
return ((org.bukkit.block.data.type.Wall) getHandle()).isUp();
}
@Override
public void setUp(boolean up) {
((org.bukkit.block.data.type.Wall) getHandle()).setUp(up);
}
@Override
public void setHeight(BlockFace face, Height height) {
((org.bukkit.block.data.type.Wall) getHandle()).setHeight(BukkitEnumAdapter.adapt(face), BukkitEnumAdapter.adapt(height));
}
@Override
public Height getHeight(BlockFace face) {
return BukkitEnumAdapter.adapt(((org.bukkit.block.data.type.Wall) getHandle()).getHeight(BukkitEnumAdapter.adapt(face)));
}
}

View File

@@ -1,112 +0,0 @@
package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.BlockFace;
import org.bukkit.Axis;
import org.bukkit.block.data.Bisected;
import org.bukkit.block.data.type.Slab;
import org.bukkit.block.data.type.Stairs;
/**
* Utility class to adapt Terra enums to Bukkit enums
*/
public final class TerraEnumAdapter {
public static Stairs.Shape fromTerraStair(com.dfsek.terra.api.platform.block.data.Stairs.Shape shape) {
switch(shape) {
case STRAIGHT:
return Stairs.Shape.STRAIGHT;
case INNER_LEFT:
return Stairs.Shape.INNER_LEFT;
case OUTER_LEFT:
return Stairs.Shape.OUTER_LEFT;
case INNER_RIGHT:
return Stairs.Shape.INNER_RIGHT;
case OUTER_RIGHT:
return Stairs.Shape.OUTER_RIGHT;
default:
throw new IllegalStateException();
}
}
public static Bisected.Half fromTerraHalf(com.dfsek.terra.api.platform.block.data.Bisected.Half half) {
switch(half) {
case TOP:
return Bisected.Half.TOP;
case BOTTOM:
return Bisected.Half.BOTTOM;
default:
throw new IllegalStateException();
}
}
public static Axis fromTerraAxis(com.dfsek.terra.api.platform.block.Axis axis) {
switch(axis) {
case Z:
return Axis.Z;
case Y:
return Axis.Y;
case X:
return Axis.X;
default:
throw new IllegalStateException();
}
}
public static org.bukkit.block.BlockFace fromTerraBlockFace(BlockFace face) {
switch(face) {
case DOWN:
return org.bukkit.block.BlockFace.DOWN;
case UP:
return org.bukkit.block.BlockFace.UP;
case NORTH_WEST:
return org.bukkit.block.BlockFace.NORTH_WEST;
case NORTH_EAST:
return org.bukkit.block.BlockFace.NORTH_EAST;
case SOUTH_EAST:
return org.bukkit.block.BlockFace.SOUTH_EAST;
case SOUTH_WEST:
return org.bukkit.block.BlockFace.SOUTH_WEST;
case NORTH_NORTH_WEST:
return org.bukkit.block.BlockFace.NORTH_NORTH_WEST;
case WEST_NORTH_WEST:
return org.bukkit.block.BlockFace.WEST_NORTH_WEST;
case WEST_SOUTH_WEST:
return org.bukkit.block.BlockFace.WEST_SOUTH_WEST;
case SOUTH_SOUTH_WEST:
return org.bukkit.block.BlockFace.SOUTH_SOUTH_WEST;
case EAST_NORTH_EAST:
return org.bukkit.block.BlockFace.EAST_NORTH_EAST;
case WEST:
return org.bukkit.block.BlockFace.WEST;
case SOUTH:
return org.bukkit.block.BlockFace.SOUTH;
case EAST:
return org.bukkit.block.BlockFace.EAST;
case NORTH:
return org.bukkit.block.BlockFace.NORTH;
case SELF:
return org.bukkit.block.BlockFace.SELF;
case EAST_SOUTH_EAST:
return org.bukkit.block.BlockFace.EAST_SOUTH_EAST;
case NORTH_NORTH_EAST:
return org.bukkit.block.BlockFace.NORTH_NORTH_EAST;
case SOUTH_SOUTH_EAST:
return org.bukkit.block.BlockFace.SOUTH_SOUTH_EAST;
default:
throw new IllegalStateException();
}
}
public static Slab.Type fromTerraSlabType(com.dfsek.terra.api.platform.block.data.Slab.Type type) {
switch(type) {
case TOP:
return Slab.Type.TOP;
case DOUBLE:
return Slab.Type.DOUBLE;
case BOTTOM:
return Slab.Type.BOTTOM;
default:
throw new IllegalStateException();
}
}
}