跳转到内容

故障排除

首先在「工具 › 插件管理器…」中查看状态列和下方的详细行。然后在输出日志中查找 [插件 <id>] 行。各状态的含义见加载与生命周期。

症状原因解决
管理器列表中没有plugin.json 不在文件夹根目录(多嵌套了一层)移动为 plugins\<文件夹>\plugin.json 的形式。
管理器列表中没有放入文件夹后没有重新扫描点击「重新扫描」。
管理器列表中没有放到了其他文件夹放入通过「工具 › 打开插件文件夹」打开的文件夹。管理器窗口顶部会列出所有读取的文件夹。
一直停在「等待」在首次运行警告中点击了「本次不加载」取消「启用」勾选后再重新勾选,警告会再次出现。重启编辑器也会出现。点击「可信 — 加载」。
「错误 (文件)」 id 格式错误含大写字母 · - · 以数字开头以小写字母开头,只使用小写字母 · 数字 · _ · .。
「错误 (文件)」 version 格式错误像 1.0 这样只有两段像 1.0.0 这样写成三段。
「错误 (文件)」 缺少 sdk … · sdk 版本错误没有 sdk 字段或写法有误写成 "^1.0" 的形式。
「错误 (文件)」 dll 必须位于 plugin.json 旁…dll 中含 .. 或绝对路径写成相对于 plugin.json 的相对路径。
「错误 (文件)」 找不到 dll没有构建,或名称不同使构建输出的 dll 名称与 dll 字段一致。
「错误 (已隔离)」 加载失败: … 找不到 entry 类型entry 的命名空间 · 类名有误写出 命名空间.类 的完整名称,大小写也要一致。
「错误 (已隔离)」 加载失败: … 没有 INpEditorPlugin 实现没有入口类,或入口类为 abstract · 没有无参数的 public 构造函数在 public sealed class Plugin : INpEditorPlugin 中提供无参数构造函数。
「错误 (已隔离)」 加载失败: … 不是 INpEditorPlugin (无参构造函数)entry 类未实现 INpEditorPlugin,或没有无参数的 public 构造函数确认实现和构造函数。
「错误 (文件)」 相同 id … 已存在其他文件夹中有相同的 id删除其中一个或更改 id。
「版本不匹配」 需要 SDK ^1.3 — 本编辑器为 1.2.0sdk 范围高于编辑器的 SDK更新编辑器,或根据所用功能降低 sdk。
「版本不匹配」 加载失败: MissingMethodException 等用新 SDK 构建,但 sdk 写得过低将 sdk 提高到实际所用功能的版本。
「错误 (已隔离)」 加载失败: …Register 中发生异常修正输出日志中的异常。参见下方「注册」表。
症状原因解决
刚启用就「错误 (已隔离)」 … 为空Id · Name · Kind · 快捷键名称 · 键为空字符串填写空字段。
「错误 (已隔离)」 无法解析快捷键按键"1~8" · "W/E/R" · "Ctrl++" 之类的键字符串写成 "Ctrl+Alt+H" 的形式。参见注册点中的键表。
「错误 (已隔离)」 与场景事件 type 有关同一角色中已存在相同 Type(内置 cinematic 等)在 Type 前加上自己的名称。
控制台命令未生成已存在同名命令 · 名称中含空格在名称前加上自己的名称并去掉空格。
菜单出现在意外的位置Menu 名称拼写错误(生成了新菜单)使用 "파일" · "편집" · "창" · "도구" · "빌드" · "도움말" 之一。
看不到面板面板以关闭状态生成在「窗口」菜单中打开该面板。
模式栏中看不到模式前 8 个之后的模式位于「更多」中打开模式栏末尾的「更多」。
菜单 · 标签页名称中的符号消失图形字符会在界面上被去除只写文字,图标通过 Icon 字段以图标名称指定。
症状原因解决
使用中变为「错误 (已隔离)」回调(菜单 · 命令 · 事件 · 面板文字 · Simulate)中发生异常查看输出日志中的 错误 → 已隔离 — <位置>: … 并修正,然后点击「重新加载 (所选)」
World.Edit 中出现 InvalidOperationException其他大型编辑任务(填充 · 地形)正在进行任务结束后重试。捕获异常并改为通知。
方块未更改 · 返回值偏少锁定的格(协作建造锁定 · 已锁定的 Actor · 格守卫)通过返回值(更改的格数)确认。
方块显示为紫黑棋盘格方块状态字符串拼写错误 · 缺少命名空间准确地写成 minecraft:stone_bricks 这样的形式。
需要按多次 Ctrl+Z 才能恢复多次调用了 Edit将一个操作合并到一次 Edit 中。
新世界中残留了前一个世界的绘制 · 状态未在 WorldChanged 中清空host.WorldChanged += _ => { …Clear(); host.Draw.Clear(); };
编辑时编辑器卡顿Committed 处理器过重只做计数,繁重的工作稍后再做。
打开面板后编辑器卡顿动态文字(Label(() => …))扫描了世界把值存在字段中,文字中只读取。
面板数字字段与保存值不同面板在启用时只创建一次在 Register 开头先读取 Settings。
SetCamera 返回 false未在运行中 · 值为 NaN先检查 host.View.Playing。
host.WorldChanged -= … 不起作用宿主事件不支持 -=在处理器内用标志过滤。
设置丢失设置文件损坏,以空设置启动检查 plugin_settings\<id>.json.bad。
症状原因解决
重新构建的内容未生效插件文件夹中残留旧 dll · 未重新加载覆盖新的 dll 并点击「重新加载 (所选)」
「重新扫描」后未生效已启用的插件不会重新加载使用「重新加载 (所选)」。
禁用后仍未从内存中卸载静态事件 · 计时器 · 线程中残留了自己的对象在 IDisposable.Dispose 中解除。
禁用后后台任务仍在运行未停止 Task.Run 任务在 Dispose 中用 CancellationToken 停止。
  • plugin.json:id 规则 · version 三段 · sdk = 所用功能的最低版本 · dll · entry 名称正确。
  • 文件夹中没有 NP.Editor.Sdk.dll(csproj Private=false)。
  • 放入干净的插件文件夹后,通过「重新扫描」变为「已启用」。
  • 输出日志中没有异常行。
  • 启用 → 禁用 → 启用后,菜单 · 面板 · 模式不会重复或残留。
  • 新建世界 · 打开其他世界后,不会残留之前的状态(WorldChanged)。
  • 执行一次功能后,按一次 Ctrl+Z 即可撤销。
  • 无选择 · 空世界时没有异常。
  • 命令名 · 世界逻辑 type · Actor kind 前带有自己的名称。
  • 界面文字中没有表情符号 · 图形字符。
  • 快捷键不与内置键冲突(「工具 › 快捷键…」中没有红色行)。
  • 若添加了世界逻辑 type,也已准备好服务器端(NP Scene)的处理器。
  • 在 Dispose 中解除后台任务 · 静态事件。
  • 代码和文件中没有密钥 · 令牌 · 个人路径。