fix sophisticated backpack integration for 1.20.4
This commit is contained in:
parent
9eb8bdc4a0
commit
22b628bdcb
|
|
@ -99,34 +99,35 @@ public class ModsSupport {
|
||||||
// --- Begin Backpack Data Restore ---
|
// --- Begin Backpack Data Restore ---
|
||||||
PlayerSync.LOGGER.info("Restoring backpack data for player " + player.getUUID());
|
PlayerSync.LOGGER.info("Restoring backpack data for player " + player.getUUID());
|
||||||
net.p3pp3rf1y.sophisticatedbackpacks.util.PlayerInventoryProvider.get().runOnBackpacks(player, (ItemStack backpackItem, String handler, String identifier, int slot) -> {
|
net.p3pp3rf1y.sophisticatedbackpacks.util.PlayerInventoryProvider.get().runOnBackpacks(player, (ItemStack backpackItem, String handler, String identifier, int slot) -> {
|
||||||
backpackItem.getCapability(net.p3pp3rf1y.sophisticatedbackpacks.api.CapabilityBackpackWrapper.getCapabilityInstance())
|
net.p3pp3rf1y.sophisticatedbackpacks.backpack.wrapper.IBackpackWrapper backpackWrapper = net.p3pp3rf1y.sophisticatedbackpacks.backpack.wrapper.BackpackWrapper
|
||||||
.ifPresent(wrapper -> {
|
.fromData(backpackItem);
|
||||||
// Retrieve the contents UUID from the backpack's NBT using NBTHelper
|
|
||||||
Optional<UUID> uuidOpt = net.p3pp3rf1y.sophisticatedcore.util.NBTHelper.getUniqueId(wrapper.getBackpack(), "contentsUuid");
|
// Retrieve the contents UUID from the backpack's NBT using NBTHelper
|
||||||
if (uuidOpt.isPresent()) {
|
Optional<UUID> uuidOpt = net.p3pp3rf1y.sophisticatedcore.util.NBTHelper
|
||||||
UUID contentsUuid = uuidOpt.get();
|
.getUniqueId(backpackWrapper.getBackpack(), "contentsUuid");
|
||||||
try {
|
if (uuidOpt.isPresent()) {
|
||||||
JDBCsetUp.QueryResult qrBackpack = JDBCsetUp.executeQuery("SELECT backpack_nbt FROM backpack_data WHERE uuid='" + contentsUuid + "'");
|
UUID contentsUuid = uuidOpt.get();
|
||||||
ResultSet rsBackpack = qrBackpack.resultSet();
|
try {
|
||||||
if (rsBackpack.next()) {
|
JDBCsetUp.QueryResult qrBackpack = JDBCsetUp.executeQuery("SELECT backpack_nbt FROM backpack_data WHERE uuid='" + contentsUuid + "'");
|
||||||
String serialized = rsBackpack.getString("backpack_nbt");
|
ResultSet rsBackpack = qrBackpack.resultSet();
|
||||||
String nbtString = deserializeString(serialized);
|
if (rsBackpack.next()) {
|
||||||
CompoundTag backpackNbt = NbtUtils.snbtToStructure(nbtString);
|
String serialized = rsBackpack.getString("backpack_nbt");
|
||||||
// Update BackpackStorage with the retrieved NBT
|
String nbtString = deserializeString(serialized);
|
||||||
net.p3pp3rf1y.sophisticatedbackpacks.backpack.BackpackStorage.get().setBackpackContents(contentsUuid, backpackNbt);
|
CompoundTag backpackNbt = NbtUtils.snbtToStructure(nbtString);
|
||||||
PlayerSync.LOGGER.info("Restored backpack data for UUID " + contentsUuid);
|
// Update BackpackStorage with the retrieved NBT
|
||||||
}
|
net.p3pp3rf1y.sophisticatedbackpacks.backpack.BackpackStorage.get().setBackpackContents(contentsUuid, backpackNbt);
|
||||||
rsBackpack.close();
|
PlayerSync.LOGGER.info("Restored backpack data for UUID " + contentsUuid);
|
||||||
qrBackpack.connection().close();
|
}
|
||||||
} catch (SQLException e) {
|
rsBackpack.close();
|
||||||
PlayerSync.LOGGER.error("Error restoring backpack data for UUID " + contentsUuid, e);
|
qrBackpack.connection().close();
|
||||||
} catch (CommandSyntaxException e) {
|
} catch (SQLException e) {
|
||||||
throw new RuntimeException(e);
|
PlayerSync.LOGGER.error("Error restoring backpack data for UUID " + contentsUuid, e);
|
||||||
}
|
} catch (CommandSyntaxException e) {
|
||||||
} else {
|
throw new RuntimeException(e);
|
||||||
PlayerSync.LOGGER.warn("Backpack item in slot " + slot + " has no contentsUuid during restore");
|
}
|
||||||
}
|
} else {
|
||||||
});
|
PlayerSync.LOGGER.warn("Backpack item in slot " + slot + " has no contentsUuid during restore");
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
// --- End Backpack Data Restore ---
|
// --- End Backpack Data Restore ---
|
||||||
|
|
@ -172,26 +173,27 @@ public class ModsSupport {
|
||||||
public static void storeSophisticatedBackpacks(Player player) {
|
public static void storeSophisticatedBackpacks(Player player) {
|
||||||
PlayerSync.LOGGER.info("Storing backpack data for player " + player.getUUID());
|
PlayerSync.LOGGER.info("Storing backpack data for player " + player.getUUID());
|
||||||
net.p3pp3rf1y.sophisticatedbackpacks.util.PlayerInventoryProvider.get().runOnBackpacks(player, (ItemStack backpackItem, String handler, String identifier, int slot) -> {
|
net.p3pp3rf1y.sophisticatedbackpacks.util.PlayerInventoryProvider.get().runOnBackpacks(player, (ItemStack backpackItem, String handler, String identifier, int slot) -> {
|
||||||
backpackItem.getCapability(net.p3pp3rf1y.sophisticatedbackpacks.api.CapabilityBackpackWrapper.getCapabilityInstance())
|
net.p3pp3rf1y.sophisticatedbackpacks.backpack.wrapper.IBackpackWrapper backpackWrapper = net.p3pp3rf1y.sophisticatedbackpacks.backpack.wrapper.BackpackWrapper
|
||||||
.ifPresent(wrapper -> {
|
.fromData(backpackItem);
|
||||||
// Retrieve the contents UUID from the backpack's NBT using NBTHelper
|
|
||||||
Optional<UUID> uuidOpt = net.p3pp3rf1y.sophisticatedcore.util.NBTHelper.getUniqueId(wrapper.getBackpack(), "contentsUuid");
|
// Retrieve the contents UUID from the backpack's NBT using NBTHelper
|
||||||
if (uuidOpt.isPresent()) {
|
Optional<UUID> uuidOpt = net.p3pp3rf1y.sophisticatedcore.util.NBTHelper
|
||||||
UUID contentsUuid = uuidOpt.get();
|
.getUniqueId(backpackWrapper.getBackpack(), "contentsUuid");
|
||||||
// Get internal backpack data from BackpackStorage (creates it if missing)
|
if (uuidOpt.isPresent()) {
|
||||||
CompoundTag backpackNbt = net.p3pp3rf1y.sophisticatedbackpacks.backpack.BackpackStorage.get().getOrCreateBackpackContents(contentsUuid);
|
UUID contentsUuid = uuidOpt.get();
|
||||||
String serialized = VanillaSync.serialize(backpackNbt.toString());
|
// Get internal backpack data from BackpackStorage (creates it if missing)
|
||||||
try {
|
CompoundTag backpackNbt = net.p3pp3rf1y.sophisticatedbackpacks.backpack.BackpackStorage.get().getOrCreateBackpackContents(contentsUuid);
|
||||||
// Use REPLACE INTO so existing records are updated
|
String serialized = VanillaSync.serialize(backpackNbt.toString());
|
||||||
JDBCsetUp.executeUpdate("REPLACE INTO backpack_data (uuid, backpack_nbt) VALUES ('" + contentsUuid + "', '" + serialized + "')");
|
try {
|
||||||
PlayerSync.LOGGER.info("Saved backpack data for UUID " + contentsUuid);
|
// Use REPLACE INTO so existing records are updated
|
||||||
} catch (SQLException e) {
|
JDBCsetUp.executeUpdate("REPLACE INTO backpack_data (uuid, backpack_nbt) VALUES ('" + contentsUuid + "', '" + serialized + "')");
|
||||||
PlayerSync.LOGGER.error("Error saving backpack data for UUID " + contentsUuid, e);
|
PlayerSync.LOGGER.info("Saved backpack data for UUID " + contentsUuid);
|
||||||
}
|
} catch (SQLException e) {
|
||||||
} else {
|
PlayerSync.LOGGER.error("Error saving backpack data for UUID " + contentsUuid, e);
|
||||||
PlayerSync.LOGGER.warn("Backpack item in slot " + slot + " has no contentsUuid");
|
}
|
||||||
}
|
} else {
|
||||||
});
|
PlayerSync.LOGGER.warn("Backpack item in slot " + slot + " has no contentsUuid");
|
||||||
|
}
|
||||||
return false; // Continue processing all backpack items.
|
return false; // Continue processing all backpack items.
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user