if(hackableBlockClazz != entry.getValue().getClass() || !entry.getValue().canHack(entry.getKey().world, entry.getKey().x, entry.getKey().y, entry.getKey().z, player) && !isInDisplayCooldown(entry.getValue(), entry.getKey().world, entry.getKey().x, entry.getKey().y, entry.getKey().z, player)) iterator.remove();
}
Block block = world.getBlock(x, y, z);
if(block instanceof IHackableBlock && ((IHackableBlock)block).canHack(world, x, y, z, player)) return (IHackableBlock)block;
IHackableBlock hackable = getInstance().trackedHackableBlocks.get(new WorldAndCoord(world, x, y, z));
if(hackable == null) {
if(!PneumaticCraftAPIHandler.getInstance().hackableBlocks.containsKey(block)) return null;
try {
hackable = PneumaticCraftAPIHandler.getInstance().hackableBlocks.get(block).newInstance();
if(hackable.canHack(world, x, y, z, player)) {
getInstance().trackedHackableBlocks.put(new WorldAndCoord(world, x, y, z), hackable);
} else {
hackable = null;
}
} catch(Exception e) {
//shouldn't happen, checked earlier.