When you're using /fill and you're replacing a specific block, you can't place a block with a name containing an underscore (_). In my case I was using this command:
/fill 952 38 1021 894 43 1029 piston_extension 0 replace lapis_ore
I got the following output: Data tag parsing failed: Unable to locate name/value separator for string: lapis_ore.
The command did work after replacing "piston_extension" with something like glass or stone, but it also didn't work with blocks like gold_block.
Linked issues
duplicates 1
Attachments
Comments 27
After restarting the game, it does work with any block but piston_extension.
Block 36, correct? The invisible block?
You don't need it any more anyways, use "barrier".
It's indeed block 36, but in my case I want to have a block which you can't interact with and can't see, so the barrier can't be used for that unfortunately...

Edit: Nevermind.
This issue still exists in 1.8.2-pre1.
The issue is that the piston_extension block expects a data tag in the command, but you haven't given it one.
this bug happens because some blocks like flower_pot, chest, etc have data tags like {items:[]}
if you try to fill with those blocks, after replace you should specify the data tag of the block, instead the block you want to replace.
still is a bug, and should be fixed

This has nothing to do with underscores, as lapis_ore, sea_lantern and redstone_block all work for example.
This is caused because tile entities or block entities are not support in the replace command.
Searge explains it at MC-61864
This report should linked to that one.

Thanks. Relinked all duplicates of this ticket to MC-61864
Cannot reproduce. See screenshots.
Please force a crash by pressing and holding F3+C for 10 seconds.