mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2024-12-15 04:30:29 +00:00
895bc7721a
This adds SPDX license headers to all source code files, following the REUSE[1] specification. This does not include any asset files (such as generated JSON files, or textures). While REUSE does support doing so with ".license" files, for now we define these licences using the .reuse/dep5 file. [1]: https://reuse.software/
143 lines
4.8 KiB
Lua
143 lines
4.8 KiB
Lua
-- SPDX-FileCopyrightText: 2020 The CC: Tweaked Developers
|
|
--
|
|
-- SPDX-License-Identifier: LicenseRef-CCPL
|
|
|
|
--[[-
|
|
Functions in the global environment, defined in `bios.lua`. This does not
|
|
include standard Lua functions.
|
|
|
|
@module _G
|
|
]]
|
|
|
|
--[[- Pauses execution for the specified number of seconds.
|
|
|
|
As it waits for a fixed amount of world ticks, `time` will automatically be
|
|
rounded up to the nearest multiple of 0.05 seconds. If you are using coroutines
|
|
or the @{parallel|parallel API}, it will only pause execution of the current
|
|
thread, not the whole program.
|
|
|
|
:::tip
|
|
Because sleep internally uses timers, it is a function that yields. This means
|
|
that you can use it to prevent "Too long without yielding" errors. However, as
|
|
the minimum sleep time is 0.05 seconds, it will slow your program down.
|
|
:::
|
|
|
|
:::caution
|
|
Internally, this function queues and waits for a timer event (using
|
|
@{os.startTimer}), however it does not listen for any other events. This means
|
|
that any event that occurs while sleeping will be entirely discarded. If you
|
|
need to receive events while sleeping, consider using @{os.startTimer|timers},
|
|
or the @{parallel|parallel API}.
|
|
:::
|
|
|
|
@tparam number time The number of seconds to sleep for, rounded up to the
|
|
nearest multiple of 0.05.
|
|
|
|
@see os.startTimer
|
|
@usage Sleep for three seconds.
|
|
|
|
print("Sleeping for three seconds")
|
|
sleep(3)
|
|
print("Done!")
|
|
]]
|
|
function sleep(time) end
|
|
|
|
--- Writes a line of text to the screen without a newline at the end, wrapping
|
|
-- text if necessary.
|
|
--
|
|
-- @tparam string text The text to write to the string
|
|
-- @treturn number The number of lines written
|
|
-- @see print A wrapper around write that adds a newline and accepts multiple arguments
|
|
-- @usage write("Hello, world")
|
|
function write(text) end
|
|
|
|
--- Prints the specified values to the screen separated by spaces, wrapping if
|
|
-- necessary. After printing, the cursor is moved to the next line.
|
|
--
|
|
-- @param ... The values to print on the screen
|
|
-- @treturn number The number of lines written
|
|
-- @usage print("Hello, world!")
|
|
function print(...) end
|
|
|
|
--- Prints the specified values to the screen in red, separated by spaces,
|
|
-- wrapping if necessary. After printing, the cursor is moved to the next line.
|
|
--
|
|
-- @param ... The values to print on the screen
|
|
-- @usage printError("Something went wrong!")
|
|
function printError(...) end
|
|
|
|
--[[- Reads user input from the terminal. This automatically handles arrow keys,
|
|
pasting, character replacement, history scrollback, auto-completion, and
|
|
default values.
|
|
|
|
@tparam[opt] string replaceChar A character to replace each typed character with.
|
|
This can be used for hiding passwords, for example.
|
|
@tparam[opt] table history A table holding history items that can be scrolled
|
|
back to with the up/down arrow keys. The oldest item is at index 1, while the
|
|
newest item is at the highest index.
|
|
@tparam[opt] function(partial: string):({ string... }|nil) completeFn A function
|
|
to be used for completion. This function should take the partial text typed so
|
|
far, and returns a list of possible completion options.
|
|
@tparam[opt] string default Default text which should already be entered into
|
|
the prompt.
|
|
|
|
@treturn string The text typed in.
|
|
|
|
@see cc.completion For functions to help with completion.
|
|
@usage Read a string and echo it back to the user
|
|
|
|
write("> ")
|
|
local msg = read()
|
|
print(msg)
|
|
|
|
@usage Prompt a user for a password.
|
|
|
|
while true do
|
|
write("Password> ")
|
|
local pwd = read("*")
|
|
if pwd == "let me in" then break end
|
|
print("Incorrect password, try again.")
|
|
end
|
|
print("Logged in!")
|
|
|
|
@usage A complete example with completion, history and a default value.
|
|
|
|
local completion = require "cc.completion"
|
|
local history = { "potato", "orange", "apple" }
|
|
local choices = { "apple", "orange", "banana", "strawberry" }
|
|
write("> ")
|
|
local msg = read(nil, history, function(text) return completion.choice(text, choices) end, "app")
|
|
print(msg)
|
|
|
|
@changed 1.74 Added `completeFn` parameter.
|
|
@changed 1.80pr1 Added `default` parameter.
|
|
]]
|
|
function read(replaceChar, history, completeFn, default) end
|
|
|
|
--- Stores the current ComputerCraft and Minecraft versions.
|
|
--
|
|
-- Outside of Minecraft (for instance, in an emulator) @{_HOST} will contain the
|
|
-- emulator's version instead.
|
|
--
|
|
-- For example, `ComputerCraft 1.93.0 (Minecraft 1.15.2)`.
|
|
-- @usage Print the current computer's environment.
|
|
--
|
|
-- print(_HOST)
|
|
-- @since 1.76
|
|
_HOST = _HOST
|
|
|
|
--[[- The default computer settings as defined in the ComputerCraft
|
|
configuration.
|
|
|
|
This is a comma-separated list of settings pairs defined by the mod
|
|
configuration or server owner. By default, it is empty.
|
|
|
|
An example value to disable autocompletion:
|
|
|
|
shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false
|
|
|
|
@usage _CC_DEFAULT_SETTINGS
|
|
@since 1.77
|
|
]]
|
|
_CC_DEFAULT_SETTINGS = _CC_DEFAULT_SETTINGS
|