Fixed valid block check to not include items

This commit is contained in:
zml2008 2012-10-18 19:38:15 -07:00
parent a690d5782f
commit 2221eae36a

View File

@ -82,11 +82,12 @@ import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.util.TreeGenerator; import com.sk89q.worldedit.util.TreeGenerator;
public class BukkitWorld extends LocalWorld { public class BukkitWorld extends LocalWorld {
private static final Logger logger = Logger.getLogger(BukkitWorld.class.getCanonicalName()); private static final Logger logger = Logger.getLogger(BukkitWorld.class.getCanonicalName());
private World world; private World world;
private boolean skipNmsAccess = false; private boolean skipNmsAccess = false;
private boolean skipNmsSafeSet = false; private boolean skipNmsSafeSet = false;
private boolean skipNmsValidBlockCheck = false;
/** /**
* Construct the object. * Construct the object.
@ -866,7 +867,15 @@ public class BukkitWorld extends LocalWorld {
*/ */
@Override @Override
public boolean isValidBlockType(int type) { public boolean isValidBlockType(int type) {
return type <= 4095 && Material.getMaterial(type) != null; if (!skipNmsValidBlockCheck) {
try {
return type >=0 && type < net.minecraft.server.Block.byId.length
&& net.minecraft.server.Block.byId[type] != null;
} catch (Exception e) {
logger.log(Level.SEVERE, "Error checking NMS valid block type", e);
}
}
return Material.getMaterial(type) != null && Material.getMaterial(type).isBlock();
} }
@Override @Override
@ -987,10 +996,10 @@ public class BukkitWorld extends LocalWorld {
} }
} }
} }
return super.getBlock(pt); return super.getBlock(pt);
} }
@Override @Override
public boolean setBlock(Vector pt, com.sk89q.worldedit.foundation.Block block, boolean notifyAdjacent) { public boolean setBlock(Vector pt, com.sk89q.worldedit.foundation.Block block, boolean notifyAdjacent) {
if (!skipNmsSafeSet) { if (!skipNmsSafeSet) {
@ -1002,7 +1011,7 @@ public class BukkitWorld extends LocalWorld {
skipNmsSafeSet = true; skipNmsSafeSet = true;
} }
} }
return super.setBlock(pt, block, notifyAdjacent); return super.setBlock(pt, block, notifyAdjacent);
} }
} }