minetestのmodを実装する時に使う事になる関数を集める事にする。実際のmodから拾ってきただけなので、網羅的ではない。
minetest.register_alias
アイテム名のエイリアスを追加する。 minetest.register_alias
と minetest.register_alias_force
がある。既に登録されたエイリアスがある場合、 minetest.register_alias
は何もしないが、 minetest.register_alias_force
は古いエイリアスを解除し、新しいエイリアスに置き換える。よくある用途としては、この機能は下位互換を維持するために使用する。
minetest.register_alias("example:one_alias", "example:one")
minetest.register_biome
バイオームを登録する。登録に成功すると、バイオームの識別子の整数(オブジェクトハンドル)を返す。
バイオームIDは minetest.get_biome_id
で取得できる。
最大で65535個のバイオームを使用できるが、数が多くなるとその分処理も重くなる。
この関数は mapgen init
よりも前に呼び出す必要があり、それ以降に呼び出すとminetest自体が不正終了する。これは、不正終了してしまって良いのだろうか。きちんとエラーメッセージを出し、元に戻るようにした方がよい。
minetest.register_chatcommand
チャットコマンドを登録する。
minetest.chat_send_all
minetest.register_craft
クラフトで作る事ができるアイテムのクラフトパターンを定義する。クラフトアイテムであってもノードであっても、クラフトパターンを登録できる。
minetest.register_craftitem
クラフトで作る事ができるアイテムを定義する。
そのアイテムを使用した時に呼び出される処理は、 on_use
で指定できる。
on_use
で呼び出された関数は itemstack
, player
, pointed_thing
の引数を取る。
pointed_thing
には、そのプレイヤーがアイテムを使用した位置が設定される。プレイヤーの位置ではなく、プレイヤーの目の前の位置となる。座標自体は pointed_thing.under
で取得できる。
minetest.register_node
石などのノードを登録する。 groups
にパラメータを設定できる。
Parameter | Description |
---|---|
attached_node | |
bouncy | |
choppy | |
connect_to_raillike | |
connected_nodebox | |
cracky | 硬さ。この数値より大きなツルハシによって破壊できる。 |
crumbly | |
dig_immediate | |
disable_jump | |
disable_repair | |
dummy | |
fall_damage_add_percent | |
falling_node | |
float | |
lava | |
level | |
liquid | |
oddly_breakable_by_hand | |
slippery | |
snappy | |
soil | |
stair | |
testtool | |
water |
minetest.register_tool
minetest.item_eat
アイテムを食べる時に呼び出す。この関数は実際に食べる処理を呼び出すのではなく、食べる処理の呼出し可能な関数を返す。通常は、 on_use
フィールドに関数を格納して使用する。
example:three
というアイテムを食べられるように実装する例を示す。
minetest.register_craftitem(
"example:three",
{
description = "example three",
inventory_image = "example_three.png",
on_use = minetest.item_eat(2),
}
)
on_use
に関数を設定すると、それを実行する。次のコードの場合は、使用したタイミングでチャットに yay
と表示する。
on_use = function (itemstack, player, pointed_thing)
minetest.chat_send_all("yay")
return itemstack
end,
この辺りの情報は docs/lua_api.txt
に記述されている。ただしあまり丁寧には記述されていない。サンプルとしての実装は、実装済みmodを見ると理解が深まる。