Moved the block data check to LocalWorld, adding preliminary support for custom blocks.

All unknown blocks are now assumed to carry data, and so this will also future proof WorldEdit (for the immediate future). However, be aware that full custom block support requires carrying TileEntity data (and perhaps other data) and that is not yet supported.
This commit is contained in:
sk89q 2012-02-05 17:46:26 -08:00
parent 4bb5b56da8
commit 09f3364d9f
2 changed files with 12 additions and 1 deletions

View File

@ -217,7 +217,7 @@ public class EditSession {
final boolean result;
if (BlockType.usesData(type)) {
if (world.usesBlockData(type)) {
if (fastMode) {
result = world.setTypeIdAndDataFast(pt, type, block.getData() > -1 ? block.getData() : 0);
} else {

View File

@ -327,6 +327,17 @@ public abstract class LocalWorld {
public boolean isValidBlockType(int type) {
return BlockType.fromID(type) != null;
}
/**
* Returns whether a block uses its data value.
*
* @param type block ID type
* @return true if the block uses data value
*/
public boolean usesBlockData(int type) {
// We future proof here by assuming all unknown blocks use data
return BlockType.usesData(type) || BlockType.fromID(type) == null;
}
/**
* Checks if the chunk pt is in is loaded. if not, loads the chunk