コンテンツにスキップ

トラブルシューティング

まず ツール › プラグインマネージャー… で、状態列とその下の詳細行を確認します。次に、出力ログで [プラグイン <id>] の行を探します。状態の意味は 読み込みとライフサイクル にあります。

症状原因解決
マネージャーの一覧にないplugin.json がフォルダーの直下にない (1 階層深くなっている)plugins\<フォルダー>\plugin.json の形に移動します。
マネージャーの一覧にないフォルダーを入れた後に再スキャンしていない「再スキャン」を押します。
マネージャーの一覧にない別のフォルダーに入れたツール › プラグインフォルダーを開く で開いたフォルダーに入れます。マネージャーウィンドウの上部に、読み込むフォルダーがすべて表示されます。
「待機」から変わらない初回実行の警告で「今回は読み込まない」を押した「有効」のチェックを外して付け直すと、警告が再表示されます。エディターを再起動しても表示されます。「信頼できる — 読み込む」を押します。
「エラー (ファイル)」 id の形式が不正大文字・- ・数字で始まる小文字で始め、小文字・数字・_ ・ . だけを使います。
「エラー (ファイル)」 version の形式が不正1.0 のような 2 区切り1.0.0 のように 3 区切りで書きます。
「エラー (ファイル)」 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他の大きな編集処理 (塗りつぶし・地形) が進行中処理が終わってから再実行します。例外を捕捉して通知に変えます。
ブロックが変わらない・戻り値が少ないロックされたマス (共同建築のロック・ロックされたアクター・セルガード)戻り値 (変更されたマスの数) で確認します。
ブロックが紫・黒のチェック模様になるブロックステートの文字列の誤字・名前空間の欠落minecraft:stone_bricks のように正確に書きます。
Ctrl+Z を何度も押さないと戻らないEdit を複数回呼び出している1 つの操作を Edit 1 回にまとめます。
新しいワールドに前のワールドの描画・状態が残るWorldChanged でクリアしていないhost.WorldChanged += _ => { …Clear(); host.Draw.Clear(); };
編集時にエディターがカクつくCommitted ハンドラーが重い数を数えるだけにし、重い処理は後で行います。
パネルを開くとエディターがカクつくライブテキスト (Label(() => …)) がワールドをスキャンしている値をフィールドに保持しておき、文字列では読むだけにします。
パネルの数値欄が保存値と違うパネルは有効化時に 1 回だけ作成される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 が 3 区切り・sdk = 使う機能の最小バージョン・dll ・ entry の名前が正しい。
  • フォルダーに NP.Editor.Sdk.dll がない (csproj で Private=false)。
  • 空のプラグインフォルダーに入れて「再スキャン」で「オン」になる。
  • 出力ログに例外の行がない。
  • 有効 → 無効 → 有効で、メニュー・パネル・モードが重複したり残ったりしない。
  • 新規ワールド・別のワールドを開いたときに、前の状態が残らない (WorldChanged)。
  • 機能 1 回を Ctrl+Z 1 回で元に戻せる。
  • 選択なし・空のワールドで例外が出ない。
  • コマンド名・ワールドロジック type・アクターの kind の前に自分の名前がある。
  • 画面の文字列に絵文字・絵文字記号がない。
  • ショートカットが内蔵キーと衝突しない (ツール › ショートカット… に赤い行がない)。
  • ワールドロジック type を追加した場合は、サーバー側 (NP Scene) のハンドラーも用意した。
  • Dispose でバックグラウンド処理・静的イベントを解除している。
  • 秘密鍵・トークン・個人のパスがコードとファイルにない。