endermine icon

endermine -----

Connecting data using mongodb



# エンダーマイン
*Spigot & Paper のクロスサーバーインベントリ / エンダーチェスト / Vault マネー同期ツール*

---

## 1. 何をするのですか?

エンダーマインは各プレイヤーの…を保存します。

* メインインベントリ(全36スロット)
* 鎧の内容
* エンダーチェスト(任意のサイズ)
* 金庫残高(エコノミー)

…MongoDBに**リアルタイム**で保存し、プレイヤーが

* サーバーに参加する
* 世界を変える
* サーバー変更 (Bungee / Velocity)
* または定期的な自動保存タイマーが作動したとき。

これにより、ネットワークのすべてのサーバーで単一の共有状態が維持されます。これは、異なるマイナー ビルド (例: *main* = 1.12.4、*resource* = 1.12.6) または完全に異なる jar フレーバー (Spigot、Paper、Purpur など) を実行している場合でも同じです。

このプラグインは NMS ではなく純粋な Bukkit API を使用するため、1.8 から 1.21 以降で動作します。

---

## 2. 主な特徴

| 特集 | 詳細 |
|---------|----------|
| インベントリ同期 | *インベントリ* + *アーマー* を別々に保存します。 |
| エンダーチェスト同期 | サイズセーフ: 別のプラグインがチェストの容量を増やすと、ロード時に配列がトリミング/拡張されます。 |
| Vault のお金の同期 | Vault 経由で読み取り/書き込みます。Vault がない場合、この機能は自動的に無効になります。 |
| 自動保存 | 設定の `autosave-ticks` (デフォルト **600 t = 30 秒**)。 |
| データ損失ゼロ | 初回実行時にはドキュメントが存在しません → プラグインはバニラ プレイヤーデータをそのまま残します → 最初の保存時に現在の状態を Mongo にコピーします。 |
| Mongo スキーマ | `{ _id : <uuid>, inv : "<b64>", armor : "<b64>", ender : "<b64>", money : 123.45 }` |
| 後方 / 前方 | `spigot-api:1.12.2-R0.1-SNAPSHOT` に対して構築されています。API 呼び出しのみが使用されるため、新しいサーバーまたは古いサーバーで動作します。 |

---

## 3. 要件

* Java 17+ (最新の Paper と同じ)
* MongoDB 3.4+ (ローカルまたはリモート)
* Vault **および** あらゆる経済プラグイン (EssentialsX、CMI、…) – お金の同期が必要な場合のみ
* スピゴット、ペーパー、パープル…1.8~1.21以上

---

## 4. インストール

1. **Vault.jar** (必要な場合) とエコノミー プラグインを `/plugins/` にドロップします。
2. **Endermine-xxx-shaded.jar** を `/plugins/` にドロップします。
3. サーバーを一度起動すると、`plugins/Endermine/config.yml` が作成されます。
4. 必要に応じて Mongo セクションを編集し、再起動/リロードします。

---

## 5. 設定 (`config.yml`)

```yaml
モンゴ:
URI: "mongodb://localhost:27017"
データベース:「Minecraft」
コレクション:「在庫」

autosave-ticks: 600 # 600 tick = 30秒
「」

`autosave-ticks` を 1 以上の任意の値に設定します。
`0` は定期的なタスクを無効にします (参加/終了/ワールド変更の保存のみが実行されます)。

---

## 6. ソースからビルドする

「」
git クローン https://github.com/YourRepo/Endermine.git
cd エンダーマイン
mvnクリーンパッケージ
# → target/Endermine-<バージョン>-shaded.jar
「」

`maven-shade-plugin` は MongoDB ドライバーをバンドルし、競合を避けるために再配置するので、必要なのは **1 つの jar** だけです。

---

## 7. どのように機能しますか?

1. **シリアル化**
Bukkit の `BukkitObjectOutputStream` は、すべての `ItemStack` 配列を、MongoDB に保存される前に Base64 でエンコードされたバイト ストリームに変換します。
2. **互換性**
サーバーが同じ *メジャー* バージョン (例: 1.12.x) を実行している限り、Bukkit はデータを逆シリアル化できます。マテリアルの名前変更 (1.13 以上) は、必要に応じて API によって自動的にマップされます。
3. **アトミック アップサート**
`replaceOne(filter, document, new ReplaceOptions().upsert(true))` は、ドキュメントが挿入または置換され、重複されないことを保証します。
4. **お金の同期**
参加時に、プラグインは Mongo から `money` を読み取り、それをライブ Vault 残高と比較します。保存された値と一致するように差分が預け入れられたり、引き出されたりするのです。

---

## 8. 安全に関する注意事項

* インストール後の最初の参加では何も上書きされません。Mongo は空なので、変更は行われません。
* 最初のセーブはプレイヤーがすでに持っているものをコピーします。
* それでも、大規模なロールアウトを行う前に、必ず `world/playerdata/` と MongoDB データベースのバックアップを保存してください。

---

## 9. コマンドと権限

コマンドも権限もありません。
プラグインは完全に自動化されています。

---

## 10. サポート

GitHub リポジトリでの問題とプル リクエストを歓迎します。
テスト対象:

* 論文-1.12.2、1.20.6、1.21.7
* スピゴット 1.8.8
* プルプル-1.19
* グロウストーン-1.12.2

---

Minecraft ネットワーク全体でシームレスで損失のないインベントリ体験をお楽しみください。
Resource Information
Author:
----------
Total Downloads: 18
First Release: Jul 2, 2025
Last Update: Jul 2, 2025
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings