Difference between revisions of "Commands.exec"

From ComputerCraft Wiki
Jump to: navigation, search
(More info.)
m
 
(7 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
|name=commands.exec
 
|name=commands.exec
 
|args={{type|string}} command
 
|args={{type|string}} command
|returns={{type|boolean}} success [<nowiki/>, {{type|string}} error]
+
|returns={{type|boolean}} success, {{type|table}} output
 
|api=commands
 
|api=commands
 
|addon=ComputerCraft
 
|addon=ComputerCraft
|desc=Available only to [[Command Computer]]s, executes the command <var>command</var>, [[os.pullEvent|yields]] until the result is determined, then returns it. If command executes successfully then it returns <var>true</var>, otherwise returns <var>false</var> + an error message.
+
|desc=Available only to [[Command Computer]]s, executes the specified [https://minecraft.gamepedia.com/Commands Minecraft command], [[os.pullEvent|yields]] until the result is determined, then returns it. If command executes successfully then it returns <var>true</var> + the output of the command as a numerically-indexed table, otherwise returns <var>false</var> + an error message as as a numerically-indexed table. Compare [[commands.execAsync]], which ignores the result and returns immediately, without yielding.
 
+
<br/>
Accepts multiple parameters, in much the same manner as [[print]], so long as they can all be serialised into one string. For example, ''commands.exec("setblock 0 70 0 minecraft:stone 0")'' is treated the same as ''commands.exec("setblock", 0, 70, 0, "minecraft:stone", 0)''. If one of the parameters is a table, it will be automatically [[textutils.serializeJSON|textutils.serializeJSON()'d]] (handy for dynamically generating [http://minecraft.gamepedia.com/Tutorials/Command_NBT_Tags NBT representations]).
+
In ComputerCraft 1.71+ instead of just returning a {{type|boolean}} and an optional error message ({{type|string}}) this function also returns the output of the command in a numerically-indexed table, where each line of the output is put in a separate index. This output is the same as if you would run the command in chat. See example below for an example of this table.<br/>
 
+
<br/>
 +
As of ComputerCraft 1.71 this function is also available in the global environment ( <var>_G</var> ) as just <var>exec</var>.<br/>
 +
<br/>
 
Most commands returned by [[commands.list]]() are also available as functions, such that ''commands.exec(command)'' could also be written as ''commands.command(par1, par2, ...)'' - eg, ''commands.exec("msg @p Hello world!")'' becomes ''commands.msg("@p Hello world!")''.
 
Most commands returned by [[commands.list]]() are also available as functions, such that ''commands.exec(command)'' could also be written as ''commands.command(par1, par2, ...)'' - eg, ''commands.exec("msg @p Hello world!")'' becomes ''commands.msg("@p Hello world!")''.
 
|examples=
 
|examples=
Line 26: Line 28:
 
   [[print]]( "There are no players around me." )
 
   [[print]]( "There are no players around me." )
 
  end
 
  end
 +
}}
 +
{{Example
 +
|desc=Prints the output after running the command "help". ''Requires ComputerCraft 1.71+.''
 +
|code=local success, output = '''commands.exec( "help" )'''
 +
 +
if success then
 +
  [[print]]( [[textutils.serialize]]( output ) )
 +
end
 +
|output=Example output:
 +
{
 +
  "--- Showing help page 1 of 5 (/help <page>) ---",
 +
  "/achievement give <stat_name> [player]",
 +
  "/clear <player> [item] [data]",
 +
  "/defaultgamemode <mode>",
 +
  "/difficulty <new difficulty>",
 +
  "/effect <player> <effect> [seconds] [amplifier]",
 +
  "/enchant <player> <enchantment ID> [level]",
 +
  "Use /forge <subcommand>. Subcommands are tps, track",
 +
}
 +
&nbsp;
 
}}
 
}}
 
}}
 
}}

Latest revision as of 07:06, 4 August 2020


Grid Redstone.png  Function commands.exec
Available only to Command Computers, executes the specified Minecraft command, yields until the result is determined, then returns it. If command executes successfully then it returns true + the output of the command as a numerically-indexed table, otherwise returns false + an error message as as a numerically-indexed table. Compare commands.execAsync, which ignores the result and returns immediately, without yielding.


In ComputerCraft 1.71+ instead of just returning a boolean and an optional error message (string) this function also returns the output of the command in a numerically-indexed table, where each line of the output is put in a separate index. This output is the same as if you would run the command in chat. See example below for an example of this table.

As of ComputerCraft 1.71 this function is also available in the global environment ( _G ) as just exec.

Most commands returned by commands.list() are also available as functions, such that commands.exec(command) could also be written as commands.command(par1, par2, ...) - eg, commands.exec("msg @p Hello world!") becomes commands.msg("@p Hello world!").
Syntax commands.exec(string command)
Returns boolean success, table output
Part of ComputerCraft
API commands

Examples

Grid paper.png  Example
Says 'Hello' to the player, closest to the Command Computer.
Code
commands.exec( "say @p Hello" )



Grid paper.png  Example
Checks if there are any players around the Command Computer in 2 block radius.
Code
local radius = 2
local arePlayersAround = commands.exec( "testfor @a[r=" .. radius .. "]")

if arePlayersAround then
  print( "There is one or more players around me." )
else
  print( "There are no players around me." )
end



Grid paper.png  Example
Prints the output after running the command "help". Requires ComputerCraft 1.71+.
Code
local success, output = commands.exec( "help" )

if success then
  print( textutils.serialize( output ) )
end
Output Example output:
{
  "--- Showing help page 1 of 5 (/help <page>) ---",
  "/achievement give <stat_name> [player]",
  "/clear <player> [item] [data]",
  "/defaultgamemode <mode>",
  "/difficulty <new difficulty>",
  "/effect <player> <effect> [seconds] [amplifier]",
  "/enchant <player> <enchantment ID> [level]",
  "Use /forge <subcommand>. Subcommands are tps, track",
}
 


Grid disk.png Commands API Functions
commands.exec - commands.execAsync - commands.list - commands.getBlockPosition - commands.getBlockInfo - commands.getBlockInfos