@sfmc-bds/bds-tools 0.2.9 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server-properties-fields.d.ts +50 -0
- package/dist/server-properties-fields.d.ts.map +1 -0
- package/dist/server-properties-fields.js +77 -0
- package/dist/server-properties-fields.js.map +7 -0
- package/dist/server-properties-i18n.d.ts +305 -1
- package/dist/server-properties-i18n.d.ts.map +1 -1
- package/dist/server-properties-i18n.js +84 -10
- package/dist/server-properties-i18n.js.map +2 -2
- package/dist/world-packs.d.ts +8 -2
- package/dist/world-packs.d.ts.map +1 -1
- package/dist/world-packs.js +2 -2
- package/dist/world-packs.js.map +2 -2
- package/package.json +4 -3
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* server-properties-fields.ts — server.properties 的表单字段清单
|
|
3
|
+
*
|
|
4
|
+
* 使用场景:平台 config.read 读取 bds/server.properties 时附带完整字段清单,
|
|
5
|
+
* 桌面端与小程序据此渲染「BDS配置」表单。
|
|
6
|
+
* 取值类型、枚举值与范围在这里维护(与语言无关);名称、说明与枚举展示名来自 server-properties-i18n.ts。
|
|
7
|
+
* 本文件不依赖 Node API。
|
|
8
|
+
*/
|
|
9
|
+
import { type ServerPropertyGroup, type ServerPropertyKey } from "./server-properties-i18n.js";
|
|
10
|
+
/** 单个属性的取值约束 */
|
|
11
|
+
interface ServerPropertySpec {
|
|
12
|
+
group: ServerPropertyGroup;
|
|
13
|
+
type: "boolean" | "integer" | "number" | "string" | "enum";
|
|
14
|
+
/** enum 的合法取值 */
|
|
15
|
+
values?: readonly string[];
|
|
16
|
+
min?: number;
|
|
17
|
+
max?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 字典收录的每个属性的取值约束,按表单展示顺序排列。
|
|
21
|
+
* 类型为 Record<ServerPropertyKey, …>:与 i18n 字典的键漏写或多写都会编译报错。
|
|
22
|
+
* 取值约束只写字典 values 中明确说明的范围;说明与实际版本不一致的键按文本处理,避免表单写入非法值。
|
|
23
|
+
*/
|
|
24
|
+
export declare const SERVER_PROPERTY_SPECS: Record<ServerPropertyKey, ServerPropertySpec>;
|
|
25
|
+
/**
|
|
26
|
+
* 表单字段描述。结构与 @sfmc-bds/management 的 ConfigFormField 相同(本包不依赖管理协议包)。
|
|
27
|
+
* 使用场景:serverPropertyFormFields 的返回值,由平台放进 ConfigDocument.fields。
|
|
28
|
+
*/
|
|
29
|
+
export interface ServerPropertyFormField {
|
|
30
|
+
key: string;
|
|
31
|
+
label?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
kind: "boolean" | "number" | "string" | "enum";
|
|
34
|
+
options?: {
|
|
35
|
+
value: string;
|
|
36
|
+
label: string;
|
|
37
|
+
}[];
|
|
38
|
+
min?: number;
|
|
39
|
+
max?: number;
|
|
40
|
+
integer?: boolean;
|
|
41
|
+
group?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 生成 server.properties 的完整表单字段清单(按 SERVER_PROPERTY_SPECS 的顺序)。
|
|
45
|
+
* 说明文字:开关与枚举由控件表达取值,只拼概述与提示;文本与数字另附字典中的取值说明。
|
|
46
|
+
* 目标语言没有字典时,名称、说明缺省(界面回退显示 key),分组名回退为分组标识。
|
|
47
|
+
*/
|
|
48
|
+
export declare function serverPropertyFormFields(locale?: string): ServerPropertyFormField[];
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=server-properties-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-properties-fields.d.ts","sourceRoot":"","sources":["../src/server-properties-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAErC,gBAAgB;AAChB,UAAU,kBAAkB;IAC1B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3D,iBAAiB;IACjB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAKD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAqD/E,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,MAAgB,GAAG,uBAAuB,EAAE,CAoB5F"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getServerPropertyDoc,
|
|
3
|
+
getServerPropertyGroupLabel
|
|
4
|
+
} from "./server-properties-i18n.js";
|
|
5
|
+
const PORT_RANGE = { min: 1, max: 65535 };
|
|
6
|
+
const SERVER_PROPERTY_SPECS = {
|
|
7
|
+
"server-name": { group: "basic", type: "string" },
|
|
8
|
+
"level-name": { group: "basic", type: "string" },
|
|
9
|
+
"level-seed": { group: "basic", type: "string" },
|
|
10
|
+
"gamemode": { group: "basic", type: "enum", values: ["survival", "creative", "adventure"] },
|
|
11
|
+
"force-gamemode": { group: "basic", type: "boolean" },
|
|
12
|
+
"difficulty": { group: "basic", type: "enum", values: ["peaceful", "easy", "normal", "hard"] },
|
|
13
|
+
"allow-cheats": { group: "basic", type: "boolean" },
|
|
14
|
+
"max-players": { group: "player", type: "integer", min: 1 },
|
|
15
|
+
"online-mode": { group: "player", type: "boolean" },
|
|
16
|
+
"allow-list": { group: "player", type: "boolean" },
|
|
17
|
+
"white-list": { group: "player", type: "boolean" },
|
|
18
|
+
"default-player-permission-level": { group: "player", type: "enum", values: ["visitor", "member", "operator"] },
|
|
19
|
+
"player-idle-timeout": { group: "player", type: "integer", min: 0 },
|
|
20
|
+
"texturepack-required": { group: "player", type: "boolean" },
|
|
21
|
+
"chat-restriction": { group: "player", type: "enum", values: ["None", "Dropped", "Disabled"] },
|
|
22
|
+
"disable-player-interaction": { group: "player", type: "boolean" },
|
|
23
|
+
"disable-persona": { group: "player", type: "boolean" },
|
|
24
|
+
"disable-custom-skins": { group: "player", type: "boolean" },
|
|
25
|
+
"server-port": { group: "network", type: "integer", ...PORT_RANGE },
|
|
26
|
+
"server-portv6": { group: "network", type: "integer", ...PORT_RANGE },
|
|
27
|
+
"enable-lan-visibility": { group: "network", type: "boolean" },
|
|
28
|
+
"transport": { group: "network", type: "string" },
|
|
29
|
+
"compression-threshold": { group: "network", type: "integer", min: 0, max: 65535 },
|
|
30
|
+
"compression-algorithm": { group: "network", type: "enum", values: ["zlib", "snappy"] },
|
|
31
|
+
"websocket-retry-time": { group: "network", type: "integer", min: 1 },
|
|
32
|
+
"view-distance": { group: "performance", type: "integer", min: 5 },
|
|
33
|
+
"tick-distance": { group: "performance", type: "integer", min: 4, max: 12 },
|
|
34
|
+
"max-threads": { group: "performance", type: "integer", min: 0 },
|
|
35
|
+
"client-side-chunk-generation-enabled": { group: "performance", type: "boolean" },
|
|
36
|
+
"block-network-ids-are-hashes": { group: "performance", type: "boolean" },
|
|
37
|
+
"server-build-radius-ratio": { group: "performance", type: "string" },
|
|
38
|
+
"server-authoritative-movement": { group: "movement", type: "enum", values: ["server-auth", "client-auth"] },
|
|
39
|
+
"player-movement-score-threshold": { group: "movement", type: "integer" },
|
|
40
|
+
"player-movement-action-direction-threshold": { group: "movement", type: "number" },
|
|
41
|
+
"player-movement-distance-threshold": { group: "movement", type: "number" },
|
|
42
|
+
"player-movement-duration-threshold-in-ms": { group: "movement", type: "integer", min: 0 },
|
|
43
|
+
"correct-player-movement": { group: "movement", type: "boolean" },
|
|
44
|
+
"server-authoritative-block-breaking": { group: "movement", type: "string" },
|
|
45
|
+
"allow-outbound-script-debugging": { group: "script", type: "boolean" },
|
|
46
|
+
"allow-inbound-script-debugging": { group: "script", type: "boolean" },
|
|
47
|
+
"force-inbound-debug-port": { group: "script", type: "integer", ...PORT_RANGE },
|
|
48
|
+
"script-debugger-auto-attach": { group: "script", type: "enum", values: ["disabled", "connect", "listen"] },
|
|
49
|
+
"script-debugger-auto-attach-connect-address": { group: "script", type: "string" },
|
|
50
|
+
"content-log-file-enabled": { group: "diagnostics", type: "boolean" },
|
|
51
|
+
"content-log-console-output-enabled": { group: "diagnostics", type: "boolean" },
|
|
52
|
+
"emit-server-telemetry": { group: "diagnostics", type: "boolean" }
|
|
53
|
+
};
|
|
54
|
+
function serverPropertyFormFields(locale = "zh-CN") {
|
|
55
|
+
return Object.entries(SERVER_PROPERTY_SPECS).map(([key, spec]) => {
|
|
56
|
+
const doc = getServerPropertyDoc(key, locale);
|
|
57
|
+
const controlShowsValues = spec.type === "boolean" || spec.type === "enum";
|
|
58
|
+
const description = doc ? [doc.desc, !controlShowsValues && doc.values ? `\u53D6\u503C\uFF1A${doc.values}` : "", doc.tip ? `\u63D0\u793A\uFF1A${doc.tip}` : ""].filter(Boolean).join("\u3002") : void 0;
|
|
59
|
+
const field = {
|
|
60
|
+
key,
|
|
61
|
+
kind: spec.type === "integer" ? "number" : spec.type,
|
|
62
|
+
group: getServerPropertyGroupLabel(spec.group, locale) ?? spec.group,
|
|
63
|
+
...doc ? { label: doc.label } : {},
|
|
64
|
+
...description ? { description } : {},
|
|
65
|
+
...spec.type === "integer" ? { integer: true } : spec.type === "number" ? { integer: false } : {},
|
|
66
|
+
...spec.min !== void 0 ? { min: spec.min } : {},
|
|
67
|
+
...spec.max !== void 0 ? { max: spec.max } : {}
|
|
68
|
+
};
|
|
69
|
+
if (spec.type === "enum") field.options = (spec.values ?? []).map((value) => ({ value, label: doc?.options?.[value] ?? value }));
|
|
70
|
+
return field;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
SERVER_PROPERTY_SPECS,
|
|
75
|
+
serverPropertyFormFields
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=server-properties-fields.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/server-properties-fields.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * server-properties-fields.ts \u2014 server.properties \u7684\u8868\u5355\u5B57\u6BB5\u6E05\u5355\n *\n * \u4F7F\u7528\u573A\u666F\uFF1A\u5E73\u53F0 config.read \u8BFB\u53D6 bds/server.properties \u65F6\u9644\u5E26\u5B8C\u6574\u5B57\u6BB5\u6E05\u5355\uFF0C\n * \u684C\u9762\u7AEF\u4E0E\u5C0F\u7A0B\u5E8F\u636E\u6B64\u6E32\u67D3\u300CBDS\u914D\u7F6E\u300D\u8868\u5355\u3002\n * \u53D6\u503C\u7C7B\u578B\u3001\u679A\u4E3E\u503C\u4E0E\u8303\u56F4\u5728\u8FD9\u91CC\u7EF4\u62A4\uFF08\u4E0E\u8BED\u8A00\u65E0\u5173\uFF09\uFF1B\u540D\u79F0\u3001\u8BF4\u660E\u4E0E\u679A\u4E3E\u5C55\u793A\u540D\u6765\u81EA server-properties-i18n.ts\u3002\n * \u672C\u6587\u4EF6\u4E0D\u4F9D\u8D56 Node API\u3002\n */\nimport {\n getServerPropertyDoc,\n getServerPropertyGroupLabel,\n type ServerPropertyGroup,\n type ServerPropertyKey,\n} from \"./server-properties-i18n.js\";\n\n/** \u5355\u4E2A\u5C5E\u6027\u7684\u53D6\u503C\u7EA6\u675F */\ninterface ServerPropertySpec {\n group: ServerPropertyGroup;\n type: \"boolean\" | \"integer\" | \"number\" | \"string\" | \"enum\";\n /** enum \u7684\u5408\u6CD5\u53D6\u503C */\n values?: readonly string[];\n min?: number;\n max?: number;\n}\n\n/** UDP / TCP \u7AEF\u53E3\u8303\u56F4\uFF0C\u7528\u4E8E\u5404\u7AEF\u53E3\u5B57\u6BB5 */\nconst PORT_RANGE = { min: 1, max: 65535 } as const;\n\n/**\n * \u5B57\u5178\u6536\u5F55\u7684\u6BCF\u4E2A\u5C5E\u6027\u7684\u53D6\u503C\u7EA6\u675F\uFF0C\u6309\u8868\u5355\u5C55\u793A\u987A\u5E8F\u6392\u5217\u3002\n * \u7C7B\u578B\u4E3A Record<ServerPropertyKey, \u2026>\uFF1A\u4E0E i18n \u5B57\u5178\u7684\u952E\u6F0F\u5199\u6216\u591A\u5199\u90FD\u4F1A\u7F16\u8BD1\u62A5\u9519\u3002\n * \u53D6\u503C\u7EA6\u675F\u53EA\u5199\u5B57\u5178 values \u4E2D\u660E\u786E\u8BF4\u660E\u7684\u8303\u56F4\uFF1B\u8BF4\u660E\u4E0E\u5B9E\u9645\u7248\u672C\u4E0D\u4E00\u81F4\u7684\u952E\u6309\u6587\u672C\u5904\u7406\uFF0C\u907F\u514D\u8868\u5355\u5199\u5165\u975E\u6CD5\u503C\u3002\n */\nexport const SERVER_PROPERTY_SPECS: Record<ServerPropertyKey, ServerPropertySpec> = {\n \"server-name\": { group: \"basic\", type: \"string\" },\n \"level-name\": { group: \"basic\", type: \"string\" },\n \"level-seed\": { group: \"basic\", type: \"string\" },\n \"gamemode\": { group: \"basic\", type: \"enum\", values: [\"survival\", \"creative\", \"adventure\"] },\n \"force-gamemode\": { group: \"basic\", type: \"boolean\" },\n \"difficulty\": { group: \"basic\", type: \"enum\", values: [\"peaceful\", \"easy\", \"normal\", \"hard\"] },\n \"allow-cheats\": { group: \"basic\", type: \"boolean\" },\n\n \"max-players\": { group: \"player\", type: \"integer\", min: 1 },\n \"online-mode\": { group: \"player\", type: \"boolean\" },\n \"allow-list\": { group: \"player\", type: \"boolean\" },\n \"white-list\": { group: \"player\", type: \"boolean\" },\n \"default-player-permission-level\": { group: \"player\", type: \"enum\", values: [\"visitor\", \"member\", \"operator\"] },\n \"player-idle-timeout\": { group: \"player\", type: \"integer\", min: 0 },\n \"texturepack-required\": { group: \"player\", type: \"boolean\" },\n \"chat-restriction\": { group: \"player\", type: \"enum\", values: [\"None\", \"Dropped\", \"Disabled\"] },\n \"disable-player-interaction\": { group: \"player\", type: \"boolean\" },\n \"disable-persona\": { group: \"player\", type: \"boolean\" },\n \"disable-custom-skins\": { group: \"player\", type: \"boolean\" },\n\n \"server-port\": { group: \"network\", type: \"integer\", ...PORT_RANGE },\n \"server-portv6\": { group: \"network\", type: \"integer\", ...PORT_RANGE },\n \"enable-lan-visibility\": { group: \"network\", type: \"boolean\" },\n \"transport\": { group: \"network\", type: \"string\" },\n \"compression-threshold\": { group: \"network\", type: \"integer\", min: 0, max: 65535 },\n \"compression-algorithm\": { group: \"network\", type: \"enum\", values: [\"zlib\", \"snappy\"] },\n \"websocket-retry-time\": { group: \"network\", type: \"integer\", min: 1 },\n\n \"view-distance\": { group: \"performance\", type: \"integer\", min: 5 },\n \"tick-distance\": { group: \"performance\", type: \"integer\", min: 4, max: 12 },\n \"max-threads\": { group: \"performance\", type: \"integer\", min: 0 },\n \"client-side-chunk-generation-enabled\": { group: \"performance\", type: \"boolean\" },\n \"block-network-ids-are-hashes\": { group: \"performance\", type: \"boolean\" },\n \"server-build-radius-ratio\": { group: \"performance\", type: \"string\" },\n\n \"server-authoritative-movement\": { group: \"movement\", type: \"enum\", values: [\"server-auth\", \"client-auth\"] },\n \"player-movement-score-threshold\": { group: \"movement\", type: \"integer\" },\n \"player-movement-action-direction-threshold\": { group: \"movement\", type: \"number\" },\n \"player-movement-distance-threshold\": { group: \"movement\", type: \"number\" },\n \"player-movement-duration-threshold-in-ms\": { group: \"movement\", type: \"integer\", min: 0 },\n \"correct-player-movement\": { group: \"movement\", type: \"boolean\" },\n \"server-authoritative-block-breaking\": { group: \"movement\", type: \"string\" },\n\n \"allow-outbound-script-debugging\": { group: \"script\", type: \"boolean\" },\n \"allow-inbound-script-debugging\": { group: \"script\", type: \"boolean\" },\n \"force-inbound-debug-port\": { group: \"script\", type: \"integer\", ...PORT_RANGE },\n \"script-debugger-auto-attach\": { group: \"script\", type: \"enum\", values: [\"disabled\", \"connect\", \"listen\"] },\n \"script-debugger-auto-attach-connect-address\": { group: \"script\", type: \"string\" },\n\n \"content-log-file-enabled\": { group: \"diagnostics\", type: \"boolean\" },\n \"content-log-console-output-enabled\": { group: \"diagnostics\", type: \"boolean\" },\n \"emit-server-telemetry\": { group: \"diagnostics\", type: \"boolean\" },\n};\n\n/**\n * \u8868\u5355\u5B57\u6BB5\u63CF\u8FF0\u3002\u7ED3\u6784\u4E0E @sfmc-bds/management \u7684 ConfigFormField \u76F8\u540C\uFF08\u672C\u5305\u4E0D\u4F9D\u8D56\u7BA1\u7406\u534F\u8BAE\u5305\uFF09\u3002\n * \u4F7F\u7528\u573A\u666F\uFF1AserverPropertyFormFields \u7684\u8FD4\u56DE\u503C\uFF0C\u7531\u5E73\u53F0\u653E\u8FDB ConfigDocument.fields\u3002\n */\nexport interface ServerPropertyFormField {\n key: string;\n label?: string;\n description?: string;\n kind: \"boolean\" | \"number\" | \"string\" | \"enum\";\n options?: { value: string; label: string }[];\n min?: number;\n max?: number;\n integer?: boolean;\n group?: string;\n}\n\n/**\n * \u751F\u6210 server.properties \u7684\u5B8C\u6574\u8868\u5355\u5B57\u6BB5\u6E05\u5355\uFF08\u6309 SERVER_PROPERTY_SPECS \u7684\u987A\u5E8F\uFF09\u3002\n * \u8BF4\u660E\u6587\u5B57\uFF1A\u5F00\u5173\u4E0E\u679A\u4E3E\u7531\u63A7\u4EF6\u8868\u8FBE\u53D6\u503C\uFF0C\u53EA\u62FC\u6982\u8FF0\u4E0E\u63D0\u793A\uFF1B\u6587\u672C\u4E0E\u6570\u5B57\u53E6\u9644\u5B57\u5178\u4E2D\u7684\u53D6\u503C\u8BF4\u660E\u3002\n * \u76EE\u6807\u8BED\u8A00\u6CA1\u6709\u5B57\u5178\u65F6\uFF0C\u540D\u79F0\u3001\u8BF4\u660E\u7F3A\u7701\uFF08\u754C\u9762\u56DE\u9000\u663E\u793A key\uFF09\uFF0C\u5206\u7EC4\u540D\u56DE\u9000\u4E3A\u5206\u7EC4\u6807\u8BC6\u3002\n */\nexport function serverPropertyFormFields(locale: string = \"zh-CN\"): ServerPropertyFormField[] {\n return (Object.entries(SERVER_PROPERTY_SPECS) as [ServerPropertyKey, ServerPropertySpec][]).map(([key, spec]) => {\n const doc = getServerPropertyDoc(key, locale);\n const controlShowsValues = spec.type === \"boolean\" || spec.type === \"enum\";\n const description = doc\n ? [doc.desc, !controlShowsValues && doc.values ? `\u53D6\u503C\uFF1A${doc.values}` : \"\", doc.tip ? `\u63D0\u793A\uFF1A${doc.tip}` : \"\"].filter(Boolean).join(\"\u3002\")\n : undefined;\n const field: ServerPropertyFormField = {\n key,\n kind: spec.type === \"integer\" ? \"number\" : spec.type,\n group: getServerPropertyGroupLabel(spec.group, locale) ?? spec.group,\n ...(doc ? { label: doc.label } : {}),\n ...(description ? { description } : {}),\n ...(spec.type === \"integer\" ? { integer: true } : spec.type === \"number\" ? { integer: false } : {}),\n ...(spec.min !== undefined ? { min: spec.min } : {}),\n ...(spec.max !== undefined ? { max: spec.max } : {}),\n };\n if (spec.type === \"enum\") field.options = (spec.values ?? []).map((value) => ({ value, label: doc?.options?.[value] ?? value }));\n return field;\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,17 +1,321 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* server-properties-i18n.ts — BDS server.properties 多语言注释字典
|
|
3
|
+
*
|
|
4
|
+
* 使用场景:
|
|
5
|
+
* 1. server-properties.ts 把 server.properties 注释本地化(用 desc / values / tip);
|
|
6
|
+
* 2. server-properties-fields.ts 为配置页生成表单字段(另用 label / options 与分组名)。
|
|
3
7
|
*/
|
|
4
8
|
export interface ServerPropertyDoc {
|
|
9
|
+
/** 表单中显示的简短名称 */
|
|
10
|
+
label: string;
|
|
5
11
|
/** 中文功能概述 */
|
|
6
12
|
desc: string;
|
|
7
13
|
/** 合法取值与枚举说明 */
|
|
8
14
|
values?: string;
|
|
9
15
|
/** 避坑、性能或安全性提示 */
|
|
10
16
|
tip?: string;
|
|
17
|
+
/** 枚举取值 → 展示名;取值清单本身以 server-properties-fields.ts 为准 */
|
|
18
|
+
options?: Record<string, string>;
|
|
11
19
|
}
|
|
12
|
-
export declare const SERVER_PROPERTIES_DOCS_ZH_CN:
|
|
20
|
+
export declare const SERVER_PROPERTIES_DOCS_ZH_CN: {
|
|
21
|
+
transport: {
|
|
22
|
+
label: string;
|
|
23
|
+
desc: string;
|
|
24
|
+
values: string;
|
|
25
|
+
};
|
|
26
|
+
"server-name": {
|
|
27
|
+
label: string;
|
|
28
|
+
desc: string;
|
|
29
|
+
values: string;
|
|
30
|
+
};
|
|
31
|
+
gamemode: {
|
|
32
|
+
label: string;
|
|
33
|
+
desc: string;
|
|
34
|
+
values: string;
|
|
35
|
+
options: {
|
|
36
|
+
survival: string;
|
|
37
|
+
creative: string;
|
|
38
|
+
adventure: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
"force-gamemode": {
|
|
42
|
+
label: string;
|
|
43
|
+
desc: string;
|
|
44
|
+
values: string;
|
|
45
|
+
};
|
|
46
|
+
difficulty: {
|
|
47
|
+
label: string;
|
|
48
|
+
desc: string;
|
|
49
|
+
values: string;
|
|
50
|
+
options: {
|
|
51
|
+
peaceful: string;
|
|
52
|
+
easy: string;
|
|
53
|
+
normal: string;
|
|
54
|
+
hard: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
"allow-cheats": {
|
|
58
|
+
label: string;
|
|
59
|
+
desc: string;
|
|
60
|
+
values: string;
|
|
61
|
+
tip: string;
|
|
62
|
+
};
|
|
63
|
+
"max-players": {
|
|
64
|
+
label: string;
|
|
65
|
+
desc: string;
|
|
66
|
+
values: string;
|
|
67
|
+
};
|
|
68
|
+
"online-mode": {
|
|
69
|
+
label: string;
|
|
70
|
+
desc: string;
|
|
71
|
+
values: string;
|
|
72
|
+
tip: string;
|
|
73
|
+
};
|
|
74
|
+
"white-list": {
|
|
75
|
+
label: string;
|
|
76
|
+
desc: string;
|
|
77
|
+
values: string;
|
|
78
|
+
};
|
|
79
|
+
"allow-list": {
|
|
80
|
+
label: string;
|
|
81
|
+
desc: string;
|
|
82
|
+
values: string;
|
|
83
|
+
};
|
|
84
|
+
"server-port": {
|
|
85
|
+
label: string;
|
|
86
|
+
desc: string;
|
|
87
|
+
values: string;
|
|
88
|
+
};
|
|
89
|
+
"server-portv6": {
|
|
90
|
+
label: string;
|
|
91
|
+
desc: string;
|
|
92
|
+
values: string;
|
|
93
|
+
};
|
|
94
|
+
"enable-lan-visibility": {
|
|
95
|
+
label: string;
|
|
96
|
+
desc: string;
|
|
97
|
+
values: string;
|
|
98
|
+
};
|
|
99
|
+
"view-distance": {
|
|
100
|
+
label: string;
|
|
101
|
+
desc: string;
|
|
102
|
+
values: string;
|
|
103
|
+
};
|
|
104
|
+
"tick-distance": {
|
|
105
|
+
label: string;
|
|
106
|
+
desc: string;
|
|
107
|
+
values: string;
|
|
108
|
+
};
|
|
109
|
+
"player-idle-timeout": {
|
|
110
|
+
label: string;
|
|
111
|
+
desc: string;
|
|
112
|
+
values: string;
|
|
113
|
+
};
|
|
114
|
+
"max-threads": {
|
|
115
|
+
label: string;
|
|
116
|
+
desc: string;
|
|
117
|
+
values: string;
|
|
118
|
+
};
|
|
119
|
+
"level-name": {
|
|
120
|
+
label: string;
|
|
121
|
+
desc: string;
|
|
122
|
+
values: string;
|
|
123
|
+
};
|
|
124
|
+
"level-seed": {
|
|
125
|
+
label: string;
|
|
126
|
+
desc: string;
|
|
127
|
+
values: string;
|
|
128
|
+
};
|
|
129
|
+
"default-player-permission-level": {
|
|
130
|
+
label: string;
|
|
131
|
+
desc: string;
|
|
132
|
+
values: string;
|
|
133
|
+
options: {
|
|
134
|
+
visitor: string;
|
|
135
|
+
member: string;
|
|
136
|
+
operator: string;
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
"texturepack-required": {
|
|
140
|
+
label: string;
|
|
141
|
+
desc: string;
|
|
142
|
+
values: string;
|
|
143
|
+
};
|
|
144
|
+
"content-log-file-enabled": {
|
|
145
|
+
label: string;
|
|
146
|
+
desc: string;
|
|
147
|
+
values: string;
|
|
148
|
+
};
|
|
149
|
+
"content-log-console-output-enabled": {
|
|
150
|
+
label: string;
|
|
151
|
+
desc: string;
|
|
152
|
+
values: string;
|
|
153
|
+
tip: string;
|
|
154
|
+
};
|
|
155
|
+
"compression-threshold": {
|
|
156
|
+
label: string;
|
|
157
|
+
desc: string;
|
|
158
|
+
values: string;
|
|
159
|
+
};
|
|
160
|
+
"compression-algorithm": {
|
|
161
|
+
label: string;
|
|
162
|
+
desc: string;
|
|
163
|
+
values: string;
|
|
164
|
+
options: {
|
|
165
|
+
zlib: string;
|
|
166
|
+
snappy: string;
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
"server-authoritative-movement": {
|
|
170
|
+
label: string;
|
|
171
|
+
desc: string;
|
|
172
|
+
values: string;
|
|
173
|
+
options: {
|
|
174
|
+
"server-auth": string;
|
|
175
|
+
"client-auth": string;
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
"player-movement-score-threshold": {
|
|
179
|
+
label: string;
|
|
180
|
+
desc: string;
|
|
181
|
+
values: string;
|
|
182
|
+
};
|
|
183
|
+
"player-movement-action-direction-threshold": {
|
|
184
|
+
label: string;
|
|
185
|
+
desc: string;
|
|
186
|
+
values: string;
|
|
187
|
+
};
|
|
188
|
+
"player-movement-distance-threshold": {
|
|
189
|
+
label: string;
|
|
190
|
+
desc: string;
|
|
191
|
+
values: string;
|
|
192
|
+
};
|
|
193
|
+
"player-movement-duration-threshold-in-ms": {
|
|
194
|
+
label: string;
|
|
195
|
+
desc: string;
|
|
196
|
+
values: string;
|
|
197
|
+
};
|
|
198
|
+
"correct-player-movement": {
|
|
199
|
+
label: string;
|
|
200
|
+
desc: string;
|
|
201
|
+
values: string;
|
|
202
|
+
};
|
|
203
|
+
"server-authoritative-block-breaking": {
|
|
204
|
+
label: string;
|
|
205
|
+
desc: string;
|
|
206
|
+
values: string;
|
|
207
|
+
};
|
|
208
|
+
"chat-restriction": {
|
|
209
|
+
label: string;
|
|
210
|
+
desc: string;
|
|
211
|
+
values: string;
|
|
212
|
+
options: {
|
|
213
|
+
None: string;
|
|
214
|
+
Dropped: string;
|
|
215
|
+
Disabled: string;
|
|
216
|
+
};
|
|
217
|
+
};
|
|
218
|
+
"disable-player-interaction": {
|
|
219
|
+
label: string;
|
|
220
|
+
desc: string;
|
|
221
|
+
values: string;
|
|
222
|
+
};
|
|
223
|
+
"client-side-chunk-generation-enabled": {
|
|
224
|
+
label: string;
|
|
225
|
+
desc: string;
|
|
226
|
+
values: string;
|
|
227
|
+
};
|
|
228
|
+
"block-network-ids-are-hashes": {
|
|
229
|
+
label: string;
|
|
230
|
+
desc: string;
|
|
231
|
+
values: string;
|
|
232
|
+
};
|
|
233
|
+
"disable-persona": {
|
|
234
|
+
label: string;
|
|
235
|
+
desc: string;
|
|
236
|
+
values: string;
|
|
237
|
+
};
|
|
238
|
+
"disable-custom-skins": {
|
|
239
|
+
label: string;
|
|
240
|
+
desc: string;
|
|
241
|
+
values: string;
|
|
242
|
+
};
|
|
243
|
+
"emit-server-telemetry": {
|
|
244
|
+
label: string;
|
|
245
|
+
desc: string;
|
|
246
|
+
values: string;
|
|
247
|
+
tip: string;
|
|
248
|
+
};
|
|
249
|
+
"server-build-radius-ratio": {
|
|
250
|
+
label: string;
|
|
251
|
+
desc: string;
|
|
252
|
+
values: string;
|
|
253
|
+
};
|
|
254
|
+
"allow-outbound-script-debugging": {
|
|
255
|
+
label: string;
|
|
256
|
+
desc: string;
|
|
257
|
+
values: string;
|
|
258
|
+
tip: string;
|
|
259
|
+
};
|
|
260
|
+
"allow-inbound-script-debugging": {
|
|
261
|
+
label: string;
|
|
262
|
+
desc: string;
|
|
263
|
+
values: string;
|
|
264
|
+
tip: string;
|
|
265
|
+
};
|
|
266
|
+
"force-inbound-debug-port": {
|
|
267
|
+
label: string;
|
|
268
|
+
desc: string;
|
|
269
|
+
values: string;
|
|
270
|
+
};
|
|
271
|
+
"script-debugger-auto-attach": {
|
|
272
|
+
label: string;
|
|
273
|
+
desc: string;
|
|
274
|
+
values: string;
|
|
275
|
+
options: {
|
|
276
|
+
disabled: string;
|
|
277
|
+
connect: string;
|
|
278
|
+
listen: string;
|
|
279
|
+
};
|
|
280
|
+
};
|
|
281
|
+
"script-debugger-auto-attach-connect-address": {
|
|
282
|
+
label: string;
|
|
283
|
+
desc: string;
|
|
284
|
+
values: string;
|
|
285
|
+
};
|
|
286
|
+
"websocket-retry-time": {
|
|
287
|
+
label: string;
|
|
288
|
+
desc: string;
|
|
289
|
+
values: string;
|
|
290
|
+
};
|
|
291
|
+
};
|
|
292
|
+
/**
|
|
293
|
+
* 字典收录的属性键。
|
|
294
|
+
* 使用场景:server-properties-fields.ts 以它约束字段清单,漏写或多写键时编译期报错。
|
|
295
|
+
*/
|
|
296
|
+
export type ServerPropertyKey = keyof typeof SERVER_PROPERTIES_DOCS_ZH_CN;
|
|
297
|
+
/**
|
|
298
|
+
* 表单分组标识 → 中文分组名。
|
|
299
|
+
* 使用场景:server-properties-fields.ts 生成表单字段时填写 group。
|
|
300
|
+
*/
|
|
301
|
+
export declare const SERVER_PROPERTY_GROUPS_ZH_CN: {
|
|
302
|
+
readonly basic: "基本";
|
|
303
|
+
readonly player: "玩家";
|
|
304
|
+
readonly network: "网络";
|
|
305
|
+
readonly performance: "性能";
|
|
306
|
+
readonly movement: "反作弊";
|
|
307
|
+
readonly script: "脚本调试";
|
|
308
|
+
readonly diagnostics: "诊断";
|
|
309
|
+
};
|
|
310
|
+
/** 表单分组标识 */
|
|
311
|
+
export type ServerPropertyGroup = keyof typeof SERVER_PROPERTY_GROUPS_ZH_CN;
|
|
13
312
|
/**
|
|
14
313
|
* 根据属性 key 和目标语言获取说明文档
|
|
15
314
|
*/
|
|
16
315
|
export declare function getServerPropertyDoc(key: string, locale?: string): ServerPropertyDoc | undefined;
|
|
316
|
+
/**
|
|
317
|
+
* 根据分组标识和目标语言获取分组名;没有对应语言时返回 undefined。
|
|
318
|
+
* 使用场景:server-properties-fields.ts 生成表单字段。
|
|
319
|
+
*/
|
|
320
|
+
export declare function getServerPropertyGroupLabel(group: ServerPropertyGroup, locale?: string): string | undefined;
|
|
17
321
|
//# sourceMappingURL=server-properties-i18n.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-properties-i18n.d.ts","sourceRoot":"","sources":["../src/server-properties-i18n.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server-properties-i18n.d.ts","sourceRoot":"","sources":["../src/server-properties-i18n.ts"],"names":[],"mappings":"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"}
|