forked from Upstream/mmocore
SQL fix
This commit is contained in:
parent
c1a231e8e1
commit
fa6809b483
@ -91,7 +91,7 @@ public class ExportDataTreeNode extends CommandTreeNode {
|
|||||||
MMOCore.plugin.dataProvider.getDataManager().loadData(offlinePlayerData);
|
MMOCore.plugin.dataProvider.getDataManager().loadData(offlinePlayerData);
|
||||||
|
|
||||||
// Player data is loaded, now it gets saved through SQL
|
// Player data is loaded, now it gets saved through SQL
|
||||||
sqlProvider.getDataManager().saveData(offlinePlayerData);
|
sqlProvider.getDataManager().saveData(offlinePlayerData, true);
|
||||||
} catch (RuntimeException exception) {
|
} catch (RuntimeException exception) {
|
||||||
errorCount++;
|
errorCount++;
|
||||||
exception.printStackTrace();
|
exception.printStackTrace();
|
||||||
|
@ -46,7 +46,7 @@ public abstract class PlayerDataManager {
|
|||||||
|
|
||||||
// Save data async if required
|
// Save data async if required
|
||||||
if (playerData.isFullyLoaded())
|
if (playerData.isFullyLoaded())
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(MMOCore.plugin, () -> saveData(playerData));
|
Bukkit.getScheduler().runTaskAsynchronously(MMOCore.plugin, () -> saveData(playerData, true));
|
||||||
|
|
||||||
// Close and unregister data instantly if no error occured
|
// Close and unregister data instantly if no error occured
|
||||||
playerData.close();
|
playerData.close();
|
||||||
@ -122,9 +122,10 @@ public abstract class PlayerDataManager {
|
|||||||
* This method should always be called sync because it DOES register
|
* This method should always be called sync because it DOES register
|
||||||
* an async task in case MySQL storage is used.
|
* an async task in case MySQL storage is used.
|
||||||
*
|
*
|
||||||
* @param data Player data to save
|
* @param data Player data to save
|
||||||
|
* @param logout When logging out, is_saved is switched back to 1. This parameter
|
||||||
|
* must be turned off when auto-saving because the player doesn't
|
||||||
|
* actually leave the server.
|
||||||
*/
|
*/
|
||||||
public abstract void saveData(PlayerData data);
|
public abstract void saveData(PlayerData data, boolean logout);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -137,12 +137,10 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//We now change the saved status to false because the data on SQL won't be the same as in the RAM
|
//We now change the saved status to false because the data on SQL won't be the same as in the RAM
|
||||||
MySQLTableEditor sql = new MySQLTableEditor(MySQLTableEditor.Table.PLAYERDATA, data.getUniqueId(), provider);
|
new MySQLTableEditor(MySQLTableEditor.Table.PLAYERDATA, data.getUniqueId(), provider).updateData("is_saved", 0);
|
||||||
|
|
||||||
//We set the saved status to false
|
|
||||||
sql.updateData("is_saved", 0);
|
|
||||||
this.cancel();
|
|
||||||
data.setFullyLoaded();
|
data.setFullyLoaded();
|
||||||
|
this.cancel();
|
||||||
MMOCore.sqlDebug("Loaded saved data for: '" + data.getUniqueId() + "'!");
|
MMOCore.sqlDebug("Loaded saved data for: '" + data.getUniqueId() + "'!");
|
||||||
MMOCore.sqlDebug(String.format("{ class: %s, level: %d }", data.getProfess().getId(), data.getLevel()));
|
MMOCore.sqlDebug(String.format("{ class: %s, level: %d }", data.getProfess().getId(), data.getLevel()));
|
||||||
return;
|
return;
|
||||||
@ -160,6 +158,9 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
|
|||||||
data.setExperience(0);
|
data.setExperience(0);
|
||||||
data.getQuestData().updateBossBar();
|
data.getQuestData().updateBossBar();
|
||||||
|
|
||||||
|
//We now change the saved status to false because the data on SQL won't be the same as in the RAM
|
||||||
|
new MySQLTableEditor(MySQLTableEditor.Table.PLAYERDATA, data.getUniqueId(), provider).updateData("is_saved", 0);
|
||||||
|
|
||||||
data.setFullyLoaded();
|
data.setFullyLoaded();
|
||||||
this.cancel();
|
this.cancel();
|
||||||
MMOCore.sqlDebug("Loaded DEFAULT data for: '" + data.getUniqueId() + "' as no saved data was found.");
|
MMOCore.sqlDebug("Loaded DEFAULT data for: '" + data.getUniqueId() + "' as no saved data was found.");
|
||||||
@ -177,7 +178,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveData(PlayerData data) {
|
public void saveData(PlayerData data, boolean logout) {
|
||||||
|
|
||||||
MySQLTableEditor sql = new MySQLTableEditor(MySQLTableEditor.Table.PLAYERDATA, data.getUniqueId(), provider);
|
MySQLTableEditor sql = new MySQLTableEditor(MySQLTableEditor.Table.PLAYERDATA, data.getUniqueId(), provider);
|
||||||
MMOCore.sqlDebug("Saving data for: '" + data.getUniqueId() + "'...");
|
MMOCore.sqlDebug("Saving data for: '" + data.getUniqueId() + "'...");
|
||||||
@ -211,7 +212,8 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
|
|||||||
request.addData("professions", data.getCollectionSkills().toJsonString());
|
request.addData("professions", data.getCollectionSkills().toJsonString());
|
||||||
request.addData("quests", data.getQuestData().toJsonString());
|
request.addData("quests", data.getQuestData().toJsonString());
|
||||||
request.addData("class_info", createClassInfoData(data).toString());
|
request.addData("class_info", createClassInfoData(data).toString());
|
||||||
request.addData("is_saved", 1);
|
if (logout)
|
||||||
|
request.addData("is_saved", 1);
|
||||||
sql.updateData(request);
|
sql.updateData(request);
|
||||||
MMOCore.sqlDebug("Saved data for: " + data.getUniqueId());
|
MMOCore.sqlDebug("Saved data for: " + data.getUniqueId());
|
||||||
MMOCore.sqlDebug(String.format("{ class: %s, level: %d }", data.getProfess().getId(), data.getLevel()));
|
MMOCore.sqlDebug(String.format("{ class: %s, level: %d }", data.getProfess().getId(), data.getLevel()));
|
||||||
|
@ -121,7 +121,7 @@ public class YAMLPlayerDataManager extends PlayerDataManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveData(PlayerData data) {
|
public void saveData(PlayerData data, boolean logout) {
|
||||||
ConfigFile file = new ConfigFile(data.getUniqueId());
|
ConfigFile file = new ConfigFile(data.getUniqueId());
|
||||||
FileConfiguration config = file.getConfig();
|
FileConfiguration config = file.getConfig();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user