概要
一部環境において、棚ブロック(Shelf系)を右クリックした際にクライアントがクラッシュする事例が報告されています。
根本原因は環境依存(プラグイン競合・Protocol/データ版差分 等)である可能性があり一概に特定できませんが、
サーバ側で該当のPlayerInteractEvent を捕捉し右クリックをキャンセルすることで
クラッシュを防ぐ暫定回避が可能です。
注意: これは“回避策”であり、棚ブロックの通常操作(本の出し入れ 等)は無効化されます。根治には
サーバ本体・依存プラグイン・リソース/データパックの更新・設定見直しが必要な場合があります。
サーバ本体・依存プラグイン・リソース/データパックの更新・設定見直しが必要な場合があります。
プラグイン名
- ShelfBlocker v1.0.0
- 目的: 棚ブロックへの右クリックをサーバ側でキャンセル
- 対応(想定): Spigot / Paper 1.21.9
導入手順
- サーバを停止します。
- plugins フォルダへ
ShelfBlocker-1.0.0.jarを配置します。 - (任意)既存のクラッシュに関係しそうなリソース/データパック・プラグイン更新を先に適用。
- サーバを起動します。初回起動で plugins/ShelfBlocker/config.yml が生成されます。
- 必要に応じて設定を編集し、/shelfblocker reload で反映します。
安全な検証のすすめ: 先に検証用ワールド/テストサーバで導入し、エラーログ(latest.log)に
競合が出ていないか確認してください。
競合が出ていないか確認してください。
主な機能
- 棚ブロック(
CHISELED_BOOKSHELF等)への右クリックをキャンセル - 対象ブロックの拡張・除外、ワールド単位の制御、バイパス権限の付与に対応
- ヒット時にサーバログへ記録(任意)
設定例(config.yml)
# ShelfBlocker v1.0.0 # 対象ブロックの右クリックをキャンセルしてクラッシュを回避します。 enabled: true # 右クリックキャンセル対象の Material 名(Spigot/Paper の定数) # 例: バニラの「本が並ぶ棚」は CHISELED_BOOKSHELF target-blocks: - CHISELED_BOOKSHELF # 必要に応じて追加 # - SHELF # - CUSTOM_SHELF # 対象ワールドの指定(空配列なら全ワールドで有効) worlds: [] # true の場合、キャンセル時にプレイヤーへ短いメッセージを表示 notify-player: false player-message: "&cこのブロックの操作は一時的に無効化されています。" # true の場合、キャンセルイベントをログ出力 log-cancel: true # バイパス権限を持つプレイヤーはキャンセルされません bypass-permission: "shelfblocker.bypass"
権限 / コマンド
shelfblocker.bypass… バイパス(運営者・検証用)shelfblocker.admin… 管理用
/shelfblocker reload # 設定を再読み込み /shelfblocker status # 現在の有効/無効・対象ブロック等を表示(搭載している場合)
実装コマンドは配布された JAR の仕様に従ってください。本記事の例は一般的な構成を想定したものです。
よくある質問(FAQ)
Q. サーバは落ちないのにクライアントだけがクラッシュします。効果はありますか?
はい。クライアントクラッシュのトリガになっている右クリック自体をサーバでキャンセルするため、クラッシュ誘発を避けられる見込みがあります。
Q. 右クリックが効かなくなると棚の通常操作ができません。
その通りです。これは暫定回避です。クラッシュが解消された時点で enabled: false にするか、対象ブロックを削除してください。
Q. どのブロック名を入れれば良いですか?
バニラの書見台や本棚と混同に注意してください。1.21.9 で棚のように見えるブロックを扱うプラグインやデータパックの場合、Material 名が異なることがあります。ログ出力やデバッグ棒の情報、プラグイン作者のドキュメントを確認してください。
Q. Paper の設定や他プラグインと競合しますか?
一般に「イベントキャンセル」系は低リスクですが、別プラグインが同イベントを強制的に許可する場合は競合します。優先度(EventPriority)やロード順の調整が必要になることがあります。
トラブルシュート
- キャンセルされない:
target-blocksの Material 名が正しいか、対象ワールドか、権限でバイパスされていないかを確認。 - 別のクラッシュが起きる: 本件と無関係の可能性。該当時刻の latest.log とクラッシュレポートを精査。
- ViaVersion などの互換層: クラッシュがクライアント-サーバ間のプロトコル不一致起因の可能性もあるため、互換層の更新や設定見直しも検討。
変更履歴
- v1.0.0 初版公開(右クリックキャンセル・対象ブロック/ワールド指定・権限・通知/ログ)
おわりに
棚ブロック右クリックによるクラッシュは原因が多岐に渡るため、まずはサーバ/プラグイン/データパックのアップデートを試し、改善しない場合の暫定策として本プラグインを検討してください。根治に向けた情報が集まり次第、記事を更新予定です。


コメント