39 lines
2.5 KiB
TypeScript
39 lines
2.5 KiB
TypeScript
export const pluginPageBundle = { key: "minecraft-server-plugin", version: "1.0.0", integritySha256: "sha256:2222222222222222222222222222222222222222222222222222222222222222" };
|
|
|
|
type ReactLike = { createElement: (...args: any[]) => any };
|
|
|
|
export function renderPluginPage(react: ReactLike, input: any) {
|
|
const e = react.createElement;
|
|
const pageKey = input.page?.key ?? "files";
|
|
const workspace = input.workspace;
|
|
if (pageKey === "mods-market") return renderModsMarket(e, input);
|
|
return renderFiles(e, input, workspace);
|
|
}
|
|
|
|
function renderFiles(e: ReactLike["createElement"], input: any, workspace: any) {
|
|
const files = workspace?.files ?? [];
|
|
return e("section", { className: "console-panel", "aria-label": "Minecraft 文件管理" },
|
|
e("div", { className: "panel-header" },
|
|
e("div", null, e("h2", null, "文件管理"), e("p", { className: "provider-id" }, "server.properties、whitelist.json、OP 列表和日志由 Minecraft 插件声明。")),
|
|
e("span", { className: "page-status" }, input.context?.serverInstanceId ? "已绑定服务器" : "未绑定服务器")
|
|
),
|
|
e("div", { className: "console-row-list" },
|
|
files.length ? files.map((file: any) => e("div", { key: file.key, className: "console-row" }, e("span", null, file.label), e("strong", null, file.kind === "config" ? file.editable === false ? "配置只读" : "配置可写" : "日志只读"))) : e("div", { className: "console-row" }, e("span", null, "声明文件"), e("strong", null, "等待插件工作区"))
|
|
)
|
|
);
|
|
}
|
|
|
|
function renderModsMarket(e: ReactLike["createElement"], input: any) {
|
|
return e("section", { className: "console-panel", "aria-label": "Minecraft mod 插件市场" },
|
|
e("div", { className: "panel-header" },
|
|
e("div", null, e("h2", null, "mod/插件市场"), e("p", { className: "provider-id" }, "Minecraft 插件拥有自己的 mod/插件入口;平台只提供安全托管上下文。")),
|
|
e("span", { className: "page-status" }, input.availability?.available ? "运行端可用" : input.availability?.reason ?? "等待运行端")
|
|
),
|
|
e("div", { className: "console-row-list" },
|
|
e("div", { className: "console-row" }, e("span", null, "服务器"), e("strong", null, input.context?.serverInstanceId ?? "未绑定")),
|
|
e("div", { className: "console-row" }, e("span", null, "权限"), e("strong", null, (input.context?.permissions ?? []).join(" / ") || "未声明")),
|
|
e("div", { className: "console-row" }, e("span", null, "安装策略"), e("strong", null, "由 Minecraft 插件声明和审核"))
|
|
)
|
|
);
|
|
}
|