public void run() {
		if (!parent.getConfigu().getBool(
				Config.Option.DisableEditDupeProtection)) {
			for (@SuppressWarnings("rawtypes")
			Map.Entry e : parent.map.entrySet()) {
				@SuppressWarnings("rawtypes")
				Iterator i = ((CBlock) e.getValue()).getBlocks();
				while (i.hasNext()) {
					Block b = Util
							.getBlockAtLocation(((BlockDesc) i.next()).blockLoc);
					if (!Util.typeEquals(b.getType(),
							((CBlock) e.getValue()).getType())) {
						parent.log
								.debug("Block at "
										+ Util.formatLocation(b.getLocation())
										+ " was " + b.getType()
										+ " but expected "
										+ ((CBlock) e.getValue()).getType()
										+ ", dupe!");
						i.remove();
						((Player) e.getKey())
								.sendMessage("Removing block due to changed while editing "
										+ Util.formatBlockCount((CBlock) e
												.getValue()));
						return;
					}
				}
			}
		}
		for (@SuppressWarnings("rawtypes")
		Map.Entry e : parent.map.entrySet()) {
			@SuppressWarnings("rawtypes")
			Iterator i = ((CBlock) e.getValue()).getBlocks();
			while (i.hasNext()) {
				BlockDesc d = (BlockDesc) i.next();
				Block b = Util.getBlockAtLocation(d.blockLoc);
				d.blockData = b.getState().getData().getData();
			}
		}
	}