diff --git a/.vscode/.version b/.vscode/.version new file mode 100644 index 0000000..9c4c290 --- /dev/null +++ b/.vscode/.version @@ -0,0 +1 @@ +v0.0.8k3 diff --git a/.vscode/figura/_generic.lua b/.vscode/figura/_generic.lua new file mode 100644 index 0000000..47470e5 --- /dev/null +++ b/.vscode/figura/_generic.lua @@ -0,0 +1,217 @@ +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Logs a value to Minecraft's chat and log output. +---If `jsonEncode` is true, it will try to encode the log into json text. +---@param value any +---@param jsonEncode? boolean +function log(value, jsonEncode) end + +---Logs a value to Minecraft's chat and log output. +---If `jsonEncode` is true, it will try to encode the log into json text. +--- +---Alias of `log`. +---@param value any +---@param jsonEncode? boolean +function print(value, jsonEncode) end + +---Logs the contents of the given `table` to Minecraft's chat and log output. +---Attempting to log anything other than a pure `table` will log nothing. +---If the second parameter is true, the contents of nested tables will also be outputed. +--- +---Note: This will not log a `Vector`, use `log` instead. +---@param tbl table +---@param showNested? boolean +function logTableContent(tbl, showNested) end + +---Logs the contents of the given `table` to Minecraft's chat and log output. +---Attempting to log anything other than a pure `table` will log nothing. +---If the second parameter is true, the contents of nested tables will also be outputed. +--- +---Alias of `logTableContent` +---@param tbl table +---@param showNested? boolean +function logTable(tbl, showNested) end + + +---Converts a string into a Lua function where the contents of the string become the function's body. +--- +---Returns a string containing any compile errors if conversion failed. +---@param body string +---@return string|function +function loadstring(body) end + + +---@alias Type type +---| '"vector"' + +---Returns the type of its only argument, coded as a string. The possible results of this function +---are `"nil"` (a string, not the value `nil`), `"number"`, `"string"`, `"boolean"`, `"table"`, +---`"function"`, `"thread"`, `"userdata"`, and `"vector"`. +--- +---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-type"]) +---@param v any +---@return Type type +function type(v) end + + +---**THIS FUNCTION DOES NOT EXIST UNTIL YOU CREATE IT!** +---You should not run this function, Figura will run it for you. +--- +---Use the below code to create this function: +---``` +---function tick() +--- --code here +---end +---``` +---*** +---This function runs its contents every Minecraft tick. +--- +---Since almost all Minecraft data changes every tick, you should check that data in this function +---if you want it to change every tick. +---Some examples of code that could be placed here are: +---* Getting the health of the player, +---* Getting what the player is holding, +---* Checking the player's animation, +---* Checking a block in the world, +---* Updating tick timers, +---* Sending pings. +--- +---Some things will appear too choppy if they are placed in this function, see the `render` function +---if you want your code to run more often than the `tick` function. +--- +---Notes: +---* This function *can* be defined multiple times. This is unlike vanilla Lua where redefining +---a function will overwrite it. +---* Figura will run the contents of every instance of this function. +---* Try to define this function as few times as possible, this feature only exists to make combining +---different scripts easier. +function tick() end + +---`delta`: +---  The distance between the last tick and next tick this frame sits on. +---  This is a value `0..1`. +---*** +---**THIS FUNCTION DOES NOT EXIST UNTIL YOU CREATE IT!** +---You should not run this function, Figura will run it for you. +--- +---Use the below code to create this function: +---``` +---function render(delta) +--- --code here +---end +---``` +---*** +---This function runs its contents every frame that this script's avatar is visible. +---This will only run on the player if they are in third person or can see any part of their +---avatar that is connected to them (Not `NO_PARENT`) in first person. +--- +---It is very ineffecient to run code here. Only run code that should change every frame. +---A few simple examples of code that could be placed here are: +---* Moving/rotating/scaling parts smoothly, +---* Getting the positions of parts. +--- +---You should not get Minecraft data every frame as it only changes every tick. +--- +--- +---Notes: +---* This function *can* be defined multiple times. This is unlike vanilla Lua where redefining +---a function will overwrite it. +---* Figura will run the contents of every instance of this function. +---* Try to define this function as few times as possible, this feature only exists to make combining +---different scripts easier. +---@param delta number +function render(delta) end + +---`delta`: +---  The distance between the last tick and next tick this frame sits on. +---  This is a value `0..1`. +---*** +---**THIS FUNCTION DOES NOT EXIST UNTIL YOU CREATE IT!** +---You should not run this function, Figura will run it for you. +--- +---Use the below code to create this function: +---``` +---function world_render(delta) +--- --code here +---end +---``` +---*** +---This function runs its contents every frame, but will continue to run even if your model is not rendering. +--- +---Notes: +---* This function *can* be defined multiple times. This is unlike vanilla Lua where redefining +---a function will overwrite it. +---* Figura will run the contents of every instance of this function. +---* Try to define this function as few times as possible, this feature only exists to make combining +---different scripts easier. +---@param delta number +function world_render(delta) end + +---**THIS FUNCTION DOES NOT EXIST UNTIL YOU CREATE IT!** +---You should not run this function, Figura will run it for you. +--- +---Use the below code to create this function: +---``` +---function player_init() +--- --code here +---end +---``` +---*** +---This function runs its contents *once* when `player` becomes available. +--- +---Notes: +---* This function *can* be defined multiple times. This is unlike vanilla Lua where redefining +---a function will overwrite it. +---* Figura will run the contents of every instance of this function. +---* Try to define this function as few times as possible, this feature only exists to make combining +---different scripts easier. +function player_init() end + +---`cmd`: +---  Contains the *full* message (including the prefix) used to trigger this function. +---*** +---**THIS FUNCTION DOES NOT EXIST UNTIL YOU CREATE IT!** +---You should not run this function, Figura will run it for you. +--- +---Use the below code to create this function: +---``` +---function onCommand(cmd) +--- --code here +---end +---``` +---*** +---This function runs its contents *once* when the player enters a message starting with the command +---prefix as defined by `chat.setFiguraCommandPrefix`. +--- +---Notes: +---* This function *can* be defined multiple times. This is unlike vanilla Lua where redefining +---a function will overwrite it. +---* Figura will run the contents of every instance of this function. +---* Try to define this function as few times as possible, this feature only exists to make combining +---different scripts easier. +---@param cmd string +function onCommand(cmd) end + +---**THIS FUNCTION DOES NOT EXIST UNTIL YOU CREATE IT!** +---You should not run this function, Figura will run it for you. +--- +---Use the below code to create this function: +---``` +---function onDamage(amount, source) +--- --code here +---end +---``` +---*** +---Runs every time you take damage. +--- +---Notes: +---* This function *can* be defined multiple times. This is unlike vanilla Lua where redefining +---a function will overwrite it. +---* Figura will run the contents of every instance of this function. +---* Try to define this function as few times as possible, this feature only exists to make combining +---different scripts easier. +---@param amount number The amount of damage you would have taken before armor/resistance calculations. +---@param source string +function onDamage(amount, source) end diff --git a/.vscode/figura/_help.lua b/.vscode/figura/_help.lua new file mode 100644 index 0000000..94236dc --- /dev/null +++ b/.vscode/figura/_help.lua @@ -0,0 +1,634 @@ +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---This table does not actually exist in figura. +---This is only here to show off what this documentation can show you. +---*** +---To see more help on a specific section of this documentation, index this like a normal lua +---`table`. +--- +---If you do not see a description of the item to the side of the dropdown list, +---press `CTRL + SPACE` or whatever key(s) you have bound to `toggleSuggestionDetails`. +--- +---If at any point the suggest menu closes, you can press `CTRL + SPACE` or whatever key(s) you have +---bound to `Trigger Suggest`. +help = { + ---View the different literals for every alias in this documentation. + --- + ---Note: This page of the documentation uses a function format to expand the alias. See more at + ---`help.format.func.expandedVariables` + ["alias"] = { + ---@return BiomeID string + ["BiomeID"] = function() end, + + ---@return BlockID string + ["BlockID"] = function() end, + + ---@return DimensionID string + ["DimensionID"] = function() end, + + ---@return DamageSource string + ["DamageSource"] = function() end, + + ---@return EquipmentSlot number + ["EquipmentSlot"] = function() end, + + ---@return EntityID string + ["EntityID"] = function() end, + + ---@return EntityAnimation string + ["EntityAnimation"] = function() end, + + ---@return HandSlot number + ["HandSlot"] = function() end, + + ---@return ItemID string + ["ItemID"] = function() end, + + ---@return Key string + ["Key"] = function() end, + + ---@return LightLevel number + ["LightLevel"] = function() end, + + ---@return MoonPhase number + ["MoonPhase"] = function() end, + + ---@return MinecraftKeybind string + ["MinecraftKeybind"] = function() end, + + ---@return ParentType string + ["ParentType"] = function() end, + + ---@return PingSupported type + ["PingSupported"] = function() end, + + ---@return RedstonePower number + ["RedstonePower"] = function() end, + + ---@return Shader string + ["Shader"] = function() end, + + ---@return SlotNumber number + ["SlotNumber"] = function() end, + + ---@return SlotSideNumber number + ["SlotSideNumber"] = function() end, + + ---@return StatusEffectID string + ["StatusEffectID"] = function() end + }, + + ---View the descriptions of every class in this documentation. + ---You can also attempt to index the classes to peek further into them. + ["class"] = { + ---@type ActionWheelSlot + ActionWheelSlot = {}, + + ---@type BasicModelPart + BasicModelPart = {}, + + ---@type BlockState + BlockState = {}, + + ---@type BlockStateProperties + BlockStateProperties = {}, + + ---@type Camera + Camera = {}, + + ---@type CustomModelPart + CustomModelPart = {}, + + ---@type CustomModelPartContainer + CustomModelPartContainer = {}, + + ---@type Entity + Entity = {}, + + ---@type EntityNameplate + EntityNameplate = {}, + + ---@type FiguraKeybind + FiguraKeybind = {}, + + ---@type FormatTable + FormatTable = {}, + + ---@type ItemStack + ItemStack = {}, + + ---@type LivingEntity + LivingEntity = {}, + + ---@type Nameplate + Nameplate = {}, + + ---@type Player + Player = {}, + + ---@type RegisteredKeybind + RegisteredKeybind = {}, + + ---@type StatusEffect + StatusEffect = {}, + + ---@type VanillaModelPart + VanillaModelPart = {}, + + ---@type Vector + Vector = {}, + + ---@type Vector6 + Vector6 = {}, + + ---@type Vector5 + Vector5 = {}, + + ---@type Vector4 + Vector4 = {}, + + ---@type Vector3 + Vector3 = {}, + + ---@type Vector2 + Vector2 = {}, + + ---@type VectorAng + VectorAng = {}, + + ---@type VectorColor + VectorColor = {}, + + ---@type VectorHSV + VectorHSV = {}, + + ---@type VectorPos + VectorPos = {}, + + ---@type VectorUV + VectorUV = {}, + + ---@type World + World = {} + }, + + ---View how the documentation is formatted for faster gathering of information. + ["format"] = { + ---The basic documentation format is below. + ---To see help on a specific part, index this help page with the name of the part below. + ---*** + ---*** + ---> ``` + ---> scope name: type = value + ---> ``` + ---> *** + ---> description + ["basic"] = { + ---The "scope" can either be `global`, `local`, or `field`. + --- + ---A `global` scope means that this variable can be accessed from anywhere. + ---A `local` scope means this variable can only be accessed where it was created. + ---A `field` scope means this variable is inside a `table`. + ["scope"] = {}, + + ---The "name" is how you access this variable in its scope. + ["name"] = {}, + + ---The "type" of the variable is the type of value it is holding (or has the potential of holding) + ---and is not set in stone. The type of a variable can change at any time by simply giving it a + ---value with a new type. + --- + ---The "type" can also be a class. See `help.format.class` for more information on how classes are + ---formatted. + ["type"] = {}, + + ---The "value" of the variable is the value that the variable holds currently. + ["value"] = {}, + + ---The "description" simply describes the variable. + ["description"] = {} + }, + + ---The class documentation format is below. + ---To see help on a specific part, index this help page with the name of the part below. + --- + ---Note: `table`s also use this format. However, "class" and "inheritance" do not appear. + ---*** + ---*** + ---> ``` + ---> scope name: class { + ---> field: type, + ---> field: type, + ---> . . . + ---> } + ---> ``` + ---> *** + ---> inheritance + ---> *** + ---> description + ["class"] = { + ---The "scope" can either be `global`, `local`, or `field`. + --- + ---A `global` scope means that this variable can be accessed from anywhere. + ---A `local` scope means this variable can only be accessed where it was created. + ---A `field` scope means this variable is inside a `table`. + ["scope"] = {}, + + ---The "name" is how you access this variable in its scope. + ["name"] = {}, + + ---The "class" is the class this variable takes the form of. + ---When a variable contains a class, it can be indexed with the fields of the class it contains + ---like a table. + --- + ---Note: Despite classes sounding like their own type, they are actually just a `table` with set + ---fields. However, most of Figura's classes are read-only and cannot be modified. + ["class"] = {}, + + ---The "fields" are the variables inside the class that you can use like a normal `table` index. + ---Some fields are functions and can be run to modify or get information from the object this + ---class is connected to. + ["field"] = {}, + + ---The "type" of the field is the type of value it is holding. + --- + ---The "type" can also be another class. + ["type"] = {}, + + ---The "inheritance" is the chain of classes (starting with the class itself) that this class + ---inherits fields from. + ---Inheritance allows a class to use fields from other classes as if the class itself contained + ---them. + --- + ---Note: This does not appear on classes that do not inherit from other classes. + ["inheritance"] = {}, + + ---The "description" simply describes the class and what it is used for. + ["description"] = {} + }, + + ---The class documentation format is below. + ---To see help on a specific part, index this help page with the name of the part below. + --- + ---Note: `table`s also use this format. However, "class" and "inheritance" do not appear. + ---*** + ---*** + ---> ``` + ---> function name(param: type, param: type, ...) + ---> -> return + ---> 2. return + ---> . . . + ---> ``` + ---> *** + ---> definitionNotice + ---> *** + ---> description + ---> + ---> expandedVariables + ["func"] = { + ---The "name" is how you access this function in its scope. + ["name"] = {}, + + ---The "params" are the the names of the values passed into the function. They give some info as + ---to what the param does. + ["param"] = {}, + + ---The "type" of a param is the type of value this param accepts. + ["type"] = {}, + + ---A `...` (or "vararg") signifies an infinite number of comma seperated values. + ---A function will likely state what the "vararg" requires. + ["..."] = {}, + + ---The "return" value of a function. A function can have multiple return values. + ["return"] = {}, + + ---The "definition notice" is a notice that explains which definition a function uses if + ---multiple show up. + ---Sometimes, when classes inherit, they overwrite functions they inherit to change how they + ---work. + ["definitionNotice"] = {}, + + ---The "description" simply describes the function and what it is used for. + ["description"] = {}, + + ---The "expanded variables" expands any parameters or returns that use literals to show every + ---literal value they can accept or return. + ["expandedVariables"] = {} + }, + + ---Some other unexplained parts of the documentation format. + ---Index this help page to learn more... + ["other"] = { + ---Arrays are displayed like so: + ---``` + ---type[] + ---``` + ---An array is a numbermerically indexed `table` of the given type. + --- + ---Note: This help page contains an example of what it would look like if a variable was a + ---string array at the very top. + ---@type string[] + array = {}, + + ---Dictionaries are displayed like so: + ---``` + ---table + ---``` + ---A dictionary is a `table` of values that is indexed by another (or the same) type of value. + --- + ---Note: This help page contains an example of what it would look like if a variable was a + ---dictionary of booleans indexed by strings at the very top. + ---@type table + dictionary = {}, + + ---A "literal" is, quite literally, a *literal* value. + ---Literal values are used if a variable can only have specific values, such as specific strings + ---or numbers. + --- + ---Note: This help page contains an example of what it would look like if a variable had a literal + ---`string` value. + ---@type '"This is a literal string"' + literal = {}, + + ---A variable can have multiple types. When this happens, the types will be seperated by a bar: + ---``` + ---string|number|table + ---``` + ---This can also happen with literals: + ---``` + ---"string1"|"string2"|"string3"|1|42|300 + ---``` + ---When this happens, you will need to carefully check to make sure the variable is the type you + ---want. + --- + ---Note: This help page contains an example of what it would look like if a variable could be a + ---`string`, `number`, or `table`. + ---@type string|number|table + multiple_types = {} + } + }, + + ---A table that libraries can put help topics in. + ["library"] = {}, + + ---Do you want to add your own documentation that other users can use? + --- + ---Index this help page for more information on how to document anything. + ["owndoc"] = { + ---You can create descriptions for any variable or function by using three dashes: + ---``` + ------This is a description comment! + ------I use markdown for formatting! + ------ + ------> Hello world! + ---``` + ---Descriptions use [**Markdown**](https://www.markdownguide.org/basic-syntax) for formatting + ---and will support (mostly) anything that Markdown does. + --- + ---Note: Code blocks will automatically be formatted in Lua, you do not need to specify this. + ["s1_Descriptions"] = {}, + + ---You can add a specific type to your variable by using the `@type type` comment: + ---``` + ------@type string + ---local string_variable = "Hello, World!" + ---``` + ---The type will then be visible when hovered over. + ---> *** + ---> ``` + ---> local string_varaible: string = "Hello, World!" + ---> ``` + ---> *** + ["s2_Typing"] = {}, + + ---Functions can also be documented using `@param name type`, `@vararg type`, and + ---`@return type`. + ---If your function has multiple params or returns, then you need make multiple comments. + --- + ---You can use these comments like so: + ---``` + ------This function does a thing with `a` and `b` specifically, then an infinite amount of + ------numbers after that and then returns two values. + ------@param a string + ------@param b string + ------@vararg number + ------@return number + ------@return boolean + ---function does_a_thing(a, b, ...) + --- --does stuff + --- return ret1, ret2 + ---end + ---``` + ---This function will then have its information visible when hovered over. + ---> ``` + ---> function does_a_thing(a: string, b: string, ...) + ---> -> number + ---> 2. boolean + ---> ``` + ---> *** + ---> This function does a thing with `a` and `b` specifically, then an infinite amount of + ---> numbers after that and then returns two values. + ["s3_Functions"] = {}, + + ---You can view more information on the EmmyLua annotation style used in this documentation + ---[**here**](https://github.com/sumneko/lua-language-server/wiki/EmmyLua-Annotations). + ["s4_More"] = {} + }, + + ---This documentation comes packaged with a .vscode file that edits some of the settings in + ---Sumneko's Lua Language Server to make it fit more for Figura's Lua style and allows you to read + ---this documentation a little easier. + --- + ---The settings are explained in the `.\.vscode\settings.json` file, but are also explained here + ---in case the explanations in the json file are not descriptive enough. + ["settings"] = { + ---View settings that change how the editor works. + ["editor"] = { + ---**Set to `"currentDocument"` by the settings.json** + --- + ---```json + ---//(Supposedly) makes VSCode only search the current file for words to auto-complete. + ---//Might not work... Who knows. + ---``` + ---*** + ---Changes the editor to only suggest words found in the current file. This setting is very + ---iffy and might not work sometimes, especially when regarding Lua-specific syntax. + --- + ---This is done because Figura scripts cannot interact with each other, therefore they have no + ---reason to share information between themselves. + ["wordBasedSuggestionsMode"] = {} + }, + + ---View settings that change how the Lua Language Server works. + ["Lua"] = { + ---View settings that change how completion works. + ["completion"] = { + ---**Set to `false` by the settings.json** + --- + ---```json + ---//(Supposedly) disables auto-completing words from other files. + ---//Might not work... Who knows. + ---``` + ---*** + ---Changes the language server to only suggest words found in the current file. This setting + ---is very iffy and might not work most of the time. + --- + ---This is done because Figura scripts cannot interact with each other, therefore they have + ---no reason to share information between themselves. + ["workspaceWord"] = {}, + + ---**Set to `0` by the settings.json** + --- + ---```json + ---//Removes some clutter from the documentation screen. + ---``` + ---*** + ---Removes context lines from the documentation that will just cause more confusion than + ---help since the functions in this documentation do not have a context and will cause + ---strange "context leak". + ["displayContext"] = {} + }, + + ---View settings that change how hints work. + ["hint"] = { + ---**Set to `true` by the settings.json** + --- + ---```json + ---//Enables hint types, these show up next to a variable if the type of a variable is set or able to + ---//be guessed by the language server. + ---``` + ---*** + ---Enables hints, this feature allows you to keep track of how variables are working and + ---what type of variables to expect from functions. + ---Hints appear as a box to the right of variables and to the left of values: + --- + ---variable`:type` + ---`name:`"1234" + ["enable"] = {}, + + ---**Set to `true` by the settings.json** + --- + ---```json + ---//Enables hint types, these show up next to a variable if the type of a variable is set or able to + ---//be guessed by the language server. + ---``` + ---*** + ---Allows hints to show up when using assignments on variables: + --- + ---var`:number` = math.sqrt(81) + ["setType"] = {} + }, + + ---View settings that change how the runtime works. + ["runtime"] = { + ---**Set to `"Lua 5.2"` by the settings.json** + --- + ---```json + ---//Sets the runtime version to the version used by Figura. + ---``` + ---*** + ---Makes sure the language server is using the same version as Figura. This stops the user + ---from accidentally using features that do not exist in Figura's version of Lua. + ["version"] = {} + }, + + ---View settings that change how telemetry works. + ["telemetry"] = { + ---**Set to `false` by the settings.json** + --- + ---```json + ---//Boring Telemetry stuff. You can enable it I guess? + ---``` + ---*** + ---Disables telemetry, just in case you don't want someone using information from you + ---without your permission. + ["enable"] = {} + }, + + ---View settings that change how diagnostics work. + ["diagnostics"] = { + ---**Set to `-1` by the settings.json** + --- + ---```json + ---//Stops the language server from re-diagnosing the whole model_files folder when you add or remove + ---//a character in an unrelated file. + ---``` + ---*** + ---Stops the language server from checking over every script file when you edit a single + ---script file. Since script files do not have a way to relate to each other, there is no + ---reason for diagnostics to check every other file anyways. + ["workspaceDelay"] = {}, + + ---**Set to the following by the settings.json:** + ---```json + ---[ + --- "lowercase-global", + --- "trailing-space", + --- "unbalanced-assignments" + ---] + ---``` + --- + ---```json + ---//Disables some unneeded diagnostics that many will not care about. + ---//Do not touch unless you know what you are doing. + ---``` + ---*** + ---Disables specific diagnostics that do not matter to someone using Figura. + ---This specifically: + ---* Disables warnings when using all-lowercase globals. + ---* Disables warnings for trailing spaces. + ---* Disables warnings when assignments are not balanced. + ["disable"] = {}, + + ---**Set to the following by the settings.json:** + ---```json + ---{ + --- "unused-local": "Information", + --- "unused-vararg": "Information", + --- "redundant-parameter": "Information", + --- "redundant-value": "Information", + --- "redefined-local": "Information" + ---} + ---``` + --- + ---```json + ---//Changes the severity of some diagnostics to reflect their actual severity in Figura. + ---//Do not touch unless you know what you are doing. + ---``` + ---*** + ---Changes the severity of specific diagnostics to fit their true severity in Figura. + ---This specifically: + ---* Reveals that a local variable is being useless, to clean up code and allow errors to + ---be seen if not already noticed. + ---* Reveals that a vararg is not being used in the function that contains it. + ---* Reveals that a parameter that was given is not asked for by the function. + ---* Reveals that a value given in an assignment operation is going unused because there is + ---no variable to take the value. + ---* Reveals that a local value was explicitly defined again in the same scope for no + ---reason. + ["severity"] = {} + }, + + ---View settings that change how the workspace works. + ["workspace"] = { + ---**Set to the following by the settings.json:** + ---```json + ---[ + --- "./.vscode/figura" + ---] + ---``` + --- + ---```json + ---//Enables the documentation. + ---``` + ---*** + ---This enables the documentation for use inside your script files. Everything in this + ---documentation will fail to show if this setting is not set to the value shown above. + ["library"] = {} + } + } + } +} diff --git a/.vscode/figura/action_wheel.lua b/.vscode/figura/action_wheel.lua new file mode 100644 index 0000000..ff6dcc4 --- /dev/null +++ b/.vscode/figura/action_wheel.lua @@ -0,0 +1,153 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A side slot number. +---@alias SlotSideNumber 1|2|3|4 + +---A wheel slot number. +---@alias SlotNumber 1|2|3|4|5|6|7|8 + +---@alias ActionWheelTextureType +---| "None" #Nothing, uses an item instead. +---| TextureType + +---A slot on the action wheel. +---@class ActionWheelSlot +local ActionWheelSlot = {} + +---Clears the slot of all of its changes. +function ActionWheelSlot.clear() end + +---Returns the current color of the slot. +---Returns `nil` if the color has not been set by `.setColor()`. +---@return VectorColor? +function ActionWheelSlot.getColor() end + +---Returns the current function of the slot. +---Returns `nil` if the function has not been set by `.setFunction()`. +---@return function? +function ActionWheelSlot.getFunction() end + +---Returns the current hover color of the slot. +---Returns `nil` if the hover color has not been set by `.setHoverColor()`. +---@return VectorColor? +function ActionWheelSlot.getHoverColor() end + +---Returns the current hover item of the slot. +---Returns `nil` if the hover item has not been set by `.setHoverItem()`. +---@return ItemStack? +function ActionWheelSlot.getHoverItem() end + +---Returns the current item icon of the slot. +---Returns `nil` if the item has not been set by `.setItem()`. +---@return ItemStack? +function ActionWheelSlot.getItem() end + +---Returns the type of texture used. +---@return ActionWheelTextureType +function ActionWheelSlot.getTexture() end + +---Returns the scale of the texture set by setTextureScale +---@return Vector2 +function ActionWheelSlot.getTextureScale() end + +---Returns the current title of the slot. +---Returns `nil` if the title has not been set by `.setTitle()`. +---@return string? +function ActionWheelSlot.getTitle() end + +---Returns the UV used for rendering the texture as well as the texture size. +--- +---First two numbers are the offset, next two numbers are the size of the UV, +---last two numbers are the size of the texture itself. +---@return Vector6 +function ActionWheelSlot.getUV() end + +---Sets the color that the slot should be when idle. +---@param color VectorColor +function ActionWheelSlot.setColor(color) end + +---Sets the function to run when the slot is clicked. +---If a `parameter` is given, the *current value* is saved as soon as the function is set and then +---used every time the slot is activated. +---@param func function +---@param parameter? any +function ActionWheelSlot.setFunction(func, parameter) end + +---Sets the color that the slot should be when hovered over. +---@param col VectorColor +function ActionWheelSlot.setHoverColor(col) end + +---Sets the item that should appear when the slot is hovered over. +---@param item ItemStack|string +function ActionWheelSlot.setHoverItem(item) end + +---Sets the item that should appear when the slot is idle. +---@param item ItemStack|string +function ActionWheelSlot.setItem(item) end + +---Sets the action wheel custom texture. +---`resource` is only needed if the texture type is set to `"Resource"`. +---@param type ActionWheelTextureType +---@param resource? string +function ActionWheelSlot.setTexture(type, resource) end + +---Sets the scale of the texture. +---@param vector Vector2 +function ActionWheelSlot.setTextureScale(vector) end + +---Sets the title of the slot. +---@param str string +function ActionWheelSlot.setTitle(str) end + +---Sets the UV and the texture size +---@param uvOffset Vector2 +---@param uvSize Vector2 +---@param textureSize Vector2 +function ActionWheelSlot.setUV(uvOffset, uvSize, textureSize) end + + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---The action wheel. This has up to 8 slots that can be customized to do whatever you want. +---Hold the `Figura: Action Wheel key` keybind to use the action wheel. +action_wheel = { + SLOT_1 = ActionWheelSlot, + SLOT_2 = ActionWheelSlot, + SLOT_3 = ActionWheelSlot, + SLOT_4 = ActionWheelSlot, + SLOT_5 = ActionWheelSlot, + SLOT_6 = ActionWheelSlot, + SLOT_7 = ActionWheelSlot, + SLOT_8 = ActionWheelSlot +} + +---Returns the amount of slots on the left side of the action wheel. +---@return SlotSideNumber +function action_wheel.getLeftSize() end + +---Returns the amount of slots on the right side of the action wheel. +---@return SlotSideNumber +function action_wheel.getRightSize() end + +---Returns the slot that is currently being hovered over. +---@return SlotNumber +function action_wheel.getSelectedSlot() end + +---Executes the function of the hovered over action wheel slot. +function action_wheel.runAction() end + +---Sets the amount of slots on the left side of the action wheel. +---@param size SlotSideNumber +function action_wheel.setLeftSize(size) end + +---Sets the amount of slots on the right side of the action wheel. +---@param size SlotSideNumber +function action_wheel.setRightSize(size) end + +---Returns if the action wheel is currently open or not. +---@return boolean +function action_wheel.isOpen() end diff --git a/.vscode/figura/animation.lua b/.vscode/figura/animation.lua new file mode 100644 index 0000000..353ea98 --- /dev/null +++ b/.vscode/figura/animation.lua @@ -0,0 +1,175 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---An animation Loop Mode. +--- +---Determines what an animation does when it reaches the end. +---@alias LoopMode +---| "ONCE" #Stop the animation with blending. +---| "HOLD" #Hold the animation on the last frame. +---| "LOOP" #Restart the animation. + +---Animation play state. +---@alias PlayState +---| "PLAYING" #Playing normally. +---| "STOPPED" #Not currently running. +---| "PAUSED" #Paused with `.pause()`. +---| "ENDED" #Holding on last frame. +---| "STOPPING" #Blending to `"STOPPED"` state. +---| "STARTING" #Blending to `"PLAYING"` state. + +---A Blockbench animation. +---@class Animation +local Animation = {} + +---Stops the animation without using blending. +function Animation.cease() end + +---Returns the blend time of the animation. +---@return number +function Animation.getBlendTime() end + +---Returns the blend weight of the animation. +---@return number +function Animation.getBlendWeight() end + +---Returns the length of the animation. +---@return number +function Animation.getLength() end + +---Returns the loop delay of the animation. +---@return number +function Animation.getLoopDelay() end + +---Returns the loop mode fo the animation. +---@return LoopMode +function Animation.getLoopMode() end + +---Returns the name of the animation. +---@return string +function Animation.getName() end + +---Returns if vanilla rotations are locked. +---@return boolean +function Animation.getReplace() end + +---Returns the current state of the animation. +---@return PlayState +function Animation.getPlayState() end + +---Returns the priority of the animation. +---@return integer +function Animation.getPriority() end + +---Returns whether the animation overrides in blockbench or not. +---@return boolean +function Animation.getOverride() end + +---Returns the current speed of the animation. +---@return number +function Animation.getSpeed() end + +---Returns the start delay of the animation +---@return number +function Animation.getStartDelay() end + +---Returns the start offset of the animation. +---@return number +function Animation.getStartOffset() end + +---Returns if the animation is playing. +---@return boolean +function Animation.isPlaying() end + +---Pauses the animation. +---You can resume by using `.play()` or `.start()`. +function Animation.pause() end + +---Starts/restarts the animation. +function Animation.play() end + +---Sets the blend time of the animation in seconds. +---Blending is done when an animation is starting or ending. +---@param time number +function Animation.setBlendTime(time) end + +---Sets the blend weight of the animation. +---@param weight number +function Animation.setBlendWeight(weight) end + +---Sets the length of the animation. +---@param length number +function Animation.setLength(length) end + +---Sets the delay between each animation loop. +---@param delay number +function Animation.setLoopDelay(delay) end + +---Sets the loop mode of the animation. +---@param mode LoopMode +function Animation.setLoopMode(mode) end + +---If replace is enabled, the animation will stop vanilla rotations on parts that are part of the +---animation's timeline. +---They will still be able to move. +--- +---Similar to how mimic parts work, but instead of only rotations, it is only for positions. +---@param bool boolean +function Animation.setReplace(bool) end + +---Sets the current state of the animation. +---@param state PlayState +function Animation.setPlayState(state) end + +---With override enabled, the animation will use the pivots defined in the animation editor instead +---of the ones defined in the default editor. +---@param bool boolean +function Animation.setOverride(bool) end + +---Sets the priority of an animation over the others, you must put this value yourself. +--- +---Priority determines how animations interact. +---Animations with the same priority will blend together while animations of lower priority will not +---run at all if higher priority animation is running. +---@param priority integer +function Animation.setPriority(priority) end + +---Sets the speed of the animation. (1 = 100%) +---@param speed number +function Animation.setSpeed(speed) end + +---After calling play() or start(), delay playing the animation for the given amount of seconds. +---@param delay number +function Animation.setStartDelay(delay) end + +---Offset the start of the animation by the given amount of seconds. +---@param offset number +function Animation.setStartOffset(offset) end + +---Starts the animation if it isn't already playing. +function Animation.start() end + +---Stops the animation, using blending to smoothly move back into place. +function Animation.stop() end + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---@class AnimTableProxy +---@field [string] Animation + +---A `table` containing functions relating to animations and the avatar's animations. +---@class AnimationTable : AnimTableProxy +animation = {} + +---Stops ALL animations without using blending. +function animation.ceaseAll() end + +---Returns a table with the name of each animation you have. +---@return string[] +function animation.listAnimations() end + +---Stops ALL animations, using blending to smoothly move back into place. +function animation.stopAll() end diff --git a/.vscode/figura/biome.lua b/.vscode/figura/biome.lua new file mode 100644 index 0000000..8c772f2 --- /dev/null +++ b/.vscode/figura/biome.lua @@ -0,0 +1,181 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A Minecraft biome. +---@class Biome +local Biome = {} + +---Returns the category the biome belongs to. +---@return BiomeCategory +function Biome.getCategory() end + +---Returns how wet the biome is where `0` is dry and `1` is wet. +---@return number +function Biome.getDownfall() end + +---Returns the biome fog color. +---@return VectorColor +function Biome.getFogColor() end + +---Returns the biome color used on leaves. +---@return VectorColor +function Biome.getFoliageColor() end + +---Returns the biome grass color. +---@return VectorColor +function Biome.getGrassColor() end + +---Returns the ID of the biome. +---@return BiomeID +function Biome.getID() end + +---Returns the rain type of the biome. +---@return BiomePrecipitationType +function Biome.getPrecipitation() end + +---Returns the biome sky color as a vector. +---@return VectorColor +function Biome.getSkyColor() end + +---Returns the temperature of the biome. +---@return number +function Biome.getTemperature() end + +---Returns the biome water color. +---@return VectorColor +function Biome.getWaterColor() end + +---Returns the biome underwater fog color. +---@return VectorColor +function Biome.getWaterFogColor() end + +---Returns true if the temperature is less than 0.15. +---@return boolean +function Biome.isCold() end + +---Returns true if the temperature is greather than 1. +---@return boolean +function Biome.isHot() end + +---@alias BiomeCategory +---| "forest" +---| "beach" +---| "plains" +---| "desert" +---| "savana" +---| "river" +---| "jungle" +---| "mesa" +---| "icy" +---| "taiga" +---| "mountain" +---| "underground" +---| "swamp" +---| "extreme_hills" + + +---A Minecraft biome identifier. +--- +---Only the default Minecraft biomes are auto-completed. +---You can use any biome from any mod, even if it does not auto-complete. +---@alias BiomeID +---| "minecraft:ocean" #Ocean +---| "minecraft:deep_ocean" #Deep Ocean +---| "minecraft:frozen_ocean" #Frozen Ocean +---| "minecraft:deep_frozen_ocean" #Deep Frozen Ocean +---| "minecraft:cold_ocean" #Cold Ocean +---| "minecraft:deep_cold_ocean" #Deep Cold Ocean +---| "minecraft:lukewarm_ocean" #Lukewarm Ocean +---| "minecraft:deep_lukewarm_ocean" #Deep Lukewarm Ocean +---| "minecraft:warm_ocean" #Warm Ocean +---| "minecraft:deep_warm_ocean" #Deep Warm Ocean +---| "minecraft:river" #River +---| "minecraft:frozen_river" #Frozen River +---| "minecraft:beach" #Beach +---| "minecraft:stone_shore" #Stone Shore +---| "minecraft:snowy_beach" #Snowy Beach +---| "minecraft:forest" #Forest +---| "minecraft:wooded_hills" #Wooded Hills +---| "minecraft:flower_forest" #Flower Forest +---| "minecraft:birch_forest" #Birch Forest +---| "minecraft:birch_forest_hills" #Birch Forest Hills +---| "minecraft:tall_birch_forest" #Tall Birch Forest +---| "minecraft:tall_birch_hills" #Tall Birch Hills +---| "minecraft:dark_forest" #Dark Forest +---| "minecraft:dark_forest_hills" #Dark Forest Hills +---| "minecraft:jungle" #Jungle +---| "minecraft:jungle_hills" #Jungle Hills +---| "minecraft:modified_jungle" #Modified Jungle +---| "minecraft:jungle_edge" #Jungle Edge +---| "minecraft:modified_jungle_edge" #Modified Jungle Edge +---| "minecraft:bamboo_jungle" #Bamboo Jungle +---| "minecraft:bamboo_jungle_hills" #Bamboo Jungle Hills +---| "minecraft:taiga" #Taiga +---| "minecraft:taiga_hills" #Taiga Hills +---| "minecraft:taiga_mountains" #Taiga Mountains +---| "minecraft:snowy_taiga" #Snowy Taiga +---| "minecraft:snowy_taiga_hills" #Snowy Taiga Hills +---| "minecraft:snowy_taiga_mountains" #Snowy Taiga Mountains +---| "minecraft:giant_tree_taiga" #Giant Tree Taiga +---| "minecraft:giant_tree_taiga_hills" #Giant Tree Taiga Hills +---| "minecraft:giant_spruce_taiga" #Giant Spruce Taiga +---| "minecraft:giant_spruce_taiga_hills" #Giant Spruce Taiga Hills +---| "minecraft:mushroom_fields" #Mushroom Fields +---| "minecraft:mushroom_field_shore" #Mushroom Field Shore +---| "minecraft:swamp" #Swamp +---| "minecraft:swamp_hills" #Swamp Hills +---| "minecraft:savanna" #Savanna +---| "minecraft:savanna_plateau" #Savanna Plateau +---| "minecraft:shattered_savanna" #Shattered Savanna +---| "minecraft:shattered_savanna_plateau" #Shattered Savanna Plateau +---| "minecraft:plains" #Plains +---| "minecraft:sunflower_plains" #Sunflower Plains +---| "minecraft:desert" #Desert +---| "minecraft:desert_hills" #Desert Hills +---| "minecraft:desert_lakes" #Desert Lakes +---| "minecraft:snowy_tundra" #Snowy Tundra +---| "minecraft:snowy_mountains" #Snowy Mountains +---| "minecraft:ice_spikes" #Ice Spikes +---| "minecraft:mountains" #Mountains +---| "minecraft:wooded_mountains" #Wooded Mountains +---| "minecraft:gravelly_mountains" #Gravelly Mountains +---| "minecraft:modified_gravelly_mountains" #Gravelly Mountains+ +---| "minecraft:mountain_edge" #Mountain Edge +---| "minecraft:badlands" #Badlands +---| "minecraft:badlands_plateau" #Badlands Plateau +---| "minecraft:modified_badlands_plateau" #Modified Badlands Plateau +---| "minecraft:wooded_badlands_plateau" #Wooded Badlands Plateau +---| "minecraft:modified_wooded_badlands_plateau" #Modified Wooded Badlands Plateau +---| "minecraft:eroded_badlands" #Eroded Badlands +---| "minecraft:dripstone_caves" #Dripstone Caves +---| "minecraft:lush_caves" #Lush Caves +---| "minecraft:nether_wastes" #Nether Wastes +---| "minecraft:crimson_forest" #Crimson Forest +---| "minecraft:warped_forest" #Warped Forest +---| "minecraft:soul_sand_valley" #Soul Sand Valley +---| "minecraft:basalt_deltas" #Basalt Deltas +---| "minecraft:the_end" #The End +---| "minecraft:small_end_islands" #Small End Islands +---| "minecraft:end_midlands" #End Midlands +---| "minecraft:end_highlands" #End Highlands +---| "minecraft:end_barrens" #End Barrens +---| "minecraft:the_void" #The Void + +---@alias BiomePrecipitationType +---| "NONE" +---| "RAIN" +---| "SNOW" + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Functions relating to biomes +biome = {} + +---Returns a biome table of the biome id. +---@param biome BiomeID +---@param pos VectorPos +---@return Biome +function biome.getBiome(biome, pos) end diff --git a/.vscode/figura/block.lua b/.vscode/figura/block.lua new file mode 100644 index 0000000..8cbca5f --- /dev/null +++ b/.vscode/figura/block.lua @@ -0,0 +1,1643 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A Minecraft block identifier. +--- +---Only the default Minecraft blocks are auto-completed. +---You can use any block from any mod, even if it does not auto-complete. +---@alias BlockID +---| "minecraft:acacia_button" #Acacia Button +---| "minecraft:acacia_door" #Acacia Door +---| "minecraft:acacia_fence" #Acacia Fence +---| "minecraft:acacia_fence_gate" #Acacia Fence Gate +---| "minecraft:acacia_leaves" #Acacia Leaves +---| "minecraft:acacia_log" #Acacia Log +---| "minecraft:acacia_planks" #Acacia Planks +---| "minecraft:acacia_pressure_plate" #Acacia Pressure Plate +---| "minecraft:acacia_sapling" #Acacia Sapling +---| "minecraft:acacia_sign" #Acacia Sign +---| "minecraft:acacia_slab" #Acacia Slab +---| "minecraft:acacia_stairs" #Acacia Stairs +---| "minecraft:acacia_trapdoor" #Acacia Trapdoor +---| "minecraft:acacia_wall_sign" #Acacia Wall Sign +---| "minecraft:acacia_wood" #Acacia Wood +---| "minecraft:activator_rail" #Activator Rail +---| "minecraft:air" #Air +---| "minecraft:allium" #Allium +---| "minecraft:amethyst_block" #Block of Amethyst +---| "minecraft:amethyst_cluster" #Amethyst Cluster +---| "minecraft:ancient_debris" #Ancient Debris +---| "minecraft:andesite" #Andesite +---| "minecraft:andesite_slab" #Andesite Slab +---| "minecraft:andesite_stairs" #Andesite Stairs +---| "minecraft:andesite_wall" #Andesite Wall +---| "minecraft:anvil" #Anvil +---| "minecraft:attached_melon_stem" #Attached Melon Stem +---| "minecraft:attached_pumpkin_stem" #Attached Pumpkin Stem +---| "minecraft:azalea" #Azalea +---| "minecraft:azalea_leaves" #Azalea Leaves +---| "minecraft:azure_bluet" #Azure Bluet +---| "minecraft:bamboo" #Bamboo +---| "minecraft:bamboo_sapling" #Bamboo Shoot +---| "minecraft:barrel" #Barrel +---| "minecraft:barrier" #Barrier +---| "minecraft:basalt" #Basalt +---| "minecraft:beacon" #Beacon +---| "minecraft:bedrock" #Bedrock +---| "minecraft:bee_nest" #Bee Nest +---| "minecraft:beehive" #Beehive +---| "minecraft:beetroots" #Beetroots +---| "minecraft:bell" #Bell +---| "minecraft:big_dripleaf" #Big Dripleaf +---| "minecraft:big_dripleaf_stem" #Big Dripleaf Stem +---| "minecraft:birch_button" #Birch Button +---| "minecraft:birch_door" #Birch Door +---| "minecraft:birch_fence" #Birch Fence +---| "minecraft:birch_fence_gate" #Birch Fence Gate +---| "minecraft:birch_leaves" #Birch Leaves +---| "minecraft:birch_log" #Birch Log +---| "minecraft:birch_planks" #Birch Planks +---| "minecraft:birch_pressure_plate" #Birch Pressure Plate +---| "minecraft:birch_sapling" #Birch Sapling +---| "minecraft:birch_sign" #Birch Sign +---| "minecraft:birch_slab" #Birch Slab +---| "minecraft:birch_stairs" #Birch Stairs +---| "minecraft:birch_trapdoor" #Birch Trapdoor +---| "minecraft:birch_wall_sign" #Birch Wall Sign +---| "minecraft:birch_wood" #Birch Wood +---| "minecraft:black_banner" #Black Banner +---| "minecraft:black_bed" #Black Bed +---| "minecraft:black_candle" #Black Candle +---| "minecraft:black_candle_cake" #Cake with Black Candle +---| "minecraft:black_carpet" #Black Carpet +---| "minecraft:black_concrete" #Black Concrete +---| "minecraft:black_concrete_powder" #Black Concrete Powder +---| "minecraft:black_glazed_terracotta" #Black Glazed Terracotta +---| "minecraft:black_shulker_box" #Black Shulker Box +---| "minecraft:black_stained_glass" #Black Stained Glass +---| "minecraft:black_stained_glass_pane" #Black Stained Glass Pane +---| "minecraft:black_terracotta" #Black Terracotta +---| "minecraft:black_wall_banner" #Black Wall Banner +---| "minecraft:black_wool" #Black Wool +---| "minecraft:blackstone" #Blackstone +---| "minecraft:blackstone_slab" #Blackstone Slab +---| "minecraft:blackstone_stairs" #Blackstone Stairs +---| "minecraft:blackstone_wall" #Blackstone Wall +---| "minecraft:blast_furnace" #Blast Furnace +---| "minecraft:blue_banner" #Blue Banner +---| "minecraft:blue_bed" #Blue Bed +---| "minecraft:blue_candle" #Blue Candle +---| "minecraft:blue_candle_cake" #Cake with Blue Candle +---| "minecraft:blue_carpet" #Blue Carpet +---| "minecraft:blue_concrete" #Blue Concrete +---| "minecraft:blue_concrete_powder" #Blue Concrete Powder +---| "minecraft:blue_glazed_terracotta" #Blue Glazed Terracotta +---| "minecraft:blue_ice" #Blue Ice +---| "minecraft:blue_orchid" #Blue Orchid +---| "minecraft:blue_shulker_box" #Blue Shulker Box +---| "minecraft:blue_stained_glass" #Blue Stained Glass +---| "minecraft:blue_stained_glass_pane" #Blue Stained Glass Pane +---| "minecraft:blue_terracotta" #Blue Terracotta +---| "minecraft:blue_wall_banner" #Blue Wall Banner +---| "minecraft:blue_wool" #Blue Wool +---| "minecraft:bone_block" #Bone Block +---| "minecraft:bookshelf" #Bookshelf +---| "minecraft:brain_coral" #Brain Coral +---| "minecraft:brain_coral_block" #Brain Coral Block +---| "minecraft:brain_coral_fan" #Brain Coral Fan +---| "minecraft:brain_coral_wall_fan" #Brain Coral Wall Fan +---| "minecraft:brewing_stand" #Brewing Stand +---| "minecraft:brick_slab" #Brick Slab +---| "minecraft:brick_stairs" #Brick Stairs +---| "minecraft:brick_wall" #Brick Wall +---| "minecraft:bricks" #Bricks +---| "minecraft:brown_banner" #Brown Banner +---| "minecraft:brown_bed" #Brown Bed +---| "minecraft:brown_candle" #Brown Candle +---| "minecraft:brown_candle_cake" #Cake with Brown Candle +---| "minecraft:brown_carpet" #Brown Carpet +---| "minecraft:brown_concrete" #Brown Concrete +---| "minecraft:brown_concrete_powder" #Brown Concrete Powder +---| "minecraft:brown_glazed_terracotta" #Brown Glazed Terracotta +---| "minecraft:brown_mushroom" #Brown Mushroom +---| "minecraft:brown_mushroom_block" #Brown Mushroom Block +---| "minecraft:brown_shulker_box" #Brown Shulker Box +---| "minecraft:brown_stained_glass" #Brown Stained Glass +---| "minecraft:brown_stained_glass_pane" #Brown Stained Glass Pane +---| "minecraft:brown_terracotta" #Brown Terracotta +---| "minecraft:brown_wall_banner" #Brown Wall Banner +---| "minecraft:brown_wool" #Brown Wool +---| "minecraft:bubble_column" #Bubble Column +---| "minecraft:bubble_coral" #Bubble Coral +---| "minecraft:bubble_coral_block" #Bubble Coral Block +---| "minecraft:bubble_coral_fan" #Bubble Coral Fan +---| "minecraft:bubble_coral_wall_fan" #Bubble Coral Wall Fan +---| "minecraft:budding_amethyst" #Budding Amethyst +---| "minecraft:cactus" #Cactus +---| "minecraft:cake" #Cake +---| "minecraft:calcite" #Calcite +---| "minecraft:campfire" #Campfire +---| "minecraft:candle" #Candle +---| "minecraft:candle_cake" #Cake with Candle +---| "minecraft:carrots" #Carrots +---| "minecraft:cartography_table" #Cartography Table +---| "minecraft:carved_pumpkin" #Carved Pumpkin +---| "minecraft:cauldron" #Cauldron +---| "minecraft:cave_air" #Cave Air +---| "minecraft:cave_vines" #Cave Vines +---| "minecraft:cave_vines_plant" #Cave Vines Plant +---| "minecraft:chain" #Chain +---| "minecraft:chain_command_block" #Chain Command Block +---| "minecraft:chest" #Chest +---| "minecraft:chipped_anvil" #Chipped Anvil +---| "minecraft:chiseled_deepslate" #Chiseled Deepslate +---| "minecraft:chiseled_nether_bricks" #Chiseled Nether Bricks +---| "minecraft:chiseled_polished_blackstone" #Chiseled Polished Blackstone +---| "minecraft:chiseled_quartz_block" #Chiseled Quartz Block +---| "minecraft:chiseled_red_sandstone" #Chiseled Red Sandstone +---| "minecraft:chiseled_sandstone" #Chiseled Sandstone +---| "minecraft:chiseled_stone_bricks" #Chiseled Stone Bricks +---| "minecraft:chorus_flower" #Chorus Flower +---| "minecraft:chorus_plant" #Chorus Plant +---| "minecraft:clay" #Clay +---| "minecraft:coal_block" #Block of Coal +---| "minecraft:coal_ore" #Coal Ore +---| "minecraft:coarse_dirt" #Coarse Dirt +---| "minecraft:cobbled_deepslate" #Cobbled Deepslate +---| "minecraft:cobbled_deepslate_slab" #Cobbled Deepslate Slab +---| "minecraft:cobbled_deepslate_stairs" #Cobbled Deepslate Stairs +---| "minecraft:cobbled_deepslate_wall" #Cobbled Deepslate Wall +---| "minecraft:cobblestone" #Cobblestone +---| "minecraft:cobblestone_slab" #Cobblestone Slab +---| "minecraft:cobblestone_stairs" #Cobblestone Stairs +---| "minecraft:cobblestone_wall" #Cobblestone Wall +---| "minecraft:cobweb" #Cobweb +---| "minecraft:cocoa" #Cocoa +---| "minecraft:command_block" #Command Block +---| "minecraft:comparator" #Redstone Comparator +---| "minecraft:composter" #Composter +---| "minecraft:conduit" #Conduit +---| "minecraft:copper_block" #Block of Copper +---| "minecraft:copper_ore" #Copper Ore +---| "minecraft:cornflower" #Cornflower +---| "minecraft:cracked_deepslate_bricks" #Cracked Deepslate Bricks +---| "minecraft:cracked_deepslate_tiles" #Cracked Deepslate Tiles +---| "minecraft:cracked_nether_bricks" #Cracked Nether Bricks +---| "minecraft:cracked_polished_blackstone_bricks" #Cracked Polished Blackstone Bricks +---| "minecraft:cracked_stone_bricks" #Cracked Stone Bricks +---| "minecraft:crafting_table" #Crafting Table +---| "minecraft:creeper_head" #Creeper Head +---| "minecraft:creeper_wall_head" #Creeper Wall Head +---| "minecraft:crimson_button" #Crimson Button +---| "minecraft:crimson_door" #Crimson Door +---| "minecraft:crimson_fence" #Crimson Fence +---| "minecraft:crimson_fence_gate" #Crimson Fence Gate +---| "minecraft:crimson_fungus" #Crimson Fungus +---| "minecraft:crimson_hyphae" #Crimson Hyphae +---| "minecraft:crimson_nylium" #Crimson Nylium +---| "minecraft:crimson_planks" #Crimson Planks +---| "minecraft:crimson_pressure_plate" #Crimson Pressure Plate +---| "minecraft:crimson_roots" #Crimson Roots +---| "minecraft:crimson_sign" #Crimson Sign +---| "minecraft:crimson_slab" #Crimson Slab +---| "minecraft:crimson_stairs" #Crimson Stairs +---| "minecraft:crimson_stem" #Crimson Stem +---| "minecraft:crimson_trapdoor" #Crimson Trapdoor +---| "minecraft:crimson_wall_sign" #Crimson Wall Sign +---| "minecraft:crying_obsidian" #Crying Obsidian +---| "minecraft:cut_copper" #Cut Copper +---| "minecraft:cut_copper_slab" #Cut Copper Slab +---| "minecraft:cut_copper_stairs" #Cut Copper Stairs +---| "minecraft:cut_red_sandstone" #Cut Red Sandstone +---| "minecraft:cut_red_sandstone_slab" #Cut Red Sandstone Slab +---| "minecraft:cut_sandstone" #Cut Sandstone +---| "minecraft:cut_sandstone_slab" #Cut Sandstone Slab +---| "minecraft:cyan_banner" #Cyan Banner +---| "minecraft:cyan_bed" #Cyan Bed +---| "minecraft:cyan_candle" #Cyan Candle +---| "minecraft:cyan_candle_cake" #Cake with Cyan Candle +---| "minecraft:cyan_carpet" #Cyan Carpet +---| "minecraft:cyan_concrete" #Cyan Concrete +---| "minecraft:cyan_concrete_powder" #Cyan Concrete Powder +---| "minecraft:cyan_glazed_terracotta" #Cyan Glazed Terracotta +---| "minecraft:cyan_shulker_box" #Cyan Shulker Box +---| "minecraft:cyan_stained_glass" #Cyan Stained Glass +---| "minecraft:cyan_stained_glass_pane" #Cyan Stained Glass Pane +---| "minecraft:cyan_terracotta" #Cyan Terracotta +---| "minecraft:cyan_wall_banner" #Cyan Wall Banner +---| "minecraft:cyan_wool" #Cyan Wool +---| "minecraft:damaged_anvil" #Damaged Anvil +---| "minecraft:dandelion" #Dandelion +---| "minecraft:dark_oak_button" #Dark Oak Button +---| "minecraft:dark_oak_door" #Dark Oak Door +---| "minecraft:dark_oak_fence" #Dark Oak Fence +---| "minecraft:dark_oak_fence_gate" #Dark Oak Fence Gate +---| "minecraft:dark_oak_leaves" #Dark Oak Leaves +---| "minecraft:dark_oak_log" #Dark Oak Log +---| "minecraft:dark_oak_planks" #Dark Oak Planks +---| "minecraft:dark_oak_pressure_plate" #Dark Oak Pressure Plate +---| "minecraft:dark_oak_sapling" #Dark Oak Sapling +---| "minecraft:dark_oak_sign" #Dark Oak Sign +---| "minecraft:dark_oak_slab" #Dark Oak Slab +---| "minecraft:dark_oak_stairs" #Dark Oak Stairs +---| "minecraft:dark_oak_trapdoor" #Dark Oak Trapdoor +---| "minecraft:dark_oak_wall_sign" #Dark Oak Wall Sign +---| "minecraft:dark_oak_wood" #Dark Oak Wood +---| "minecraft:dark_prismarine" #Dark Prismarine +---| "minecraft:dark_prismarine_slab" #Dark Prismarine Slab +---| "minecraft:dark_prismarine_stairs" #Dark Prismarine Stairs +---| "minecraft:daylight_detector" #Daylight Detector +---| "minecraft:dead_brain_coral" #Dead Brain Coral +---| "minecraft:dead_brain_coral_block" #Dead Brain Coral Block +---| "minecraft:dead_brain_coral_fan" #Dead Brain Coral Fan +---| "minecraft:dead_brain_coral_wall_fan" #Dead Brain Coral Wall Fan +---| "minecraft:dead_bubble_coral" #Dead Bubble Coral +---| "minecraft:dead_bubble_coral_block" #Dead Bubble Coral Block +---| "minecraft:dead_bubble_coral_fan" #Dead Bubble Coral Fan +---| "minecraft:dead_bubble_coral_wall_fan" #Dead Bubble Coral Wall Fan +---| "minecraft:dead_bush" #Dead Bush +---| "minecraft:dead_fire_coral" #Dead Fire Coral +---| "minecraft:dead_fire_coral_block" #Dead Fire Coral Block +---| "minecraft:dead_fire_coral_fan" #Dead Fire Coral Fan +---| "minecraft:dead_fire_coral_wall_fan" #Dead Fire Coral Wall Fan +---| "minecraft:dead_horn_coral" #Dead Horn Coral +---| "minecraft:dead_horn_coral_block" #Dead Horn Coral Block +---| "minecraft:dead_horn_coral_fan" #Dead Horn Coral Fan +---| "minecraft:dead_horn_coral_wall_fan" #Dead Horn Coral Wall Fan +---| "minecraft:dead_tube_coral" #Dead Tube Coral +---| "minecraft:dead_tube_coral_block" #Dead Tube Coral Block +---| "minecraft:dead_tube_coral_fan" #Dead Tube Coral Fan +---| "minecraft:dead_tube_coral_wall_fan" #Dead Tube Coral Wall Fan +---| "minecraft:deepslate" #Deepslate +---| "minecraft:deepslate_brick_slab" #Deepslate Brick Slab +---| "minecraft:deepslate_brick_stairs" #Deepslate Brick Stairs +---| "minecraft:deepslate_brick_wall" #Deepslate Brick Wall +---| "minecraft:deepslate_bricks" #Deepslate Bricks +---| "minecraft:deepslate_coal_ore" #Deepslate Coal Ore +---| "minecraft:deepslate_copper_ore" #Deepslate Copper Ore +---| "minecraft:deepslate_diamond_ore" #Deepslate Diamond Ore +---| "minecraft:deepslate_emerald_ore" #Deepslate Emerald Ore +---| "minecraft:deepslate_gold_ore" #Deepslate Gold Ore +---| "minecraft:deepslate_iron_ore" #Deepslate Iron Ore +---| "minecraft:deepslate_lapis_ore" #Deepslate Lapis Lazuli Ore +---| "minecraft:deepslate_redstone_ore" #Deepslate Redstone Ore +---| "minecraft:deepslate_tile_slab" #Deepslate Tile Slab +---| "minecraft:deepslate_tile_stairs" #Deepslate Tile Stairs +---| "minecraft:deepslate_tile_wall" #Deepslate Tile Wall +---| "minecraft:deepslate_tiles" #Deepslate Tiles +---| "minecraft:detector_rail" #Detector Rail +---| "minecraft:diamond_block" #Block of Diamond +---| "minecraft:diamond_ore" #Diamond Ore +---| "minecraft:diorite" #Diorite +---| "minecraft:diorite_slab" #Diorite Slab +---| "minecraft:diorite_stairs" #Diorite Stairs +---| "minecraft:diorite_wall" #Diorite Wall +---| "minecraft:dirt" #Dirt +---| "minecraft:dirt_path" #Dirt Path +---| "minecraft:dispenser" #Dispenser +---| "minecraft:dragon_egg" #Dragon Egg +---| "minecraft:dragon_head" #Dragon Head +---| "minecraft:dragon_wall_head" #Dragon Wall Head +---| "minecraft:dried_kelp_block" #Dried Kelp Block +---| "minecraft:dripstone_block" #Dripstone Block +---| "minecraft:dropper" #Dropper +---| "minecraft:emerald_block" #Block of Emerald +---| "minecraft:emerald_ore" #Emerald Ore +---| "minecraft:enchanting_table" #Enchanting Table +---| "minecraft:end_gateway" #End Gateway +---| "minecraft:end_portal" #End Portal +---| "minecraft:end_portal_frame" #End Portal Frame +---| "minecraft:end_rod" #End Rod +---| "minecraft:end_stone" #End Stone +---| "minecraft:end_stone_brick_slab" #End Stone Brick Slab +---| "minecraft:end_stone_brick_stairs" #End Stone Brick Stairs +---| "minecraft:end_stone_brick_wall" #End Stone Brick Wall +---| "minecraft:end_stone_bricks" #End Stone Bricks +---| "minecraft:ender_chest" #Ender Chest +---| "minecraft:exposed_copper" #Exposed Copper +---| "minecraft:exposed_cut_copper" #Exposed Cut Copper +---| "minecraft:exposed_cut_copper_slab" #Exposed Cut Copper Slab +---| "minecraft:exposed_cut_copper_stairs" #Exposed Cut Copper Stairs +---| "minecraft:farmland" #Farmland +---| "minecraft:fern" #Fern +---| "minecraft:fire" #Fire +---| "minecraft:fire_coral" #Fire Coral +---| "minecraft:fire_coral_block" #Fire Coral Block +---| "minecraft:fire_coral_fan" #Fire Coral Fan +---| "minecraft:fire_coral_wall_fan" #Fire Coral Wall Fan +---| "minecraft:fletching_table" #Fletching Table +---| "minecraft:flower_pot" #Flower Pot +---| "minecraft:flowering_azalea" #Flowering Azalea +---| "minecraft:flowering_azalea_leaves" #Flowering Azalea Leaves +---| "minecraft:frosted_ice" #Frosted Ice +---| "minecraft:furnace" #Furnace +---| "minecraft:gilded_blackstone" #Gilded Blackstone +---| "minecraft:glass" #Glass +---| "minecraft:glass_pane" #Glass Pane +---| "minecraft:glow_lichen" #Glow Lichen +---| "minecraft:glowstone" #Glowstone +---| "minecraft:gold_block" #Block of Gold +---| "minecraft:gold_ore" #Gold Ore +---| "minecraft:granite" #Granite +---| "minecraft:granite_slab" #Granite Slab +---| "minecraft:granite_stairs" #Granite Stairs +---| "minecraft:granite_wall" #Granite Wall +---| "minecraft:grass" #Grass +---| "minecraft:grass_block" #Grass Block +---| "minecraft:gravel" #Gravel +---| "minecraft:gray_banner" #Gray Banner +---| "minecraft:gray_bed" #Gray Bed +---| "minecraft:gray_candle" #Gray Candle +---| "minecraft:gray_candle_cake" #Cake with Gray Candle +---| "minecraft:gray_carpet" #Gray Carpet +---| "minecraft:gray_concrete" #Gray Concrete +---| "minecraft:gray_concrete_powder" #Gray Concrete Powder +---| "minecraft:gray_glazed_terracotta" #Gray Glazed Terracotta +---| "minecraft:gray_shulker_box" #Gray Shulker Box +---| "minecraft:gray_stained_glass" #Gray Stained Glass +---| "minecraft:gray_stained_glass_pane" #Gray Stained Glass Pane +---| "minecraft:gray_terracotta" #Gray Terracotta +---| "minecraft:gray_wall_banner" #Gray Wall Banner +---| "minecraft:gray_wool" #Gray Wool +---| "minecraft:green_banner" #Green Banner +---| "minecraft:green_bed" #Green Bed +---| "minecraft:green_candle" #Green Candle +---| "minecraft:green_candle_cake" #Cake with Green Candle +---| "minecraft:green_carpet" #Green Carpet +---| "minecraft:green_concrete" #Green Concrete +---| "minecraft:green_concrete_powder" #Green Concrete Powder +---| "minecraft:green_glazed_terracotta" #Green Glazed Terracotta +---| "minecraft:green_shulker_box" #Green Shulker Box +---| "minecraft:green_stained_glass" #Green Stained Glass +---| "minecraft:green_stained_glass_pane" #Green Stained Glass Pane +---| "minecraft:green_terracotta" #Green Terracotta +---| "minecraft:green_wall_banner" #Green Wall Banner +---| "minecraft:green_wool" #Green Wool +---| "minecraft:grindstone" #Grindstone +---| "minecraft:hanging_roots" #Hanging Roots +---| "minecraft:hay_block" #Hay Bale +---| "minecraft:heavy_weighted_pressure_plate" #Heavy Weighted Pressure Plate +---| "minecraft:honey_block" #Honey Block +---| "minecraft:honeycomb_block" #Honeycomb Block +---| "minecraft:hopper" #Hopper +---| "minecraft:horn_coral" #Horn Coral +---| "minecraft:horn_coral_block" #Horn Coral Block +---| "minecraft:horn_coral_fan" #Horn Coral Fan +---| "minecraft:horn_coral_wall_fan" #Horn Coral Wall Fan +---| "minecraft:ice" #Ice +---| "minecraft:infested_chiseled_stone_bricks" #Infested Chiseled Stone Bricks +---| "minecraft:infested_cobblestone" #Infested Cobblestone +---| "minecraft:infested_cracked_stone_bricks" #Infested Cracked Stone Bricks +---| "minecraft:infested_deepslate" #Infested Deepslate +---| "minecraft:infested_mossy_stone_bricks" #Infested Mossy Stone Bricks +---| "minecraft:infested_stone" #Infested Stone +---| "minecraft:infested_stone_bricks" #Infested Stone Bricks +---| "minecraft:iron_bars" #Iron Bars +---| "minecraft:iron_block" #Block of Iron +---| "minecraft:iron_door" #Iron Door +---| "minecraft:iron_ore" #Iron Ore +---| "minecraft:iron_trapdoor" #Iron Trapdoor +---| "minecraft:jack_o_lantern" #Jack o'Lantern +---| "minecraft:jigsaw" #Jigsaw Block +---| "minecraft:jukebox" #Jukebox +---| "minecraft:jungle_button" #Jungle Button +---| "minecraft:jungle_door" #Jungle Door +---| "minecraft:jungle_fence" #Jungle Fence +---| "minecraft:jungle_fence_gate" #Jungle Fence Gate +---| "minecraft:jungle_leaves" #Jungle Leaves +---| "minecraft:jungle_log" #Jungle Log +---| "minecraft:jungle_planks" #Jungle Planks +---| "minecraft:jungle_pressure_plate" #Jungle Pressure Plate +---| "minecraft:jungle_sapling" #Jungle Sapling +---| "minecraft:jungle_sign" #Jungle Sign +---| "minecraft:jungle_slab" #Jungle Slab +---| "minecraft:jungle_stairs" #Jungle Stairs +---| "minecraft:jungle_trapdoor" #Jungle Trapdoor +---| "minecraft:jungle_wall_sign" #Jungle Wall Sign +---| "minecraft:jungle_wood" #Jungle Wood +---| "minecraft:kelp" #Kelp +---| "minecraft:kelp_plant" #Kelp Plant +---| "minecraft:ladder" #Ladder +---| "minecraft:lantern" #Lantern +---| "minecraft:lapis_block" #Block of Lapis Lazuli +---| "minecraft:lapis_ore" #Lapis Lazuli Ore +---| "minecraft:large_amethyst_bud" #Large Amethyst Bud +---| "minecraft:large_fern" #Large Fern +---| "minecraft:lava" #Lava +---| "minecraft:lava_cauldron" #Lava Cauldron +---| "minecraft:lectern" #Lectern +---| "minecraft:lever" #Lever +---| "minecraft:light" #Light +---| "minecraft:light_blue_banner" #Light Blue Banner +---| "minecraft:light_blue_bed" #Light Blue Bed +---| "minecraft:light_blue_candle" #Light Blue Candle +---| "minecraft:light_blue_candle_cake" #Cake with Light Blue Candle +---| "minecraft:light_blue_carpet" #Light Blue Carpet +---| "minecraft:light_blue_concrete" #Light Blue Concrete +---| "minecraft:light_blue_concrete_powder" #Light Blue Concrete Powder +---| "minecraft:light_blue_glazed_terracotta" #Light Blue Glazed Terracotta +---| "minecraft:light_blue_shulker_box" #Light Blue Shulker Box +---| "minecraft:light_blue_stained_glass" #Light Blue Stained Glass +---| "minecraft:light_blue_stained_glass_pane" #Light Blue Stained Glass Pane +---| "minecraft:light_blue_terracotta" #Light Blue Terracotta +---| "minecraft:light_blue_wall_banner" #Light Blue Wall Banner +---| "minecraft:light_blue_wool" #Light Blue Wool +---| "minecraft:light_gray_banner" #Light Gray Banner +---| "minecraft:light_gray_bed" #Light Gray Bed +---| "minecraft:light_gray_candle" #Light Gray Candle +---| "minecraft:light_gray_candle_cake" #Cake with Light Gray Candle +---| "minecraft:light_gray_carpet" #Light Gray Carpet +---| "minecraft:light_gray_concrete" #Light Gray Concrete +---| "minecraft:light_gray_concrete_powder" #Light Gray Concrete Powder +---| "minecraft:light_gray_glazed_terracotta" #Light Gray Glazed Terracotta +---| "minecraft:light_gray_shulker_box" #Light Gray Shulker Box +---| "minecraft:light_gray_stained_glass" #Light Gray Stained Glass +---| "minecraft:light_gray_stained_glass_pane" #Light Gray Stained Glass Pane +---| "minecraft:light_gray_terracotta" #Light Gray Terracotta +---| "minecraft:light_gray_wall_banner" #Light Gray Wall Banner +---| "minecraft:light_gray_wool" #Light Gray Wool +---| "minecraft:light_weighted_pressure_plate" #Light Weighted Pressure Plate +---| "minecraft:lightning_rod" #Lightning Rod +---| "minecraft:lilac" #Lilac +---| "minecraft:lily_of_the_valley" #Lily of the Valley +---| "minecraft:lily_pad" #Lily Pad +---| "minecraft:lime_banner" #Lime Banner +---| "minecraft:lime_bed" #Lime Bed +---| "minecraft:lime_candle" #Lime Candle +---| "minecraft:lime_candle_cake" #Cake with Lime Candle +---| "minecraft:lime_carpet" #Lime Carpet +---| "minecraft:lime_concrete" #Lime Concrete +---| "minecraft:lime_concrete_powder" #Lime Concrete Powder +---| "minecraft:lime_glazed_terracotta" #Lime Glazed Terracotta +---| "minecraft:lime_shulker_box" #Lime Shulker Box +---| "minecraft:lime_stained_glass" #Lime Stained Glass +---| "minecraft:lime_stained_glass_pane" #Lime Stained Glass Pane +---| "minecraft:lime_terracotta" #Lime Terracotta +---| "minecraft:lime_wall_banner" #Lime Wall Banner +---| "minecraft:lime_wool" #Lime Wool +---| "minecraft:lodestone" #Lodestone +---| "minecraft:loom" #Loom +---| "minecraft:magenta_banner" #Magenta Banner +---| "minecraft:magenta_bed" #Magenta Bed +---| "minecraft:magenta_candle" #Magenta Candle +---| "minecraft:magenta_candle_cake" #Cake with Magenta Candle +---| "minecraft:magenta_carpet" #Magenta Carpet +---| "minecraft:magenta_concrete" #Magenta Concrete +---| "minecraft:magenta_concrete_powder" #Magenta Concrete Powder +---| "minecraft:magenta_glazed_terracotta" #Magenta Glazed Terracotta +---| "minecraft:magenta_shulker_box" #Magenta Shulker Box +---| "minecraft:magenta_stained_glass" #Magenta Stained Glass +---| "minecraft:magenta_stained_glass_pane" #Magenta Stained Glass Pane +---| "minecraft:magenta_terracotta" #Magenta Terracotta +---| "minecraft:magenta_wall_banner" #Magenta Wall Banner +---| "minecraft:magenta_wool" #Magenta Wool +---| "minecraft:magma_block" #Magma Block +---| "minecraft:medium_amethyst_bud" #Medium Amethyst Bud +---| "minecraft:melon" #Melon +---| "minecraft:melon_stem" #Melon Stem +---| "minecraft:moss_block" #Moss Block +---| "minecraft:moss_carpet" #Moss Carpet +---| "minecraft:mossy_cobblestone" #Mossy Cobblestone +---| "minecraft:mossy_cobblestone_slab" #Mossy Cobblestone Slab +---| "minecraft:mossy_cobblestone_stairs" #Mossy Cobblestone Stairs +---| "minecraft:mossy_cobblestone_wall" #Mossy Cobblestone Wall +---| "minecraft:mossy_stone_brick_slab" #Mossy Stone Brick Slab +---| "minecraft:mossy_stone_brick_stairs" #Mossy Stone Brick Stairs +---| "minecraft:mossy_stone_brick_wall" #Mossy Stone Brick Wall +---| "minecraft:mossy_stone_bricks" #Mossy Stone Bricks +---| "minecraft:moving_piston" #Moving Piston +---| "minecraft:mushroom_stem" #Mushroom Stem +---| "minecraft:mycelium" #Mycelium +---| "minecraft:nether_brick_fence" #Nether Brick Fence +---| "minecraft:nether_brick_slab" #Nether Brick Slab +---| "minecraft:nether_brick_stairs" #Nether Brick Stairs +---| "minecraft:nether_brick_wall" #Nether Brick Wall +---| "minecraft:nether_bricks" #Nether Bricks +---| "minecraft:nether_gold_ore" #Nether Gold Ore +---| "minecraft:nether_portal" #Nether Portal +---| "minecraft:nether_quartz_ore" #Nether Quartz Ore +---| "minecraft:nether_sprouts" #Nether Sprouts +---| "minecraft:nether_wart" #Nether Wart +---| "minecraft:nether_wart_block" #Nether Wart Block +---| "minecraft:netherite_block" #Block of Netherite +---| "minecraft:netherrack" #Netherrack +---| "minecraft:note_block" #Note Block +---| "minecraft:oak_button" #Oak Button +---| "minecraft:oak_door" #Oak Door +---| "minecraft:oak_fence" #Oak Fence +---| "minecraft:oak_fence_gate" #Oak Fence Gate +---| "minecraft:oak_leaves" #Oak Leaves +---| "minecraft:oak_log" #Oak Log +---| "minecraft:oak_planks" #Oak Planks +---| "minecraft:oak_pressure_plate" #Oak Pressure Plate +---| "minecraft:oak_sapling" #Oak Sapling +---| "minecraft:oak_sign" #Oak Sign +---| "minecraft:oak_slab" #Oak Slab +---| "minecraft:oak_stairs" #Oak Stairs +---| "minecraft:oak_trapdoor" #Oak Trapdoor +---| "minecraft:oak_wall_sign" #Oak Wall Sign +---| "minecraft:oak_wood" #Oak Wood +---| "minecraft:observer" #Observer +---| "minecraft:obsidian" #Obsidian +---| "minecraft:orange_banner" #Orange Banner +---| "minecraft:orange_bed" #Orange Bed +---| "minecraft:orange_candle" #Orange Candle +---| "minecraft:orange_candle_cake" #Cake with Orange Candle +---| "minecraft:orange_carpet" #Orange Carpet +---| "minecraft:orange_concrete" #Orange Concrete +---| "minecraft:orange_concrete_powder" #Orange Concrete Powder +---| "minecraft:orange_glazed_terracotta" #Orange Glazed Terracotta +---| "minecraft:orange_shulker_box" #Orange Shulker Box +---| "minecraft:orange_stained_glass" #Orange Stained Glass +---| "minecraft:orange_stained_glass_pane" #Orange Stained Glass Pane +---| "minecraft:orange_terracotta" #Orange Terracotta +---| "minecraft:orange_tulip" #Orange Tulip +---| "minecraft:orange_wall_banner" #Orange Wall Banner +---| "minecraft:orange_wool" #Orange Wool +---| "minecraft:oxeye_daisy" #Oxeye Daisy +---| "minecraft:oxidized_copper" #Oxidized Copper +---| "minecraft:oxidized_cut_copper" #Oxidized Cut Copper +---| "minecraft:oxidized_cut_copper_slab" #Oxidized Cut Copper Slab +---| "minecraft:oxidized_cut_copper_stairs" #Oxidized Cut Copper Stairs +---| "minecraft:packed_ice" #Packed Ice +---| "minecraft:peony" #Peony +---| "minecraft:petrified_oak_slab" #Petrified Oak Slab +---| "minecraft:pink_banner" #Pink Banner +---| "minecraft:pink_bed" #Pink Bed +---| "minecraft:pink_candle" #Pink Candle +---| "minecraft:pink_candle_cake" #Cake with Pink Candle +---| "minecraft:pink_carpet" #Pink Carpet +---| "minecraft:pink_concrete" #Pink Concrete +---| "minecraft:pink_concrete_powder" #Pink Concrete Powder +---| "minecraft:pink_glazed_terracotta" #Pink Glazed Terracotta +---| "minecraft:pink_shulker_box" #Pink Shulker Box +---| "minecraft:pink_stained_glass" #Pink Stained Glass +---| "minecraft:pink_stained_glass_pane" #Pink Stained Glass Pane +---| "minecraft:pink_terracotta" #Pink Terracotta +---| "minecraft:pink_tulip" #Pink Tulip +---| "minecraft:pink_wall_banner" #Pink Wall Banner +---| "minecraft:pink_wool" #Pink Wool +---| "minecraft:piston" #Piston +---| "minecraft:piston_head" #Piston Head +---| "minecraft:player_head" #Player Head +---| "minecraft:player_wall_head" #Player Wall Head +---| "minecraft:podzol" #Podzol +---| "minecraft:pointed_dripstone" #Pointed Dripstone +---| "minecraft:polished_andesite" #Polished Andesite +---| "minecraft:polished_andesite_slab" #Polished Andesite Slab +---| "minecraft:polished_andesite_stairs" #Polished Andesite Stairs +---| "minecraft:polished_basalt" #Polished Basalt +---| "minecraft:polished_blackstone" #Polished Blackstone +---| "minecraft:polished_blackstone_brick_slab" #Polished Blackstone Brick Slab +---| "minecraft:polished_blackstone_brick_stairs" #Polished Blackstone Brick Stairs +---| "minecraft:polished_blackstone_brick_wall" #Polished Blackstone Brick Wall +---| "minecraft:polished_blackstone_bricks" #Polished Blackstone Bricks +---| "minecraft:polished_blackstone_button" #Polished Blackstone Button +---| "minecraft:polished_blackstone_pressure_plate" #Polished Blackstone Pressure Plate +---| "minecraft:polished_blackstone_slab" #Polished Blackstone Slab +---| "minecraft:polished_blackstone_stairs" #Polished Blackstone Stairs +---| "minecraft:polished_blackstone_wall" #Polished Blackstone Wall +---| "minecraft:polished_deepslate" #Polished Deepslate +---| "minecraft:polished_deepslate_slab" #Polished Deepslate Slab +---| "minecraft:polished_deepslate_stairs" #Polished Deepslate Stairs +---| "minecraft:polished_deepslate_wall" #Polished Deepslate Wall +---| "minecraft:polished_diorite" #Polished Diorite +---| "minecraft:polished_diorite_slab" #Polished Diorite Slab +---| "minecraft:polished_diorite_stairs" #Polished Diorite Stairs +---| "minecraft:polished_granite" #Polished Granite +---| "minecraft:polished_granite_slab" #Polished Granite Slab +---| "minecraft:polished_granite_stairs" #Polished Granite Stairs +---| "minecraft:poppy" #Poppy +---| "minecraft:potatoes" #Potatoes +---| "minecraft:potted_acacia_sapling" #Potted Acacia Sapling +---| "minecraft:potted_allium" #Potted Allium +---| "minecraft:potted_azalea_bush" #Potted Azalea +---| "minecraft:potted_azure_bluet" #Potted Azure Bluet +---| "minecraft:potted_bamboo" #Potted Bamboo +---| "minecraft:potted_birch_sapling" #Potted Birch Sapling +---| "minecraft:potted_blue_orchid" #Potted Blue Orchid +---| "minecraft:potted_brown_mushroom" #Potted Brown Mushroom +---| "minecraft:potted_cactus" #Potted Cactus +---| "minecraft:potted_cornflower" #Potted Cornflower +---| "minecraft:potted_crimson_fungus" #Potted Crimson Fungus +---| "minecraft:potted_crimson_roots" #Potted Crimson Roots +---| "minecraft:potted_dandelion" #Potted Dandelion +---| "minecraft:potted_dark_oak_sapling" #Potted Dark Oak Sapling +---| "minecraft:potted_dead_bush" #Potted Dead Bush +---| "minecraft:potted_fern" #Potted Fern +---| "minecraft:potted_flowering_azalea_bush" #Potted Flowering Azalea +---| "minecraft:potted_jungle_sapling" #Potted Jungle Sapling +---| "minecraft:potted_lily_of_the_valley" #Potted Lily of the Valley +---| "minecraft:potted_oak_sapling" #Potted Oak Sapling +---| "minecraft:potted_orange_tulip" #Potted Orange Tulip +---| "minecraft:potted_oxeye_daisy" #Potted Oxeye Daisy +---| "minecraft:potted_pink_tulip" #Potted Pink Tulip +---| "minecraft:potted_poppy" #Potted Poppy +---| "minecraft:potted_red_mushroom" #Potted Red Mushroom +---| "minecraft:potted_red_tulip" #Potted Red Tulip +---| "minecraft:potted_spruce_sapling" #Potted Spruce Sapling +---| "minecraft:potted_warped_fungus" #Potted Warped Fungus +---| "minecraft:potted_warped_roots" #Potted Warped Roots +---| "minecraft:potted_white_tulip" #Potted White Tulip +---| "minecraft:potted_wither_rose" #Potted Wither Rose +---| "minecraft:powder_snow" #Powder Snow +---| "minecraft:powder_snow_cauldron" #Powder Snow Cauldron +---| "minecraft:powered_rail" #Powered Rail +---| "minecraft:prismarine" #Prismarine +---| "minecraft:prismarine_brick_slab" #Prismarine Brick Slab +---| "minecraft:prismarine_brick_stairs" #Prismarine Brick Stairs +---| "minecraft:prismarine_bricks" #Prismarine Bricks +---| "minecraft:prismarine_slab" #Prismarine Slab +---| "minecraft:prismarine_stairs" #Prismarine Stairs +---| "minecraft:prismarine_wall" #Prismarine Wall +---| "minecraft:pumpkin" #Pumpkin +---| "minecraft:pumpkin_stem" #Pumpkin Stem +---| "minecraft:purple_banner" #Purple Banner +---| "minecraft:purple_bed" #Purple Bed +---| "minecraft:purple_candle" #Purple Candle +---| "minecraft:purple_candle_cake" #Cake with Purple Candle +---| "minecraft:purple_carpet" #Purple Carpet +---| "minecraft:purple_concrete" #Purple Concrete +---| "minecraft:purple_concrete_powder" #Purple Concrete Powder +---| "minecraft:purple_glazed_terracotta" #Purple Glazed Terracotta +---| "minecraft:purple_shulker_box" #Purple Shulker Box +---| "minecraft:purple_stained_glass" #Purple Stained Glass +---| "minecraft:purple_stained_glass_pane" #Purple Stained Glass Pane +---| "minecraft:purple_terracotta" #Purple Terracotta +---| "minecraft:purple_wall_banner" #Purple Wall Banner +---| "minecraft:purple_wool" #Purple Wool +---| "minecraft:purpur_block" #Purpur Block +---| "minecraft:purpur_pillar" #Purpur Pillar +---| "minecraft:purpur_slab" #Purpur Slab +---| "minecraft:purpur_stairs" #Purpur Stairs +---| "minecraft:quartz_block" #Block of Quartz +---| "minecraft:quartz_bricks" #Quartz Bricks +---| "minecraft:quartz_pillar" #Quartz Pillar +---| "minecraft:quartz_slab" #Quartz Slab +---| "minecraft:quartz_stairs" #Quartz Stairs +---| "minecraft:rail" #Rail +---| "minecraft:raw_copper_block" #Block of Raw Copper +---| "minecraft:raw_gold_block" #Block of Raw Gold +---| "minecraft:raw_iron_block" #Block of Raw Iron +---| "minecraft:red_banner" #Red Banner +---| "minecraft:red_bed" #Red Bed +---| "minecraft:red_candle" #Red Candle +---| "minecraft:red_candle_cake" #Cake with Red Candle +---| "minecraft:red_carpet" #Red Carpet +---| "minecraft:red_concrete" #Red Concrete +---| "minecraft:red_concrete_powder" #Red Concrete Powder +---| "minecraft:red_glazed_terracotta" #Red Glazed Terracotta +---| "minecraft:red_mushroom" #Red Mushroom +---| "minecraft:red_mushroom_block" #Red Mushroom Block +---| "minecraft:red_nether_brick_slab" #Red Nether Brick Slab +---| "minecraft:red_nether_brick_stairs" #Red Nether Brick Stairs +---| "minecraft:red_nether_brick_wall" #Red Nether Brick Wall +---| "minecraft:red_nether_bricks" #Red Nether Bricks +---| "minecraft:red_sand" #Red Sand +---| "minecraft:red_sandstone" #Red Sandstone +---| "minecraft:red_sandstone_slab" #Red Sandstone Slab +---| "minecraft:red_sandstone_stairs" #Red Sandstone Stairs +---| "minecraft:red_sandstone_wall" #Red Sandstone Wall +---| "minecraft:red_shulker_box" #Red Shulker Box +---| "minecraft:red_stained_glass" #Red Stained Glass +---| "minecraft:red_stained_glass_pane" #Red Stained Glass Pane +---| "minecraft:red_terracotta" #Red Terracotta +---| "minecraft:red_tulip" #Red Tulip +---| "minecraft:red_wall_banner" #Red Wall Banner +---| "minecraft:red_wool" #Red Wool +---| "minecraft:redstone_block" #Block of Redstone +---| "minecraft:redstone_lamp" #Redstone Lamp +---| "minecraft:redstone_ore" #Redstone Ore +---| "minecraft:redstone_torch" #Redstone Torch +---| "minecraft:redstone_wall_torch" #Redstone Wall Torch +---| "minecraft:redstone_wire" #Redstone Wire +---| "minecraft:repeater" #Redstone Repeater +---| "minecraft:repeating_command_block" #Repeating Command Block +---| "minecraft:respawn_anchor" #Respawn Anchor +---| "minecraft:rooted_dirt" #Rooted Dirt +---| "minecraft:rose_bush" #Rose Bush +---| "minecraft:sand" #Sand +---| "minecraft:sandstone" #Sandstone +---| "minecraft:sandstone_slab" #Sandstone Slab +---| "minecraft:sandstone_stairs" #Sandstone Stairs +---| "minecraft:sandstone_wall" #Sandstone Wall +---| "minecraft:scaffolding" #Scaffolding +---| "minecraft:sculk_sensor" #Sculk Sensor +---| "minecraft:sea_lantern" #Sea Lantern +---| "minecraft:sea_pickle" #Sea Pickle +---| "minecraft:seagrass" #Seagrass +---| "minecraft:shroomlight" #Shroomlight +---| "minecraft:shulker_box" #Shulker Box +---| "minecraft:skeleton_skull" #Skeleton Skull +---| "minecraft:skeleton_wall_skull" #Skeleton Wall Skull +---| "minecraft:slime_block" #Slime Block +---| "minecraft:small_amethyst_bud" #Small Amethyst Bud +---| "minecraft:small_dripleaf" #Small Dripleaf +---| "minecraft:smithing_table" #Smithing Table +---| "minecraft:smoker" #Smoker +---| "minecraft:smooth_basalt" #Smooth Basalt +---| "minecraft:smooth_quartz" #Smooth Quartz Block +---| "minecraft:smooth_quartz_slab" #Smooth Quartz Slab +---| "minecraft:smooth_quartz_stairs" #Smooth Quartz Stairs +---| "minecraft:smooth_red_sandstone" #Smooth Red Sandstone +---| "minecraft:smooth_red_sandstone_slab" #Smooth Red Sandstone Slab +---| "minecraft:smooth_red_sandstone_stairs" #Smooth Red Sandstone Stairs +---| "minecraft:smooth_sandstone" #Smooth Sandstone +---| "minecraft:smooth_sandstone_slab" #Smooth Sandstone Slab +---| "minecraft:smooth_sandstone_stairs" #Smooth Sandstone Stairs +---| "minecraft:smooth_stone" #Smooth Stone +---| "minecraft:smooth_stone_slab" #Smooth Stone Slab +---| "minecraft:snow" #Snow +---| "minecraft:snow_block" #Snow Block +---| "minecraft:soul_campfire" #Soul Campfire +---| "minecraft:soul_fire" #Soul Fire +---| "minecraft:soul_lantern" #Soul Lantern +---| "minecraft:soul_sand" #Soul Sand +---| "minecraft:soul_soil" #Soul Soil +---| "minecraft:soul_torch" #Soul Torch +---| "minecraft:soul_wall_torch" #Soul Wall Torch +---| "minecraft:spawner" #Spawner +---| "minecraft:sponge" #Sponge +---| "minecraft:spore_blossom" #Spore Blossom +---| "minecraft:spruce_button" #Spruce Button +---| "minecraft:spruce_door" #Spruce Door +---| "minecraft:spruce_fence" #Spruce Fence +---| "minecraft:spruce_fence_gate" #Spruce Fence Gate +---| "minecraft:spruce_leaves" #Spruce Leaves +---| "minecraft:spruce_log" #Spruce Log +---| "minecraft:spruce_planks" #Spruce Planks +---| "minecraft:spruce_pressure_plate" #Spruce Pressure Plate +---| "minecraft:spruce_sapling" #Spruce Sapling +---| "minecraft:spruce_sign" #Spruce Sign +---| "minecraft:spruce_slab" #Spruce Slab +---| "minecraft:spruce_stairs" #Spruce Stairs +---| "minecraft:spruce_trapdoor" #Spruce Trapdoor +---| "minecraft:spruce_wall_sign" #Spruce Wall Sign +---| "minecraft:spruce_wood" #Spruce Wood +---| "minecraft:sticky_piston" #Sticky Piston +---| "minecraft:stone" #Stone +---| "minecraft:stone_brick_slab" #Stone Brick Slab +---| "minecraft:stone_brick_stairs" #Stone Brick Stairs +---| "minecraft:stone_brick_wall" #Stone Brick Wall +---| "minecraft:stone_bricks" #Stone Bricks +---| "minecraft:stone_button" #Stone Button +---| "minecraft:stone_pressure_plate" #Stone Pressure Plate +---| "minecraft:stone_slab" #Stone Slab +---| "minecraft:stone_stairs" #Stone Stairs +---| "minecraft:stonecutter" #Stonecutter +---| "minecraft:stripped_acacia_log" #Stripped Acacia Log +---| "minecraft:stripped_acacia_wood" #Stripped Acacia Wood +---| "minecraft:stripped_birch_log" #Stripped Birch Log +---| "minecraft:stripped_birch_wood" #Stripped Birch Wood +---| "minecraft:stripped_crimson_hyphae" #Stripped Crimson Hyphae +---| "minecraft:stripped_crimson_stem" #Stripped Crimson Stem +---| "minecraft:stripped_dark_oak_log" #Stripped Dark Oak Log +---| "minecraft:stripped_dark_oak_wood" #Stripped Dark Oak Wood +---| "minecraft:stripped_jungle_log" #Stripped Jungle Log +---| "minecraft:stripped_jungle_wood" #Stripped Jungle Wood +---| "minecraft:stripped_oak_log" #Stripped Oak Log +---| "minecraft:stripped_oak_wood" #Stripped Oak Wood +---| "minecraft:stripped_spruce_log" #Stripped Spruce Log +---| "minecraft:stripped_spruce_wood" #Stripped Spruce Wood +---| "minecraft:stripped_warped_hyphae" #Stripped Warped Hyphae +---| "minecraft:stripped_warped_stem" #Stripped Warped Stem +---| "minecraft:structure_block" #Structure Block +---| "minecraft:structure_void" #Structure Void +---| "minecraft:sugar_cane" #Sugar Cane +---| "minecraft:sunflower" #Sunflower +---| "minecraft:sweet_berry_bush" #Sweet Berry Bush +---| "minecraft:tall_grass" #Tall Grass +---| "minecraft:tall_seagrass" #Tall Seagrass +---| "minecraft:target" #Target +---| "minecraft:terracotta" #Terracotta +---| "minecraft:tinted_glass" #Tinted Glass +---| "minecraft:tnt" #TNT +---| "minecraft:torch" #Torch +---| "minecraft:trapped_chest" #Trapped Chest +---| "minecraft:tripwire" #Tripwire +---| "minecraft:tripwire_hook" #Tripwire Hook +---| "minecraft:tube_coral" #Tube Coral +---| "minecraft:tube_coral_block" #Tube Coral Block +---| "minecraft:tube_coral_fan" #Tube Coral Fan +---| "minecraft:tube_coral_wall_fan" #Tube Coral Wall Fan +---| "minecraft:tuff" #Tuff +---| "minecraft:turtle_egg" #Turtle Egg +---| "minecraft:twisting_vines" #Twisting Vines +---| "minecraft:twisting_vines_plant" #Twisting Vines Plant +---| "minecraft:vine" #Vines +---| "minecraft:void_air" #Void Air +---| "minecraft:wall_torch" #Wall Torch +---| "minecraft:warped_button" #Warped Button +---| "minecraft:warped_door" #Warped Door +---| "minecraft:warped_fence" #Warped Fence +---| "minecraft:warped_fence_gate" #Warped Fence Gate +---| "minecraft:warped_fungus" #Warped Fungus +---| "minecraft:warped_hyphae" #Warped Hyphae +---| "minecraft:warped_nylium" #Warped Nylium +---| "minecraft:warped_planks" #Warped Planks +---| "minecraft:warped_pressure_plate" #Warped Pressure Plate +---| "minecraft:warped_roots" #Warped Roots +---| "minecraft:warped_sign" #Warped Sign +---| "minecraft:warped_slab" #Warped Slab +---| "minecraft:warped_stairs" #Warped Stairs +---| "minecraft:warped_stem" #Warped Stem +---| "minecraft:warped_trapdoor" #Warped Trapdoor +---| "minecraft:warped_wall_sign" #Warped Wall Sign +---| "minecraft:warped_wart_block" #Warped Wart Block +---| "minecraft:water" #Water +---| "minecraft:water_cauldron" #Water Cauldron +---| "minecraft:waxed_copper_block" #Waxed Block of Copper +---| "minecraft:waxed_cut_copper" #Waxed Cut Copper +---| "minecraft:waxed_cut_copper_slab" #Waxed Cut Copper Slab +---| "minecraft:waxed_cut_copper_stairs" #Waxed Cut Copper Stairs +---| "minecraft:waxed_exposed_copper" #Waxed Exposed Copper +---| "minecraft:waxed_exposed_cut_copper" #Waxed Exposed Cut Copper +---| "minecraft:waxed_exposed_cut_copper_slab" #Waxed Exposed Cut Copper Slab +---| "minecraft:waxed_exposed_cut_copper_stairs" #Waxed Exposed Cut Copper Stairs +---| "minecraft:waxed_oxidized_copper" #Waxed Oxidized Copper +---| "minecraft:waxed_oxidized_cut_copper" #Waxed Oxidized Cut Copper +---| "minecraft:waxed_oxidized_cut_copper_slab" #Waxed Oxidized Cut Copper Slab +---| "minecraft:waxed_oxidized_cut_copper_stairs" #Waxed Oxidized Cut Copper Stairs +---| "minecraft:waxed_weathered_copper" #Waxed Weathered Copper +---| "minecraft:waxed_weathered_cut_copper" #Waxed Weathered Cut Copper +---| "minecraft:waxed_weathered_cut_copper_slab" #Waxed Weathered Cut Copper Slab +---| "minecraft:waxed_weathered_cut_copper_stairs" #Waxed Weathered Cut Copper Stairs +---| "minecraft:weathered_copper" #Weathered Copper +---| "minecraft:weathered_cut_copper" #Weathered Cut Copper +---| "minecraft:weathered_cut_copper_slab" #Weathered Cut Copper Slab +---| "minecraft:weathered_cut_copper_stairs" #Weathered Cut Copper Stairs +---| "minecraft:weeping_vines" #Weeping Vines +---| "minecraft:weeping_vines_plant" #Weeping Vines Plant +---| "minecraft:wet_sponge" #Wet Sponge +---| "minecraft:wheat" #Wheat Crops +---| "minecraft:white_banner" #White Banner +---| "minecraft:white_bed" #White Bed +---| "minecraft:white_candle" #White Candle +---| "minecraft:white_candle_cake" #Cake with White Candle +---| "minecraft:white_carpet" #White Carpet +---| "minecraft:white_concrete" #White Concrete +---| "minecraft:white_concrete_powder" #White Concrete Powder +---| "minecraft:white_glazed_terracotta" #White Glazed Terracotta +---| "minecraft:white_shulker_box" #White Shulker Box +---| "minecraft:white_stained_glass" #White Stained Glass +---| "minecraft:white_stained_glass_pane" #White Stained Glass Pane +---| "minecraft:white_terracotta" #White Terracotta +---| "minecraft:white_tulip" #White Tulip +---| "minecraft:white_wall_banner" #White Wall Banner +---| "minecraft:white_wool" #White Wool +---| "minecraft:wither_rose" #Wither Rose +---| "minecraft:wither_skeleton_skull" #Wither Skeleton Skull +---| "minecraft:wither_skeleton_wall_skull" #Wither Skeleton Wall Skull +---| "minecraft:yellow_banner" #Yellow Banner +---| "minecraft:yellow_bed" #Yellow Bed +---| "minecraft:yellow_candle" #Yellow Candle +---| "minecraft:yellow_candle_cake" #Cake with Yellow Candle +---| "minecraft:yellow_carpet" #Yellow Carpet +---| "minecraft:yellow_concrete" #Yellow Concrete +---| "minecraft:yellow_concrete_powder" #Yellow Concrete Powder +---| "minecraft:yellow_glazed_terracotta" #Yellow Glazed Terracotta +---| "minecraft:yellow_shulker_box" #Yellow Shulker Box +---| "minecraft:yellow_stained_glass" #Yellow Stained Glass +---| "minecraft:yellow_stained_glass_pane" #Yellow Stained Glass Pane +---| "minecraft:yellow_terracotta" #Yellow Terracotta +---| "minecraft:yellow_wall_banner" #Yellow Wall Banner +---| "minecraft:yellow_wool" #Yellow Wool +---| "minecraft:zombie_head" #Zombie Head +---| "minecraft:zombie_wall_head" #Zombie Wall Head + +---@alias BlockMaterial +---| "field_15913" #Cobwebs (`COBWEB`) +---| "field_15914" #Stone-like (`STONE`) +---| "field_15915" #Bubble Column (`BUBBLE_COLUMN`) +---| "field_15916" #Sand-like (`AGGREGATE`) +---| "field_15917" #Sponge (`SPONGE`) +---| "field_15918" #Lamp (`REDSTONE_LAMP`) +---| "field_15919" #Portal (`PORTAL`) +---| "field_15920" #Water (`WATER`) +---| "field_15921" #Moss Block (`MOSS_BLOCK`) +---| "field_15922" #Lava (`LAVA`) +---| "field_15923" #Leafy (`LEAVES`) +---| "field_15924" #Small Decoration (`DECORATION`) +---| "field_15925" #Cactus (`CACTUS`) +---| "field_15926" #Replacable Underwater Plant (`REPLACEABLE_UNDERWATER_PLANT`) +---| "field_15927" #Structure Void (`STRUCTURE_VOID`) +---| "field_15928" #Dense Ice (`DENSE_ICE`) +---| "field_15930" #Egg (`EGG`) +---| "field_15931" #Wooly (`WOOL`) +---| "field_15932" #Wooden (`WOOD`) +---| "field_15933" #Piston (`PISTON`) +---| "field_15934" #Snow Block (`SNOW_BLOCK`) +---| "field_15935" #Plant (`PLANT`) +---| "field_15936" #Organic / Infested (`ORGANIC_PRODUCT`) +---| "field_15937" #Cake (`CAKE`) +---| "field_15938" #Bamboo Sapling (`BAMBOO_SAPLING`) +---| "field_15941" #Dirt (`SOIL`) +---| "field_15942" #Glass (`GLASS`) +---| "field_15943" #Fire (`FIRE`) +---| "field_15945" #Plant Block (`SOLID_ORGANIC`) +---| "field_15946" #Bamboo (`BAMBOO`) +---| "field_15947" #Small Coral (`UNDERWATER_PLANT`) +---| "field_15948" #Small Snow (`SNOW_LAYER`) +---| "field_15949" #Metallic Misc (`REPAIR_STATION`) +---| "field_15952" #Barrier (`BARRIER`) +---| "field_15953" #Metallic (`METAL`) +---| "field_15954" #Gourd (`GOURD`) +---| "field_15955" #Explosives (`TNT`) +---| "field_15956" #Misc Plants (`REPLACEABLE_PLANT`) +---| "field_15957" #Carpet (`CARPET`) +---| "field_15958" #Weak Ice (`ICE`) +---| "field_15959" #Air (`AIR`) +---| "field_17008" #Skuler (`SHULKER_BOX`) +---| "field_22223" #Nether Wooden (`NETHER_WOOD`) +---| "field_26708" #Nether Plants (`NETHER_SHOOTS`) +---| "field_27340" #Amethyst (`AMETHYST`) +---| "field_27890" #Powder Snow (`POWDER_SNOW`) +---| "field_28242" #Sculk (`SCULK`) + + +---A `table` containing blockstate properties. +--- +---Only the default Minecraft block state properties are auto-completed. +---You can use any block state property from any mod, even if it does not auto-complete. +---@class BlockStateProperties +---@field [string] string +local BlockStateProperties = { + ---Tracks the age of plants to handle growth and of fire to handle spread. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."1"` | `minecraft:bamboo` | + ---> | `"0".."2"` | `minecraft:cocoa` | + ---> | `"0".."3"` | `minecraft:beetroots` `minecraft:frosted_ice` `minecraft:nether_wart` `minecraft:sweet_berry_bush` | + ---> | `"0".."5"` | `minecraft:chorus_flower` | + ---> | `"0".."7"` | `minecraft:carrots` `minecraft:melon_stem` `minecraft:potatoes` `minecraft:pumpkin_stem` `minecraft:wheat` | + ---> | `"0".."15"` | `minecraft:cactus` `minecraft:fire` `minecraft:sugar_cane` | + ---> | `"0".."25"` | `minecraft:kelp` | + ---@type "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"10"|"11"|"12"|"13"|"14"|"15"|"16"|"17"|"18"|"19"|"20"|"21"|"22"|"23"|"24"|"25" + age = nil, + + ---Whether the tripwire hook is connected to a valid tripwire circuit or not. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:tripwire` `minecraft:tripwire_hook` | + ---@type "false"|"true" + attached = nil, + + ---How this block is attached to the block it is on. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"ceiling"` `"double_wall"` `"floor"` `"single_wall"` | `minecraft:bell` | + ---@type "ceiling"|"double_wall"|"floor"|"single_wall" + attachment = nil, + + ---What axis the block is oriented to. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"x"` `"y"` `"z"` | `minecraft:acacia_log` `minecraft:acacia_wood` `minecraft:basalt` `minecraft:birch_log` `minecraft:birch_wood` `minecraft:bone_block` `minecraft:chain` `minecraft:crimson_hyphae` `minecraft:crimson_stem` `minecraft:dark_oak_log` `minecraft:dark_oak_wood` `minecraft:deepslate` `minecraft:hay_block` `minecraft:jungle_log` `minecraft:jungle_wood` `minecraft:oak_log` `minecraft:oak_wood` `minecraft:polished_basalt` `minecraft:purpur_pillar` `minecraft:quartz_pillar` `minecraft:spruce_log` `minecraft:spruce_wood` `minecraft:stripped_acacia_log` `minecraft:stripped_acacia_wood` `minecraft:stripped_birch_log` `minecraft:stripped_birch_wood` `minecraft:stripped_crimson_hyphae` `minecraft:stripped_crimson_stem` `minecraft:stripped_dark_oak_log` `minecraft:stripped_dark_oak_wood` `minecraft:stripped_jungle_log` `minecraft:stripped_jungle_wood` `minecraft:stripped_oak_log` `minecraft:stripped_oak_wood` `minecraft:stripped_spruce_log` `minecraft:stripped_spruce_wood` `minecraft:stripped_warped_hyphae` `minecraft:stripped_warped_stem` `minecraft:warped_hyphae` `minecraft:warped_stem` | + ---> | `"x"` `"z"` | `minecraft:nether_portal` | + ---@type "x"|"y"|"z" + axis = nil, + + ---The number of bites taken from the cake. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."6"` | `minecraft:cake` | + ---@type "0"|"1"|"2"|"3"|"4"|"5"|"6" + bites = nil, + + ---Whether this scaffolding is floating (shows the bottom). + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:scaffolding` | + ---@type "false"|"true" + bottom = nil, + + ---Tracks the remaining uses of respawn anchors. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."4"` | `minecraft:respawn_anchor` | + ---@type "0"|"1"|"2"|"3"|"4" + charges = nil, + + ---Whether or not the command block is conditional. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:chain_command_block` `minecraft:command_block` `minecraft:repeating_command_block` | + ---@type "false"|"true" + conditional = nil, + + ---The amount of time between receiving a signal and responding. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"1".."4"` | `minecraft:repeater` | + ---@type "1"|"2"|"3"|"4" + delay = nil, + + ---Whether the tripwire is broken using shears or not. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:tripwire` | + ---@type "false"|"true" + disarmed = nil, + + ---The distance from a base block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."7"` | `minecraft:scaffolding` | + ---> | `"1".."7"` | `minecraft:acacia_leaves` `minecraft:azalea_leaves` `minecraft:birch_leaves` `minecraft:dark_oak_leaves` `minecraft:flowering_azalea_leaves` `minecraft:jungle_leaves` `minecraft:oak_leaves` `minecraft:spruce_leaves` | + ---@type "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7" + distance = nil, + + ---Determines whether something is below the block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:brown_mushroom_block` `minecraft:chorus_plant` `minecraft:mushroom_stem` `minecraft:red_mushroom_block` | + ---@type "false"|"true" + down = nil, + + ---Determines whether the bubble column is a whirlpool or upwards. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:bubble_column` | + ---@type "false"|"true" + drag = nil, + + ---Determines whether something is on the east side of the block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:acacia_fence` `minecraft:birch_fence` `minecraft:black_stained_glass_pane` `minecraft:blue_stained_glass_pane` `minecraft:brown_mushroom_block` `minecraft:brown_stained_glass_pane` `minecraft:chorus_plant` `minecraft:crimson_fence` `minecraft:cyan_stained_glass_pane` `minecraft:dark_oak_fence` `minecraft:fire` `minecraft:glass_pane` `minecraft:gray_stained_glass_pane` `minecraft:green_stained_glass_pane` `minecraft:iron_bars` `minecraft:jungle_fence` `minecraft:light_blue_stained_glass_pane` `minecraft:light_gray_stained_glass_pane` `minecraft:lime_stained_glass_pane` `minecraft:magenta_stained_glass_pane` `minecraft:mushroom_stem` `minecraft:nether_brick_fence` `minecraft:oak_fence` `minecraft:orange_stained_glass_pane` `minecraft:pink_stained_glass_pane` `minecraft:purple_stained_glass_pane` `minecraft:red_mushroom_block` `minecraft:red_stained_glass_pane` `minecraft:spruce_fence` `minecraft:tripwire` `minecraft:vine` `minecraft:warped_fence` `minecraft:white_stained_glass_pane` `minecraft:yellow_stained_glass_pane` | + ---> | `"none"` `"side"` `"up"` | `minecraft:redstone_wire` | + ---> | `"low"` `"none"` `"tall"` | `minecraft:andesite_wall` `minecraft:blackstone_wall` `minecraft:brick_wall` `minecraft:cobbled_deepslate_wall` `minecraft:cobblestone_wall` `minecraft:deepslate_brick_wall` `minecraft:deepslate_tile_wall` `minecraft:diorite_wall` `minecraft:end_stone_brick_wall` `minecraft:granite_wall` `minecraft:mossy_cobblestone_wall` `minecraft:mossy_stone_brick_wall` `minecraft:nether_brick_wall` `minecraft:polished_blackstone_brick_wall` `minecraft:polished_blackstone_wall` `minecraft:polished_deepslate_wall` `minecraft:prismarine_wall` `minecraft:red_nether_brick_wall` `minecraft:red_sandstone_wall` `minecraft:sandstone_wall` `minecraft:stone_brick_wall` | + ---@type "false"|"true"|"none"|"side"|"up"|"low"|"tall" + east = nil, + + ---The amount of eggs in this block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"1".."4"` | `minecraft:turtle_egg` | + ---@type "1"|"2"|"3"|"4" + eggs = nil, + + ---Whether or not the hopper can collect and transfer items. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:hopper` | + ---@type "false"|"true" + enabled = nil, + + ---Whether or not the piston is extended. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:piston` `minecraft:sticky_piston` | + ---@type "false"|"true" + extended = nil, + + ---Whether the frame contains an eye of ender. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:end_portal_frame` | + ---@type "false"|"true" + eye = nil, + + ---What side of a block the attached block is on. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"ceiling"` `"floor"` `"wall"` | `minecraft:acacia_button` `minecraft:birch_button` `minecraft:crimson_button` `minecraft:dark_oak_button` `minecraft:grindstone` `minecraft:jungle_button` `minecraft:lever` `minecraft:oak_button` `minecraft:polished_blackstone_button` `minecraft:spruce_button` `minecraft:stone_button` `minecraft:warped_button` | + ---@type "ceiling"|"floor"|"wall" + face = nil, + + ---For most blocks, what direction the block faces. + --- + ---For wall-attached bells as well as cocoa, the opposite is true. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"down"` `"east"` `"north"` `"south"` `"west"` `"up"` | `minecraft:amethyst_cluster` `minecraft:barrel` `minecraft:black_shulker_box` `minecraft:blue_shulker_box` `minecraft:brown_shulker_box` `minecraft:chain_command_block` `minecraft:command_block` `minecraft:cyan_shulker_box` `minecraft:dispenser` `minecraft:dropper` `minecraft:end_rod` `minecraft:gray_shulker_box` `minecraft:green_shulker_box` `minecraft:large_amethyst_bud` `minecraft:light_blue_shulker_box` `minecraft:light_gray_shulker_box` `minecraft:lime_shulker_box` `minecraft:magenta_shulker_box` `minecraft:medium_amethyst_bud` `minecraft:moving_piston` `minecraft:observer` `minecraft:orange_shulker_box` `minecraft:pink_shulker_box` `minecraft:piston` `minecraft:piston_head` `minecraft:purple_shulker_box` `minecraft:red_shulker_box` `minecraft:repeating_command_block` `minecraft:shulker_box` `minecraft:small_amethyst_bud` `minecraft:sticky_piston` `minecraft:white_shulker_box` `minecraft:yellow_shulker_box` | + ---> | `"east"` `"north"` `"south"` `"west"` | `minecraft:acacia_button` `minecraft:acacia_door` `minecraft:acacia_fence_gate` `minecraft:acacia_stairs` `minecraft:acacia_trapdoor` `minecraft:acacia_wall_sign` `minecraft:andesite_stairs` `minecraft:anvil` `minecraft:attached_melon_stem` `minecraft:attached_pumpkin_stem` `minecraft:bee_nest` `minecraft:beehive` `minecraft:bell` `minecraft:birch_button` `minecraft:birch_door` `minecraft:birch_fence_gate` `minecraft:birch_stairs` `minecraft:birch_trapdoor` `minecraft:birch_wall_sign` `minecraft:black_bed` `minecraft:black_glazed_terracotta` `minecraft:blackstone_stairs` `minecraft:blast_furnace` `minecraft:blue_bed` `minecraft:blue_glazed_terracotta` `minecraft:brain_coral_wall_fan` `minecraft:brick_stairs` `minecraft:brown_bed` `minecraft:brown_glazed_terracotta` `minecraft:bubble_coral_wall_fan` `minecraft:campfire` `minecraft:carved_pumpkin` `minecraft:chest` `minecraft:chipped_anvil` `minecraft:cobbled_deepslate_stairs` `minecraft:cobblestone_stairs` `minecraft:cocoa` `minecraft:comparator` `minecraft:crimson_button` `minecraft:crimson_door` `minecraft:crimson_fence_gate` `minecraft:crimson_stairs` `minecraft:crimson_trapdoor` `minecraft:crimson_wall_sign` `minecraft:cut_copper_stairs` `minecraft:cyan_bed` `minecraft:cyan_glazed_terracotta` `minecraft:damaged_anvil` `minecraft:dark_oak_button` `minecraft:dark_oak_door` `minecraft:dark_oak_fence_gate` `minecraft:dark_oak_stairs` `minecraft:dark_oak_trapdoor` `minecraft:dark_oak_wall_sign` `minecraft:dark_prismarine_stairs` `minecraft:dead_brain_coral_wall_fan` `minecraft:dead_bubble_coral_wall_fan` `minecraft:dead_fire_coral_wall_fan` `minecraft:dead_horn_coral_wall_fan` `minecraft:dead_tube_coral_wall_fan` `minecraft:deepslate_brick_stairs` `minecraft:deepslate_tile_stairs` `minecraft:diorite_stairs` `minecraft:end_portal_frame` `minecraft:end_stone_brick_stairs` `minecraft:ender_chest` `minecraft:exposed_cut_copper_stairs` `minecraft:fire_coral_wall_fan` `minecraft:furnace` `minecraft:granite_stairs` `minecraft:gray_bed` `minecraft:gray_glazed_terracotta` `minecraft:green_bed` `minecraft:green_glazed_terracotta` `minecraft:grindstone` `minecraft:horn_coral_wall_fan` `minecraft:iron_door` `minecraft:iron_trapdoor` `minecraft:jack_o_lantern` `minecraft:jungle_button` `minecraft:jungle_door` `minecraft:jungle_fence_gate` `minecraft:jungle_stairs` `minecraft:jungle_trapdoor` `minecraft:jungle_wall_sign` `minecraft:ladder` `minecraft:lectern` `minecraft:lever` `minecraft:light_blue_bed` `minecraft:light_blue_glazed_terracotta` `minecraft:light_gray_bed` `minecraft:light_gray_glazed_terracotta` `minecraft:lime_bed` `minecraft:lime_glazed_terracotta` `minecraft:loom` `minecraft:magenta_bed` `minecraft:magenta_glazed_terracotta` `minecraft:mossy_cobblestone_stairs` `minecraft:mossy_stone_brick_stairs` `minecraft:nether_brick_stairs` `minecraft:oak_button` `minecraft:oak_door` `minecraft:oak_fence_gate` `minecraft:oak_stairs` `minecraft:oak_trapdoor` `minecraft:oak_wall_sign` `minecraft:orange_bed` `minecraft:orange_glazed_terracotta` `minecraft:oxidized_cut_copper_stairs` `minecraft:pink_bed` `minecraft:pink_glazed_terracotta` `minecraft:polished_andesite_stairs` `minecraft:polished_blackstone_brick_stairs` `minecraft:polished_blackstone_button` `minecraft:polished_blackstone_stairs` `minecraft:polished_deepslate_stairs` `minecraft:polished_diorite_stairs` `minecraft:polished_granite_stairs` `minecraft:prismarine_brick_stairs` `minecraft:prismarine_stairs` `minecraft:purple_bed` `minecraft:purple_glazed_terracotta` `minecraft:purpur_stairs` `minecraft:quartz_stairs` `minecraft:red_bed` `minecraft:red_glazed_terracotta` `minecraft:red_nether_brick_stairs` `minecraft:red_sandstone_stairs` `minecraft:redstone_wall_torch` `minecraft:repeater` `minecraft:sandstone_stairs` `minecraft:smoker` `minecraft:smooth_quartz_stairs` `minecraft:smooth_red_sandstone_stairs` `minecraft:smooth_sandstone_stairs` `minecraft:soul_campfire` `minecraft:soul_wall_torch` `minecraft:spruce_button` `minecraft:spruce_door` `minecraft:spruce_fence_gate` `minecraft:spruce_stairs` `minecraft:spruce_trapdoor` `minecraft:spruce_wall_sign` `minecraft:stone_brick_stairs` `minecraft:stone_button` `minecraft:stone_stairs` `minecraft:stonecutter` `minecraft:trapped_chest` `minecraft:tripwire_hook` `minecraft:tube_coral_wall_fan` `minecraft:wall_torch` `minecraft:warped_button` `minecraft:warped_door` `minecraft:warped_fence_gate` `minecraft:warped_stairs` `minecraft:warped_trapdoor` `minecraft:warped_wall_sign` `minecraft:waxed_cut_copper_stairs` `minecraft:waxed_exposed_cut_copper_stairs` `minecraft:waxed_oxidized_cut_copper_stairs` `minecraft:waxed_weathered_cut_copper_stairs` `minecraft:weathered_cut_copper_stairs` `minecraft:white_bed` `minecraft:white_glazed_terracotta` `minecraft:yellow_bed` `minecraft:yellow_glazed_terracotta` | + ---> | `"down"` `"east"` `"north"` `"south"` `"west"` | `minecraft:hopper` | + ---@type "down"|"east"|"north"|"south"|"west"|"up" + facing = nil, + + ---For tall plants and doors, which half of the door or plant occupies the block space. For trapdoors and stairs, what part of the block space they are in. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"lower"` `"upper"` | `minecraft:acacia_door` `minecraft:birch_door` `minecraft:crimson_door` `minecraft:dark_oak_door` `minecraft:iron_door` `minecraft:jungle_door` `minecraft:large_fern` `minecraft:lilac` `minecraft:oak_door` `minecraft:peony` `minecraft:rose_bush` `minecraft:spruce_door` `minecraft:sunflower` `minecraft:tall_grass` `minecraft:tall_seagrass` `minecraft:warped_door` | + ---> | `"bottom"` `"top"` | `minecraft:acacia_stairs` `minecraft:acacia_trapdoor` `minecraft:andesite_stairs` `minecraft:birch_stairs` `minecraft:birch_trapdoor` `minecraft:blackstone_stairs` `minecraft:brick_stairs` `minecraft:cobbled_deepslate_stairs` `minecraft:cobblestone_stairs` `minecraft:crimson_stairs` `minecraft:crimson_trapdoor` `minecraft:cut_copper_stairs` `minecraft:dark_oak_stairs` `minecraft:dark_oak_trapdoor` `minecraft:dark_prismarine_stairs` `minecraft:deepslate_brick_stairs` `minecraft:deepslate_tile_stairs` `minecraft:diorite_stairs` `minecraft:end_stone_brick_stairs` `minecraft:exposed_cut_copper_stairs` `minecraft:granite_stairs` `minecraft:iron_trapdoor` `minecraft:jungle_stairs` `minecraft:jungle_trapdoor` `minecraft:mossy_cobblestone_stairs` `minecraft:mossy_stone_brick_stairs` `minecraft:nether_brick_stairs` `minecraft:oak_stairs` `minecraft:oak_trapdoor` `minecraft:oxidized_cut_copper_stairs` `minecraft:polished_andesite_stairs` `minecraft:polished_blackstone_brick_stairs` `minecraft:polished_blackstone_stairs` `minecraft:polished_deepslate_stairs` `minecraft:polished_diorite_stairs` `minecraft:polished_granite_stairs` `minecraft:prismarine_brick_stairs` `minecraft:prismarine_stairs` `minecraft:purpur_stairs` `minecraft:quartz_stairs` `minecraft:red_nether_brick_stairs` `minecraft:red_sandstone_stairs` `minecraft:sandstone_stairs` `minecraft:smooth_quartz_stairs` `minecraft:smooth_red_sandstone_stairs` `minecraft:smooth_sandstone_stairs` `minecraft:spruce_stairs` `minecraft:spruce_trapdoor` `minecraft:stone_brick_stairs` `minecraft:stone_stairs` `minecraft:warped_stairs` `minecraft:warped_trapdoor` `minecraft:waxed_cut_copper_stairs` `minecraft:waxed_exposed_cut_copper_stairs` `minecraft:waxed_oxidized_cut_copper_stairs` `minecraft:waxed_weathered_cut_copper_stairs` `minecraft:weathered_cut_copper_stairs` | + ---@type "lower"|"upper"|"bottom"|"top" + half = nil, + + ---Whether or not the lantern hangs on the ceiling. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:lantern` `minecraft:soul_lantern` | + ---@type "false"|"true" + hanging = nil, + + ---Whether or not this lectern holds a book. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:lectern` | + ---@type "false"|"true" + has_book = nil, + + ---Whether or not a bottle is in slot 1 of the brewing stand. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:brewing_stand` | + ---@type "false"|"true" + has_bottle_0 = nil, + + ---Whether or not a bottle is in slot 2 of the brewing stand. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:brewing_stand` | + ---@type "false"|"true" + has_bottle_1 = nil, + + ---Whether or not a bottle is in slot 3 of the brewing stand. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:brewing_stand` | + ---@type "false"|"true" + has_bottle_2 = nil, + + ---True when the jukebox contains a music disc. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:jukebox` | + ---@type "false"|"true" + has_record = nil, + + ---Determines how close an egg is to hatching; starts at 0 and is randomly incremented. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."2"` | `minecraft:turtle_egg` | + ---@type "0"|"1"|"2" + hatch = nil, + + ---Identifies the side the hinge is on (when facing the same direction as the door's inside). + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"left"` `"right"` | `minecraft:acacia_door` `minecraft:birch_door` `minecraft:crimson_door` `minecraft:dark_oak_door` `minecraft:iron_door` `minecraft:jungle_door` `minecraft:oak_door` `minecraft:spruce_door` `minecraft:warped_door` | + ---@type "left"|"right" + hinge = nil, + + ---The level of honey inside the beehive and bee nest. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."5"` | `minecraft:bee_nest` `minecraft:beehive` | + ---@type "0"|"1"|"2"|"3"|"4"|"5" + honey_level = nil, + + ---If true, the gate is lowered by three pixels, to accommodate attaching more cleanly with walls. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:acacia_fence_gate` `minecraft:birch_fence_gate` `minecraft:crimson_fence_gate` `minecraft:dark_oak_fence_gate` `minecraft:jungle_fence_gate` `minecraft:oak_fence_gate` `minecraft:spruce_fence_gate` `minecraft:warped_fence_gate` | + ---@type "false"|"true" + in_wall = nil, + + ---The instrument sound the note block makes when it gets powered or used. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"banjo"` `"basedrum"` `"bass"` `"bell"` `"bit"` `"chime"` `"cow_bell"` `"digeridoo"` `"flute"` `"guitar"` `"harp"` `"hat"` `"iron_xylophone"` `"snare"` `"xylophone"` | `minecraft:note_block` | + ---@type "banjo"|"basedrum"|"bass"|"bell"|"bit"|"chime"|"cow_bell"|"digeridoo"|"flute"|"guitar"|"harp"|"hat"|"iron_xylophone"|"snare"|"xylophone" + instrument = nil, + + ---Whether the daylight detector detects light (false) or darkness (true). + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:daylight_detector` | + ---@type "false"|"true" + inverted = nil, + + ---How many layers of snow are on top of each other. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"1".."8"` | `minecraft:snow` | + ---@type "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8" + layers = nil, + + ---How big the leaves are on this bamboo. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"large"` `"none"` `"small"` | `minecraft:bamboo` | + ---@type "large"|"none"|"small" + leaves = nil, + + ---How much water or lava is in this block or cauldron. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."3"` | `minecraft:powder_snow_cauldron` | + ---> | `"0".."8"` | `minecraft:composter` | + ---> | `"0".."15"` | `minecraft:lava` `minecraft:water` | + ---@type "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"10"|"11"|"12"|"13"|"14"|"15" + level = nil, + + ---Whether the block is turned on or off. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:blast_furnace` `minecraft:campfire` `minecraft:furnace` `minecraft:redstone_lamp` `minecraft:redstone_ore` `minecraft:redstone_torch` `minecraft:redstone_wall_torch` `minecraft:smoker` `minecraft:soul_campfire` | + ---@type "false"|"true" + lit = nil, + + ---Whether the repeater can change it is powered state (false) or not (true). + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:repeater` | + ---@type "false"|"true" + locked = nil, + + ---The mode the comparator or structure block is in. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"compare"` `"subtract"` | `minecraft:comparator` | + ---> | `"corner"` `"data"` `"load"` `"save"` | `minecraft:structure_block` | + ---@type "compare"|"subtract"|"corner"|"data"|"load"|"save" + mode = nil, + + ---How wet the farmland is. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."7"` | `minecraft:farmland` | + ---@type "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7" + moisture = nil, + + ---Determines whether something is on the north side of the block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:acacia_fence` `minecraft:birch_fence` `minecraft:black_stained_glass_pane` `minecraft:blue_stained_glass_pane` `minecraft:brown_mushroom_block` `minecraft:brown_stained_glass_pane` `minecraft:chorus_plant` `minecraft:crimson_fence` `minecraft:cyan_stained_glass_pane` `minecraft:dark_oak_fence` `minecraft:fire` `minecraft:glass_pane` `minecraft:gray_stained_glass_pane` `minecraft:green_stained_glass_pane` `minecraft:iron_bars` `minecraft:jungle_fence` `minecraft:light_blue_stained_glass_pane` `minecraft:light_gray_stained_glass_pane` `minecraft:lime_stained_glass_pane` `minecraft:magenta_stained_glass_pane` `minecraft:mushroom_stem` `minecraft:nether_brick_fence` `minecraft:oak_fence` `minecraft:orange_stained_glass_pane` `minecraft:pink_stained_glass_pane` `minecraft:purple_stained_glass_pane` `minecraft:red_mushroom_block` `minecraft:red_stained_glass_pane` `minecraft:spruce_fence` `minecraft:tripwire` `minecraft:vine` `minecraft:warped_fence` `minecraft:white_stained_glass_pane` `minecraft:yellow_stained_glass_pane` | + ---> | `"up"` `"side"` `"none"` | `minecraft:redstone_wire` | + ---> | `"low"` `"none"` `"tall"` | `minecraft:andesite_wall` `minecraft:blackstone_wall` `minecraft:brick_wall` `minecraft:cobbled_deepslate_wall` `minecraft:cobblestone_wall` `minecraft:deepslate_brick_wall` `minecraft:deepslate_tile_wall` `minecraft:diorite_wall` `minecraft:end_stone_brick_wall` `minecraft:granite_wall` `minecraft:mossy_cobblestone_wall` `minecraft:mossy_stone_brick_wall` `minecraft:nether_brick_wall` `minecraft:polished_blackstone_brick_wall` `minecraft:polished_blackstone_wall` `minecraft:polished_deepslate_wall` `minecraft:prismarine_wall` `minecraft:red_nether_brick_wall` `minecraft:red_sandstone_wall` `minecraft:sandstone_wall` `minecraft:stone_brick_wall` | + ---@type "false"|"true"|"up"|"side"|"none"|"low"|"tall" + north = nil, + + ---The note the note block plays when it gets powered. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."24"` | `minecraft:note_block` | + ---@type "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"10"|"11"|"12"|"13"|"14"|"15"|"16"|"17"|"18"|"19"|"20"|"21"|"22"|"23"|"24" + note = nil, + + ---If there's already a player in this bed. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:black_bed` `minecraft:blue_bed` `minecraft:brown_bed` `minecraft:cyan_bed` `minecraft:gray_bed` `minecraft:green_bed` `minecraft:light_blue_bed` `minecraft:light_gray_bed` `minecraft:lime_bed` `minecraft:magenta_bed` `minecraft:orange_bed` `minecraft:pink_bed` `minecraft:purple_bed` `minecraft:red_bed` `minecraft:white_bed` `minecraft:yellow_bed` | + ---@type "false"|"true" + occupied = nil, + + ---Whether the door is open or closed. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:acacia_door` `minecraft:acacia_fence_gate` `minecraft:acacia_trapdoor` `minecraft:barrel` `minecraft:birch_door` `minecraft:birch_fence_gate` `minecraft:birch_trapdoor` `minecraft:crimson_door` `minecraft:crimson_fence_gate` `minecraft:crimson_trapdoor` `minecraft:dark_oak_door` `minecraft:dark_oak_fence_gate` `minecraft:dark_oak_trapdoor` `minecraft:iron_door` `minecraft:iron_trapdoor` `minecraft:jungle_door` `minecraft:jungle_fence_gate` `minecraft:jungle_trapdoor` `minecraft:oak_door` `minecraft:oak_fence_gate` `minecraft:oak_trapdoor` `minecraft:spruce_door` `minecraft:spruce_fence_gate` `minecraft:spruce_trapdoor` `minecraft:warped_door` `minecraft:warped_fence_gate` `minecraft:warped_trapdoor` | + ---@type "false"|"true" + open = nil, + + ---Direction the arrows point, followed by the position of the line face. + --- + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"down_east"` `"down_north"` `"down_south"` `"down_west"` `"east_up"` `"north_up"` `"south_up"` `"up_east"` `"up_north"` `"up_south"` `"up_west"` `"west_up"` | | + ---@type "down_east"|"down_north"|"down_south"|"down_west"|"east_up"|"north_up"|"south_up"|"up_east"|"up_north"|"up_south"|"up_west"|"west_up" + orientation = nil, + + ---Whether this is the foot or head end of the bed. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"foot"` `"head"` | `minecraft:black_bed` `minecraft:blue_bed` `minecraft:brown_bed` `minecraft:cyan_bed` `minecraft:gray_bed` `minecraft:green_bed` `minecraft:light_blue_bed` `minecraft:light_gray_bed` `minecraft:lime_bed` `minecraft:magenta_bed` `minecraft:orange_bed` `minecraft:pink_bed` `minecraft:purple_bed` `minecraft:red_bed` `minecraft:white_bed` `minecraft:yellow_bed` | + ---@type "foot"|"head" + part = nil, + + ---Whether leaves decay (false) or not (true) + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:acacia_leaves` `minecraft:azalea_leaves` `minecraft:birch_leaves` `minecraft:dark_oak_leaves` `minecraft:flowering_azalea_leaves` `minecraft:jungle_leaves` `minecraft:oak_leaves` `minecraft:spruce_leaves` | + ---@type "false"|"true" + persistent = nil, + + ---The amount of pickles in this block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"1".."4"` | `minecraft:sea_pickle` | + ---@type "1"|"2"|"3"|"4" + pickles = nil, + + ---The power level of Redstone emission. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."15"` | `minecraft:daylight_detector` `minecraft:heavy_weighted_pressure_plate` `minecraft:light_weighted_pressure_plate` `minecraft:redstone_wire` | + ---@type "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"10"|"11"|"12"|"13"|"14"|"15" + power = nil, + + ---Whether the block is powered. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:acacia_button` `minecraft:acacia_door` `minecraft:acacia_fence_gate` `minecraft:acacia_pressure_plate` `minecraft:acacia_trapdoor` `minecraft:activator_rail` `minecraft:birch_button` `minecraft:birch_door` `minecraft:birch_fence_gate` `minecraft:birch_pressure_plate` `minecraft:birch_trapdoor` `minecraft:comparator` `minecraft:crimson_button` `minecraft:crimson_door` `minecraft:crimson_fence_gate` `minecraft:crimson_pressure_plate` `minecraft:crimson_trapdoor` `minecraft:dark_oak_button` `minecraft:dark_oak_door` `minecraft:dark_oak_fence_gate` `minecraft:dark_oak_pressure_plate` `minecraft:dark_oak_trapdoor` `minecraft:detector_rail` `minecraft:iron_door` `minecraft:iron_trapdoor` `minecraft:jungle_button` `minecraft:jungle_door` `minecraft:jungle_fence_gate` `minecraft:jungle_pressure_plate` `minecraft:jungle_trapdoor` `minecraft:lectern` `minecraft:lever` `minecraft:note_block` `minecraft:oak_button` `minecraft:oak_door` `minecraft:oak_fence_gate` `minecraft:oak_pressure_plate` `minecraft:oak_trapdoor` `minecraft:observer` `minecraft:polished_blackstone_button` `minecraft:polished_blackstone_pressure_plate` `minecraft:powered_rail` `minecraft:repeater` `minecraft:spruce_button` `minecraft:spruce_door` `minecraft:spruce_fence_gate` `minecraft:spruce_pressure_plate` `minecraft:spruce_trapdoor` `minecraft:stone_button` `minecraft:stone_pressure_plate` `minecraft:tripwire` `minecraft:tripwire_hook` `minecraft:warped_button` `minecraft:warped_door` `minecraft:warped_fence_gate` `minecraft:warped_pressure_plate` `minecraft:warped_trapdoor` | + ---@type "false"|"true" + powered = nil, + + ---The rotation of standing heads, signs and banners. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."15"` | `minecraft:acacia_sign` `minecraft:birch_sign` `minecraft:black_banner` `minecraft:blue_banner` `minecraft:brown_banner` `minecraft:crimson_sign` `minecraft:cyan_banner` `minecraft:dark_oak_sign` `minecraft:gray_banner` `minecraft:green_banner` `minecraft:jungle_sign` `minecraft:light_blue_banner` `minecraft:light_gray_banner` `minecraft:lime_banner` `minecraft:magenta_banner` `minecraft:oak_sign` `minecraft:ominous_banner` `minecraft:orange_banner` `minecraft:pink_banner` `minecraft:purple_banner` `minecraft:red_banner` `minecraft:spruce_sign` `minecraft:warped_sign` `minecraft:white_banner` `minecraft:yellow_banner` | + ---@type "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"10"|"11"|"12"|"13"|"14"|"15" + rotation = nil, + + ---The way this block connects to its neighbors. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"ascending_east"` `"ascending_north"` `"ascending_south"` `"ascending_west"` `"east_west"` `"north_south"` | `minecraft:activator_rail` `minecraft:detector_rail` `minecraft:powered_rail` | + ---> | `"inner_left"` `"inner_right"` `"outer_left"` `"outer_right"` `"straight"` | `minecraft:acacia_stairs` `minecraft:andesite_stairs` `minecraft:birch_stairs` `minecraft:blackstone_stairs` `minecraft:brick_stairs` `minecraft:cobbled_deepslate_stairs` `minecraft:cobblestone_stairs` `minecraft:crimson_stairs` `minecraft:cut_copper_stairs` `minecraft:dark_oak_stairs` `minecraft:dark_prismarine_stairs` `minecraft:deepslate_brick_stairs` `minecraft:deepslate_tile_stairs` `minecraft:diorite_stairs` `minecraft:end_stone_brick_stairs` `minecraft:exposed_cut_copper_stairs` `minecraft:granite_stairs` `minecraft:jungle_stairs` `minecraft:mossy_cobblestone_stairs` `minecraft:mossy_stone_brick_stairs` `minecraft:nether_brick_stairs` `minecraft:oak_stairs` `minecraft:oxidized_cut_copper_stairs` `minecraft:polished_andesite_stairs` `minecraft:polished_blackstone_brick_stairs` `minecraft:polished_blackstone_stairs` `minecraft:polished_deepslate_stairs` `minecraft:polished_diorite_stairs` `minecraft:polished_granite_stairs` `minecraft:prismarine_brick_stairs` `minecraft:prismarine_stairs` `minecraft:purpur_stairs` `minecraft:quartz_stairs` `minecraft:red_nether_brick_stairs` `minecraft:red_sandstone_stairs` `minecraft:sandstone_stairs` `minecraft:smooth_quartz_stairs` `minecraft:smooth_red_sandstone_stairs` `minecraft:smooth_sandstone_stairs` `minecraft:spruce_stairs` `minecraft:stone_brick_stairs` `minecraft:stone_stairs` `minecraft:warped_stairs` `minecraft:waxed_cut_copper_stairs` `minecraft:waxed_exposed_cut_copper_stairs` `minecraft:waxed_oxidized_cut_copper_stairs` `minecraft:waxed_weathered_cut_copper_stairs` `minecraft:weathered_cut_copper_stairs` | + ---> | `"ascending_east"` `"ascending_north"` `"ascending_south"` `"ascending_west"` `"east_west"` `"north_south"` `"north_east"` `"north_west"` `"south_east"` `"south_west"` | `minecraft:rail` | + ---@type "ascending_east"|"ascending_north"|"ascending_south"|"ascending_west"|"east_west"|"north_south"|"inner_left"|"inner_right"|"outer_left"|"outer_right"|"straight"|"north_east"|"north_west"|"south_east"|"south_west" + shape = nil, + + ---Whether this piston head's arm is 4/16th of a block shorter + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:piston_head` | + ---@type "false"|"true" + short = nil, + + ---Whether this campfire has higher smoke or not. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:campfire` `minecraft:soul_campfire` | + ---@type "false"|"true" + signal_fire = nil, + + ---Whether this block uses the snowy side texture. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:grass_block` `minecraft:mycelium` `minecraft:podzol` | + ---@type "false"|"true" + snowy = nil, + + ---Determines whether something is on the south side of the block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:acacia_fence` `minecraft:birch_fence` `minecraft:black_stained_glass_pane` `minecraft:blue_stained_glass_pane` `minecraft:brown_mushroom_block` `minecraft:brown_stained_glass_pane` `minecraft:chorus_plant` `minecraft:crimson_fence` `minecraft:cyan_stained_glass_pane` `minecraft:dark_oak_fence` `minecraft:fire` `minecraft:glass_pane` `minecraft:gray_stained_glass_pane` `minecraft:green_stained_glass_pane` `minecraft:iron_bars` `minecraft:jungle_fence` `minecraft:light_blue_stained_glass_pane` `minecraft:light_gray_stained_glass_pane` `minecraft:lime_stained_glass_pane` `minecraft:magenta_stained_glass_pane` `minecraft:mushroom_stem` `minecraft:nether_brick_fence` `minecraft:oak_fence` `minecraft:orange_stained_glass_pane` `minecraft:pink_stained_glass_pane` `minecraft:purple_stained_glass_pane` `minecraft:red_mushroom_block` `minecraft:red_stained_glass_pane` `minecraft:spruce_fence` `minecraft:tripwire` `minecraft:vine` `minecraft:warped_fence` `minecraft:white_stained_glass_pane` `minecraft:yellow_stained_glass_pane` | + ---> | `"none"` `"side"` `"up"` | `minecraft:redstone_wire` | + ---> | `"low"` `"none"` `"tall"` | `minecraft:andesite_wall` `minecraft:blackstone_wall` `minecraft:brick_wall` `minecraft:cobbled_deepslate_wall` `minecraft:cobblestone_wall` `minecraft:deepslate_brick_wall` `minecraft:deepslate_tile_wall` `minecraft:diorite_wall` `minecraft:end_stone_brick_wall` `minecraft:granite_wall` `minecraft:mossy_cobblestone_wall` `minecraft:mossy_stone_brick_wall` `minecraft:nether_brick_wall` `minecraft:polished_blackstone_brick_wall` `minecraft:polished_blackstone_wall` `minecraft:polished_deepslate_wall` `minecraft:prismarine_wall` `minecraft:red_nether_brick_wall` `minecraft:red_sandstone_wall` `minecraft:sandstone_wall` `minecraft:stone_brick_wall` | + ---@type "false"|"true"|"none"|"side"|"up"|"low"|"tall" + south = nil, + + ---Whether this sapling is ready to grow. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"0".."1"` | `minecraft:acacia_sapling` `minecraft:bamboo` `minecraft:bamboo_sapling` `minecraft:birch_sapling` `minecraft:dark_oak_sapling` `minecraft:jungle_sapling` `minecraft:oak_sapling` `minecraft:potted_acacia_sapling` `minecraft:potted_birch_sapling` `minecraft:potted_dark_oak_sapling` `minecraft:potted_jungle_sapling` `minecraft:potted_oak_sapling` `minecraft:potted_spruce_sapling` `minecraft:spruce_sapling` | + ---@type "0"|"1" + stage = nil, + + ---Whether this block has been activated. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:dispenser` `minecraft:dropper` | + ---@type "false"|"true" + triggered = nil, + + ---Determines the variant of this block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"normal"` `"sticky"` | `minecraft:moving_piston` `minecraft:piston_head` | + ---> | `"left"` `"right"` `"single"` | `minecraft:chest` `minecraft:trapped_chest` | + ---> | `"bottom"` `"double"` `"top"` | `minecraft:acacia_slab` `minecraft:andesite_slab` `minecraft:birch_slab` `minecraft:blackstone_slab` `minecraft:brick_slab` `minecraft:cobbled_deepslate_slab` `minecraft:cobblestone_slab` `minecraft:crimson_slab` `minecraft:cut_copper_slab` `minecraft:cut_red_sandstone_slab` `minecraft:cut_sandstone_slab` `minecraft:dark_oak_slab` `minecraft:dark_prismarine_slab` `minecraft:deepslate_brick_slab` `minecraft:deepslate_tile_slab` `minecraft:diorite_slab` `minecraft:end_stone_brick_slab` `minecraft:exposed_cut_copper_slab` `minecraft:granite_slab` `minecraft:jungle_slab` `minecraft:mossy_cobblestone_slab` `minecraft:mossy_stone_brick_slab` `minecraft:nether_brick_slab` `minecraft:oak_slab` `minecraft:oxidized_cut_copper_slab` `minecraft:petrified_oak_slab` `minecraft:polished_andesite_slab` `minecraft:polished_blackstone_brick_slab` `minecraft:polished_blackstone_slab` `minecraft:polished_deepslate_slab` `minecraft:polished_diorite_slab` `minecraft:polished_granite_slab` `minecraft:prismarine_brick_slab` `minecraft:prismarine_slab` `minecraft:purpur_slab` `minecraft:quartz_slab` `minecraft:red_nether_brick_slab` `minecraft:red_sandstone_slab` `minecraft:sandstone_slab` `minecraft:smooth_quartz_slab` `minecraft:smooth_red_sandstone_slab` `minecraft:smooth_sandstone_slab` `minecraft:smooth_stone_slab` `minecraft:spruce_slab` `minecraft:stone_brick_slab` `minecraft:stone_slab` `minecraft:warped_slab` `minecraft:waxed_cut_copper_slab` `minecraft:waxed_exposed_cut_copper_slab` `minecraft:waxed_oxidized_cut_copper_slab` `minecraft:waxed_weathered_cut_copper_slab` `minecraft:weathered_cut_copper_slab` | + ---@type "normal"|"sticky"|"left"|"right"|"single"|"bottom"|"double"|"top" + type = nil, + + ---Whether the TNT explodes when punched or not. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:tnt` | + ---@type "false"|"true" + unstable = nil, + + ---Determines whether something is above the block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:andesite_wall` `minecraft:blackstone_wall` `minecraft:brick_wall` `minecraft:brown_mushroom_block` `minecraft:chorus_plant` `minecraft:cobbled_deepslate_wall` `minecraft:cobblestone_wall` `minecraft:deepslate_brick_wall` `minecraft:deepslate_tile_wall` `minecraft:diorite_wall` `minecraft:end_stone_brick_wall` `minecraft:fire` `minecraft:granite_wall` `minecraft:mossy_cobblestone_wall` `minecraft:mossy_stone_brick_wall` `minecraft:mushroom_stem` `minecraft:nether_brick_wall` `minecraft:polished_blackstone_brick_wall` `minecraft:polished_blackstone_wall` `minecraft:polished_deepslate_wall` `minecraft:prismarine_wall` `minecraft:red_mushroom_block` `minecraft:red_nether_brick_wall` `minecraft:red_sandstone_wall` `minecraft:sandstone_wall` `minecraft:stone_brick_wall` `minecraft:vine` | + ---@type "false"|"true" + up = nil, + + ---Whether the block has water in it. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:acacia_fence` `minecraft:acacia_sign` `minecraft:acacia_slab` `minecraft:acacia_stairs` `minecraft:acacia_trapdoor` `minecraft:acacia_wall_sign` `minecraft:andesite_slab` `minecraft:andesite_stairs` `minecraft:andesite_wall` `minecraft:birch_fence` `minecraft:birch_sign` `minecraft:birch_slab` `minecraft:birch_stairs` `minecraft:birch_trapdoor` `minecraft:birch_wall_sign` `minecraft:black_stained_glass_pane` `minecraft:blackstone_slab` `minecraft:blackstone_stairs` `minecraft:blackstone_wall` `minecraft:blue_stained_glass_pane` `minecraft:brain_coral` `minecraft:brain_coral_fan` `minecraft:brain_coral_wall_fan` `minecraft:brick_slab` `minecraft:brick_stairs` `minecraft:brick_wall` `minecraft:brown_stained_glass_pane` `minecraft:bubble_coral` `minecraft:bubble_coral_fan` `minecraft:bubble_coral_wall_fan` `minecraft:campfire` `minecraft:chain` `minecraft:chest` `minecraft:cobbled_deepslate_slab` `minecraft:cobbled_deepslate_stairs` `minecraft:cobbled_deepslate_wall` `minecraft:cobblestone_slab` `minecraft:cobblestone_stairs` `minecraft:cobblestone_wall` `minecraft:conduit` `minecraft:crimson_fence` `minecraft:crimson_sign` `minecraft:crimson_slab` `minecraft:crimson_stairs` `minecraft:crimson_trapdoor` `minecraft:crimson_wall_sign` `minecraft:cut_copper_slab` `minecraft:cut_copper_stairs` `minecraft:cut_red_sandstone_slab` `minecraft:cut_sandstone_slab` `minecraft:cyan_stained_glass_pane` `minecraft:dark_oak_fence` `minecraft:dark_oak_sign` `minecraft:dark_oak_slab` `minecraft:dark_oak_stairs` `minecraft:dark_oak_trapdoor` `minecraft:dark_oak_wall_sign` `minecraft:dark_prismarine_slab` `minecraft:dark_prismarine_stairs` `minecraft:dead_brain_coral` `minecraft:dead_brain_coral_fan` `minecraft:dead_brain_coral_wall_fan` `minecraft:dead_bubble_coral` `minecraft:dead_bubble_coral_fan` `minecraft:dead_bubble_coral_wall_fan` `minecraft:dead_fire_coral` `minecraft:dead_fire_coral_fan` `minecraft:dead_fire_coral_wall_fan` `minecraft:dead_horn_coral` `minecraft:dead_horn_coral_fan` `minecraft:dead_horn_coral_wall_fan` `minecraft:dead_tube_coral` `minecraft:dead_tube_coral_fan` `minecraft:dead_tube_coral_wall_fan` `minecraft:deepslate_brick_slab` `minecraft:deepslate_brick_stairs` `minecraft:deepslate_brick_wall` `minecraft:deepslate_tile_slab` `minecraft:deepslate_tile_stairs` `minecraft:deepslate_tile_wall` `minecraft:diorite_slab` `minecraft:diorite_stairs` `minecraft:diorite_wall` `minecraft:end_stone_brick_slab` `minecraft:end_stone_brick_stairs` `minecraft:end_stone_brick_wall` `minecraft:ender_chest` `minecraft:exposed_cut_copper_slab` `minecraft:exposed_cut_copper_stairs` `minecraft:fire_coral` `minecraft:fire_coral_fan` `minecraft:fire_coral_wall_fan` `minecraft:glass_pane` `minecraft:granite_slab` `minecraft:granite_stairs` `minecraft:granite_wall` `minecraft:gray_stained_glass_pane` `minecraft:green_stained_glass_pane` `minecraft:horn_coral` `minecraft:horn_coral_fan` `minecraft:horn_coral_wall_fan` `minecraft:iron_bars` `minecraft:iron_trapdoor` `minecraft:jungle_fence` `minecraft:jungle_sign` `minecraft:jungle_slab` `minecraft:jungle_stairs` `minecraft:jungle_trapdoor` `minecraft:jungle_wall_sign` `minecraft:ladder` `minecraft:lantern` `minecraft:light_blue_stained_glass_pane` `minecraft:light_gray_stained_glass_pane` `minecraft:lime_stained_glass_pane` `minecraft:magenta_stained_glass_pane` `minecraft:mossy_cobblestone_slab` `minecraft:mossy_cobblestone_stairs` `minecraft:mossy_cobblestone_wall` `minecraft:mossy_stone_brick_slab` `minecraft:mossy_stone_brick_stairs` `minecraft:mossy_stone_brick_wall` `minecraft:nether_brick_fence` `minecraft:nether_brick_slab` `minecraft:nether_brick_stairs` `minecraft:nether_brick_wall` `minecraft:oak_fence` `minecraft:oak_sign` `minecraft:oak_slab` `minecraft:oak_stairs` `minecraft:oak_trapdoor` `minecraft:oak_wall_sign` `minecraft:orange_stained_glass_pane` `minecraft:oxidized_cut_copper_slab` `minecraft:oxidized_cut_copper_stairs` `minecraft:petrified_oak_slab` `minecraft:pink_stained_glass_pane` `minecraft:polished_andesite_slab` `minecraft:polished_andesite_stairs` `minecraft:polished_blackstone_brick_slab` `minecraft:polished_blackstone_brick_stairs` `minecraft:polished_blackstone_brick_wall` `minecraft:polished_blackstone_slab` `minecraft:polished_blackstone_stairs` `minecraft:polished_blackstone_wall` `minecraft:polished_deepslate_slab` `minecraft:polished_deepslate_stairs` `minecraft:polished_deepslate_wall` `minecraft:polished_diorite_slab` `minecraft:polished_diorite_stairs` `minecraft:polished_granite_slab` `minecraft:polished_granite_stairs` `minecraft:prismarine_brick_slab` `minecraft:prismarine_brick_stairs` `minecraft:prismarine_slab` `minecraft:prismarine_stairs` `minecraft:prismarine_wall` `minecraft:purple_stained_glass_pane` `minecraft:purpur_slab` `minecraft:purpur_stairs` `minecraft:quartz_slab` `minecraft:quartz_stairs` `minecraft:red_nether_brick_slab` `minecraft:red_nether_brick_stairs` `minecraft:red_nether_brick_wall` `minecraft:red_sandstone_slab` `minecraft:red_sandstone_stairs` `minecraft:red_sandstone_wall` `minecraft:red_stained_glass_pane` `minecraft:sandstone_slab` `minecraft:sandstone_stairs` `minecraft:sandstone_wall` `minecraft:scaffolding` `minecraft:sea_pickle` `minecraft:smooth_quartz_slab` `minecraft:smooth_quartz_stairs` `minecraft:smooth_red_sandstone_slab` `minecraft:smooth_red_sandstone_stairs` `minecraft:smooth_sandstone_slab` `minecraft:smooth_sandstone_stairs` `minecraft:smooth_stone_slab` `minecraft:soul_lantern` `minecraft:spruce_fence` `minecraft:spruce_sign` `minecraft:spruce_slab` `minecraft:spruce_stairs` `minecraft:spruce_trapdoor` `minecraft:spruce_wall_sign` `minecraft:stone_brick_slab` `minecraft:stone_brick_stairs` `minecraft:stone_brick_wall` `minecraft:stone_slab` `minecraft:stone_stairs` `minecraft:trapped_chest` `minecraft:tube_coral` `minecraft:tube_coral_fan` `minecraft:tube_coral_wall_fan` `minecraft:warped_fence` `minecraft:warped_sign` `minecraft:warped_slab` `minecraft:warped_stairs` `minecraft:warped_trapdoor` `minecraft:warped_wall_sign` `minecraft:waxed_cut_copper_slab` `minecraft:waxed_cut_copper_stairs` `minecraft:waxed_exposed_cut_copper_slab` `minecraft:waxed_exposed_cut_copper_stairs` `minecraft:waxed_oxidized_cut_copper_slab` `minecraft:waxed_oxidized_cut_copper_stairs` `minecraft:waxed_weathered_cut_copper_slab` `minecraft:waxed_weathered_cut_copper_stairs` `minecraft:weathered_cut_copper_slab` `minecraft:weathered_cut_copper_stairs` `minecraft:white_stained_glass_pane` `minecraft:yellow_stained_glass_pane` | + ---@type "false"|"true" + waterlogged = nil, + + ---Determines whether something is on the west side of the block. + ---*** + ---> | State | Valid Blocks | + ---> | :---- | :----------- | + ---> | `"false"` `"true"` | `minecraft:acacia_fence` `minecraft:birch_fence` `minecraft:black_stained_glass_pane` `minecraft:blue_stained_glass_pane` `minecraft:brown_mushroom_block` `minecraft:brown_stained_glass_pane` `minecraft:chorus_plant` `minecraft:crimson_fence` `minecraft:cyan_stained_glass_pane` `minecraft:dark_oak_fence` `minecraft:fire` `minecraft:glass_pane` `minecraft:gray_stained_glass_pane` `minecraft:green_stained_glass_pane` `minecraft:iron_bars` `minecraft:jungle_fence` `minecraft:light_blue_stained_glass_pane` `minecraft:light_gray_stained_glass_pane` `minecraft:lime_stained_glass_pane` `minecraft:magenta_stained_glass_pane` `minecraft:mushroom_stem` `minecraft:nether_brick_fence` `minecraft:oak_fence` `minecraft:orange_stained_glass_pane` `minecraft:pink_stained_glass_pane` `minecraft:purple_stained_glass_pane` `minecraft:red_mushroom_block` `minecraft:red_stained_glass_pane` `minecraft:spruce_fence` `minecraft:tripwire` `minecraft:vine` `minecraft:warped_fence` `minecraft:white_stained_glass_pane` `minecraft:yellow_stained_glass_pane` | + ---> | `"none"` `"side"` `"up"` | `minecraft:redstone_wire` | + ---> | `"low"` `"none"` `"tall"` | `minecraft:andesite_wall` `minecraft:blackstone_wall` `minecraft:brick_wall` `minecraft:cobbled_deepslate_wall` `minecraft:cobblestone_wall` `minecraft:deepslate_brick_wall` `minecraft:deepslate_tile_wall` `minecraft:diorite_wall` `minecraft:end_stone_brick_wall` `minecraft:granite_wall` `minecraft:mossy_cobblestone_wall` `minecraft:mossy_stone_brick_wall` `minecraft:nether_brick_wall` `minecraft:polished_blackstone_brick_wall` `minecraft:polished_blackstone_wall` `minecraft:polished_deepslate_wall` `minecraft:prismarine_wall` `minecraft:red_nether_brick_wall` `minecraft:red_sandstone_wall` `minecraft:sandstone_wall` `minecraft:stone_brick_wall` | + ---@type "false"|"true"|"none"|"side"|"up"|"low"|"tall" + west = nil +} + + +---A `table` containing sound group properties +---@class BlockStateSoundGroup +---@field pitch number +---@field volume number +---@field hit string +---@field fall string +---@field plate string +---@field step string +---@field break string + +---A `table` containing the blockstate of a block. +---@class BlockState +---Meant for internal use. Has no purpose in Lua. +---@deprecated +---@field ["figura$block_state"] userdata +---@field name BlockID +---@field properties BlockStateProperties +local BlockState = {} + +---Returns if this block can emit redstone power. +---@return boolean +function BlockState.emitsRedstonePower() end + +---Returns the blast resistance of this block. +---@return number +function BlockState.getBlastResistance() end + +---Returns a table with all the block tags this block is included in. +---@return string[] +function BlockState.getBlockTags() end + +---Returns a table of vectors, each vector corresponding to a "box" of the block's collision. +---`{minX, minY, minZ, maxX, maxY, maxZ}` +---@return Vector6[] +function BlockState.getCollisionShape() end + +---Returns what the client thinks this block would output from a comparator. +--- +---Note: This is only what the client *thinks*, this means that certain blocks, like containers, may +---not give the actual output that a comparator would give. +---@return NibbleInt +function BlockState.getComparatorOutput() end + +---Returns the tile entity data if it exists. +---@todo Aliases for tile entity data // GS: You're crazy if you actually do it. +---@return table +function BlockState.getEntityData() end + +---Returns the hardness of this block. +---@return number +function BlockState.getHardness() end + +---Returns the multiplier to jump velocity this block applies to entities jumping on it. +---@return number +function BlockState.getJumpVelocityMultiplier() end + +---Returns the light level this block produces +---@return NibbleInt +function BlockState.getLuminance() end + +---Returns the map color of the block's material as an integear. +---@return number +function BlockState.getMapColor() end + +---Returns the name of the block material. +---This does not return a readable string, instead it returns a field id for the material. +--- +---Material IDs are auto-completed and come with a description of what they are. +---@return BlockMaterial +function BlockState.getMaterial() end + +---Returns how much light is blocked by this block. +---@return NibbleInt +function BlockState.getOpacity() end + +---Returns a table of vectors, each vector corresponding to a "box" of the block's visual outline. +---`{minX, minY, minZ, maxX, maxY, maxZ}` +---@return Vector6[] +function BlockState.getOutlineShape() end + +---Returns how slippery this block is. +---@return number +function BlockState.getSlipperiness() end + +---Returns a table, listing each sound a blockstate may make, also includes base pitch and volume. +---@return BlockStateSoundGroup +function BlockState.getSoundGroup() end + +---Returns the multiplier to velocity this block applies to entities walking on it. +---@return number +function BlockState.getVelocityMultiplier() end + +---Returns if the block is a block entity. +---Block entities store extra data such as inventory or advanced states. +---@return boolean +function BlockState.hasBlockEntity() end + +---Returns if this block glows even in the absence of light. +---@return boolean +function BlockState.hasEmissiveLighting() end + +---Returns if entities can collide with this block. +---@return boolean +function BlockState.isCollidable() end + +---Returns if the block's collision is a single 1x1x1 cube or not. +---@return boolean +function BlockState.isFullCube() end + +---Returns if this block cannot be seen through. +---@return boolean +function BlockState.isOpaque() end + +---Returns if the block is considered solid. +--- +---Entities suffocate in solid blocks and can spawn on them. +---@return boolean +function BlockState.isSolidBlock() end + +---Returns if this block is considered translucent by Minecraft. +---@return boolean +function BlockState.isTranslucent() end + +---Sets the position of the block. +---@param pos VectorPos +function BlockState.setPos(pos) end + +---Returns a string of this BlockState with the same syntax as `/setblock`. +---@return string +function BlockState.toStateString() end + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains function related to creating blockstates +block_state = {} + +---Creates a new `BlockState`. +---@param block string|BlockState +---@param pos? VectorPos +---@return BlockState +function block_state.createBlock(block, pos) end diff --git a/.vscode/figura/camera.lua b/.vscode/figura/camera.lua new file mode 100644 index 0000000..4279d31 --- /dev/null +++ b/.vscode/figura/camera.lua @@ -0,0 +1,45 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A camera that displays whatever is in front of it to the player's screen. +---@class Camera +local Camera = {} + +---Returns the current pivot of the camera. +---@return VectorPos +function Camera.getPivot() end + +---Returns the current position of the camera. +---@return VectorPos +function Camera.getPos() end + +---Returns the current rotation of the camera. +---@return VectorAng +function Camera.getRot() end + +---Sets the pivot point of the camera. +---@param pos VectorPos +function Camera.setPivot(pos) end + +---Sets the position of the camera. +---@param pos VectorPos +function Camera.setPos(pos) end + +---Sets the rotation of the camera. +---@param ang VectorAng +function Camera.setRot(ang) end + + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---A table containing the firstperson and thirdperson cameras. +camera = { + ---The firstperson camera. + FIRST_PERSON = Camera, + + ---The thirdperson camera. + THIRD_PERSON = Camera +} diff --git a/.vscode/figura/chat.lua b/.vscode/figura/chat.lua new file mode 100644 index 0000000..fe8bb32 --- /dev/null +++ b/.vscode/figura/chat.lua @@ -0,0 +1,34 @@ +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains functions relating to the chat. +chat = {} + +---Retrieves a message from chat. +---Messages are ordered from bottom to top, starting at 1. +--- +---Returns `nil` if there is no message at the given location. +---@param num number +---@return string? +function chat.getMessage(num) end + +---Returns if the chat is currently open. +---@return boolean +function chat.isOpen() end + +---Sends a message as the current player. +--- +---This only works on the host. +---@param str string +function chat.sendMessage(str) end + +---Sets the command prefix to the given string. +--- +---Create a function `onCommand(cmd)` to catch custom commands typed into chat. +---@param str? string +function chat.setFiguraCommandPrefix(str) end + +---Returns the text from the message input field, or nil if its empty. +---@return string? +function chat.getInputText() end diff --git a/.vscode/figura/client.lua b/.vscode/figura/client.lua new file mode 100644 index 0000000..d2ae770 --- /dev/null +++ b/.vscode/figura/client.lua @@ -0,0 +1,222 @@ +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains functions allowing access to client variables. +---Only accessable with the host script. +---For all other players running your script, it will return nil. (except for isHost()) +client={} + +---Returns whether the first given version is ahead or behind the second given version. +---Both parameters must be valid semantic versions. +---* `-1` if `version < compareTo` +---* `0` if `version == compareTo` +---* `1` if `version > compareTo` +---@param version string +---@param compareTo string +---@return number +function client.checkVersion(version, compareTo) end + +---Clears the title and subtitle text. +function client.clearTitle() end + +---Returns the most recently shown actionbar text. +---This persists through worlds. +--- +---Note: This will cause a VM error if no action bar text has been shown since the game started. +---@return string +function client.getActionBar() end + +---Returns the namespaced ID of the currently active shader. +---Returns nil if no shader is active. +---@return string +function client.getActiveShader() end + +---Returns the currently allocated memory in bytes. +---@return number +function client.getAllocatedMemory() end + +---Returns the chunk count debug line from the debug screen. +--- +---Note: This is not actually the count, this is the entire debug line containing that information +---and may look similar to the example below. +---`"C: 497/15000 (s) D: 12, pC: 000, pU: 00, aB: 12"` +---@return string +function client.getChunksCount() end + +---Returns if the crosshair is enabled or not. +---@return boolean +function client.getCrosshairEnabled() end + +---Returns the offset of the crosshair. +---Returns nil if it hasn't been set yet. +---@return Vector2 +function client.getCrosshairPos() end + +---Returns the entity count debug line from the debug screen. +--- +---Note: This is not actually the count, this is the entire debug line containing that information +---and may look similar to the example below. +---`"E: 17/83, B: 0, SD: 12"` +---@return string +function client.getEntityCount() end + +---Returns the current FOV. +---@return number +function client.getFOV() end + +---Returns the frame count debug line from the debug screen. +--- +---Note: This is not actually the FPS, this is the entire debug line containing that information +---and may look similar to the example below. +---`"67 fps T: 120 vsyncfancy fancy-clouds B: 2"` +---@return string +function client.getFPS() end + +---Returns the GUI scale as set in Minecraft's settings. +---Auto is `0`. +---@return number +function client.getGUIScale() end + +---Returns if there are any Iris Shaders active. +---@return boolean +function client.getIrisShadersEnabled() end + +---Returns the version of Java currently running. +---@return string +function client.getJavaVersion() end + +---Returns the maximum allowed allocated memory in bytes. +---@return number +function client.getMaxMemory() end + +---Returns the currently used memory in bytes. +---@return number +function client.getMemoryInUse() end + +---Returns the position of the mouse from the top left corner in pixels. +---@return Vector2 +function client.getMousePos() end + +---Returns the most recent direction the scroll wheel has scrolled. +---Calling this function resets the scroll wheel's direction back to neutral. +---* Neutral: `0` +---* Up: `1` +---* Down: `-1` +---@return number +function client.getMouseScroll() end + +---Returns the name of the currently open GUI. +--- +---Note: This is *not* the ID of the GUI, it is the display name. This can be changed on certain +---blocks by renaming them in an anvil. +---@return string +function client.getOpenScreen() end + +---Returns the number of particles as a string. +---@return string +function client.getParticleCount() end + +---Returns the GUI scale. +---This might not be the same as the GUI scale set in Minecraft's settings due to a small window or +---the GUI scale being set to `Auto`. +---@return number +function client.getScaleFactor() end + +---Returns the size of the window scaled by the GUI scale. +---@return Vector2 +function client.getScaledWindowSize() end + +---Returns the brand of the server. +---@return string +function client.getServerBrand() end + +---Returns the sound count debug line from the debug screen. +--- +---Note: This is not actually the count, this is (almost) the entire debug line containing that +---information and may look similar to the example below. +---`"Sounds: 1/247 + 0/8"` +---@return string +function client.getSoundCount() end + +---Returns the most recently shown subtitle. +--- +---Note: This will cause a VM error if no subtitle has been shown since the game started or since +---`.clearTitle()` was last called. +---@return string +function client.getSubtitle() end + +---Returns the amount of miliseconds since the Unix Epoch. +---@return number +function client.getSystemTime() end + +---Returns the most recently shown title. +--- +---Note: This will cause a VM error if no title has been shown since the game started or since +---`.clearTitle()` was last called. +---@return string +function client.getTitle() end + +---Returns the version number of Minecraft as a string. +---@return string +function client.getVersion() end + +---Returns the "type" of Minecraft currently running. +---This is usually the currently running mod loader. +---@return string +function client.getVersionType() end + +---Returns the size of the Minecraft window in pixels +---@return Vector2 +function client.getWindowSize() end + +---Returns if the game instance running the script is the player with the avatar. +---@return boolean +function client.isHost() end + +---Returns if the hud is visible or not using the F1 key. +---@return boolean +function client.isHudEnabled() end + +---Returns if the singleplayer world is paused. +---Multiplayer games cannot be paused. +---@return boolean +function client.isPaused() end + +---Returns if the Minecraft window is focused. +---@return boolean +function client.isWindowFocused() end + +---Sets the text of the actionbar and shows it. +---@param text string +function client.setActionbar(text) end + +---Sets the visibility of the crosshair. +---@param bool boolean +function client.setCrosshairEnabled(bool) end + +---Moves the crosshair by the given offset. +--- +---This does not change the player's aim direction. +---@param offset Vector2 +function client.setCrosshairPos(offset) end + +---Sets if the mouse is forced to be unlocked during normal gameplay. +--- +---Locking the mouse in some GUIs closes them. +---@param bool boolean +function client.setMouseUnlocked(bool) end + +---Sets the subtitle of the title. Does not show the title or subtitle. +---@param text string +function client.setSubtitle(text) end + +---Set the text of the title and shows the title and subtitle. +---@param text string +function client.setTitle(text) end + +---Sets the fade durations for the title/subtitle. +---@param fadeIn number +---@param hold number +---@param fadeOut number +function client.setTitleTimes(fadeIn, hold, fadeOut) end diff --git a/.vscode/figura/data.lua b/.vscode/figura/data.lua new file mode 100644 index 0000000..2742965 --- /dev/null +++ b/.vscode/figura/data.lua @@ -0,0 +1,49 @@ +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains functions involving saving and loading data to and from files. +---It uses the avatar name as the default file name. +--- +---Data files can be found at `./minecraft/figura/stored_vars` +data = {} + +---Sets if you are allowed to appear in `world.getPlayers()`. +--- +---This is enabled by default. +---@param bool boolean +function data.allowTracking(bool) end + +---Completely removes the active data file. +function data.deleteFile() end + +---Gets the name of the active data file. +---@return string +function data.getName() end + +---Returns if you are allowed to appear in `world.getPlayers()`. +---@return boolean +function data.hasTracking() end + +---Returns a value from the given key in the active data file. +---Returns nil if the key does not exist. +---@param key string +---@return string|table|Vector +function data.load(key) end + +---Returns a table containing all the saved variables in the active data file. +---@return table +function data.loadAll() end + +---Removes the given key from the active data file. +---@param key string +function data.remove(key) end + +---Save a value in the active data file. +---@param key string +---@param value any +function data.save(key, value) end + +---Makes a different file the active data file. +---@param name string +function data.setName(name) end diff --git a/.vscode/figura/entity.lua b/.vscode/figura/entity.lua new file mode 100644 index 0000000..f089d91 --- /dev/null +++ b/.vscode/figura/entity.lua @@ -0,0 +1,526 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A Minecraft dimension identifier. +--- +---Only the default Minecraft dimensions are auto-completed. +---You can use any dimension from any mod, even if it does not auto-complete. +---@alias DimensionID +---| "minecraft:overworld" +---| "minecraft:the_nether" +---| "minecraft:the_end" + +---An equipment slot. +---@alias EquipmentSlot +---| 1 #Main Hand +---| 2 #Off Hand +---| 3 #Feet +---| 4 #Legs +---| 5 #Chest +---| 6 #Head + +---A Minecraft entity identifier. +--- +---Only the default Minecraft entities are auto-completed. +---You can use any entity from any mod, even if it does not auto-complete. +---@alias EntityID +---| "minecraft:axolotl" #Axolotl +---| "minecraft:bat" #Bat +---| "minecraft:bee" #Bee +---| "minecraft:blaze" #Blaze +---| "minecraft:cat" #Cat +---| "minecraft:cave_spider" #Cave Spider +---| "minecraft:chicken" #Chicken +---| "minecraft:cod" #Cod +---| "minecraft:cow" #Cow +---| "minecraft:creeper" #Creeper +---| "minecraft:dolphin" #Dolphin +---| "minecraft:donkey" #Donkey +---| "minecraft:drowned" #Drowned +---| "minecraft:elder_guardian" #Elder Guardian +---| "minecraft:ender_dragon" #Ender Dragon +---| "minecraft:enderman" #Enderman +---| "minecraft:endermite" #Endermite +---| "minecraft:evoker" #Evoker +---| "minecraft:fox" #Fox +---| "minecraft:ghast" #Ghast +---| "minecraft:giant" #Giant +---| "minecraft:glow_squid" #Glow Squid +---| "minecraft:goat" #Goat +---| "minecraft:guardian" #Guardian +---| "minecraft:hoglin" #Hoglin +---| "minecraft:horse" #Horse +---| "minecraft:husk" #Husk +---| "minecraft:illusioner" #Illusioner +---| "minecraft:iron_golem" #Iron Golem +---| "minecraft:llama" #Llama +---| "minecraft:magma_cube" #Magma Cube +---| "minecraft:mooshroom" #Mooshroom +---| "minecraft:mule" #Mule +---| "minecraft:ocelot" #Ocelot +---| "minecraft:panda" #Panda +---| "minecraft:parrot" #Parrot +---| "minecraft:phantom" #Phantom +---| "minecraft:pig" #Pig +---| "minecraft:piglin_brute" #Piglin Brute +---| "minecraft:piglin" #Piglin +---| "minecraft:pillager" #Pillager +---| "minecraft:polar_bear" #Polar Bear +---| "minecraft:pufferfish" #Pufferfish +---| "minecraft:rabbit" #Rabbit +---| "minecraft:ravager" #Ravager +---| "minecraft:salmon" #Salmon +---| "minecraft:sheep" #Sheep +---| "minecraft:shulker" #Shulker +---| "minecraft:silverfish" #Silverfish +---| "minecraft:skeleton_horse" #Skeleton Horse +---| "minecraft:skeleton" #Skeleton +---| "minecraft:slime" #Slime +---| "minecraft:snow_golem" #Snow Golem +---| "minecraft:spider" #Spider +---| "minecraft:squid" #Squid +---| "minecraft:stray" #Stray +---| "minecraft:strider" #Strider +---| "minecraft:trader_llama" #Trader Llama +---| "minecraft:tropical_fish" #Tropical Fish +---| "minecraft:turtle" #Turtle +---| "minecraft:vex" #Vex +---| "minecraft:villager" #Villager +---| "minecraft:vindicator" #Vindicator +---| "minecraft:wandering_trader" #Wandering Trader +---| "minecraft:witch" #Witch +---| "minecraft:wither_skeleton" #Wither Skeleton +---| "minecraft:wither" #Wither +---| "minecraft:wolf" #Wolf +---| "minecraft:zoglin" #Zoglin +---| "minecraft:zombie_horse" #Zombie Horse +---| "minecraft:zombie_villager" #Zombie Villager +---| "minecraft:zombie" #Zombie +---| "minecraft:zombified_piglin" #Zombified Piglin + +---An entity animation. +---@alias EntityAnimation +---| "STANDING" #All: Default animation. +---| "FALL_FLYING" #Player: Using elytra. +---| "SLEEPING" #Player: Is sleeping in a bed. +---| "SWIMMING" #Player: Sprint swimming. +---| "SPIN_ATTACK" #Player: Flying with trident. +---| "CROUCHING" #Player: Sneaking. +---| "DYING" #Player: Falling over death animation. + +---A damage source name. +--- +---Only the default Minecraft damage sources are auto-completed. +---You can use any damage source, even if it does not auto-complete. +---@alias DamageSource +---| "anvil" #Anvil +---| "arrow" #Arrow +---| "badRespawnPoint" #Exploding bed or respawn +---| "cactus" #Contact with cactus +---| "cramming" #Entity cramming +---| "dragonBreath" #Dragon Breath (Unused, the dragon breath attack does magic damage.) +---| "drown" #Drowning +---| "dryout" #Squid air suffocation +---| "even_more_magic" #Unused +---| "explosion" #Explosion +---| "explosion.player" #Explosion caused by something else +---| "fall" #Falling +---| "fallingBlock" #Hit by falling block +---| "fallingStalactite" #Hit by a falling stalactite +---| "fireworks" #Firework explosion +---| "flyIntoWall" #Elytra gliding too fast into a wall +---| "freeze" #Freezing in powder snow +---| "generic" #Unknown damage +---| "hotFloor" #Magma block +---| "indirectMagic" #Indirectly hit with magic +---| "inFire" #Standing in a fire block +---| "inWall" #Suffocation +---| "lava" #Swimming in lava +---| "lightingBolt" #Struck by lightning +---| "magic" #Directly hit with magic +---| "mob" #Attacked by an entity +---| "onFire" #Burning +---| "outOfWorld" #Void or /kill +---| "player" #Attacked by a player +---| "stalagmite" #Falling on a stalagmite +---| "starve" #Starvation +---| "sting" #Bee Sting +---| "sweetBerryBush" #Contact with sweet berry bush +---| "thorns" #Thorns enchantment +---| "thrown" #Thrown projectile +---| "trident" #Trident +---| "wither" #Wither effect +---| "witherSkull" #Wither skull projectile + +---A Minecraft status effect identifier. +--- +---Only the default Minecraft status effects are auto-completed. +---You can use any status effect from any mod, even if it does not auto-complete. +---@alias StatusEffectID +---| "minecraft:absorption" #Absorption +---| "minecraft:bad_omen" #Bad Omen +---| "minecraft:blindness" #Blindness +---| "minecraft:conduit_power" #Conduit Power +---| "minecraft:dolphins_grace" #Dolphin's Grace +---| "minecraft:fire_resistance" #Fire Resistance +---| "minecraft:glowing" #Glowing +---| "minecraft:haste" #Haste +---| "minecraft:health_boost" #Health Boost +---| "minecraft:hero_of_the_village" #Hero of the Village +---| "minecraft:hunger" #Hunger +---| "minecraft:instant_health" #Instant Health +---| "minecraft:instant_damage" #Instant Damage +---| "minecraft:invisibility" #Invisibility +---| "minecraft:jump_boost" #Jump Boost +---| "minecraft:levitation" #Levitation +---| "minecraft:luck" #Luck +---| "minecraft:mining_fatigue" #Mining Fatigue +---| "minecraft:nausea" #Nausea +---| "minecraft:night_vision" #Night Vision +---| "minecraft:poison" #Poison +---| "minecraft:regeneration" #Regeneration +---| "minecraft:resistance" #Resistance +---| "minecraft:saturation" #Saturation +---| "minecraft:slow_falling" #Slow Falling +---| "minecraft:slowness" #Slowness +---| "minecraft:speed" #Speed +---| "minecraft:strength" #Strength +---| "minecraft:unluck" #Bad Luck +---| "minecraft:water_breathing" #Water Breathing +---| "minecraft:weakness" #Weakness +---| "minecraft:wither" #Wither + +---@alias PlayerGamemode +---| "SURVIVAL" +---| "CREATIVE" +---| "ADVENTURE" +---| "SPECTATOR" + +---A `table` containing the duration and amplifier of a status effect. +---@class StatusEffect +---@field amplifier number #The effect's level. +---@field duration number #The amount of ticks remaining. + +---A hand slot. +---@alias HandSlot +---| 1 #Main Hand +---| 2 #Off Hand + +---String literal of Hand +---@alias HandString +---| "MAIN_HAND" +---| "OFF_HAND" + +---A non-living entity. +---@class Entity +local Entity = {} + +---Returns the ticks of air this entity has left. +---@return number +function Entity.getAir() end + +---Returns the remaining air of this entity as a percentage. (`0..1`) +---@return number +function Entity.getAirPercentage() end + +---Returns the currently playing animation of this entity. +---@return EntityAnimation string +function Entity.getAnimation() end + +---Returns the size of this entity's bounding box in blocks. +---@return Vector3 +function Entity.getBoundingBox() end + +---Returns the item in this entity's given equipment slot. +--- +---Note: An empty slot will still return an `ItemStack` of air. +---@param slot EquipmentSlot +---@return ItemStack +function Entity.getEquipmentItem(slot) end + +---Returns the height from the base of this entity to their eye level in blocks. +---@return number +function Entity.getEyeHeight() end + +---Returns the world coords of the entity's eyes. +---@return VectorPos +function Entity.getEyeY() end + +---Returns how long this entity will be on fire for. +---If this number is negative, it is how long the entity is immune to being set on fire. +---@return number +function Entity.getFireTicks() end + +---Returns the amount of ticks this entity has been frozen in deep snow for. +--- +---Note: Always returns `0` if playing on 1.16. +---@return number +function Entity.getFrozenTicks() end + +---Returns the normalized direction that this entity is looking in. +---@return VectorPos +function Entity.getLookDir() end + +---Returns the maximum air this entity can have. +---@return number +function Entity.getMaxAir() end + +---Returns this entity's display name. +--- +---Note: Returns the entity's translated name if it has no custom name. +---@return string +function Entity.getName() end + +---Returns an NBT value from this entity using the given SNBT path. +--- +---`List`, `Compound`, `Byte_Array`, `Int_Array`, `Long_Array` tags return a `table`. +---`Byte`, `Short`, `Int`, `Long`, `Float`, and `Double` tags return a `number`. +---`String` tags return a `string`. +---@param nbtpath string +---@return string|number|table +function Entity.getNbtValue(nbtpath) end + +---Returns the position of this entity. +---@param delta? number +---@return VectorPos +function Entity.getPos(delta) end + +---Returns the rotation of this entity. +--- +---Note: When used on the local player, the yaw will build up past the normal limits when in first +---person. +---@param delta? number +---@return VectorAng +function Entity.getRot(delta) end + +---Returns the position of the block this entity is looking at. +---Returns `nil` if not looking at any blocks. +---@param targetLiquid boolean +---@return VectorPos? +function Entity.getTargetedBlockPos(targetLiquid) end + +---Returns the entity identifier of this entity. +---@return EntityID string +function Entity.getType() end + +---Returns the UUID4 of this entity. +---@return string +function Entity.getUUID() end + +---Returns the entity that this entity is riding. +---@return (Entity|LivingEntity|Player)? +function Entity.getVehicle() end + +---Returns the velocity of this entity. +---@return VectorPos +function Entity.getVelocity() end + +---Returns the dimension identifier of the world this entity is in. +---@return DimensionID string +function Entity.getWorldName() end + +---Returns if the entity has a Figura avatar. +---@return boolean +function Entity.hasAvatar() end + +---Returns if the entity is glowing. +---@return boolean +function Entity.isGlowing() end + +---Returns if the entity is a Hamburger. +---@return boolean +---function Entity.isHamburger() end + +---Returns if the entity is touching lava. +---@return boolean +function Entity.isInLava() end + +---Returns if the entity has contact with rain. +---@return boolean +function Entity.isInRain() end + +---Returns if the entity is invisible. +---@return boolean +function Entity.isInvisible() end + +---Returns if this entity is standing on solid ground. +---@return boolean +function Entity.isOnGround() end + +---Returns if the entity has the silent NBT tag. +---@return boolean +function Entity.isSilent() end + +---Returns if the entity is sneaking. +---@return boolean +function Entity.isSneaking() end + +---Returns if this entity is sneaky. +---@return boolean +function Entity.isSneaky() end + +---Returns is the entity is sprinting. +---@return boolean +function Entity.isSprinting() end + +---Returns if the entity has contact with water or waterlogged blocks. +---@return boolean +function Entity.isTouchingWater() end + +---Returns if the entity is fully submerged in water. +---@return boolean +function Entity.isUnderwater() end + +---Returns if this entity is being rained on or in water. +---@return boolean +function Entity.isWet() end + + +---LivingEntity ⇐ Entity +---*** +---A living entity. +---@class LivingEntity : Entity +local LivingEntity = {} + +---Returns which hand is active. +---Active hand is determined by the last hand to use an item. +---Returns nil if no item has been used. +---@return HandString? +function LivingEntity.getActiveHand() end + +---Returns the item that is currently being used. +---@return ItemStack +function LivingEntity.getActiveItem() end + +---Returns the total armor value of this entity. +--- +---Note: Some entities have natural armor that is added on top of the armor they are wearing. +---@return number +function LivingEntity.getArmor() end + +---Returns the yaw of this entity's body. +---@param delta? number +---@return number +function LivingEntity.getBodyYaw(delta) end + +---Returns how long this entity has been dead for in ticks. +---An entity is deleted after being dead for 20 ticks. +---@return number +function LivingEntity.getDeathTime() end + +---Returns the current health of this entity. +---@return number +function LivingEntity.getHealth() end + +---Returns the current health of this entity as a percentage. (`0..1`) +---@return number +function LivingEntity.getHealthPercentage() end + +---Returns the max health of this entity. +---@return number +function LivingEntity.getMaxHealth() end + +---Returns the duration and amplifier of the given status effect on this entity. +---Returns `nil` if the given status effect does not exist on this entity. +---@param effect StatusEffectID +---@return StatusEffect +function LivingEntity.getStatusEffect(effect) end + +---Returns a list of all status effects on this entity. +---@return StatusEffectID[] +function LivingEntity.getStatusEffectTypes() end + +---Returns the amount of stingers stuck in this entity. +---@return number +function LivingEntity.getStingerCount() end + +---Returns the amount of arrows stuck in this entity. +---@return number +function LivingEntity.getStuckArrowCount() end + +---Returns if the entity is climbing. +---@return boolean +function LivingEntity.isClimbing() end + +---Returns if this entity is left-handed. +---@return boolean +function LivingEntity.isLeftHanded() end + +---Returns if this entity is using an item. +---@return boolean +function LivingEntity.isUsingItem() end + + +---Player ⇐ LivingEntity ⇐ Entity +---*** +---A player entity. +---@class Player : LivingEntity +local Player = {} + +---Returns the current level of this entity. +---@return number +function Player.getExperienceLevel() end + +---Returns the progress between this entity's current level and next level as a percentage. (`0..1`) +---@return number +function Player.getExperienceProgress() end + +---Returns the amount of hunger this entity has. +---@return number +function Player.getFood() end + +---Returns the player's gamemode as a string. +---@return PlayerGamemode +function Player.getGamemode() end + +---Returns an item held in this entity's hands. +---Returns `nil` if the slot is empty. +---@param slot HandSlot +---@return ItemStack? +function Player.getHeldItem(slot) end + +---Returns the vanilla model type, either "default" or "slim". +---@return "default"|"slim" +function Player.getModelType() end + +---Returns the amount of saturation this entity has. +---@return number +function Player.getSaturation() end + +---Returns the cross-script value stored in the player at the specified key. +---@param key string +---@return any +function Player.getStoredValue(key) end + +---Returns the table of the entity under the crosshair. +--- +---Note: This only works if the `Player` is the player running the current instance of the script. +---@return (Entity|LivingEntity|Player)? +function Player.getTargetedEntity() end + +---Returns if the player is flying via creative flight. +---@return boolean +function Player.isFlying() end + +---Returns the last source of damage this entity has taken. +--- +---Note: Does not work unless the server is running Figura. (LAN or Integrated server.) +---@return DamageSource string +function Player.lastDamageSource() end + + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---The player linked to this script. +--- +---Note: This table is unreadable until `player_init()` has run. +---@type Player +player = {} + +---Stores the value in the player executing the script at the specified key. +---@param key string +---@param value any +function storeValue(key, value) end diff --git a/.vscode/figura/item_stack.lua b/.vscode/figura/item_stack.lua new file mode 100644 index 0000000..6a2c34b --- /dev/null +++ b/.vscode/figura/item_stack.lua @@ -0,0 +1,1247 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A Minecraft item identifier. +--- +---Only the default Minecraft items are auto-completed. +---You can use any item from any mod, even if it does not auto-complete. +---@alias ItemID +---| "minecraft:acacia_boat" #Acacia Boat +---| "minecraft:acacia_button" #Acacia Button +---| "minecraft:acacia_door" #Acacia Door +---| "minecraft:acacia_fence" #Acacia Fence +---| "minecraft:acacia_fence_gate" #Acacia Fence Gate +---| "minecraft:acacia_leaves" #Acacia Leaves +---| "minecraft:acacia_log" #Acacia Log +---| "minecraft:acacia_planks" #Acacia Planks +---| "minecraft:acacia_pressure_plate" #Acacia Pressure Plate +---| "minecraft:acacia_sapling" #Acacia Sapling +---| "minecraft:acacia_sign" #Acacia Sign +---| "minecraft:acacia_slab" #Acacia Slab +---| "minecraft:acacia_stairs" #Acacia Stairs +---| "minecraft:acacia_trapdoor" #Acacia Trapdoor +---| "minecraft:acacia_wood" #Acacia Wood +---| "minecraft:activator_rail" #Activator Rail +---| "minecraft:air" #Air +---| "minecraft:allium" #Allium +---| "minecraft:amethyst_block" #Block of Amethyst +---| "minecraft:amethyst_cluster" #Amethyst Cluster +---| "minecraft:amethyst_shard" #Amethyst Shard +---| "minecraft:ancient_debris" #Ancient Debris +---| "minecraft:andesite" #Andesite +---| "minecraft:andesite_slab" #Andesite Slab +---| "minecraft:andesite_stairs" #Andesite Stairs +---| "minecraft:andesite_wall" #Andesite Wall +---| "minecraft:anvil" #Anvil +---| "minecraft:apple" #Apple +---| "minecraft:armor_stand" #Armor Stand +---| "minecraft:arrow" #Arrow +---| "minecraft:axolotl_bucket" #Bucket of Axolotl +---| "minecraft:axolotl_spawn_egg" #Axolotl Spawn Egg +---| "minecraft:azalea" #Azalea +---| "minecraft:azalea_leaves" #Azalea Leaves +---| "minecraft:azure_bluet" #Azure Bluet +---| "minecraft:baked_potato" #Baked Potato +---| "minecraft:bamboo" #Bamboo +---| "minecraft:barrel" #Barrel +---| "minecraft:barrier" #Barrier +---| "minecraft:basalt" #Basalt +---| "minecraft:bat_spawn_egg" #Bat Spawn Egg +---| "minecraft:beacon" #Beacon +---| "minecraft:bedrock" #Bedrock +---| "minecraft:bee_nest" #Bee Nest +---| "minecraft:bee_spawn_egg" #Bee Spawn Egg +---| "minecraft:beef" #Raw Beef +---| "minecraft:beehive" #Beehive +---| "minecraft:beetroot" #Beetroot +---| "minecraft:beetroot_seeds" #Beetroot Seeds +---| "minecraft:beetroot_soup" #Beetroot Soup +---| "minecraft:bell" #Bell +---| "minecraft:big_dripleaf" #Big Dripleaf +---| "minecraft:birch_boat" #Birch Boat +---| "minecraft:birch_button" #Birch Button +---| "minecraft:birch_door" #Birch Door +---| "minecraft:birch_fence" #Birch Fence +---| "minecraft:birch_fence_gate" #Birch Fence Gate +---| "minecraft:birch_leaves" #Birch Leaves +---| "minecraft:birch_log" #Birch Log +---| "minecraft:birch_planks" #Birch Planks +---| "minecraft:birch_pressure_plate" #Birch Pressure Plate +---| "minecraft:birch_sapling" #Birch Sapling +---| "minecraft:birch_sign" #Birch Sign +---| "minecraft:birch_slab" #Birch Slab +---| "minecraft:birch_stairs" #Birch Stairs +---| "minecraft:birch_trapdoor" #Birch Trapdoor +---| "minecraft:birch_wood" #Birch Wood +---| "minecraft:black_banner" #Black Banner +---| "minecraft:black_bed" #Black Bed +---| "minecraft:black_candle" #Black Candle +---| "minecraft:black_carpet" #Black Carpet +---| "minecraft:black_concrete" #Black Concrete +---| "minecraft:black_concrete_powder" #Black Concrete Powder +---| "minecraft:black_dye" #Black Dye +---| "minecraft:black_glazed_terracotta" #Black Glazed Terracotta +---| "minecraft:black_shulker_box" #Black Shulker Box +---| "minecraft:black_stained_glass" #Black Stained Glass +---| "minecraft:black_stained_glass_pane" #Black Stained Glass Pane +---| "minecraft:black_terracotta" #Black Terracotta +---| "minecraft:black_wool" #Black Wool +---| "minecraft:blackstone" #Blackstone +---| "minecraft:blackstone_slab" #Blackstone Slab +---| "minecraft:blackstone_stairs" #Blackstone Stairs +---| "minecraft:blackstone_wall" #Blackstone Wall +---| "minecraft:blast_furnace" #Blast Furnace +---| "minecraft:blaze_powder" #Blaze Powder +---| "minecraft:blaze_rod" #Blaze Rod +---| "minecraft:blaze_spawn_egg" #Blaze Spawn Egg +---| "minecraft:blue_banner" #Blue Banner +---| "minecraft:blue_bed" #Blue Bed +---| "minecraft:blue_candle" #Blue Candle +---| "minecraft:blue_carpet" #Blue Carpet +---| "minecraft:blue_concrete" #Blue Concrete +---| "minecraft:blue_concrete_powder" #Blue Concrete Powder +---| "minecraft:blue_dye" #Blue Dye +---| "minecraft:blue_glazed_terracotta" #Blue Glazed Terracotta +---| "minecraft:blue_ice" #Blue Ice +---| "minecraft:blue_orchid" #Blue Orchid +---| "minecraft:blue_shulker_box" #Blue Shulker Box +---| "minecraft:blue_stained_glass" #Blue Stained Glass +---| "minecraft:blue_stained_glass_pane" #Blue Stained Glass Pane +---| "minecraft:blue_terracotta" #Blue Terracotta +---| "minecraft:blue_wool" #Blue Wool +---| "minecraft:bone" #Bone +---| "minecraft:bone_block" #Bone Block +---| "minecraft:bone_meal" #Bone Meal +---| "minecraft:book" #Book +---| "minecraft:bookshelf" #Bookshelf +---| "minecraft:bow" #Bow +---| "minecraft:bowl" #Bowl +---| "minecraft:brain_coral" #Brain Coral +---| "minecraft:brain_coral_block" #Brain Coral Block +---| "minecraft:brain_coral_fan" #Brain Coral Fan +---| "minecraft:bread" #Bread +---| "minecraft:brewing_stand" #Brewing Stand +---| "minecraft:brick" #Brick +---| "minecraft:brick_slab" #Brick Slab +---| "minecraft:brick_stairs" #Brick Stairs +---| "minecraft:brick_wall" #Brick Wall +---| "minecraft:bricks" #Bricks +---| "minecraft:brown_banner" #Brown Banner +---| "minecraft:brown_bed" #Brown Bed +---| "minecraft:brown_candle" #Brown Candle +---| "minecraft:brown_carpet" #Brown Carpet +---| "minecraft:brown_concrete" #Brown Concrete +---| "minecraft:brown_concrete_powder" #Brown Concrete Powder +---| "minecraft:brown_dye" #Brown Dye +---| "minecraft:brown_glazed_terracotta" #Brown Glazed Terracotta +---| "minecraft:brown_mushroom" #Brown Mushroom +---| "minecraft:brown_mushroom_block" #Brown Mushroom Block +---| "minecraft:brown_shulker_box" #Brown Shulker Box +---| "minecraft:brown_stained_glass" #Brown Stained Glass +---| "minecraft:brown_stained_glass_pane" #Brown Stained Glass Pane +---| "minecraft:brown_terracotta" #Brown Terracotta +---| "minecraft:brown_wool" #Brown Wool +---| "minecraft:bubble_coral" #Bubble Coral +---| "minecraft:bubble_coral_block" #Bubble Coral Block +---| "minecraft:bubble_coral_fan" #Bubble Coral Fan +---| "minecraft:bucket" #Bucket +---| "minecraft:budding_amethyst" #Budding Amethyst +---| "minecraft:bundle" #Bundle +---| "minecraft:cactus" #Cactus +---| "minecraft:cake" #Cake +---| "minecraft:calcite" #Calcite +---| "minecraft:campfire" #Campfire +---| "minecraft:candle" #Candle +---| "minecraft:carrot" #Carrot +---| "minecraft:carrot_on_a_stick" #Carrot on a Stick +---| "minecraft:cartography_table" #Cartography Table +---| "minecraft:carved_pumpkin" #Carved Pumpkin +---| "minecraft:cat_spawn_egg" #Cat Spawn Egg +---| "minecraft:cauldron" #Cauldron +---| "minecraft:cave_spider_spawn_egg" #Cave Spider Spawn Egg +---| "minecraft:chain" #Chain +---| "minecraft:chain_command_block" #Chain Command Block +---| "minecraft:chainmail_boots" #Chainmail Boots +---| "minecraft:chainmail_chestplate" #Chainmail Chestplate +---| "minecraft:chainmail_helmet" #Chainmail Helmet +---| "minecraft:chainmail_leggings" #Chainmail Leggings +---| "minecraft:charcoal" #Charcoal +---| "minecraft:chest" #Chest +---| "minecraft:chest_minecart" #Minecart with Chest +---| "minecraft:chicken" #Raw Chicken +---| "minecraft:chicken_spawn_egg" #Chicken Spawn Egg +---| "minecraft:chipped_anvil" #Chipped Anvil +---| "minecraft:chiseled_deepslate" #Chiseled Deepslate +---| "minecraft:chiseled_nether_bricks" #Chiseled Nether Bricks +---| "minecraft:chiseled_polished_blackstone" #Chiseled Polished Blackstone +---| "minecraft:chiseled_quartz_block" #Chiseled Quartz Block +---| "minecraft:chiseled_red_sandstone" #Chiseled Red Sandstone +---| "minecraft:chiseled_sandstone" #Chiseled Sandstone +---| "minecraft:chiseled_stone_bricks" #Chiseled Stone Bricks +---| "minecraft:chorus_flower" #Chorus Flower +---| "minecraft:chorus_fruit" #Chorus Fruit +---| "minecraft:chorus_plant" #Chorus Plant +---| "minecraft:clay" #Clay +---| "minecraft:clay_ball" #Clay Ball +---| "minecraft:clock" #Clock +---| "minecraft:coal" #Coal +---| "minecraft:coal_block" #Block of Coal +---| "minecraft:coal_ore" #Coal Ore +---| "minecraft:coarse_dirt" #Coarse Dirt +---| "minecraft:cobbled_deepslate" #Cobbled Deepslate +---| "minecraft:cobbled_deepslate_slab" #Cobbled Deepslate Slab +---| "minecraft:cobbled_deepslate_stairs" #Cobbled Deepslate Stairs +---| "minecraft:cobbled_deepslate_wall" #Cobbled Deepslate Wall +---| "minecraft:cobblestone" #Cobblestone +---| "minecraft:cobblestone_slab" #Cobblestone Slab +---| "minecraft:cobblestone_stairs" #Cobblestone Stairs +---| "minecraft:cobblestone_wall" #Cobblestone Wall +---| "minecraft:cobweb" #Cobweb +---| "minecraft:cocoa_beans" #Cocoa Beans +---| "minecraft:cod" #Raw Cod +---| "minecraft:cod_bucket" #Bucket of Cod +---| "minecraft:cod_spawn_egg" #Cod Spawn Egg +---| "minecraft:command_block" #Command Block +---| "minecraft:command_block_minecart" #Minecart with Command Block +---| "minecraft:comparator" #Redstone Comparator +---| "minecraft:compass" #Compass +---| "minecraft:composter" #Composter +---| "minecraft:conduit" #Conduit +---| "minecraft:cooked_beef" #Steak +---| "minecraft:cooked_chicken" #Cooked Chicken +---| "minecraft:cooked_cod" #Cooked Cod +---| "minecraft:cooked_mutton" #Cooked Mutton +---| "minecraft:cooked_porkchop" #Cooked Porkchop +---| "minecraft:cooked_rabbit" #Cooked Rabbit +---| "minecraft:cooked_salmon" #Cooked Salmon +---| "minecraft:cookie" #Cookie +---| "minecraft:copper_block" #Block of Copper +---| "minecraft:copper_ingot" #Copper Ingot +---| "minecraft:copper_ore" #Copper Ore +---| "minecraft:cornflower" #Cornflower +---| "minecraft:cow_spawn_egg" #Cow Spawn Egg +---| "minecraft:cracked_deepslate_bricks" #Cracked Deepslate Bricks +---| "minecraft:cracked_deepslate_tiles" #Cracked Deepslate Tiles +---| "minecraft:cracked_nether_bricks" #Cracked Nether Bricks +---| "minecraft:cracked_polished_blackstone_bricks" #Cracked Polished Blackstone Bricks +---| "minecraft:cracked_stone_bricks" #Cracked Stone Bricks +---| "minecraft:crafting_table" #Crafting Table +---| "minecraft:creeper_banner_pattern" #Banner Pattern (Creeper Charge) +---| "minecraft:creeper_head" #Creeper Head +---| "minecraft:creeper_spawn_egg" #Creeper Spawn Egg +---| "minecraft:crimson_button" #Crimson Button +---| "minecraft:crimson_door" #Crimson Door +---| "minecraft:crimson_fence" #Crimson Fence +---| "minecraft:crimson_fence_gate" #Crimson Fence Gate +---| "minecraft:crimson_fungus" #Crimson Fungus +---| "minecraft:crimson_hyphae" #Crimson Hyphae +---| "minecraft:crimson_nylium" #Crimson Nylium +---| "minecraft:crimson_planks" #Crimson Planks +---| "minecraft:crimson_pressure_plate" #Crimson Pressure Plate +---| "minecraft:crimson_roots" #Crimson Roots +---| "minecraft:crimson_sign" #Crimson Sign +---| "minecraft:crimson_slab" #Crimson Slab +---| "minecraft:crimson_stairs" #Crimson Stairs +---| "minecraft:crimson_stem" #Crimson Stem +---| "minecraft:crimson_trapdoor" #Crimson Trapdoor +---| "minecraft:crossbow" #Crossbow +---| "minecraft:crying_obsidian" #Crying Obsidian +---| "minecraft:cut_copper" #Cut Copper +---| "minecraft:cut_copper_slab" #Cut Copper Slab +---| "minecraft:cut_copper_stairs" #Cut Copper Stairs +---| "minecraft:cut_red_sandstone" #Cut Red Sandstone +---| "minecraft:cut_red_sandstone_slab" #Cut Red Sandstone Slab +---| "minecraft:cut_sandstone" #Cut Sandstone +---| "minecraft:cut_sandstone_slab" #Cut Sandstone Slab +---| "minecraft:cyan_banner" #Cyan Banner +---| "minecraft:cyan_bed" #Cyan Bed +---| "minecraft:cyan_candle" #Cyan Candle +---| "minecraft:cyan_carpet" #Cyan Carpet +---| "minecraft:cyan_concrete" #Cyan Concrete +---| "minecraft:cyan_concrete_powder" #Cyan Concrete Powder +---| "minecraft:cyan_dye" #Cyan Dye +---| "minecraft:cyan_glazed_terracotta" #Cyan Glazed Terracotta +---| "minecraft:cyan_shulker_box" #Cyan Shulker Box +---| "minecraft:cyan_stained_glass" #Cyan Stained Glass +---| "minecraft:cyan_stained_glass_pane" #Cyan Stained Glass Pane +---| "minecraft:cyan_terracotta" #Cyan Terracotta +---| "minecraft:cyan_wool" #Cyan Wool +---| "minecraft:damaged_anvil" #Damaged Anvil +---| "minecraft:dandelion" #Dandelion +---| "minecraft:dark_oak_boat" #Dark Oak Boat +---| "minecraft:dark_oak_button" #Dark Oak Button +---| "minecraft:dark_oak_door" #Dark Oak Door +---| "minecraft:dark_oak_fence" #Dark Oak Fence +---| "minecraft:dark_oak_fence_gate" #Dark Oak Fence Gate +---| "minecraft:dark_oak_leaves" #Dark Oak Leaves +---| "minecraft:dark_oak_log" #Dark Oak Log +---| "minecraft:dark_oak_planks" #Dark Oak Planks +---| "minecraft:dark_oak_pressure_plate" #Dark Oak Pressure Plate +---| "minecraft:dark_oak_sapling" #Dark Oak Sapling +---| "minecraft:dark_oak_sign" #Dark Oak Sign +---| "minecraft:dark_oak_slab" #Dark Oak Slab +---| "minecraft:dark_oak_stairs" #Dark Oak Stairs +---| "minecraft:dark_oak_trapdoor" #Dark Oak Trapdoor +---| "minecraft:dark_oak_wood" #Dark Oak Wood +---| "minecraft:dark_prismarine" #Dark Prismarine +---| "minecraft:dark_prismarine_slab" #Dark Prismarine Slab +---| "minecraft:dark_prismarine_stairs" #Dark Prismarine Stairs +---| "minecraft:daylight_detector" #Daylight Detector +---| "minecraft:dead_brain_coral" #Dead Brain Coral +---| "minecraft:dead_brain_coral_block" #Dead Brain Coral Block +---| "minecraft:dead_brain_coral_fan" #Dead Brain Coral Fan +---| "minecraft:dead_bubble_coral" #Dead Bubble Coral +---| "minecraft:dead_bubble_coral_block" #Dead Bubble Coral Block +---| "minecraft:dead_bubble_coral_fan" #Dead Bubble Coral Fan +---| "minecraft:dead_bush" #Dead Bush +---| "minecraft:dead_fire_coral" #Dead Fire Coral +---| "minecraft:dead_fire_coral_block" #Dead Fire Coral Block +---| "minecraft:dead_fire_coral_fan" #Dead Fire Coral Fan +---| "minecraft:dead_horn_coral" #Dead Horn Coral +---| "minecraft:dead_horn_coral_block" #Dead Horn Coral Block +---| "minecraft:dead_horn_coral_fan" #Dead Horn Coral Fan +---| "minecraft:dead_tube_coral" #Dead Tube Coral +---| "minecraft:dead_tube_coral_block" #Dead Tube Coral Block +---| "minecraft:dead_tube_coral_fan" #Dead Tube Coral Fan +---| "minecraft:debug_stick" #Debug Stick +---| "minecraft:deepslate" #Deepslate +---| "minecraft:deepslate_brick_slab" #Deepslate Brick Slab +---| "minecraft:deepslate_brick_stairs" #Deepslate Brick Stairs +---| "minecraft:deepslate_brick_wall" #Deepslate Brick Wall +---| "minecraft:deepslate_bricks" #Deepslate Bricks +---| "minecraft:deepslate_coal_ore" #Deepslate Coal Ore +---| "minecraft:deepslate_copper_ore" #Deepslate Copper Ore +---| "minecraft:deepslate_diamond_ore" #Deepslate Diamond Ore +---| "minecraft:deepslate_emerald_ore" #Deepslate Emerald Ore +---| "minecraft:deepslate_gold_ore" #Deepslate Gold Ore +---| "minecraft:deepslate_iron_ore" #Deepslate Iron Ore +---| "minecraft:deepslate_lapis_ore" #Deepslate Lapis Lazuli Ore +---| "minecraft:deepslate_redstone_ore" #Deepslate Redstone Ore +---| "minecraft:deepslate_tile_slab" #Deepslate Tile Slab +---| "minecraft:deepslate_tile_stairs" #Deepslate Tile Stairs +---| "minecraft:deepslate_tile_wall" #Deepslate Tile Wall +---| "minecraft:deepslate_tiles" #Deepslate Tiles +---| "minecraft:detector_rail" #Detector Rail +---| "minecraft:diamond" #Diamond +---| "minecraft:diamond_axe" #Diamond Axe +---| "minecraft:diamond_block" #Block of Diamond +---| "minecraft:diamond_boots" #Diamond Boots +---| "minecraft:diamond_chestplate" #Diamond Chestplate +---| "minecraft:diamond_helmet" #Diamond Helmet +---| "minecraft:diamond_hoe" #Diamond Hoe +---| "minecraft:diamond_horse_armor" #Diamond Horse Armor +---| "minecraft:diamond_leggings" #Diamond Leggings +---| "minecraft:diamond_ore" #Diamond Ore +---| "minecraft:diamond_pickaxe" #Diamond Pickaxe +---| "minecraft:diamond_shovel" #Diamond Shovel +---| "minecraft:diamond_sword" #Diamond Sword +---| "minecraft:diorite" #Diorite +---| "minecraft:diorite_slab" #Diorite Slab +---| "minecraft:diorite_stairs" #Diorite Stairs +---| "minecraft:diorite_wall" #Diorite Wall +---| "minecraft:dirt" #Dirt +---| "minecraft:dirt_path" #Dirt Path +---| "minecraft:dispenser" #Dispenser +---| "minecraft:dolphin_spawn_egg" #Dolphin Spawn Egg +---| "minecraft:donkey_spawn_egg" #Donkey Spawn Egg +---| "minecraft:dragon_breath" #Dragon's Breath +---| "minecraft:dragon_egg" #Dragon Egg +---| "minecraft:dragon_head" #Dragon Head +---| "minecraft:dried_kelp" #Dried Kelp +---| "minecraft:dried_kelp_block" #Dried Kelp Block +---| "minecraft:dripstone_block" #Dripstone Block +---| "minecraft:dropper" #Dropper +---| "minecraft:drowned_spawn_egg" #Drowned Spawn Egg +---| "minecraft:egg" #Egg +---| "minecraft:elder_guardian_spawn_egg" #Elder Guardian Spawn Egg +---| "minecraft:elytra" #Elytra +---| "minecraft:emerald" #Emerald +---| "minecraft:emerald_block" #Block of Emerald +---| "minecraft:emerald_ore" #Emerald Ore +---| "minecraft:enchanted_book" #Enchanted Book +---| "minecraft:enchanted_golden_apple" #Enchanted Golden Apple +---| "minecraft:enchanting_table" #Enchanting Table +---| "minecraft:end_crystal" #End Crystal +---| "minecraft:end_portal_frame" #End Portal Frame +---| "minecraft:end_rod" #End Rod +---| "minecraft:end_stone" #End Stone +---| "minecraft:end_stone_brick_slab" #End Stone Brick Slab +---| "minecraft:end_stone_brick_stairs" #End Stone Brick Stairs +---| "minecraft:end_stone_brick_wall" #End Stone Brick Wall +---| "minecraft:end_stone_bricks" #End Stone Bricks +---| "minecraft:ender_chest" #Ender Chest +---| "minecraft:ender_eye" #Eye of Ender +---| "minecraft:ender_pearl" #Ender Pearl +---| "minecraft:enderman_spawn_egg" #Enderman Spawn Egg +---| "minecraft:endermite_spawn_egg" #Endermite Spawn Egg +---| "minecraft:evoker_spawn_egg" #Evoker Spawn Egg +---| "minecraft:experience_bottle" #Bottle o' Enchanting +---| "minecraft:exposed_copper" #Exposed Copper +---| "minecraft:exposed_cut_copper" #Exposed Cut Copper +---| "minecraft:exposed_cut_copper_slab" #Exposed Cut Copper Slab +---| "minecraft:exposed_cut_copper_stairs" #Exposed Cut Copper Stairs +---| "minecraft:farmland" #Farmland +---| "minecraft:feather" #Feather +---| "minecraft:fermented_spider_eye" #Fermented Spider Eye +---| "minecraft:fern" #Fern +---| "minecraft:filled_map" #Map +---| "minecraft:fire_charge" #Fire Charge +---| "minecraft:fire_coral" #Fire Coral +---| "minecraft:fire_coral_block" #Fire Coral Block +---| "minecraft:fire_coral_fan" #Fire Coral Fan +---| "minecraft:firework_rocket" #Firework Rocket +---| "minecraft:firework_star" #Firework Star +---| "minecraft:fishing_rod" #Fishing Rod +---| "minecraft:fletching_table" #Fletching Table +---| "minecraft:flint" #Flint +---| "minecraft:flint_and_steel" #Flint and Steel +---| "minecraft:flower_banner_pattern" #Banner Pattern (Flower Charge) +---| "minecraft:flower_pot" #Flower Pot +---| "minecraft:flowering_azalea" #Flowering Azalea +---| "minecraft:flowering_azalea_leaves" #Flowering Azalea Leaves +---| "minecraft:fox_spawn_egg" #Fox Spawn Egg +---| "minecraft:furnace" #Furnace +---| "minecraft:furnace_minecart" #Minecart with Furnace +---| "minecraft:ghast_spawn_egg" #Ghast Spawn Egg +---| "minecraft:ghast_tear" #Ghast Tear +---| "minecraft:gilded_blackstone" #Gilded Blackstone +---| "minecraft:glass" #Glass +---| "minecraft:glass_bottle" #Glass Bottle +---| "minecraft:glass_pane" #Glass Pane +---| "minecraft:glistering_melon_slice" #Glistering Melon Slice +---| "minecraft:globe_banner_pattern" #Banner Pattern (Globe) +---| "minecraft:glow_berries" #Glow Berries +---| "minecraft:glow_ink_sac" #Glow Ink Sac +---| "minecraft:glow_item_frame" #Glow Item Frame +---| "minecraft:glow_lichen" #Glow Lichen +---| "minecraft:glow_squid_spawn_egg" #Glow Squid Spawn Egg +---| "minecraft:glowstone" #Glowstone +---| "minecraft:glowstone_dust" #Glowstone Dust +---| "minecraft:goat_spawn_egg" #Goat Spawn Egg +---| "minecraft:gold_block" #Block of Gold +---| "minecraft:gold_ingot" #Gold Ingot +---| "minecraft:gold_nugget" #Gold Nugget +---| "minecraft:gold_ore" #Gold Ore +---| "minecraft:golden_apple" #Golden Apple +---| "minecraft:golden_axe" #Golden Axe +---| "minecraft:golden_boots" #Golden Boots +---| "minecraft:golden_carrot" #Golden Carrot +---| "minecraft:golden_chestplate" #Golden Chestplate +---| "minecraft:golden_helmet" #Golden Helmet +---| "minecraft:golden_hoe" #Golden Hoe +---| "minecraft:golden_horse_armor" #Golden Horse Armor +---| "minecraft:golden_leggings" #Golden Leggings +---| "minecraft:golden_pickaxe" #Golden Pickaxe +---| "minecraft:golden_shovel" #Golden Shovel +---| "minecraft:golden_sword" #Golden Sword +---| "minecraft:granite" #Granite +---| "minecraft:granite_slab" #Granite Slab +---| "minecraft:granite_stairs" #Granite Stairs +---| "minecraft:granite_wall" #Granite Wall +---| "minecraft:grass" #Grass +---| "minecraft:grass_block" #Grass Block +---| "minecraft:gravel" #Gravel +---| "minecraft:gray_banner" #Gray Banner +---| "minecraft:gray_bed" #Gray Bed +---| "minecraft:gray_candle" #Gray Candle +---| "minecraft:gray_carpet" #Gray Carpet +---| "minecraft:gray_concrete" #Gray Concrete +---| "minecraft:gray_concrete_powder" #Gray Concrete Powder +---| "minecraft:gray_dye" #Gray Dye +---| "minecraft:gray_glazed_terracotta" #Gray Glazed Terracotta +---| "minecraft:gray_shulker_box" #Gray Shulker Box +---| "minecraft:gray_stained_glass" #Gray Stained Glass +---| "minecraft:gray_stained_glass_pane" #Gray Stained Glass Pane +---| "minecraft:gray_terracotta" #Gray Terracotta +---| "minecraft:gray_wool" #Gray Wool +---| "minecraft:green_banner" #Green Banner +---| "minecraft:green_bed" #Green Bed +---| "minecraft:green_candle" #Green Candle +---| "minecraft:green_carpet" #Green Carpet +---| "minecraft:green_concrete" #Green Concrete +---| "minecraft:green_concrete_powder" #Green Concrete Powder +---| "minecraft:green_dye" #Green Dye +---| "minecraft:green_glazed_terracotta" #Green Glazed Terracotta +---| "minecraft:green_shulker_box" #Green Shulker Box +---| "minecraft:green_stained_glass" #Green Stained Glass +---| "minecraft:green_stained_glass_pane" #Green Stained Glass Pane +---| "minecraft:green_terracotta" #Green Terracotta +---| "minecraft:green_wool" #Green Wool +---| "minecraft:grindstone" #Grindstone +---| "minecraft:guardian_spawn_egg" #Guardian Spawn Egg +---| "minecraft:gunpowder" #Gunpowder +---| "minecraft:hanging_roots" #Hanging Roots +---| "minecraft:hay_block" #Hay Bale +---| "minecraft:heart_of_the_sea" #Heart of the Sea +---| "minecraft:heavy_weighted_pressure_plate" #Heavy Weighted Pressure Plate +---| "minecraft:hoglin_spawn_egg" #Hoglin Spawn Egg +---| "minecraft:honey_block" #Honey Block +---| "minecraft:honey_bottle" #Honey Bottle +---| "minecraft:honeycomb" #Honeycomb +---| "minecraft:honeycomb_block" #Honeycomb Block +---| "minecraft:hopper" #Hopper +---| "minecraft:hopper_minecart" #Minecart with Hopper +---| "minecraft:horn_coral" #Horn Coral +---| "minecraft:horn_coral_block" #Horn Coral Block +---| "minecraft:horn_coral_fan" #Horn Coral Fan +---| "minecraft:horse_spawn_egg" #Horse Spawn Egg +---| "minecraft:husk_spawn_egg" #Husk Spawn Egg +---| "minecraft:ice" #Ice +---| "minecraft:infested_chiseled_stone_bricks" #Infested Chiseled Stone Bricks +---| "minecraft:infested_cobblestone" #Infested Cobblestone +---| "minecraft:infested_cracked_stone_bricks" #Infested Cracked Stone Bricks +---| "minecraft:infested_deepslate" #Infested Deepslate +---| "minecraft:infested_mossy_stone_bricks" #Infested Mossy Stone Bricks +---| "minecraft:infested_stone" #Infested Stone +---| "minecraft:infested_stone_bricks" #Infested Stone Bricks +---| "minecraft:ink_sac" #Ink Sac +---| "minecraft:iron_axe" #Iron Axe +---| "minecraft:iron_bars" #Iron Bars +---| "minecraft:iron_block" #Block of Iron +---| "minecraft:iron_boots" #Iron Boots +---| "minecraft:iron_chestplate" #Iron Chestplate +---| "minecraft:iron_door" #Iron Door +---| "minecraft:iron_helmet" #Iron Helmet +---| "minecraft:iron_hoe" #Iron Hoe +---| "minecraft:iron_horse_armor" #Iron Horse Armor +---| "minecraft:iron_ingot" #Iron Ingot +---| "minecraft:iron_leggings" #Iron Leggings +---| "minecraft:iron_nugget" #Iron Nugget +---| "minecraft:iron_ore" #Iron Ore +---| "minecraft:iron_pickaxe" #Iron Pickaxe +---| "minecraft:iron_shovel" #Iron Shovel +---| "minecraft:iron_sword" #Iron Sword +---| "minecraft:iron_trapdoor" #Iron Trapdoor +---| "minecraft:item_frame" #Item Frame +---| "minecraft:jack_o_lantern" #Jack o'Lantern +---| "minecraft:jigsaw" #Jigsaw Block +---| "minecraft:jukebox" #Jukebox +---| "minecraft:jungle_boat" #Jungle Boat +---| "minecraft:jungle_button" #Jungle Button +---| "minecraft:jungle_door" #Jungle Door +---| "minecraft:jungle_fence" #Jungle Fence +---| "minecraft:jungle_fence_gate" #Jungle Fence Gate +---| "minecraft:jungle_leaves" #Jungle Leaves +---| "minecraft:jungle_log" #Jungle Log +---| "minecraft:jungle_planks" #Jungle Planks +---| "minecraft:jungle_pressure_plate" #Jungle Pressure Plate +---| "minecraft:jungle_sapling" #Jungle Sapling +---| "minecraft:jungle_sign" #Jungle Sign +---| "minecraft:jungle_slab" #Jungle Slab +---| "minecraft:jungle_stairs" #Jungle Stairs +---| "minecraft:jungle_trapdoor" #Jungle Trapdoor +---| "minecraft:jungle_wood" #Jungle Wood +---| "minecraft:kelp" #Kelp +---| "minecraft:knowledge_book" #Knowledge Book +---| "minecraft:ladder" #Ladder +---| "minecraft:lantern" #Lantern +---| "minecraft:lapis_block" #Block of Lapis Lazuli +---| "minecraft:lapis_lazuli" #Lapis Lazuli +---| "minecraft:lapis_ore" #Lapis Lazuli Ore +---| "minecraft:large_amethyst_bud" #Large Amethyst Bud +---| "minecraft:large_fern" #Large Fern +---| "minecraft:lava_bucket" #Lava Bucket +---| "minecraft:lead" #Lead +---| "minecraft:leather" #Leather +---| "minecraft:leather_boots" #Leather Boots +---| "minecraft:leather_chestplate" #Leather Tunic +---| "minecraft:leather_helmet" #Leather Cap +---| "minecraft:leather_horse_armor" #Leather Horse Armor +---| "minecraft:leather_leggings" #Leather Pants +---| "minecraft:lectern" #Lectern +---| "minecraft:lever" #Lever +---| "minecraft:light" #Light +---| "minecraft:light_blue_banner" #Light Blue Banner +---| "minecraft:light_blue_bed" #Light Blue Bed +---| "minecraft:light_blue_candle" #Light Blue Candle +---| "minecraft:light_blue_carpet" #Light Blue Carpet +---| "minecraft:light_blue_concrete" #Light Blue Concrete +---| "minecraft:light_blue_concrete_powder" #Light Blue Concrete Powder +---| "minecraft:light_blue_dye" #Light Blue Dye +---| "minecraft:light_blue_glazed_terracotta" #Light Blue Glazed Terracotta +---| "minecraft:light_blue_shulker_box" #Light Blue Shulker Box +---| "minecraft:light_blue_stained_glass" #Light Blue Stained Glass +---| "minecraft:light_blue_stained_glass_pane" #Light Blue Stained Glass Pane +---| "minecraft:light_blue_terracotta" #Light Blue Terracotta +---| "minecraft:light_blue_wool" #Light Blue Wool +---| "minecraft:light_gray_banner" #Light Gray Banner +---| "minecraft:light_gray_bed" #Light Gray Bed +---| "minecraft:light_gray_candle" #Light Gray Candle +---| "minecraft:light_gray_carpet" #Light Gray Carpet +---| "minecraft:light_gray_concrete" #Light Gray Concrete +---| "minecraft:light_gray_concrete_powder" #Light Gray Concrete Powder +---| "minecraft:light_gray_dye" #Light Gray Dye +---| "minecraft:light_gray_glazed_terracotta" #Light Gray Glazed Terracotta +---| "minecraft:light_gray_shulker_box" #Light Gray Shulker Box +---| "minecraft:light_gray_stained_glass" #Light Gray Stained Glass +---| "minecraft:light_gray_stained_glass_pane" #Light Gray Stained Glass Pane +---| "minecraft:light_gray_terracotta" #Light Gray Terracotta +---| "minecraft:light_gray_wool" #Light Gray Wool +---| "minecraft:light_weighted_pressure_plate" #Light Weighted Pressure Plate +---| "minecraft:lightning_rod" #Lightning Rod +---| "minecraft:lilac" #Lilac +---| "minecraft:lily_of_the_valley" #Lily of the Valley +---| "minecraft:lily_pad" #Lily Pad +---| "minecraft:lime_banner" #Lime Banner +---| "minecraft:lime_bed" #Lime Bed +---| "minecraft:lime_candle" #Lime Candle +---| "minecraft:lime_carpet" #Lime Carpet +---| "minecraft:lime_concrete" #Lime Concrete +---| "minecraft:lime_concrete_powder" #Lime Concrete Powder +---| "minecraft:lime_dye" #Lime Dye +---| "minecraft:lime_glazed_terracotta" #Lime Glazed Terracotta +---| "minecraft:lime_shulker_box" #Lime Shulker Box +---| "minecraft:lime_stained_glass" #Lime Stained Glass +---| "minecraft:lime_stained_glass_pane" #Lime Stained Glass Pane +---| "minecraft:lime_terracotta" #Lime Terracotta +---| "minecraft:lime_wool" #Lime Wool +---| "minecraft:lingering_potion" #Lingering Potion +---| "minecraft:llama_spawn_egg" #Llama Spawn Egg +---| "minecraft:lodestone" #Lodestone +---| "minecraft:loom" #Loom +---| "minecraft:magenta_banner" #Magenta Banner +---| "minecraft:magenta_bed" #Magenta Bed +---| "minecraft:magenta_candle" #Magenta Candle +---| "minecraft:magenta_carpet" #Magenta Carpet +---| "minecraft:magenta_concrete" #Magenta Concrete +---| "minecraft:magenta_concrete_powder" #Magenta Concrete Powder +---| "minecraft:magenta_dye" #Magenta Dye +---| "minecraft:magenta_glazed_terracotta" #Magenta Glazed Terracotta +---| "minecraft:magenta_shulker_box" #Magenta Shulker Box +---| "minecraft:magenta_stained_glass" #Magenta Stained Glass +---| "minecraft:magenta_stained_glass_pane" #Magenta Stained Glass Pane +---| "minecraft:magenta_terracotta" #Magenta Terracotta +---| "minecraft:magenta_wool" #Magenta Wool +---| "minecraft:magma_block" #Magma Block +---| "minecraft:magma_cream" #Magma Cream +---| "minecraft:magma_cube_spawn_egg" #Magma Cube Spawn Egg +---| "minecraft:map" #Empty Map +---| "minecraft:medium_amethyst_bud" #Medium Amethyst Bud +---| "minecraft:melon" #Melon +---| "minecraft:melon_seeds" #Melon Seeds +---| "minecraft:melon_slice" #Melon Slice +---| "minecraft:milk_bucket" #Milk Bucket +---| "minecraft:minecart" #Minecart +---| "minecraft:mojang_banner_pattern" #Banner Pattern (Thing) +---| "minecraft:mooshroom_spawn_egg" #Mooshroom Spawn Egg +---| "minecraft:moss_block" #Moss Block +---| "minecraft:moss_carpet" #Moss Carpet +---| "minecraft:mossy_cobblestone" #Mossy Cobblestone +---| "minecraft:mossy_cobblestone_slab" #Mossy Cobblestone Slab +---| "minecraft:mossy_cobblestone_stairs" #Mossy Cobblestone Stairs +---| "minecraft:mossy_cobblestone_wall" #Mossy Cobblestone Wall +---| "minecraft:mossy_stone_brick_slab" #Mossy Stone Brick Slab +---| "minecraft:mossy_stone_brick_stairs" #Mossy Stone Brick Stairs +---| "minecraft:mossy_stone_brick_wall" #Mossy Stone Brick Wall +---| "minecraft:mossy_stone_bricks" #Mossy Stone Bricks +---| "minecraft:mule_spawn_egg" #Mule Spawn Egg +---| "minecraft:mushroom_stem" #Mushroom Stem +---| "minecraft:mushroom_stew" #Mushroom Stew +---| "minecraft:music_disc_11" #Music Disc (11) +---| "minecraft:music_disc_13" #Music Disc (13) +---| "minecraft:music_disc_blocks" #Music Disc (blocks) +---| "minecraft:music_disc_cat" #Music Disc (cat) +---| "minecraft:music_disc_chirp" #Music Disc (chirp) +---| "minecraft:music_disc_far" #Music Disc (far) +---| "minecraft:music_disc_mall" #Music Disc (mall) +---| "minecraft:music_disc_mellohi" #Music Disc (mellohi) +---| "minecraft:music_disc_otherside" #Music Disc (otherside) +---| "minecraft:music_disc_pigstep" #Music Disc (Pigstep) +---| "minecraft:music_disc_stal" #Music Disc (stal) +---| "minecraft:music_disc_strad" #Music Disc (strad) +---| "minecraft:music_disc_wait" #Music Disc (wait) +---| "minecraft:music_disc_ward" #Music Disc (ward) +---| "minecraft:mutton" #Raw Mutton +---| "minecraft:mycelium" #Mycelium +---| "minecraft:name_tag" #Name Tag +---| "minecraft:nautilus_shell" #Nautilus Shell +---| "minecraft:nether_brick" #Nether Brick +---| "minecraft:nether_brick_fence" #Nether Brick Fence +---| "minecraft:nether_brick_slab" #Nether Brick Slab +---| "minecraft:nether_brick_stairs" #Nether Brick Stairs +---| "minecraft:nether_brick_wall" #Nether Brick Wall +---| "minecraft:nether_bricks" #Nether Bricks +---| "minecraft:nether_gold_ore" #Nether Gold Ore +---| "minecraft:nether_quartz_ore" #Nether Quartz Ore +---| "minecraft:nether_sprouts" #Nether Sprouts +---| "minecraft:nether_star" #Nether Star +---| "minecraft:nether_wart" #Nether Wart +---| "minecraft:nether_wart_block" #Nether Wart Block +---| "minecraft:netherite_axe" #Netherite Axe +---| "minecraft:netherite_block" #Block of Netherite +---| "minecraft:netherite_boots" #Netherite Boots +---| "minecraft:netherite_chestplate" #Netherite Chestplate +---| "minecraft:netherite_helmet" #Netherite Helmet +---| "minecraft:netherite_hoe" #Netherite Hoe +---| "minecraft:netherite_ingot" #Netherite Ingot +---| "minecraft:netherite_leggings" #Netherite Leggings +---| "minecraft:netherite_pickaxe" #Netherite Pickaxe +---| "minecraft:netherite_scrap" #Netherite Scrap +---| "minecraft:netherite_shovel" #Netherite Shovel +---| "minecraft:netherite_sword" #Netherite Sword +---| "minecraft:netherrack" #Netherrack +---| "minecraft:note_block" #Note Block +---| "minecraft:oak_boat" #Oak Boat +---| "minecraft:oak_button" #Oak Button +---| "minecraft:oak_door" #Oak Door +---| "minecraft:oak_fence" #Oak Fence +---| "minecraft:oak_fence_gate" #Oak Fence Gate +---| "minecraft:oak_leaves" #Oak Leaves +---| "minecraft:oak_log" #Oak Log +---| "minecraft:oak_planks" #Oak Planks +---| "minecraft:oak_pressure_plate" #Oak Pressure Plate +---| "minecraft:oak_sapling" #Oak Sapling +---| "minecraft:oak_sign" #Oak Sign +---| "minecraft:oak_slab" #Oak Slab +---| "minecraft:oak_stairs" #Oak Stairs +---| "minecraft:oak_trapdoor" #Oak Trapdoor +---| "minecraft:oak_wood" #Oak Wood +---| "minecraft:observer" #Observer +---| "minecraft:obsidian" #Obsidian +---| "minecraft:ocelot_spawn_egg" #Ocelot Spawn Egg +---| "minecraft:orange_banner" #Orange Banner +---| "minecraft:orange_bed" #Orange Bed +---| "minecraft:orange_candle" #Orange Candle +---| "minecraft:orange_carpet" #Orange Carpet +---| "minecraft:orange_concrete" #Orange Concrete +---| "minecraft:orange_concrete_powder" #Orange Concrete Powder +---| "minecraft:orange_dye" #Orange Dye +---| "minecraft:orange_glazed_terracotta" #Orange Glazed Terracotta +---| "minecraft:orange_shulker_box" #Orange Shulker Box +---| "minecraft:orange_stained_glass" #Orange Stained Glass +---| "minecraft:orange_stained_glass_pane" #Orange Stained Glass Pane +---| "minecraft:orange_terracotta" #Orange Terracotta +---| "minecraft:orange_tulip" #Orange Tulip +---| "minecraft:orange_wool" #Orange Wool +---| "minecraft:oxeye_daisy" #Oxeye Daisy +---| "minecraft:oxidized_copper" #Oxidized Copper +---| "minecraft:oxidized_cut_copper" #Oxidized Cut Copper +---| "minecraft:oxidized_cut_copper_slab" #Oxidized Cut Copper Slab +---| "minecraft:oxidized_cut_copper_stairs" #Oxidized Cut Copper Stairs +---| "minecraft:packed_ice" #Packed Ice +---| "minecraft:painting" #Painting +---| "minecraft:panda_spawn_egg" #Panda Spawn Egg +---| "minecraft:paper" #Paper +---| "minecraft:parrot_spawn_egg" #Parrot Spawn Egg +---| "minecraft:peony" #Peony +---| "minecraft:petrified_oak_slab" #Petrified Oak Slab +---| "minecraft:phantom_membrane" #Phantom Membrane +---| "minecraft:phantom_spawn_egg" #Phantom Spawn Egg +---| "minecraft:pig_spawn_egg" #Pig Spawn Egg +---| "minecraft:piglin_brute_spawn_egg" #Piglin Brute Spawn Egg +---| "minecraft:piglin_spawn_egg" #Piglin Spawn Egg +---| "minecraft:pillager_spawn_egg" #Pillager Spawn Egg +---| "minecraft:pink_banner" #Pink Banner +---| "minecraft:pink_bed" #Pink Bed +---| "minecraft:pink_candle" #Pink Candle +---| "minecraft:pink_carpet" #Pink Carpet +---| "minecraft:pink_concrete" #Pink Concrete +---| "minecraft:pink_concrete_powder" #Pink Concrete Powder +---| "minecraft:pink_dye" #Pink Dye +---| "minecraft:pink_glazed_terracotta" #Pink Glazed Terracotta +---| "minecraft:pink_shulker_box" #Pink Shulker Box +---| "minecraft:pink_stained_glass" #Pink Stained Glass +---| "minecraft:pink_stained_glass_pane" #Pink Stained Glass Pane +---| "minecraft:pink_terracotta" #Pink Terracotta +---| "minecraft:pink_tulip" #Pink Tulip +---| "minecraft:pink_wool" #Pink Wool +---| "minecraft:piston" #Piston +---| "minecraft:player_head" #Player Head +---| "minecraft:podzol" #Podzol +---| "minecraft:pointed_dripstone" #Pointed Dripstone +---| "minecraft:poisonous_potato" #Poisonous Potato +---| "minecraft:polar_bear_spawn_egg" #Polar Bear Spawn Egg +---| "minecraft:polished_andesite" #Polished Andesite +---| "minecraft:polished_andesite_slab" #Polished Andesite Slab +---| "minecraft:polished_andesite_stairs" #Polished Andesite Stairs +---| "minecraft:polished_basalt" #Polished Basalt +---| "minecraft:polished_blackstone" #Polished Blackstone +---| "minecraft:polished_blackstone_brick_slab" #Polished Blackstone Brick Slab +---| "minecraft:polished_blackstone_brick_stairs" #Polished Blackstone Brick Stairs +---| "minecraft:polished_blackstone_brick_wall" #Polished Blackstone Brick Wall +---| "minecraft:polished_blackstone_bricks" #Polished Blackstone Bricks +---| "minecraft:polished_blackstone_button" #Polished Blackstone Button +---| "minecraft:polished_blackstone_pressure_plate" #Polished Blackstone Pressure Plate +---| "minecraft:polished_blackstone_slab" #Polished Blackstone Slab +---| "minecraft:polished_blackstone_stairs" #Polished Blackstone Stairs +---| "minecraft:polished_blackstone_wall" #Polished Blackstone Wall +---| "minecraft:polished_deepslate" #Polished Deepslate +---| "minecraft:polished_deepslate_slab" #Polished Deepslate Slab +---| "minecraft:polished_deepslate_stairs" #Polished Deepslate Stairs +---| "minecraft:polished_deepslate_wall" #Polished Deepslate Wall +---| "minecraft:polished_diorite" #Polished Diorite +---| "minecraft:polished_diorite_slab" #Polished Diorite Slab +---| "minecraft:polished_diorite_stairs" #Polished Diorite Stairs +---| "minecraft:polished_granite" #Polished Granite +---| "minecraft:polished_granite_slab" #Polished Granite Slab +---| "minecraft:polished_granite_stairs" #Polished Granite Stairs +---| "minecraft:popped_chorus_fruit" #Popped Chorus Fruit +---| "minecraft:poppy" #Poppy +---| "minecraft:porkchop" #Raw Porkchop +---| "minecraft:potato" #Potato +---| "minecraft:potion" #Potion +---| "minecraft:powder_snow_bucket" #Powder Snow Bucket +---| "minecraft:powered_rail" #Powered Rail +---| "minecraft:prismarine" #Prismarine +---| "minecraft:prismarine_brick_slab" #Prismarine Brick Slab +---| "minecraft:prismarine_brick_stairs" #Prismarine Brick Stairs +---| "minecraft:prismarine_bricks" #Prismarine Bricks +---| "minecraft:prismarine_crystals" #Prismarine Crystals +---| "minecraft:prismarine_shard" #Prismarine Shard +---| "minecraft:prismarine_slab" #Prismarine Slab +---| "minecraft:prismarine_stairs" #Prismarine Stairs +---| "minecraft:prismarine_wall" #Prismarine Wall +---| "minecraft:pufferfish" #Pufferfish +---| "minecraft:pufferfish_bucket" #Bucket of Pufferfish +---| "minecraft:pufferfish_spawn_egg" #Pufferfish Spawn Egg +---| "minecraft:pumpkin" #Pumpkin +---| "minecraft:pumpkin_pie" #Pumpkin Pie +---| "minecraft:pumpkin_seeds" #Pumpkin Seeds +---| "minecraft:purple_banner" #Purple Banner +---| "minecraft:purple_bed" #Purple Bed +---| "minecraft:purple_candle" #Purple Candle +---| "minecraft:purple_carpet" #Purple Carpet +---| "minecraft:purple_concrete" #Purple Concrete +---| "minecraft:purple_concrete_powder" #Purple Concrete Powder +---| "minecraft:purple_dye" #Purple Dye +---| "minecraft:purple_glazed_terracotta" #Purple Glazed Terracotta +---| "minecraft:purple_shulker_box" #Purple Shulker Box +---| "minecraft:purple_stained_glass" #Purple Stained Glass +---| "minecraft:purple_stained_glass_pane" #Purple Stained Glass Pane +---| "minecraft:purple_terracotta" #Purple Terracotta +---| "minecraft:purple_wool" #Purple Wool +---| "minecraft:purpur_block" #Purpur Block +---| "minecraft:purpur_pillar" #Purpur Pillar +---| "minecraft:purpur_slab" #Purpur Slab +---| "minecraft:purpur_stairs" #Purpur Stairs +---| "minecraft:quartz" #Nether Quartz +---| "minecraft:quartz_block" #Block of Quartz +---| "minecraft:quartz_bricks" #Quartz Bricks +---| "minecraft:quartz_pillar" #Quartz Pillar +---| "minecraft:quartz_slab" #Quartz Slab +---| "minecraft:quartz_stairs" #Quartz Stairs +---| "minecraft:rabbit" #Raw Rabbit +---| "minecraft:rabbit_foot" #Rabbit's Foot +---| "minecraft:rabbit_hide" #Rabbit Hide +---| "minecraft:rabbit_spawn_egg" #Rabbit Spawn Egg +---| "minecraft:rabbit_stew" #Rabbit Stew +---| "minecraft:rail" #Rail +---| "minecraft:ravager_spawn_egg" #Ravager Spawn Egg +---| "minecraft:raw_copper" #Raw Copper +---| "minecraft:raw_copper_block" #Block of Raw Copper +---| "minecraft:raw_gold" #Raw Gold +---| "minecraft:raw_gold_block" #Block of Raw Gold +---| "minecraft:raw_iron" #Raw Iron +---| "minecraft:raw_iron_block" #Block of Raw Iron +---| "minecraft:red_banner" #Red Banner +---| "minecraft:red_bed" #Red Bed +---| "minecraft:red_candle" #Red Candle +---| "minecraft:red_carpet" #Red Carpet +---| "minecraft:red_concrete" #Red Concrete +---| "minecraft:red_concrete_powder" #Red Concrete Powder +---| "minecraft:red_dye" #Red Dye +---| "minecraft:red_glazed_terracotta" #Red Glazed Terracotta +---| "minecraft:red_mushroom" #Red Mushroom +---| "minecraft:red_mushroom_block" #Red Mushroom Block +---| "minecraft:red_nether_brick_slab" #Red Nether Brick Slab +---| "minecraft:red_nether_brick_stairs" #Red Nether Brick Stairs +---| "minecraft:red_nether_brick_wall" #Red Nether Brick Wall +---| "minecraft:red_nether_bricks" #Red Nether Bricks +---| "minecraft:red_sand" #Red Sand +---| "minecraft:red_sandstone" #Red Sandstone +---| "minecraft:red_sandstone_slab" #Red Sandstone Slab +---| "minecraft:red_sandstone_stairs" #Red Sandstone Stairs +---| "minecraft:red_sandstone_wall" #Red Sandstone Wall +---| "minecraft:red_shulker_box" #Red Shulker Box +---| "minecraft:red_stained_glass" #Red Stained Glass +---| "minecraft:red_stained_glass_pane" #Red Stained Glass Pane +---| "minecraft:red_terracotta" #Red Terracotta +---| "minecraft:red_tulip" #Red Tulip +---| "minecraft:red_wool" #Red Wool +---| "minecraft:redstone" #Redstone Dust +---| "minecraft:redstone_block" #Block of Redstone +---| "minecraft:redstone_lamp" #Redstone Lamp +---| "minecraft:redstone_ore" #Redstone Ore +---| "minecraft:redstone_torch" #Redstone Torch +---| "minecraft:repeater" #Redstone Repeater +---| "minecraft:repeating_command_block" #Repeating Command Block +---| "minecraft:respawn_anchor" #Respawn Anchor +---| "minecraft:rooted_dirt" #Rooted Dirt +---| "minecraft:rose_bush" #Rose Bush +---| "minecraft:rotten_flesh" #Rotten Flesh +---| "minecraft:saddle" #Saddle +---| "minecraft:salmon" #Raw Salmon +---| "minecraft:salmon_bucket" #Bucket of Salmon +---| "minecraft:salmon_spawn_egg" #Salmon Spawn Egg +---| "minecraft:sand" #Sand +---| "minecraft:sandstone" #Sandstone +---| "minecraft:sandstone_slab" #Sandstone Slab +---| "minecraft:sandstone_stairs" #Sandstone Stairs +---| "minecraft:sandstone_wall" #Sandstone Wall +---| "minecraft:scaffolding" #Scaffolding +---| "minecraft:sculk_sensor" #Sculk Sensor +---| "minecraft:scute" #Scute +---| "minecraft:sea_lantern" #Sea Lantern +---| "minecraft:sea_pickle" #Sea Pickle +---| "minecraft:seagrass" #Seagrass +---| "minecraft:shears" #Shears +---| "minecraft:sheep_spawn_egg" #Sheep Spawn Egg +---| "minecraft:shield" #Shield +---| "minecraft:shroomlight" #Shroomlight +---| "minecraft:shulker_box" #Shulker Box +---| "minecraft:shulker_shell" #Shulker Shell +---| "minecraft:shulker_spawn_egg" #Shulker Spawn Egg +---| "minecraft:silverfish_spawn_egg" #Silverfish Spawn Egg +---| "minecraft:skeleton_horse_spawn_egg" #Skeleton Horse Spawn Egg +---| "minecraft:skeleton_skull" #Skeleton Skull +---| "minecraft:skeleton_spawn_egg" #Skeleton Spawn Egg +---| "minecraft:skull_banner_pattern" #Banner Pattern (Skull Charge) +---| "minecraft:slime_ball" #Slimeball +---| "minecraft:slime_block" #Slime Block +---| "minecraft:slime_spawn_egg" #Slime Spawn Egg +---| "minecraft:small_amethyst_bud" #Small Amethyst Bud +---| "minecraft:small_dripleaf" #Small Dripleaf +---| "minecraft:smithing_table" #Smithing Table +---| "minecraft:smoker" #Smoker +---| "minecraft:smooth_basalt" #Smooth Basalt +---| "minecraft:smooth_quartz" #Smooth Quartz Block +---| "minecraft:smooth_quartz_slab" #Smooth Quartz Slab +---| "minecraft:smooth_quartz_stairs" #Smooth Quartz Stairs +---| "minecraft:smooth_red_sandstone" #Smooth Red Sandstone +---| "minecraft:smooth_red_sandstone_slab" #Smooth Red Sandstone Slab +---| "minecraft:smooth_red_sandstone_stairs" #Smooth Red Sandstone Stairs +---| "minecraft:smooth_sandstone" #Smooth Sandstone +---| "minecraft:smooth_sandstone_slab" #Smooth Sandstone Slab +---| "minecraft:smooth_sandstone_stairs" #Smooth Sandstone Stairs +---| "minecraft:smooth_stone" #Smooth Stone +---| "minecraft:smooth_stone_slab" #Smooth Stone Slab +---| "minecraft:snow" #Snow +---| "minecraft:snow_block" #Snow Block +---| "minecraft:snowball" #Snowball +---| "minecraft:soul_campfire" #Soul Campfire +---| "minecraft:soul_lantern" #Soul Lantern +---| "minecraft:soul_sand" #Soul Sand +---| "minecraft:soul_soil" #Soul Soil +---| "minecraft:soul_torch" #Soul Torch +---| "minecraft:spawner" #Spawner +---| "minecraft:spectral_arrow" #Spectral Arrow +---| "minecraft:spider_eye" #Spider Eye +---| "minecraft:spider_spawn_egg" #Spider Spawn Egg +---| "minecraft:splash_potion" #Splash Potion +---| "minecraft:sponge" #Sponge +---| "minecraft:spore_blossom" #Spore Blossom +---| "minecraft:spruce_boat" #Spruce Boat +---| "minecraft:spruce_button" #Spruce Button +---| "minecraft:spruce_door" #Spruce Door +---| "minecraft:spruce_fence" #Spruce Fence +---| "minecraft:spruce_fence_gate" #Spruce Fence Gate +---| "minecraft:spruce_leaves" #Spruce Leaves +---| "minecraft:spruce_log" #Spruce Log +---| "minecraft:spruce_planks" #Spruce Planks +---| "minecraft:spruce_pressure_plate" #Spruce Pressure Plate +---| "minecraft:spruce_sapling" #Spruce Sapling +---| "minecraft:spruce_sign" #Spruce Sign +---| "minecraft:spruce_slab" #Spruce Slab +---| "minecraft:spruce_stairs" #Spruce Stairs +---| "minecraft:spruce_trapdoor" #Spruce Trapdoor +---| "minecraft:spruce_wood" #Spruce Wood +---| "minecraft:spyglass" #Spyglass +---| "minecraft:squid_spawn_egg" #Squid Spawn Egg +---| "minecraft:stick" #Stick +---| "minecraft:sticky_piston" #Sticky Piston +---| "minecraft:stone" #Stone +---| "minecraft:stone_axe" #Stone Axe +---| "minecraft:stone_brick_slab" #Stone Brick Slab +---| "minecraft:stone_brick_stairs" #Stone Brick Stairs +---| "minecraft:stone_brick_wall" #Stone Brick Wall +---| "minecraft:stone_bricks" #Stone Bricks +---| "minecraft:stone_button" #Stone Button +---| "minecraft:stone_hoe" #Stone Hoe +---| "minecraft:stone_pickaxe" #Stone Pickaxe +---| "minecraft:stone_pressure_plate" #Stone Pressure Plate +---| "minecraft:stone_shovel" #Stone Shovel +---| "minecraft:stone_slab" #Stone Slab +---| "minecraft:stone_stairs" #Stone Stairs +---| "minecraft:stone_sword" #Stone Sword +---| "minecraft:stonecutter" #Stonecutter +---| "minecraft:stray_spawn_egg" #Stray Spawn Egg +---| "minecraft:strider_spawn_egg" #Strider Spawn Egg +---| "minecraft:string" #String +---| "minecraft:stripped_acacia_log" #Stripped Acacia Log +---| "minecraft:stripped_acacia_wood" #Stripped Acacia Wood +---| "minecraft:stripped_birch_log" #Stripped Birch Log +---| "minecraft:stripped_birch_wood" #Stripped Birch Wood +---| "minecraft:stripped_crimson_hyphae" #Stripped Crimson Hyphae +---| "minecraft:stripped_crimson_stem" #Stripped Crimson Stem +---| "minecraft:stripped_dark_oak_log" #Stripped Dark Oak Log +---| "minecraft:stripped_dark_oak_wood" #Stripped Dark Oak Wood +---| "minecraft:stripped_jungle_log" #Stripped Jungle Log +---| "minecraft:stripped_jungle_wood" #Stripped Jungle Wood +---| "minecraft:stripped_oak_log" #Stripped Oak Log +---| "minecraft:stripped_oak_wood" #Stripped Oak Wood +---| "minecraft:stripped_spruce_log" #Stripped Spruce Log +---| "minecraft:stripped_spruce_wood" #Stripped Spruce Wood +---| "minecraft:stripped_warped_hyphae" #Stripped Warped Hyphae +---| "minecraft:stripped_warped_stem" #Stripped Warped Stem +---| "minecraft:structure_block" #Structure Block +---| "minecraft:structure_void" #Structure Void +---| "minecraft:sugar" #Sugar +---| "minecraft:sugar_cane" #Sugar Cane +---| "minecraft:sunflower" #Sunflower +---| "minecraft:suspicious_stew" #Suspicious Stew +---| "minecraft:sweet_berries" #Sweet Berries +---| "minecraft:tall_grass" #Tall Grass +---| "minecraft:target" #Target +---| "minecraft:terracotta" #Terracotta +---| "minecraft:tinted_glass" #Tinted Glass +---| "minecraft:tipped_arrow" #Tipped Arrow +---| "minecraft:tnt" #TNT +---| "minecraft:tnt_minecart" #Minecart with TNT +---| "minecraft:torch" #Torch +---| "minecraft:totem_of_undying" #Totem of Undying +---| "minecraft:trader_llama_spawn_egg" #Trader Llama Spawn Egg +---| "minecraft:trapped_chest" #Trapped Chest +---| "minecraft:trident" #Trident +---| "minecraft:tripwire_hook" #Tripwire Hook +---| "minecraft:tropical_fish" #Tropical Fish +---| "minecraft:tropical_fish_bucket" #Bucket of Tropical Fish +---| "minecraft:tropical_fish_spawn_egg" #Tropical Fish Spawn Egg +---| "minecraft:tube_coral" #Tube Coral +---| "minecraft:tube_coral_block" #Tube Coral Block +---| "minecraft:tube_coral_fan" #Tube Coral Fan +---| "minecraft:tuff" #Tuff +---| "minecraft:turtle_egg" #Turtle Egg +---| "minecraft:turtle_helmet" #Turtle Shell +---| "minecraft:turtle_spawn_egg" #Turtle Spawn Egg +---| "minecraft:twisting_vines" #Twisting Vines +---| "minecraft:vex_spawn_egg" #Vex Spawn Egg +---| "minecraft:villager_spawn_egg" #Villager Spawn Egg +---| "minecraft:vindicator_spawn_egg" #Vindicator Spawn Egg +---| "minecraft:vine" #Vines +---| "minecraft:wandering_trader_spawn_egg" #Wandering Trader Spawn Egg +---| "minecraft:warped_button" #Warped Button +---| "minecraft:warped_door" #Warped Door +---| "minecraft:warped_fence" #Warped Fence +---| "minecraft:warped_fence_gate" #Warped Fence Gate +---| "minecraft:warped_fungus" #Warped Fungus +---| "minecraft:warped_fungus_on_a_stick" #Warped Fungus on a Stick +---| "minecraft:warped_hyphae" #Warped Hyphae +---| "minecraft:warped_nylium" #Warped Nylium +---| "minecraft:warped_planks" #Warped Planks +---| "minecraft:warped_pressure_plate" #Warped Pressure Plate +---| "minecraft:warped_roots" #Warped Roots +---| "minecraft:warped_sign" #Warped Sign +---| "minecraft:warped_slab" #Warped Slab +---| "minecraft:warped_stairs" #Warped Stairs +---| "minecraft:warped_stem" #Warped Stem +---| "minecraft:warped_trapdoor" #Warped Trapdoor +---| "minecraft:warped_wart_block" #Warped Wart Block +---| "minecraft:water_bucket" #Water Bucket +---| "minecraft:waxed_copper_block" #Waxed Block of Copper +---| "minecraft:waxed_cut_copper" #Waxed Cut Copper +---| "minecraft:waxed_cut_copper_slab" #Waxed Cut Copper Slab +---| "minecraft:waxed_cut_copper_stairs" #Waxed Cut Copper Stairs +---| "minecraft:waxed_exposed_copper" #Waxed Exposed Copper +---| "minecraft:waxed_exposed_cut_copper" #Waxed Exposed Cut Copper +---| "minecraft:waxed_exposed_cut_copper_slab" #Waxed Exposed Cut Copper Slab +---| "minecraft:waxed_exposed_cut_copper_stairs" #Waxed Exposed Cut Copper Stairs +---| "minecraft:waxed_oxidized_copper" #Waxed Oxidized Copper +---| "minecraft:waxed_oxidized_cut_copper" #Waxed Oxidized Cut Copper +---| "minecraft:waxed_oxidized_cut_copper_slab" #Waxed Oxidized Cut Copper Slab +---| "minecraft:waxed_oxidized_cut_copper_stairs" #Waxed Oxidized Cut Copper Stairs +---| "minecraft:waxed_weathered_copper" #Waxed Weathered Copper +---| "minecraft:waxed_weathered_cut_copper" #Waxed Weathered Cut Copper +---| "minecraft:waxed_weathered_cut_copper_slab" #Waxed Weathered Cut Copper Slab +---| "minecraft:waxed_weathered_cut_copper_stairs" #Waxed Weathered Cut Copper Stairs +---| "minecraft:weathered_copper" #Weathered Copper +---| "minecraft:weathered_cut_copper" #Weathered Cut Copper +---| "minecraft:weathered_cut_copper_slab" #Weathered Cut Copper Slab +---| "minecraft:weathered_cut_copper_stairs" #Weathered Cut Copper Stairs +---| "minecraft:weeping_vines" #Weeping Vines +---| "minecraft:wet_sponge" #Wet Sponge +---| "minecraft:wheat" #Wheat +---| "minecraft:wheat_seeds" #Wheat Seeds +---| "minecraft:white_banner" #White Banner +---| "minecraft:white_bed" #White Bed +---| "minecraft:white_candle" #White Candle +---| "minecraft:white_carpet" #White Carpet +---| "minecraft:white_concrete" #White Concrete +---| "minecraft:white_concrete_powder" #White Concrete Powder +---| "minecraft:white_dye" #White Dye +---| "minecraft:white_glazed_terracotta" #White Glazed Terracotta +---| "minecraft:white_shulker_box" #White Shulker Box +---| "minecraft:white_stained_glass" #White Stained Glass +---| "minecraft:white_stained_glass_pane" #White Stained Glass Pane +---| "minecraft:white_terracotta" #White Terracotta +---| "minecraft:white_tulip" #White Tulip +---| "minecraft:white_wool" #White Wool +---| "minecraft:witch_spawn_egg" #Witch Spawn Egg +---| "minecraft:wither_rose" #Wither Rose +---| "minecraft:wither_skeleton_skull" #Wither Skeleton Skull +---| "minecraft:wither_skeleton_spawn_egg" #Wither Skeleton Spawn Egg +---| "minecraft:wolf_spawn_egg" #Wolf Spawn Egg +---| "minecraft:wooden_axe" #Wooden Axe +---| "minecraft:wooden_hoe" #Wooden Hoe +---| "minecraft:wooden_pickaxe" #Wooden Pickaxe +---| "minecraft:wooden_shovel" #Wooden Shovel +---| "minecraft:wooden_sword" #Wooden Sword +---| "minecraft:writable_book" #Book and Quill +---| "minecraft:written_book" #Written Book +---| "minecraft:yellow_banner" #Yellow Banner +---| "minecraft:yellow_bed" #Yellow Bed +---| "minecraft:yellow_candle" #Yellow Candle +---| "minecraft:yellow_carpet" #Yellow Carpet +---| "minecraft:yellow_concrete" #Yellow Concrete +---| "minecraft:yellow_concrete_powder" #Yellow Concrete Powder +---| "minecraft:yellow_dye" #Yellow Dye +---| "minecraft:yellow_glazed_terracotta" #Yellow Glazed Terracotta +---| "minecraft:yellow_shulker_box" #Yellow Shulker Box +---| "minecraft:yellow_stained_glass" #Yellow Stained Glass +---| "minecraft:yellow_stained_glass_pane" #Yellow Stained Glass Pane +---| "minecraft:yellow_terracotta" #Yellow Terracotta +---| "minecraft:yellow_wool" #Yellow Wool +---| "minecraft:zoglin_spawn_egg" #Zoglin Spawn Egg +---| "minecraft:zombie_head" #Zombie Head +---| "minecraft:zombie_horse_spawn_egg" #Zombie Horse Spawn Egg +---| "minecraft:zombie_spawn_egg" #Zombie Spawn Egg +---| "minecraft:zombie_villager_spawn_egg" #Zombie Villager Spawn Egg +---| "minecraft:zombified_piglin_spawn_egg" #Zombified Piglin Spawn Egg + +---@alias ItemRarity +---| "COMMON" +---| "UNCOMMON" +---| "RARE" +---| "EPIC" + +---@alias ItemUseAction +---| "NONE" +---| "EAT" +---| "DRINK" #includes splash potions +---| "BOW" +---| "CROSSBOW" +---| "BLOCK" #shield +---| "SPEAR" +---| "SPYGLASS" + +---An Item Stack. +--- +---See `item_stack.createItem` for more info. +---@class ItemStack +---Meant for internal use. Has no purpose in Lua. +---@deprecated +---@field ["figura$item_stack"] userdata +local ItemStack = {} + +---Returns the item's cooldown. +---@return number +function ItemStack.getCooldown() end + +---Returns the amount of items in the stack. +---@return number +function ItemStack.getCount() end + +---Returns the damage value of the item. +---@return number +function ItemStack.getDamage() end + +---Returns a list of item tags that contain this item. +---Item tags are assigned by datapacks. +---@return string[] +function ItemStack.getItemTags() end + +---Returns the amount of levels added on top of the normal cost to work with this item in an anvil. +---This will be equal to `2^ANVIL_USES - 1`. +---@return number +function ItemStack.getRepairCost() end + +---Returns the max stack size of this item type. +---@return number +function ItemStack.getMaxCount() end + +---Returns the maximum durability of the item. +---@return number +function ItemStack.getMaxDamage() end + +---Returns the amount of time needed to spend before the item is completely used. +---@return number +function ItemStack.getMaxUseTime() end + +---Returns the item name. +---@return string +function ItemStack.getName() end + +---Returns the rarity of the item. +---Vanilla currently only uses "COMMON","UNCOMMON","RARE", and "EPIC" +---@return ItemRarity +function ItemStack.getRarity() end + +---Returns the item's NBT tag as a Lua `table`, returns `nil` if there is no tag. +---All keys are in lowercase. +---@return table? +function ItemStack.getTag() end + +---Returns the item's ID. +---@return string +function ItemStack.getType() end + +---Returns the type of action using this item will cause. +---@return ItemUseAction +function ItemStack.getUseAction() end + +---Returns if the item has an enchantment glint. +---@return boolean +function ItemStack.hasGlint() end + +---Returns if the item has a block form. +---@return boolean +function ItemStack.isBlockItem() end + +---Returns if the item can take durability damage. +---@return boolean +function ItemStack.isDamageable() end + +---Returns if the item is able to be enchanted in an enchanting table or anvil. +---@return boolean +function ItemStack.isEnchantable() end + +---Returns if the item is edible. +---@return boolean +function ItemStack.isFood() end + +---Returns if the item can have a stack size greater than 1. +---@return boolean +function ItemStack.isStackable() end + +---Sets the amount of items in the stack. +---@param count number +function ItemStack.setCount(count) end + +---Sets the damage value of the item. +---@param damage number +function ItemStack.setDamage(damage) end + +---Sets the NBT tag of an `ItemStack`. +--- +---Note: NBT is in [SNBT format](https://minecraft.fandom.com/wiki/NBT_format#SNBT_format). +---@param snbt string +function ItemStack.setTag(snbt) end + +---Returns the ItemStack as a string formatted as a vanilla item. +---@return string +function ItemStack.toStackString() end + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains a function for creating `ItemStack`s. +item_stack = {} + +---Creates an item stack. +--- +---Note: NBT is in [SNBT format](https://minecraft.fandom.com/wiki/NBT_format#SNBT_format). +---@param item ItemID +---@param snbt? string +---@return ItemStack +function item_stack.createItem(item, snbt) end diff --git a/.vscode/figura/keybind.lua b/.vscode/figura/keybind.lua new file mode 100644 index 0000000..347952e --- /dev/null +++ b/.vscode/figura/keybind.lua @@ -0,0 +1,250 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A button on the keyboard or mouse. +---@alias Key +---| "0" +---| "1" +---| "2" +---| "3" +---| "4" +---| "5" +---| "6" +---| "7" +---| "8" +---| "9" +---| "A" +---| "B" +---| "C" +---| "D" +---| "E" +---| "F" +---| "G" +---| "H" +---| "I" +---| "J" +---| "K" +---| "L" +---| "M" +---| "N" +---| "O" +---| "P" +---| "Q" +---| "R" +---| "S" +---| "T" +---| "U" +---| "V" +---| "W" +---| "X" +---| "Y" +---| "Z" +---| "RIGHT" +---| "LEFT" +---| "DOWN" +---| "UP" +---| "F1" +---| "F2" +---| "F3" +---| "F4" +---| "F5" +---| "F6" +---| "F7" +---| "F8" +---| "F9" +---| "F10" +---| "F11" +---| "F12" +---| "F13" +---| "F14" +---| "F15" +---| "F16" +---| "F17" +---| "F18" +---| "F19" +---| "F20" +---| "F21" +---| "F22" +---| "F23" +---| "F24" +---| "F25" +---| "KP_0" +---| "KP_1" +---| "KP_2" +---| "KP_3" +---| "KP_4" +---| "KP_5" +---| "KP_6" +---| "KP_7" +---| "KP_8" +---| "KP_9" +---| "KP_MULTIPLY" +---| "KP_DIVIDE" +---| "KP_SUBTRACT" +---| "KP_ADD" +---| "KP_DECIMAL" +---| "KP_ENTER" +---| "KP_EQUAL" +---| "MOUSE_BUTTON_1" +---| "MOUSE_BUTTON_2" +---| "MOUSE_BUTTON_3" +---| "MOUSE_BUTTON_4" +---| "MOUSE_BUTTON_5" +---| "MOUSE_BUTTON_6" +---| "MOUSE_BUTTON_7" +---| "MOUSE_BUTTON_8" +---| "SPACE" +---| "APOSTROPHE" +---| "GRAVE_ACCENT" +---| "_" +---| "COMMA" +---| "MINUS" +---| "PERIOD" +---| "SLASH" +---| "SEMICOLON" +---| "EQUAL" +---| "BACKSLASH" +---| "LEFT_BRACKET" +---| "RIGHT_BRACKET" +---| "UNKNOWN" +---| "PAGE_UP" +---| "PAGE_DOWN" +---| "END" +---| "CAPS_LOCK" +---| "SCROLL_LOCK" +---| "NUM_LOCK" +---| "PAUSE" +---| "WORLD_1" +---| "WORLD_2" +---| "ESCAPE" +---| "ENTER" +---| "TAB" +---| "BACKSPACE" +---| "PRINT_SCREEN" +---| "LEFT_SHIFT" +---| "LEFT_CONTROL" +---| "LEFT_ALT" +---| "LEFT_SUPER" +---| "RIGHT_SHIFT" +---| "RIGHT_CONTROL" +---| "RIGHT_ALT" +---| "RIGHT_SUPER" +---| "MENU" +---| "INSERT" +---| "DELETE" +---| "HOME" + +---A keybind registered by Minecraft or a mod. +---This value is not limited to keybinds registered by Minecraft, any keybind registered by a mod +---will also work (but will not be auto-completed here.) +---@alias MinecraftKeybind +---| "key.jump" #Movement: Jump +---| "key.sneak" #Movement: Sneak +---| "key.sprint" #Movement: Sprint +---| "key.left" #Movement: Strafe Left +---| "key.right" #Movement: Strafe Right +---| "key.back" #Movement: Walk Backwards +---| "key.forward" #Movement: Walk Forwards +---| "key.attack" #Gameplay: Attack/Destroy +---| "key.pickItem" #Gameplay: Pick Block +---| "key.use" #Gameplay: Use Item/Place Block +---| "key.drop" #Inventory: Drop Selected Item +---| "key.hotbar.1" #Inventory: Hotbar Slot 1 +---| "key.hotbar.2" #Inventory: Hotbar Slot 2 +---| "key.hotbar.3" #Inventory: Hotbar Slot 3 +---| "key.hotbar.4" #Inventory: Hotbar Slot 4 +---| "key.hotbar.5" #Inventory: Hotbar Slot 5 +---| "key.hotbar.6" #Inventory: Hotbar Slot 6 +---| "key.hotbar.7" #Inventory: Hotbar Slot 7 +---| "key.hotbar.8" #Inventory: Hotbar Slot 8 +---| "key.hotbat.9" #Inventory: Hotbar Slot 9 +---| "key.inventory" #Inventory: Open/Close Inventory +---| "key.swapOffHand" #Inventory: Swap Item With Offhand +---| "key.loadToolbarActivator" #Creative Mode: Load Hotbar Activator +---| "key.saveToolbarActivator" #Creative Mode: Save Hotbar Activator +---| "key.playerlist" #Multiplayer: List Players +---| "key.chat" #Multiplayer: Open Chat +---| "key.command" #Multiplayer: Open Command +---| "key.socialInteractions" #Multiplayer: Social Interactions Screen +---| "key.advancements" #Miscellaneous: advancements +---| "key.spectatorOutlines" #Miscellaneous: Highlight Players (Spectators) +---| "key.screenshot" #Miscellaneous: Take Screenshot +---| "key.smoothCamera" #Miscellaneous: Toggle Cinematic Camera +---| "key.fullscreen" #Miscellaneous: Toggle Fullscreen +---| "key.togglePerspective" #Miscellaneous: Toggle Perspective + +---A keybind that is bound to a key. +---You can use this to determine when you are pressing a key or registered control. +---@class Keybind +local Keybind = {} + +---Returns if the key was pressed. Handled as if the key was being typed into a text box. +--- +---When holding, `.wasPressed()` returns `true` for 1 tick, then returns `false` for 9 ticks, then +---returns `true` until the button is released (plus some undefined extra ticks based on how long +---the key was held.) +---@return boolean +function Keybind.wasPressed() end + +---Returns if the key is being pressed this tick. +---@return boolean +function Keybind.isPressed() end + +---Returns the current key bound to this keybind. +---@return Key +function Keybind.getKey() end + +---Returns the name of the keybind. +---@return string +function Keybind.getName() end + +---FiguraKeybind ⇐ Keybind +---*** +---A custom keybind created by the script. +---These binds can be changed by the player later in Figura's keybind menu. +---@class FiguraKeybind : Keybind +local FiguraKeybind = {} + +---Rebinds the keybind to the given key. +---@param key Key +function FiguraKeybind.setKey(key) end + +---Resets the half-second delay from wasPressed() +function FiguraKeybind.reset() end + +---RegisteredKeybind ⇐ Keybind +---*** +---A keybind registered by Minecraft or another mod. +---These binds are changed Minecraft's controls menu. +---@class RegisteredKeybind : Keybind + + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains functions for working with keybinds. +keybind = {} + +---Returns a list of all valid keys. +---@return Key[] +function keybind.getKeyList() end + +---Returns a list of all keybinds. +---@return Keybind[] +function keybind.getRegisteredKeyList() end + +---Returns a value that represents a registered keybind. +--- +---Any registered keybind by both Minecraft and mods can be used. +---@param bind MinecraftKeybind +---@return RegisteredKeybind +function keybind.getRegisteredKeybind(bind) end + +---Returns a new named keybind that can be tracked. +---@param name string +---@param key Key +---@param persistent? boolean If set to true, keybind will be detected even if a gui is open such as chat/inventory. +---@return FiguraKeybind +function keybind.newKey(name, key, persistent) end diff --git a/.vscode/figura/math.lua b/.vscode/figura/math.lua new file mode 100644 index 0000000..f7b316e --- /dev/null +++ b/.vscode/figura/math.lua @@ -0,0 +1,21 @@ +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Interpolates numbers or vectors between a and b. +--- +---Will not accept a raw table as input. +---Use vectors.of() to convert from raw table to vector table. +---@generic T : number|Vector +---@param a T +---@param b T +---@param delta number +---@return T +function math.lerp(a, b, delta) end + +---Returns a value that never goes below min or above max. +---@param val number +---@param min number +---@param max number +---@return number +function math.clamp(val, min, max) end diff --git a/.vscode/figura/meta.lua b/.vscode/figura/meta.lua new file mode 100644 index 0000000..3d57240 --- /dev/null +++ b/.vscode/figura/meta.lua @@ -0,0 +1,135 @@ +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains functions involving Figura's more technical parts such as limits, the version, and the +---current count of certain things. +meta = {} + +---Returns the animation limit in this client's instance of the script. +---@return integer +function meta.getAnimationLimit() end + +---Returns a number based on the current status of the Figura backend. +---@return +---| 2 #Disconnected +---| 3 #Connecting +---| 4 #Connected +function meta.getBackendStatus() end + +---Returns if the player can use custom render layers (shaders). +---@return boolean +function meta.getCanHaveCustomRenderLayer() end + +---Returns if the nameplate can be modified in this client's instance of the script. +--- +---This is affected by the "Nameplate/Chat Name Changes" trust setting. +---@return boolean +function meta.getCanModifyNameplate() end + +---Returns if the vanilla playermodel can be edited in this client's instance of the script. +--- +---This is affected by the "Vanilla Avatar Changes" trust setting. +---@return boolean +function meta.getCanModifyVanilla() end + +---Returns the complexity limit in this client's instance of the script. +--- +---This is affected by the "Max Complexity" trust setting. +---@return integer +function meta.getComplexityLimit() end + +---Returns the current animation complexity. +---@return integer +function meta.getCurrentAnimationCount() end + +---Returns the current complexity of the avatar in this client's instance of the script. +--- +---The complexity is the amount of verticies being rendered on the client's screen. +---@return integer +function meta.getCurrentComplexity() end + +---Returns the amount of particles the avatar is creating per second in this client's instance of +---the script. +---@return integer +function meta.getCurrentParticleCount() end + +---Returns the amount of render instructions the avatar is running in this client's instance of the +---script at this frame. +--- +---The amount of render instructions is affected by whatever is running in the `render()` function. +---@return integer +function meta.getCurrentRenderCount() end + +---Returns the amount of sounds the avatar is emitting per second in this client's instance of the +---script. +---@return integer +function meta.getCurrentSoundCount() end + +---Returns the amount of tick instruction the avatar is running in this client's instance of the +---script at this tick. +--- +---The amount of tick instructions is affected by whatever is running in the `tick()` function. +---@return integer +function meta.getCurrentTickCount() end + +---Returns if the avatar is allowed to render offscreen in this client's instance of the script. +--- +---This is affected by the "Offscreen Rendering" trust setting. +---@return boolean +function meta.getDoesRenderOffscreen() end + +---Returns the current version of Figura in this client's instance of the script. +---@return string +function meta.getFiguraVersion() end + +---Returns the init instruction limit in this client's instance of the script. +--- +---This is affected by the "Max Init Instructions" trust setting. +---@return integer +function meta.getInitLimit() end + +---Returns a number based on the current status of the model. +---@return +---| 1 #No model +---| 2 #Too big (>100KB) +---| 3 #Big (75KB -100KB) +---| 4 #Normal +function meta.getModelStatus() end + +---Returns the particles-per-second limit in this client's instance of the script. +--- +---This is affected by the "Maximum Particles Per Second" trust setting. +---@return integer +function meta.getParticleLimit() end + +---Returns the render instruction limit in this client's instance of the script. +--- +---This is affected by the "Max Render Instructions" trust setting. +---@return integer +function meta.getRenderLimit() end + +---Returns a number based on the current status of the script. +---@return +---| 1 #No script +---| 2 #Errored +---| 4 #Normal +function meta.getScriptStatus() end + +---Returns the sounds-per-second limit in this client's instance of the script. +--- +---This is affected by the "Maximum Sounds Per Second" trust setting. +---@return integer +function meta.getSoundLimit() end + +---Returns a number based on the current status of the texture. +---@return +---| 1 #No texture +---| 4 #Normal +function meta.getTextureStatus() end + +---Returns the tick instruction limit in this client's instance of the script. +--- +---This is affected by the "Max Tick Instructions" trust setting. +---@return integer +function meta.getTickLimit() end diff --git a/.vscode/figura/model.lua b/.vscode/figura/model.lua new file mode 100644 index 0000000..df182ce --- /dev/null +++ b/.vscode/figura/model.lua @@ -0,0 +1,510 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---The sides of a cube. +---@alias CubeSide +---| "NORTH" +---| "SOUTH" +---| "EAST" +---| "WEST" +---| "UP" +---| "DOWN" +---| "ALL" + +---A parent type that the part will rotate with. +---@alias ParentType +---| "None" #Rotate with the origin of the player. +---| "WORLD" #Rotate with the world. +---| "Model" #Rotate with the entire model. +---| "Head" #Rotate with the player's head. +---| "Torso" #Rotate with the player's body. +---| "LeftArm" #Rotate with the player's left arm. +---| "RightArm" #Rotate with the player's right arm. +---| "LeftLeg" #Rotate with the player's left leg. +---| "RightLeg" #Rotate with the player's right leg. +---| "LeftItemOrigin" #Rotate with the player's left held item. +---| "RightItemOrigin" #Rotate with the player's right held item. +---| "LeftElytraOrigin" #Rotate with the player's left elytra wing's origin. +---| "RightElytraOrigin" #Rotate with the player's right elytra wing's origin. +---| "LeftParrotOrigin" #Rotate with the player's left parrot spot. +---| "RightParrotOrigin" #Rotate with the player's right parrot spot. +---| "LeftElytra" #Rotate with the player's left elytra wing. +---| "RightElytra" #Rotate with the player's right elytra wing. +---| "Camera" #Rotate to always face the camera. + +---The possible types of a CustomModelPart +---@alias CustomModelPartType +---| "CUBE" +---| "GROUP" +---| "MESH" + +---@alias Shader +---| "None" #Do not use a shader. +---| "EndPortal" #Use the end portal shader. +---| "Glint" #Use the enchantment glint. + +---@alias TextureType +---| "Custom" #The custom texture suplied with the avatar. +---| "Skin" #Your Minecraft skin. +---| "Cape" #Your cape, or Steve if you dont have a cape. +---| "Elytra" #Your elytra texture (NOT the cape-provided elytra!) (vanilla probably dont even use it at all) +---| "Resource" #Any loaded texture including resource packs! or missing texture if not found. + +---A basic model part with very few options for modifying it. +---@class BasicModelPart +local BasicModelPart = {} + +---Returns if the part is enabled or not. +---Returns `nil` if the part has not been toggled with `.setEnabled()` yet. +--- +---If the function returns `nil` assume the part is enabled. +---@return boolean? +function BasicModelPart.getEnabled() end + +---Returns the position offset of the part. +---Returns `nil` if the part has not been moved with `.setPos()` yet. +--- +---If the function returns `nil` assume the part is at `0,0,0` +---@return VectorPos? +function BasicModelPart.getPos() end + +---Returns the rotation offset of the part. +---Returns `nil` if the part has not been moved with `.setRot()` yet. +---@return VectorAng? +function BasicModelPart.getRot() end + +---Returns the scale of the part set by `.setScale()`. +---@return VectorPos? +function BasicModelPart.getScale() end + +---Sets the visibility of the part. +---@param state boolean +function BasicModelPart.setEnabled(state) end + +---Sets the position offset of the part. +---@param pos VectorPos +function BasicModelPart.setPos(pos) end + +---Sets the rotation offset of the part. +---@param ang VectorAng +function BasicModelPart.setRot(ang) end + +---Sets the scale of the part. +---@param pos VectorPos +function BasicModelPart.setScale(pos) end + + +---VanillaModelPart ⇐ BasicModelPart +---*** +---A vanilla model part, has more options than a basic part. +---@class VanillaModelPart : BasicModelPart +local VanillaModelPart = {} + +---Returns if the part is enabled before any `.setEnabled()` operations are applied. +---Always seems to return `false`. +---@return boolean +function VanillaModelPart.getOriginEnabled() end + +---Returns the part's original position before any `.setPos()` operations are applied. +---@return VectorPos +function VanillaModelPart.getOriginPos() end + +---Returns the part's original angle *in radians*. +---If you want the angle in degrees, use `math.deg()` or `.toDeg()`. +---@return VectorAng +function VanillaModelPart.getOriginRot() end + +---Returns if the part's skin customization setting is enabled. +---Returns `nil` if the part does not have a setting. +---@return boolean? +function VanillaModelPart.isOptionEnabled() end + +---The proxy for the `CustomModelPart` class. +---This only exists to fix inheritance of `CustomModelPart`s inside `CustomModelPart`s. +---@class CustomModelPartProxy : BasicModelPart +---@field [string] CustomModelPart +local CustomModelPartProxy = {} + +---@class CustomModelPart : CustomModelPartProxy +---CustomModelPart ⇐ BasicModelPart +---*** +---A custom model part. These are the parts from the bbmodel file. +---`CustomModelPart`s can contain other `CustomModelPart`s. +--- +---Note: Despite the list saying so, a `function` cannot be a `CustomModelPart`! It simply looks +---like that to allow any key to become a `CustomModelPart` if needed. +local CustomModelPart = {} + +---Adds a new render task attached to this model part. +--- +---Note: This function does not return the render task. Use `.getRenderTask()` +---instead. +---@overload fun(type: "TEXT", name: string, value: string, emissive?: boolean, pos?: VectorPos, rot?: VectorAng, scale?: VectorPos) +---@overload fun(type: "ITEM", name: string, value: ItemStack|ItemID, renderMode: RenderMode, emissive?: boolean, pos?: VectorPos, rot?: VectorAng, scale?: VectorPos, renderLayer?: string) +---@overload fun(type: "BLOCK", name: string, value: BlockState|BlockID, emissive?: boolean, pos?: VectorPos, rot?: VectorAng, scale?: VectorPos, renderLayer?: string) +function CustomModelPart.addRenderTask(type, name, value, ...) end + +---Remove ALL render tasks from this part. +function CustomModelPart.clearAllRenderTasks() end + +---Returns the sum of all position keyframes at this time. +---@return VectorPos +function CustomModelPart.getAnimPos() end + +---Returns the sum of all rotation keyfrmaes at this time. +---@return VectorAng +function CustomModelPart.getAnimRot() end + +---Returns the sum of all scale keyframes at this time. +---@return Vector3 +function CustomModelPart.getAnimScale() end + +---Returns a table containing this part's children. +---@return CustomModelPart[] +function CustomModelPart.getChilderen() end + +---Returns the current color of the part. +---The default color is `<1,1,1>`. +---@return VectorColor +function CustomModelPart.getColor() end + +---Returns if culling is enabled on the part. +---@return boolean +function CustomModelPart.getCullEnabled() end + +---Returns if extra textures such as emissive textures are rendered. +---@return boolean +function CustomModelPart.getExtraTexEnabled() end + +---Returns the light value set by `.setLight()`. +---Returns `nil` if it hasn't been set yet. +---@return Vector2? +function CustomModelPart.getLight() end + +---Returns if the part is only mimicing its parent part instead of having its origin connected to +---the parent part's origin. +---@return boolean +function CustomModelPart.getMimicMode() end + +---Returns the name assigned in Blockbench of this part. +---@return string +function CustomModelPart.getName() end + +---Returns the opacity of a part. +--- +---Note: Opacity is a value from 0 to 1. +---@return number +function CustomModelPart.getOpacity() end + +---Returns the overlay value set by `.setOverlay()`. +---Returns `nil` if it hasn't been set yet. +---@return Vector2? +function CustomModelPart.getOverlay() end + +---Returns the parent type of the part. +---@return ParentType +function CustomModelPart.getParentType() end + +---Returns the position offset of the part's pivot point. +---@return VectorPos +function CustomModelPart.getPivot() end + +---Returns a render task table of the given name, if any +---@param name string +---@return (BlockTaskTable|ItemTaskTable|TextTaskTable)? +function CustomModelPart.getRenderTask(name) end + +---Returns the *absolute* rotation of the part. +--- +---Note: This does *not* return the rotation offset. +---@return VectorAng +function CustomModelPart.getRot() end + +---Returns the shader of the part. +---@return Shader +function CustomModelPart.getShader() end + +---Returns the type of texture that the part uses +---@return TextureType +function CustomModelPart.getTexture() end + +---Returns the size of the part's texture. +---@return Vector2 +function CustomModelPart.getTextureSize() end + +---Returns the type of the part. +---@return CustomModelPartType +function CustomModelPart.getType() end + +---Returns the UV offset of the part. +--- +---Note: This does *not* return the actual UV of the part. +---@return VectorUV +function CustomModelPart.getUV() end + +---Returns the UV data of the specified face. +---@param face CubeSide +---@return Vector4 +function CustomModelPart.getUVData(face) end + +---Takes a `Vector` with a direction relative to the part and returns a `Vector` with the direction +---in world-space. +---@param dir VectorPos +---@return VectorPos +function CustomModelPart.partToWorldDir(dir) end + +---*Just a word of caution, this function is very complicated. Do not expect to get how it works +---right from the start.* +--- +---Takes a `Vector` with a blockbench position, then: +---* Makes a pivot `x` (which is *not* this part's pivot) at the center of the player's neck. +---* Offsets pivot `x` by this part's Lua position offset, +---* Rotates pivot `x`'s position around this part's `(Lua position offset + Lua pivot offset)`, +---* Adds the given blockbench position to the position of pivot `x`, +---* Rotates the new blockbench position around pivot `x` by the absolute rotation of this part. +---* Converts to an absolute world position and returns that position. +---@param pos VectorPos +---@return VectorPos +function CustomModelPart.partToWorldPos(pos) end + +---Removes a render task from this part. +---@param name string +function CustomModelPart.removeRenderTask(name) end + +---Sets the color of the model. +--- +---Note: The color is set by *tinting* the model, use grayscale textures for best results. +---@param col VectorColor +function CustomModelPart.setColor(col) end + +---Enable/disable the inner faces of the part. +---@param boolean boolean +function CustomModelPart.setCullEnabled(boolean) end + +---Enable/disable extra texture rendering (ie emissive textures) +---@param boolean boolean +function CustomModelPart.setExtraTexEnabled(boolean) end + +---Overrides the light level the part is rendered at. +---Any value below 0 or above 15 will render the part invisible. +---`nil` returns the part to normal. +--- +---The first value of the vector controls block light, the second controls sky light. +---@param vector? Vector2 +function CustomModelPart.setLight(vector) end + +---Sets the mimic mode of the model. +---If true, the model will *mimic* its parent as set by `.setParentType()` instead of having its +---origin connected to the parent part's origin. +---@param state boolean +function CustomModelPart.setMimicMode(state) end + +---Sets the opacity of the part. +--- +---Note: Opacity is a value from 0 to 1. +---@param num number +function CustomModelPart.setOpacity(num) end + +---Overrides the overlay level the part is rendered at. +---Any value below 0 or above 15 will render the part black. +---`nil` returns the part to normal. +--- +---The first value controls a white overlay, the second value controls the hurt overlay. +---@param vector? Vector2 +function CustomModelPart.setOverlay(vector) end + +---Sets the parent type of the part. +---@param parent ParentType +function CustomModelPart.setParentType(parent) end + +---Sets the part's pivot point. +---@param vector VectorPos +function CustomModelPart.setPivot(vector) end + +---Sets the render layer (custom shader) of the part. +---@param string string +function CustomModelPart.setRenderLayer(string) end + +---Sets the *absolute* rotation of the part. +--- +---Note: This does *not* set the rotation offset. +---@param ang VectorAng +function CustomModelPart.setRot(ang) end + +---Sets the shader of the part. +---@param shader Shader +function CustomModelPart.setShader(shader) end + +---Changes which texture is applied to the part. +---`resource` is only needed if the texture type is set to `"Resource"`. +---@param type TextureType +---@param resource? string +function CustomModelPart.setTexture(type, resource) end + +---Set the size of the part's texture. +---@param vector Vector2 +function CustomModelPart.setTextureSize(vector) end + +---Sets the UV offset of the part. +--- +---Note: This does *not* set the actual UV of the part. +---@param uv VectorUV +function CustomModelPart.setUV(uv) end + +---Sets the UV data of the given side. +---UV's must be in BlockBench format. +---@param face CubeSide +---@param vector Vector4 +function CustomModelPart.setUVData(face, vector) end + +---Takes a `Vector` with a direction in world-space and returns a `Vector` with the direction +---relative to the part. +--- +---Seems to act similar to `.partToWorldDir()`. +---@param dir VectorPos +---@return VectorPos +function CustomModelPart.worldToPartDir(dir) end + +---Takes a `Vector` with a a blockbench position and returns a `Vector` with the world position +---relative to the player rotated by the part's rotation. +---@param pos VectorPos +---@return VectorPos +function CustomModelPart.worldToPartPos(pos) end + + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---The `table` containing the parts and folders from your blockbench model. +--- +---If you want to get the Top hat on your model's head in this example... +---``` +---Player +---β”œ Head +---β”‚ β”” TopHat +---β”” Body +--- β”” Belt +---``` +---...then you need to use `model.Player.Head.TopHat` to access it. +--- +---Note: Auto-completion does not know what folders and parts you have in your model at first, but +---will learn based on what folders and parts you access yourself. +---If you want autocompletion for model paths, use +---[*Manuel-Underscore*'s Figura VSCode extension](https://marketplace.visualstudio.com/items?itemName=Manuel-Underscore.figura). +---If you use the above extension, guessed parts will have a different icon from parts found in the +---model. +---@type table +model = {} + +---A `table` containing the vanilla playermodel. +vanilla_model = { + ---@type VanillaModelPart + HEAD = {}, + + ---@type VanillaModelPart + HAT = {}, + + ---@type VanillaModelPart + CAPE = {}, + + ---@type VanillaModelPart + TORSO = {}, + + ---@type VanillaModelPart + JACKET = {}, + + ---@type VanillaModelPart + LEFT_ARM = {}, + + ---@type VanillaModelPart + LEFT_SLEEVE = {}, + + ---@type VanillaModelPart + RIGHT_ARM = {}, + + ---@type VanillaModelPart + RIGHT_SLEEVE = {}, + + ---@type VanillaModelPart + LEFT_LEG = {}, + + ---@type VanillaModelPart + LEFT_PANTS_LEG = {}, + + ---@type VanillaModelPart + RIGHT_LEG = {}, + + ---@type VanillaModelPart + RIGHT_PANTS_LEG = {}, + + ---@type VanillaModelPart + LEFT_EAR = {}, + + ---@type VanillaModelPart + RIGHT_EAR = {} +} + +---A `table` containing the armor model. +armor_model = { + ---@type BasicModelPart + HELMET = {}, + + ---@type BasicModelPart + HEAD_ITEM = {}, + + ---@type BasicModelPart + CHESTPLATE = {}, + + ---@type BasicModelPart + LEGGINGS = {}, + + ---@type BasicModelPart + BOOTS = {} +} + +---A `table` containing the elytra model. +elytra_model = { + ---@type BasicModelPart + LEFT_WING = {}, + + ---@type BasicModelPart + RIGHT_WING = {} +} + +---A `table` containing the held item models. +held_item_model = { + ---@type BasicModelPart + LEFT_HAND = {}, + + ---@type BasicModelPart + RIGHT_HAND = {} +} + +---A `table` containing the parrot models. +parrot_model = { + ---@type BasicModelPart + LEFT_PARROT = {}, + + ---@type BasicModelPart + RIGHT_PARROT = {} +} + +---A `table` containing the first person models. +first_person_model = { + ---@type BasicModelPart + MAIN_HAND = {}, + + ---@type BasicModelPart + OFF_HAND = {} +} + +---A `table` containing the spyglass models. +spyglass_model = { + ---@type BasicModelPart + LEFT_SPYGLASS = {}, + + ---@type BasicModelPart + RIGHT_SPYGLASS = {} +} diff --git a/.vscode/figura/nameplate.lua b/.vscode/figura/nameplate.lua new file mode 100644 index 0000000..d26f479 --- /dev/null +++ b/.vscode/figura/nameplate.lua @@ -0,0 +1,107 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A space with the player's name visible in it. +---@class Nameplate +local Nameplate = {} + +---Returns whatever was passed through `.setEnabled()` last. +---@return boolean? +function Nameplate.getEnabled() end + +---Returns whatever was passed through `.setPos()` last. +---@return VectorPos? +function Nameplate.getPos() end + +---Returns whatever was passed through `.setScale()` last. +---@return VectorPos? +function Nameplate.getScale() end + +---Returns the text in the nameplate. +---Returns `nil` if the text has not been set by `.setText()`. +---@return string? +function Nameplate.getText() end + +---Does nothing... +---For a version that does something, check the ENTITY nameplate. +---@param bool? boolean +function Nameplate.setEnabled(bool) end + +---Does nothing... +---For a version that does something, check the ENTITY nameplate. +---@param vec3? VectorPos +function Nameplate.setPos(vec3) end + +---Does nothing... +---For a version that does something, check the ENTITY nameplate. +---@param vec3? VectorPos +function Nameplate.setScale(vec3) end + +---Sets the text of the nameplate. +---All text is placed to the left of the Figura mark. +---Set to `nil` to reset to default. +--- +---Can use [Raw JSON Text](https://minecraft.fandom.com/wiki/Raw_JSON_text_format) formatting. +---@param str? string +function Nameplate.setText(str) end + +---EntityNameplate ⇐ Nameplate +---*** +---Contains nameplate functions specific to the ENTITY nameplate. +---@class EntityNameplate : Nameplate +local EntityNameplate = {} + +---Returns if the nameplate is visible. +---Returns `nil` if it has not been set by `.setEnabled()`. +---@return boolean? +function EntityNameplate.getEnabled() end + +---Returns the position offset of the nameplate in blocks. +---Returns `nil` if the position offset has not been set by `.setPos()`. +--- +---Note: This value might not be accurate if the player's entity is scaled. +---@return VectorPos? +function EntityNameplate.getPos() end + +---Returns the scale of the nameplate. +---Returns nil if the scale has not been set by `.setScale()`. +---@return VectorPos? +function EntityNameplate.getScale() end + +---Sets if the nameplate is visible. +---Set to `nil` to reset to default. +---@param bool? boolean +function EntityNameplate.setEnabled(bool) end + +---Sets the position offset of the nameplate in blocks. +---Set to `nil` to reset to default. +--- +---Note: This value is not accurate if the player's entity is scaled. +---@param vec3? VectorPos +function EntityNameplate.setPos(vec3) end + +---Sets the scale of the nameplate. +---Set to `nil` to reset to default. +---@param vec3? VectorPos +function EntityNameplate.setScale(vec3) end + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains the player's nameplates. +--- +---`CHAT` is the player's name in chat. +---`ENTITY` is the nameplate above their head. +---`LIST` is the player's name in the player list. +nameplate = { + ---@type Nameplate + CHAT = {}, + + ---@type EntityNameplate + ENTITY = {}, + + ---@type Nameplate + LIST = {} +} diff --git a/.vscode/figura/network.lua b/.vscode/figura/network.lua new file mode 100644 index 0000000..9c28956 --- /dev/null +++ b/.vscode/figura/network.lua @@ -0,0 +1,95 @@ +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---A type of function that is run on all instances of a script if the host runs it. +--- +---Pings are 5 bytes big without a value. +--- +---A ping may also contain a value to send with the ping. This adds the following bytes based on the +---type of value: +---* Nil: 0 bytes (`nil`) +---* Boolean: 1 byte (`true/false`) +---* Integer: 4 bytes (`-2147483648`..`2147483647`) +---* Float: 4 bytes (`-3.4028236692094e+38`..`3.4028236692094e+38`) +---* String: 2 bytes + (`0`..`1000` characters) bytes +---* Table: 2 bytes + (Table contents) bytes +--- +---You may only send up to 1024 bytes of pings a second, and only up to 32 pings a tick. +---@class PingFunction : function + +---@alias PingSupported nil|boolean|number|string|table|Vector + +---**THERE IS A MUCH BETTER WAY TO HANDLE PINGS. SEE THE `ping` TABLE FOR MORE INFORMATION.** +---*** +---Contains functions that handle pings. +---@deprecated +network = {} + +---Avoid deprecation errors in this file +---@diagnostic disable: deprecated + +---**THERE IS A MUCH BETTER WAY TO HANDLE PINGS. SEE THE `ping` TABLE FOR MORE INFORMATION.** +---*** +---Registers a ping that allows you to send information to all clients running this script. +---This is mainly used to sync variables that do not sync normally. (`Keybind`s, `action_wheel` +---functions, NBT, etc.) +---You may register up to *65535* pings in one script. +--- +---All examples in this description will assume that the ping is called *"pingname"*. +---``` +---network.registerPing("pingname") +---``` +---The ping is linked to a function of the same name, this function is not defined by default +---and it will need to defined so it can be used: +---``` +---function pingname(param) --(Param is optional!) +--- --code here +---end +---``` +---You can call this function by using: +---``` +---network.ping("pingname", param) --(Param is optional!) +---``` +--- +---Note: Pings are also sent to yourself and will run their function on your script as well. +---@param ping string +---@deprecated +function network.registerPing(ping) end + +---**THERE IS A MUCH BETTER WAY TO HANDLE PINGS. SEE THE `ping` TABLE FOR MORE INFORMATION.** +---*** +---Sends a ping out to all clients running this script. +---Pings are 5 bytes big without a value. +--- +---A ping may also contain a value to send with the ping. This adds the following bytes based on the +---type of value: +---* Nil: 0 bytes (`nil`) +---* Boolean: 1 byte (`true/false`) +---* Integer: 4 bytes (`-2147483648`..`2147483647`) +---* Float: 4 bytes (`-3.4028236692094e+38`..`3.4028236692094e+38`) +---* String: 2 bytes + (`0`..`1000` characters) bytes +---* Table: 2 bytes + (Table contents) bytes +--- +---You may only send up to 1024 bytes of pings a second, and only up to 32 pings a tick. +--- +---Note: Pings are also sent to yourself. +---@param ping string +---@param value? PingSupported +---@deprecated +function network.ping(ping, value) end + +---@diagnostic enable: deprecated + +---A table containing pings. You can create a new ping by defining a function here. +--- +---Pings are mainly used to sync variables that do not sync normally. (`Keybind`s, `action_wheel` +---functions, NBT, etc.) +---You may have up to 65,535 pings in one script. +--- +---Note: Functions placed in this table are converted. A `PingFunction` of a given function will not +---be equal to the function it is made from. +---This also means that calling the normal function will +---not call the `PingFunction` made from it. +---@type table +ping = {} diff --git a/.vscode/figura/particle.lua b/.vscode/figura/particle.lua new file mode 100644 index 0000000..2924889 --- /dev/null +++ b/.vscode/figura/particle.lua @@ -0,0 +1,282 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A Minecraft particle identifier. +--- +---Only the default Minecraft particles are auto-completed. +---You can use any particle from any mod, even if it does not auto-complete. +--- +---Note: Modded particles that require an `extra` will not work and will instead error. +---@alias ParticleID +---| "minecraft:ambient_entity_effect" +---| "minecraft:angry_villager" +---| "minecraft:ash" +---| "minecraft:barrier" +---| "minecraft:block" +---| "minecraft:bubble" +---| "minecraft:bubble_column_up" +---| "minecraft:bubble_pop" +---| "minecraft:campfire_cosy_smoke" +---| "minecraft:campfire_signal_smoke" +---| "minecraft:cloud" +---| "minecraft:composter" +---| "minecraft:crimson_spore" +---| "minecraft:crit" +---| "minecraft:current_down" +---| "minecraft:damage_indicator" +---| "minecraft:dolphin" +---| "minecraft:dragon_breath" +---| "minecraft:dripping_dripstone_lava" +---| "minecraft:dripping_dripstone_water" +---| "minecraft:dripping_honey" +---| "minecraft:dripping_lava" +---| "minecraft:dripping_obsidian_tear" +---| "minecraft:dripping_water" +---| "minecraft:dust" +---| "minecraft:dust_color_transition" +---| "minecraft:effect" +---| "minecraft:elder_guardian" +---| "minecraft:electric_spark" +---| "minecraft:enchant" +---| "minecraft:enchanted_hit" +---| "minecraft:end_rod" +---| "minecraft:entity_effect" +---| "minecraft:explosion" +---| "minecraft:explosion_emitter" +---| "minecraft:falling_dripstone_lava" +---| "minecraft:falling_dripstone_water" +---| "minecraft:falling_dust" +---| "minecraft:falling_honey" +---| "minecraft:falling_lava" +---| "minecraft:falling_nectar" +---| "minecraft:falling_obsidian_tear" +---| "minecraft:falling_spore_blossom" +---| "minecraft:falling_water" +---| "minecraft:firework" +---| "minecraft:fishing" +---| "minecraft:flame" +---| "minecraft:flash" +---| "minecraft:glow" +---| "minecraft:glow_squid_ink" +---| "minecraft:happy_villager" +---| "minecraft:heart" +---| "minecraft:instant_effect" +---| "minecraft:item" +---| "minecraft:item_slime" +---| "minecraft:item_snowball" +---| "minecraft:landing_honey" +---| "minecraft:landing_lava" +---| "minecraft:landing_obsidian_tear" +---| "minecraft:large_smoke" +---| "minecraft:lava" +---| "minecraft:light" +---| "minecraft:mycelium" +---| "minecraft:nautilus" +---| "minecraft:note" +---| "minecraft:poof" +---| "minecraft:portal" +---| "minecraft:rain" +---| "minecraft:reverse_portal" +---| "minecraft:scrape" +---| "minecraft:smoke" +---| "minecraft:sneeze" +---| "minecraft:snowflake" +---| "minecraft:soul" +---| "minecraft:soul_fire_flame" +---| "minecraft:spit" +---| "minecraft:spore_blossom_air" +---| "minecraft:splash" +---| "minecraft:squid_ink" +---| "minecraft:sweep_attack" +---| "minecraft:totem_of_undying" +---| "minecraft:underwater" +---| "minecraft:vibration" +---| "minecraft:warped_spore" +---| "minecraft:wax_off" +---| "minecraft:wax_on" +---| "minecraft:white_ash" +---| "minecraft:witch" + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains a single `function` for creating a particle. +particle = {} + +---Adds a particle to the world. +--- +---Only the default Minecraft particles are auto-completed. +---You can use modded particles as long as they only take a position and velocity to function. +--- +---Certain particles change how the parameters of this function work. +---If a particle is not on this list, assume it functions normally: +---> **minecraft:ambient_entity_effect** / **minecraft:entity_effect** +---> +---> The last three values of `pos_vel` set the velocity *and* color of the particle. +---> Velocity is converted into a direction. +---> Any horizontal velocity is applied in all horizontal directions randomly. +---> Each color is a number `0..1` or `1..255`. If the color is above 1, then the color is +---`(255 - num) / 255` If the color is above 255, set color to `(-num % 255) / 255` then calculate +---as if color was above 1. +---> (2 -> 253, 255 -> 0). +---> It is possible to mix different ranges of colors. A color of `1,0,1` is the same as `1,255,1` +---but the second color will move up instead of spreading out because of the high Y velocity. +---> *** +--- +---> **minecraft:angry_villager** / **minecraft:heart** +---> +---> Velocity is completely ignored and always moves up about half a block. +---> *** +--- +---> **minecraft:ash** +---> +---> Velocity is completely ignored and always falls in a random direction. +---> *** +--- +---> **minecraft:barrier** / **minecraft:flash** / **minecraft:underwater** +---> +---> Velocity is completely ignored and never moves. +---> *** +--- +---> **minecraft:block** / **minecraft:falling_dust** +---> +---> The `extra` is a `string` set to the blockstate string of the selected block. +---> *** +--- +---> **minecraft:bubble** / **minecraft:bubble_column_up** / **minecraft:current_down** +---> +---> Dies after 1 tick if out of water at any point +---> *** +--- +---> **minecraft:composter** / **minecraft:dolphin** / **minecraft:happy_villager** / +---**minecraft:mycelium** +---> +---> Velocity is capped at a very slow speed per axis. +---> *** +--- +---> **minecraft:crimson_spore** / **minecraft:item_slime** / **minecraft:item_snowball** / +---**minecraft:lava** / **minecraft:rain** / **minecraft:warped_spore** +---> +---> Velocity is completely ignored and flies in a random direction, preferring any upward +---direction. +---> *** +--- +---> **minecraft:dripping_honey** / **minecraft:dripping_lava** / +---**minecraft:dripping_obsidian_tear** / **minecraft:dripping_water** / +---**minecraft:dripping_dripstone_lava** / **minecraft:dripping_dripstone_water** +---> +---> Velocity is completely ignored and always sticks for a while before falling until hitting +---something solid. +---> *** +--- +---> **minecraft:dust** +---> +---> Velocity is capped at a very slow speed per axis. +---> The `extra` is a `Vector4` set to the color and size of the particle. +---> `x`, `y`, and `z` are numbers `0..1` for red, green, and blue respectively. +---> `w` is a number `0..10` for the size of the particle. +---> *** +--- +---> **minecraft:dust_color_transition** +---> +---> The last three values of `pos_vel` set the end color of the particle. +---> Each color is a number `0..1`. +---> The `extra` is a `Vector4` set to the start color and transition speed of the particle. +---> `x`, `y`, and `z` are numbers `0..1` for red, green, and blue respectively. +---> `w` is a number `1..` for the amount of ticks it takes to transition from the start color to +---the end color. +---> *** +--- +---> **minecraft:elder_guardian** +---> +---> Ignores position and velocity, always circles the viewer's camera from top to bottom. +---> *** +--- +---> **minecraft:enchant** / **minecraft:nautilus** +---> +---> The first three values of `pos_vel` set the end position of the particle. +---> The end postion Y is always decreased by ~1.125. +---> The last three values of `pos_vel` set the start position offset of the particle. +---> The offset is *not* moved by the decrease of the end position Y. +---> *** +--- +---> **minecraft:explosion** / **minecraft:sweep_attack** +---> +---> Velocity is completely ignored. +---> The `w` of `pos_vel` is a number that sets the size of the particle. +---> 0 is the default size of the particle, negative numbers increase the size, postitive numbers +---> decrease it. If the number is >2, the explosion particle will be inverted and will increase in +---> size as the number gets bigger. +---> *** +--- +---> **minecraft:explosion_emitter** +---> +---> Velocity is completely ignored. +---> Spawns many "minecraft:explosion" particles around it. +---> *** +--- +---> **minecraft:falling_honey** / **minecraft:falling_lava** / **minecraft:falling_nectar** / +---**minecraft:falling_obsidian_tear** / **minecraft:falling_water** / **minecraft:landing_honey** / +---**minecraft:landing_lava** / **minecraft:landing_obsidian_tear** / +---**minecraft:falling_dripstone_lava** / **minecraft:falling_dripstone_water** +---> +---> Velocity is completely ignored and falls until hitting something solid. +---> *** +--- +---> **minecraft:instant_effect** / **minecraft:witch** +---> +---> Velocity is converted into a direction. +---> Any horizontal velocity is applied in all horizontal directions randomly. +---> *** +--- +---> **minecraft:item** +---> +---> The `extra` is a `string` set to the item and NBT string of the selected item. +---> *** +--- +---> **minecraft:note** +---> +---> The `w` of `pos_vel` is a number `0..1` that sets the hue of the note, starting at lime and +---shifting backwards. +---> Velocity is completely ignored and the note always moves up about half a block. +---> *** +--- +---> **minecraft:portal** +---> +---> The first three values of `pos_vel` set the end position of the particle. +---> The last three values of `pos_vel` set the start position offset of the particle. +---> The offset Y is always increased by 1. +---> *** +--- +---> **minecraft:vibration** *1.17 only!* +---> +---> The last three values of `pos_vel` set the end position of the particle. +---> The `extra` is a `Vector4` set to the start position and speed of the particle. +---> `w` is a number `1..` for the amount of ticks it takes to reach the end positon. +---> *** +--- +---> **minecraft:white_ash** +---> +---> Velocity is completely ignored and flies in a random direction, preferring any negative +---direction. +--->*** +--- +---> **PARTICLES WITH AN UNKNOWN EFFECT** +---> These particles are placed here since some 1.17 particle have yet to be tested. +---> *If you have information on exactly how these particles work, let me know.* +---> +---> minecraft:falling_spore_blossom (Possibly acts like a slower minecraft:falling_honey?) +---> minecraft:glow (Possibly acts like minecraft:barrier?) +---> minecraft:light (Possibly acts like minecraft:composter?) +---> minecraft:scrape (Possibly acts like minecraft:composter?) +---> minecraft:snowflake +---> minecraft:spore_blossom_air +---> minecraft:wax_off (Possibly acts like minecraft:composter?) +---> minecraft:wax_on (Possibly acts like minecraft:composter?) +---@param name ParticleID +---@param pos_vel Vector6 +---@param extra1? Vector3 | Vector4 | string +---@param extra2? Vector3 | Vector4 +function particle.addParticle(name, pos_vel, extra1, extra2) end diff --git a/.vscode/figura/renderer.lua b/.vscode/figura/renderer.lua new file mode 100644 index 0000000..ede01dd --- /dev/null +++ b/.vscode/figura/renderer.lua @@ -0,0 +1,123 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---@alias RaycastShapeHandling +---| "COLLIDER" #The shape entities collide with +---| "OUTLINE" #The block outline when looked at +---| "VISUAL" #What Minecraft believes is the sight-blocking shape + +---@alias RaycastFluidHandling +---| "NONE" #Do not raycast fluids +---| "SOURCE_ONLY" #Only raycast fluid sources +---| "ANY" #Raycast any fluid + +---A predicate that tests for a block. +--- +---Return `true` to stop raycasting and return the current block. +---Return `false` to continue and ignore the current block. +---@alias BlockPredicate fun(block: BlockState, pos: VectorPos): boolean + +---A predicate that tests for an entity. +--- +---Return `true` to stop raycasting and return the current entity. +---Return `false` to continue and ignore the current entity. +---@alias EntityPredicate fun(entity: Entity|LivingEntity|Player): boolean + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains generic functions related to rendering. Also contains some raycasting. +renderer = {} + +---Returns the camera position of the player executing the script. +---@return VectorPos +function renderer.getCameraPos() end + +---Returns the camera rotation. +---@return VectorAng +function renderer.getCameraRot() end + +---Returns if fire can be rendered on the avatar. +---Returns `nil` if it has not been set by `.setRenderFire()`. +---@return boolean? +function renderer.getRenderFire() end + +---Returns if your player head shows your Figura HEAD/SKULL (true) or your vanilla head (false). +---@return boolean +function renderer.getRenderPlayerHead() end + +---Returns the radius of the player's shadow. +---Returns `nil` if the size has not been set by `.setShadowSize()`. +---@return number? +function renderer.getShadowSize() end + +---Returns the length in pixels of a string or Raw JSON Text. +---@param text string +---@return integer +function renderer.getTextWidth(text) end + +---Returns if the camera is in front of or behind the player. +---@return boolean +function renderer.isCameraBackwards() end + +---Returns if the model is being viewed in first-person. +---This will always return false for other clients since they cannot see your first-person model. +---@return boolean +function renderer.isFirstPerson() end + +---Returns if your mount is enabled. +---@return boolean +function renderer.isMountEnabled() end + +---Returns if your mount's shadow is enabled. +---@return boolean +function renderer.isMountShadowEnabled() end + +---Casts a ray from startPos to endPos, looking at the blocks on the way. +---If the ray never hits anything, then the function returns nil. +---@param startPos VectorPos +---@param endPos VectorPos +---@param shapeHandling RaycastShapeHandling +---@param fluidHandling RaycastFluidHandling +---@param predicate? BlockPredicate +---@return {state: BlockState, pos: VectorPos}? +function renderer.raycastBlocks(startPos, endPos, shapeHandling, fluidHandling, predicate) end + +---Casts a ray from startPos to endPos, returning the first entity it sees on the way. +---If the ray never hits anything, then the function returns nil. +---@param startPos VectorPos +---@param endPos VectorPos +---@param predicate? EntityPredicate +---@return {entity:Entity|LivingEntity|Player, pos:VectorPos}? +function renderer.raycastEntities(startPos, endPos, predicate) end + +---Toggle the render of the entity you are riding. +---@param enabled boolean +function renderer.setMountEnabled(enabled) end + +---Toggle the shadow of the entity you are riding. +---@param enabled boolean +function renderer.setMountShadowEnabled(enabled) end + +---Toggle the rendering of fire on your avatar. +---Set to `nil` to reset to default. +---@param enabled? boolean +function renderer.setRenderFire(enabled) end + +---Toggle whether your playerhead renders your avatar's HEAD/SKULL or your vanilla skin. +---@param enabled boolean +function renderer.setRenderPlayerHead(enabled) end + +---Sets the radius of the player's shadow. +---Set the radius to `nil` to reset the shadow. +---@param radius number? +function renderer.setShadowSize(radius) end + +---Shows the animation of you swinging your arm. +---Set `offhand` to swing the offhand arm instead. +--- +---Note: This is automatically synced to other players. +---@param offhand? boolean +function renderer.swingArm(offhand) end diff --git a/.vscode/figura/renderlayers.lua b/.vscode/figura/renderlayers.lua new file mode 100644 index 0000000..cc4059d --- /dev/null +++ b/.vscode/figura/renderlayers.lua @@ -0,0 +1,318 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---@alias GL_BlendEquationMode +---|'32774' #GL_FUNC_ADD +---|'32778' #GL_FUNC_SUBTRACT +---|'32779' #GL_FUNC_REVERSE_SUBTRACT + +---@alias GL_BlendingFactorSrc +---|'0' #GL_ZERO +---|'1' #GL_ONE +---|'768' #GL_SRC_COLOR +---|'769' #GL_ONE_MINUS_SRC_COLOR +---|'770' #GL_SRC_ALPHA +---|'771' #GL_ONE_MINUS_SRC_ALPHA +---|'772' #GL_DST_ALPHA +---|'773' #GL_ONE_MINUS_DST_ALPHA +---|'774' #GL_DST_COLOR +---|'775' #GL_ONE_MINUS_DST_COLOR +---|'776' #GL_SRC_ALPHA_SATURATE +---|'32769' #GL_CONSTANT_COLOR +---|'32770' #GL_ONE_MINUS_CONSTANT_COLOR +---|'32771' #GL_CONSTANT_ALPHA +---|'32772' #GL_ONE_MINUS_CONSTANT_ALPHA + +---@alias GL_BlendingFactorDest GL_BlendingFactorSrc + +---@alias GL_DepthFunction +---|'512' #GL_NEVER +---|'513' #GL_LESS +---|'514' #GL_EQUAL +---|'515' #GL_LEQUAL +---|'516' #GL_GREATER +---|'517' #GL_NOTEQUAL +---|'518' #GL_GEQUAL +---|'519' #GL_ALWAYS + +---@alias GL_StencilFunction GL_DepthFunction + +---@alias GL_StencilOp +---|'0' #GL_ZERO +---|'5386' #GL_INVERT +---|'7680' #GL_KEEP +---|'7681' #GL_REPLACE +---|'7682' #GL_INCR +---|'7683' #GL_DECR +---|'34055' #GL_INCR_WRAP +---|'34056' #GL_DECR_WRAP + + +---@alias GL_All GL_BlendEquationMode|GL_BlendingFactorDest|GL_StencilFunction|GL_StencilOp +---|'5376' #GL_CLEAR +---|'5377' #GL_AND +---|'5378' #GL_AND_REVERSE +---|'5379' #GL_COPY +---|'5380' #GL_AND_INVERTED +---|'5381' #GL_NOOP +---|'5382' #GL_XOR +---|'5383' #GL_OR +---|'5384' #GL_NOR +---|'5385' #GL_EQUIV +---|'5387' #GL_OR_REVERSE +---|'5388' #GL_COPY_INVERTED +---|'5389' #GL_OR_INVERTED +---|'5390' #GL_NAND +---|'5391' #GL_SET +---|'32775' #GL_MIN +---|'32776' #GL_MAX +---|'number' + +---@alias GL_Texture +---|'"MY_TEXTURE"' +---|'"MY_TEXTURE_EMISSIVE"' +---|'"MAIN_FRAMEBUFFER"' +---|'"LAST_FRAMEBUFFER"' +---|'string' + +---@alias CustomUniformID string +---@alias CClass +---|'string' +---|'"vec3"' + +---@class RegisterRenderLayerParams +---@field vertexFormat ShaderFormat +---@field hasCrumbling boolean +---@field translucent boolean + +---I only know of one... Does anyone know of any others? +---@alias ShaderFormat +---|'"POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL"' +---|'string' + +---@alias StringifiedC string + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +renderlayers = {} + +---Gets the priority of the chosen render layer, or nil if it doesn't exist +---@param renderlayerName string +---@return number +function renderlayers.getPriority(renderlayerName) end + +---Returns true or false depending on if the shader exists yet +---@param shaderName string +---@return boolean +function renderlayers.isShaderReady(shaderName) end + +---Registers a new render layer with the given name +---params is a table where you can set certain keys +------vertexFormat - needs to match with the format of any shader you want to use. Same default as in registerShader() +------hasCrumbling - don't know what this does, but it's true by default +------translucent - also don't know this one, but true by default +---startFunction and endFunction are two lua functions, called when you start rendering and when you stop rendering this layer. +---Functions which interact with openGL can only be called inside these +---@param renderLayerName string +---@param params RegisterRenderLayerParams +---@param startFunction fun() +---@param endFunction fun() +function renderlayers.registerRenderLayer(renderLayerName, params, startFunction, endFunction) end + +---Registers a new custom shader with the given name +---@param shaderName string +---@param format ShaderFormat #Defaults to "POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL" +---@param vertexSource StringifiedC +---@param fragmentSource StringifiedC +---@param numSamplers number +---@param customUniforms table +function renderlayers.registerShader(shaderName, format, vertexSource, fragmentSource, numSamplers, customUniforms) end + +---Sets the priority of a render layer. Layers with lower priorities are rendered first. By default, all priorities are 0 +---@param renderLayerName string +---@param value number +function renderlayers.setPriority(renderLayerName, value) end + +---Sets the value of the specified uniform in the specified shader. If the shader does not exist yet, does nothing +---@param shaderName string +---@param uniformName CustomUniformID +---@param value any +function renderlayers.setUniform(shaderName, uniformName, value) end + +--================================================================================================-- +--===== SHADER ONLY FUNCTIONS ==================================================================-- +--================================================================================================-- + +---Sets the GL blend equation +---@param equation GL_BlendEquationMode +function renderlayers.blendEquation(equation) end + +---Sets the GL blend function +---@param src GL_BlendingFactorSrc +---@param dst GL_BlendingFactorDest +function renderlayers.blendFunc(src, dst) end + +---Sets the GL blend function +---@param srcRGB GL_BlendingFactorSrc +---@param dstRGB GL_BlendingFactorDest +---@param srcAlpha GL_BlendingFactorSrc +---@param dstAlpha GL_BlendingFactorDest +function renderlayers.blendFuncSeperate(srcRGB, dstRGB, srcAlpha, dstAlpha) end + +---Enables/disables the GL color mask +---@param boolean boolean +function renderlayers.colorMask(boolean) end + +---A minecraftβ†’specific function, resets the GL blend function to default +function renderlayers.defaultBlendFunc() end + +---Sets the GL depth function +---@param func GL_DepthFunction +function renderlayers.depthFunc(func) end + +---Enables/disables the GL depth mask +---@param boolean boolean +function renderlayers.depthMask(boolean) end + +---Disables blending +function renderlayers.disableBlend() end + +---Disables color logic operations +function renderlayers.disableColorLogicOp() end + +---Disables culling +function renderlayers.disableCull() end + +---Disables depth testing +function renderlayers.disableDepthTest() end + +---Disables lightmap testing +function renderlayers.disableLightmap() end + +---Disables overlay +function renderlayers.disableOverlay() end + +---Disables GL scissors +function renderlayers.disableScissors() end + +---Disables stencil testing +function renderlayers.disableStencil() end + +---Enables blending +function renderlayers.enableBlend() end + +---Enables color logic operations +function renderlayers.enableColorLogicOp() end + +---Enables culling +function renderlayers.enableCull() end + +---Enables depth testing +function renderlayers.enableDepthTest() end + +---Enables lightmap testing +function renderlayers.enableLightmap() end + +---Enables overlay +function renderlayers.enableOverlay() end + +---Enables GL scissors with those values +---@param x number +---@param y number +---@param width number +---@param height number +function renderlayers.enableScissors(x, y, width, height) end + +---Enables stencil testing +function renderlayers.enableStencil() end + +---Sets the shader line width +---@param float number +function renderlayers.lineWidth(float) end + +---Sets the GL color logic operation +---@param operation GL_All +function renderlayers.logicOp(operation) end + +renderlayers.logicOp() +---Resets the rendering to default state +function renderlayers.restoreDefaults() end + +---Sets the designated texture based on the name +---@param index number +---@param textureName GL_Texture +function renderlayers.setTexture(index, textureName) end + +---Sets the GL stencil function +---@param func GL_StencilFunction +---@param ref number +---@param mask number +function renderlayers.stencilFunc(func, ref, mask) end + +---Sets the GL stencil mask +---@param number number +function renderlayers.stencilMask(number) end + +---Sets the GL stencil operations +---@param sfail GL_StencilOp +---@param dpfail GL_StencilOp +---@param dppass GL_StencilOp +function renderlayers.stencilOp(sfail, dpfail, dppass) end + +---Uses the designated shader +---@param shaderName string +function renderlayers.useShader(shaderName) end + +renderlayers.GL_ALWAYS=519 +renderlayers.GL_AND=5377 +renderlayers.GL_AND_INVERTED=5380 +renderlayers.GL_AND_REVERSE=5378 +renderlayers.GL_CLEAR=5376 +renderlayers.GL_CONSTANT_ALPHA=32771 +renderlayers.GL_CONSTANT_COLOR=32769 +renderlayers.GL_COPY=5379 +renderlayers.GL_COPY_INVERTED=5388 +renderlayers.GL_DECR=7683 +renderlayers.GL_DECR_WRAP=34056 +renderlayers.GL_DST_ALPHA=772 +renderlayers.GL_DST_COLOR=774 +renderlayers.GL_EQUAL=514 +renderlayers.GL_EQUIV=5385 +renderlayers.GL_FUNC_ADD=32774 +renderlayers.GL_FUNC_REVERSE_SUBTRACT=32779 +renderlayers.GL_FUNC_SUBTRACT=32778 +renderlayers.GL_GEQUAL=518 +renderlayers.GL_GREATER=516 +renderlayers.GL_INCR=7682 +renderlayers.GL_INCR_WRAP=34055 +renderlayers.GL_INVERT=5386 +renderlayers.GL_KEEP=7680 +renderlayers.GL_LEQUAL=515 +renderlayers.GL_LESS=513 +renderlayers.GL_MAX=32776 +renderlayers.GL_MIN=32775 +renderlayers.GL_NAND=5390 +renderlayers.GL_NEVER=512 +renderlayers.GL_NOR=5384 +renderlayers.GL_NOOP=5381 +renderlayers.GL_NOTEQUAL=517 +renderlayers.GL_ONE=1 +renderlayers.GL_ONE_MINUS_CONSTANT_ALPHA=32772 +renderlayers.GL_ONE_MINUS_CONSTANT_COLOR=32770 +renderlayers.GL_ONE_MINUS_DST_ALPHA=773 +renderlayers.GL_ONE_MINUS_DST_COLOR=775 +renderlayers.GL_ONE_MINUS_SRC_ALPHA=771 +renderlayers.GL_ONE_MINUS_SRC_COLOR=769 +renderlayers.GL_OR=5383 +renderlayers.GL_OR_INVERTED=5389 +renderlayers.GL_OR_REVERSE=5387 +renderlayers.GL_REPLACE=7681 +renderlayers.GL_SET=5391 +renderlayers.GL_SRC_ALPHA=770 +renderlayers.GL_SRC_ALPHA_SATURATE=776 +renderlayers.GL_SRC_COLOR=768 +renderlayers.GL_XOR=5382 +renderlayers.GL_ZERO=0 \ No newline at end of file diff --git a/.vscode/figura/rendertasks.lua b/.vscode/figura/rendertasks.lua new file mode 100644 index 0000000..2566de3 --- /dev/null +++ b/.vscode/figura/rendertasks.lua @@ -0,0 +1,94 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---Render task modes for items +---@alias RenderMode +---| "NONE" +---| "THIRD_PERSON_LEFT_HAND" +---| "THIRD_PERSON_RIGHT_HAND" +---| "FIRST_PERSON_LEFT_HAND" +---| "FIRST_PERSON_RIGHT_HAND" +---| "HEAD" +---| "GUI" +---| "GROUND" +---| "FIXED + +---@class RenderTaskTable +local RenderTaskTable = {} + +---Returns if the renderTask uses emissive textures. +---@return boolean +function RenderTaskTable.getEmissive() end + +---Returns if the renderTask is currently enabled. +---@return boolean +function RenderTaskTable.getEnabled() end + +---Returns the relative position of the renderTask. +---@return VectorPos +function RenderTaskTable.getPos() end + +---Returns the relative rotation of the renderTask. +---@return VectorAng +function RenderTaskTable.getRot() end + +---Returns the relative scale of the renderTask. +---@return Vector3 +function RenderTaskTable.getScale() end + +---Sets whether the renderTask uses emissive textures. +---@param bool boolean +function RenderTaskTable.setEmissive(bool) end + +---Sets whether the renderTask is enabled. +---@param enabled boolean +function RenderTaskTable.setEnabled(enabled) end + +---Sets the renderTask's position relative to the attatched model part. +---@param pos VectorPos +function RenderTaskTable.setPos(pos) end + +---Sets the renderTask's rotation relative to the attatched model part. +---@param rot VectorAng +function RenderTaskTable.setRot(rot) end + +---Sets the renderTask's scale relative to the attatched model part. +---@param scale Vector3 +function RenderTaskTable.setScale(scale) end + +---@class ShaderAllowedTaskTable : RenderTaskTable +local ShaderAllowedTaskTable = {} + +---Sets the renderlayer this rendertask will use. +---@param name string +function ShaderAllowedTaskTable.setRenderLayer(name) end + +---@class BlockTaskTable : ShaderAllowedTaskTable +local BlockTaskTable = {} + +---Change the block the task is rendering. +---@param block BlockState|BlockID +function BlockTaskTable.setBlock(block) end + +---@class ItemTaskTable : ShaderAllowedTaskTable +local ItemTaskTable = {} + +---Change the item the task is rendering. +---@param item ItemStack|ItemID +function ItemTaskTable.setItem(item) end + +---Change how the item will be rendered. +---@param mode RenderMode +function ItemTaskTable.setItemMode(mode) end + +---@class TextTaskTable : RenderTaskTable +local TextTaskTable = {} + +---Sets the vertical space between newlines in pixels. +---@param space number +function TextTaskTable.setLineSpacing(space) end + +---Change the text the task is rendering. +---@param text string +function TextTaskTable.setText(text) end diff --git a/.vscode/figura/sound.lua b/.vscode/figura/sound.lua new file mode 100644 index 0000000..7a0a0b2 --- /dev/null +++ b/.vscode/figura/sound.lua @@ -0,0 +1,52 @@ +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains functions relating to sounds. +sound = {} + +---Returns a table of all currently playing custom sounds. +--- +---If `owners` is set, the returned table will alternate sound names and their owner UUIDs. +---@param owners? boolean +---@return string[] +function sound.getCustomSounds(owners) end + +---Returns a list of all registered custom sound names. +---@return string[] +function sound.getRegisteredCustomSounds() end + +---Returns a list of all sounds the player can hear. +---@return string[] +function sound.getSounds() end + +---Returns if a custom sound with the given name is registered. +---@param name string +---@return boolean +function sound.isCustomSoundRegistered(name) end + +---Plays a custom sound at the given world position. +---@param name string +---@param pos VectorPos +---@param vol_pitch? Vector2 +function sound.playCustomSound(name, pos, vol_pitch) end + +---`vol_pitch: Vector2` +--- Two numbers that represent the volume and pitch of the sound. +---*** +---Plays a sound event at the given world position. +---Sounds are played on the `player` channel. +---@param name string +---@param pos VectorPos +---@param vol_pitch? Vector2 +function sound.playSound(name, pos, vol_pitch) end + +---Adds a new custom sound to your model, using data from either a table of bytes, OR a +---base64-encoded string. +---@param name string +---@param data string|integer[] +function sound.registerCustomSound(name, data) end + +---Stops the custom sound with the given name. +---@param name string +function sound.stopCustomSound(name) end diff --git a/.vscode/figura/vectors.lua b/.vscode/figura/vectors.lua new file mode 100644 index 0000000..2ee1105 --- /dev/null +++ b/.vscode/figura/vectors.lua @@ -0,0 +1,388 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A list of up to 6 numbers that can mean anything. +---You can either use the fields or index by a number to get a value from the vector. +--- +---The following accessors correspond to the following numbers: +--->1: x, r, u, pitch +--->2: y, g, v, yaw, volume +--->3: z, b, roll +--->4: w, a +--->5: t +--->6: h +--- +---You can use a `table` with up to 6 values in place of a `Vector`. +---The `table` can contain other `table`s to merge them. +--- +---@class Vector +---@field [1] number +---@field [2] number +---@field [3] number +---@field [4] number +---@field [5] number +---@field [6] number +---@field x number +---@field y number +---@field z number +---@field w number +---@field t number +---@field h number +---@field pitch number +---@field yaw number +---@field roll number +---@field r number +---@field g number +---@field b number +---@field a number +---@field u number +---@field v number +---@field volume number +local Vector = {} + +---Returns the (smallest) angle between this `Vector` and the given `Vector` in radians. +---@param vec Vector +---@return number +function Vector.angleTo(vec) end + +---Converts a Vector to a table. +---The table is created with numeric indexes. +---@return number[] +function Vector.asTable() end + +---Returns the cross product of this `Vector` and the given `Vector`. +---@param vec Vector +---@return Vector +function Vector.cross(vec) end + +---Gets the distance between this `Vector` and the given `Vector`. +---@param vec Vector +---@return number +function Vector.distanceTo(vec) end + +---Returns the dot product of this `Vector` and the given `Vector`. +---@param vec Vector +---@return number +function Vector.dot(vec) end + +---Gets the distance between `<0,0,0,0,0,0>` and this `Vector`. +---@return number +function Vector.getLength() end + +---Returns a `Vector` which is a copy of this `Vector` but resized to have a length of 1. +---@return Vector +function Vector.normalized() end + +---Returns the vector converted into degrees. +---@return Vector +function Vector.toDeg() end + +---Returns the vector converted into radians. +---@return Vector +function Vector.toRad() end + + +---Vector6 ⇐ Vector +---*** +---A list of six numbers that can mean anything. +---You can either use the fields or index by a number to get a value from the vector. +--- +---The following accessors correspond to the following numbers: +--->1: x, r, u, pitch +--->2: y, g, v, yaw +--->3: z, b, roll +--->4: w, a +--->5: t +--->6: h +--- +---You can use a `table` with up to 6 values in place of a `Vector6`. +---The `table` can contain other `table`s to merge them. +--- +---@class Vector6 : Vector + + +---Vector5 ⇐ Vector +---*** +---A list of five numbers that can mean anything. +---You can either use the fields or index by a number to get a value from the vector. +--- +---The following accessors correspond to the following numbers: +--->1: x, r, u, pitch +--->2: y, g, v, yaw +--->3: z, b, roll +--->4: w, a +--->5: t +--- +---You can use a `table` with up to 5 values in place of a `Vector5`. +---The `table` can contain other `table`s to merge them. +--- +---@class Vector5 : Vector + + +---Vector4 ⇐ Vector +---*** +---A list of four numbers that can mean anything. +---You can either use the fields or index by a number to get a value from the vector. +--- +---The following accessors correspond to the following numbers: +--->1: x, r, u, pitch +--->2: y, g, v, yaw +--->3: z, b, roll +--->4: w, a +--- +---If you wish to get a number past the fourth, you will need to use +---different accessors or directly index it. (`Vector[#]`) +--- +---You can use a `table` with up to 4 values in place of a `Vector4`. +---The `table` can contain other `table`s to merge them. +---@class Vector4 : Vector + + +---Vector3 ⇐ Vector +---*** +---A list of three numbers that can mean anything. +---You can either use the fields or index by a number to get a value from the vector. +--- +---The following accessors correspond to the following numbers: +--->1: x, r, u, pitch +--->2: y, g, v, yaw +--->3: z, b, roll +--- +---If you wish to get a number past the third, you will need to use +---different accessors or directly index it. (`Vector[#]`) +--- +---You can use a `table` with up to 3 values in place of a `Vector3`. +---The `table` can contain other `table`s to merge them. +---@class Vector3 : Vector + + +---Vector2 ⇐ Vector +---*** +---A list of two numbers that can mean anything. +---You can either use the fields or index by a number to get a value from the vector. +--- +---The following accessors correspond to the following numbers: +--->1: x, r, u, pitch +--->2: y, g, v, yaw +--- +---If you wish to get a number past the second, you will need to use +---different accessors or directly index it. (`Vector[#]`) +--- +---You can use a `table` with up to 2 values in place of a `Vector2`. +---The `table` can contain other `table`s to merge them. +---@class Vector2 : Vector + + +---VectorPos ⇐ Vector +---*** +---A position in 3D space. +---This can also be used for 3D scales. +--- +---The following accessors correspond to the following numbers: +--->1: x +--->2: y +--->3: z +--- +---If you wish to get a number past the third, you will need to use +---different accessors or directly index it. (`Vector[#]`) +--- +---You can use a `table` with up to 3 values in place of a `VectorPos`. +---The `table` can contain other `table`s to merge them. +---@class VectorPos : Vector + + +---VectorAng ⇐ Vector +---*** +---A list of up to three Euler Angles: pitch, yaw, and (sometimes) roll. +--- +---The following accessors correspond to the following numbers: +--->1: pitch +--->2: yaw +--->3: roll +--- +---If you wish to get a number past the third, you will need to use +---different accessors or directly index it. (`Vector[#]`) +--- +---You can use a `table` with up to 3 values in place of a `VectorAng`. +---The `table` can contain other `table`s to merge them. +---@class VectorAng : Vector + + +---VectorColor ⇐ Vector +---*** +---A color value. Stored in `Red, Green, Blue, Alpha` format. +---Color vectors use numbers between 0 and 1. +--- +---If your numbers are between 0 and 255, divide your numbers by 255. +---Ex: To change `<100,237,76>` to fit in a color vector, change it to `<100/255,237/255,76/255>`. +--- +---Note: Despite there being an `a` accessor, it is very rarely used. Assume it is not used unless +---otherwise specified. +--- +---The following accessors correspond to the following numbers: +--->1: r +--->2: g +--->3: b +--->4: a +--- +---If you wish to get a number past the fourth, you will need to use +---different accessors or directly index it. (`Vector[#]`) +--- +---You can use a `table` with up to 4 values in place of a `VectorColor`. +---The `table` can contain other `table`s to merge them. +---@class VectorColor : Vector + + +---VectorHSV ⇐ VectorColor ⇐ Vector +---*** +---A color value. Stored in `Hue, Saturation, Value, Alpha` format. +---Color vectors use numbers between 0 and 1. +--- +---If your hue is between 0-360, divide it by 360. +---If your saturation or value are between 0 and 100, divide them by 100. +---Ex: To change `<290,75,50>` to fit in a color vector, change it to `<290/360,75/100,50/100>`. +--- +---Note: Despite there being an `a` accessor, it is very rarely used. Assume it is not used unless +---othewise specified. +--- +---The following accessors correspond to the following numbers: +--->1: r (Hue) +--->2: g (Saturation) +--->3: b (Value) +--->4: a +--- +---If you wish to get a number past the fourth, you will need to use +---different accessors or directly index it. (`Vector[#]`) +--- +---You can use a `table` with up to 4 values in place of a `VectorHue`. +---The `table` can contain other `table`s to merge them. +---@class VectorHSV : VectorColor + + +---VectorUV ⇐ Vector +---*** +---A UV position offset. +---UV vectors use numbers between 0 and 1. +---Ex: To convert a UV offset of 10 pixels right and 5 pixels down, use +---`10/image_width,5/image_height` +---where `image_width` and `image_height` are the size of your texture in pixels. +--- +---The following accessors correspond to the following numbers: +--->1: u +--->2: v +--- +---If you wish to get a number past the second, you will need to use +---different accessors or directly index it. (`Vector[#]`) +--- +---You can use a `table` with up to 2 values in place of a `VectorUV`. +---The `table` can contain other `table`s to merge them. +---@class VectorUV : Vector + + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---Contains functions for creating and modifying `Vector`s. +vectors = {} + +---Returns an XYZ Euler representation of the rotation around (axis) by (angle) degrees. +---@param axis Vector3 +---@param angle number +---@return VectorAng +function vectors.axisAngleToEuler(axis, angle) end + +---Returns the XYZ Euler rotation from the given quaternion +---@param quaternion Vector4 +---@return Vector3 +function vectors.fromQuaternion(quaternion) end + +---Creates a Vector with `x` amount of numbers. +---@param x 1|2|3|4|5|6 +---@return Vector +function vectors.getVector(x) end + +---Creates a Color Vector from an HSV vector. +--- +---Note: The resulting color will not have `a` set. +---@param vec VectorHSV +---@return VectorColor +function vectors.hsvToRGB(vec) end + +---Creates a Color Vector from a 24 bit integer. +--- +---Note: The resulting color will not have `a` set. +---@param x integer +---@return VectorColor +function vectors.intToRGB(x) end + +---Applies linear interpolation to two Vectors. +---Returns a `Vector` that is between `Vector a` and `Vector b`, +---using `c` as the distance from `Vector a` to `Vector b`. +--- +---Ex: A `c` of .5 will be in directly between the two `Vector`s +---and a `c` of .25 will be 25% of the way from `Vector a` to `Vector b` +---@param a Vector +---@param b Vector +---@param c number +---@return Vector +function vectors.lerp(a, b, c) end + +---Creates a Vector from a table. +---@param t number[] +---@return Vector +--- +function vectors.of(t) end + +---Creates an HSV Vector from a Color Vector. +---@param vec VectorColor +---@return VectorHSV +function vectors.rgbToHSV(vec) end + +---Creates a number from a Color Vector. +---@param vec VectorColor +---@return integer +function vectors.rgbToINT(vec) end + +---Return a vector after it has been rotated around the given axis by `angle` degrees. +---@param vector Vector +---@param axis Vector +---@param angle number +---@return Vector +function vectors.rotateAroundAxis(vector, axis, angle) end + +---Returns a vector after it is rotated by the given quaternion. +---The vectors given must be in radians. +---The output will also be in radians. +---@param vector VectorAng +---@param quaternion Vector4 +---@return VectorAng +function vectors.rotateWithQuaternion(vector, quaternion) end + +---Returns a quaternion from the given XYZ Euler rotation. +---@param vector Vector3 +---@return Vector4 +function vectors.toQuaternion(vector) end + +---Creates a Position Vector from a block coordinate. +--- +---You can use this function to place a `NO_PARENT` part at an exact block coordinate. +---@param vec VectorPos +---@return VectorPos +function vectors.worldToPart(vec) end + +---Same as `.worldToPartPos()` but tied with the camera instead. +---@param offset VectorPos +---@return VectorPos +function vectors.worldToCameraPos(offset) end + +---Returns the position on the screen where a given world position is. +--- +---The first two values are the X and Y position of the coordinate on the screen. (From `-1` to `1`) +---The third value is some value that is `>1` when the coordinate is in front of the screen and `<1` +---when behind the screen. +---The fourth value is the distance of the coordinate from the camera. +---@param pos VectorPos +---@return Vector4 +function vectors.worldToScreenSpace(pos) end diff --git a/.vscode/figura/world.lua b/.vscode/figura/world.lua new file mode 100644 index 0000000..2682f81 --- /dev/null +++ b/.vscode/figura/world.lua @@ -0,0 +1,120 @@ +--================================================================================================-- +--===== CLASSES ================================================================================-- +--================================================================================================-- + +---A 4-bit int. +---@alias NibbleInt 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15 + +---A phase of the moon. +---@alias MoonPhase +---| 0 #Full Moon +---| 1 #Waning Gibbous +---| 2 #Third Quarter +---| 3 #Waning Crescent +---| 4 #New Moon +---| 5 #Waxing Crescent +---| 6 #First Quarter +---| 7 #Waxing Gibbous + +---A Minecraft world. +---@class World +local World = {} + +---Returns the `Biome` at the specified world position. +---@param pos VectorPos +---@return Biome +function World.getBiome(pos) end + +---Returns the block-light level at the given block position. +--- +---Note: Returns `15` if the block position is not loaded. +---@param pos VectorPos +---@return NibbleInt +function World.getBlockLightLevel(pos) end + +---Returns the block state at the given block position. +--- +---Note: Always returns a valid block state, even if the block position is unloaded. +---@param pos VectorPos +---@return BlockState +function World.getBlockState(pos) end + +---Returns all players in view distance (including yourself.) +---@return table +function World.getPlayers() end + +---Returns the combined light level at the given block position. +--- +---Note: Returns `15` if the block position is not loaded. +---@param pos VectorPos +---@return NibbleInt +function World.getLightLevel(pos) end + +---See `.getTimeOfDay()`. +---@deprecated +---@return integer +function World.getLunarTime() end + +---Returns the current moon phase. +---@return MoonPhase +function World.getMoonPhase() end + +---Returns how heavy rain is falling in this world. +---`0` is no rain, `1` is full rain. +---@param delta number +---@return number +function World.getRainGradient(delta) end + +---Returns the redstone power the given block position is receiving. +---This does *not* return the redstone power the block is sending. +--- +---Note: Returns `0` if the block position is not loaded. +---@param pos VectorPos +---@return NibbleInt +function World.getRedstonePower(pos) end + +---Returns the sky-light level of the given block position. +--- +---Note: Returns `15` if the block position is not loaded. +---@param pos VectorPos +---@return NibbleInt +function World.getSkyLightLevel(pos) end + +---Returns the strong redstone power of the block position is receiving. +---This does *not* return the redstone power the block is sending. +---This *only* checks for direct connections, redstone power sent through non-redstone blocks are +---ignored. +---@param pos VectorPos +---@return NibbleInt +function World.getStrongRedstonePower(pos) end + +---Returns the total amount of ticks the server has run for. +---@return integer +function World.getTime() end + +---Returns the total amount of ticks that have passed since the start of day 0. +---This will not always sync up with `getTime` if the world's time is modified. +---@return integer +function World.getTimeOfDay() end + +---Returns if the world actually exists. +---This is useful for checking if the avatar is currently in a "fake" world. +---@return boolean +function World.hasWorld() end + +---Returns if the current weather is thunder. +---@return boolean +function World.isLightning() end + +---Returns if the given position has sky access. +---@param pos VectorPos +---@return boolean +function World.isOpenSky(pos) end + +--================================================================================================-- +--===== FUNCTIONS ==============================================================================-- +--================================================================================================-- + +---The world that this script is running in currently. +---@type World +world = {} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b3642d5 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,54 @@ +{ + //Stops VSCode from making suggestions. + "editor.wordBasedSuggestions": false, + + //(Supposedly) makes VSCode only search the current file for words to auto-complete. + //Might not work... Who knows. + "editor.wordBasedSuggestionsMode": "currentDocument", + + //(Supposedly) disables auto-completing words from other files. + //Might not work... Who knows. + "Lua.completion.workspaceWord": false, + + //Removes some clutter from the documentation screen. + "Lua.completion.displayContext": 0, + + //Enables hint types, these show up next to a variable if the type of a variable is set or able to + //be guessed by the language server. + "Lua.hint.enable": true, + "Lua.hint.setType": true, + + //Sets the runtime version to the version used by Figura. + "Lua.runtime.version": "Lua 5.2", + + //Boring Telemetry stuff. You can enable it I guess? + "Lua.telemetry.enable": false, + + //Stops the language server from re-diagnosing the whole model_files folder when you add or remove + //a character in an unrelated file. + "Lua.diagnostics.workspaceDelay": -1, + + //Disables some unneeded diagnostics that many will not care about. + //Do not touch unless you know what you are doing. + "Lua.diagnostics.disable": [ + "lowercase-global", + "trailing-space", + "unbalanced-assignments", + "duplicate-doc-class" + ], + + //Changes the severity of some diagnostics to reflect their actual severity in Figura. + //Do not touch unless you know what you are doing. + "Lua.diagnostics.severity": { + "unused-local": "Information", + "unused-vararg": "Information", + "redundant-parameter": "Information", + "redundant-value": "Information", + "redefined-local": "Information" + }, + + //Enables the documentation. + "Lua.workspace.library": [ + "./.vscode/figura" + ], +} diff --git a/archiso/releng/airootfs/etc/skel/.bashrc b/archiso/releng/airootfs/etc/skel/.bashrc new file mode 100644 index 0000000..4c747ec --- /dev/null +++ b/archiso/releng/airootfs/etc/skel/.bashrc @@ -0,0 +1,54 @@ +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +# Load starship prompt if starship is installed +if [ -x /usr/bin/starship ]; then + __main() { + local major="${BASH_VERSINFO[0]}" + local minor="${BASH_VERSINFO[1]}" + + if ((major > 4)) || { ((major == 4)) && ((minor >= 1)); }; then + source <("/usr/bin/starship" init bash --print-full-init) + else + source /dev/stdin <<<"$("/usr/bin/starship" init bash --print-full-init)" + fi + } + __main + unset -f __main +fi + +# Advanced command-not-found hook +source /usr/share/doc/find-the-command/ftc.bash + +# Aliases +alias dir='dir --color=auto' +alias egrep='grep -E --color=auto' +alias fgrep='grep -F --color=auto' +alias fixpacman="sudo rm /var/lib/pacman/db.lck" +alias grep='grep --color=auto' +alias grubup="sudo update-grub" +alias hw='hwinfo --short' +alias psmem10='ps auxf | sort -nr -k 4 | head -10' +alias psmem='ps auxf | sort -nr -k 4' +alias rmpkg="sudo pacman -Rdd" +alias tarnow='tar -acf ' +alias untar='tar -zxvf ' +alias upd='/usr/bin/update' +alias vdir='vdir --color=auto' +alias wget='wget -c ' + +# Help people new to Arch +alias apt-get='man pacman' +alias apt='man pacman' +alias helpme='cht.sh --shell' +alias please='sudo' +alias tb='nc termbin.com 9999' + +# Cleanup orphaned packages +alias cleanup='sudo pacman -Rns `pacman -Qtdq`' + +# Get the error messages from journalctl +alias jctl="journalctl -p 3 -xb" + +# Recent installed packages +alias rip="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl" diff --git a/archiso/releng/airootfs/etc/skel/.config/fish/completions/__gitnow_completions.fish b/archiso/releng/airootfs/etc/skel/.config/fish/completions/__gitnow_completions.fish new file mode 100644 index 0000000..c1e028a --- /dev/null +++ b/archiso/releng/airootfs/etc/skel/.config/fish/completions/__gitnow_completions.fish @@ -0,0 +1,80 @@ +source $__fish_data_dir/completions/git.fish + +# Merge command + +complete -f -x -c merge -a '(__fish_git_branches)' + +complete -f -x -c merge \ + -s h -l help \ + -d "Show information about the options for this command" + +complete -f -x -c merge \ + -s a -l abort \ + -d "Abort conflicted merge" + +complete -f -x -c merge \ + -s c -l continue \ + -d "Continue merge" + +# Move command + +complete -f -x -c move -a '(__fish_git_branches)' + +complete -f -x -c move \ + -s h -l help \ + -d "Show information about the options for this command" + +complete -f -x -c move \ + -s p -l prev \ + -d "Switch to a previous branch using the `--no-apply-stash` option (equivalent to \"move -\")" + +complete -f -x -c move \ + -s n -l no-apply-stash \ + -a '(__fish_git_branches)' \ + -d "Switch to a local branch but without applying current stash" + +complete -f -x -c move \ + -s u -l upstream \ + -a '(__fish_git_branches)' \ + -d "Fetch a remote branch and switch to it applying current stash" + + +# Tag command + +complete -f -x -c tag \ + -d "List all tags in a lexicographic order and treating tag names as versions" + +complete -f -x -c tag -a '(__fish_git_tags)' + +complete -f -x -c tag \ + -s h -l help \ + -d "Show information about the options for this command" + +complete -f -x -c tag \ + -s l -l latest \ + -d "Show only the latest Semver release tag version (no suffixed ones or others)" + +complete -f -x -c tag \ + -s x -l major \ + -d "Tag auto-incrementing a major version number" + +complete -f -x -c tag \ + -s y -l minor \ + -d "Tag auto-incrementing a minor version number" + +complete -f -x -c tag \ + -s z -l patch \ + -d "Tag auto-incrementing a patch version number" + +# TODO: pre-release versions are not supported yet +# complete -f -x -c tag \ +# -s a -l premajor \ +# -d "Tag auto-incrementing a premajor version number" + +# complete -f -x -c tag \ +# -s b -l preminor \ +# -d "Tag auto-incrementing a preminor version number" + +# complete -f -x -c tag \ +# -s c -l prepatch \ +# -d "Tag auto-incrementing a prepatch version number" diff --git a/archiso/releng/airootfs/etc/skel/.config/fish/completions/nvm.fish b/archiso/releng/airootfs/etc/skel/.config/fish/completions/nvm.fish new file mode 100644 index 0000000..14be1b7 --- /dev/null +++ b/archiso/releng/airootfs/etc/skel/.config/fish/completions/nvm.fish @@ -0,0 +1,21 @@ +complete --command nvm --exclusive +complete --command nvm --exclusive --long version --description "Print version" +complete --command nvm --exclusive --long help --description "Print help" +complete --command nvm --long silent --description "Suppress standard output" + +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments install --description "Download and activate the specified Node version" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments use --description "Activate the specified Node version in the current shell" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list --description "List installed Node versions" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list-remote --description "List available Node versions to install" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments current --description "Print the currently-active Node version" +complete --command nvm --exclusive --condition "__fish_seen_subcommand_from install" --arguments "( + test -e $nvm_data && string split ' ' <$nvm_data/.index +)" +complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use" --arguments "(_nvm_list | string split ' ')" +complete --command nvm --exclusive --condition __fish_use_subcommand --arguments uninstall --description "Uninstall the specified Node version" +complete --command nvm --exclusive --condition "__fish_seen_subcommand_from uninstall" --arguments "( + _nvm_list | string split ' ' | string replace system '' +)" +complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use uninstall" --arguments "( + set --query nvm_default_version && echo default +)" diff --git a/archiso/releng/airootfs/etc/skel/.config/fish/completions/sdk.fish b/archiso/releng/airootfs/etc/skel/.config/fish/completions/sdk.fish new file mode 100644 index 0000000..7908dc8 --- /dev/null +++ b/archiso/releng/airootfs/etc/skel/.config/fish/completions/sdk.fish @@ -0,0 +1,243 @@ +# Defines autocompletion for SDKMAN! + +# Copyright (c) 2018-2023 Raphael Reitzig +# MIT License (MIT) +# https://github.com/reitzig/sdkman-for-fish + +# Guard: SDKMAN! needs to be installed +if not test -f "$SDKMAN_DIR/bin/sdkman-init.sh" + exit 0 +end + +# # # # # # +# Completion trigger predicates +# # # # # # + +# Test if there is no command +function __fish_sdkman_no_command + set cmd (commandline -opc) + + if [ (count $cmd) -eq 1 ] + return 0 + end + return 1 +end + +# Test if the main command matches one of the parameters +function __fish_sdkman_using_command + set cmd (commandline -opc) + + if [ (count $cmd) -eq 2 ] + if contains $cmd[2] $argv + return 0 + end + end + return 1 +end + +function __fish_sdkman_specifying_candidate + set cmd (commandline -opc) + + if [ (count $cmd) -eq 3 ] # currently, sdk does not support multiple versions + if contains $cmd[2] $argv + return 0 + end + end + return 1 +end + +function __fish_sdkman_command_has_enough_parameters + set cmd (commandline -opc) + + if [ (count $cmd) -ge (math $argv[1] + 2) ]; and contains $cmd[2] $argv[2..-1] + return 0 + end + return 1 +end + +# # # # # # +# Data collectors +# # # # # # + +function __fish_sdkman_candidates + cat "$HOME"/.sdkman/var/candidates | tr ',' '\n' +end + +function __fish_sdkman_candidates_with_versions + set regexpHome (string replace -a '/' '\\/' "$HOME/") + + find "$HOME"/.sdkman/candidates/ -mindepth 2 -maxdepth 2 -name '*current' \ + | awk -F '/' '{ print $(NF-1) }' \ + | sort -u +end + +function __fish_sdkman_installed_versions + set cmd (commandline -opc) + if [ -d "$HOME"/.sdkman/candidates/$cmd[3]/current ] + ls -v1 "$HOME"/.sdkman/candidates/$cmd[3] | grep -v current + end +end + +# # # # # # +# Completion specification +# # # # # # + +# install +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'i install' \ + -d 'Install new version' +complete -c sdk -f -n '__fish_sdkman_using_command i install' \ + -a "(__fish_sdkman_candidates)" +# TODO complete available versions --> issue #4 +complete -c sdk -f -n '__fish_sdkman_specifying_candidate i install' \ + -a 'a.b.c' \ + -d "version list unavailable" +complete -c sdk -f -n '__fish_sdkman_specifying_candidate i install' \ + -a 'x.y.z' \ + -d "Specify path to install custom version." +# Implicit: complete files as fourth parameter +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 3 i install' + # block + +# uninstall +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'rm uninstall' -d 'Uninstall version' +complete -c sdk -f -n '__fish_sdkman_using_command rm uninstall' \ + -a "(__fish_sdkman_candidates_with_versions)" +complete -c sdk -f -n '__fish_sdkman_specifying_candidate rm uninstall' \ + -a "(__fish_sdkman_installed_versions)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 rm uninstall' + # block + +# list +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'ls list' \ + -d 'List versions' +complete -c sdk -f -n '__fish_sdkman_using_command ls list' \ + -a "(__fish_sdkman_candidates)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 ls list' + # block + +# use +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'u use' \ + -d 'Use specific version' +complete -c sdk -f -n '__fish_sdkman_using_command u use' \ + -a "(__fish_sdkman_candidates_with_versions)" +complete -c sdk -f -n '__fish_sdkman_specifying_candidate u use' \ + -a "(__fish_sdkman_installed_versions)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 u use' + # block + +# default +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'd default' \ + -d 'Set default version' +complete -c sdk -f -n '__fish_sdkman_using_command d default' \ + -a "(__fish_sdkman_candidates_with_versions)" +complete -c sdk -f -n '__fish_sdkman_specifying_candidate d default' \ + -a "(__fish_sdkman_installed_versions)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 d default' + # block + +# current +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'c current' \ + -d 'Display current version' +complete -c sdk -f -n '__fish_sdkman_using_command c current' \ + -a "(__fish_sdkman_candidates)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 c current' + # block + +# upgrade +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'ug upgrade' \ + -d 'Display what is outdated' +complete -c sdk -f -n '__fish_sdkman_using_command ug upgrade' \ + -a "(__fish_sdkman_candidates_with_versions)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 ug upgrade' + # block + +# version +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'v version' \ + -d 'Display version' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 v version' + # block + +# help +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'help' \ + -d 'Display help message' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 h help' + # block + +# offline +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'offline' \ + -d 'Set offline status' +complete -c sdk -f -n '__fish_sdkman_using_command offline' \ + -a 'enable' \ + -d 'Make sdk work while offline' +complete -c sdk -f -n '__fish_sdkman_using_command offline' \ + -a 'disable' \ + -d 'Turn on all features' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 offline' + # block + +# selfupdate +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'selfupdate' \ + -d 'Update sdk' +complete -c sdk -f -n '__fish_sdkman_using_command selfupdate' \ + -a 'force' \ + -d 'Force re-install of current version' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 selfupdate' + # block + +# update +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'update' \ + -d 'Reload the candidate list' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 update' + # block + +# flush +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'flush' \ + -d 'Clear out archives and temporary storage folders' +complete -c sdk -f -n '__fish_sdkman_using_command flush' \ + -a 'temp' \ + -d 'Clear out staging work folder' +complete -c sdk -f -n '__fish_sdkman_using_command flush' \ + -a 'version' \ + -d 'Flush version file' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 flush' + # block + +# env +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'e env' \ + -d 'Load environment from .sdkmanrc file' +complete -c sdk -f -n '__fish_sdkman_using_command e env' \ + -a 'init' \ + -d 'Initialize .sdkmanrc file' +complete -c sdk -f -n '__fish_sdkman_using_command e env' \ + -a 'install' \ + -d 'Install all candidate versions listed in .sdkmanrc' +complete -c sdk -f -n '__fish_sdkman_using_command e env' \ + -a 'clear' \ + -d 'Unload currently loaded environment' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 e env' + # block + +# home +complete -c sdk -f -n '__fish_sdkman_no_command' \ + -a 'h home' \ + -d 'Show installation folder of given candidate' +complete -c sdk -f -n '__fish_sdkman_using_command h home' \ + -a "(__fish_sdkman_candidates_with_versions)" +complete -c sdk -f -n '__fish_sdkman_specifying_candidate h home' \ + -a "(__fish_sdkman_installed_versions)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 h home' + # block diff --git a/archiso/releng/airootfs/etc/skel/.config/fish/completions/spark.fish b/archiso/releng/airootfs/etc/skel/.config/fish/completions/spark.fish new file mode 100644 index 0000000..d8daeed --- /dev/null +++ b/archiso/releng/airootfs/etc/skel/.config/fish/completions/spark.fish @@ -0,0 +1,4 @@ +complete --command spark --exclusive --long min --description "Minimum range" +complete --command spark --exclusive --long max --description "Maximum range" +complete --command spark --exclusive --long version --description "Print version" +complete --command spark --exclusive --long help --description "Print this help message" diff --git a/archiso/releng/airootfs/etc/skel/.config/fish/conf.d/.gitnow b/archiso/releng/airootfs/etc/skel/.config/fish/conf.d/.gitnow new file mode 100644 index 0000000..748ca9d --- /dev/null +++ b/archiso/releng/airootfs/etc/skel/.config/fish/conf.d/.gitnow @@ -0,0 +1,40 @@ +[ options ] + +# Read text from system clipboard or from the standard input +# only when using Gitflow keybindings +clipboard = false + +[ keybindings ] + +# Alt + S +state = \es + +# Alt + E +stage = \ee + +# Ctrl + E +unstage = \ce + +# Alt + M +show = \em + +# Alt + C +commit-all = \ec + +# Alt + D +pull = \ed + +# Alt + P +push = \ep + +# Alt + U +upstream = \eu + +# Alt + L +logs = \el + +# Alt + F +feature = \ef + +# Alt + H +hotfix = \eh diff --git a/archiso/releng/airootfs/etc/skel/.config/fish/conf.d/done.fish b/archiso/releng/airootfs/etc/skel/.config/fish/conf.d/done.fish new file mode 100644 index 0000000..2b8d71a --- /dev/null +++ b/archiso/releng/airootfs/etc/skel/.config/fish/conf.d/done.fish @@ -0,0 +1,296 @@ +# MIT License + +# Copyright (c) 2016 Francisco LourenΓ§o & Daniel Wehner + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +set -g __done_version 1.16.3 + +function __done_run_powershell_script + set -l powershell_exe (command --search "powershell.exe") + + if test $status -ne 0 + and command --search wslvar + + set -l powershell_exe (wslpath (wslvar windir)/System32/WindowsPowerShell/v1.0/powershell.exe) + end + + if string length --quiet "$powershell_exe" + and test -x "$powershell_exe" + + set cmd (string escape $argv) + + eval "$powershell_exe -Command $cmd" + end +end + +function __done_windows_notification -a title -a message + if test "$__done_notify_sound" -eq 1 + set soundopt "