安全性と互換性

Storia を入れると何が変わり、何が変わらないのか。データの扱い、プレイヤーへの影響、バニラやプラグインとの互換性をまとめました。

Storia を入れる前に知っておきたいことを 1 ページにまとめました。結論から言うと、Storia 独自の機能は バニラと同じ結果になるように作られていて、ワールドは普通の Minecraft 形式のまま保存されます。 いつでも Paper や Folia に戻せます。

ひと目で#

気になること 答え
ワールドは独自形式になる? なりません。普通の Anvil 形式(リージョンファイル)のままです。
Paper・Folia・バニラに戻せる? 戻せます。ワールドフォルダをそのまま使えます。
地形は変わる? 変わりません。同じシード値なら、バニラとまったく同じ地形になります。
レッドストーンやモブの動きは? Storia 独自の変更は同じ結果を保ちます。違いが出るのは、もとになった Folia の仕様の部分です。
プレイヤーの情報を外部に送る? 送りません。送るのは、サーバーの台数などの匿名の統計(bStats)だけで、オフにできます。
プラグインは動く? Folia に対応したプラグインだけが動きます。

データの扱い#

ワールドとプレイヤーデータ#

  • ワールド、プレイヤーデータ、進捗、統計は、普通の Minecraft と同じ形式・同じ場所に保存されます。 Storia をやめたくなったら、ワールドフォルダを Paper などのサーバーにそのまま持っていけます。
  • Storia Cluster では、ワールドは Relay の cluster-world/ に、これも普通の形式で保存されます。 Cluster をやめるときは、このフォルダを 1 台の Storia に置くだけです。
  • ファイルはいったん一時ファイルに書いてから置き換えるので、途中で止まっても書きかけのファイルは残りません。

外部への送信#

プレイヤーの名前・IP アドレス・チャット・ワールドの中身は、どこにも送りません。送るのは次の 2 つだけです。

送信 内容 止め方
bStats の統計 サーバーの台数・人数、Storia・Minecraft・Java のバージョン、OS、CPU のコア数、単体か Cluster か、RAM ワールドを使っているか。どれも匿名で、30 分に 1 回送ります サーバー:plugins/bStats/config.yml の enabled: false。プロキシ:plugins/bStats/config.txt の enabled=false
バージョン確認 /version を実行したときだけ、GitHub に新しいリリースがあるかを確認 実行しなければ送信しません

集まった統計は、誰でも見られます:Storia・Storia Proxy。 26.2-4 までは、Folia・Velocity の統計として送っていました。Storia Relay は何も送りません。

Cluster の通信#

  • ワーカー・Relay・プロキシの間の通信は、決めた合言葉(secret)ですべて暗号化・認証されます(AES-256-GCM)。 合言葉そのものは送られません。詳しくは 暗号化とセキュリティ。
  • この通信には、チャンク・インベントリ・位置などワールドのすべてが含まれます。Relay とワーカーは、自分で管理しているマシンで 動かしてください。

プラグインの共有データ#

プラグイン API で共有したデータは、Relay(単体なら storia-shared/)に暗号化せずにファイルとして保存されます。 パスワードなど秘密の情報を入れる場合は、プラグイン側で暗号化してください。

障害が起きたとき#

起きたこと どうなるか
サーバーのプロセスが落ちた 最後の自動保存以降の変更が失われます(普通のサーバーと同じ)。RAM ワールドは、次の起動時に RAM 上のコピーから復旧します。
マシンの電源が落ちた(RAM ワールド使用中) RAM の内容が消え、最後の同期以降の変更が失われます。同期の間隔は ram-world.sync-interval-seconds(初期値 5 分)です。
Relay が止まった(Cluster) ワーカーは動き続け、書き込みを cluster-spool/ に貯めて、Relay が戻ったら送ります。止まっている間は、新しいプレイヤーはログインできません。
ワーカーが 1 台止まった(Cluster) そのワーカーのプレイヤーは切断されます。ワールドは Relay にあるので、ほかのワーカーで入り直せます。/stop で止めた場合は、先にほかのワーカーへ移すので切断されません。
Relay からプレイヤーデータを読めなかった(Cluster) ログインを断ります。空のデータで上書きして持ち物を消すことはありません。

