mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-23 16:49:10 +00:00
Implement some BlockData stuff on Fabric, make stuff less jank
This commit is contained in:
@@ -4,7 +4,7 @@ import com.dfsek.terra.api.generic.world.block.BlockData;
|
||||
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||
|
||||
public class BukkitBlockData implements BlockData {
|
||||
private final org.bukkit.block.data.BlockData delegate;
|
||||
private org.bukkit.block.data.BlockData delegate;
|
||||
|
||||
public BukkitBlockData(org.bukkit.block.data.BlockData delegate) {
|
||||
this.delegate = delegate;
|
||||
@@ -29,7 +29,9 @@ public class BukkitBlockData implements BlockData {
|
||||
@Override
|
||||
public BukkitBlockData clone() {
|
||||
try {
|
||||
return (BukkitBlockData) super.clone();
|
||||
BukkitBlockData n = (BukkitBlockData) super.clone();
|
||||
n.delegate = delegate.clone();
|
||||
return n;
|
||||
} catch(CloneNotSupportedException e) {
|
||||
throw new Error(e);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.dfsek.terra.bukkit.world.block.data;
|
||||
|
||||
import com.dfsek.terra.api.generic.world.block.BlockFace;
|
||||
import com.dfsek.terra.api.generic.world.block.data.Bisected;
|
||||
import com.dfsek.terra.api.generic.world.block.data.Slab;
|
||||
import com.dfsek.terra.api.generic.world.block.data.Stairs;
|
||||
|
||||
/**
|
||||
@@ -82,4 +83,17 @@ public final class BukkitEnumAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
public static Slab.Type fromBukkitSlabType(org.bukkit.block.data.type.Slab.Type type) {
|
||||
switch(type) {
|
||||
case BOTTOM:
|
||||
return Slab.Type.BOTTOM;
|
||||
case TOP:
|
||||
return Slab.Type.TOP;
|
||||
case DOUBLE:
|
||||
return Slab.Type.DOUBLE;
|
||||
default:
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,30 +8,28 @@ import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class BukkitMultipleFacing extends BukkitBlockData implements MultipleFacing {
|
||||
private final org.bukkit.block.data.MultipleFacing delegate;
|
||||
|
||||
public BukkitMultipleFacing(org.bukkit.block.data.MultipleFacing delegate) {
|
||||
super(delegate);
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<BlockFace> getFaces() {
|
||||
return delegate.getFaces().stream().map(BukkitEnumAdapter::fromBukkitBlockFace).collect(Collectors.toSet());
|
||||
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getFaces().stream().map(BukkitEnumAdapter::fromBukkitBlockFace).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFace(BlockFace face, boolean facing) {
|
||||
delegate.setFace(TerraEnumAdapter.fromTerraBlockFace(face), facing);
|
||||
((org.bukkit.block.data.MultipleFacing) super.getHandle()).setFace(TerraEnumAdapter.fromTerraBlockFace(face), facing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<BlockFace> getAllowedFaces() {
|
||||
return delegate.getAllowedFaces().stream().map(BukkitEnumAdapter::fromBukkitBlockFace).collect(Collectors.toSet());
|
||||
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).getAllowedFaces().stream().map(BukkitEnumAdapter::fromBukkitBlockFace).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasFace(BlockFace f) {
|
||||
return delegate.hasFace(TerraEnumAdapter.fromTerraBlockFace(f));
|
||||
return ((org.bukkit.block.data.MultipleFacing) super.getHandle()).hasFace(TerraEnumAdapter.fromTerraBlockFace(f));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.dfsek.terra.bukkit.world.block.data;
|
||||
|
||||
import com.dfsek.terra.api.generic.world.block.data.Slab;
|
||||
import com.dfsek.terra.api.generic.world.block.data.Waterlogged;
|
||||
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
public class BukkitSlab extends BukkitBlockData implements Slab {
|
||||
public BukkitSlab(BlockData delegate) {
|
||||
super(delegate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWaterlogged() {
|
||||
return ((Waterlogged) getHandle()).isWaterlogged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWaterlogged(boolean waterlogged) {
|
||||
((Waterlogged) getHandle()).setWaterlogged(waterlogged);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType() {
|
||||
return BukkitEnumAdapter.fromBukkitSlabType(((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));
|
||||
}
|
||||
}
|
||||
@@ -5,50 +5,48 @@ import com.dfsek.terra.api.generic.world.block.data.Stairs;
|
||||
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
||||
|
||||
public class BukkitStairs extends BukkitBlockData implements Stairs {
|
||||
private final org.bukkit.block.data.type.Stairs stairs;
|
||||
|
||||
public BukkitStairs(org.bukkit.block.data.type.Stairs delegate) {
|
||||
super(delegate);
|
||||
this.stairs = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shape getShape() {
|
||||
return BukkitEnumAdapter.fromBukkitStair(stairs.getShape());
|
||||
return BukkitEnumAdapter.fromBukkitStair(((org.bukkit.block.data.type.Stairs) super.getHandle()).getShape());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setShape(Shape shape) {
|
||||
stairs.setShape(TerraEnumAdapter.fromTerraStair(shape));
|
||||
((org.bukkit.block.data.type.Stairs) super.getHandle()).setShape(TerraEnumAdapter.fromTerraStair(shape));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Half getHalf() {
|
||||
return BukkitEnumAdapter.fromBukkitHalf(stairs.getHalf());
|
||||
return BukkitEnumAdapter.fromBukkitHalf(((org.bukkit.block.data.type.Stairs) super.getHandle()).getHalf());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHalf(Half half) {
|
||||
stairs.setHalf(TerraEnumAdapter.fromTerraHalf(half));
|
||||
((org.bukkit.block.data.type.Stairs) super.getHandle()).setHalf(TerraEnumAdapter.fromTerraHalf(half));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockFace getFacing() {
|
||||
return BukkitEnumAdapter.fromBukkitBlockFace(stairs.getFacing());
|
||||
return BukkitEnumAdapter.fromBukkitBlockFace(((org.bukkit.block.data.type.Stairs) super.getHandle()).getFacing());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFacing(BlockFace facing) {
|
||||
stairs.setFacing(TerraEnumAdapter.fromTerraBlockFace(facing));
|
||||
((org.bukkit.block.data.type.Stairs) super.getHandle()).setFacing(TerraEnumAdapter.fromTerraBlockFace(facing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWaterlogged() {
|
||||
return stairs.isWaterlogged();
|
||||
return ((org.bukkit.block.data.type.Stairs) super.getHandle()).isWaterlogged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWaterlogged(boolean waterlogged) {
|
||||
stairs.setWaterlogged(waterlogged);
|
||||
((org.bukkit.block.data.type.Stairs) super.getHandle()).setWaterlogged(waterlogged);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,19 +4,17 @@ import com.dfsek.terra.api.generic.world.block.data.Waterlogged;
|
||||
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
||||
|
||||
public class BukkitWaterlogged extends BukkitBlockData implements Waterlogged {
|
||||
private boolean waterlogged;
|
||||
|
||||
public BukkitWaterlogged(org.bukkit.block.data.Waterlogged delegate) {
|
||||
super(delegate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWaterlogged() {
|
||||
return waterlogged;
|
||||
return ((org.bukkit.block.data.Waterlogged) super.getHandle()).isWaterlogged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWaterlogged(boolean waterlogged) {
|
||||
this.waterlogged = waterlogged;
|
||||
((org.bukkit.block.data.Waterlogged) super.getHandle()).setWaterlogged(waterlogged);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.dfsek.terra.bukkit.world.block.data;
|
||||
|
||||
import com.dfsek.terra.api.generic.world.block.BlockFace;
|
||||
import org.bukkit.block.data.Bisected;
|
||||
import org.bukkit.block.data.type.Slab;
|
||||
import org.bukkit.block.data.type.Stairs;
|
||||
|
||||
/**
|
||||
@@ -81,4 +82,17 @@ public final class TerraEnumAdapter {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public static Slab.Type fromTerraSlabType(com.dfsek.terra.api.generic.world.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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user