22
33import com .google .gson .Gson ;
44import dev .felnull .BetterStorage ;
5- import dev .felnull .Data .GroupData ;
6- import dev .felnull .Data .GroupStorageBackup ;
7- import dev .felnull .Data .InventoryData ;
8- import dev .felnull .Data .StorageData ;
5+ import dev .felnull .Data .*;
96import org .bukkit .Bukkit ;
107import org .bukkit .ChatColor ;
118import org .bukkit .Material ;
2017import java .time .format .DateTimeFormatter ;
2118import java .time .format .DateTimeParseException ;
2219import java .util .*;
20+ import java .util .logging .Logger ;
2321import java .util .zip .GZIPInputStream ;
2422import java .util .zip .GZIPOutputStream ;
2523
@@ -28,22 +26,62 @@ public class UnifiedLogManager {
2826 private static final Gson gson = new Gson ();
2927
3028 // === 1. スナップショット保存(過去の状態をGZIP+JSONで保存) ===
31- public static void saveBackupSnapshot (GroupData groupData ) {
29+ public static boolean saveBackupSnapshot (GroupData groupData ) {
30+ Logger logger = Bukkit .getLogger ();
31+
32+ logger .info ("[Debug] groupUUID: " + groupData .groupUUID );
33+ logger .info ("[Debug] version: " + groupData .version );
34+
35+ StorageData storage = groupData .storageData ;
36+ if (storage == null ) {
37+ logger .warning ("[BetterStorage] スナップショット保存失敗: storageData が null" );
38+ return false ;
39+ }
40+
41+ // --- デバッグ出力 ---
42+ logger .info ("[Debug] bankMoney: " + storage .bankMoney );
43+ logger .info ("[Debug] inventory pages: " + storage .storageInventory .size ());
44+ for (Map .Entry <String , InventoryData > entry : storage .storageInventory .entrySet ()) {
45+ String pageId = entry .getKey ();
46+ InventoryData inv = entry .getValue ();
47+ logger .info (" [Page] " + pageId + " rows: " + inv .rows + " items: " + inv .itemStackSlot .size ());
48+
49+ for (Map .Entry <Integer , ItemStack > slotEntry : inv .itemStackSlot .entrySet ()) {
50+ int slot = slotEntry .getKey ();
51+ ItemStack item = slotEntry .getValue ();
52+ ItemMeta meta = item .getItemMeta ();
53+ logger .info (" [Slot " + slot + "] Type: " + item .getType () + ", Meta: " + meta .getClass ().getName ());
54+ String displayName = meta .hasDisplayName () ? meta .getDisplayName () : "none" ;
55+ logger .info (" → displayName: " + displayName );
56+
57+ List <String > lore = meta .getLore ();
58+ if (lore != null ) {
59+ for (String line : lore ) {
60+ logger .info (" → lore: " + line );
61+ }
62+ }
63+ }
64+ }
65+
3266 try (Connection conn = BetterStorage .BSPlugin .getDatabaseManager ().getConnection ()) {
3367 String sql = "INSERT INTO rollback_log (group_uuid, timestamp, json_data) VALUES (?, ?, ?)" ;
3468 try (PreparedStatement ps = conn .prepareStatement (sql )) {
35- GroupStorageBackup backup = new GroupStorageBackup (
36- groupData .groupUUID , groupData .storageData , groupData .version
37- );
69+ storage .detach ();
70+ StorageDataBackup safeCopy = new StorageDataBackup (storage );
71+ GroupStorageBackup backup = new GroupStorageBackup (groupData .groupUUID , safeCopy , groupData .version );
72+
3873 String json = gson .toJson (backup );
3974 byte [] compressed = compress (json .getBytes ());
75+
4076 ps .setString (1 , groupData .groupUUID .toString ());
4177 ps .setString (2 , LocalDateTime .now ().format (FORMATTER ));
4278 ps .setBytes (3 , compressed );
4379 ps .executeUpdate ();
4480 }
81+ return true ;
4582 } catch (Exception e ) {
46- Bukkit .getLogger ().warning ("バックアップスナップショット保存失敗: " + e .getMessage ());
83+ logger .warning ("バックアップスナップショット保存失敗: " + e .getMessage ());
84+ return false ;
4785 }
4886 }
4987 private static byte [] compress (byte [] input ) throws IOException {
@@ -108,7 +146,7 @@ public static void restoreSnapshot(GroupData group, GroupStorageBackup backup) {
108146 group .version = backup .version ;
109147
110148 // 古いStorageDataを復元
111- StorageData restored = backup .storageData ;
149+ StorageData restored = backup .storageData . toStorageData () ;
112150 restored .attach (group ); // GroupDataと結び付け
113151 group .storageData = restored ;
114152
@@ -147,8 +185,8 @@ public static boolean restoreGroupToTimestamp(UUID groupUUID, LocalDateTime targ
147185 return false ;
148186 }
149187
150- backup .storageData .attach (group );
151- group .storageData = backup .storageData ;
188+ backup .storageData .toStorageData (). attach (group );
189+ group .storageData = backup .storageData . toStorageData () ;
152190 group .version = backup .version ;
153191
154192 // 3. スナップショット以降の差分を適用
0 commit comments