Added a "hand" pseudo block type that uses the currently selected block.

This commit is contained in:
TomyLobo 2013-11-03 19:34:46 +01:00
parent 8319eb6d91
commit 768adee389

View File

@ -397,44 +397,55 @@ public class WorldEdit {
int data = -1;
boolean parseDataValue = true;
if ("hand".equalsIgnoreCase(testID)) {
// Get the block type from the item in the user's hand.
final BaseBlock blockInHand = player.getBlockInHand();
if (blockInHand.getClass() != BaseBlock.class) {
return blockInHand;
}
// Attempt to parse the item ID or otherwise resolve an item/block
// name to its numeric ID
try {
blockId = Integer.parseInt(testID);
blockId = blockInHand.getId();
blockType = BlockType.fromID(blockId);
} catch (NumberFormatException e) {
blockType = BlockType.lookup(testID);
if (blockType == null) {
int t = server.resolveItem(testID);
if (t > 0) {
blockType = BlockType.fromID(t); // Could be null
blockId = t;
data = blockInHand.getData();
} else {
// Attempt to parse the item ID or otherwise resolve an item/block
// name to its numeric ID
try {
blockId = Integer.parseInt(testID);
blockType = BlockType.fromID(blockId);
} catch (NumberFormatException e) {
blockType = BlockType.lookup(testID);
if (blockType == null) {
int t = server.resolveItem(testID);
if (t > 0) {
blockType = BlockType.fromID(t); // Could be null
blockId = t;
}
}
}
}
if (blockId == -1 && blockType == null) {
// Maybe it's a cloth
ClothColor col = ClothColor.lookup(testID);
if (col == null) {
throw new UnknownItemException(arg);
if (blockId == -1 && blockType == null) {
// Maybe it's a cloth
ClothColor col = ClothColor.lookup(testID);
if (col == null) {
throw new UnknownItemException(arg);
}
blockType = BlockType.CLOTH;
data = col.getID();
// Prevent overriding the data value
parseDataValue = false;
}
blockType = BlockType.CLOTH;
data = col.getID();
// Read block ID
if (blockId == -1) {
blockId = blockType.getID();
}
// Prevent overriding the data value
parseDataValue = false;
}
// Read block ID
if (blockId == -1) {
blockId = blockType.getID();
}
if (!player.getWorld().isValidBlockType(blockId)) {
throw new UnknownItemException(arg);
if (!player.getWorld().isValidBlockType(blockId)) {
throw new UnknownItemException(arg);
}
}
if (!allowNoData && data == -1) {