|
@@ -2,15 +2,15 @@ package com.gmail.nossr50.commands.skills;
|
|
|
|
|
|
import com.gmail.nossr50.config.AdvancedConfig;
|
|
|
import com.gmail.nossr50.config.Config;
|
|
|
-import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
|
|
+import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
|
+import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
|
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
|
|
import com.gmail.nossr50.locale.LocaleLoader;
|
|
|
-import com.gmail.nossr50.mcMMO;
|
|
|
import com.gmail.nossr50.skills.child.FamilyTree;
|
|
|
-import com.gmail.nossr50.util.Misc;
|
|
|
import com.gmail.nossr50.util.Permissions;
|
|
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
|
|
import com.gmail.nossr50.util.player.NotificationManager;
|
|
|
+import com.gmail.nossr50.util.player.UserManager;
|
|
|
import com.gmail.nossr50.util.random.RandomChanceUtil;
|
|
|
import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
|
|
|
import com.gmail.nossr50.util.skills.PerksUtils;
|
|
@@ -19,8 +19,6 @@ import com.gmail.nossr50.util.skills.SkillActivationType;
|
|
|
import com.gmail.nossr50.util.text.StringUtils;
|
|
|
import com.gmail.nossr50.util.text.TextComponentFactory;
|
|
|
import com.google.common.collect.ImmutableList;
|
|
|
-import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
|
|
-import com.neetgames.mcmmo.skill.RootSkill;
|
|
|
import net.kyori.adventure.text.Component;
|
|
|
import net.md_5.bungee.api.ChatColor;
|
|
|
import org.bukkit.command.Command;
|
|
@@ -37,8 +35,7 @@ import java.util.Locale;
|
|
|
import java.util.Set;
|
|
|
|
|
|
public abstract class SkillCommand implements TabExecutor {
|
|
|
- protected @NotNull RootSkill rootSkill;
|
|
|
- protected @NotNull RootSkill rootSkill;
|
|
|
+ protected PrimarySkillType skill;
|
|
|
private final String skillName;
|
|
|
|
|
|
protected DecimalFormat percent = new DecimalFormat("##0.00%");
|
|
@@ -46,11 +43,10 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
|
|
|
private final CommandExecutor skillGuideCommand;
|
|
|
|
|
|
- public SkillCommand(@NotNull RootSkill rootSkill) {
|
|
|
- this.rootSkill = PrimarySkillType.getSkill(primarySkillType);
|
|
|
- this.primarySkillType = primarySkillType;
|
|
|
- skillName = rootSkill.getName();
|
|
|
- skillGuideCommand = new SkillGuideCommand(rootSkill);
|
|
|
+ public SkillCommand(PrimarySkillType skill) {
|
|
|
+ this.skill = skill;
|
|
|
+ skillName = skill.getName();
|
|
|
+ skillGuideCommand = new SkillGuideCommand(skill);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -63,33 +59,33 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer((Player) sender);
|
|
|
-
|
|
|
- if(mmoPlayer == null) {
|
|
|
+ if(UserManager.getPlayer((Player) sender) == null)
|
|
|
+ {
|
|
|
sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
if (args.length == 0) {
|
|
|
- Player player = Misc.adaptPlayer(mmoPlayer);
|
|
|
+ Player player = (Player) sender;
|
|
|
+ McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
|
|
|
|
|
- boolean isLucky = Permissions.lucky(player, rootSkill);
|
|
|
+ boolean isLucky = Permissions.lucky(player, skill);
|
|
|
boolean hasEndurance = (PerksUtils.handleActivationPerks(player, 0, 0) != 0);
|
|
|
- float skillValue = mmoPlayer.getExperienceHandler().getSkillLevel(rootSkill);
|
|
|
+ float skillValue = mcMMOPlayer.getSkillLevel(skill);
|
|
|
|
|
|
- //Send the players a few blank lines to make finding the top of the rootSkillcommand easier
|
|
|
+ //Send the players a few blank lines to make finding the top of the skill command easier
|
|
|
if (AdvancedConfig.getInstance().doesSkillCommandSendBlankLines())
|
|
|
for (int i = 0; i < 2; i++) {
|
|
|
player.sendMessage("");
|
|
|
}
|
|
|
|
|
|
- permissionsCheck(mmoPlayer);
|
|
|
- dataCalculations(mmoPlayer, skillValue);
|
|
|
+ permissionsCheck(player);
|
|
|
+ dataCalculations(player, skillValue);
|
|
|
|
|
|
- sendSkillCommandHeader(mmoPlayer, (int) skillValue);
|
|
|
+ sendSkillCommandHeader(player, mcMMOPlayer, (int) skillValue);
|
|
|
|
|
|
//Make JSON text components
|
|
|
- List<Component> subskillTextComponents = getTextComponents(mmoPlayer);
|
|
|
+ List<Component> subskillTextComponents = getTextComponents(player);
|
|
|
|
|
|
//Subskills Header
|
|
|
player.sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", LocaleLoader.getString("Effects.SubSkills.Overhaul")));
|
|
@@ -104,7 +100,7 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
}*/
|
|
|
|
|
|
//Stats
|
|
|
- sendStatMessages(mmoPlayer, isLucky, hasEndurance, skillValue);
|
|
|
+ getStatMessages(player, isLucky, hasEndurance, skillValue);
|
|
|
|
|
|
//Header
|
|
|
|
|
@@ -112,12 +108,12 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
//Link Header
|
|
|
if (Config.getInstance().getUrlLinksEnabled()) {
|
|
|
player.sendMessage(LocaleLoader.getString("Overhaul.mcMMO.Header"));
|
|
|
- TextComponentFactory.sendPlayerUrlHeader(mmoPlayer);
|
|
|
+ TextComponentFactory.sendPlayerUrlHeader(player);
|
|
|
}
|
|
|
|
|
|
|
|
|
if (Config.getInstance().getScoreboardsEnabled() && Config.getInstance().getSkillUseBoard()) {
|
|
|
- ScoreboardManager.enablePlayerSkillScoreboard(player, primarySkillType);
|
|
|
+ ScoreboardManager.enablePlayerSkillScoreboard(player, skill);
|
|
|
}
|
|
|
|
|
|
return true;
|
|
@@ -125,39 +121,39 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
return skillGuideCommand.onCommand(sender, command, label, args);
|
|
|
}
|
|
|
|
|
|
- private void sendStatMessages(@NotNull OnlineMMOPlayer mmoPlayer, boolean isLucky, boolean hasEndurance, float skillValue) {
|
|
|
- List<String> statsMessages = statsDisplay(mmoPlayer, skillValue, hasEndurance, isLucky);
|
|
|
+ private void getStatMessages(Player player, boolean isLucky, boolean hasEndurance, float skillValue) {
|
|
|
+ List<String> statsMessages = statsDisplay(player, skillValue, hasEndurance, isLucky);
|
|
|
|
|
|
if (!statsMessages.isEmpty()) {
|
|
|
- Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", LocaleLoader.getString("Commands.Stats.Self.Overhaul")));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", LocaleLoader.getString("Commands.Stats.Self.Overhaul")));
|
|
|
|
|
|
for (String message : statsMessages) {
|
|
|
- Misc.adaptPlayer(mmoPlayer).sendMessage(message);
|
|
|
+ player.sendMessage(message);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Guides.Available", skillName, skillName.toLowerCase(Locale.ENGLISH)));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Guides.Available", skillName, skillName.toLowerCase(Locale.ENGLISH)));
|
|
|
}
|
|
|
|
|
|
- private void sendSkillCommandHeader(@NotNull OnlineMMOPlayer mmoPlayer, int skillValue) {
|
|
|
+ private void sendSkillCommandHeader(Player player, McMMOPlayer mcMMOPlayer, int skillValue) {
|
|
|
ChatColor hd1 = ChatColor.DARK_AQUA;
|
|
|
ChatColor c1 = ChatColor.GOLD;
|
|
|
ChatColor c2 = ChatColor.RED;
|
|
|
|
|
|
|
|
|
- Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", skillName));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", skillName));
|
|
|
|
|
|
- if(!PrimarySkillType.isChildSkill(rootSkill))
|
|
|
+ if(!skill.isChildSkill())
|
|
|
{
|
|
|
/*
|
|
|
* NON-CHILD SKILLS
|
|
|
*/
|
|
|
|
|
|
//XP GAIN METHOD
|
|
|
- Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain." + StringUtils.getCapitalized(rootSkill.toString()))));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain." + StringUtils.getCapitalized(skill.toString()))));
|
|
|
|
|
|
//LEVEL
|
|
|
- Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Effects.Level.Overhaul", skillValue, mmoPlayer.getExperienceHandler().getSkillXpValue(rootSkill), mmoPlayer.getExperienceHandler().getExperienceToNextLevel(rootSkill)));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Effects.Level.Overhaul", skillValue, mcMMOPlayer.getSkillXpLevel(skill), mcMMOPlayer.getXpToLevel(skill)));
|
|
|
|
|
|
} else {
|
|
|
/*
|
|
@@ -165,11 +161,11 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
*/
|
|
|
|
|
|
|
|
|
- Set<RootSkill> parents = FamilyTree.getParentSkills(rootSkill);
|
|
|
+ Set<PrimarySkillType> parents = FamilyTree.getParents(skill);
|
|
|
|
|
|
//TODO: Add JSON here
|
|
|
- /*player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level.Overhaul", mmoPlayer.getSkillLevel(parent), mmoPlayer.getSkillXpLevel(parent), mmoPlayer.getXpToLevel(parent)))*/
|
|
|
- ArrayList<RootSkill> parentList = new ArrayList<>(parents);
|
|
|
+ /*player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level.Overhaul", mcMMOPlayer.getSkillLevel(parent), mcMMOPlayer.getSkillXpLevel(parent), mcMMOPlayer.getXpToLevel(parent)))*/
|
|
|
+ ArrayList<PrimarySkillType> parentList = new ArrayList<>(parents);
|
|
|
|
|
|
StringBuilder parentMessage = new StringBuilder();
|
|
|
|
|
@@ -185,15 +181,35 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
}
|
|
|
|
|
|
//XP GAIN METHOD
|
|
|
- Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain.Child")));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain.Child")));
|
|
|
|
|
|
- Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, parentMessage.toString()));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, parentMessage.toString()));
|
|
|
+ //LEVEL
|
|
|
+ //player.sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, skillValue));
|
|
|
|
|
|
}
|
|
|
+ /*
|
|
|
+ if (!skill.isChildSkill()) {
|
|
|
+ player.sendMessage(LocaleLoader.getString("Skills.Header", skillName));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Commands.XPGain", LocaleLoader.getString("Commands.XPGain." + StringUtils.getCapitalized(skill.toString()))));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Effects.Level", skillValue, mcMMOPlayer.getSkillXpLevel(skill), mcMMOPlayer.getXpToLevel(skill)));
|
|
|
+ } else {
|
|
|
+ player.sendMessage(LocaleLoader.getString("Skills.Header", skillName + " " + LocaleLoader.getString("Skills.Child")));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Commands.XPGain", LocaleLoader.getString("Commands.XPGain.Child")));
|
|
|
+ player.sendMessage(LocaleLoader.getString("Effects.Child", skillValue));
|
|
|
+
|
|
|
+ player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Skills.Parents")));
|
|
|
+ Set<PrimarySkillType> parents = FamilyTree.getParents(skill);
|
|
|
+
|
|
|
+ for (PrimarySkillType parent : parents) {
|
|
|
+ player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level", mcMMOPlayer.getSkillLevel(parent), mcMMOPlayer.getSkillXpLevel(parent), mcMMOPlayer.getXpToLevel(parent)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ */
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public @NotNull List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
|
|
|
+ public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
|
|
|
if (args.length == 1) {
|
|
|
return ImmutableList.of("?");
|
|
|
}
|
|
@@ -204,12 +220,12 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
return Math.min((int) skillValue, maxLevel) / rankChangeLevel;
|
|
|
}
|
|
|
|
|
|
- protected @NotNull String[] getAbilityDisplayValues(@NotNull SkillActivationType skillActivationType, @NotNull OnlineMMOPlayer mmoPlayer, @NotNull SubSkillType subSkill) {
|
|
|
- return RandomChanceUtil.calculateAbilityDisplayValues(SkillActivationType, Misc.adaptPlayer(mmoPlayer), subSkill);
|
|
|
+ protected String[] getAbilityDisplayValues(SkillActivationType skillActivationType, Player player, SubSkillType subSkill) {
|
|
|
+ return RandomChanceUtil.calculateAbilityDisplayValues(skillActivationType, player, subSkill);
|
|
|
}
|
|
|
|
|
|
- protected @NotNull String[] calculateLengthDisplayValues(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
|
|
- int maxLength = PrimarySkillType.getSuperAbilityType().getMaxLength();
|
|
|
+ protected String[] calculateLengthDisplayValues(Player player, float skillValue) {
|
|
|
+ int maxLength = skill.getAbility().getMaxLength();
|
|
|
int abilityLengthVar = AdvancedConfig.getInstance().getAbilityLength();
|
|
|
int abilityLengthCap = AdvancedConfig.getInstance().getAbilityLengthCap();
|
|
|
|
|
@@ -217,13 +233,13 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
|
|
|
if(abilityLengthCap <= 0)
|
|
|
{
|
|
|
- length = 2 + (int) (rootSkillValue / abilityLengthVar);
|
|
|
+ length = 2 + (int) (skillValue / abilityLengthVar);
|
|
|
}
|
|
|
else {
|
|
|
length = 2 + (int) (Math.min(abilityLengthCap, skillValue) / abilityLengthVar);
|
|
|
}
|
|
|
|
|
|
- int enduranceLength = PerksUtils.handleActivationPerks(Misc.adaptPlayer(mmoPlayer), length, maxLength);
|
|
|
+ int enduranceLength = PerksUtils.handleActivationPerks(player, length, maxLength);
|
|
|
|
|
|
if (maxLength != 0) {
|
|
|
length = Math.min(length, maxLength);
|
|
@@ -232,12 +248,12 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
return new String[] { String.valueOf(length), String.valueOf(enduranceLength) };
|
|
|
}
|
|
|
|
|
|
- protected @NotNull String getStatMessage(SubSkillType subSkillType, String... vars)
|
|
|
+ protected String getStatMessage(SubSkillType subSkillType, String... vars)
|
|
|
{
|
|
|
return getStatMessage(false, false, subSkillType, vars);
|
|
|
}
|
|
|
|
|
|
- protected @NotNull String getStatMessage(boolean isExtra, boolean isCustom, SubSkillType subSkillType, String... vars)
|
|
|
+ protected String getStatMessage(boolean isExtra, boolean isCustom, SubSkillType subSkillType, String... vars)
|
|
|
{
|
|
|
String templateKey = isCustom ? "Ability.Generic.Template.Custom" : "Ability.Generic.Template";
|
|
|
String statDescriptionKey = !isExtra ? subSkillType.getLocaleKeyStatDescription() : subSkillType.getLocaleKeyStatExtraDescription();
|
|
@@ -251,7 +267,7 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- protected @NotNull String getLimitBreakDescriptionParameter() {
|
|
|
+ protected String getLimitBreakDescriptionParameter() {
|
|
|
if(AdvancedConfig.getInstance().canApplyLimitBreakPVE()) {
|
|
|
return "(PVP/PVE)";
|
|
|
} else {
|
|
@@ -259,23 +275,24 @@ public abstract class SkillCommand implements TabExecutor {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- protected abstract void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue);
|
|
|
+ protected abstract void dataCalculations(Player player, float skillValue);
|
|
|
|
|
|
- protected abstract void permissionsCheck(@NotNull OnlineMMOPlayer mmoPlayer);
|
|
|
+ protected abstract void permissionsCheck(Player player);
|
|
|
|
|
|
//protected abstract List<String> effectsDisplay();
|
|
|
|
|
|
- protected abstract @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky);
|
|
|
+ protected abstract List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky);
|
|
|
|
|
|
- protected abstract @NotNull List<Component> getTextComponents(@NotNull OnlineMMOPlayer player);
|
|
|
+ protected abstract List<Component> getTextComponents(Player player);
|
|
|
|
|
|
/**
|
|
|
* Checks if a player can use a skill
|
|
|
- * @param mmoPlayer target player
|
|
|
+ * @param player target player
|
|
|
* @param subSkillType target subskill
|
|
|
- * @return true if the player has permission and has the rootSkillunlocked
|
|
|
+ * @return true if the player has permission and has the skill unlocked
|
|
|
*/
|
|
|
- protected boolean canUseSubskill(@NotNull OnlineMMOPlayer mmoPlayer, SubSkillType subSkillType) {
|
|
|
- return Permissions.isSubSkillEnabled(Misc.adaptPlayer(mmoPlayer), subSkillType) && RankUtils.hasUnlockedSubskill(mmoPlayer, subSkillType);
|
|
|
+ protected boolean canUseSubskill(Player player, SubSkillType subSkillType)
|
|
|
+ {
|
|
|
+ return Permissions.isSubSkillEnabled(player, subSkillType) && RankUtils.hasUnlockedSubskill(player, subSkillType);
|
|
|
}
|
|
|
}
|