tried to fix a weird playerdata bug

This commit is contained in:
ASangarin 2022-01-12 03:51:52 +01:00
parent bc0b3f747f
commit 0e1928069a
3 changed files with 9 additions and 4 deletions

View File

@ -32,7 +32,9 @@ public abstract class PlayerDataManager {
* @return Player data, if it's loaded * @return Player data, if it's loaded
*/ */
public PlayerData get(UUID uuid) { public PlayerData get(UUID uuid) {
return Objects.requireNonNull(data.get(uuid), "Player data is not loaded"); if(isLoaded(uuid))
return Objects.requireNonNull(data.get(uuid), "Player data is not loaded");
else return setup(uuid);
} }
/** /**
@ -51,13 +53,13 @@ public abstract class PlayerDataManager {
// Unregister once the data was saved // Unregister once the data was saved
playerData.close(); playerData.close();
this.data.remove(playerData.getUniqueId()); data.remove(playerData.getUniqueId());
}); });
// Just unregister data without saving // Just unregister data without saving
else { else {
playerData.close(); playerData.close();
this.data.remove(playerData.getUniqueId()); data.remove(playerData.getUniqueId());
} }
} }
@ -85,7 +87,6 @@ public abstract class PlayerDataManager {
* @return The loaded player data. * @return The loaded player data.
*/ */
public PlayerData setup(UUID uniqueId) { public PlayerData setup(UUID uniqueId) {
// Load player data if it does not exist // Load player data if it does not exist
if (!data.containsKey(uniqueId)) { if (!data.containsKey(uniqueId)) {
PlayerData newData = TemporaryPlayerData.has(uniqueId) ? new PlayerData(MMOPlayerData.get(uniqueId), TemporaryPlayerData.get(uniqueId)) : new PlayerData(MMOPlayerData.get(uniqueId)); PlayerData newData = TemporaryPlayerData.has(uniqueId) ? new PlayerData(MMOPlayerData.get(uniqueId), TemporaryPlayerData.get(uniqueId)) : new PlayerData(MMOPlayerData.get(uniqueId));

View File

@ -12,6 +12,7 @@ import net.Indyuce.mmocore.manager.data.PlayerDataManager;
import net.Indyuce.mmocore.manager.data.mysql.MySQLTableEditor.Table; import net.Indyuce.mmocore.manager.data.mysql.MySQLTableEditor.Table;
import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.MythicLib;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.jetbrains.annotations.NotNull;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@ -174,6 +175,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
return json; return json;
} }
@NotNull
@Override @Override
public OfflinePlayerData getOffline(UUID uuid) { public OfflinePlayerData getOffline(UUID uuid) {
return isLoaded(uuid) ? get(uuid) : new MySQLOfflinePlayerData(uuid); return isLoaded(uuid) ? get(uuid) : new MySQLOfflinePlayerData(uuid);

View File

@ -17,6 +17,7 @@ import net.Indyuce.mmocore.api.player.profess.PlayerClass;
import net.Indyuce.mmocore.api.player.profess.SavedClassInformation; import net.Indyuce.mmocore.api.player.profess.SavedClassInformation;
import net.Indyuce.mmocore.api.player.stats.StatType; import net.Indyuce.mmocore.api.player.stats.StatType;
import net.Indyuce.mmocore.manager.data.PlayerDataManager; import net.Indyuce.mmocore.manager.data.PlayerDataManager;
import org.jetbrains.annotations.NotNull;
public class YAMLPlayerDataManager extends PlayerDataManager { public class YAMLPlayerDataManager extends PlayerDataManager {
@ -126,6 +127,7 @@ public class YAMLPlayerDataManager extends PlayerDataManager {
file.save(); file.save();
} }
@NotNull
@Override @Override
public OfflinePlayerData getOffline(UUID uuid) { public OfflinePlayerData getOffline(UUID uuid) {
return isLoaded(uuid) ? get(uuid) : new YAMLOfflinePlayerData(uuid); return isLoaded(uuid) ? get(uuid) : new YAMLOfflinePlayerData(uuid);