Remove all raw usages of BSH, improve API generics

This commit is contained in:
Kenzie Togami
2018-12-26 16:39:10 -08:00
parent a88f6b8430
commit 3fefcbf971
83 changed files with 242 additions and 259 deletions

View File

@ -49,7 +49,7 @@ public class BlockArrayClipboard implements Clipboard {
private final Region region;
private BlockVector3 origin;
private final BlockStateHolder[][][] blocks;
private final BaseBlock[][][] blocks;
private final List<ClipboardEntity> entities = new ArrayList<>();
/**
@ -65,7 +65,7 @@ public class BlockArrayClipboard implements Clipboard {
this.origin = region.getMinimumPoint();
BlockVector3 dimensions = getDimensions();
blocks = new BlockStateHolder[dimensions.getBlockX()][dimensions.getBlockY()][dimensions.getBlockZ()];
blocks = new BaseBlock[dimensions.getBlockX()][dimensions.getBlockY()][dimensions.getBlockZ()];
}
@Override
@ -126,7 +126,7 @@ public class BlockArrayClipboard implements Clipboard {
public BlockState getBlock(BlockVector3 position) {
if (region.contains(position)) {
BlockVector3 v = position.subtract(region.getMinimumPoint());
BlockStateHolder block = blocks[v.getBlockX()][v.getBlockY()][v.getBlockZ()];
BaseBlock block = blocks[v.getBlockX()][v.getBlockY()][v.getBlockZ()];
if (block != null) {
return block.toImmutableState();
}
@ -139,9 +139,9 @@ public class BlockArrayClipboard implements Clipboard {
public BaseBlock getFullBlock(BlockVector3 position) {
if (region.contains(position)) {
BlockVector3 v = position.subtract(region.getMinimumPoint());
BlockStateHolder block = blocks[v.getBlockX()][v.getBlockY()][v.getBlockZ()];
BaseBlock block = blocks[v.getBlockX()][v.getBlockY()][v.getBlockZ()];
if (block != null) {
return block.toBaseBlock();
return block;
}
}
@ -149,10 +149,10 @@ public class BlockArrayClipboard implements Clipboard {
}
@Override
public boolean setBlock(BlockVector3 position, BlockStateHolder block) throws WorldEditException {
public <B extends BlockStateHolder<B>> boolean setBlock(BlockVector3 position, B block) throws WorldEditException {
if (region.contains(position)) {
BlockVector3 v = position.subtract(region.getMinimumPoint());
blocks[v.getBlockX()][v.getBlockY()][v.getBlockZ()] = block;
blocks[v.getBlockX()][v.getBlockY()][v.getBlockZ()] = block.toBaseBlock();
return true;
} else {
return false;

View File

@ -25,6 +25,6 @@ import com.sk89q.worldedit.world.block.BlockStateHolder;
import java.util.Map;
public interface NBTCompatibilityHandler {
boolean isAffectedBlock(BlockStateHolder block);
void updateNBT(BlockStateHolder block, Map<String, Tag> values);
<B extends BlockStateHolder<B>> boolean isAffectedBlock(B block);
<B extends BlockStateHolder<B>> void updateNBT(B block, Map<String, Tag> values);
}

View File

@ -32,13 +32,14 @@ import com.sk89q.worldedit.world.block.BlockTypes;
import java.util.Map;
public class SignCompatibilityHandler implements NBTCompatibilityHandler {
@Override
public boolean isAffectedBlock(BlockStateHolder block) {
public <B extends BlockStateHolder<B>> boolean isAffectedBlock(B block) {
return block.getBlockType() == BlockTypes.SIGN || block.getBlockType() == BlockTypes.WALL_SIGN;
}
@Override
public void updateNBT(BlockStateHolder block, Map<String, Tag> values) {
public <B extends BlockStateHolder<B>> void updateNBT(B block, Map<String, Tag> values) {
for (int i = 0; i < 4; ++i) {
String key = "Text" + (i + 1);
Tag value = values.get(key);