-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathitem.lua
155 lines (154 loc) · 5.9 KB
/
item.lua
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
---@meta
---Item definition
------------------
-- Used by `minetest.register_node`, `minetest.register_craftitem`, and
-- `minetest.register_tool`.
---@class mt.ItemDef
---@field name string|nil
---@field type string|nil
---Item's description.
---
---Can contain new lines. `"\n"` has to be used as new line character.
---@field description string|nil
---Short item description.
---
---Must not contain new lines.
---
---Default: `nil`
---@field short_description string|nil
---Item groups.
---
---key = name, value = rating; rating = 1..3.
---
---If rating not applicable, use 1.
---
---* `{wool = 1, fluffy = 3}`
---* `{soil = 2, outerspace = 1, crumbly = 1}`
---* `{bendy = 2, snappy = 1}`
---* `{hard = 1, metal = 1, spikes = 1}`
---@field groups mt.ObjectGroups|nil
---Item inventory texture.
---@field inventory_image string|nil
---An overlay to the inventory texture which does not get colorized.
---@field inventory_overlay string|nil
---Item wielded texture.
---@field wield_image string|nil
---An overlay to the wielded texture which does not get colorized.
---@field wield_overlay string|nil
---An texture containing the palette of an item.
---
---You can set the currently used color as the `"palette_index"` field of the item stack metadata.
---
---The palette is always stretched to fit indices between `0` and `255`, to ensure compatibility with `"colorfacedir"` and `"colorwallmounted"` nodes.
---@field palette string|nil
---The color of the item. The palette overrides this.
---@field color mt.ColorSpec|nil
---The scale the item will have in the player hand.
---@field wield_scale mt.Vector|nil
---How much items can be stacked together.
---
---The default value of `99` may be configured by users using the setting `"default_stack_max"`.
---@field stack_max integer|nil
---How far will the player be able to aim with this node as hand.
---@field range number|nil
---If true, item points to all liquid nodes (`liquidtype ~= "none"`), even those for which `pointable = false`.
---@field liquids_pointable boolean|nil
---* **When used for nodes:** Defines amount of light emitted by node.
---* **Otherwise:** Defines texture glow when viewed as a dropped item
---
---To set the maximum (`14`), use the value `minetest.LIGHT_MAX`.
---
---A value outside the range `0` to `minetest.LIGHT_MAX` causes undefined behavior.
---
---Default: `0`
---@field light_source integer|nil
---Define the tool capabilities.
---@field tool_capabilities mt.ToolCaps|nil
---Define client-side placement prediction.
---
---* If `nil` and item is node, prediction is made automatically.
---* If `nil` and item is not a node, no prediction is made.
---* If `""` and item is anything, no prediction is made.
---
---Otherwise should be name of node which the client immediately places on ground when the player places the item.
---
---Server will always update actual result shortly.
---@field node_placement_prediction string|nil
---Define client-side dig prediction.
---
---* If `""`, no prediction is made.
---* If `"air"`, node is removed.
---
---Otherwise should be name of node which the client immediately place upon digging.
---
---Server will always update actual result shortly.
---
---Default: `""`
---@field node_dig_prediction string|nil
---Definition of items sounds to be played at various events.
---
---All fields in this table are optional.
---
---* `breaks`: When tool breaks due to wear. Ignored for non-tools.
---* `eat`: When item is eaten with `minetest.do_item_eat`.
---@field sound {breaks: mt.SimpleSoundSpec, eat: mt.SimpleSoundSpec}|nil
---When the `place` key was pressed with the item in hand and a node was pointed at.
---
---Shall place item and return the leftover `itemstack` or `nil` to not modify the inventory.
---
---The placer may be any `ObjectRef` or `nil`.
---
---default: `minetest.item_place`
---@field on_place nil|fun(itemstack: mt.ItemStack, placer?: mt.ObjectRef, pointed_thing: mt.PointedThing): mt.ItemStack?
---Same as `on_place` but called when not pointing at a node.
---
---Function must return either `nil` if inventory shall not be modified, or an `itemstack` to replace the original `itemstack`.
---
---The user may be any `ObjectRef` or `nil`.
---
---default: `nil`
---@field on_secondary_use nil|fun(itemstack: mt.ItemStack, placer?: mt.ObjectRef, pointed_thing: mt.PointedThing): mt.ItemStack?
-- Called when a dropped item is punched by a player.
--
-- Shall pick-up the item and return the leftover itemstack or nil to not
-- modify the dropped item.
--
-- default: `minetest.item_pickup`
---@field on_pickup nil|fun(itemstack: mt.ItemStack, picker?: mt.ObjectRef, pointed_thing?: mt.PointedThing, time_from_last_punch?: number, ...?: any): mt.ItemStack?
---Shall drop item and return the leftover `itemstack`.
---
---The dropper may be any `ObjectRef` or `nil`.
---
---default: `minetest.item_drop`
---@field on_drop nil|fun(itemstack: mt.ItemStack, dropper?: mt.ObjectRef, pos: mt.Vector): mt.ItemStack?
---When user pressed the `punch/mine` key with the item in hand.
---
---Function must return either `nil` if inventory shall not be modified, or an `itemstack` to replace the original `itemstack`.
---
---e.g.:
---```lua
---itemstack:take_item(); return itemstack
---```
---
---Otherwise, the function is free to do what it wants.
---
---The user may be any `ObjectRef` or `nil`.
---
---The default functions handle regular use cases.
---
---default: `nil`
---@field on_use nil|fun(itemstack: mt.ItemStack, user?: mt.ObjectRef, pointed_thing: mt.PointedThing): mt.ItemStack?
---If defined, should return an itemstack and will be called instead of wearing out the item (if tool).
---
---If returns `nil`, does nothing.
---
---If after_use doesn't exist, it is the same as:
---```lua
---function(itemstack, user, node, digparams)
--- itemstack:add_wear(digparams.wear)
--- return itemstack
---end
---```
---
---The user may be any `ObjectRef` or `nil`.
---@field after_use nil|fun(itemstack: mt.ItemStack, user?: mt.ObjectRef, node: mt.Node, digparams: unknown): mt.ItemStack?