I have read numerous suggestions for multiline commands in a command block. This suggestion allows that capability. It's also a suggestion you can try. It's now different enough in development to warrant a new thread.
I am recommending an ExecuteFile command be added to vanilla minecraft for simple scripting.
Mapbuilders, Redstoners, ops and I feel many others have a need for scripting automation that supports command scripting from files. These files should be normal commands where each line (or statement) is executed. Further the ExecuteFile should be able to call ExecuteFile as components of a build. The files are meant for builders et al, and consist of vanilla minecraft commands. Each line is an /execute command.
I wrote a mod to develop the concept now called Commandrunnermod. It's very 1.8 beta forge, but it works for testing the idea. I used it to clarify the concept.
The benefits I sought by the implementing such a command are 1) Simplification of command logic by componentization of commands (Command files can be componentized for reuse in smaller packages that can be composed together); 2) Easy sharing of components in that command files for placement anywhere, 3) Theme support, the files can define structures or command capabilities to support themes with far less resorting to mods (e.g. structures can be placed in existing worlds), 4) Relieving work on operators though longer scripting; and 5) fits in the existing worlds in that the idea does not break legacy command blocks with a new logic.
Comments should be supported.
1) Componentization : By componentization, I mean for a castle making file invoked by "/ExecuteFile FIle Castle.caleb byline rotateplayerfacing" might be composed as following:
Castle.caleb rotateplayerfacing pseudocode does the following
|
+ clearbase.caleb
+ invokes CastleTower.caleb rotatewest
+ teleport west 200
+ invoke CastleCenter.caleb
+ teleport west 200
+ invoke CastleTower.caleb rotateeast
2) Rotation around an axis of the execute coordinates : The command should also support rotation of the commands it contains. To be useful, the same commands must move and rotate values. Any commands of Blockdata, Entitydata, Fills, tp, setblock .... and all block datavalues (e.g. stairs and wood orientation) referred to within the commands should also rotate. See the arrows with stairs in the attached images for an example of rotation. Positive Z should be south, positive X east, etc.
The stairs also rotate in the commands in the arrow.caleb file. Blockdata commands, etc
3) Cataloging - Finding the files out of a set of files is useful. The command could support a catalog function of all the files with autocomplete tab support to read the matching files.
4) Execution modes - the command could support delimiters of semicolon, or end of line and concatenation (as current blocks do).
5) File or URL, the command could allow the execution of files from a server as well as a local directory .
While suggestion here is implemented partially in a mod to clarify the concept, the utility of the concept is great.
Commands that currently exist like fill, and setblock or blockdata can be used in developing structures. Operators can automate processes and command blocks can simplify logic. The concept does not break or change the need for command blocks. Further, any structures or logic is far more sharable. Simple logic for bridges, cities, can enrich a world significantly. Thanks
Balance is maintained because the command is intended for operator permissions/command blocks.
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
Okay.. I thought I was following you pretty well.. Until you got to the "componentization" section. Seriously... What?
At first I think you're just saying a command that will simply execute a file. Simple enough. Reminds me of the "exec" command from Valve's Source engine. I made many a script with that and very much do like the idea.
But then I read the next part and I feel like you are suggesting that the file will be relative to the player's facing direction? But then I see you have commands that use X Y Z in a /fill.. I don't know if you ever made scripts for any Source games, but the commands are executed simple as that. NOTHING relative at all. And this really is the way it needs to be.
It is way too much happening with this that throwing this on an actual circuit in game would lag very hard because it's now doing completely different calculations to entirely change the actual commands you have written.
This is the job of the redstoner. Have 4 different files, one for each direction. Detect which direction the player is looking and just execute THAT file. Hell, I highly even doubt they would add support for just executing files. I would love it, but they most likely will not. And they sure as hell won't add support for the rotation thing that I still don't know if I understand correctly.
So I'll say half support.
Full support for being able to simply execute a file.
No support for adding extra non sense we don't need.
And a few questions.
If someone runs /execute @a ~ ~ ~ executefile box.txt
Will it fill a 3x3x4 box surrounding the player with 2 air blocks where every player is? Or will it run these all at 0,0 each time for each player?
I don't think each line in the file should be forced to be an /execute line. If the /executefile command is not run from an /execute command, it should be run as console at 0,0,0. And when used in /execute each line will run at that entity.
>> This is the job of the redstoner. Have 4 different files, one for each direction. Detect which direction the player is looking and just execute THAT file. Hell, I highly even doubt they would add support for just executing files. I would love it, but they most likely will not. And they sure as hell won't add support for the rotation thing that I still don't know if I understand correctly.<<
I think file execution will come... It's just too obviously missing as a feature for ops or mapbuilders once you have fills. The execute command already has some features for transforms (moving the command) and rotation, but it's not easy or manageable for the user. It's a pain to code, but quite doable. Scaling... no way.
Technical stuff
: My ancient VRML97 habits "Protos" are showing in the componentization, rotations, and transforms. I expect a minimally functional capability to have them (offsets, files that invoke files, and rotation of multiple items in the script before placing/rendering, etc). In VRML97 or HTML5 3D, componentization is key to scene composition. Rigging and componentization is very key in all games from Unity3D, Call of Duty mods in Maya to Microsoft FS 9 airplane mod. (I ain't doing that!!!!, thought jsimconnect and a tileproxy to MS FlightSim is possible).
You are probably correct on the rotation likelihood, but Mojang shoud understand that. On rotation, I considered that initially not having rotation was ok, but the overall idea doesn't carry weight, unless it's a must have for the monster map builder and huge structure red stoner who do the same things over and over at different locations and in different orientations. Big construction repetitive tasks recommend this.
Rotation and transformation (by transform move by x,y,z) are not that simple, but felt obvious once I accepted the need. It feels wrong to not have rotation. If a "house file" is built in the current design, it's "stuck" in an orientation unless the builder plans for each direction. Also it's common in in worldedit cut and paste features, although worldedit blocks have to placed in worldedit/SPC before they can be used. I think some redstoners have template circuits in MCEDIT schematics for cut and paste (and red stoners do automate). Finally, the scripts are more useful if you can use published scripts anywhere. That's partly the challenge of a redstone build, in that it's hard to give or share.
That way a shared piston castle gate that can be used on the east gate even if written as a south gate.
>>>
It's enough with the limitations and workarounds to usefully show, once I finish the rotation and cascade and that is almost done.
Nope... I had to change it... will probably change this although ExecuteFile is executes from a file. Point understood.
execute @p ~ ~ ~ fill ~-1 ~ ~1 ~1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~ ~-1 ~1 ~1 ~-1 minecraft:stone
execute @p ~ ~ ~ fill ~1 ~ ~-1 ~1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~ ~-1 ~-1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~2 ~-1 ~1 ~2 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~-1 ~-1 ~1 ~-1 ~1 minecraft:stoneexecute @p ~ ~ ~ fill ~-1 ~ ~1 ~1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~ ~-1 ~1 ~1 ~-1 minecraft:stone
execute @p ~ ~ ~ fill ~1 ~ ~-1 ~1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~ ~-1 ~-1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~2 ~-1 ~1 ~2 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~-1 ~-1 ~1 ~-1 ~1 minecraft:stone
I will probably change the commands to fill if microjang doesn't.
----- also runs a server start script on loading as an option.
Per your code,l It will run every place the selector is written for. Will test more. Whatever a standard execute would do.
------------
On writing commands as execute syntax. Yup, you are Absolutely correct, but it was the safest simplest way to deal with ugly parsing issues, without re-interpreting each command. it's a code limitation in the mods that is based on the parser for forge.
It's enough with the limitations and workarounds to usefully show, once I finish the rotation and cascade and that is almost done.
Then onto the co-command ExecuteOnEvent ... that way ordinary people can have custom generation (e.g. terrain_gen) of structures. Pyramids, pylons, cities, roads per their personal theme (/ExecuteOnEvent usereeventname terrain_gen:chat match 0.01 command) -
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
by the way...
>>It is way too much happening with this that throwing this on an actual circuit in game would lag very hard because it's now doing completely different calculations to entirely change the actual commands you have written.<<
Depends on the script writer, string manipulations are far easier to process versus IO, culling, or graphics operations. Average of 10-20 string operations per line. It's huge fills that kill performance. Hell the tab autocomplete is about the same. Your lagument doesn't convince, but I won't know for certain until I run profiling. I don't see it, but the code could be better.
Rotation is a argument on the command line btw. Nothing (positiveZ oriented), rotatewest, rotateeast, etc. Rotateplayerfacing allows the person to use their facing and coordinates. Up to the user... the code is very small (this is the code in the switch to rotatewest, and returnnegatedcoordinates is 5 lines of java).
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
When I said connected to a circuit, I didn't mean constantly happening. I meant a circuit constantly checking for when to call the /executefile command. But what if you had just regular commands, no fill's or any kind of block placement at all in a file and connected it to a command block clock?
Let's just say it only has these three lines in the file:
/scoreboard players set @e[type=Zombie] babality 1
/scoreboard players set @e[type=Zombie] babality 0 {IsBaby:1b}
/entitydata @e[type=Zombie,score_babality_min=1] {IsBaby:1b}
This simply turns every adult zombie into a baby. Would this cause lag?
Also, true, string manipulation is relatively seamless in my experience with C++ std::string's. I can't speak for java though. I kinda refuse to learn java, just cause I've been using C/C++ for a decade now. I know a lot of other languages, but even though I can use java for so many devices, I still have a stigma towards using it..
Still debugging the mod and concept. Use at own risk. More next week maybe.
Not really, at least not any more than connecting 3 redstone command blocks with 1 delay tick between them. A clock runs on an tick event. It's not a spinlock or mutex, it's a thrown event that runs on every tick I will know when I finish, but it doesn't invoke until the someone is in the area. Both commands and events are relative to the scoping. I have noticed large fills (7000 blocks+ are slow, especially when I repeat them 5 to 6 times for a city). So much changes in the scene
I will likely change the mod and the suggestion to fit minecraft syntaxes as you advise, but the transform and scaling will be the recommended way. I will also likely put in an datatag for integer loops in some form of "execute"'s loop:["XYZ",startx:,endx:,stepx:,starty:,endy:,stepy:startz,endz,stepz] to modify any execute command.
My over all plan is to make the command so useful that some form of the command is obvious.
/scoreboard players set @e[type=Zombie] babality 1
/scoreboard players set @e[type=Zombie] babality 0 {IsBaby:1b}
/entitydata @e[type=Zombie,score_babality_min=1] {IsBaby:1b}
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
I am recommending an ExecuteFile command be added to vanilla minecraft for simple scripting.
Mapbuilders, Redstoners, ops and I feel many others have a need for scripting automation that supports command scripting from files. These files should be normal commands where each line (or statement) is executed. Further the ExecuteFile should be able to call ExecuteFile as components of a build. The files are meant for builders et al, and consist of vanilla minecraft commands. Each line is an /execute command.
I wrote a mod to develop the concept now called Commandrunnermod. It's very 1.8 beta forge, but it works for testing the idea. I used it to clarify the concept.
The benefits I sought by the implementing such a command are 1) Simplification of command logic by componentization of commands (Command files can be componentized for reuse in smaller packages that can be composed together); 2) Easy sharing of components in that command files for placement anywhere, 3) Theme support, the files can define structures or command capabilities to support themes with far less resorting to mods (e.g. structures can be placed in existing worlds), 4) Relieving work on operators though longer scripting; and 5) fits in the existing worlds in that the idea does not break legacy command blocks with a new logic.
Comments should be supported.
1) Componentization : By componentization, I mean for a castle making file invoked by "/ExecuteFile FIle Castle.caleb byline rotateplayerfacing" might be composed as following:
2) Rotation around an axis of the execute coordinates : The command should also support rotation of the commands it contains. To be useful, the same commands must move and rotate values. Any commands of Blockdata, Entitydata, Fills, tp, setblock .... and all block datavalues (e.g. stairs and wood orientation) referred to within the commands should also rotate. See the arrows with stairs in the attached images for an example of rotation. Positive Z should be south, positive X east, etc.
The stairs also rotate in the commands in the arrow.caleb file. Blockdata commands, etc
3) Cataloging - Finding the files out of a set of files is useful. The command could support a catalog function of all the files with autocomplete tab support to read the matching files.
4) Execution modes - the command could support delimiters of semicolon, or end of line and concatenation (as current blocks do).
5) File or URL, the command could allow the execution of files from a server as well as a local directory .
While suggestion here is implemented partially in a mod to clarify the concept, the utility of the concept is great.
Commands that currently exist like fill, and setblock or blockdata can be used in developing structures. Operators can automate processes and command blocks can simplify logic. The concept does not break or change the need for command blocks. Further, any structures or logic is far more sharable. Simple logic for bridges, cities, can enrich a world significantly. Thanks
Balance is maintained because the command is intended for operator permissions/command blocks.
Writes the CommandRunnerMod which gives the executefile command to read commands from a file. http://mods.curse.com/mc-mods/minecraft/246088-commandrunnermod
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
rotateplayerfacing is fixed.
Writes the CommandRunnerMod which gives the executefile command to read commands from a file. http://mods.curse.com/mc-mods/minecraft/246088-commandrunnermod
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
Writes the CommandRunnerMod which gives the executefile command to read commands from a file. http://mods.curse.com/mc-mods/minecraft/246088-commandrunnermod
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
At first I think you're just saying a command that will simply execute a file. Simple enough. Reminds me of the "exec" command from Valve's Source engine. I made many a script with that and very much do like the idea.
But then I read the next part and I feel like you are suggesting that the file will be relative to the player's facing direction? But then I see you have commands that use X Y Z in a /fill.. I don't know if you ever made scripts for any Source games, but the commands are executed simple as that. NOTHING relative at all. And this really is the way it needs to be.
It is way too much happening with this that throwing this on an actual circuit in game would lag very hard because it's now doing completely different calculations to entirely change the actual commands you have written.
This is the job of the redstoner. Have 4 different files, one for each direction. Detect which direction the player is looking and just execute THAT file. Hell, I highly even doubt they would add support for just executing files. I would love it, but they most likely will not. And they sure as hell won't add support for the rotation thing that I still don't know if I understand correctly.
So I'll say half support.
Full support for being able to simply execute a file.
No support for adding extra non sense we don't need.
And a few questions.
If someone runs /execute @a ~ ~ ~ executefile box.txt
And box.txt contains
Will it fill a 3x3x4 box surrounding the player with 2 air blocks where every player is? Or will it run these all at 0,0 each time for each player?
I don't think each line in the file should be forced to be an /execute line. If the /executefile command is not run from an /execute command, it should be run as console at 0,0,0. And when used in /execute each line will run at that entity.
>> This is the job of the redstoner. Have 4 different files, one for each direction. Detect which direction the player is looking and just execute THAT file. Hell, I highly even doubt they would add support for just executing files. I would love it, but they most likely will not. And they sure as hell won't add support for the rotation thing that I still don't know if I understand correctly.<<
I think file execution will come... It's just too obviously missing as a feature for ops or mapbuilders once you have fills. The execute command already has some features for transforms (moving the command) and rotation, but it's not easy or manageable for the user. It's a pain to code, but quite doable. Scaling... no way.
Technical stuff
You are probably correct on the rotation likelihood, but Mojang shoud understand that. On rotation, I considered that initially not having rotation was ok, but the overall idea doesn't carry weight, unless it's a must have for the monster map builder and huge structure red stoner who do the same things over and over at different locations and in different orientations. Big construction repetitive tasks recommend this.
Rotation and transformation (by transform move by x,y,z) are not that simple, but felt obvious once I accepted the need. It feels wrong to not have rotation. If a "house file" is built in the current design, it's "stuck" in an orientation unless the builder plans for each direction. Also it's common in in worldedit cut and paste features, although worldedit blocks have to placed in worldedit/SPC before they can be used. I think some redstoners have template circuits in MCEDIT schematics for cut and paste (and red stoners do automate). Finally, the scripts are more useful if you can use published scripts anywhere. That's partly the challenge of a redstone build, in that it's hard to give or share.
That way a shared piston castle gate that can be used on the east gate even if written as a south gate.
>>>
It's enough with the limitations and workarounds to usefully show, once I finish the rotation and cascade and that is almost done.
Nope... I had to change it... will probably change this although ExecuteFile is executes from a file. Point understood.
execute @p ~ ~ ~ fill ~-1 ~ ~1 ~1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~ ~-1 ~1 ~1 ~-1 minecraft:stone
execute @p ~ ~ ~ fill ~1 ~ ~-1 ~1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~ ~-1 ~-1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~2 ~-1 ~1 ~2 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~-1 ~-1 ~1 ~-1 ~1 minecraft:stoneexecute @p ~ ~ ~ fill ~-1 ~ ~1 ~1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~ ~-1 ~1 ~1 ~-1 minecraft:stone
execute @p ~ ~ ~ fill ~1 ~ ~-1 ~1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~ ~-1 ~-1 ~1 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~2 ~-1 ~1 ~2 ~1 minecraft:stone
execute @p ~ ~ ~ fill ~-1 ~-1 ~-1 ~1 ~-1 ~1 minecraft:stone
I will probably change the commands to fill if microjang doesn't.
Per your code,l It will run every place the selector is written for. Will test more. Whatever a standard execute would do.
------------
On writing commands as execute syntax. Yup, you are Absolutely correct, but it was the safest simplest way to deal with ugly parsing issues, without re-interpreting each command. it's a code limitation in the mods that is based on the parser for forge.
It's enough with the limitations and workarounds to usefully show, once I finish the rotation and cascade and that is almost done.
Then onto the co-command ExecuteOnEvent ... that way ordinary people can have custom generation (e.g. terrain_gen) of structures. Pyramids, pylons, cities, roads per their personal theme (/ExecuteOnEvent usereeventname terrain_gen:chat match 0.01 command) -
Writes the CommandRunnerMod which gives the executefile command to read commands from a file. http://mods.curse.com/mc-mods/minecraft/246088-commandrunnermod
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
>>It is way too much happening with this that throwing this on an actual circuit in game would lag very hard because it's now doing completely different calculations to entirely change the actual commands you have written.<<
Depends on the script writer, string manipulations are far easier to process versus IO, culling, or graphics operations. Average of 10-20 string operations per line. It's huge fills that kill performance. Hell the tab autocomplete is about the same. Your lagument doesn't convince, but I won't know for certain until I run profiling. I don't see it, but the code could be better.
Rotation is a argument on the command line btw. Nothing (positiveZ oriented), rotatewest, rotateeast, etc. Rotateplayerfacing allows the person to use their facing and coordinates. Up to the user... the code is very small (this is the code in the switch to rotatewest, and returnnegatedcoordinates is 5 lines of java).
Lag is in the scripter code..
Lot's of fixes needed though.
Writes the CommandRunnerMod which gives the executefile command to read commands from a file. http://mods.curse.com/mc-mods/minecraft/246088-commandrunnermod
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
Let's just say it only has these three lines in the file: This simply turns every adult zombie into a baby. Would this cause lag?
Also, true, string manipulation is relatively seamless in my experience with C++ std::string's. I can't speak for java though. I kinda refuse to learn java, just cause I've been using C/C++ for a decade now. I know a lot of other languages, but even though I can use java for so many devices, I still have a stigma towards using it..
Not really, at least not any more than connecting 3 redstone command blocks with 1 delay tick between them. A clock runs on an tick event. It's not a spinlock or mutex, it's a thrown event that runs on every tick I will know when I finish, but it doesn't invoke until the someone is in the area. Both commands and events are relative to the scoping. I have noticed large fills (7000 blocks+ are slow, especially when I repeat them 5 to 6 times for a city). So much changes in the scene
I will likely change the mod and the suggestion to fit minecraft syntaxes as you advise, but the transform and scaling will be the recommended way. I will also likely put in an datatag for integer loops in some form of "execute"'s loop:["XYZ",startx:,endx:,stepx:,starty:,endy:,stepy:startz,endz,stepz] to modify any execute command.
My over all plan is to make the command so useful that some form of the command is obvious.
Writes the CommandRunnerMod which gives the executefile command to read commands from a file. http://mods.curse.com/mc-mods/minecraft/246088-commandrunnermod
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.
You haven't really provided it to us so we have no risk to take
Sorry, I posted it elsewhere, but not the site here.
It's at http://commandrunnermod.com ... because I don't like ads or adf.ly or green download banners that try to sell me stuff.
The 1.2 version is the current release. Lots of debug output, but mostly works.
/ExecuteFile File City2.caleb byline rotateplayerfacing cascade
URL option does not work yet so no /ExecuteFile URL http://localhost/mycity.caleb yet.
/execute should be used on all lines for now.
Writes the CommandRunnerMod which gives the executefile command to read commands from a file. http://mods.curse.com/mc-mods/minecraft/246088-commandrunnermod
Largest file loaded is 90K commands from a command_block.
Lasted Updated Aug 7 2016 ... 1.9 to 1.10.2 Also the BlockDumpMod gives blockdump command which writes blocks to a text file as execute setblock commands or gives a report.