Minetest-Modding-Book-Notes

文档位置 Minetest Modding Book

1 Getting Started

1.1 什么是游戏和 Mods

一个 mod 是代码和资源的集合.

1.2 mod 存放的位置

每一个 mod 有一个单独的目录.

Minetest 在以下几个位置查找 mod (以 Archlinux 为例):

  • 游戏 mods, 位于 ~/.minetest/games/
  • 全局 mods, 位于 ~/.minetest/mods/
  • 世界 mods, 位于 ~/.minetest/worlds/

1.2 创建第一个 mod

新建 mod 目录, 目录名可以包括: letters, numbers, and underscores.

目录结构如下:
mymod
├── textures
│ └── mymod_node.png files
├── init.lua
└── mod.conf

作用分别如下:

mod.conf

用来包含一些 mod 的 metadata, 如名称, 描述等.

示例:

1
2
3
name = mymod
description = Adds foo, bar, and bo.
depends = default

init.lua

这个文件是一个 mod 的 entrypoint, 也就是 mod 被加载时会运行.

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
print("This file will be run at load time!")

minetest.register_node("mymod:node", {
description = "This is a node",
tiles = {"mymod_node.png"},
groups = {cracky = 1}
})

minetest.register_craft({
type = "shapeless",
output = "mymod:node 3",
recipe = { "default:dirt", "default:stone" },
})

1.3 依赖

有的模块需要预先加载其他模块.

有两种依赖:

  • hard dependencies, 没有则会 fail
  • optional dependencies, 没有则某些 feature 不会开启

可以在 mod.conf 中指定:

1
2
depends = modone, modtwo
optional_depends = modthree

1.4 Mod Packs

也就是打包有多个 Mods 的目录.

结构为:

1
2
3
4
5
6
modpack1
├── modpack.conf (required) - signals that this is a mod pack
├── mod1
│ └── ... mod files
└── mymod (optional)
└── ... mod files

2 Lua Scripting

Programming in Lua book 的位置

dofile 加载模块. (其会直接运行)

如:

1
dofile(minetest.get_modpath("modname") .. "/script.lua")

3 Nodes, Items, and Crafting

3.1 什么是 Nodes 和 Items


Minetest-Modding-Book-Notes
http://example.com/2023/03/14/Minetest-Modding-Book-Notes/
作者
Jie
发布于
2023年3月14日
许可协议