Implement BukkitOrientable

This commit is contained in:
dfsek
2020-12-25 21:47:56 -07:00
parent 5db1494341
commit 49f3c16a38
4 changed files with 61 additions and 0 deletions

View File

@@ -11,6 +11,7 @@ import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData;
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.BukkitRotatable;
import com.dfsek.terra.bukkit.world.block.data.BukkitSlab;
import com.dfsek.terra.bukkit.world.block.data.BukkitStairs;
@@ -19,6 +20,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
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.Slab;
@@ -57,6 +59,7 @@ public class BukkitWorldHandle implements WorldHandle {
if(bukkitData instanceof Slab) return new BukkitSlab((Slab) 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

@@ -1,6 +1,7 @@
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.Slab;
@@ -27,6 +28,19 @@ public final class BukkitEnumAdapter {
}
}
public static Axis fromBukkitAxis(org.bukkit.Axis axis) {
switch(axis) {
case X:
return Axis.X;
case Y:
return Axis.Y;
case Z:
return Axis.Z;
default:
throw new IllegalStateException();
}
}
public static Bisected.Half fromBukkitHalf(org.bukkit.block.data.Bisected.Half half) {
switch(half) {
case BOTTOM:

View File

@@ -0,0 +1,30 @@
package com.dfsek.terra.bukkit.world.block.data;
import com.dfsek.terra.api.platform.block.Axis;
import com.dfsek.terra.api.platform.block.data.Orientable;
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
import java.util.Set;
import java.util.stream.Collectors;
public class BukkitOrientable extends BukkitBlockData implements Orientable {
public BukkitOrientable(org.bukkit.block.data.Orientable delegate) {
super(delegate);
}
@Override
public Set<Axis> getAxes() {
return ((org.bukkit.block.data.Orientable) getHandle()).getAxes().stream().map(BukkitEnumAdapter::fromBukkitAxis).collect(Collectors.toSet());
}
@Override
public Axis getAxis() {
return BukkitEnumAdapter.fromBukkitAxis(((org.bukkit.block.data.Orientable) getHandle()).getAxis());
}
@Override
public void setAxis(Axis axis) {
((org.bukkit.block.data.Orientable) getHandle()).setAxis(TerraEnumAdapter.fromTerraAxis(axis));
}
}

View File

@@ -2,6 +2,7 @@ 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;
@@ -38,6 +39,19 @@ public final class TerraEnumAdapter {
}
}
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: