I am proposing a new command block GUI that better complements the new 'chain' setup and other improvements.
It would allow for text wrapping in the command lines, the ability to paste-in several commands at once, and automatically change any command block after the first one to "Chain" mode, among other things.
I like the features this new GUI adds, but vanilla GUI looks much better (cleaner)
It also not really clear how does "Previous output" field behaves when there's multiple commands outputting messages.
I used the same textures as default GUI, and even made it "cleaner" by make the Command Block Selector buttons smaller, and got rid of the Target information text. I'm not sure how much cleaner you can get. Also, the "Previous Output" will be displayed for the block that has the "X" ticked. My 'Figure 5' explains everything.
By "cleaner," I meant the positioning of the elements (although vanilla GUI has some misalignment). The buttons at the bottom are looking detached from the rows of command widgets.
Sorry, I didn't noticed the label "outputs from whichever ...," but it doesn't really helpful, because there might occur an error from one of the 5 command blocks, and which of them has an error (we're assuming that X button is near the one command that doesn't triggered error)?
Oh I gotcha...the cosmetics can likely be done differently. I just took a screenshot of a command interface and did a bunch of photoshopping to make this. My main goal though was to clearly show my functionality ideas, so I just came up with the visual design on the spot to help with that.
As for the "Previous Output", I didn't figure it'd be too hard to locate the command block that failed, because you'd know which one it was when you ran the commands. But a good implementation could be to highlight the button red or something when a command fails for easy identification.
For the /clone command or any other that requires coordinates at the beginning of the command, you can use the TAB key to auto-fill the coordinates.
For example:
- Look at first block, then type "/clone", then SPACE TAB SPACE TAB SPACE TAB and press ENTER
- Then look at the second block, type "/", press the UP ARROW key, then SPACE TAB SPACE TAB SPACE TAB, ENTER
- Then look at the lowest coordinate block you want to clone to, type: "/", press UP ARROW key, then SPACE TAB SPACE TAB SPACE TAB, but don't press ENTER this time or the command will execute. Instead, do CTRL+A, then CTRL+C to copy it. Then you can paste into command block and add the remaining arguments, or add the arguments prior to copying.
The tab auto-fill will only work when the spacing is correct...like, you gotta have a space after "/clone", and a space between each coordinate.
If you already know this, then I apologize for the redundancy, but maybe it'll hep someone else too.
Oh yeah, it's super helpful. I made a macro key for '_TAB_TAB_TAB', makes it way easier. Also if you didn't already know, you can use TAB to auto-fill many command parameters. Like, type "/ex" then hit TAB and it will fill /execute" for you. Especially useful for things like "minecraft:redstone_block"...just type "reds" then hit tab a few (5) times and it's there. TAB is VERY useful.
And yes, a WorldEdit-like feature would be awesome. But I would want it to include a WorldEditCUI function as well, that highlights the selected blocks with a different color, or some border-type thing like the Structure Block does.
Partly support. Each command has a dependency. I'd want GUI to have a test for the success of a prior command and have an FAIL/NOT FAIL exception command on the results. (On Fail do xxxx.) Without exception processing in the suggested GUI, it's not useful enough to handling complexity.
I've looked at this quite a bit. You can try out a similar concept with the mod commandrunnermod that run a file of commands from a directory with a /executefile command. It's a vanilla minecraft suggestion that was turned into a mod. You can place /executefile in a command block.
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.
Partly support. Each command has a dependency. I'd want GUI to have a test for the success of a prior command and have an FAIL/NOT FAIL exception command on the results. (On Fail do xxxx.) Without exception processing in the suggested GUI, it's not useful enough to handling complexity.
I've looked at this quite a bit. You can try out a similar concept with the mod commandrunnermod that run a file of commands from a directory with a /executefile command. It's a vanilla minecraft suggestion that was turned into a mod. You can place /executefile in a command block.
I do agree that we should have 'if true/if false' conditioning for our commands. Perhaps an easier implementation would be 'Conditional True -> Conditional False -> Unconditional'. And in addition, the output for each command line could display an icon to say if it 'succeeded' or 'did not succeed', i.e. the 'X' and 'O', but commands with bad syntaxes or 'did not succeed' for whatever others reasons can be highlighted for easy debugging.
----------
But in the meantime, for testing for a 'fail / false / did not succeed', I do this:
For example, I want to test if an entity has a tag of "Test". If it does, then remove the tag "Test", if not, add the tag "Test".
If I run a normal chain:
/scoreboard players tag @e[tag=Test] remove Test
/scoreboard players tag @e[tag=!Test] add Test
...the result will always end with the tag "Test" being added, because the first line removes the tag if it exists, but the next line re-adds it because it now does not have the tag by the time the command runs.
So I use the "Needs Redstone" option for the second command, and add a Conditional command to set Air over it, then a final command to reset the Redstone Block:
1: /scoreboard players tag @e[tag=Test] remove Test
2: /setblock ~1 ~1 ~ minecraft:air ------------------------------ #This block is Conditional to command #1
3: /scoreboard players tag @e[tag=!Test] add Test -------- #Use 'Needs Redstone'
4: /setblock ~-1 ~1 ~ minecraft:redstone_block
If command #1 is true, then command #3 will not run, because the Redstone Block is replaced with Air. It will be skipped as if it were not even there.
If command #1 if false, it then runs command #3 as normal.
----------
And thanks for the info on the "commandrunnermod". It looks pretty neat, but I won't use it because I want my worlds to run in Vanilla only. EDIT: Unless I can use it to /setblock a bunch of command blocks with commands in them. I basically want to take hundreds of command lines from Notepad++ and paste them into Minecraft command blocks. This mod might actually work for that, with only small changes to my code for "/execute"ing and "/setblock"ing, which can easily be done in Excel.
I do agree that we should have 'if true/if false' conditioning for our commands. Perhaps an easier implementation would be 'Conditional True -> Conditional False -> Unconditional'. And in addition, the output for each command line could display an icon to say if it 'succeeded' or 'did not succeed', i.e. the 'X' and 'O', but commands with bad syntaxes or 'did not succeed' for whatever others reasons can be highlighted for easy debugging.
----------
But in the meantime, for testing for a 'fail / false / did not succeed', I do this:
For example, I want to test if an entity has a tag of "Test". If it does, then remove the tag "Test", if not, add the tag "Test".
If I run a normal chain:
...the result will always end with the tag "Test" being added, because the first line removes the tag if it exists, but the next line re-adds it because it now does not have the tag by the time the command runs.
So I use the "Needs Redstone" option for the second command, and add a Conditional command to set Air over it, then a final command to reset the Redstone Block:
If command #1 is true, then command #3 will not run, because the Redstone Block is replaced with Air. It will be skipped as if it were not even there.
If command #1 if false, it then runs command #3 as normal.
----------
False and fail are two different things in the application. False is an exception, where the command failed to execute. False is - did not meet a condition such as a test. Both are needed and need to handled differently for each. A command can return false or throw an error.
And thanks for the info on the "commandrunnermod". It looks pretty neat, but I won't use it because I want my worlds to run in Vanilla only. EDIT: Unless I can use it to /setblock a bunch of command blocks with commands in them. I basically want to take hundreds of command lines from Notepad++ and paste them into Minecraft command blocks. This mod might actually work for that, with only small changes to my code for "/execute"ing and "/setblock"ing, which can easily be done in Excel.
Yes, it can. You may also need to replace commands (e.g. playsound changed). I have a companion mod in curse called BlockDump which is also a suggestion (along with executefile) to dump blocks to a file for notepad ++. I think both of these along with others are too handy a concept to not have in vanilla. I write little script programs to do things like convert blueprint pics to maps or to color stained glass. POST ISSUES PLEASE.
It's very beta, but using it may help you flesh out concepts.
Implications of the multi-line design would affect how to ...
1) implement a wait command/macro in command blocks. Halts execution until a timer or condition is met. This is a common request.
2) implement to allow macros in command blocks. Include math and string functions. I hate not having math functions. Sine, cosine, arithmetic, and a string function set scoped to the command. Scoped variables would be handy as hell. Math is a missing feature in minecraft.
3) implement either an executefile command or easy to use multiline command blocks that load from a file. Multi-line command blocks is a common want. JSON is insanely hard to parse mentally for those not thinking like a compiler/parser, especially when it's not formatted into a tree. Give us an external editor for text. If structure blocks can load, so should command blocks.
4) implement some utility commands (e.g. blockdump) to assist in upgrading command blocks (e.g. Some mass edit would've been a huge plus when playsound was changed to add <source> for a person who used it in 100's of command blocks).
5) implement how to do rotation of command blocks and the nbt strings in them. This is an area that deeply affects the utility of structure blocks also, as the command blocks inside an SB saved file don't rotate at all. If a command block is placed in a SB file, You'd want the commands inside the captured area to rotate also. (If my commandblock has a setblock, it should rotate the setblock coords in the commandblock.)
I like the idea, though working out it in a design has implications.
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 proposing a new command block GUI that better complements the new 'chain' setup and other improvements.
It would allow for text wrapping in the command lines, the ability to paste-in several commands at once, and automatically change any command block after the first one to "Chain" mode, among other things.
Here are pics to better explain my idea:
Figure 1
This image shows what the command interface would be with just one block, one command.
Figure 2
This image shows the command interface of the first block in a two-block chain.
Figure 3
This image shows multiple command blocks in a chain, and shows the addition of a scroll bar.
Figure 4
This image shows and example of how text-wrapping would look.
Figure 5
This image has markups to explain everything.
Thanks for looking!
I don't really understand much of it (I never did much command block stuff) but this looks pretty cool.
I used the same textures as default GUI, and even made it "cleaner" by make the Command Block Selector buttons smaller, and got rid of the Target information text. I'm not sure how much cleaner you can get. Also, the "Previous Output" will be displayed for the block that has the "X" ticked. My 'Figure 5' explains everything.
Oh I gotcha...the cosmetics can likely be done differently. I just took a screenshot of a command interface and did a bunch of photoshopping to make this. My main goal though was to clearly show my functionality ideas, so I just came up with the visual design on the spot to help with that.
As for the "Previous Output", I didn't figure it'd be too hard to locate the command block that failed, because you'd know which one it was when you ran the commands. But a good implementation could be to highlight the button red or something when a command fails for easy identification.
For the /clone command or any other that requires coordinates at the beginning of the command, you can use the TAB key to auto-fill the coordinates.
For example:
- Look at first block, then type "/clone", then SPACE TAB SPACE TAB SPACE TAB and press ENTER
- Then look at the second block, type "/", press the UP ARROW key, then SPACE TAB SPACE TAB SPACE TAB, ENTER
- Then look at the lowest coordinate block you want to clone to, type: "/", press UP ARROW key, then SPACE TAB SPACE TAB SPACE TAB, but don't press ENTER this time or the command will execute. Instead, do CTRL+A, then CTRL+C to copy it. Then you can paste into command block and add the remaining arguments, or add the arguments prior to copying.
The tab auto-fill will only work when the spacing is correct...like, you gotta have a space after "/clone", and a space between each coordinate.
If you already know this, then I apologize for the redundancy, but maybe it'll hep someone else too.
Oh yeah, it's super helpful. I made a macro key for '_TAB_TAB_TAB', makes it way easier. Also if you didn't already know, you can use TAB to auto-fill many command parameters. Like, type "/ex" then hit TAB and it will fill /execute" for you. Especially useful for things like "minecraft:redstone_block"...just type "reds" then hit tab a few (5) times and it's there. TAB is VERY useful.
And yes, a WorldEdit-like feature would be awesome. But I would want it to include a WorldEditCUI function as well, that highlights the selected blocks with a different color, or some border-type thing like the Structure Block does.
Partly support. Each command has a dependency. I'd want GUI to have a test for the success of a prior command and have an FAIL/NOT FAIL exception command on the results. (On Fail do xxxx.) Without exception processing in the suggested GUI, it's not useful enough to handling complexity.
I've looked at this quite a bit. You can try out a similar concept with the mod commandrunnermod that run a file of commands from a directory with a /executefile command. It's a vanilla minecraft suggestion that was turned into a mod. You can place /executefile in a command block.
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.
I do agree that we should have 'if true/if false' conditioning for our commands. Perhaps an easier implementation would be 'Conditional True -> Conditional False -> Unconditional'. And in addition, the output for each command line could display an icon to say if it 'succeeded' or 'did not succeed', i.e. the 'X' and 'O', but commands with bad syntaxes or 'did not succeed' for whatever others reasons can be highlighted for easy debugging.
----------
But in the meantime, for testing for a 'fail / false / did not succeed', I do this:
For example, I want to test if an entity has a tag of "Test". If it does, then remove the tag "Test", if not, add the tag "Test".
If I run a normal chain:
...the result will always end with the tag "Test" being added, because the first line removes the tag if it exists, but the next line re-adds it because it now does not have the tag by the time the command runs.
So I use the "Needs Redstone" option for the second command, and add a Conditional command to set Air over it, then a final command to reset the Redstone Block:
If command #1 is true, then command #3 will not run, because the Redstone Block is replaced with Air. It will be skipped as if it were not even there.
If command #1 if false, it then runs command #3 as normal.
----------
And thanks for the info on the "commandrunnermod". It looks pretty neat, but I won't use it because I want my worlds to run in Vanilla only. EDIT: Unless I can use it to /setblock a bunch of command blocks with commands in them. I basically want to take hundreds of command lines from Notepad++ and paste them into Minecraft command blocks. This mod might actually work for that, with only small changes to my code for "/execute"ing and "/setblock"ing, which can easily be done in Excel.
False and fail are two different things in the application. False is an exception, where the command failed to execute. False is - did not meet a condition such as a test. Both are needed and need to handled differently for each. A command can return false or throw an error.
And thanks for the info on the "commandrunnermod". It looks pretty neat,
but I won't use it because I want my worlds to run in Vanilla only.
EDIT: Unless I can use it to /setblock a bunch of command blocks with
commands in them. I basically want to take hundreds of command lines
from Notepad++ and paste them into Minecraft command blocks. This mod
might actually work for that, with only small changes to my code for
"/execute"ing and "/setblock"ing, which can easily be done in Excel.
Yes, it can. You may also need to replace commands (e.g. playsound changed). I have a companion mod in curse called BlockDump which is also a suggestion (along with executefile) to dump blocks to a file for notepad ++. I think both of these along with others are too handy a concept to not have in vanilla. I write little script programs to do things like convert blueprint pics to maps or to color stained glass. POST ISSUES PLEASE.
It's very beta, but using it may help you flesh out concepts.
-------------------------------------------------------------------------------------
Deeper in ...
Implications of the multi-line design would affect how to ...
1) implement a wait command/macro in command blocks. Halts execution until a timer or condition is met. This is a common request.
2) implement to allow macros in command blocks. Include math and string functions. I hate not having math functions. Sine, cosine, arithmetic, and a string function set scoped to the command. Scoped variables would be handy as hell. Math is a missing feature in minecraft.
3) implement either an executefile command or easy to use multiline command blocks that load from a file. Multi-line command blocks is a common want. JSON is insanely hard to parse mentally for those not thinking like a compiler/parser, especially when it's not formatted into a tree. Give us an external editor for text. If structure blocks can load, so should command blocks.
4) implement some utility commands (e.g. blockdump) to assist in upgrading command blocks (e.g. Some mass edit would've been a huge plus when playsound was changed to add <source> for a person who used it in 100's of command blocks).
5) implement how to do rotation of command blocks and the nbt strings in them. This is an area that deeply affects the utility of structure blocks also, as the command blocks inside an SB saved file don't rotate at all. If a command block is placed in a SB file, You'd want the commands inside the captured area to rotate also. (If my commandblock has a setblock, it should rotate the setblock coords in the commandblock.)
I like the idea, though working out it in a design has implications.
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.