Skip to content

Commit 840eee6

Browse files
committed
個人向け倉庫のuuid取得するメソッドを追加
1 parent c3407e9 commit 840eee6

File tree

3 files changed

+158
-0
lines changed

3 files changed

+158
-0
lines changed

api.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# BetterStorage API ドキュメント
2+
3+
このドキュメントは BetterStorage の外部連携用APIについて記述しています。
4+
5+
## 主要クラスと構造
6+
7+
### GroupData
8+
- `String groupName`: グループ名(表示名)
9+
- `String groupUUID`: 内部識別用UUID(固定)
10+
- `boolean isPrivate`: 個人用グループかどうか
11+
- `String ownerPlugin`: このグループを所有するプラグイン名
12+
- `long version`: バージョン(保存・競合検出用)
13+
- `StorageData storageData`: ストレージ全体のデータ
14+
15+
### StorageData
16+
- `Map<String, InventoryData> storageInventory`: ページIDをキーとしたインベントリ情報
17+
- `double bankMoney`: 銀行資金
18+
- `boolean requireBankPermission`: 銀行利用に権限が必要かどうか
19+
20+
### InventoryData
21+
- `String pageId`: インベントリページのID
22+
- `String displayName`: 表示名
23+
- `int rowCount`: 行数(1〜6)
24+
- `boolean requirePermission`: 権限が必要か
25+
- `Map<Integer, ItemStack> itemSlot`: スロット番号とItemStackのマップ
26+
- `List<String> userTags`: タグのリスト
27+
- `long version`: ページ単位でのバージョン番号
28+
29+
---
30+
31+
## DataIO クラスのメソッド一覧
32+
33+
### static GroupData loadGroupData(String groupName)
34+
指定したグループ名のデータをデータベースから読み込みます。
35+
36+
### static GroupData loadGroupData(UUID groupUUID)
37+
UUIDベースでグループデータを読み込みます。
38+
39+
### static void saveGroupData(GroupData groupData)
40+
グループ全体のデータを保存します(全ページ・メンバー・タグ含む)。
41+
42+
### static void saveGroupData(GroupData groupData, long expectedVersion)
43+
指定されたバージョンと一致する場合のみ保存します(楽観的排他制御)。
44+
45+
### static boolean saveInventoryOnly(DatabaseManager db, GroupData groupData, String pageId)
46+
ページ単位でインベントリだけを保存。バージョン整合性チェックも含まれます。
47+
48+
---
49+
50+
## Rollback & DiffLog
51+
52+
### RollbackLogManager
53+
- `saveRollbackLog(GroupData groupData)`: グループ全体の完全スナップショットを保存
54+
- `restoreGroupFromRollback(String groupUUID, LocalDateTime timestamp)`: 指定時点のバックアップから復元
55+
- `getRollbackTimestamps(String groupUUID)`: すべてのバックアップ時刻を取得
56+
57+
### DiffLogManager
58+
- `saveDiffLogs(DatabaseManager db, GroupData groupData)`: 差分ログ(ページごと)を保存
59+
- `restoreGroupFromDiffLog(DatabaseManager db, GroupData groupData, LocalDateTime timestamp)`: 差分ログから復元(ページごと)
60+
61+
---
62+
63+
## タグ検索・ユーザーアクセス判定(予定機能)
64+
65+
### StorageAPI(将来追加予定)
66+
- タグに基づくページフィルタリング
67+
- ユーザーの所属グループ・権限判定
68+
- 他プラグインからのCRUD操作(安全なラッパー)
69+
70+
---
71+
72+
## データベース構造
73+
(詳しくは `TableInitializer` を参照)
74+
- group_table
75+
- group_member_table
76+
- storage_table
77+
- inventory_table
78+
- inventory_item_table
79+
- tag_table
80+
- inventory_item_log
81+
- rollback_log
82+
83+
---
84+
85+
## 注意
86+
- 外部プラグインは `GroupManager.getGroupByUUID(UUID)` または `GroupManager.getGroupByName(String)` を通じて `GroupData` を取得可能。
87+
- `GroupData` を直接変更した場合、`DataIO.saveGroupData()` によって保存が必要。
88+
- 差分保存の際は `saveInventoryOnly` を使うと効率的。
89+
90+
---
91+
92+
## バージョン
93+
BetterStorage 1.0.6-SNAPSHOT 用API仕様書
94+

readme.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# BetterStorage
2+
3+
高度で安全なグループ型ストレージ管理プラグイン
4+
5+
## 概要
6+
7+
BetterStorage は、プレイヤーごと・グループごとにインベントリ・お金・タグなどを安全かつ柔軟に管理できる Minecraft サーバー用プラグインです。MariaDBによる永続保存、差分ログによるロールバック、UUIDベースによる高精度な識別が特徴です。
8+
9+
## 特徴
10+
11+
- グループ単位でストレージを管理(共有インベントリ/個人インベントリ)
12+
- UUIDベースの識別(名前変更でも安全)
13+
- インベントリやタグの差分を自動保存
14+
- ロールバック機能搭載(過去の状態に戻せる)
15+
- Redisや他プラグインとの連携を想定したAPI設計
16+
- 別プラグインによるGUI制御が可能(BetterStorageはバックエンド)
17+
18+
## 対応バージョン
19+
20+
- Paper 1.16.5
21+
22+
## 依存関係
23+
24+
- MariaDB
25+
- HikariCP
26+
27+
## インストール
28+
29+
1. `BetterStorage-1.0.6-SNAPSHOT-shaded.jar``plugins` フォルダに配置
30+
2. config.yml に MariaDB 接続情報を記入
31+
3. サーバーを起動してテーブルを自動生成
32+
33+
## コマンド
34+
35+
```
36+
/bstorage rollback <groupName/playerName> <yyyy-MM-dd HH:mm:ss>
37+
/bstorage diff <groupName/playerName> <yyyy-MM-dd HH:mm:ss>
38+
/bstorage list <groupName/playerName>
39+
/bstorage help
40+
```
41+
42+
## 差分とロールバックについて
43+
44+
- 保存時に自動で差分ログを記録
45+
- 毎日深夜にロールバック用の完全バックアップを保存
46+
- 差分ログは30日で自動削除
47+
48+
## 開発API
49+
50+
BetterStorageは外部プラグインから `GroupData`, `InventoryData` などのデータ取得や制御が可能です。 詳細は [API.md](API.md) を参照してください。
51+
52+
## ライセンス
53+
54+
MIT License(予定)
55+

src/main/java/dev/felnull/DataIO/GroupManager.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import dev.felnull.Data.GroupData;
44
import org.bukkit.OfflinePlayer;
5+
import org.jetbrains.annotations.Nullable;
56

67
import java.util.*;
78
import java.util.concurrent.ConcurrentHashMap;
@@ -91,4 +92,12 @@ public static List<String> getGroupsForPlayer(OfflinePlayer player) {
9192
public static List<String> getAllGroupNames() {
9293
return new ArrayList<>(nameMap.keySet());
9394
}
95+
96+
/**個人向けグループデータを取得**/
97+
public static @Nullable GroupData getPersonalGroup(UUID playerUUID) {
98+
return getAllGroups().stream()
99+
.filter(g -> g.isPrivate && g.groupUUID.equals(playerUUID))
100+
.findFirst()
101+
.orElse(null);
102+
}
94103
}

0 commit comments

Comments
 (0)