You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// If online but in a different world, or getPlayer() returned null, fall through to stored data logic
108
+
if (onlineTarget != null) {
109
+
inventories.getLogger().fine("Player " + targetPlayer.getName() + " is online but in world " + onlineTarget.getWorld().getName() + ". Loading stored data for " + worldName + ".");
110
+
} else {
111
+
inventories.getLogger().warning("Player " + targetPlayer.getName() + " is online but getPlayer() returned null. Falling back to stored data.");
112
+
}
113
+
// If the player is offline or online in a different world, or live data failed, load from Multiverse-Inventories' stored profiles
thrownewIllegalStateException("No player data found for " + targetPlayer.getName() + " in world " + worldName + ". Try checking a different world or ensure the player has played in this world.");
112
147
}
113
-
// If online but in a different world, or getPlayer() returned null, fall through to stored data logic
114
-
if (onlineTarget != null) {
115
-
inventories.getLogger().fine("Player " + targetPlayer.getName() + " is online but in world " + onlineTarget.getWorld().getName() + ". Loading stored data for " + worldName + ".");
116
-
} else {
117
-
inventories.getLogger().warning("Player " + targetPlayer.getName() + " is online but getPlayer() returned null. Falling back to stored data.");
thrownewIllegalStateException("No player data found for " + targetPlayer.getName() + " in world " + worldName + ". Try checking a different world or ensure the player has played in this world.");
inventories.getLogger().severe("Failed to save inventory for " + targetPlayer.getName() + " in world " + worldName + ": " + throwable.getMessage());
222
+
throwable.printStackTrace();
223
+
returnnull;
224
+
});
225
+
}
226
+
227
+
privatevoidupdateOnlinePlayerInventoryData(
228
+
OfflinePlayertargetPlayer,
229
+
StringworldName,
230
+
@NotNullItemStack[] newContents,
231
+
@NotNullItemStack[] newArmor,
232
+
ItemStacknewOffHand
233
+
) {
234
+
// If the target player is online, update their live inventory
235
+
if (!targetPlayer.isOnline()) {
236
+
return;
237
+
}
238
+
239
+
PlayeronlinePlayer = targetPlayer.getPlayer();
240
+
if (onlinePlayer == null) {
241
+
return;
242
+
}
243
+
244
+
// Check if the online player is in the world whose inventory was modified
245
+
// This is important to avoid overwriting their current inventory if they are in a different world
246
+
if (!onlinePlayer.getWorld().getName().equalsIgnoreCase(worldName)) {
247
+
inventories.getLogger().info("Player " + onlinePlayer.getName() + " is online but in a different world (" + onlinePlayer.getWorld().getName() + "), not updating live inventory.");
onlinePlayer.updateInventory(); // Ensure client sees changes
211
-
inventories.getLogger().info("Updated live inventory for online player " + onlinePlayer.getName() + " in world " + worldName);
212
-
});
213
-
} else {
214
-
inventories.getLogger().info("Player " + onlinePlayer.getName() + " is online but in a different world (" + onlinePlayer.getWorld().getName() + "), not updating live inventory.");
215
-
}
216
-
}
217
-
}
218
-
}).exceptionally(throwable -> {
219
-
inventories.getLogger().severe("Failed to save inventory for " + targetPlayer.getName() + " in world " + worldName + ": " + throwable.getMessage());
0 commit comments