From b1753b103397d3b2a666780c03d10263c1f24e41 Mon Sep 17 00:00:00 2001 From: ROllerozxa Date: Sat, 15 Jul 2023 15:10:00 +0000 Subject: [PATCH] Object Properties: Import from minetest_docs --- pages/Object_Properties.md | 296 +++++++++++++++++++++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 pages/Object_Properties.md diff --git a/pages/Object_Properties.md b/pages/Object_Properties.md new file mode 100644 index 0000000..1aa6c33 --- /dev/null +++ b/pages/Object_Properties.md @@ -0,0 +1,296 @@ +This page lists the properties an object may have. + +[toc] + +## Properties Applying Only to Players + +### `hp_max` +* internal type: `u16` +* default value: `20` + +Sets the max HP of a player. + +NOTE: Decreasing the `hp_max` value to below the current hp will trigger a damage flash. + +### `breath_max` +* internal type: `u16` +* default value: `10` + +Sets the max breath of a player. + +### `eye_height` +* internal type: `f32` +* default value: `1.625` + +Sets the camera height. Measured in nodes above the player's feet. + +### `zoom_fov` +* internal type: `f32` +* units: `degrees` +* default value: `0` + +Sets the field of view of the player when they zoom, in degrees. Setting to `0` disables zooming. + +## Properties Applying to All Objects + +### `physical` +* field type: `bool` +* default value: `false` + +Controls whether the object collides with nodes that are `walkable`. + +### `collide_with_objects` +* field type: `bool` +* default value: `true` + +Controls whether the object collides with other objects. + +CAUTION: `physical` must be set to `true` for this to take effect! + +NOTE: This works with players as well but you may experience [strange bugs](https://github.com/minetest/minetest/issues/11783). + +### `collisionbox` +//This could maybe be linked somewhere else. +* field type: `cuboid_def` +* default value: `{-0.5, 0.0, -0.5, 0.5, 1.0, 0.5}` + +The collision box of an object. Wanted value is `{xmin, ymin, zmin, xmax, ymax, zmax}` (in nodes from the center of the object/ object position). + +### `selectionbox` +* field type: `cuboid_def` +* default value: `collisionbox's value` + +The selection box of an object, if not set, uses `collisionbox`. Wanted value is `{xmin, ymin, zmin, xmax, ymax, zmax}` (in nodes from the center of the object/ object position). + +NOTE: This uses the same format as a nodebox cuboid. + +### `pointable` +* field type: `bool` +* default value: `true` + +Controls whether the object can be pointed at. + +### `visual` +* field type: `string` +* default value: `"sprite"` + +Possible values: + +* `"cube"`: A cube that has the same size as a normal node +* `"item"`: similar to `wielditem`, but ignores the `wield_item` property +* `"mesh"`: Use a mesh model, see the `mesh` property +* `"sprite"`: A texture that is flat and always faces the player +* `"upright_sprite"`: A texture that is flat and faces upright +* `"wielditem"`: Used for dropped items, see the `wield_item` property + +Sets what the object will look like. + +TIP: The `"wielditem"` value supports item hardware colorization + +### `mesh` +* field type: `string` +* default value: `""` + +Name of the file of the mesh, only when using "mesh" visual. + +### `visual_size` +* field type: [`vector`](https://github.com/minetest/minetest_docs/blob/master/doc/classes/vector.adoc) +* default value: `{x = 1, y = 1, z = 1}` + +Visual size multipliers. Wanted value is `{x = x, y = y, z = z}`. If `z` is not provided, `x` will be used for the `z` value. + +### `textures` +* field type: `string list` +* default value: `{"no_texture.png"}` + +Wanted value is `{"texture.png", "texture.png", ...}`. The number of textures depends on `visual`: + +* `"cube"`: 6 textures +* `"item":` First texture is itemstring. Deprecated. +* `"mesh"`: 1 texture for each mesh material +* `"sprite"`: 1 texture +* `"upright_sprite"`: 2 textures +* `"wielditem"`: Textures are ignored. + +### `colors` +* internal type: `ColorSpec list` +* default value: `{{r = 255, g = 255, b = 255, a = 255}}` + +CAUTION: This feature is not functional. + +### `spritediv` +* field type: `2d_vector` +* default value: `{x = 1, y = 1}` + +Determines the number of columns, rows in a spritesheet texture, which is used for animations. Wanted value is `{x = columns, y = rows}`. + +### `initial_sprite_basepos` +* field type: `2d_vector` +* default value: `{x = 0, y = 0}` + +Determines the position of the first frame to use in the spritesheet texture. Wanted value is `{x = column, y = row}`. + +### `is_visible` +* field type: `bool` +* default value: `true` + +Whether the object is visible and can be pointed at, this overrides `pointable` if set to `false`. + +### `makes_footstep_sound` +* field type: `bool` +* default value: `false` + +Whether the object makes a footstep sound when it steps on nodes that have footstep sounds. + +### `stepheight` +* internal type: `f32` +* default value: `0` + +This sets the maximum height (in nodes) that an object can travel up if it collides with something. This allows it to "step" over obstacles and continue traveling. + +### `automatic_rotate` +* internal type: `f32` +* default value: `0` + +How fast the object automatically rotates along the `y` axis in radians/second. + +NOTE: Does not (yet) work for attached entities + +### `automatic_face_movement_dir` +* field type: `int` or `false` +* unit: `degrees` +* default value: `0` + +TIP: This property can be set to `false` to disable it. + +Make the object automatically face the direction it is moving in, the value is the offset in degrees. + +### `backface_culling` +* field type: `bool` +* default value: `true` + +Whether a model is backface culled (the faces of the model whose backs are towards the camera aren't rendered). + +### `glow` +* field type: `int` +* default value: `0` + +When calculating the texture color, add this much lighting. Maximum value is `minetest.LIGHT_MAX`. A value lower than `0` disables lighting. + +### `nametag` +* field type: `string` +* default value: `""` + +Text displayed above an object, typically used for names. If the object is a player and this value is `nil` or empty, it will be replaced by the player's name. To remove the nametag for a player, set the `nametag_color` alpha value to `0`. If the object is not a player and this value is `nil` or empty, the nametag will be removed. + +### `nametag_color` +* field type: `ColorSpec` or `false` +* default value: `{a = 255, r = 255, g = 255, b = 255}` + +The color that the nametag text will be. + +TIP: This property can be set to `false` to disable it. + +### `nametag_bgcolor` +* field type: `ColorSpec` or `false` + +The color that the nametag's background will be. + +TIP: This property can be set to `false` to not show a background. + +### `automatic_face_movement_max_rotation_per_sec` +* field type: `f32` +* default value: `-1` + +Cap the automatic rotation to this value. If the value is less than or equal to `0`, there will be no maximum. + +### `infotext` +* field type: `string` + +When a player points at the object, they will be shown the text. + +### `static_save` +* field type: `bool` +* default value: `true` + +Whether the object is saved statically, on the map, if not, it will be deleted when the world block is unloaded. + +### `wield_item` +* internal type: `ItemString` + +Only when using "wielditem" visual. + +### `use_texture_alpha` +* field type: `bool` +* default value: `false` + +Whether buggy semitransparency is enabled for the texture. + +WARNING: Faces, entities and other semitransparent world elements might not be rendered in the right order for semitransparency to work. + +### `shaded` +* field type: `bool` +* default value: `true` + +Controls whether or not diffuse lighting is applied to the object. + +### `show_on_minimap` +* field type: `bool` +* default value: `false` + +Controls whether or not the object is visible on the minimap. + +### `damage_texture_modifier` +* field type: `string` +* default value: `"^[brighten"` + +A texture modifier that will be appended to the object's current textures for the duration of the damage flash when the object is damaged. + +## Layout of Object Properties + +The way these properties are laid out is in a table. + +NOTE: Extraneous properties will be ignored, but might be interpreted incorrectly by future versions of the engine, which is why it is recommended to prefix them with an underscore. + +NOTE: This uses regular indexing so metatables work as expected. + +WARNING: For all string properties, the maximum number of characters is the `u16` max value. + +NOTE: Number properties will be clamped to their value ranges. + +## Example + +```lua +{ + physical = true, + collide_with_objects = true, + collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3}, + selectionbox = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3}, + pointable = true, + visual = "mesh", + mesh = "mesh.obj", + visual_size = {x = 1, y = 1, z = 1}, + textures = {"texture.png", "texture.png"}, + initial_sprite_basepos = {x = 0, y = 0}, + is_visible = true, + makes_footstep_sound = true, + stepheight = 0.4, + automatic_rotate = 0.0, + automatic_face_movement_dir = 0, + automatic_face_movement_max_rotation_per_sec = 0, + backface_culling = true, + glow = 0, + nametag = "My object", + nametag_color = {r = 255, g = 255, b = 255}, + nametag_bgcolor = {r = 0, g = 0, b = 0}, + infotext = "Hello there!", + static_save = true, + use_texture_alpha = true, + shaded = true, + show_on_minimap = true, + damage_texture_modifier = "^[colorize:#FF0000:150", +} +``` + +--- +*This article is originally based on an article from the minetest_docs project: [object_properties.adoc](https://github.com/minetest/minetest_docs/blob/master/doc/object_properties.adoc) by j45, benrob0329, JosiahWI and Lars Müller, licensed under CC-BY 4.0* \ No newline at end of file