どの場合でも、定期的なバックアップは必要です。バックアップはディスク上のワールド(Cluster なら Relay の cluster-world/)から取ります。

プレイヤーへの影響#

変わらないこと#

  • クライアントの Mod は要りません。 普通の Minecraft 26.2 のクライアントで入れます。
  • 地形・ブロック・アイテム・戦闘・クラフトはバニラと同じです。地形生成の高速化は、バニラと 1 ビットも違わない結果になることを確認しています。
  • 近くにいるプレイヤーは、Cluster でも常に同じサーバーで動きます。一緒に遊んでいる相手が別のサーバーに分かれることはありません。

変わること(混んでいるときだけ)#

機能 いつ プレイヤーから見た変化 オフにするには
Tick Guard 1 つの場所が重すぎるとき 密集したモブ(1 チャンクに 16 体以上)の反応が少し遅れる。プレイヤーの近く 8 ブロック以内のモブは変わらない tick-guard.enabled: false
プレイヤーごとの予算 重い場所で、エリトラなど高速で移動しているとき その人の描画距離が短くなる。速度が落ちれば戻る player-budget.enabled: false
メモリの保護(プレイヤーごとの予算) Java のヒープが 85% を超えたとき 全員の描画距離が 1 段階ずつ短くなる player-budget.enabled: false
Cluster の移動 ワーカー間を移るとき 26.1・26.2 のクライアントは何も起きない。ViaVersion 経由の古いクライアントは短い読み込み画面が出ることがある Cluster を使わない

サーバーに余裕があるときは、これらの機能は何もしません。

バニラとの互換性#

Storia 独自の変更#

Storia が加えた変更は、どれもバニラと同じ結果を保つように作られています。

  • 地形生成の高速化:同じシード値なら、同じ地形・同じ構造物になります。
  • エンティティの押し合いの高速化:押し合いの結果は同じです。
  • Tick Guard:ブロック(レッドストーン、ピストン、ホッパー、作物)には一切触れません。重いときに、密集したモブが 次の行動を考え直す回数を減らすだけです。移動・重力・水流・当たり判定は毎 tick 動きます。

Folia から受け継いだ違い#

Storia は Folia のフォークなので、Folia とバニラの違いはそのまま受け継ぎます。主なものは次のとおりです。

  • ワールドを「リージョン」に分けて並列に動かすので、離れた場所どうしの処理の順番がバニラと同じとは限りません。 普通の遊び方で違いに気づくことはほとんどありませんが、非常に長い距離をまたぐ装置などでは、動きが変わることがあります。
  • /scoreboard・/team など、一部のコマンドがありません。
  • 詳しくは Folia の README を参照してください。

Cluster での違い#

  • プラグインはワーカーごとに別々に動きます。プラグインのデータを共有するには プラグイン API を使います。
  • 時刻・天気・ゲームルール・スコアボード・地図は、全ワーカーで共有されます。詳しくは 複数サーバーで 1 つのワールド。

プラグインとの互換性#

  • Folia に対応したプラグイン(plugin.yml に folia-supported: true)だけが動きます。Paper 専用のプラグインは動きません。
  • Folia に対応していれば、Storia のために書き換える必要はありません。
  • 詳しくは プラグインの互換性。

試すときのおすすめ#

  1. 今のワールドのバックアップを取る。
  2. コピーしたワールドで Storia を起動し、使っているプラグインと装置が動くかを確かめる。
  3. 問題がなければ本番に移す。合わなければ、ワールドをそのまま元のサーバーに戻す。

おかしな動きを見つけたら、GitHub で教えてください。