diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitWorldHandle.java index 90f382204..31813cc79 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitWorldHandle.java @@ -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 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)); } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java index 028d88530..b520f6011 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlock.java @@ -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 diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java new file mode 100644 index 000000000..37e6b504f --- /dev/null +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitAnaloguePowerable.java @@ -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); + } +} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java index 176fa58d9..b06f08688 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitDirectional.java @@ -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)); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitEnumAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitEnumAdapter.java index 6d4a02445..c72128775 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitEnumAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitEnumAdapter.java @@ -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(); + } + } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java index 4b9b7b3e3..ff6f4aae6 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitMultipleFacing.java @@ -15,21 +15,21 @@ public class BukkitMultipleFacing extends BukkitBlockData implements MultipleFac @Override public Set 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 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)); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java index b0793ce41..e328d4ba8 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitOrientable.java @@ -15,16 +15,16 @@ public class BukkitOrientable extends BukkitBlockData implements Orientable { @Override public Set 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)); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java new file mode 100644 index 000000000..61bee5d38 --- /dev/null +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRail.java @@ -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)); + } +} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java new file mode 100644 index 000000000..05f28f2cf --- /dev/null +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRedstoneWire.java @@ -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 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)); + } +} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java index f6f184dcc..784f33d77 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitRotatable.java @@ -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)); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java index 96c746e41..d9c18efa0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitSlab.java @@ -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)); } } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java index ed2a0d490..c89c6812f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitStairs.java @@ -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 diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java new file mode 100644 index 000000000..f30ad5781 --- /dev/null +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitWall.java @@ -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))); + } +} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/TerraEnumAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/TerraEnumAdapter.java deleted file mode 100644 index 426a8eeea..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/TerraEnumAdapter.java +++ /dev/null @@ -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(); - } - } -}