Fixed a sync problem where XP bars were 1-step behind

This commit is contained in:
nossr50 2019-01-19 20:30:19 -08:00
parent b7b0ff13e7
commit b8a146f8bd
5 changed files with 16 additions and 15 deletions

View File

@ -50,6 +50,7 @@ import com.gmail.nossr50.util.skills.SkillUtils;
import com.gmail.nossr50.util.sounds.SoundManager; import com.gmail.nossr50.util.sounds.SoundManager;
import com.gmail.nossr50.util.sounds.SoundType; import com.gmail.nossr50.util.sounds.SoundType;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -143,18 +144,18 @@ public class McMMOPlayer {
experienceBarManager.hideExperienceBar(primarySkillType); experienceBarManager.hideExperienceBar(primarySkillType);
}*/ }*/
public void processPostXpEvent(XPGainReason xpGainReason, PrimarySkillType primarySkillType, mcMMO plugin, int xpGained) public void processPostXpEvent(XPGainReason xpGainReason, PrimarySkillType primarySkillType, Plugin plugin)
{ {
if(xpGainReason != XPGainReason.SHARED_PVP && xpGainReason != XPGainReason.SHARED_PVE && xpGainReason != XPGainReason.VAMPIRISM) if(xpGainReason != XPGainReason.SHARED_PVP && xpGainReason != XPGainReason.SHARED_PVE && xpGainReason != XPGainReason.VAMPIRISM)
updateXPBar(primarySkillType, plugin); updateXPBar(primarySkillType, plugin);
} }
public void processUnlockNotifications(mcMMO plugin, PrimarySkillType primarySkillType, int level) public void processUnlockNotifications(mcMMO plugin, PrimarySkillType primarySkillType)
{ {
RankUtils.executeSkillUnlockNotifications(plugin, this, primarySkillType, profile.getSkillLevel(primarySkillType)); RankUtils.executeSkillUnlockNotifications(plugin, this, primarySkillType, profile.getSkillLevel(primarySkillType));
} }
public void updateXPBar(PrimarySkillType primarySkillType, mcMMO plugin) public void updateXPBar(PrimarySkillType primarySkillType, Plugin plugin)
{ {
//Skill Unlock Notifications //Skill Unlock Notifications
@ -533,6 +534,7 @@ public class McMMOPlayer {
*/ */
private void checkXp(PrimarySkillType primarySkillType, XPGainReason xpGainReason) { private void checkXp(PrimarySkillType primarySkillType, XPGainReason xpGainReason) {
if (getSkillXpLevelRaw(primarySkillType) < getXpToLevel(primarySkillType)) { if (getSkillXpLevelRaw(primarySkillType) < getXpToLevel(primarySkillType)) {
UserManager.getPlayer(player).processPostXpEvent(xpGainReason, primarySkillType, mcMMO.p);
return; return;
} }
@ -550,6 +552,7 @@ public class McMMOPlayer {
} }
if (!EventUtils.handleLevelChangeEvent(player, primarySkillType, levelsGained, xpRemoved, true, xpGainReason)) { if (!EventUtils.handleLevelChangeEvent(player, primarySkillType, levelsGained, xpRemoved, true, xpGainReason)) {
UserManager.getPlayer(player).processPostXpEvent(xpGainReason, primarySkillType, mcMMO.p);
return; return;
} }
@ -562,6 +565,9 @@ public class McMMOPlayer {
*/ */
NotificationManager.sendPlayerLevelUpNotification(UserManager.getPlayer(player), primarySkillType, profile.getSkillLevel(primarySkillType)); NotificationManager.sendPlayerLevelUpNotification(UserManager.getPlayer(player), primarySkillType, profile.getSkillLevel(primarySkillType));
//UPDATE XP BARS
UserManager.getPlayer(player).processPostXpEvent(xpGainReason, primarySkillType, mcMMO.p);
} }
/* /*

View File

@ -30,7 +30,8 @@ public class SelfListener implements Listener {
Player player = event.getPlayer(); Player player = event.getPlayer();
PrimarySkillType skill = event.getSkill(); PrimarySkillType skill = event.getSkill();
UserManager.getPlayer(player).processUnlockNotifications(plugin, event.getSkill(), event.getSkillLevel()); //Send player skill unlock notifications
UserManager.getPlayer(player).processUnlockNotifications(plugin, event.getSkill());
if(Config.getInstance().getScoreboardsEnabled()) if(Config.getInstance().getScoreboardsEnabled())
ScoreboardManager.handleLevelUp(player, skill); ScoreboardManager.handleLevelUp(player, skill);
@ -64,8 +65,6 @@ public class SelfListener implements Listener {
if (event.getXpGainReason() == XPGainReason.COMMAND) if (event.getXpGainReason() == XPGainReason.COMMAND)
{ {
//Update the XP Bar
mcMMOPlayer.processPostXpEvent(event.getXpGainReason(), primarySkillType, plugin, (int) event.getRawXpGained());
return; return;
} }
@ -73,8 +72,6 @@ public class SelfListener implements Listener {
if (threshold <= 0 || !ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) { if (threshold <= 0 || !ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) {
// Diminished returns is turned off // Diminished returns is turned off
//Update the XP Bar
mcMMOPlayer.processPostXpEvent(event.getXpGainReason(), primarySkillType, plugin, (int) event.getRawXpGained());
return; return;
} }
@ -117,9 +114,5 @@ public class SelfListener implements Listener {
} }
} }
//Update the XP Bar
if(!event.isCancelled())
mcMMOPlayer.processPostXpEvent(event.getXpGainReason(), primarySkillType, plugin, (int) event.getRawXpGained());
} }
} }

View File

@ -3,6 +3,7 @@ package com.gmail.nossr50.skills;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.datatypes.skills.XPGainReason;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.skills.PerksUtils; import com.gmail.nossr50.util.skills.PerksUtils;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;

View File

@ -41,6 +41,7 @@ import org.bukkit.event.Event;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerFishEvent; import org.bukkit.event.player.PlayerFishEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import java.util.HashMap; import java.util.HashMap;

View File

@ -3,8 +3,8 @@ package com.gmail.nossr50.util.experience;
import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.skills.ExperienceBarHideTask; import com.gmail.nossr50.runnables.skills.ExperienceBarHideTask;
import org.bukkit.plugin.Plugin;
import java.util.HashMap; import java.util.HashMap;
@ -27,7 +27,7 @@ public class ExperienceBarManager {
this.mcMMOPlayer = mcMMOPlayer; this.mcMMOPlayer = mcMMOPlayer;
} }
public void updateExperienceBar(PrimarySkillType primarySkillType, mcMMO plugin) public void updateExperienceBar(PrimarySkillType primarySkillType, Plugin plugin)
{ {
if(!ExperienceConfig.getInstance().isExperienceBarsEnabled() || !ExperienceConfig.getInstance().isExperienceBarEnabled(primarySkillType)) if(!ExperienceConfig.getInstance().isExperienceBarsEnabled() || !ExperienceConfig.getInstance().isExperienceBarEnabled(primarySkillType))
return; return;
@ -55,7 +55,7 @@ public class ExperienceBarManager {
} }
} }
private void scheduleHideTask(PrimarySkillType primarySkillType, mcMMO plugin) { private void scheduleHideTask(PrimarySkillType primarySkillType, Plugin plugin) {
ExperienceBarHideTask experienceBarHideTask = new ExperienceBarHideTask(this, mcMMOPlayer, primarySkillType); ExperienceBarHideTask experienceBarHideTask = new ExperienceBarHideTask(this, mcMMOPlayer, primarySkillType);
experienceBarHideTask.runTaskLater(plugin, 20*2); experienceBarHideTask.runTaskLater(plugin, 20*2);
experienceBarHideTaskHashMap.put(primarySkillType, experienceBarHideTask); experienceBarHideTaskHashMap.put(primarySkillType, experienceBarHideTask);