好的,我会按照之前的风格整理这部分文档。以下是整理后的内容:
其他功能相关 API
生成 UUID 字符串
uuid()
- 范围:任意
- 说明:生成一个 UUID 字符串
- 参数:无
- 返回值:UUID 字符串
- 示例:
lua
local uuid = coromega:uuid()
coromega:print(uuid)
1
2
2
翻译
translate(input, type)
- 范围:任意
- 说明:将特定的 Minecraft 内容翻译为中文
- 参数:
input
(string):输入字符串type
(string):翻译类型,可选值为 "mc"、"block"、"item"、"container_data"、"container_slot_data"、"item_data"
- 返回值:翻译结果 (string), 是否成功 (boolean)
- 示例:
lua
coromega:print(coromega:translate("stone")) -- 石头 true
coromega:print(coromega:translate("stone","mc")) --石头 true
coromega:print(coromega:translate("stone [type=?]","block")) -- 石头[type=?] true
coromega:print(coromega:translate("iron_sword","item")) -- 铁剑 true
-- 关于 "conatiner_data"/"conatiner_slot_data/"item_data" 的获取,请参阅 bot action 这一章
coromega:print(coromega:translate("{\"0\":{\"item\":{\"name\":\"stone\",\"val\":0,\"base_props\":{\"can_place_on\":[\"minecraft:grass\",\"minecraft:stone\"],\"can_destroy\":[\"minecraft:sand\"]},\"is_block\":true,\"block_bedrock_state_string\":\"[\\\"stone_type\\\"=\\\"stone\\\"]\"},\"count\":5},\"1\":{\"item\":{\"name\":\"minecraft:diamond_sword\",\"val\":0,\"base_props\":{\"can_place_on\":[\"minecraft:grass\",\"minecraft:stone\"],\"can_destroy\":[\"minecraft:sand\"],\"keep_on_death\":true},\"is_block\":false,\"display_name\":\"剑1\"},\"count\":1},\"2\":{\"item\":{\"name\":\"white_shulker_box\",\"val\":0,\"is_block\":true,\"block_bedrock_state_string\":\"[]\",\"complex_block_data\":{\"container\":{\"0\":{\"item\":{\"name\":\"minecraft:writable_book\",\"val\":0,\"is_block\":false,\"specific_known_item_data\":{\"pages\":[\"0\",\"0\",\"0\"]}},\"count\":1},\"1\":{\"item\":{\"name\":\"minecraft:written_book\",\"val\":0,\"is_block\":false,\"specific_known_item_data\":{\"pages\":[\"0\",\"0\",\"0\"],\"book_author\":\"无名之人\",\"book_name\":\"有名之书\"}},\"count\":1},\"2\":{\"item\":{\"name\":\"minecraft:written_book\",\"val\":0,\"is_block\":false,\"specific_known_item_data\":{\"pages\":[\"0\",\"0\",\"0\"],\"book_author\":\"无名之人\",\"book_name\":\"有名之书\"},\"display_name\":\"铁砧\"},\"count\":1}}}},\"count\":1}}","container_data"))
-- 容器内容:
-- 5个 石头[特殊值=0] 物品方块属性:["stone_type"="stone"]
-- | -基础属性:
-- | 可被放置于: 草方块 石头
-- 1个 钻石剑[特殊值=0]
-- | -基础属性:
-- | 可被放置于: 草方块 石头
-- | 死亡时保留
-- | -被命名为: 剑1
-- 1个 白色潜影盒[特殊值=0] 物品方块属性:[]
-- | -包含子容器:
-- | 容器内容:
-- | 1个 书与笔[特殊值=0]
-- | | -信息:书名: 作者: 页数: 3
-- | 1个 minecraft:written_book[特殊值=0]
-- | | -信息:书名: 有名之书 作者: 无名之人 页数: 3
-- | 1个 minecraft:written_book[特殊值=0]
-- | | -信息:书名: 有名之书 作者: 无名之人 页数: 3
-- | | -被命名为: 铁砧 false
coromega:print(coromega:translate("{\"item\":{\"name\":\"stone\",\"val\":0,\"base_props\":{\"can_place_on\":[\"minecraft:grass\",\"minecraft:stone\"],\"can_destroy\":[\"minecraft:sand\"]},\"is_block\":true,\"block_bedrock_state_string\":\"[\\\"stone_type\\\"=\\\"stone\\\"]\"},\"count\":5}","container_slot_data"))
-- 5个 石头[特殊值=0] 物品方块属性:["stone_type"="stone"]
-- -基础属性:
-- 可被放置于: 草方块 石头 false
coromega:print(coromega:translate("{\"name\":\"stone\",\"val\":0,\"base_props\":{\"can_place_on\":[\"minecraft:grass\",\"minecraft:stone\"],\"can_destroy\":[\"minecraft:sand\"]},\"is_block\":true,\"block_bedrock_state_string\":\"[\\\"stone_type\\\"=\\\"stone\\\"]\"}","item_data"))
-- 石头[特殊值=0] 物品方块属性:["stone_type"="stone"]
-- -基础属性:
-- 可被放置于: 草方块 石头 false
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
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
字符串操作
由于默认的 lua
解释器对含中文字符串的位置相关操作是以 byte
为基准的
例如 "一二三" 不是 3
个字而是 9
个比特,然而这样很反直觉,且给字符串截取操作带来很多困难。
为此,我们将字符串相关所有位置信息都改为 rune
实现,即按 字
来计 算 以下是一些例子
lua
print(string.find("Hello Lua user", "Lua", 1)) -- 7 9
print(string.find("Hello Lua user", "Lua", 8)) -- nil
print(string.find("一二三四五", "二")) -- 2 2
print(string.find("一二三四五", "二", 3)) -- nil
print(string.find("Hello Lua user", "Lua", 1, true)) -- 7 9
print(string.find("Hello Lua user", "Lua", 8, true)) -- nil
print(string.find("一二三四五", "二", 2, true)) -- 2 2
print(string.find("一二三四五", "二", 3, true)) -- nil
print(string.gsub("aaaa", "a", "z", 3)) -- zzza 3
print(string.gsub("一二三四五", "三", "十", 3)) -- 一二十四五
print(string.reverse("Lua")) -- auL
print(string.reverse("一二三")) -- 一二三
print(string.format("the value is:%d", 4)) -- the value is:4
print(string.char(97, 98, 99, 100)) --abcd
print(string.char(97, 98, 99, 22235)) --abc四
print(string.byte("ABCD", 4)) -- 68
print(string.byte("一二三四", 4)) -- 22235
print(string.len("abc")) -- 3
print(string.len("一二三")) -- 3
print(string.rep("abcd", 2)) -- abcdabcd
print(string.rep("一二三", 2)) -- 一二三一二三
print(string.sub("一二三四五", 3, 4)) --三四
print(string.match("I have 2 questions for you.", "%d+ %a+")) -- 2 questions
print(string.match("I have 二 questions for you.", "二 %a+")) -- 2 questions
print(string.match("I have 2 questions for you.", "(%d+) (%a+)")) -- 2, "questions"
print(string.match("I have 二 questions for you.", "(二) (%a+)")) -- 二, "questions"
for word in string.gmatch("二Hello 二Lua 二user", "二%a+") do
print(word)
end
-- 二Hello
-- 二Lua
-- 二user
for word in string.gmatch("Hello Lua user", "%a+") do
print(word)
end
-- Hello
-- Lua
-- user
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
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