Fixing some issues with scoreboards, it's getting late so I'll take a better look at them in the morning.

This commit is contained in:
nossr50 2019-01-11 10:27:11 -08:00
parent 1d62f8b177
commit b572c0aea9
10 changed files with 71 additions and 31 deletions

View File

@ -676,6 +676,8 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
@Override @Override
protected void loadKeys() {} protected void loadKeys() {}
/* GENERAL */ /* GENERAL */
public int getAbilityLength() { return config.getInt("Skills.General.Ability.IncreaseLevel", 50); } public int getAbilityLength() { return config.getInt("Skills.General.Ability.IncreaseLevel", 50); }
public int getEnchantBuff() { return config.getInt("Skills.General.Ability.EnchantBuff", 5); } public int getEnchantBuff() { return config.getInt("Skills.General.Ability.EnchantBuff", 5); }

View File

@ -8,6 +8,7 @@ public enum NotificationType {
SUBSKILL_UNLOCKED("SubSkillUnlocked"), SUBSKILL_UNLOCKED("SubSkillUnlocked"),
LEVEL_UP_MESSAGE("LevelUps"), LEVEL_UP_MESSAGE("LevelUps"),
SUBSKILL_MESSAGE("SubSkillInteraction"), SUBSKILL_MESSAGE("SubSkillInteraction"),
SUBSKILL_MESSAGE_FAILURE("SubSkillFailure"),
TOOL("ToolReady"), TOOL("ToolReady"),
UNSKILLED("LevelRequirementNotMet"), UNSKILLED("LevelRequirementNotMet"),
ABILITY_OFF("AbilityOff"), ABILITY_OFF("AbilityOff"),

View File

@ -19,7 +19,7 @@ public class McMMOPlayerNotificationEvent extends PlayerEvent implements Cancell
protected TextComponent notificationTextComponent; protected TextComponent notificationTextComponent;
protected final NotificationType notificationType; protected final NotificationType notificationType;
public McMMOPlayerNotificationEvent(Player who, NotificationType notificationType, net.md_5.bungee.api.chat.TextComponent notificationTextComponent, ChatMessageType chatMessageType) { public McMMOPlayerNotificationEvent(Player who, NotificationType notificationType, TextComponent notificationTextComponent, ChatMessageType chatMessageType) {
super(who); super(who);
this.notificationType = notificationType; this.notificationType = notificationType;
this.notificationTextComponent = notificationTextComponent; this.notificationTextComponent = notificationTextComponent;

View File

@ -9,7 +9,6 @@ import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
import com.gmail.nossr50.datatypes.skills.subskills.interfaces.InteractType; import com.gmail.nossr50.datatypes.skills.subskills.interfaces.InteractType;
import com.gmail.nossr50.datatypes.skills.subskills.interfaces.Interaction; import com.gmail.nossr50.datatypes.skills.subskills.interfaces.Interaction;
import com.gmail.nossr50.events.skills.McMMOPlayerNotificationEvent; import com.gmail.nossr50.events.skills.McMMOPlayerNotificationEvent;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.TextComponentFactory; import com.gmail.nossr50.util.TextComponentFactory;

View File

@ -59,13 +59,13 @@ public class Taming {
protected static String getCallOfTheWildFailureMessage(EntityType type) { protected static String getCallOfTheWildFailureMessage(EntityType type) {
switch (type) { switch (type) {
case OCELOT: case OCELOT:
return LocaleLoader.getString("Taming.Summon.Fail.Ocelot"); return "Taming.Summon.Fail.Ocelot";
case WOLF: case WOLF:
return LocaleLoader.getString("Taming.Summon.Fail.Wolf"); return "Taming.Summon.Fail.Wolf";
case HORSE: case HORSE:
return LocaleLoader.getString("Taming.Summon.Fail.Horse"); return "Taming.Summon.Fail.Horse";
default: default:
return ""; return "";

View File

@ -3,12 +3,14 @@ package com.gmail.nossr50.skills.taming;
import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.datatypes.interactions.NotificationType;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.PrimarySkill;
import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.datatypes.skills.XPGainReason;
import com.gmail.nossr50.events.fake.FakeEntityTameEvent; import com.gmail.nossr50.events.fake.FakeEntityTameEvent;
import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillWeightedActivationCheckEvent; import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillWeightedActivationCheckEvent;
import com.gmail.nossr50.listeners.InteractionManager;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.skills.BleedTimerTask; import com.gmail.nossr50.runnables.skills.BleedTimerTask;
@ -328,7 +330,7 @@ public class TamingManager extends SkillManager {
for (Entity entity : player.getNearbyEntities(range, range, range)) { for (Entity entity : player.getNearbyEntities(range, range, range)) {
if (entity.getType() == type) { if (entity.getType() == type) {
player.sendMessage(Taming.getCallOfTheWildFailureMessage(type)); InteractionManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILURE, Taming.getCallOfTheWildFailureMessage(type));
return false; return false;
} }
} }

View File

@ -259,7 +259,7 @@ public class ScoreboardManager {
public static void enablePlayerSkillScoreboard(Player player, PrimarySkill skill) { public static void enablePlayerSkillScoreboard(Player player, PrimarySkill skill) {
ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName());
wrapper.setOldScoreboard(); //wrapper.setOldScoreboard();
wrapper.setTypeSkill(skill); wrapper.setTypeSkill(skill);
changeScoreboard(wrapper, Config.getInstance().getSkillScoreboardTime()); changeScoreboard(wrapper, Config.getInstance().getSkillScoreboardTime());
@ -273,7 +273,7 @@ public class ScoreboardManager {
return; return;
} }
wrapper.setOldScoreboard(); //wrapper.setOldScoreboard();
wrapper.setTypeSkill(skill); wrapper.setTypeSkill(skill);
changeScoreboard(wrapper, Config.getInstance().getSkillLevelUpTime()); changeScoreboard(wrapper, Config.getInstance().getSkillLevelUpTime());
@ -282,7 +282,7 @@ public class ScoreboardManager {
public static void enablePlayerStatsScoreboard(Player player) { public static void enablePlayerStatsScoreboard(Player player) {
ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName());
wrapper.setOldScoreboard(); //wrapper.setOldScoreboard();
wrapper.setTypeSelfStats(); wrapper.setTypeSelfStats();
changeScoreboard(wrapper, Config.getInstance().getStatsScoreboardTime()); changeScoreboard(wrapper, Config.getInstance().getStatsScoreboardTime());
@ -291,7 +291,7 @@ public class ScoreboardManager {
public static void enablePlayerInspectScoreboard(Player player, PlayerProfile targetProfile) { public static void enablePlayerInspectScoreboard(Player player, PlayerProfile targetProfile) {
ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName());
wrapper.setOldScoreboard(); //wrapper.setOldScoreboard();
wrapper.setTypeInspectStats(targetProfile); wrapper.setTypeInspectStats(targetProfile);
changeScoreboard(wrapper, Config.getInstance().getInspectScoreboardTime()); changeScoreboard(wrapper, Config.getInstance().getInspectScoreboardTime());
@ -300,7 +300,7 @@ public class ScoreboardManager {
public static void enablePlayerCooldownScoreboard(Player player) { public static void enablePlayerCooldownScoreboard(Player player) {
ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName());
wrapper.setOldScoreboard(); //wrapper.setOldScoreboard();
wrapper.setTypeCooldowns(); wrapper.setTypeCooldowns();
changeScoreboard(wrapper, Config.getInstance().getCooldownScoreboardTime()); changeScoreboard(wrapper, Config.getInstance().getCooldownScoreboardTime());
@ -309,7 +309,7 @@ public class ScoreboardManager {
public static void showPlayerRankScoreboard(Player player, Map<PrimarySkill, Integer> rank) { public static void showPlayerRankScoreboard(Player player, Map<PrimarySkill, Integer> rank) {
ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName());
wrapper.setOldScoreboard(); //wrapper.setOldScoreboard();
wrapper.setTypeSelfRank(); wrapper.setTypeSelfRank();
wrapper.acceptRankData(rank); wrapper.acceptRankData(rank);
@ -319,7 +319,7 @@ public class ScoreboardManager {
public static void showPlayerRankScoreboardOthers(Player player, String targetName, Map<PrimarySkill, Integer> rank) { public static void showPlayerRankScoreboardOthers(Player player, String targetName, Map<PrimarySkill, Integer> rank) {
ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName());
wrapper.setOldScoreboard(); //wrapper.setOldScoreboard();
wrapper.setTypeInspectRank(targetName); wrapper.setTypeInspectRank(targetName);
wrapper.acceptRankData(rank); wrapper.acceptRankData(rank);
@ -329,7 +329,7 @@ public class ScoreboardManager {
public static void showTopScoreboard(Player player, PrimarySkill skill, int pageNumber, List<PlayerStat> stats) { public static void showTopScoreboard(Player player, PrimarySkill skill, int pageNumber, List<PlayerStat> stats) {
ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName());
wrapper.setOldScoreboard(); //wrapper.setOldScoreboard();
wrapper.setTypeTop(skill, pageNumber); wrapper.setTypeTop(skill, pageNumber);
wrapper.acceptLeaderboardData(stats); wrapper.acceptLeaderboardData(stats);
@ -339,7 +339,7 @@ public class ScoreboardManager {
public static void showTopPowerScoreboard(Player player, int pageNumber, List<PlayerStat> stats) { public static void showTopPowerScoreboard(Player player, int pageNumber, List<PlayerStat> stats) {
ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName());
wrapper.setOldScoreboard(); //wrapper.setOldScoreboard();
wrapper.setTypeTopPower(pageNumber); wrapper.setTypeTopPower(pageNumber);
wrapper.acceptLeaderboardData(stats); wrapper.acceptLeaderboardData(stats);

View File

@ -33,6 +33,7 @@ public class ScoreboardWrapper {
public final String playerName; public final String playerName;
public final UUID playerUUID; public final UUID playerUUID;
private final Scoreboard scoreboard; private final Scoreboard scoreboard;
private final Player player;
private boolean tippedKeep = false; private boolean tippedKeep = false;
private boolean tippedClear = false; private boolean tippedClear = false;
@ -49,23 +50,24 @@ public class ScoreboardWrapper {
public int leaderboardPage = -1; public int leaderboardPage = -1;
private ScoreboardWrapper(Player player, Scoreboard scoreboard) { private ScoreboardWrapper(Player player, Scoreboard scoreboard) {
this.player = player;
this.playerName = player.getName(); this.playerName = player.getName();
this.scoreboard = scoreboard; this.scoreboard = scoreboard;
this.playerUUID = player.getUniqueId(); this.playerUUID = player.getUniqueId();
sidebarType = SidebarType.NONE; sidebarType = SidebarType.NONE;
if(this.scoreboard.getObjective(getObjective(ObjectiveType.SIDEBAR)) == null) if(this.scoreboard.getObjective(getObjectiveIdentifier(ObjectiveType.SIDEBAR)) == null)
sidebarObjective = this.scoreboard.registerNewObjective(getObjective(ObjectiveType.SIDEBAR), "dummy"); sidebarObjective = this.scoreboard.registerNewObjective(getObjectiveIdentifier(ObjectiveType.SIDEBAR), "dummy");
else else
{ {
this.scoreboard.getObjective(getObjective(ObjectiveType.SIDEBAR)).unregister(); this.scoreboard.getObjective(getObjectiveIdentifier(ObjectiveType.SIDEBAR)).unregister();
sidebarObjective = this.scoreboard.registerNewObjective(getObjective(ObjectiveType.SIDEBAR), "dummy"); sidebarObjective = this.scoreboard.registerNewObjective(getObjectiveIdentifier(ObjectiveType.SIDEBAR), "dummy");
} }
if(this.scoreboard.getObjective(getObjective(ObjectiveType.POWER)) == null) if(this.scoreboard.getObjective(getObjectiveIdentifier(ObjectiveType.POWER)) == null)
powerObjective = this.scoreboard.registerNewObjective(getObjective(ObjectiveType.POWER), "dummy"); powerObjective = this.scoreboard.registerNewObjective(getObjectiveIdentifier(ObjectiveType.POWER), "dummy");
else else
powerObjective = this.scoreboard.getObjective(getObjective(ObjectiveType.POWER)); powerObjective = this.scoreboard.getObjective(getObjectiveIdentifier(ObjectiveType.POWER));
if (Config.getInstance().getPowerLevelTagsEnabled()) { if (Config.getInstance().getPowerLevelTagsEnabled()) {
powerObjective.setDisplayName(ScoreboardManager.TAG_POWER_LEVEL); powerObjective.setDisplayName(ScoreboardManager.TAG_POWER_LEVEL);
@ -77,7 +79,7 @@ public class ScoreboardWrapper {
} }
} }
public String getObjective(ObjectiveType objectiveType) public String getObjectiveIdentifier(ObjectiveType objectiveType)
{ {
switch(objectiveType) switch(objectiveType)
{ {
@ -92,7 +94,7 @@ public class ScoreboardWrapper {
} }
public static ScoreboardWrapper create(Player player) { public static ScoreboardWrapper create(Player player) {
return new ScoreboardWrapper(player, mcMMO.p.getServer().getScoreboardManager().getMainScoreboard()); return new ScoreboardWrapper(player, getMainScoreboard());
} }
public BukkitTask updateTask = null; public BukkitTask updateTask = null;
@ -173,7 +175,7 @@ public class ScoreboardWrapper {
/** /**
* Set the old scoreboard, for use in reverting. * Set the old scoreboard, for use in reverting.
*/ */
public void setOldScoreboard() { /*public void setOldScoreboard() {
Player player = mcMMO.p.getServer().getPlayerExact(playerName); Player player = mcMMO.p.getServer().getPlayerExact(playerName);
if (player == null) { if (player == null) {
@ -192,7 +194,7 @@ public class ScoreboardWrapper {
else { else {
this.oldBoard = oldBoard; this.oldBoard = oldBoard;
} }
} }*/
public void showBoardWithNoRevert() { public void showBoardWithNoRevert() {
Player player = mcMMO.p.getServer().getPlayerExact(playerName); Player player = mcMMO.p.getServer().getPlayerExact(playerName);
@ -253,7 +255,7 @@ public class ScoreboardWrapper {
return; return;
} }
if (oldBoard != null) { if (oldBoard != null && oldBoard != player.getScoreboard()) {
if (player.getScoreboard() == scoreboard) { if (player.getScoreboard() == scoreboard) {
player.setScoreboard(oldBoard); player.setScoreboard(oldBoard);
oldBoard = null; oldBoard = null;
@ -265,6 +267,13 @@ public class ScoreboardWrapper {
cancelRevert(); cancelRevert();
//Unregister the boards
if (getMainScoreboard().getObjective(getObjectiveIdentifier(ObjectiveType.SIDEBAR)) != null)
{
getMainScoreboard().getObjective(getObjectiveIdentifier(ObjectiveType.SIDEBAR)).unregister();
} else
unregisterPlayerSideboard(getObjectiveIdentifier(ObjectiveType.POWER));
sidebarType = SidebarType.NONE; sidebarType = SidebarType.NONE;
targetPlayer = null; targetPlayer = null;
targetSkill = null; targetSkill = null;
@ -399,8 +408,18 @@ public class ScoreboardWrapper {
// Setup for after a board type change // Setup for after a board type change
protected void loadObjective(String displayName) { protected void loadObjective(String displayName) {
sidebarObjective.unregister(); //Unregister the old sidebarobjective if it exists
sidebarObjective = scoreboard.registerNewObjective(getObjective(ObjectiveType.SIDEBAR), "dummy"); try {
if (getMainScoreboard().getObjective(getObjectiveIdentifier(ObjectiveType.SIDEBAR)) != null)
getMainScoreboard().getObjective(getObjectiveIdentifier(ObjectiveType.SIDEBAR)).unregister();
} catch (IllegalStateException exception)
{
exception.printStackTrace();
}
//Unregister our player-named sideboard if it exists
unregisterPlayerSideboard(player.getName());
sidebarObjective = scoreboard.registerNewObjective(getObjectiveIdentifier(ObjectiveType.SIDEBAR), "dummy");
if (displayName.length() > 32) { if (displayName.length() > 32) {
displayName = displayName.substring(0, 32); displayName = displayName.substring(0, 32);
@ -413,6 +432,15 @@ public class ScoreboardWrapper {
sidebarObjective.setDisplaySlot(DisplaySlot.SIDEBAR); sidebarObjective.setDisplaySlot(DisplaySlot.SIDEBAR);
} }
private void unregisterPlayerSideboard(String s) {
if (getMainScoreboard().getObjective(s) != null)
getMainScoreboard().getObjective(s).unregister();
}
private static Scoreboard getMainScoreboard() {
return mcMMO.p.getServer().getScoreboardManager().getMainScoreboard();
}
/** /**
* Load new values into the sidebar. * Load new values into the sidebar.
*/ */

View File

@ -23,16 +23,21 @@ Skills:
LevelUps: true LevelUps: true
ToolReady: true ToolReady: true
SubSkillInteraction: true SubSkillInteraction: true
SubSkillFailure: true
SubSkillUnlocked: true SubSkillUnlocked: true
SuperAbilityInteraction: true SuperAbilityInteraction: true
SuperAbilityAlertOthers: true SuperAbilityAlertOthers: true
ExperienceGain: true ExperienceGain: true
General: General:
Ability: Ability:
EnchantBuff: 5
# IncreaseLevel: This setting will determine when the length of every ability gets longer with 1 second # IncreaseLevel: This setting will determine when the length of every ability gets longer with 1 second
# EnchantBuff: This setting determines how many enchant levels to use when buffing Super Breaker & Giga Drill Breaker # EnchantBuff: This setting determines how many enchant levels to use when buffing Super Breaker & Giga Drill Breaker
IncreaseLevel: 5 ClassicScaling:
EnchantBuff: 5 IncreaseLevel: 50
StandardScaling:
IncreaseLevel: 5
# #
# Settings for Acrobatics # Settings for Acrobatics
### ###
@ -675,6 +680,8 @@ Skills:
Style: Style:
JSON: JSON:
Notification: Notification:
SubSkillFailure:
Color: RED
AbilityOff: AbilityOff:
Color: GRAY Color: GRAY
LevelRequirementNotMet: LevelRequirementNotMet:

View File

@ -17,6 +17,7 @@ General:
# This is the value that is skill level requirements are multiplied by in Classic Mode (Default is 10) # This is the value that is skill level requirements are multiplied by in Classic Mode (Default is 10)
Classic_LevelReq_Factor: 10 Classic_LevelReq_Factor: 10
# This is the value that the xp required to level is multiplied by when in classic mode # This is the value that the xp required to level is multiplied by when in classic mode
# Default is 1
Classic_XP_Formula_Factor: 1 Classic_XP_Formula_Factor: 1
Locale: en_US Locale: en_US
MOTD_Enabled: true MOTD_Enabled: true