1
0
mirror of https://github.com/Zrips/Jobs.git synced 2025-03-12 06:40:09 +01:00

Fixaru for multiserver compatibility issue

This commit is contained in:
Zrips 2019-10-28 13:55:18 +02:00
parent 0b1c035c4b
commit 0a7072ffab
4 changed files with 51 additions and 4 deletions

View File

@ -134,8 +134,7 @@ public class PlayerManager {
if (players.get(player.getName()) != null)
players.remove(player.getName().toLowerCase());
JobsPlayer jPlayer = playersUUID.get(player.getUniqueId()) != null ?
playersUUID.remove(player.getUniqueId()) : null;
JobsPlayer jPlayer = playersUUID.get(player.getUniqueId()) != null ? playersUUID.remove(player.getUniqueId()) : null;
return jPlayer;
}
@ -182,7 +181,10 @@ public class PlayerManager {
JobsPlayer jPlayer = playersUUIDCache.get(player.getUniqueId());
if (jPlayer == null || Jobs.getGCManager().MultiServerCompatability()) {
jPlayer = Jobs.getJobsDAO().loadFromDao(player);
if (jPlayer != null)
jPlayer = Jobs.getJobsDAO().loadFromDao(jPlayer);
else
jPlayer = Jobs.getJobsDAO().loadFromDao(player);
// Lets load quest progresion
PlayerInfo info = Jobs.getJobsDAO().loadPlayerData(player.getUniqueId());
@ -214,6 +216,7 @@ public class PlayerManager {
jPlayer.onDisconnect();
if (Jobs.getGCManager().saveOnDisconnect()) {
jPlayer.setSaved(false);
jPlayer.save();
}
}
@ -920,6 +923,7 @@ public class PlayerManager {
return false;
return Jobs.getReflections().hasNbtString(item, JobsItemBoost);
}
private final String JobsItemBoost = "JobsItemBoost";
public JobItems getJobsItemByNbt(ItemStack item) {

View File

@ -452,8 +452,10 @@ public class GeneralConfigManager {
"This will force to load players data every time he is logging in to have most up to date data instead of having preloaded data",
"This will enable automatically save-on-disconnect feature");
MultiServerCompatability = c.get("MultiServerCompatability", false);
if (MultiServerCompatability)
if (MultiServerCompatability) {
c.set("save-on-disconnect", true);
saveOnDisconnect = true;
}
c.addComment("Optimizations.NewVersion",
"When set to true staff will be informed about new Jobs plugin version", "You need to have jobs.versioncheck permission node");

View File

@ -365,11 +365,24 @@ public class JobsPlayer {
* get the playerUUID
* @return the playerUUID
*/
@Deprecated
public UUID getPlayerUUID() {
return getUniqueId();
}
/**
* get the playerUUID
* @return the playerUUID
*/
public UUID getUniqueId() {
return playerUUID;
}
public void setPlayerUUID(UUID playerUUID) {
setUniqueId(playerUUID);
}
public void setUniqueId(UUID playerUUID) {
this.playerUUID = playerUUID;
}

View File

@ -1707,6 +1707,34 @@ public abstract class JobsDAO {
return;
}
public JobsPlayer loadFromDao(JobsPlayer jPlayer) {
List<JobsDAOData> list = getAllJobs(jPlayer.getUserName(), jPlayer.getUniqueId());
// synchronized (jPlayer.saveLock) {
jPlayer.progression.clear();
for (JobsDAOData jobdata : list) {
if (!plugin.isEnabled())
return null;
// add the job
Job job = Jobs.getJob(jobdata.getJobName());
if (job == null)
continue;
// create the progression object
JobProgression jobProgression = new JobProgression(job, jPlayer, jobdata.getLevel(), jobdata.getExperience());
// calculate the max level
// add the progression level.
jPlayer.progression.add(jobProgression);
}
jPlayer.reloadMaxExperience();
jPlayer.reloadLimits();
jPlayer.setUserId(Jobs.getPlayerManager().getPlayerId(jPlayer.getUniqueId()));
loadPoints(jPlayer);
// }
return jPlayer;
}
public JobsPlayer loadFromDao(OfflinePlayer player) {
JobsPlayer jPlayer = new JobsPlayer(player.getName());