mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-01-20 17:29:35 +01:00
More API migration, feels like a mountain of work left lol
This commit is contained in:
parent
73bc12841a
commit
4199ea0095
File diff suppressed because it is too large
Load Diff
@ -127,11 +127,11 @@ public class ChatManager {
|
|||||||
public void setOrToggleChatChannel(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull ChatChannel targetChatChannel) {
|
public void setOrToggleChatChannel(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull ChatChannel targetChatChannel) {
|
||||||
if(targetChatChannel == mmoPlayer.getChatChannel()) {
|
if(targetChatChannel == mmoPlayer.getChatChannel()) {
|
||||||
//Disabled message
|
//Disabled message
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Chat.Channel.Off", StringUtils.getCapitalized(targetChatChannel.toString())));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Chat.Channel.Off", StringUtils.getCapitalized(targetChatChannel.toString())));
|
||||||
mmoPlayer.setChatMode(ChatChannel.NONE);
|
mmoPlayer.setChatMode(ChatChannel.NONE);
|
||||||
} else {
|
} else {
|
||||||
mmoPlayer.setChatMode(targetChatChannel);
|
mmoPlayer.setChatMode(targetChatChannel);
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Chat.Channel.On", StringUtils.getCapitalized(targetChatChannel.toString())));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Chat.Channel.On", StringUtils.getCapitalized(targetChatChannel.toString())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ public class ChatManager {
|
|||||||
public boolean isMessageAllowed(@NotNull OnlineMMOPlayer mmoPlayer) {
|
public boolean isMessageAllowed(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
switch (mmoPlayer.getChatChannel()) {
|
switch (mmoPlayer.getChatChannel()) {
|
||||||
case ADMIN:
|
case ADMIN:
|
||||||
if(mmoPlayer.getPlayer().isOp() || Permissions.adminChat(mmoPlayer.getPlayer())) {
|
if(Misc.adaptPlayer(mmoPlayer).isOp() || Permissions.adminChat(mmoPlayer.getPlayer())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -19,7 +19,7 @@ public class AbilityToggleCommand extends ToggleCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyCommandAction(@NotNull OnlineMMOPlayer mmoPlayer) {
|
protected void applyCommandAction(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.Ability." + (mmoPlayer.getSuperAbilityManager().getAbilityActivationPermission() ? "Off" : "On")));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.Ability." + (mmoPlayer.getSuperAbilityManager().getAbilityActivationPermission() ? "Off" : "On")));
|
||||||
mmoPlayer.getSuperAbilityManager().toggleAbilityActivationPermission();
|
mmoPlayer.getSuperAbilityManager().toggleAbilityActivationPermission();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ public class McgodCommand extends ToggleCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyCommandAction(@NotNull OnlineMMOPlayer mmoPlayer) {
|
protected void applyCommandAction(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.GodMode." + (mmoPlayer.getGodMode() ? "Disabled" : "Enabled")));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.GodMode." + (mmoPlayer.getGodMode() ? "Disabled" : "Enabled")));
|
||||||
mmoPlayer.toggleGodMode();
|
mmoPlayer.toggleGodMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ public class McrefreshCommand extends ToggleCommand {
|
|||||||
mmoPlayer.getSuperAbilityManager().unprimeAllAbilityTools();
|
mmoPlayer.getSuperAbilityManager().unprimeAllAbilityTools();
|
||||||
mmoPlayer.getSuperAbilityManager().disableSuperAbilities();
|
mmoPlayer.getSuperAbilityManager().disableSuperAbilities();
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -40,7 +40,7 @@ public abstract class ToggleCommand implements TabExecutor {
|
|||||||
if(mmoPlayer != null) {
|
if(mmoPlayer != null) {
|
||||||
applyCommandAction(mmoPlayer);
|
applyCommandAction(mmoPlayer);
|
||||||
} else {
|
} else {
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.NotLoaded"));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.NotLoaded"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -23,7 +23,7 @@ public class PlayerDebugCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mmoPlayer.toggleDebugMode(); //Toggle debug mode
|
mmoPlayer.toggleDebugMode(); //Toggle debug mode
|
||||||
NotificationManager.sendPlayerInformationChatOnlyPrefixed(mmoPlayer.getPlayer(), "Commands.Mmodebug.Toggle", String.valueOf(mmoPlayer.isDebugMode()));
|
NotificationManager.sendPlayerInformationChatOnlyPrefixed(Misc.adaptPlayer(mmoPlayer), "Commands.Mmodebug.Toggle", String.valueOf(mmoPlayer.isDebugMode()));
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
@ -20,7 +20,7 @@ public class McChatSpy extends ToggleCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyCommandAction(@NotNull OnlineMMOPlayer mmoPlayer) {
|
protected void applyCommandAction(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.AdminChatSpy." + (mmoPlayer.isPartyChatSpying() ? "Disabled" : "Enabled")));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.AdminChatSpy." + (mmoPlayer.isPartyChatSpying() ? "Disabled" : "Enabled")));
|
||||||
mmoPlayer.togglePartyChatSpying();
|
mmoPlayer.togglePartyChatSpying();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.commands.experience;
|
package com.gmail.nossr50.commands.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.gmail.nossr50.commands.experience;
|
package com.gmail.nossr50.commands.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
@ -109,7 +109,7 @@ public abstract class ExperienceCommand implements TabExecutor {
|
|||||||
editValues(null, profile, skill, value, isSilent(args));
|
editValues(null, profile, skill, value, isSilent(args));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
editValues(mmoPlayer.getPlayer(), mcMMOPlayer.getProfile(), skill, value, isSilent(args));
|
editValues(Misc.adaptPlayer(mmoPlayer), mcMMOPlayer.getProfile(), skill, value, isSilent(args));
|
||||||
}
|
}
|
||||||
|
|
||||||
handleSenderMessage(sender, playerName, skill);
|
handleSenderMessage(sender, playerName, skill);
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.commands.experience;
|
package com.gmail.nossr50.commands.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.commands.experience;
|
package com.gmail.nossr50.commands.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
@ -91,7 +90,7 @@ public class SkillresetCommand implements TabExecutor {
|
|||||||
editValues(null, profile, skill);
|
editValues(null, profile, skill);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
editValues(mmoPlayer.getPlayer(), mmoPlayer, skill);
|
editValues(Misc.adaptPlayer(mmoPlayer), mmoPlayer, skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
handleSenderMessage(sender, playerName, skill);
|
handleSenderMessage(sender, playerName, skill);
|
||||||
|
@ -33,7 +33,7 @@ public class PartyRenameCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
|
|
||||||
// Check to see if the party exists, and if it does cancel renaming the party
|
// Check to see if the party exists, and if it does cancel renaming the party
|
||||||
if (mcMMO.getPartyManager().isParty(newPartyName)) {
|
if (mcMMO.getPartyManager().isParty(newPartyName)) {
|
||||||
|
@ -5,6 +5,7 @@ import com.gmail.nossr50.config.WorldBlacklist;
|
|||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.datatypes.party.PartyFeature;
|
import com.gmail.nossr50.datatypes.party.PartyFeature;
|
||||||
import com.gmail.nossr50.datatypes.party.PartyTeleportRecord;
|
import com.gmail.nossr50.datatypes.party.PartyTeleportRecord;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
@ -196,7 +197,7 @@ public class PtpCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected static boolean canTeleport(CommandSender sender, Player player, String targetName) {
|
protected static boolean canTeleport(CommandSender sender, Player player, String targetName) {
|
||||||
OnlineMMOPlayer mcMMOTarget = mcMMO.getUserManager().getPlayer(targetName);
|
OnlineMMOPlayer mcMMOTarget = mcMMO.getUserManager().queryPlayer(targetName);
|
||||||
|
|
||||||
if (!CommandUtils.checkPlayerExistence(sender, targetName, mcMMOTarget)) {
|
if (!CommandUtils.checkPlayerExistence(sender, targetName, mcMMOTarget)) {
|
||||||
return false;
|
return false;
|
||||||
@ -228,28 +229,29 @@ public class PtpCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected static void handleTeleportWarmup(Player teleportingPlayer, Player targetPlayer) {
|
protected static void handleTeleportWarmup(Player teleportingPlayer, Player targetPlayer) {
|
||||||
if(mcMMO.getUserManager().queryPlayer(targetPlayer) == null)
|
if(mcMMO.getUserManager().queryPlayer(targetPlayer) == null) {
|
||||||
{
|
|
||||||
targetPlayer.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
|
targetPlayer.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mcMMO.getUserManager().queryPlayer(teleportingPlayer) == null)
|
if(mcMMO.getUserManager().queryPlayer(teleportingPlayer) == null) {
|
||||||
{
|
|
||||||
teleportingPlayer.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
|
teleportingPlayer.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(teleportingPlayer);
|
McMMOPlayer mmoPlayer = (McMMOPlayer) mcMMO.getUserManager().queryPlayer(teleportingPlayer);
|
||||||
OnlineMMOPlayer mcMMOTarget = mcMMO.getUserManager().queryPlayer(targetPlayer);
|
McMMOPlayer mmoTargetPlayer = (McMMOPlayer) mcMMO.getUserManager().queryPlayer(targetPlayer);
|
||||||
|
|
||||||
|
if(mmoPlayer == null || mmoTargetPlayer == null)
|
||||||
|
return;
|
||||||
|
|
||||||
long warmup = Config.getInstance().getPTPCommandWarmup();
|
long warmup = Config.getInstance().getPTPCommandWarmup();
|
||||||
|
|
||||||
mmoPlayer.actualizeTeleportCommenceLocation(teleportingPlayer);
|
mmoPlayer.actualizeTeleportCommenceLocation();
|
||||||
|
|
||||||
if (warmup > 0) {
|
if (warmup > 0) {
|
||||||
teleportingPlayer.sendMessage(LocaleLoader.getString("Teleport.Commencing", warmup));
|
teleportingPlayer.sendMessage(LocaleLoader.getString("Teleport.Commencing", warmup));
|
||||||
new TeleportationWarmup(mmoPlayer, mcMMOTarget).runTaskLater(mcMMO.p, 20 * warmup);
|
new TeleportationWarmup(mmoPlayer, mmoTargetPlayer).runTaskLater(mcMMO.p, 20 * warmup);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
EventUtils.handlePartyTeleportEvent(teleportingPlayer, targetPlayer);
|
EventUtils.handlePartyTeleportEvent(teleportingPlayer, targetPlayer);
|
||||||
|
@ -88,7 +88,7 @@ public class InspectCommand implements TabExecutor {
|
|||||||
CommandUtils.printGatheringSkills(targetPlayer, sender);
|
CommandUtils.printGatheringSkills(targetPlayer, sender);
|
||||||
CommandUtils.printCombatSkills(targetPlayer, sender);
|
CommandUtils.printCombatSkills(targetPlayer, sender);
|
||||||
CommandUtils.printMiscSkills(targetPlayer, sender);
|
CommandUtils.printMiscSkills(targetPlayer, sender);
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.PowerLevel", playerProfile.getExperienceManager().getPowerLevel()));
|
sender.sendMessage(LocaleLoader.getString("Commands.PowerLevel", playerProfile.getExperienceHandler().getPowerLevel()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -55,7 +55,7 @@ public class McrankCommand implements TabExecutor {
|
|||||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayerName(playerName);
|
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayerName(playerName);
|
||||||
|
|
||||||
if (mmoPlayer != null) {
|
if (mmoPlayer != null) {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
playerName = player.getName();
|
playerName = player.getName();
|
||||||
|
|
||||||
if (CommandUtils.tooFar(sender, player, Permissions.mcrankFar(sender))) {
|
if (CommandUtils.tooFar(sender, player, Permissions.mcrankFar(sender))) {
|
||||||
|
@ -25,7 +25,7 @@ public class XPBarCommand implements TabExecutor {
|
|||||||
if(sender instanceof Player) {
|
if(sender instanceof Player) {
|
||||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer((Player) sender);
|
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer((Player) sender);
|
||||||
if(mmoPlayer == null) {
|
if(mmoPlayer == null) {
|
||||||
NotificationManager.sendPlayerInformationChatOnlyPrefixed(mmoPlayer.getPlayer(), "Profile.PendingLoad");
|
NotificationManager.sendPlayerInformationChatOnlyPrefixed(Misc.adaptPlayer(mmoPlayer), "Profile.PendingLoad");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,10 +34,10 @@ public class XPBarCommand implements TabExecutor {
|
|||||||
} else if(args.length < 2) {
|
} else if(args.length < 2) {
|
||||||
String option = args[0];
|
String option = args[0];
|
||||||
|
|
||||||
if(option.equalsIgnoreCase(MMOExperienceBarManager.XPBarSettingTarget.RESET.toString())) {
|
if(option.equalsIgnoreCase(SkillBossBarSetting.RESET.toString())) {
|
||||||
mmoPlayer.getExperienceBarManager().xpBarSettingToggle(MMOExperienceBarManager.XPBarSettingTarget.RESET, null);
|
mmoPlayer.getExperienceBarManager().xpBarSettingToggle(SkillBossBarSetting.RESET, null);
|
||||||
return true;
|
return true;
|
||||||
} else if(option.equalsIgnoreCase(MMOExperienceBarManager.XPBarSettingTarget.DISABLE.toString())) {
|
} else if(option.equalsIgnoreCase(SkillBossBarSetting.DISABLE.toString())) {
|
||||||
mmoPlayer.getExperienceBarManager().disableAllBars();
|
mmoPlayer.getExperienceBarManager().disableAllBars();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@ -55,8 +55,8 @@ public class XPBarCommand implements TabExecutor {
|
|||||||
//Target setting
|
//Target setting
|
||||||
String option = args[0].toLowerCase();
|
String option = args[0].toLowerCase();
|
||||||
|
|
||||||
MMOExperienceBarManager.XPBarSettingTarget settingTarget = getSettingTarget(option);
|
SkillBossBarSetting settingTarget = getSettingTarget(option);
|
||||||
if(settingTarget != null && settingTarget != MMOExperienceBarManager.XPBarSettingTarget.RESET) {
|
if(settingTarget != null && settingTarget != SkillBossBarSetting.RESET) {
|
||||||
//Change setting
|
//Change setting
|
||||||
mmoPlayer.getExperienceBarManager().xpBarSettingToggle(settingTarget, targetSkill);
|
mmoPlayer.getExperienceBarManager().xpBarSettingToggle(settingTarget, targetSkill);
|
||||||
return true;
|
return true;
|
||||||
@ -74,16 +74,16 @@ public class XPBarCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private @Nullable MMOExperienceBarManager.XPBarSettingTarget getSettingTarget(String string) {
|
private @Nullable SkillBossBarSetting getSettingTarget(String string) {
|
||||||
switch (string.toLowerCase()) {
|
switch (string.toLowerCase()) {
|
||||||
case "hide":
|
case "hide":
|
||||||
return MMOExperienceBarManager.XPBarSettingTarget.HIDE;
|
return SkillBossBarSetting.HIDE;
|
||||||
case "show":
|
case "show":
|
||||||
return MMOExperienceBarManager.XPBarSettingTarget.SHOW;
|
return SkillBossBarSetting.SHOW;
|
||||||
case "reset":
|
case "reset":
|
||||||
return MMOExperienceBarManager.XPBarSettingTarget.RESET;
|
return SkillBossBarSetting.RESET;
|
||||||
case "disable":
|
case "disable":
|
||||||
return MMOExperienceBarManager.XPBarSettingTarget.DISABLE;
|
return SkillBossBarSetting.DISABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -95,13 +95,13 @@ public class XPBarCommand implements TabExecutor {
|
|||||||
case 1:
|
case 1:
|
||||||
List<String> options = new ArrayList<>();
|
List<String> options = new ArrayList<>();
|
||||||
|
|
||||||
for(MMOExperienceBarManager.XPBarSettingTarget settingTarget : MMOExperienceBarManager.XPBarSettingTarget.values()) {
|
for(SkillBossBarSetting settingTarget : SkillBossBarSetting.values()) {
|
||||||
options.add(StringUtils.getCapitalized(settingTarget.toString()));
|
options.add(StringUtils.getCapitalized(settingTarget.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return StringUtil.copyPartialMatches(args[0], options, new ArrayList<>(MMOExperienceBarManager.XPBarSettingTarget.values().length));
|
return StringUtil.copyPartialMatches(args[0], options, new ArrayList<>(SkillBossBarSetting.values().length));
|
||||||
case 2:
|
case 2:
|
||||||
if(!args[0].equalsIgnoreCase(MMOExperienceBarManager.XPBarSettingTarget.RESET.toString()))
|
if(!args[0].equalsIgnoreCase(SkillBossBarSetting.RESET.toString()))
|
||||||
return StringUtil.copyPartialMatches(args[1], PrimarySkillType.SKILL_NAMES, new ArrayList<>(PrimarySkillType.SKILL_NAMES.size()));
|
return StringUtil.copyPartialMatches(args[1], PrimarySkillType.SKILL_NAMES, new ArrayList<>(PrimarySkillType.SKILL_NAMES.size()));
|
||||||
default:
|
default:
|
||||||
return ImmutableList.of();
|
return ImmutableList.of();
|
||||||
|
@ -61,10 +61,10 @@ public class AcrobaticsCommand extends SkillCommand {
|
|||||||
double rollChance, graceChance;
|
double rollChance, graceChance;
|
||||||
|
|
||||||
//Chance to roll at half
|
//Chance to roll at half
|
||||||
RandomChanceSkill roll_rcs = new RandomChanceSkill(mmoPlayer.getPlayer(), SubSkillType.ACROBATICS_ROLL);
|
RandomChanceSkill roll_rcs = new RandomChanceSkill(Misc.adaptPlayer(mmoPlayer), SubSkillType.ACROBATICS_ROLL);
|
||||||
|
|
||||||
//Chance to graceful roll
|
//Chance to graceful roll
|
||||||
RandomChanceSkill grace_rcs = new RandomChanceSkill(mmoPlayer.getPlayer(), SubSkillType.ACROBATICS_ROLL);
|
RandomChanceSkill grace_rcs = new RandomChanceSkill(Misc.adaptPlayer(mmoPlayer), SubSkillType.ACROBATICS_ROLL);
|
||||||
grace_rcs.setSkillLevel(grace_rcs.getSkillLevel() * 2); //Double Odds
|
grace_rcs.setSkillLevel(grace_rcs.getSkillLevel() * 2); //Double Odds
|
||||||
|
|
||||||
//Chance Stat Calculations
|
//Chance Stat Calculations
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.gmail.nossr50.commands.skills;
|
package com.gmail.nossr50.commands.skills;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
@ -44,10 +46,10 @@ public class AlchemyCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected String[] calculateAbilityDisplayValues(@NotNull OnlineMMOPlayer mmoPlayer) {
|
protected String[] calculateAbilityDisplayValues(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
AlchemyManager alchemyManager = mmoPlayer.getAlchemyManager();
|
AlchemyManager alchemyManager = ((McMMOPlayer) (mmoPlayer)).getAlchemyManager();
|
||||||
String[] displayValues = new String[2];
|
String[] displayValues = new String[2];
|
||||||
|
|
||||||
boolean isLucky = Permissions.lucky(mmoPlayer.getPlayer(), PrimarySkillType.ALCHEMY);
|
boolean isLucky = Permissions.lucky(Misc.adaptPlayer(mmoPlayer), PrimarySkillType.ALCHEMY);
|
||||||
|
|
||||||
displayValues[0] = decimal.format(alchemyManager.calculateBrewSpeed(false)) + "x";
|
displayValues[0] = decimal.format(alchemyManager.calculateBrewSpeed(false)) + "x";
|
||||||
displayValues[1] = isLucky ? decimal.format(alchemyManager.calculateBrewSpeed(true)) + "x" : null;
|
displayValues[1] = isLucky ? decimal.format(alchemyManager.calculateBrewSpeed(true)) + "x" : null;
|
||||||
|
@ -38,7 +38,7 @@ public class AxesCommand extends SkillCommand {
|
|||||||
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
||||||
// ARMOR IMPACT
|
// ARMOR IMPACT
|
||||||
if (canImpact) {
|
if (canImpact) {
|
||||||
impactDamage = mmoPlayer.getAxesManager().getImpactDurabilityDamage();
|
impactDamage = ((McMMOPlayer) (mmoPlayer)).getArcheryManager().getImpactDurabilityDamage();
|
||||||
}
|
}
|
||||||
|
|
||||||
// AXE MASTERY
|
// AXE MASTERY
|
||||||
|
@ -30,7 +30,7 @@ public class CrossbowsCommand extends SkillCommand {
|
|||||||
protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
|
protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
|
||||||
List<String> messages = new ArrayList<>();
|
List<String> messages = new ArrayList<>();
|
||||||
|
|
||||||
CrossbowManager crossbowManager = mmoPlayer.getCrossbowManager();
|
CrossbowManager crossbowManager = ((McMMOPlayer) (mmoPlayer)).getCrossbowManager();
|
||||||
|
|
||||||
if(canUseSubskill(mmoPlayer, SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
if(canUseSubskill(mmoPlayer, SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||||
String additionalArrowCount = String.valueOf(crossbowManager.getSuperShotgunAdditionalArrowCount());
|
String additionalArrowCount = String.valueOf(crossbowManager.getSuperShotgunAdditionalArrowCount());
|
||||||
@ -41,7 +41,7 @@ public class CrossbowsCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<Component> getTextComponents(@NotNull OnlineMMOPlayer mmoPlayer) {
|
protected @NotNull List<Component> getTextComponents(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
List<Component> textComponents = new ArrayList<>();
|
List<Component> textComponents = new ArrayList<>();
|
||||||
|
|
||||||
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.CROSSBOWS);
|
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.CROSSBOWS);
|
||||||
|
@ -45,7 +45,7 @@ public class ExcavationCommand extends SkillCommand {
|
|||||||
protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
|
protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
|
||||||
List<String> messages = new ArrayList<>();
|
List<String> messages = new ArrayList<>();
|
||||||
|
|
||||||
ExcavationManager excavationManager = mmoPlayer.getExcavationManager();
|
ExcavationManager excavationManager = ((McMMOPlayer) (mmoPlayer)).getExcavationManager();
|
||||||
|
|
||||||
if (canGigaDrill) {
|
if (canGigaDrill) {
|
||||||
messages.add(getStatMessage(SubSkillType.EXCAVATION_GIGA_DRILL_BREAKER, gigaDrillBreakerLength)
|
messages.add(getStatMessage(SubSkillType.EXCAVATION_GIGA_DRILL_BREAKER, gigaDrillBreakerLength)
|
||||||
|
@ -48,7 +48,7 @@ public class FishingCommand extends SkillCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
||||||
FishingManager fishingManager = mmoPlayer.getFishingManager();
|
FishingManager fishingManager = ((McMMOPlayer) (mmoPlayer)).getFishingManager();
|
||||||
|
|
||||||
// TREASURE HUNTER
|
// TREASURE HUNTER
|
||||||
if (canTreasureHunt) {
|
if (canTreasureHunt) {
|
||||||
|
@ -92,19 +92,19 @@ public class HerbalismCommand extends SkillCommand {
|
|||||||
hasHylianLuck = canUseSubskill(mmoPlayer, SubSkillType.HERBALISM_HYLIAN_LUCK);
|
hasHylianLuck = canUseSubskill(mmoPlayer, SubSkillType.HERBALISM_HYLIAN_LUCK);
|
||||||
canGreenTerra = Permissions.greenTerra(mmoPlayer.getPlayer());
|
canGreenTerra = Permissions.greenTerra(mmoPlayer.getPlayer());
|
||||||
canGreenThumbPlants = RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.HERBALISM_GREEN_THUMB)
|
canGreenThumbPlants = RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.HERBALISM_GREEN_THUMB)
|
||||||
&& (Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.WHEAT)
|
&& (Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.WHEAT)
|
||||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.CARROT)
|
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.CARROT)
|
||||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.POTATO)
|
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.POTATO)
|
||||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.BEETROOT)
|
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.BEETROOT)
|
||||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.NETHER_WART)
|
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.NETHER_WART)
|
||||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.COCOA));
|
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.COCOA));
|
||||||
canGreenThumbBlocks = RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.HERBALISM_GREEN_THUMB)
|
canGreenThumbBlocks = RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.HERBALISM_GREEN_THUMB)
|
||||||
&& (Permissions.greenThumbBlock(mmoPlayer.getPlayer(), Material.DIRT)
|
&& (Permissions.greenThumbBlock(Misc.adaptPlayer(mmoPlayer), Material.DIRT)
|
||||||
|| Permissions.greenThumbBlock(mmoPlayer.getPlayer(), Material.COBBLESTONE)
|
|| Permissions.greenThumbBlock(Misc.adaptPlayer(mmoPlayer), Material.COBBLESTONE)
|
||||||
|| Permissions.greenThumbBlock(mmoPlayer.getPlayer(), Material.COBBLESTONE_WALL)
|
|| Permissions.greenThumbBlock(Misc.adaptPlayer(mmoPlayer), Material.COBBLESTONE_WALL)
|
||||||
|| Permissions.greenThumbBlock(mmoPlayer.getPlayer(), Material.STONE_BRICKS));
|
|| Permissions.greenThumbBlock(Misc.adaptPlayer(mmoPlayer), Material.STONE_BRICKS));
|
||||||
canFarmersDiet = canUseSubskill(mmoPlayer, SubSkillType.HERBALISM_FARMERS_DIET);
|
canFarmersDiet = canUseSubskill(mmoPlayer, SubSkillType.HERBALISM_FARMERS_DIET);
|
||||||
canDoubleDrop = canUseSubskill(mmoPlayer, SubSkillType.HERBALISM_DOUBLE_DROPS) && !skill.getDoubleDropsDisabled();
|
canDoubleDrop = canUseSubskill(mmoPlayer, SubSkillType.HERBALISM_DOUBLE_DROPS) && !rootSkill.getDoubleDropsDisabled();
|
||||||
canShroomThumb = canUseSubskill(mmoPlayer, SubSkillType.HERBALISM_SHROOM_THUMB);
|
canShroomThumb = canUseSubskill(mmoPlayer, SubSkillType.HERBALISM_SHROOM_THUMB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ public class MiningCommand extends SkillCommand {
|
|||||||
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
||||||
// BLAST MINING
|
// BLAST MINING
|
||||||
if (canBlast || canDemoExpert || canBiggerBombs) {
|
if (canBlast || canDemoExpert || canBiggerBombs) {
|
||||||
MiningManager miningManager = mmoPlayer.getMiningManager();
|
MiningManager miningManager = ((McMMOPlayer) (mmoPlayer)).getMiningManager();
|
||||||
|
|
||||||
blastMiningRank = miningManager.getBlastMiningTier();
|
blastMiningRank = miningManager.getBlastMiningTier();
|
||||||
bonusTNTDrops = miningManager.getDropMultiplier();
|
bonusTNTDrops = miningManager.getDropMultiplier();
|
||||||
|
@ -91,10 +91,10 @@ public class MmoInfoCommand implements TabExecutor {
|
|||||||
/*
|
/*
|
||||||
* Skill is only in the old system
|
* Skill is only in the old system
|
||||||
*/
|
*/
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.MmoInfo.Header"));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.MmoInfo.Header"));
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.MmoInfo.SubSkillHeader", subSkillName));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.MmoInfo.SubSkillHeader", subSkillName));
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.MmoInfo.DetailsHeader"));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.MmoInfo.DetailsHeader"));
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.MmoInfo.OldSkill"));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.MmoInfo.OldSkill"));
|
||||||
}
|
}
|
||||||
|
|
||||||
for(SubSkillType subSkillType : SubSkillType.values())
|
for(SubSkillType subSkillType : SubSkillType.values())
|
||||||
|
@ -79,13 +79,13 @@ public class RepairCommand extends SkillCommand {
|
|||||||
canSuperRepair = canUseSubskill(mmoPlayer, SubSkillType.REPAIR_SUPER_REPAIR);
|
canSuperRepair = canUseSubskill(mmoPlayer, SubSkillType.REPAIR_SUPER_REPAIR);
|
||||||
canMasterRepair = canUseSubskill(mmoPlayer, SubSkillType.REPAIR_REPAIR_MASTERY);
|
canMasterRepair = canUseSubskill(mmoPlayer, SubSkillType.REPAIR_REPAIR_MASTERY);
|
||||||
canArcaneForge = canUseSubskill(mmoPlayer, SubSkillType.REPAIR_ARCANE_FORGING);
|
canArcaneForge = canUseSubskill(mmoPlayer, SubSkillType.REPAIR_ARCANE_FORGING);
|
||||||
canRepairDiamond = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.DIAMOND);
|
canRepairDiamond = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.DIAMOND);
|
||||||
canRepairGold = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.GOLD);
|
canRepairGold = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.GOLD);
|
||||||
canRepairIron = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.IRON);
|
canRepairIron = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.IRON);
|
||||||
canRepairStone = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.STONE);
|
canRepairStone = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.STONE);
|
||||||
canRepairString = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.STRING);
|
canRepairString = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.STRING);
|
||||||
canRepairLeather = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.LEATHER);
|
canRepairLeather = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.LEATHER);
|
||||||
canRepairWood = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.WOOD);
|
canRepairWood = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.WOOD);
|
||||||
arcaneBypass = (Permissions.arcaneBypass(mmoPlayer.getPlayer()) || Permissions.hasRepairEnchantBypassPerk(mmoPlayer.getPlayer()));
|
arcaneBypass = (Permissions.arcaneBypass(mmoPlayer.getPlayer()) || Permissions.hasRepairEnchantBypassPerk(mmoPlayer.getPlayer()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ public class RepairCommand extends SkillCommand {
|
|||||||
List<String> messages = new ArrayList<>();
|
List<String> messages = new ArrayList<>();
|
||||||
|
|
||||||
if (canArcaneForge) {
|
if (canArcaneForge) {
|
||||||
RepairManager repairManager = mmoPlayer.getRepairManager();
|
RepairManager repairManager = ((McMMOPlayer) (mmoPlayer)).getRepairManager();
|
||||||
|
|
||||||
messages.add(getStatMessage(false, true,
|
messages.add(getStatMessage(false, true,
|
||||||
SubSkillType.REPAIR_ARCANE_FORGING,
|
SubSkillType.REPAIR_ARCANE_FORGING,
|
||||||
|
@ -37,7 +37,7 @@ public class SalvageCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
|
protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
|
||||||
List<String> messages = new ArrayList<>();
|
List<String> messages = new ArrayList<>();
|
||||||
SalvageManager salvageManager = mmoPlayer.getSalvageManager();
|
SalvageManager salvageManager = ((McMMOPlayer) (mmoPlayer)).getSalvageManager();
|
||||||
|
|
||||||
if (canScrapCollector) {
|
if (canScrapCollector) {
|
||||||
messages.add(getStatMessage(false, true,
|
messages.add(getStatMessage(false, true,
|
||||||
|
@ -2,6 +2,8 @@ package com.gmail.nossr50.commands.skills;
|
|||||||
|
|
||||||
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.datatypes.skills.CoreSkills;
|
||||||
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
@ -19,6 +21,7 @@ import com.gmail.nossr50.util.skills.SkillActivationType;
|
|||||||
import com.gmail.nossr50.util.text.StringUtils;
|
import com.gmail.nossr50.util.text.StringUtils;
|
||||||
import com.gmail.nossr50.util.text.TextComponentFactory;
|
import com.gmail.nossr50.util.text.TextComponentFactory;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -35,7 +38,8 @@ import java.util.Locale;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public abstract class SkillCommand implements TabExecutor {
|
public abstract class SkillCommand implements TabExecutor {
|
||||||
protected PrimarySkillType skill;
|
protected @NotNull RootSkill rootSkill;
|
||||||
|
protected @NotNull PrimarySkillType primarySkillType;
|
||||||
private final String skillName;
|
private final String skillName;
|
||||||
|
|
||||||
protected DecimalFormat percent = new DecimalFormat("##0.00%");
|
protected DecimalFormat percent = new DecimalFormat("##0.00%");
|
||||||
@ -43,10 +47,11 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
|
|
||||||
private final CommandExecutor skillGuideCommand;
|
private final CommandExecutor skillGuideCommand;
|
||||||
|
|
||||||
public SkillCommand(PrimarySkillType skill) {
|
public SkillCommand(@NotNull PrimarySkillType primarySkillType) {
|
||||||
this.skill = skill;
|
this.rootSkill = CoreSkills.getSkill(primarySkillType);
|
||||||
skillName = skill.getName();
|
this.primarySkillType = primarySkillType;
|
||||||
skillGuideCommand = new SkillGuideCommand(skill);
|
skillName = rootSkill.getSkillName();
|
||||||
|
skillGuideCommand = new SkillGuideCommand(rootSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -67,11 +72,11 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
|
|
||||||
boolean isLucky = Permissions.lucky(player, skill);
|
boolean isLucky = Permissions.lucky(player, rootSkill);
|
||||||
boolean hasEndurance = (PerksUtils.handleActivationPerks(player, 0, 0) != 0);
|
boolean hasEndurance = (PerksUtils.handleActivationPerks(player, 0, 0) != 0);
|
||||||
float skillValue = mmoPlayer.getExperienceManager().getSkillLevel(skill);
|
float skillValue = mmoPlayer.getExperienceHandler().getSkillLevel(rootSkill);
|
||||||
|
|
||||||
//Send the players a few blank lines to make finding the top of the skill command easier
|
//Send the players a few blank lines to make finding the top of the skill command easier
|
||||||
if (AdvancedConfig.getInstance().doesSkillCommandSendBlankLines())
|
if (AdvancedConfig.getInstance().doesSkillCommandSendBlankLines())
|
||||||
@ -113,7 +118,7 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
|
|
||||||
|
|
||||||
if (Config.getInstance().getScoreboardsEnabled() && Config.getInstance().getSkillUseBoard()) {
|
if (Config.getInstance().getScoreboardsEnabled() && Config.getInstance().getSkillUseBoard()) {
|
||||||
ScoreboardManager.enablePlayerSkillScoreboard(player, skill);
|
ScoreboardManager.enablePlayerSkillScoreboard(player, primarySkillType);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -125,14 +130,14 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
List<String> statsMessages = statsDisplay(mmoPlayer, skillValue, hasEndurance, isLucky);
|
List<String> statsMessages = statsDisplay(mmoPlayer, skillValue, hasEndurance, isLucky);
|
||||||
|
|
||||||
if (!statsMessages.isEmpty()) {
|
if (!statsMessages.isEmpty()) {
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", LocaleLoader.getString("Commands.Stats.Self.Overhaul")));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", LocaleLoader.getString("Commands.Stats.Self.Overhaul")));
|
||||||
|
|
||||||
for (String message : statsMessages) {
|
for (String message : statsMessages) {
|
||||||
mmoPlayer.getPlayer().sendMessage(message);
|
Misc.adaptPlayer(mmoPlayer).sendMessage(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Guides.Available", skillName, skillName.toLowerCase(Locale.ENGLISH)));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Guides.Available", skillName, skillName.toLowerCase(Locale.ENGLISH)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendSkillCommandHeader(@NotNull OnlineMMOPlayer mmoPlayer, int skillValue) {
|
private void sendSkillCommandHeader(@NotNull OnlineMMOPlayer mmoPlayer, int skillValue) {
|
||||||
@ -141,19 +146,19 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
ChatColor c2 = ChatColor.RED;
|
ChatColor c2 = ChatColor.RED;
|
||||||
|
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", skillName));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Skills.Overhaul.Header", skillName));
|
||||||
|
|
||||||
if(!skill.isChildSkill())
|
if(!CoreSkills.isChildSkill(rootSkill))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* NON-CHILD SKILLS
|
* NON-CHILD SKILLS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//XP GAIN METHOD
|
//XP GAIN METHOD
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain." + StringUtils.getCapitalized(skill.toString()))));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain." + StringUtils.getCapitalized(rootSkill.toString()))));
|
||||||
|
|
||||||
//LEVEL
|
//LEVEL
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Effects.Level.Overhaul", skillValue, mmoPlayer.getExperienceManager().getSkillXpValue(skill), mmoPlayer.getExperienceManager().getExperienceToNextLevel(skill)));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Effects.Level.Overhaul", skillValue, mmoPlayer.getExperienceHandler().getSkillXpValue(rootSkill), mmoPlayer.getExperienceHandler().getExperienceToNextLevel(rootSkill)));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
@ -161,11 +166,11 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
Set<PrimarySkillType> parents = FamilyTree.getParents(skill);
|
Set<RootSkill> parents = FamilyTree.getParentSkills(rootSkill);
|
||||||
|
|
||||||
//TODO: Add JSON here
|
//TODO: Add JSON here
|
||||||
/*player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level.Overhaul", mmoPlayer.getSkillLevel(parent), mmoPlayer.getSkillXpLevel(parent), mmoPlayer.getXpToLevel(parent)))*/
|
/*player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level.Overhaul", mmoPlayer.getSkillLevel(parent), mmoPlayer.getSkillXpLevel(parent), mmoPlayer.getXpToLevel(parent)))*/
|
||||||
ArrayList<PrimarySkillType> parentList = new ArrayList<>(parents);
|
ArrayList<RootSkill> parentList = new ArrayList<>(parents);
|
||||||
|
|
||||||
StringBuilder parentMessage = new StringBuilder();
|
StringBuilder parentMessage = new StringBuilder();
|
||||||
|
|
||||||
@ -173,17 +178,17 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
{
|
{
|
||||||
if(i+1 < parentList.size())
|
if(i+1 < parentList.size())
|
||||||
{
|
{
|
||||||
parentMessage.append(LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getName(), mmoPlayer.getExperienceManager().getSkillLevel(parentList.get(i))));
|
parentMessage.append(LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getSkillName(), mmoPlayer.getExperienceHandler().getSkillLevel(parentList.get(i))));
|
||||||
parentMessage.append(ChatColor.GRAY).append(", ");
|
parentMessage.append(ChatColor.GRAY).append(", ");
|
||||||
} else {
|
} else {
|
||||||
parentMessage.append(LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getName(), mmoPlayer.getExperienceManager().getSkillLevel(parentList.get(i))));
|
parentMessage.append(LocaleLoader.getString("Effects.Child.ParentList", parentList.get(i).getSkillName(), mmoPlayer.getExperienceHandler().getSkillLevel(parentList.get(i))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//XP GAIN METHOD
|
//XP GAIN METHOD
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain.Child")));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.XPGain.Overhaul", LocaleLoader.getString("Commands.XPGain.Child")));
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, parentMessage.toString()));
|
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Effects.Child.Overhaul", skillValue, parentMessage.toString()));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -201,11 +206,11 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected @NotNull String[] getAbilityDisplayValues(@NotNull SkillActivationType skillActivationType, @NotNull OnlineMMOPlayer mmoPlayer, @NotNull SubSkillType subSkill) {
|
protected @NotNull String[] getAbilityDisplayValues(@NotNull SkillActivationType skillActivationType, @NotNull OnlineMMOPlayer mmoPlayer, @NotNull SubSkillType subSkill) {
|
||||||
return RandomChanceUtil.calculateAbilityDisplayValues(skillActivationType, mmoPlayer.getPlayer(), subSkill);
|
return RandomChanceUtil.calculateAbilityDisplayValues(skillActivationType, Misc.adaptPlayer(mmoPlayer), subSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected @NotNull String[] calculateLengthDisplayValues(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
protected @NotNull String[] calculateLengthDisplayValues(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
||||||
int maxLength = skill.getSuperAbilityType().getMaxLength();
|
int maxLength = primarySkillType.getSuperAbilityType().getMaxLength();
|
||||||
int abilityLengthVar = AdvancedConfig.getInstance().getAbilityLength();
|
int abilityLengthVar = AdvancedConfig.getInstance().getAbilityLength();
|
||||||
int abilityLengthCap = AdvancedConfig.getInstance().getAbilityLengthCap();
|
int abilityLengthCap = AdvancedConfig.getInstance().getAbilityLengthCap();
|
||||||
|
|
||||||
@ -219,7 +224,7 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
length = 2 + (int) (Math.min(abilityLengthCap, skillValue) / abilityLengthVar);
|
length = 2 + (int) (Math.min(abilityLengthCap, skillValue) / abilityLengthVar);
|
||||||
}
|
}
|
||||||
|
|
||||||
int enduranceLength = PerksUtils.handleActivationPerks(mmoPlayer.getPlayer(), length, maxLength);
|
int enduranceLength = PerksUtils.handleActivationPerks(Misc.adaptPlayer(mmoPlayer), length, maxLength);
|
||||||
|
|
||||||
if (maxLength != 0) {
|
if (maxLength != 0) {
|
||||||
length = Math.min(length, maxLength);
|
length = Math.min(length, maxLength);
|
||||||
@ -272,6 +277,6 @@ public abstract class SkillCommand implements TabExecutor {
|
|||||||
* @return true if the player has permission and has the skill unlocked
|
* @return true if the player has permission and has the skill unlocked
|
||||||
*/
|
*/
|
||||||
protected boolean canUseSubskill(@NotNull OnlineMMOPlayer mmoPlayer, SubSkillType subSkillType) {
|
protected boolean canUseSubskill(@NotNull OnlineMMOPlayer mmoPlayer, SubSkillType subSkillType) {
|
||||||
return Permissions.isSubSkillEnabled(mmoPlayer.getPlayer(), subSkillType) && RankUtils.hasUnlockedSubskill(mmoPlayer, subSkillType);
|
return Permissions.isSubSkillEnabled(Misc.adaptPlayer(mmoPlayer), subSkillType) && RankUtils.hasUnlockedSubskill(mmoPlayer, subSkillType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package com.gmail.nossr50.commands.skills;
|
package com.gmail.nossr50.commands.skills;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.text.StringUtils;
|
import com.gmail.nossr50.util.text.StringUtils;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -11,13 +13,16 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
//TODO: Switch to root skill based
|
||||||
public class SkillGuideCommand implements CommandExecutor {
|
public class SkillGuideCommand implements CommandExecutor {
|
||||||
private final String header;
|
private final String header;
|
||||||
|
private final PrimarySkillType skill;
|
||||||
private final ArrayList<String> guide;
|
private final ArrayList<String> guide;
|
||||||
|
|
||||||
private final String invalidPage = LocaleLoader.getString("Guides.Page.Invalid");
|
private final String invalidPage = LocaleLoader.getString("Guides.Page.Invalid");
|
||||||
|
|
||||||
public SkillGuideCommand(PrimarySkillType skill) {
|
public SkillGuideCommand(@NotNull RootSkill rootSkill) {
|
||||||
|
skill = CoreSkills.getSkill(rootSkill);
|
||||||
header = LocaleLoader.getString("Guides.Header", skill.getName());
|
header = LocaleLoader.getString("Guides.Header", skill.getName());
|
||||||
guide = getGuide(skill);
|
guide = getGuide(skill);
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
||||||
// FUEL EFFICIENCY
|
// FUEL EFFICIENCY
|
||||||
if (canFuelEfficiency) {
|
if (canFuelEfficiency) {
|
||||||
burnTimeModifier = String.valueOf(mmoPlayer.getSmeltingManager().getFuelEfficiencyMultiplier());
|
burnTimeModifier = String.valueOf(((McMMOPlayer) (mmoPlayer)).getSmeltingManager().getFuelEfficiencyMultiplier());
|
||||||
}
|
}
|
||||||
|
|
||||||
// FLUX MINING
|
// FLUX MINING
|
||||||
@ -57,7 +57,7 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
canFuelEfficiency = canUseSubskill(mmoPlayer, SubSkillType.SMELTING_FUEL_EFFICIENCY);
|
canFuelEfficiency = canUseSubskill(mmoPlayer, SubSkillType.SMELTING_FUEL_EFFICIENCY);
|
||||||
canSecondSmelt = canUseSubskill(mmoPlayer, SubSkillType.SMELTING_SECOND_SMELT);
|
canSecondSmelt = canUseSubskill(mmoPlayer, SubSkillType.SMELTING_SECOND_SMELT);
|
||||||
//canFluxMine = canUseSubskill(player, SubSkillType.SMELTING_FLUX_MINING);
|
//canFluxMine = canUseSubskill(player, SubSkillType.SMELTING_FLUX_MINING);
|
||||||
canUnderstandTheArt = Permissions.vanillaXpBoost(mmoPlayer.getPlayer(), skill) && RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.SMELTING_UNDERSTANDING_THE_ART);
|
canUnderstandTheArt = Permissions.vanillaXpBoost(Misc.adaptPlayer(mmoPlayer), rootSkill) && RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.SMELTING_UNDERSTANDING_THE_ART);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -81,7 +81,7 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
|
|
||||||
if (canUnderstandTheArt) {
|
if (canUnderstandTheArt) {
|
||||||
messages.add(getStatMessage(false, true, SubSkillType.SMELTING_UNDERSTANDING_THE_ART,
|
messages.add(getStatMessage(false, true, SubSkillType.SMELTING_UNDERSTANDING_THE_ART,
|
||||||
String.valueOf(mmoPlayer.getSmeltingManager().getVanillaXpMultiplier())));
|
String.valueOf(((McMMOPlayer) (mmoPlayer)).getSmeltingManager().getVanillaXpMultiplier())));
|
||||||
}
|
}
|
||||||
|
|
||||||
return messages;
|
return messages;
|
||||||
|
@ -44,7 +44,7 @@ public class SwordsCommand extends SkillCommand {
|
|||||||
|
|
||||||
// SWORDS_RUPTURE
|
// SWORDS_RUPTURE
|
||||||
if (canBleed) {
|
if (canBleed) {
|
||||||
bleedLength = mmoPlayer.getSwordsManager().getRuptureBleedTicks();
|
bleedLength = ((McMMOPlayer) (mmoPlayer)).getSwordsManager().getRuptureBleedTicks();
|
||||||
|
|
||||||
String[] bleedStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, mmoPlayer, SubSkillType.SWORDS_RUPTURE);
|
String[] bleedStrings = getAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, mmoPlayer, SubSkillType.SWORDS_RUPTURE);
|
||||||
bleedChance = bleedStrings[0];
|
bleedChance = bleedStrings[0];
|
||||||
@ -70,7 +70,7 @@ public class SwordsCommand extends SkillCommand {
|
|||||||
protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
|
protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
|
||||||
List<String> messages = new ArrayList<>();
|
List<String> messages = new ArrayList<>();
|
||||||
|
|
||||||
int ruptureTicks = mmoPlayer.getSwordsManager().getRuptureBleedTicks();
|
int ruptureTicks = ((McMMOPlayer) (mmoPlayer)).getSwordsManager().getRuptureBleedTicks();
|
||||||
double ruptureDamagePlayers = RankUtils.getRank(mmoPlayer, SubSkillType.SWORDS_RUPTURE) >= 3 ? AdvancedConfig.getInstance().getRuptureDamagePlayer() * 1.5D : AdvancedConfig.getInstance().getRuptureDamagePlayer();
|
double ruptureDamagePlayers = RankUtils.getRank(mmoPlayer, SubSkillType.SWORDS_RUPTURE) >= 3 ? AdvancedConfig.getInstance().getRuptureDamagePlayer() * 1.5D : AdvancedConfig.getInstance().getRuptureDamagePlayer();
|
||||||
double ruptureDamageMobs = RankUtils.getRank(mmoPlayer, SubSkillType.SWORDS_RUPTURE) >= 3 ? AdvancedConfig.getInstance().getRuptureDamageMobs() * 1.5D : AdvancedConfig.getInstance().getRuptureDamageMobs();
|
double ruptureDamageMobs = RankUtils.getRank(mmoPlayer, SubSkillType.SWORDS_RUPTURE) >= 3 ? AdvancedConfig.getInstance().getRuptureDamageMobs() * 1.5D : AdvancedConfig.getInstance().getRuptureDamageMobs();
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ public class SwordsCommand extends SkillCommand {
|
|||||||
if(canUseSubskill(mmoPlayer, SubSkillType.SWORDS_STAB))
|
if(canUseSubskill(mmoPlayer, SubSkillType.SWORDS_STAB))
|
||||||
{
|
{
|
||||||
messages.add(getStatMessage(SubSkillType.SWORDS_STAB,
|
messages.add(getStatMessage(SubSkillType.SWORDS_STAB,
|
||||||
String.valueOf(mmoPlayer.getSwordsManager().getStabDamage())));
|
String.valueOf(((McMMOPlayer) (mmoPlayer)).getSwordsManager().getStabDamage())));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(canUseSubskill(mmoPlayer, SubSkillType.SWORDS_SWORDS_LIMIT_BREAK)) {
|
if(canUseSubskill(mmoPlayer, SubSkillType.SWORDS_SWORDS_LIMIT_BREAK)) {
|
||||||
|
@ -45,7 +45,7 @@ public class TamingCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void permissionsCheck(@NotNull OnlineMMOPlayer mmoPlayer) {
|
protected void permissionsCheck(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
canBeastLore = canUseSubskill(mmoPlayer, SubSkillType.TAMING_BEAST_LORE);
|
canBeastLore = canUseSubskill(mmoPlayer, SubSkillType.TAMING_BEAST_LORE);
|
||||||
canCallWild = Permissions.callOfTheWild(mmoPlayer.getPlayer(), EntityType.HORSE) || Permissions.callOfTheWild(mmoPlayer.getPlayer(), EntityType.WOLF) || Permissions.callOfTheWild(mmoPlayer.getPlayer(), EntityType.OCELOT);
|
canCallWild = Permissions.callOfTheWild(Misc.adaptPlayer(mmoPlayer), EntityType.HORSE) || Permissions.callOfTheWild(Misc.adaptPlayer(mmoPlayer), EntityType.WOLF) || Permissions.callOfTheWild(Misc.adaptPlayer(mmoPlayer), EntityType.OCELOT);
|
||||||
canEnvironmentallyAware = canUseSubskill(mmoPlayer, SubSkillType.TAMING_ENVIRONMENTALLY_AWARE);
|
canEnvironmentallyAware = canUseSubskill(mmoPlayer, SubSkillType.TAMING_ENVIRONMENTALLY_AWARE);
|
||||||
canFastFood = canUseSubskill(mmoPlayer, SubSkillType.TAMING_FAST_FOOD_SERVICE);
|
canFastFood = canUseSubskill(mmoPlayer, SubSkillType.TAMING_FAST_FOOD_SERVICE);
|
||||||
canGore = canUseSubskill(mmoPlayer, SubSkillType.TAMING_GORE);
|
canGore = canUseSubskill(mmoPlayer, SubSkillType.TAMING_GORE);
|
||||||
@ -96,7 +96,7 @@ public class TamingCommand extends SkillCommand {
|
|||||||
protected @NotNull List<Component> getTextComponents(@NotNull OnlineMMOPlayer mmoPlayer) {
|
protected @NotNull List<Component> getTextComponents(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
List<Component> textComponents = new ArrayList<>();
|
List<Component> textComponents = new ArrayList<>();
|
||||||
|
|
||||||
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, this.skill);
|
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, this.rootSkill);
|
||||||
|
|
||||||
return textComponents;
|
return textComponents;
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ public class UnarmedCommand extends SkillCommand {
|
|||||||
|
|
||||||
// IRON ARM
|
// IRON ARM
|
||||||
if (canIronArm) {
|
if (canIronArm) {
|
||||||
ironArmBonus = mmoPlayer.getUnarmedManager().getSteelArmStyleDamage();
|
ironArmBonus = ((McMMOPlayer) (mmoPlayer)).getUnarmedManager().getSteelArmStyleDamage();
|
||||||
}
|
}
|
||||||
|
|
||||||
// IRON GRIP
|
// IRON GRIP
|
||||||
|
@ -56,7 +56,7 @@ public class WoodcuttingCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void permissionsCheck(@NotNull OnlineMMOPlayer mmoPlayer) {
|
protected void permissionsCheck(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
canTreeFell = RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.WOODCUTTING_TREE_FELLER) && Permissions.treeFeller(mmoPlayer.getPlayer());
|
canTreeFell = RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.WOODCUTTING_TREE_FELLER) && Permissions.treeFeller(mmoPlayer.getPlayer());
|
||||||
canDoubleDrop = canUseSubskill(mmoPlayer, SubSkillType.WOODCUTTING_HARVEST_LUMBER) && !skill.getDoubleDropsDisabled() && RankUtils.getRank(mmoPlayer, SubSkillType.WOODCUTTING_HARVEST_LUMBER) >= 1;
|
canDoubleDrop = canUseSubskill(mmoPlayer, SubSkillType.WOODCUTTING_HARVEST_LUMBER) && !rootSkill.getDoubleDropsDisabled() && RankUtils.getRank(mmoPlayer, SubSkillType.WOODCUTTING_HARVEST_LUMBER) >= 1;
|
||||||
canLeafBlow = canUseSubskill(mmoPlayer, SubSkillType.WOODCUTTING_LEAF_BLOWER);
|
canLeafBlow = canUseSubskill(mmoPlayer, SubSkillType.WOODCUTTING_LEAF_BLOWER);
|
||||||
canKnockOnWood = canTreeFell && canUseSubskill(mmoPlayer, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD);
|
canKnockOnWood = canTreeFell && canUseSubskill(mmoPlayer, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD);
|
||||||
/*canSplinter = canUseSubskill(player, SubSkillType.WOODCUTTING_SPLINTER);
|
/*canSplinter = canUseSubskill(player, SubSkillType.WOODCUTTING_SPLINTER);
|
||||||
|
@ -552,6 +552,7 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getLevelCap(@NotNull SkillIdentity skillIdentity) {
|
public int getLevelCap(@NotNull SkillIdentity skillIdentity) {
|
||||||
|
|
||||||
int cap = config.getInt("Skills." + StringUtils.getCapitalized(skillIdentity.getSkillName()) + ".Level_Cap", 0);
|
int cap = config.getInt("Skills." + StringUtils.getCapitalized(skillIdentity.getSkillName()) + ".Level_Cap", 0);
|
||||||
return (cap <= 0) ? Integer.MAX_VALUE : cap;
|
return (cap <= 0) ? Integer.MAX_VALUE : cap;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import com.gmail.nossr50.datatypes.skills.MaterialType;
|
|||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.datatypes.skills.alchemy.PotionStage;
|
import com.gmail.nossr50.datatypes.skills.alchemy.PotionStage;
|
||||||
import com.gmail.nossr50.util.text.StringUtils;
|
import com.gmail.nossr50.util.text.StringUtils;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
@ -13,6 +14,7 @@ import org.bukkit.block.data.BlockData;
|
|||||||
import org.bukkit.boss.BarColor;
|
import org.bukkit.boss.BarColor;
|
||||||
import org.bukkit.boss.BarStyle;
|
import org.bukkit.boss.BarStyle;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -328,6 +330,21 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
|
|||||||
public boolean getAddExtraDetails() { return config.getBoolean("Experience_Bars.ThisMayCauseLag.AlwaysUpdateTitlesWhenXPIsGained.ExtraDetails", false);}
|
public boolean getAddExtraDetails() { return config.getBoolean("Experience_Bars.ThisMayCauseLag.AlwaysUpdateTitlesWhenXPIsGained.ExtraDetails", false);}
|
||||||
public boolean isExperienceBarsEnabled() { return config.getBoolean("Experience_Bars.Enable", true); }
|
public boolean isExperienceBarsEnabled() { return config.getBoolean("Experience_Bars.Enable", true); }
|
||||||
public boolean isExperienceBarEnabled(PrimarySkillType primarySkillType) { return config.getBoolean("Experience_Bars."+StringUtils.getCapitalized(primarySkillType.toString())+".Enable", true);}
|
public boolean isExperienceBarEnabled(PrimarySkillType primarySkillType) { return config.getBoolean("Experience_Bars."+StringUtils.getCapitalized(primarySkillType.toString())+".Enable", true);}
|
||||||
|
public boolean isExperienceBarEnabled(@NotNull RootSkill rootSkill) { return config.getBoolean("Experience_Bars."+StringUtils.getCapitalized(rootSkill.getSkillName())+".Enable", true);}
|
||||||
|
|
||||||
|
public BarColor getExperienceBarColor(@NotNull RootSkill rootSkill)
|
||||||
|
{
|
||||||
|
String colorValueFromConfig = config.getString("Experience_Bars."+StringUtils.getCapitalized(rootSkill.getSkillName())+".Color");
|
||||||
|
|
||||||
|
for(BarColor barColor : BarColor.values())
|
||||||
|
{
|
||||||
|
if(barColor.toString().equalsIgnoreCase(colorValueFromConfig))
|
||||||
|
return barColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
//In case the value is invalid
|
||||||
|
return BarColor.WHITE;
|
||||||
|
}
|
||||||
|
|
||||||
public BarColor getExperienceBarColor(PrimarySkillType primarySkillType)
|
public BarColor getExperienceBarColor(PrimarySkillType primarySkillType)
|
||||||
{
|
{
|
||||||
@ -343,8 +360,7 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
|
|||||||
return BarColor.WHITE;
|
return BarColor.WHITE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BarStyle getExperienceBarStyle(PrimarySkillType primarySkillType)
|
public BarStyle getExperienceBarStyle(PrimarySkillType primarySkillType) {
|
||||||
{
|
|
||||||
String colorValueFromConfig = config.getString("Experience_Bars."+StringUtils.getCapitalized(primarySkillType.toString())+".BarStyle");
|
String colorValueFromConfig = config.getString("Experience_Bars."+StringUtils.getCapitalized(primarySkillType.toString())+".BarStyle");
|
||||||
|
|
||||||
for(BarStyle barStyle : BarStyle.values())
|
for(BarStyle barStyle : BarStyle.values())
|
||||||
@ -357,6 +373,19 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
|
|||||||
return BarStyle.SOLID;
|
return BarStyle.SOLID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BarStyle getExperienceBarStyle(@NotNull RootSkill rootSkill) {
|
||||||
|
String colorValueFromConfig = config.getString("Experience_Bars."+StringUtils.getCapitalized(rootSkill.getSkillName())+".BarStyle");
|
||||||
|
|
||||||
|
for(BarStyle barStyle : BarStyle.values())
|
||||||
|
{
|
||||||
|
if(barStyle.toString().equalsIgnoreCase(colorValueFromConfig))
|
||||||
|
return barStyle;
|
||||||
|
}
|
||||||
|
|
||||||
|
//In case the value is invalid
|
||||||
|
return BarStyle.SOLID;
|
||||||
|
}
|
||||||
|
|
||||||
/* Acrobatics */
|
/* Acrobatics */
|
||||||
public int getDodgeXPModifier() { return config.getInt("Experience_Values.Acrobatics.Dodge", 120); }
|
public int getDodgeXPModifier() { return config.getInt("Experience_Values.Acrobatics.Dodge", 120); }
|
||||||
public int getRollXPModifier() { return config.getInt("Experience_Values.Acrobatics.Roll", 80); }
|
public int getRollXPModifier() { return config.getInt("Experience_Values.Acrobatics.Roll", 80); }
|
||||||
|
@ -8,6 +8,7 @@ import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.neetgames.mcmmo.exceptions.InvalidSkillException;
|
import com.neetgames.mcmmo.exceptions.InvalidSkillException;
|
||||||
import com.neetgames.mcmmo.exceptions.ProfileRetrievalException;
|
import com.neetgames.mcmmo.exceptions.ProfileRetrievalException;
|
||||||
|
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||||
import org.apache.commons.lang.NullArgumentException;
|
import org.apache.commons.lang.NullArgumentException;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -85,7 +86,7 @@ public interface DatabaseManager {
|
|||||||
*/
|
*/
|
||||||
void insertNewUser(@NotNull String playerName, @NotNull UUID uuid) throws Exception;
|
void insertNewUser(@NotNull String playerName, @NotNull UUID uuid) throws Exception;
|
||||||
|
|
||||||
@Nullable PlayerProfile queryPlayerDataByPlayer(@NotNull Player player) throws ProfileRetrievalException, NullArgumentException;
|
@Nullable MMOPlayerData queryPlayerDataByPlayer(@NotNull Player player) throws ProfileRetrievalException, NullArgumentException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load player data (in the form of {@link PlayerProfile}) if player data exists
|
* Load player data (in the form of {@link PlayerProfile}) if player data exists
|
||||||
@ -95,7 +96,7 @@ public interface DatabaseManager {
|
|||||||
* @param playerName the current player name for this player
|
* @param playerName the current player name for this player
|
||||||
* @return The player's data, or null if not found
|
* @return The player's data, or null if not found
|
||||||
*/
|
*/
|
||||||
@Nullable PlayerProfile queryPlayerDataByUUID(@NotNull UUID uuid, @NotNull String playerName) throws ProfileRetrievalException, NullArgumentException;
|
@Nullable MMOPlayerData queryPlayerDataByUUID(@NotNull UUID uuid, @NotNull String playerName) throws ProfileRetrievalException, NullArgumentException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load player data (in the form of {@link PlayerProfile}) if player data exists
|
* Load player data (in the form of {@link PlayerProfile}) if player data exists
|
||||||
@ -104,7 +105,7 @@ public interface DatabaseManager {
|
|||||||
* @param playerName the current player name for this player
|
* @param playerName the current player name for this player
|
||||||
* @return The player's data, or null if not found
|
* @return The player's data, or null if not found
|
||||||
*/
|
*/
|
||||||
@Nullable PlayerProfile queryPlayerByName(@NotNull String playerName) throws ProfileRetrievalException;
|
@Nullable MMOPlayerData queryPlayerByName(@NotNull String playerName) throws ProfileRetrievalException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method queries the DB for player data for target player
|
* This method queries the DB for player data for target player
|
||||||
@ -117,7 +118,7 @@ public interface DatabaseManager {
|
|||||||
* @param player target player
|
* @param player target player
|
||||||
* @return {@link PlayerProfile} for the target player
|
* @return {@link PlayerProfile} for the target player
|
||||||
*/
|
*/
|
||||||
@Nullable PlayerProfile initPlayerProfile(@NotNull Player player) throws Exception;
|
@Nullable MMOPlayerData initPlayerProfile(@NotNull Player player) throws Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all users currently stored in the database.
|
* Get all users currently stored in the database.
|
||||||
|
@ -1,459 +0,0 @@
|
|||||||
package com.gmail.nossr50.datatypes.experience;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
|
||||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PersistentPlayerData;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.CoreSkillConstants;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
|
||||||
import com.gmail.nossr50.party.ShareHandler;
|
|
||||||
import com.gmail.nossr50.skills.child.FamilyTree;
|
|
||||||
import com.gmail.nossr50.util.EventUtils;
|
|
||||||
import com.gmail.nossr50.util.experience.ExperienceUtils;
|
|
||||||
import com.gmail.nossr50.util.player.NotificationManager;
|
|
||||||
import com.gmail.nossr50.util.skills.PerksUtils;
|
|
||||||
import com.gmail.nossr50.util.sounds.SoundManager;
|
|
||||||
import com.gmail.nossr50.util.sounds.SoundType;
|
|
||||||
import com.neetgames.mcmmo.exceptions.UnknownSkillException;
|
|
||||||
import com.neetgames.mcmmo.skill.SkillIdentity;
|
|
||||||
import org.bukkit.GameMode;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class ExperienceManager {
|
|
||||||
|
|
||||||
private boolean isUsingUnarmed = false;
|
|
||||||
|
|
||||||
private final @NotNull PersistentPlayerData persistentPlayerDataRef;
|
|
||||||
private @Nullable OnlineMMOPlayer mmoPlayer;
|
|
||||||
|
|
||||||
public ExperienceManager(@NotNull OnlineMMOPlayer mmoPlayer) {
|
|
||||||
this.mmoPlayer = mmoPlayer;
|
|
||||||
this.persistentPlayerDataRef = mmoPlayer.getPersistentPlayerData();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ExperienceManager(@NotNull PersistentPlayerData persistentPlayerData) {
|
|
||||||
this.persistentPlayerDataRef = persistentPlayerData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the power level of this player.
|
|
||||||
* A power level is the sum of all skill levels for this player
|
|
||||||
*
|
|
||||||
* @return the power level of the player
|
|
||||||
*/
|
|
||||||
public int getPowerLevel() {
|
|
||||||
int powerLevel = 0;
|
|
||||||
|
|
||||||
for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
|
|
||||||
powerLevel += getSkillLevel(primarySkillType);
|
|
||||||
}
|
|
||||||
|
|
||||||
return powerLevel;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the current value of raw XP for a skill
|
|
||||||
* @param primarySkillType target skill
|
|
||||||
* @return the value of raw XP for target skill
|
|
||||||
*/
|
|
||||||
public float getSkillXpLevelRaw(@NotNull PrimarySkillType primarySkillType) {
|
|
||||||
return persistentPlayerDataRef.getSkillsExperienceMap().get(primarySkillType);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the value of XP a player has accumulated in target skill
|
|
||||||
* Child Skills will return 0 (Child Skills will be removed in a future update)
|
|
||||||
* @param skillIdentity target skill
|
|
||||||
* @return the value for XP the player has accumulated in target skill
|
|
||||||
*/
|
|
||||||
public int getSkillXpValue(@NotNull SkillIdentity skillIdentity) {
|
|
||||||
if(CoreSkillConstants.isChildSkill(skillIdentity)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (int) Math.floor(getSkillXpLevelRaw(skillIdentity));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSkillXpValue(@NotNull SkillIdentity skillIdentity, float xpLevel) {
|
|
||||||
if (CoreSkillConstants.isChildSkill(skillIdentity)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
persistentPlayerDataRef.getSkillsExperienceMap().put(skillIdentity, xpLevel);
|
|
||||||
}
|
|
||||||
|
|
||||||
public float levelUp(@NotNull SkillIdentity skillIdentity) {
|
|
||||||
float xpRemoved = getExperienceToNextLevel(skillIdentity);
|
|
||||||
|
|
||||||
setSkillLevel(skillIdentity, getSkillLevel(skillIdentity) + 1);
|
|
||||||
setSkillXpValue(skillIdentity, getSkillXpValue(skillIdentity) - xpRemoved);
|
|
||||||
|
|
||||||
return xpRemoved;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether or not a player is level capped
|
|
||||||
* If they are at the power level cap, this will return true, otherwise it checks their skill level
|
|
||||||
*
|
|
||||||
* @param skillIdentity
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public boolean hasReachedLevelCap(@NotNull SkillIdentity skillIdentity) {
|
|
||||||
if(hasReachedPowerLevelCap())
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return getSkillLevel(skillIdentity) >= Config.getInstance().getLevelCap(skillIdentity);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether or not a player is power level capped
|
|
||||||
* Compares their power level total to the current set limit
|
|
||||||
* @return true if they have reached the power level cap
|
|
||||||
*/
|
|
||||||
public boolean hasReachedPowerLevelCap() {
|
|
||||||
return this.getPowerLevel() >= Config.getInstance().getPowerLevelCap();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Begins an experience gain. The amount will be affected by skill modifiers, global rate, perks, and may be shared with the party
|
|
||||||
*
|
|
||||||
* @param skillIdentity Skill being used
|
|
||||||
* @param xp Experience amount to process
|
|
||||||
*/
|
|
||||||
public void beginXpGain(@NotNull SkillIdentity skillIdentity, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
|
||||||
if (xp <= 0.0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CoreSkillConstants.isChildSkill(skillIdentity)) {
|
|
||||||
Set<SkillIdentity> parentSkills = FamilyTree.getParentSkills(skillIdentity);
|
|
||||||
float splitXp = xp / parentSkills.size();
|
|
||||||
|
|
||||||
for (SkillIdentity parentSkill : parentSkills) {
|
|
||||||
beginXpGain(parentSkill, splitXp, xpGainReason, xpGainSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO: The logic here is so stupid... rewrite later
|
|
||||||
|
|
||||||
// Return if the experience has been shared
|
|
||||||
if (mmoPlayer.getParty() != null && ShareHandler.handleXpShare(xp, mmoPlayer, mmoPlayer.getParty(), skillIdentity, ShareHandler.getSharedXpGainReason(xpGainReason))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
beginUnsharedXpGain(skillIdentity, xp, xpGainReason, xpGainSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Begins an experience gain. The amount will be affected by skill modifiers, global rate and perks
|
|
||||||
*
|
|
||||||
* @param skillIdentity Skill being used
|
|
||||||
* @param xp Experience amount to process
|
|
||||||
*/
|
|
||||||
public void beginUnsharedXpGain(@NotNull SkillIdentity skillIdentity, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
|
||||||
if(mmoPlayer.getPlayer().getGameMode() == GameMode.CREATIVE)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ExperienceUtils.applyXpGain(mmoPlayer, skillIdentity, modifyXpGain(skillIdentity, xp), xpGainReason, xpGainSource);
|
|
||||||
|
|
||||||
Party party = mmoPlayer.getParty();
|
|
||||||
|
|
||||||
if (party != null) {
|
|
||||||
if (!Config.getInstance().getPartyXpNearMembersNeeded() || !mcMMO.getPartyManager().getNearMembers(mmoPlayer).isEmpty()) {
|
|
||||||
party.getPartyExperienceManager().applyXpGain(modifyXpGain(skillIdentity, xp));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSkillLevel(@NotNull SkillIdentity skillIdentity) {
|
|
||||||
return CoreSkillConstants.isChildSkill(skillIdentity) ? getChildSkillLevel(skillIdentity) : getSkillLevel(skillIdentity);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the amount of Xp remaining before the next level.
|
|
||||||
*
|
|
||||||
* @param skillIdentity Type of skill to check
|
|
||||||
* @return the total amount of Xp until next level
|
|
||||||
*/
|
|
||||||
public int getExperienceToNextLevel(@NotNull SkillIdentity skillIdentity) {
|
|
||||||
if(CoreSkillConstants.isChildSkill(skillIdentity)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int level = (ExperienceConfig.getInstance().getCumulativeCurveEnabled()) ? getPowerLevel() : getSkillLevel(skillIdentity);
|
|
||||||
FormulaType formulaType = ExperienceConfig.getInstance().getFormulaType();
|
|
||||||
|
|
||||||
return mcMMO.getFormulaManager().getXPtoNextLevel(level, formulaType);
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getChildSkillLevel(@NotNull SkillIdentity skillIdentity) {
|
|
||||||
Set<SkillIdentity> parents = FamilyTree.getParentSkills(skillIdentity);
|
|
||||||
int sum = 0;
|
|
||||||
|
|
||||||
for (SkillIdentity parentIdentity : parents) {
|
|
||||||
sum += getSkillLevel(parentIdentity);
|
|
||||||
}
|
|
||||||
|
|
||||||
return sum / parents.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Xp Functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove Xp from a skill.
|
|
||||||
*
|
|
||||||
* @param skill Type of skill to modify
|
|
||||||
* @param xp Amount of xp to remove
|
|
||||||
*/
|
|
||||||
public void removeXp(@NotNull PrimarySkillType skill, int xp) {
|
|
||||||
if (skill.isChildSkill()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setSkillXpValue(skill, getSkillXpValue(skill) - xp);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeXp(PrimarySkillType skill, float xp) {
|
|
||||||
if (skill.isChildSkill()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setSkillXpValue(skill, getSkillXpValue(skill) - xp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Modify a primarySkillType level.
|
|
||||||
*
|
|
||||||
* @param primarySkillType Type of primarySkillType to modify
|
|
||||||
* @param level New level value for the primarySkillType
|
|
||||||
*/
|
|
||||||
public void setSkillLevel(@NotNull PrimarySkillType primarySkillType, int level) {
|
|
||||||
if (primarySkillType.isChildSkill()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Don't allow levels to be negative
|
|
||||||
if(level < 0)
|
|
||||||
level = 0;
|
|
||||||
|
|
||||||
setSkillLevel(primarySkillType, level);
|
|
||||||
setSkillXpValue(primarySkillType, 0F);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add levels to a primarySkillType.
|
|
||||||
*
|
|
||||||
* @param primarySkillType Type of primarySkillType to add levels to
|
|
||||||
* @param levels Number of levels to add
|
|
||||||
*/
|
|
||||||
public void addLevels(@NotNull PrimarySkillType primarySkillType, int levels) {
|
|
||||||
setSkillLevel(primarySkillType, getSkillLevel(primarySkillType) + levels);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add Experience to a primarySkillType.
|
|
||||||
*
|
|
||||||
* @param primarySkillType Type of primarySkillType to add experience to
|
|
||||||
* @param xp Number of experience to add
|
|
||||||
*/
|
|
||||||
public void addXp(@NotNull PrimarySkillType primarySkillType, float xp) {
|
|
||||||
if (primarySkillType.isChildSkill()) {
|
|
||||||
Set<PrimarySkillType> parentSkills = FamilyTree.getParents(primarySkillType);
|
|
||||||
float dividedXP = (xp / parentSkills.size());
|
|
||||||
|
|
||||||
for (PrimarySkillType parentSkill : parentSkills) {
|
|
||||||
setSkillXpValue(parentSkill, getSkillXpValue(parentSkill) + dividedXP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
setSkillXpValue(primarySkillType, getSkillXpValue(primarySkillType) + xp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the registered amount of experience gained
|
|
||||||
* This is used for diminished XP returns
|
|
||||||
*
|
|
||||||
* @return xp Experience amount registered
|
|
||||||
*/
|
|
||||||
public float getRegisteredXpGain(@NotNull PrimarySkillType primarySkillType) {
|
|
||||||
float xp = 0F;
|
|
||||||
|
|
||||||
if (get(primarySkillType) != null) { //??
|
|
||||||
xp = rollingSkillsXp.get(primarySkillType);
|
|
||||||
}
|
|
||||||
|
|
||||||
return xp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register an experience gain
|
|
||||||
* This is used for diminished XP returns
|
|
||||||
*
|
|
||||||
* @param primarySkillType Skill being used
|
|
||||||
* @param xp Experience amount to add
|
|
||||||
*/
|
|
||||||
public void registerXpGain(@NotNull PrimarySkillType primarySkillType, float xp) {
|
|
||||||
gainedSkillsXp.add(new SkillXpGain(primarySkillType, xp));
|
|
||||||
rollingSkillsXp.put(primarySkillType, getRegisteredXpGain(primarySkillType) + xp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove experience gains older than a given time
|
|
||||||
* This is used for diminished XP returns
|
|
||||||
*/
|
|
||||||
public void purgeExpiredXpGains() {
|
|
||||||
SkillXpGain gain;
|
|
||||||
while ((gain = gainedSkillsXp.poll()) != null) {
|
|
||||||
rollingSkillsXp.put(gain.getSkill(), getRegisteredXpGain(gain.getSkill()) - gain.getXp());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Modifies an experience gain using skill modifiers, global rate and perks
|
|
||||||
*
|
|
||||||
* @param skillIdentity Skill being used
|
|
||||||
* @param xp Experience amount to process
|
|
||||||
* @return Modified experience
|
|
||||||
*/
|
|
||||||
private float modifyXpGain(@NotNull SkillIdentity skillIdentity, float xp) {
|
|
||||||
if ((skillIdentity.getMaxLevel() <= getSkillLevel(skillIdentity)) || (Config.getInstance().getPowerLevelCap() <= getPowerLevel())) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
xp = (float) (xp / skillIdentity.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier());
|
|
||||||
|
|
||||||
return PerksUtils.handleXpPerks(mmoPlayer.getPlayer(), xp, skillIdentity);
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getProgressInCurrentSkillLevel(@NotNull SkillIdentity skillIdentity) throws UnknownSkillException
|
|
||||||
{
|
|
||||||
if(CoreSkillConstants.isChildSkill(skillIdentity)) {
|
|
||||||
return 1.0D;
|
|
||||||
}
|
|
||||||
|
|
||||||
double currentXP = getSkillXpValue(skillIdentity);
|
|
||||||
double maxXP = getExperienceToNextLevel(skillIdentity);
|
|
||||||
|
|
||||||
return (currentXP / maxXP);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUsingUnarmed(boolean bool) {
|
|
||||||
isUsingUnarmed = bool;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Applies an experience gain
|
|
||||||
*
|
|
||||||
* @param primarySkillType Skill being used
|
|
||||||
* @param xp Experience amount to add
|
|
||||||
*/
|
|
||||||
public void applyXpGain(@NotNull PrimarySkillType primarySkillType, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
|
||||||
//Only check for permissions if the player is online, otherwise just assume a command is being executed by an admin or some other means and add the XP
|
|
||||||
if(mmoPlayer != null) {
|
|
||||||
if (!primarySkillType.getPermissions(mmoPlayer.getPlayer())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (primarySkillType.isChildSkill()) {
|
|
||||||
Set<PrimarySkillType> parentSkills = FamilyTree.getParents(primarySkillType);
|
|
||||||
|
|
||||||
for (PrimarySkillType parentSkill : parentSkills) {
|
|
||||||
applyXpGain(parentSkill, xp / parentSkills.size(), xpGainReason, xpGainSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!EventUtils.handleXpGainEvent(mmoPlayer.getPlayer(), primarySkillType, xp, xpGainReason)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setUsingUnarmed(primarySkillType == PrimarySkillType.UNARMED);
|
|
||||||
updateLevelStats(primarySkillType, xpGainReason, xpGainSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void processPostXpEvent(@NotNull PrimarySkillType primarySkillType, @NotNull Plugin plugin, @NotNull XPGainSource xpGainSource)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Everything in this method requires an online player, so if they aren't online we don't waste our time
|
|
||||||
*/
|
|
||||||
if(mmoPlayer == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Check if they've reached the power level cap just now
|
|
||||||
if(hasReachedPowerLevelCap()) {
|
|
||||||
NotificationManager.sendPlayerInformationChatOnly(mmoPlayer.getPlayer(), "LevelCap.PowerLevel", String.valueOf(Config.getInstance().getPowerLevelCap()));
|
|
||||||
} else if(hasReachedLevelCap(primarySkillType)) {
|
|
||||||
NotificationManager.sendPlayerInformationChatOnly(mmoPlayer.getPlayer(), "LevelCap.Skill", String.valueOf(Config.getInstance().getLevelCap(primarySkillType)), primarySkillType.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
//Updates from Party sources
|
|
||||||
if(xpGainSource == XPGainSource.PARTY_MEMBERS && !ExperienceConfig.getInstance().isPartyExperienceBarsEnabled())
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Updates from passive sources (Alchemy, Smelting, etc...)
|
|
||||||
if(xpGainSource == XPGainSource.PASSIVE && !ExperienceConfig.getInstance().isPassiveGainsExperienceBarsEnabled())
|
|
||||||
return;
|
|
||||||
|
|
||||||
mmoPlayer.updateXPBar(primarySkillType, plugin);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates a players level
|
|
||||||
*
|
|
||||||
* @param primarySkillType The skill to check
|
|
||||||
*/
|
|
||||||
public void updateLevelStats(@NotNull PrimarySkillType primarySkillType, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
|
||||||
if(hasReachedLevelCap(primarySkillType))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (getSkillXpLevelRaw(primarySkillType) < getExperienceToNextLevel(primarySkillType)) {
|
|
||||||
processPostXpEvent(primarySkillType, mcMMO.p, xpGainSource);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int levelsGained = 0;
|
|
||||||
float xpRemoved = 0;
|
|
||||||
|
|
||||||
while (getSkillXpLevelRaw(primarySkillType) >= getExperienceToNextLevel(primarySkillType)) {
|
|
||||||
if (hasReachedLevelCap(primarySkillType)) {
|
|
||||||
setSkillXpValue(primarySkillType, 0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
xpRemoved += levelUp(primarySkillType);
|
|
||||||
levelsGained++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (EventUtils.tryLevelChangeEvent(mmoPlayer.getPlayer(), primarySkillType, levelsGained, xpRemoved, true, xpGainReason)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.getInstance().getLevelUpSoundsEnabled()) {
|
|
||||||
SoundManager.sendSound(mmoPlayer.getPlayer(), mmoPlayer.getPlayer().getLocation(), SoundType.LEVEL_UP);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check to see if the player unlocked any new skills
|
|
||||||
*/
|
|
||||||
|
|
||||||
NotificationManager.sendPlayerLevelUpNotification(mmoPlayer, primarySkillType, levelsGained, getSkillLevel(primarySkillType));
|
|
||||||
|
|
||||||
//UPDATE XP BARS
|
|
||||||
processPostXpEvent(primarySkillType, mcMMO.p, xpGainSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.gmail.nossr50.datatypes.experience;
|
||||||
|
|
||||||
|
import com.neetgames.mcmmo.experience.ExperienceHandler;
|
||||||
|
|
||||||
|
public class OfflineExperienceProcessor implements ExperienceHandler {
|
||||||
|
}
|
@ -0,0 +1,379 @@
|
|||||||
|
package com.gmail.nossr50.datatypes.experience;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.util.Misc;
|
||||||
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.neetgames.mcmmo.experience.ExperienceHandler;
|
||||||
|
import com.neetgames.mcmmo.experience.XPGainReason;
|
||||||
|
import com.neetgames.mcmmo.experience.XPGainSource;
|
||||||
|
import com.neetgames.mcmmo.player.MMOPlayer;
|
||||||
|
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||||
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
|
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||||
|
import com.gmail.nossr50.datatypes.skills.RootSkill;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import com.gmail.nossr50.party.ShareHandler;
|
||||||
|
import com.gmail.nossr50.skills.child.FamilyTree;
|
||||||
|
import com.gmail.nossr50.util.EventUtils;
|
||||||
|
import com.gmail.nossr50.util.experience.ExperienceUtils;
|
||||||
|
import com.gmail.nossr50.util.player.NotificationManager;
|
||||||
|
import com.gmail.nossr50.util.skills.PerksUtils;
|
||||||
|
import com.gmail.nossr50.util.sounds.SoundManager;
|
||||||
|
import com.gmail.nossr50.util.sounds.SoundType;
|
||||||
|
import com.neetgames.mcmmo.exceptions.UnknownSkillException;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class OnlineExperienceProcessor implements ExperienceHandler {
|
||||||
|
|
||||||
|
private boolean isUsingUnarmed = false;
|
||||||
|
|
||||||
|
private final @NotNull MMOPlayerData mmoPlayerData;
|
||||||
|
private final @NotNull MMOPlayer mmoPlayer;
|
||||||
|
private final @NotNull Player playerRef;
|
||||||
|
|
||||||
|
public OnlineExperienceProcessor(@NotNull MMOPlayer mmoPlayer, @NotNull Player playerRef) {
|
||||||
|
this.mmoPlayer = mmoPlayer;
|
||||||
|
this.playerRef = playerRef;
|
||||||
|
this.mmoPlayerData = mmoPlayer.getMMOPlayerData();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getPowerLevel() {
|
||||||
|
int powerLevel = 0;
|
||||||
|
|
||||||
|
Map<RootSkill, Integer> rootSkillLevelMap = mmoPlayerData.getDirtySkillLevelMap().unwrapMap();
|
||||||
|
|
||||||
|
for (RootSkill rootSkill : rootSkillLevelMap.keySet()) {
|
||||||
|
powerLevel += rootSkillLevelMap.get(rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
return powerLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getSkillXpLevelRaw(@NotNull RootSkill rootSkill) {
|
||||||
|
return mmoPlayerData.getSkillsExperienceMap().get(rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSkillXpValue(@NotNull RootSkill rootSkill) {
|
||||||
|
if(CoreSkills.isChildSkill(rootSkill)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (int) Math.floor(getSkillXpLevelRaw(rootSkill));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSkillXpValue(@NotNull RootSkill rootSkill, float xpLevel) {
|
||||||
|
if (CoreSkills.isChildSkill(rootSkill)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mmoPlayerData.getSkillsExperienceMap().put(rootSkill, xpLevel);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float levelUp(@NotNull RootSkill rootSkill) {
|
||||||
|
float xpRemoved = getExperienceToNextLevel(rootSkill);
|
||||||
|
|
||||||
|
setSkillLevel(rootSkill, getSkillLevel(rootSkill) + 1);
|
||||||
|
setSkillXpValue(rootSkill, getSkillXpValue(rootSkill) - xpRemoved);
|
||||||
|
|
||||||
|
return xpRemoved;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasReachedLevelCap(@NotNull RootSkill rootSkill) {
|
||||||
|
if(hasReachedPowerLevelCap())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return getSkillLevel(rootSkill) >= Config.getInstance().getLevelCap(rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasReachedPowerLevelCap() {
|
||||||
|
return this.getPowerLevel() >= Config.getInstance().getPowerLevelCap();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beginXpGain(@NotNull RootSkill rootSkill, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
||||||
|
if (xp <= 0.0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CoreSkills.isChildSkill(rootSkill)) {
|
||||||
|
Set<RootSkill> parentSkills = FamilyTree.getParentSkills(rootSkill);
|
||||||
|
float splitXp = xp / parentSkills.size();
|
||||||
|
|
||||||
|
for (RootSkill parentSkill : parentSkills) {
|
||||||
|
beginXpGain(parentSkill, splitXp, xpGainReason, xpGainSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: The logic here is so stupid... rewrite later
|
||||||
|
|
||||||
|
// Return if the experience has been shared
|
||||||
|
if (mmoPlayer.getParty() != null && ShareHandler.handleXpShare(xp, mmoPlayer, mmoPlayer.getParty(), rootSkill, ShareHandler.getSharedXpGainReason(xpGainReason))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
beginUnsharedXpGain(rootSkill, xp, xpGainReason, xpGainSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beginUnsharedXpGain(@NotNull RootSkill rootSkill, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
||||||
|
if(Misc.adaptPlayer(mmoPlayer).getGameMode() == GameMode.CREATIVE)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ExperienceUtils.applyXpGain(mmoPlayer, rootSkill, modifyXpGain(rootSkill, xp), xpGainReason, xpGainSource);
|
||||||
|
|
||||||
|
Party party = mmoPlayer.getParty();
|
||||||
|
|
||||||
|
if (party != null) {
|
||||||
|
if (!Config.getInstance().getPartyXpNearMembersNeeded() || !mcMMO.getPartyManager().getNearMembers(mmoPlayer).isEmpty()) {
|
||||||
|
party.getPartyExperienceManager().applyXpGain(modifyXpGain(rootSkill, xp));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSkillLevel(@NotNull RootSkill rootSkill) {
|
||||||
|
return CoreSkills.isChildSkill(rootSkill) ? getChildSkillLevel(rootSkill) : getSkillLevel(rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getExperienceToNextLevel(@NotNull RootSkill rootSkill) {
|
||||||
|
if(CoreSkills.isChildSkill(rootSkill)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int level = (ExperienceConfig.getInstance().getCumulativeCurveEnabled()) ? getPowerLevel() : getSkillLevel(rootSkill);
|
||||||
|
FormulaType formulaType = ExperienceConfig.getInstance().getFormulaType();
|
||||||
|
|
||||||
|
return mcMMO.getFormulaManager().getXPtoNextLevel(level, formulaType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getChildSkillLevel(@NotNull RootSkill rootSkill) {
|
||||||
|
Set<RootSkill> parents = FamilyTree.getParentSkills(rootSkill);
|
||||||
|
int sum = 0;
|
||||||
|
|
||||||
|
for (RootSkill parentIdentity : parents) {
|
||||||
|
sum += getSkillLevel(parentIdentity);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sum / parents.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeXp(@NotNull RootSkill skill, int xp) {
|
||||||
|
if (skill.isChildSkill()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setSkillXpValue(skill, getSkillXpValue(skill) - xp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeXp(RootSkill skill, float xp) {
|
||||||
|
if (skill.isChildSkill()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setSkillXpValue(skill, getSkillXpValue(skill) - xp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSkillLevel(@NotNull RootSkill rootSkill, int level) {
|
||||||
|
if (rootSkill.isChildSkill()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Don't allow levels to be negative
|
||||||
|
if(level < 0)
|
||||||
|
level = 0;
|
||||||
|
|
||||||
|
setSkillLevel(rootSkill, level);
|
||||||
|
setSkillXpValue(rootSkill, 0F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addLevels(@NotNull RootSkill rootSkill, int levels) {
|
||||||
|
setSkillLevel(rootSkill, getSkillLevel(rootSkill) + levels);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addXp(@NotNull RootSkill rootSkill, float xp) {
|
||||||
|
if (rootSkill.isChildSkill()) {
|
||||||
|
Set<RootSkill> parentSkills = FamilyTree.getParents(rootSkill);
|
||||||
|
float dividedXP = (xp / parentSkills.size());
|
||||||
|
|
||||||
|
for (RootSkill parentSkill : parentSkills) {
|
||||||
|
setSkillXpValue(parentSkill, getSkillXpValue(parentSkill) + dividedXP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setSkillXpValue(rootSkill, getSkillXpValue(rootSkill) + xp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getRegisteredXpGain(@NotNull RootSkill rootSkill) {
|
||||||
|
float xp = 0F;
|
||||||
|
|
||||||
|
if (get(rootSkill) != null) { //??
|
||||||
|
xp = rollingSkillsXp.get(rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
return xp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerXpGain(@NotNull RootSkill rootSkill, float xp) {
|
||||||
|
gainedSkillsXp.add(new SkillXpGain(rootSkill, xp));
|
||||||
|
rollingSkillsXp.put(rootSkill, getRegisteredXpGain(rootSkill) + xp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void purgeExpiredXpGains() {
|
||||||
|
SkillXpGain gain;
|
||||||
|
while ((gain = gainedSkillsXp.poll()) != null) {
|
||||||
|
rollingSkillsXp.put(gain.getSkill(), getRegisteredXpGain(gain.getSkill()) - gain.getXp());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
private float modifyXpGain(@NotNull RootSkill rootSkill, float xp) {
|
||||||
|
if ((rootSkill.getMaxLevel() <= getSkillLevel(rootSkill)) || (Config.getInstance().getPowerLevelCap() <= getPowerLevel())) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
xp = (float) (xp / rootSkill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier());
|
||||||
|
|
||||||
|
return PerksUtils.handleXpPerks(Misc.adaptPlayer(mmoPlayer), xp, rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getProgressInCurrentSkillLevel(@NotNull RootSkill rootSkill) throws UnknownSkillException
|
||||||
|
{
|
||||||
|
if(CoreSkills.isChildSkill(rootSkill)) {
|
||||||
|
return 1.0D;
|
||||||
|
}
|
||||||
|
|
||||||
|
double currentXP = getSkillXpValue(rootSkill);
|
||||||
|
double maxXP = getExperienceToNextLevel(rootSkill);
|
||||||
|
|
||||||
|
return (currentXP / maxXP);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUsingUnarmed(boolean bool) {
|
||||||
|
isUsingUnarmed = bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void applyXpGain(@NotNull RootSkill rootSkill, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
||||||
|
//Only check for permissions if the player is online, otherwise just assume a command is being executed by an admin or some other means and add the XP
|
||||||
|
if (!Permissions.skillEnabled(mmoPlayer.getPlayer(), CoreSkills.getSkill(rootSkill))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CoreSkills.isChildSkill(rootSkill)) {
|
||||||
|
Set<RootSkill> parentSkills = FamilyTree.getParentSkills(rootSkill);
|
||||||
|
|
||||||
|
for (RootSkill parentSkill : parentSkills) {
|
||||||
|
applyXpGain(parentSkill, xp / parentSkills.size(), xpGainReason, xpGainSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!EventUtils.handleXpGainEvent(Misc.adaptPlayer(mmoPlayer), rootSkill, xp, xpGainReason)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setUsingUnarmed(rootSkill == CoreSkills.UNARMED_CS);
|
||||||
|
updateLevelStats(rootSkill, xpGainReason, xpGainSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processPostXpEvent(@NotNull RootSkill rootSkill, @NotNull XPGainSource xpGainSource)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Everything in this method requires an online player, so if they aren't online we don't waste our time
|
||||||
|
*/
|
||||||
|
if(mmoPlayer == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//Check if they've reached the power level cap just now
|
||||||
|
if(hasReachedPowerLevelCap()) {
|
||||||
|
NotificationManager.sendPlayerInformationChatOnly(Misc.adaptPlayer(mmoPlayer), "LevelCap.PowerLevel", String.valueOf(Config.getInstance().getPowerLevelCap()));
|
||||||
|
} else if(hasReachedLevelCap(rootSkill)) {
|
||||||
|
NotificationManager.sendPlayerInformationChatOnly(Misc.adaptPlayer(mmoPlayer), "LevelCap.Skill", String.valueOf(Config.getInstance().getLevelCap(rootSkill)), rootSkill.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
//Updates from Party sources
|
||||||
|
if(xpGainSource == XPGainSource.PARTY_MEMBERS && !ExperienceConfig.getInstance().isPartyExperienceBarsEnabled())
|
||||||
|
return;
|
||||||
|
|
||||||
|
//Updates from passive sources (Alchemy, Smelting, etc...)
|
||||||
|
if(xpGainSource == XPGainSource.PASSIVE && !ExperienceConfig.getInstance().isPassiveGainsExperienceBarsEnabled())
|
||||||
|
return;
|
||||||
|
|
||||||
|
mmoPlayer.updateXPBar(rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateLevelStats(@NotNull RootSkill rootSkill, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
||||||
|
if(hasReachedLevelCap(rootSkill))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (getSkillXpLevelRaw(rootSkill) < getExperienceToNextLevel(rootSkill)) {
|
||||||
|
processPostXpEvent(rootSkill, xpGainSource);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int levelsGained = 0;
|
||||||
|
float xpRemoved = 0;
|
||||||
|
|
||||||
|
while (getSkillXpLevelRaw(rootSkill) >= getExperienceToNextLevel(rootSkill)) {
|
||||||
|
if (hasReachedLevelCap(rootSkill)) {
|
||||||
|
setSkillXpValue(rootSkill, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
xpRemoved += levelUp(rootSkill);
|
||||||
|
levelsGained++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EventUtils.tryLevelChangeEvent(Misc.adaptPlayer(mmoPlayer), rootSkill, levelsGained, xpRemoved, true, xpGainReason)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config.getInstance().getLevelUpSoundsEnabled()) {
|
||||||
|
SoundManager.sendSound(Misc.adaptPlayer(mmoPlayer), Misc.adaptPlayer(mmoPlayer).getLocation(), SoundType.LEVEL_UP);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check to see if the player unlocked any new skills
|
||||||
|
*/
|
||||||
|
|
||||||
|
NotificationManager.sendPlayerLevelUpNotification(mmoPlayer, rootSkill, levelsGained, getSkillLevel(rootSkill));
|
||||||
|
|
||||||
|
//UPDATE XP BARS
|
||||||
|
processPostXpEvent(rootSkill, xpGainSource);
|
||||||
|
}
|
||||||
|
}
|
@ -1,21 +0,0 @@
|
|||||||
package com.gmail.nossr50.datatypes.experience;
|
|
||||||
|
|
||||||
public enum XPGainReason {
|
|
||||||
PVP,
|
|
||||||
PVE,
|
|
||||||
VAMPIRISM,
|
|
||||||
SHARED_PVP,
|
|
||||||
SHARED_PVE,
|
|
||||||
COMMAND,
|
|
||||||
UNKNOWN;
|
|
||||||
|
|
||||||
public static XPGainReason getXPGainReason(String reason) {
|
|
||||||
for (XPGainReason type : values()) {
|
|
||||||
if (type.name().equalsIgnoreCase(reason)) {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
package com.gmail.nossr50.datatypes.experience;
|
|
||||||
|
|
||||||
public enum XPGainSource {
|
|
||||||
SELF,
|
|
||||||
VAMPIRISM, //From Vampirism kills
|
|
||||||
PASSIVE, //Smelting, Brewing, etc...
|
|
||||||
PARTY_MEMBERS, //From other members of a party
|
|
||||||
COMMAND,
|
|
||||||
CUSTOM, //Outside Sources
|
|
||||||
}
|
|
@ -168,7 +168,7 @@ public class PartyMemberManager {
|
|||||||
Party party = mmoPlayer.getParty();
|
Party party = mmoPlayer.getParty();
|
||||||
|
|
||||||
if (party != null) {
|
if (party != null) {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
double range = Config.getInstance().getPartyShareRange();
|
double range = Config.getInstance().getPartyShareRange();
|
||||||
|
|
||||||
for (PartyMember partyMember : party.getPartyMembers()) {
|
for (PartyMember partyMember : party.getPartyMembers()) {
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
package com.gmail.nossr50.datatypes.player;
|
package com.gmail.nossr50.datatypes.player;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.ExperienceManager;
|
import com.gmail.nossr50.datatypes.experience.OfflineExperienceProcessor;
|
||||||
|
import com.gmail.nossr50.datatypes.experience.OnlineExperienceProcessor;
|
||||||
|
import com.neetgames.mcmmo.experience.ExperienceHandler;
|
||||||
import com.neetgames.mcmmo.player.MMOPlayer;
|
import com.neetgames.mcmmo.player.MMOPlayer;
|
||||||
|
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@ -9,44 +12,32 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public abstract class AbstractMMOPlayer implements MMOPlayer {
|
public abstract class AbstractMMOPlayer implements MMOPlayer {
|
||||||
/* All of the persistent data for a player that gets saved and loaded from DB */
|
/* All of the persistent data for a player that gets saved and loaded from DB */
|
||||||
protected final @NotNull PersistentPlayerData persistentPlayerData; //All persistent data is kept here
|
protected final @NotNull MMOPlayerData mmoPlayerData; //All persistent data is kept here
|
||||||
|
|
||||||
/* Managers */
|
/* Managers */
|
||||||
protected final @NotNull ExperienceManager experienceManager;
|
protected final @NotNull ExperienceHandler experienceHandler;
|
||||||
protected final @NotNull CooldownManager cooldownManager;
|
protected final @NotNull CooldownManager cooldownManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new AbstractMMOPlayer for a {@link Player} with default values
|
* Init for online players
|
||||||
*
|
|
||||||
* @param player target player
|
|
||||||
*/
|
|
||||||
public AbstractMMOPlayer(@NotNull Player player) {
|
|
||||||
/* New Data */
|
|
||||||
this(player.getUniqueId(), player.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new AbstractMMOPlayer for a {@link Player} with default values
|
|
||||||
*
|
|
||||||
* @param playerUUID target player's UUID
|
|
||||||
* @param playerName target player's name
|
|
||||||
*/
|
|
||||||
public AbstractMMOPlayer(@NotNull UUID playerUUID, @NotNull String playerName) {
|
|
||||||
/* New Data */
|
|
||||||
this.persistentPlayerData = new PersistentPlayerData(playerUUID, playerName);
|
|
||||||
this.experienceManager = new ExperienceManager(persistentPlayerData);
|
|
||||||
this.cooldownManager = new CooldownManager(persistentPlayerData);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize an AbstractMMOPlayer for {@link PersistentPlayerData}
|
|
||||||
* This will be used for existing data
|
* This will be used for existing data
|
||||||
*
|
*
|
||||||
* @param persistentPlayerData target persistent player data
|
* @param mmoPlayerData player data
|
||||||
*/
|
*/
|
||||||
public AbstractMMOPlayer(@NotNull PersistentPlayerData persistentPlayerData) {
|
public AbstractMMOPlayer(@NotNull Player player, @NotNull MMOPlayerData mmoPlayerData) {
|
||||||
this.persistentPlayerData = persistentPlayerData;
|
this.mmoPlayerData = mmoPlayerData;
|
||||||
this.experienceManager = new ExperienceManager(persistentPlayerData);
|
this.experienceHandler = new OnlineExperienceProcessor(mmoPlayerData);
|
||||||
this.cooldownManager = new CooldownManager(persistentPlayerData);
|
this.cooldownManager = new CooldownManager(mmoPlayerData);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init for offline players
|
||||||
|
*
|
||||||
|
* @param mmoPlayerData player data
|
||||||
|
*/
|
||||||
|
public AbstractMMOPlayer(@NotNull MMOPlayerData mmoPlayerData) {
|
||||||
|
this.mmoPlayerData = mmoPlayerData;
|
||||||
|
this.experienceHandler = new OfflineExperienceProcessor(mmoPlayerData);
|
||||||
|
this.cooldownManager = new CooldownManager(mmoPlayerData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,9 @@ import com.gmail.nossr50.util.experience.MMOExperienceBarManager;
|
|||||||
import com.gmail.nossr50.util.input.AbilityActivationProcessor;
|
import com.gmail.nossr50.util.input.AbilityActivationProcessor;
|
||||||
import com.gmail.nossr50.util.input.SuperAbilityManager;
|
import com.gmail.nossr50.util.input.SuperAbilityManager;
|
||||||
import com.neetgames.mcmmo.exceptions.UnknownSkillException;
|
import com.neetgames.mcmmo.exceptions.UnknownSkillException;
|
||||||
|
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
import com.neetgames.mcmmo.skill.SkillIdentity;
|
import com.neetgames.mcmmo.skill.SkillIdentity;
|
||||||
import net.kyori.adventure.identity.Identified;
|
import net.kyori.adventure.identity.Identified;
|
||||||
import net.kyori.adventure.identity.Identity;
|
import net.kyori.adventure.identity.Identity;
|
||||||
@ -49,6 +51,7 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
//TODO: Update javadocs
|
||||||
public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Identified {
|
public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Identified {
|
||||||
private final @NotNull Player player;
|
private final @NotNull Player player;
|
||||||
private final @NotNull Identity identity;
|
private final @NotNull Identity identity;
|
||||||
@ -91,15 +94,16 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
|||||||
* New
|
* New
|
||||||
* Player
|
* Player
|
||||||
*/
|
*/
|
||||||
super(player);
|
super(new PersistentPlayerData(player.getUniqueId(), player.getName()));
|
||||||
|
|
||||||
UUID uuid = player.getUniqueId();
|
UUID uuid = player.getUniqueId();
|
||||||
identity = Identity.identity(uuid);
|
identity = Identity.identity(uuid);
|
||||||
|
|
||||||
this.player = player;
|
this.player = player;
|
||||||
playerMetadata = new FixedMetadataValue(mcMMO.p, player.getName());
|
playerMetadata = new FixedMetadataValue(mcMMO.p, player.getName());
|
||||||
experienceBarManager = new MMOExperienceBarManager(this, getPersistentPlayerData().getDirtyBarStateMap());
|
experienceBarManager = new MMOExperienceBarManager(this, mmoPlayerData.getBarStateMap());
|
||||||
|
|
||||||
superAbilityManager = new SuperAbilityManager(this);
|
superAbilityManager = new SuperAbilityManager(this, mmoPlayerData);
|
||||||
abilityActivationProcessor = new AbilityActivationProcessor(this);
|
abilityActivationProcessor = new AbilityActivationProcessor(this);
|
||||||
|
|
||||||
debugMode = false; //Debug mode helps solve support issues, players can toggle it on or off
|
debugMode = false; //Debug mode helps solve support issues, players can toggle it on or off
|
||||||
@ -114,7 +118,6 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
|||||||
|
|
||||||
assignParty();
|
assignParty();
|
||||||
|
|
||||||
|
|
||||||
//Update last login
|
//Update last login
|
||||||
updateLastLogin();
|
updateLastLogin();
|
||||||
}
|
}
|
||||||
@ -122,18 +125,17 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
|||||||
/**
|
/**
|
||||||
* Create a new instance based on existing player data
|
* Create a new instance based on existing player data
|
||||||
* @param player target player
|
* @param player target player
|
||||||
* @param persistentPlayerData existing player data
|
* @param mmoPlayerData existing player data
|
||||||
*/
|
*/
|
||||||
public McMMOPlayer(@NotNull Player player, @NotNull PersistentPlayerData persistentPlayerData) {
|
public McMMOPlayer(@NotNull Player player, @NotNull MMOPlayerData mmoPlayerData) {
|
||||||
/*
|
/*
|
||||||
* Existing
|
* Existing
|
||||||
* Player
|
* Player
|
||||||
*/
|
*/
|
||||||
super(persistentPlayerData);
|
super(mmoPlayerData);
|
||||||
UUID uuid = player.getUniqueId();
|
|
||||||
identity = Identity.identity(uuid);
|
|
||||||
playerMetadata = new FixedMetadataValue(mcMMO.p, player.getName());
|
|
||||||
this.player = player;
|
this.player = player;
|
||||||
|
identity = Identity.identity(player.getUniqueId());
|
||||||
|
playerMetadata = new FixedMetadataValue(mcMMO.p, player.getName());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* I'm using this method because it makes code shorter and safer (we don't have to add all SkillTypes manually),
|
* I'm using this method because it makes code shorter and safer (we don't have to add all SkillTypes manually),
|
||||||
@ -150,9 +152,9 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
|||||||
mcMMO.p.getPluginLoader().disablePlugin(mcMMO.p);
|
mcMMO.p.getPluginLoader().disablePlugin(mcMMO.p);
|
||||||
}
|
}
|
||||||
|
|
||||||
superAbilityManager = new SuperAbilityManager(this);
|
superAbilityManager = new SuperAbilityManager(this, mmoPlayerData);
|
||||||
abilityActivationProcessor = new AbilityActivationProcessor(this);
|
abilityActivationProcessor = new AbilityActivationProcessor(this);
|
||||||
experienceBarManager = new MMOExperienceBarManager(this, persistentPlayerData.getBarStateMap());
|
experienceBarManager = new MMOExperienceBarManager(this, this.mmoPlayerData.getBarStateMap());
|
||||||
|
|
||||||
debugMode = false; //Debug mode helps solve support issues, players can toggle it on or off
|
debugMode = false; //Debug mode helps solve support issues, players can toggle it on or off
|
||||||
|
|
||||||
@ -172,7 +174,10 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
|||||||
|
|
||||||
private void assignParty() {
|
private void assignParty() {
|
||||||
if(mcMMO.getPartyManager() != null) {
|
if(mcMMO.getPartyManager() != null) {
|
||||||
|
Party queryParty = mcMMO.getPartyManager().queryParty(player.getUniqueId());
|
||||||
|
|
||||||
|
if(queryParty != null)
|
||||||
|
this.playerPartyRef = queryParty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,7 +185,7 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
|||||||
* Update the last login to the current system time
|
* Update the last login to the current system time
|
||||||
*/
|
*/
|
||||||
private void updateLastLogin() {
|
private void updateLastLogin() {
|
||||||
getPersistentPlayerData().setLastLogin(System.currentTimeMillis());
|
mmoPlayerData.setLastLogin(System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NotNull String getPlayerName() {
|
public @NotNull String getPlayerName() {
|
||||||
@ -555,15 +560,16 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
|||||||
* Whether or not this player is currently spying on all party chat
|
* Whether or not this player is currently spying on all party chat
|
||||||
* @return true if this player is currently spying
|
* @return true if this player is currently spying
|
||||||
*/
|
*/
|
||||||
public boolean isPartyChatSpying() {
|
@Override
|
||||||
return getPersistentPlayerData().isPartyChatSpying();
|
public boolean isChatSpying() {
|
||||||
|
return mmoPlayerData.isPartyChatSpying();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Toggle this player's party chat spying flag
|
* Toggle this player's party chat spying flag
|
||||||
*/
|
*/
|
||||||
public void togglePartyChatSpying() {
|
public void togglePartyChatSpying() {
|
||||||
getPersistentPlayerData().togglePartyChatSpying();
|
mmoPlayerData.togglePartyChatSpying();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -606,36 +612,39 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean inParty() {
|
public boolean inParty() {
|
||||||
return false;
|
return playerPartyRef == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isGodMode() {
|
public boolean isGodMode() {
|
||||||
return false;
|
return godMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public Location getTeleportCommenceLocation() {
|
||||||
|
return teleportCommence;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTeleportCommenceLocation(@Nullable Location location) {
|
||||||
|
teleportCommence = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void actualizeTeleportCommenceLocation() {
|
||||||
|
teleportCommence = getPlayer().getLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isChatSpying() {
|
public void sendMessage(@NotNull String s) {
|
||||||
return false;
|
player.sendMessage(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getProgressInCurrentSkillLevel(@NotNull SkillIdentity skillIdentity) throws UnknownSkillException {
|
public @NotNull Object getServerAPIPlayerImpl() {
|
||||||
return experienceManager.getProgressInCurrentSkillLevel(skillIdentity);
|
return player;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSkillLevel(@NotNull SkillIdentity skillIdentity) throws UnknownSkillException {
|
public void updateXPBar(@NotNull RootSkill rootSkill) {
|
||||||
return experienceManager.getSkillLevel(skillIdentity);
|
experienceBarManager.updateExperienceBar(rootSkill, mcMMO.p);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSkillExperience(@NotNull SkillIdentity skillIdentity) throws UnknownSkillException {
|
|
||||||
return experienceManager.getSkillXpValue(skillIdentity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getExperienceToNextLevel(@NotNull SkillIdentity skillIdentity) throws UnknownSkillException {
|
|
||||||
return experienceManager.getExperienceToNextLevel(skillIdentity);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
package com.gmail.nossr50.datatypes.player;
|
package com.gmail.nossr50.datatypes.player;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.datatypes.skills.CoreSkillConstants;
|
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||||
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
|
|
||||||
import com.gmail.nossr50.datatypes.validation.NonNullRule;
|
import com.gmail.nossr50.datatypes.validation.NonNullRule;
|
||||||
import com.gmail.nossr50.datatypes.validation.PositiveIntegerRule;
|
import com.gmail.nossr50.datatypes.validation.PositiveIntegerRule;
|
||||||
import com.gmail.nossr50.datatypes.validation.Validator;
|
import com.gmail.nossr50.datatypes.validation.Validator;
|
||||||
@ -80,7 +79,7 @@ public class PersistentPlayerData implements MMOPlayerData {
|
|||||||
|
|
||||||
//Core skills
|
//Core skills
|
||||||
//TODO: Don't store values for disabled skills
|
//TODO: Don't store values for disabled skills
|
||||||
for(RootSkill rootSkill : CoreSkillConstants.getImmutableCoreRootSkillSet()) {
|
for(RootSkill rootSkill : CoreSkills.getImmutableCoreRootSkillSet()) {
|
||||||
skillLevelValues.put(rootSkill, AdvancedConfig.getInstance().getStartingLevel());
|
skillLevelValues.put(rootSkill, AdvancedConfig.getInstance().getStartingLevel());
|
||||||
skillExperienceValues.put(rootSkill, 0F);
|
skillExperienceValues.put(rootSkill, 0F);
|
||||||
}
|
}
|
||||||
|
@ -1,174 +1,58 @@
|
|||||||
package com.gmail.nossr50.datatypes.player;
|
package com.gmail.nossr50.datatypes.player;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.ExperienceManager;
|
import com.neetgames.mcmmo.exceptions.UnknownSkillException;
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.neetgames.mcmmo.experience.ExperienceHandler;
|
||||||
import com.gmail.nossr50.mcMMO;
|
|
||||||
import com.neetgames.mcmmo.MobHealthBarType;
|
|
||||||
import com.neetgames.mcmmo.player.MMOPlayerData;
|
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||||
import com.neetgames.mcmmo.player.OfflineMMOPlayer;
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
import com.neetgames.mcmmo.skill.Skill;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class PlayerProfile extends AbstractMMOPlayer {
|
public class PlayerProfile extends AbstractMMOPlayer {
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link PlayerProfile} for a {@link Player} with default values
|
|
||||||
*
|
|
||||||
* @param player target player
|
|
||||||
*/
|
|
||||||
public PlayerProfile(@NotNull Player player) {
|
|
||||||
super(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link PlayerProfile} for a {@link Player} with default values
|
|
||||||
*
|
|
||||||
* @param playerUUID target player's UUID
|
|
||||||
* @param playerName target player's name
|
|
||||||
*/
|
|
||||||
public PlayerProfile(@NotNull UUID playerUUID, @NotNull String playerName) {
|
|
||||||
super(playerUUID, playerName);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize an {@link PlayerProfile} for {@link PersistentPlayerData}
|
* Initialize an {@link PlayerProfile} for {@link PersistentPlayerData}
|
||||||
* This will be used for existing data
|
* This will be used for existing data
|
||||||
*
|
*
|
||||||
* @param persistentPlayerData target persistent player data
|
* @param mmoPlayerData target persistent player data
|
||||||
*/
|
*/
|
||||||
public PlayerProfile(@NotNull PersistentPlayerData persistentPlayerData) {
|
public PlayerProfile(@NotNull MMOPlayerData mmoPlayerData) {
|
||||||
super(persistentPlayerData);
|
super(mmoPlayerData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the saved player name for this profile
|
|
||||||
* @return the saved player name for this profile
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public @NotNull String getPlayerName() {
|
|
||||||
return getPersistentPlayerData().getPlayerName();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the current {@link MobHealthBarType} for this profile
|
|
||||||
* @return the mob health bar setting for this profile
|
|
||||||
*/
|
|
||||||
public @NotNull MobHealthBarType getMobHealthBarType() {
|
|
||||||
return getPersistentPlayerData().getMobHealthBarType();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the {@link MobHealthBarType} for this profile
|
|
||||||
* @param mobHealthbarType desired mob health bar type
|
|
||||||
*/
|
|
||||||
public void setMobHealthBarType(@NotNull MobHealthBarType mobHealthbarType) {
|
|
||||||
getPersistentPlayerData().setMobHealthBarType(mobHealthbarType);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The number of times scoreboard tips have been shown to this profile
|
|
||||||
* @return the scoreboard tips view count
|
|
||||||
*/
|
|
||||||
public int getScoreboardTipsShown() {
|
|
||||||
return getPersistentPlayerData().getScoreboardTipsShown();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Replace the scoreboard view count
|
|
||||||
* @param scoreboardTipsShown new value
|
|
||||||
*/
|
|
||||||
public void setScoreboardTipsShown(int scoreboardTipsShown) {
|
|
||||||
getPersistentPlayerData().setScoreboardTipsShown(scoreboardTipsShown);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Increments the scoreboard tip view count by 1
|
|
||||||
*/
|
|
||||||
public void increaseTipsShown() {
|
|
||||||
setScoreboardTipsShown(getScoreboardTipsShown() + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves a reference to the {@link PersistentPlayerData} for this profile
|
|
||||||
* @return the persistent data for this profile
|
|
||||||
*/
|
|
||||||
public @NotNull PersistentPlayerData getPersistentPlayerData() {
|
|
||||||
return persistentPlayerData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Invert the current value of the party chat spy toggle
|
|
||||||
*/
|
|
||||||
public void togglePartyChatSpying() {
|
|
||||||
persistentPlayerData.togglePartyChatSpying();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the {@link ExperienceManager} for this profile
|
|
||||||
* @return the experience manager for this profile
|
|
||||||
*/
|
|
||||||
public @NotNull ExperienceManager getExperienceManager() {
|
|
||||||
return experienceManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the {@link CooldownManager} for this profile
|
|
||||||
* @return the cooldown manager for this profile
|
|
||||||
*/
|
|
||||||
public @NotNull CooldownManager getCooldownManager() {
|
|
||||||
return cooldownManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attempt to get a party for this PlayerProfile
|
|
||||||
* @return get a party for this PlayerProfile
|
|
||||||
*/
|
|
||||||
public @Nullable Party getParty(){
|
|
||||||
//TODO: This can be optimized
|
|
||||||
return mcMMO.getPartyManager().queryParty(persistentPlayerData.getPlayerUUID());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether or not this player is excluded from leaderboards
|
|
||||||
* @return true if the player is excluded from leaderboards
|
|
||||||
*/
|
|
||||||
public boolean isLeaderBoardExcluded() {
|
|
||||||
return persistentPlayerData.isLeaderBoardExcluded();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the saved {@link UUID} for this profile
|
|
||||||
* @return the saved {@link UUID} for this profile
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull UUID getUUID() {
|
public @NotNull UUID getUUID() {
|
||||||
return getPersistentPlayerData().getPlayerUUID();
|
return mmoPlayerData.getPlayerUUID();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getPlayerName() {
|
||||||
|
return mmoPlayerData.getPlayerName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getPowerLevel() {
|
public int getPowerLevel() {
|
||||||
return experienceManager.getPowerLevel();
|
return experienceHandler.getPowerLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSkillLevel(@NotNull Skill skill) {
|
public int getSkillLevel(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||||
return 0;
|
return experienceHandler.getSkillLevel(rootSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSkillExperience(@NotNull Skill skill) {
|
public int getSkillExperience(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||||
return persistentPlayerData;
|
return experienceHandler.getSkillXpValue(rootSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getExperienceToNextLevel() {
|
public int getExperienceToNextLevel(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||||
return 0;
|
return experienceHandler.getExperienceToNextLevel(rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getProgressInCurrentSkillLevel(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||||
|
return experienceHandler.getProgressInCurrentSkillLevel(rootSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -176,8 +60,13 @@ public class PlayerProfile extends AbstractMMOPlayer {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull ExperienceHandler getExperienceHandler() {
|
||||||
|
return experienceHandler;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull MMOPlayerData getMMOPlayerData() {
|
public @NotNull MMOPlayerData getMMOPlayerData() {
|
||||||
return persistentPlayerData;
|
return mmoPlayerData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,151 +0,0 @@
|
|||||||
package com.gmail.nossr50.datatypes.skills;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
|
||||||
import com.neetgames.mcmmo.skill.RootSkill;
|
|
||||||
import com.neetgames.mcmmo.skill.Skill;
|
|
||||||
import com.neetgames.mcmmo.skill.SkillIdentity;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class CoreSkillConstants {
|
|
||||||
|
|
||||||
private static final @NotNull ImmutableSet<RootSkill> CORE_ROOT_SKILLS_IMMUTABLE_SET;
|
|
||||||
private static final @NotNull ImmutableSet<RootSkill> CORE_CHILD_SKILLS;
|
|
||||||
|
|
||||||
public static final @NotNull CoreRootSkill ACROBATICS, ALCHEMY, ARCHERY, AXES, EXCAVATION,
|
|
||||||
FISHING, HERBALISM, MINING, REPAIR, SALVAGE, SMELTING, SWORDS, TAMING, UNARMED,
|
|
||||||
WOODCUTTING, TRIDENTS, CROSSBOWS;
|
|
||||||
|
|
||||||
public static final @NotNull SkillIdentity ACROBATICS_ID, ALCHEMY_ID, ARCHERY_ID, AXES_ID, EXCAVATION_ID,
|
|
||||||
FISHING_ID, HERBALISM_ID, MINING_ID, REPAIR_ID, SALVAGE_ID, SMELTING_ID, SWORDS_ID, TAMING_ID, UNARMED_ID,
|
|
||||||
WOODCUTTING_ID, TRIDENTS_ID, CROSSBOWS_ID;
|
|
||||||
|
|
||||||
static {
|
|
||||||
HashSet<CoreRootSkill> rootSkillSet = new HashSet<>();
|
|
||||||
HashSet<CoreRootSkill> childSkillSet = new HashSet<>();
|
|
||||||
|
|
||||||
ACROBATICS = new CoreRootSkill("acrobatics");
|
|
||||||
ACROBATICS_ID = ACROBATICS.getSkillIdentity();
|
|
||||||
|
|
||||||
ALCHEMY = new CoreRootSkill("alchemy");
|
|
||||||
ALCHEMY_ID = ALCHEMY.getSkillIdentity();
|
|
||||||
|
|
||||||
ARCHERY = new CoreRootSkill("archery");
|
|
||||||
ARCHERY_ID = ARCHERY.getSkillIdentity();
|
|
||||||
|
|
||||||
AXES = new CoreRootSkill("axes");
|
|
||||||
AXES_ID = AXES.getSkillIdentity();
|
|
||||||
|
|
||||||
EXCAVATION = new CoreRootSkill("excavation");
|
|
||||||
EXCAVATION_ID = EXCAVATION.getSkillIdentity();
|
|
||||||
|
|
||||||
FISHING = new CoreRootSkill("fishing");
|
|
||||||
FISHING_ID = FISHING.getSkillIdentity();
|
|
||||||
|
|
||||||
HERBALISM = new CoreRootSkill("herbalism");
|
|
||||||
HERBALISM_ID = HERBALISM.getSkillIdentity();
|
|
||||||
|
|
||||||
MINING = new CoreRootSkill("mining");
|
|
||||||
MINING_ID = MINING.getSkillIdentity();
|
|
||||||
|
|
||||||
REPAIR = new CoreRootSkill("repair");
|
|
||||||
REPAIR_ID = REPAIR.getSkillIdentity();
|
|
||||||
|
|
||||||
SALVAGE = new CoreRootSkill("salvage");
|
|
||||||
SALVAGE_ID = SALVAGE.getSkillIdentity();
|
|
||||||
|
|
||||||
SMELTING = new CoreRootSkill("smelting");
|
|
||||||
SMELTING_ID = SMELTING.getSkillIdentity();
|
|
||||||
|
|
||||||
SWORDS = new CoreRootSkill("swords");
|
|
||||||
SWORDS_ID = SWORDS.getSkillIdentity();
|
|
||||||
|
|
||||||
TAMING = new CoreRootSkill("taming");
|
|
||||||
TAMING_ID = TAMING.getSkillIdentity();
|
|
||||||
|
|
||||||
UNARMED = new CoreRootSkill("unarmed");
|
|
||||||
UNARMED_ID = UNARMED.getSkillIdentity();
|
|
||||||
|
|
||||||
WOODCUTTING = new CoreRootSkill("woodcutting");
|
|
||||||
WOODCUTTING_ID = WOODCUTTING.getSkillIdentity();
|
|
||||||
|
|
||||||
TRIDENTS = new CoreRootSkill("tridents");
|
|
||||||
TRIDENTS_ID = TRIDENTS.getSkillIdentity();
|
|
||||||
|
|
||||||
CROSSBOWS = new CoreRootSkill("crossbows");
|
|
||||||
CROSSBOWS_ID = CROSSBOWS.getSkillIdentity();
|
|
||||||
|
|
||||||
//Child skills (soon to be removed)
|
|
||||||
childSkillSet.add(SMELTING);
|
|
||||||
childSkillSet.add(SALVAGE);
|
|
||||||
|
|
||||||
rootSkillSet.add(ACROBATICS);
|
|
||||||
rootSkillSet.add(ALCHEMY);
|
|
||||||
rootSkillSet.add(ARCHERY);
|
|
||||||
rootSkillSet.add(AXES);
|
|
||||||
rootSkillSet.add(EXCAVATION);
|
|
||||||
rootSkillSet.add(FISHING);
|
|
||||||
rootSkillSet.add(HERBALISM);
|
|
||||||
rootSkillSet.add(MINING);
|
|
||||||
rootSkillSet.add(REPAIR);
|
|
||||||
rootSkillSet.add(SALVAGE);
|
|
||||||
rootSkillSet.add(SMELTING);
|
|
||||||
rootSkillSet.add(SWORDS);
|
|
||||||
rootSkillSet.add(TAMING);
|
|
||||||
rootSkillSet.add(UNARMED);
|
|
||||||
rootSkillSet.add(WOODCUTTING);
|
|
||||||
rootSkillSet.add(TRIDENTS);
|
|
||||||
rootSkillSet.add(CROSSBOWS);
|
|
||||||
|
|
||||||
CORE_ROOT_SKILLS_IMMUTABLE_SET = ImmutableSet.copyOf(rootSkillSet);
|
|
||||||
CORE_CHILD_SKILLS = ImmutableSet.copyOf(childSkillSet);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a set of built in skills for mcMMO
|
|
||||||
* No guarantees for whether or not the skills are registered or active or inactive
|
|
||||||
*
|
|
||||||
* @return a set of all root skills built into mcMMO
|
|
||||||
*/
|
|
||||||
public static @NotNull Set<RootSkill> getImmutableCoreRootSkillSet() {
|
|
||||||
return CORE_ROOT_SKILLS_IMMUTABLE_SET;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a set of built in skills for mcMMO which are child skills
|
|
||||||
* No guarantees for whether or not the skills are registered or active or inactive
|
|
||||||
*
|
|
||||||
* @return a set of all "child" root skills for mcMMO
|
|
||||||
* @deprecated child skills will be removed in an upcoming update
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static @NotNull Set<RootSkill> getChildSkills() {
|
|
||||||
return CORE_CHILD_SKILLS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether or not a skill is considered a child skill
|
|
||||||
* @param skillIdentity target skill identity
|
|
||||||
* @return true if the skill identity belongs to a core "child" root skill
|
|
||||||
*/
|
|
||||||
public static boolean isChildSkill(@NotNull SkillIdentity skillIdentity) {
|
|
||||||
for(RootSkill rootSkill : CORE_CHILD_SKILLS) {
|
|
||||||
if(rootSkill.getSkillIdentity().equals(skillIdentity)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether or not a skill is considered a child skill
|
|
||||||
* @param skill target skill
|
|
||||||
* @return true if the skill identity belongs to a core "child" root skill
|
|
||||||
*/
|
|
||||||
public static boolean isChildSkill(@NotNull Skill skill) {
|
|
||||||
return isChildSkill(skill.getSkillIdentity());
|
|
||||||
}
|
|
||||||
}
|
|
224
src/main/java/com/gmail/nossr50/datatypes/skills/CoreSkills.java
Normal file
224
src/main/java/com/gmail/nossr50/datatypes/skills/CoreSkills.java
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
package com.gmail.nossr50.datatypes.skills;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.neetgames.mcmmo.exceptions.InvalidSkillException;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
|
import com.neetgames.mcmmo.skill.Skill;
|
||||||
|
import com.neetgames.mcmmo.skill.SkillIdentity;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class CoreSkills {
|
||||||
|
|
||||||
|
private static final @NotNull ImmutableSet<RootSkill> CORE_ROOT_SKILLS_IMMUTABLE_SET;
|
||||||
|
private static final @NotNull ImmutableSet<RootSkill> CORE_CHILD_SKILLS;
|
||||||
|
|
||||||
|
public static final @NotNull CoreRootSkill ACROBATICS_CS, ALCHEMY_CS, ARCHERY_CS, AXES_CS, EXCAVATION_CS,
|
||||||
|
FISHING_CS, HERBALISM_CS, MINING_CS, REPAIR_CS, SALVAGE_CS, SMELTING_CS, SWORDS_CS, TAMING_CS, UNARMED_CS,
|
||||||
|
WOODCUTTING_CS, TRIDENTS_CS, CROSSBOWS_CS;
|
||||||
|
|
||||||
|
public static final @NotNull SkillIdentity ACROBATICS_ID, ALCHEMY_ID, ARCHERY_ID, AXES_ID, EXCAVATION_ID,
|
||||||
|
FISHING_ID, HERBALISM_ID, MINING_ID, REPAIR_ID, SALVAGE_ID, SMELTING_ID, SWORDS_ID, TAMING_ID, UNARMED_ID,
|
||||||
|
WOODCUTTING_ID, TRIDENTS_ID, CROSSBOWS_ID;
|
||||||
|
|
||||||
|
private static @NotNull
|
||||||
|
final HackySkillMappings hackySkillMappings = new HackySkillMappings();
|
||||||
|
|
||||||
|
static {
|
||||||
|
HashSet<CoreRootSkill> rootSkillSet = new HashSet<>();
|
||||||
|
HashSet<CoreRootSkill> childSkillSet = new HashSet<>();
|
||||||
|
|
||||||
|
ACROBATICS_CS = new CoreRootSkill("acrobatics");
|
||||||
|
ACROBATICS_ID = ACROBATICS_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
ALCHEMY_CS = new CoreRootSkill("alchemy");
|
||||||
|
ALCHEMY_ID = ALCHEMY_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
ARCHERY_CS = new CoreRootSkill("archery");
|
||||||
|
ARCHERY_ID = ARCHERY_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
AXES_CS = new CoreRootSkill("axes");
|
||||||
|
AXES_ID = AXES_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
EXCAVATION_CS = new CoreRootSkill("excavation");
|
||||||
|
EXCAVATION_ID = EXCAVATION_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
FISHING_CS = new CoreRootSkill("fishing");
|
||||||
|
FISHING_ID = FISHING_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
HERBALISM_CS = new CoreRootSkill("herbalism");
|
||||||
|
HERBALISM_ID = HERBALISM_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
MINING_CS = new CoreRootSkill("mining");
|
||||||
|
MINING_ID = MINING_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
REPAIR_CS = new CoreRootSkill("repair");
|
||||||
|
REPAIR_ID = REPAIR_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
SALVAGE_CS = new CoreRootSkill("salvage");
|
||||||
|
SALVAGE_ID = SALVAGE_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
SMELTING_CS = new CoreRootSkill("smelting");
|
||||||
|
SMELTING_ID = SMELTING_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
SWORDS_CS = new CoreRootSkill("swords");
|
||||||
|
SWORDS_ID = SWORDS_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
TAMING_CS = new CoreRootSkill("taming");
|
||||||
|
TAMING_ID = TAMING_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
UNARMED_CS = new CoreRootSkill("unarmed");
|
||||||
|
UNARMED_ID = UNARMED_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
WOODCUTTING_CS = new CoreRootSkill("woodcutting");
|
||||||
|
WOODCUTTING_ID = WOODCUTTING_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
TRIDENTS_CS = new CoreRootSkill("tridents");
|
||||||
|
TRIDENTS_ID = TRIDENTS_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
CROSSBOWS_CS = new CoreRootSkill("crossbows");
|
||||||
|
CROSSBOWS_ID = CROSSBOWS_CS.getSkillIdentity();
|
||||||
|
|
||||||
|
//Child skills (soon to be removed)
|
||||||
|
childSkillSet.add(SMELTING_CS);
|
||||||
|
childSkillSet.add(SALVAGE_CS);
|
||||||
|
|
||||||
|
rootSkillSet.add(ACROBATICS_CS);
|
||||||
|
rootSkillSet.add(ALCHEMY_CS);
|
||||||
|
rootSkillSet.add(ARCHERY_CS);
|
||||||
|
rootSkillSet.add(AXES_CS);
|
||||||
|
rootSkillSet.add(EXCAVATION_CS);
|
||||||
|
rootSkillSet.add(FISHING_CS);
|
||||||
|
rootSkillSet.add(HERBALISM_CS);
|
||||||
|
rootSkillSet.add(MINING_CS);
|
||||||
|
rootSkillSet.add(REPAIR_CS);
|
||||||
|
rootSkillSet.add(SALVAGE_CS);
|
||||||
|
rootSkillSet.add(SMELTING_CS);
|
||||||
|
rootSkillSet.add(SWORDS_CS);
|
||||||
|
rootSkillSet.add(TAMING_CS);
|
||||||
|
rootSkillSet.add(UNARMED_CS);
|
||||||
|
rootSkillSet.add(WOODCUTTING_CS);
|
||||||
|
rootSkillSet.add(TRIDENTS_CS);
|
||||||
|
rootSkillSet.add(CROSSBOWS_CS);
|
||||||
|
|
||||||
|
CORE_ROOT_SKILLS_IMMUTABLE_SET = ImmutableSet.copyOf(rootSkillSet);
|
||||||
|
CORE_CHILD_SKILLS = ImmutableSet.copyOf(childSkillSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a set of built in skills for mcMMO
|
||||||
|
* No guarantees for whether or not the skills are registered or active or inactive
|
||||||
|
*
|
||||||
|
* @return a set of all root skills built into mcMMO
|
||||||
|
*/
|
||||||
|
public static @NotNull Set<RootSkill> getImmutableCoreRootSkillSet() {
|
||||||
|
return CORE_ROOT_SKILLS_IMMUTABLE_SET;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a set of built in skills for mcMMO which are child skills
|
||||||
|
* No guarantees for whether or not the skills are registered or active or inactive
|
||||||
|
*
|
||||||
|
* @return a set of all "child" root skills for mcMMO
|
||||||
|
* @deprecated child skills will be removed in an upcoming update
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public static @NotNull Set<RootSkill> getChildSkills() {
|
||||||
|
return CORE_CHILD_SKILLS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether or not a skill is considered a child skill
|
||||||
|
* @param rootSkill target skill
|
||||||
|
* @return true if the skill identity belongs to a core "child" root skill
|
||||||
|
*/
|
||||||
|
public static boolean isChildSkill(@NotNull RootSkill rootSkill) {
|
||||||
|
return CORE_CHILD_SKILLS.contains(rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public static @NotNull RootSkill getSkill(@NotNull PrimarySkillType primarySkillType) {
|
||||||
|
if(!hackySkillMappings.init) {
|
||||||
|
hackySkillMappings.initMappings();
|
||||||
|
}
|
||||||
|
|
||||||
|
return hackySkillMappings.primaryToRootMap.get(primarySkillType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public static @NotNull PrimarySkillType getSkill(@NotNull RootSkill rootSkill) {
|
||||||
|
if(!hackySkillMappings.init) {
|
||||||
|
hackySkillMappings.initMappings();
|
||||||
|
}
|
||||||
|
|
||||||
|
return hackySkillMappings.rootToPrimaryMap.get(rootSkill);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static class HackySkillMappings {
|
||||||
|
@NotNull Map<PrimarySkillType, RootSkill> primaryToRootMap = new HashMap<>();
|
||||||
|
@NotNull Map<RootSkill, PrimarySkillType> rootToPrimaryMap = new HashMap<>();
|
||||||
|
boolean init = false;
|
||||||
|
|
||||||
|
protected void initMappings() {
|
||||||
|
//TODO: add tests
|
||||||
|
//Can't init these from the get go as PrimarySkillType does some stuff and it would be race condition hell
|
||||||
|
primaryToRootMap.put(PrimarySkillType.ACROBATICS, ACROBATICS_CS);
|
||||||
|
rootToPrimaryMap.put(ACROBATICS_CS, PrimarySkillType.ACROBATICS);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.ALCHEMY, ALCHEMY_CS);
|
||||||
|
rootToPrimaryMap.put(ALCHEMY_CS, PrimarySkillType.ALCHEMY);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.ARCHERY, ARCHERY_CS);
|
||||||
|
rootToPrimaryMap.put(ARCHERY_CS, PrimarySkillType.ARCHERY);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.AXES, AXES_CS);
|
||||||
|
rootToPrimaryMap.put(AXES_CS, PrimarySkillType.AXES);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.EXCAVATION, EXCAVATION_CS);
|
||||||
|
rootToPrimaryMap.put(EXCAVATION_CS, PrimarySkillType.EXCAVATION);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.FISHING, FISHING_CS);
|
||||||
|
rootToPrimaryMap.put(FISHING_CS, PrimarySkillType.FISHING);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.HERBALISM, HERBALISM_CS);
|
||||||
|
rootToPrimaryMap.put(HERBALISM_CS, PrimarySkillType.HERBALISM);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.MINING, MINING_CS);
|
||||||
|
rootToPrimaryMap.put(MINING_CS, PrimarySkillType.MINING);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.REPAIR, REPAIR_CS);
|
||||||
|
rootToPrimaryMap.put(REPAIR_CS, PrimarySkillType.REPAIR);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.SALVAGE, SALVAGE_CS);
|
||||||
|
rootToPrimaryMap.put(SALVAGE_CS, PrimarySkillType.SALVAGE);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.SMELTING, SMELTING_CS);
|
||||||
|
rootToPrimaryMap.put(SMELTING_CS, PrimarySkillType.SMELTING);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.SWORDS, SWORDS_CS);
|
||||||
|
rootToPrimaryMap.put(SWORDS_CS, PrimarySkillType.SWORDS);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.TAMING, TAMING_CS);
|
||||||
|
rootToPrimaryMap.put(TAMING_CS, PrimarySkillType.TAMING);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.UNARMED, UNARMED_CS);
|
||||||
|
rootToPrimaryMap.put(UNARMED_CS, PrimarySkillType.UNARMED);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.WOODCUTTING, WOODCUTTING_CS);
|
||||||
|
rootToPrimaryMap.put(WOODCUTTING_CS, PrimarySkillType.WOODCUTTING);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.TRIDENTS, TRIDENTS_CS);
|
||||||
|
rootToPrimaryMap.put(TRIDENTS_CS, PrimarySkillType.TRIDENTS);
|
||||||
|
|
||||||
|
primaryToRootMap.put(PrimarySkillType.CROSSBOWS, CROSSBOWS_CS);
|
||||||
|
rootToPrimaryMap.put(CROSSBOWS_CS, PrimarySkillType.CROSSBOWS);
|
||||||
|
|
||||||
|
init = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -143,7 +143,7 @@ public class SkillRegisterImpl implements SkillRegister {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void registerCoreSkills() {
|
private void registerCoreSkills() {
|
||||||
for(RootSkill rootSkill : CoreSkillConstants.getImmutableCoreRootSkillSet()) {
|
for(RootSkill rootSkill : CoreSkills.getImmutableCoreRootSkillSet()) {
|
||||||
mcMMO.p.getLogger().info("Registering core skill: "+rootSkill.getSkillName());
|
mcMMO.p.getLogger().info("Registering core skill: "+rootSkill.getSkillName());
|
||||||
registerSkill(rootSkill);
|
registerSkill(rootSkill);
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ package com.gmail.nossr50.datatypes.skills.subskills.acrobatics;
|
|||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
@ -120,7 +119,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
|
|
||||||
/* Values related to the player */
|
/* Values related to the player */
|
||||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
||||||
float skillValue = mmoPlayer.getExperienceManager().getSkillLevel(getPrimarySkill());
|
float skillValue = mmoPlayer.getExperienceHandler().getSkillLevel(getPrimarySkill());
|
||||||
boolean isLucky = Permissions.lucky(player, getPrimarySkill());
|
boolean isLucky = Permissions.lucky(player, getPrimarySkill());
|
||||||
|
|
||||||
String[] rollStrings = RandomChanceUtil.calculateAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ACROBATICS_ROLL);
|
String[] rollStrings = RandomChanceUtil.calculateAbilityDisplayValues(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, player, SubSkillType.ACROBATICS_ROLL);
|
||||||
@ -188,7 +187,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
*/
|
*/
|
||||||
private double rollCheck(Player player, OnlineMMOPlayer mmoPlayer, double damage) {
|
private double rollCheck(Player player, OnlineMMOPlayer mmoPlayer, double damage) {
|
||||||
|
|
||||||
int skillLevel = mmoPlayer.getExperienceManager().getSkillLevel(getPrimarySkill());
|
int skillLevel = mmoPlayer.getExperienceHandler().getSkillLevel(getPrimarySkill());
|
||||||
|
|
||||||
if (player.isSneaking()) {
|
if (player.isSneaking()) {
|
||||||
return gracefulRollCheck(player, mmoPlayer, damage, skillLevel);
|
return gracefulRollCheck(player, mmoPlayer, damage, skillLevel);
|
||||||
@ -203,7 +202,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
//player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Text"));
|
//player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Text"));
|
||||||
|
|
||||||
//if (!SkillUtils.cooldownExpired((long) mmoPlayer.getTeleportATS(), Config.getInstance().getXPAfterTeleportCooldown())) {
|
//if (!SkillUtils.cooldownExpired((long) mmoPlayer.getTeleportATS(), Config.getInstance().getXPAfterTeleportCooldown())) {
|
||||||
if(!isExploiting(player) && mmoPlayer.getAcrobaticsManager().canGainRollXP())
|
if(!isExploiting(player) && ((McMMOPlayer) (mmoPlayer)).getAcrobaticsManager().canGainRollXP())
|
||||||
SkillUtils.applyXpGain(mmoPlayer, getPrimarySkill(), calculateRollXP(player, damage, true), XPGainReason.PVE);
|
SkillUtils.applyXpGain(mmoPlayer, getPrimarySkill(), calculateRollXP(player, damage, true), XPGainReason.PVE);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
@ -212,7 +211,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
}
|
}
|
||||||
else if (!isFatal(player, damage)) {
|
else if (!isFatal(player, damage)) {
|
||||||
//if (!SkillUtils.cooldownExpired((long) mmoPlayer.getTeleportATS(), Config.getInstance().getXPAfterTeleportCooldown())) {
|
//if (!SkillUtils.cooldownExpired((long) mmoPlayer.getTeleportATS(), Config.getInstance().getXPAfterTeleportCooldown())) {
|
||||||
if(!isExploiting(player) && mmoPlayer.getAcrobaticsManager().canGainRollXP())
|
if(!isExploiting(player) && ((McMMOPlayer) (mmoPlayer)).getAcrobaticsManager().canGainRollXP())
|
||||||
SkillUtils.applyXpGain(mmoPlayer, getPrimarySkill(), calculateRollXP(player, damage, false), XPGainReason.PVE);
|
SkillUtils.applyXpGain(mmoPlayer, getPrimarySkill(), calculateRollXP(player, damage, false), XPGainReason.PVE);
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
@ -222,7 +221,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int getActivationChance(OnlineMMOPlayer mmoPlayer) {
|
private int getActivationChance(OnlineMMOPlayer mmoPlayer) {
|
||||||
return PerksUtils.handleLuckyPerks(mmoPlayer.getPlayer(), getPrimarySkill());
|
return PerksUtils.handleLuckyPerks(Misc.adaptPlayer(mmoPlayer), getPrimarySkill());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -242,14 +241,14 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
{
|
{
|
||||||
NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE, "Acrobatics.Ability.Proc");
|
NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE, "Acrobatics.Ability.Proc");
|
||||||
SoundManager.sendCategorizedSound(player, player.getLocation(), SoundType.ROLL_ACTIVATED, SoundCategory.PLAYERS,0.5F);
|
SoundManager.sendCategorizedSound(player, player.getLocation(), SoundType.ROLL_ACTIVATED, SoundCategory.PLAYERS,0.5F);
|
||||||
if(!isExploiting(player) && mmoPlayer.getAcrobaticsManager().canGainRollXP())
|
if(!isExploiting(player) && ((McMMOPlayer) (mmoPlayer)).getAcrobaticsManager().canGainRollXP())
|
||||||
SkillUtils.applyXpGain(mmoPlayer, getPrimarySkill(), calculateRollXP(player, damage, true), XPGainReason.PVE);
|
SkillUtils.applyXpGain(mmoPlayer, getPrimarySkill(), calculateRollXP(player, damage, true), XPGainReason.PVE);
|
||||||
|
|
||||||
addFallLocation(player);
|
addFallLocation(player);
|
||||||
return modifiedDamage;
|
return modifiedDamage;
|
||||||
}
|
}
|
||||||
else if (!isFatal(player, damage)) {
|
else if (!isFatal(player, damage)) {
|
||||||
if(!isExploiting(player) && mmoPlayer.getAcrobaticsManager().canGainRollXP())
|
if(!isExploiting(player) && ((McMMOPlayer) (mmoPlayer)).getAcrobaticsManager().canGainRollXP())
|
||||||
SkillUtils.applyXpGain(mmoPlayer, getPrimarySkill(), calculateRollXP(player, damage, false), XPGainReason.PVE);
|
SkillUtils.applyXpGain(mmoPlayer, getPrimarySkill(), calculateRollXP(player, damage, false), XPGainReason.PVE);
|
||||||
|
|
||||||
addFallLocation(player);
|
addFallLocation(player);
|
||||||
@ -273,7 +272,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
|
|
||||||
if (ItemUtils.hasItemInEitherHand(player, Material.ENDER_PEARL) || player.isInsideVehicle()) {
|
if (ItemUtils.hasItemInEitherHand(player, Material.ENDER_PEARL) || player.isInsideVehicle()) {
|
||||||
if(mmoPlayer.isDebugMode()) {
|
if(mmoPlayer.isDebugMode()) {
|
||||||
mmoPlayer.getPlayer().sendMessage("Acrobatics XP Prevented: Ender Pearl or Inside Vehicle");
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Acrobatics XP Prevented: Ender Pearl or Inside Vehicle");
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -281,7 +280,7 @@ public class Roll extends AcrobaticsSubSkill {
|
|||||||
if(mcMMO.getUserManager().queryPlayer(player).getAcrobaticsManager().hasFallenInLocationBefore(getBlockLocation(player)))
|
if(mcMMO.getUserManager().queryPlayer(player).getAcrobaticsManager().hasFallenInLocationBefore(getBlockLocation(player)))
|
||||||
{
|
{
|
||||||
if(mmoPlayer.isDebugMode()) {
|
if(mmoPlayer.isDebugMode()) {
|
||||||
mmoPlayer.getPlayer().sendMessage("Acrobatics XP Prevented: Fallen in location before");
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Acrobatics XP Prevented: Fallen in location before");
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.events.experience;
|
package com.gmail.nossr50.events.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.events.experience;
|
package com.gmail.nossr50.events.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.events.experience;
|
package com.gmail.nossr50.events.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.events.experience;
|
package com.gmail.nossr50.events.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.events.experience;
|
package com.gmail.nossr50.events.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
@ -226,10 +226,10 @@ public class BlockListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (blockState.getType() == Repair.anvilMaterial && PrimarySkillType.REPAIR.getPermissions(player)) {
|
if (blockState.getType() == Repair.anvilMaterial && PrimarySkillType.REPAIR.getPermissions(player)) {
|
||||||
mmoPlayer.getRepairManager().placedAnvilCheck();
|
((McMMOPlayer) (mmoPlayer)).getRepairManager().placedAnvilCheck();
|
||||||
}
|
}
|
||||||
else if (blockState.getType() == Salvage.anvilMaterial && PrimarySkillType.SALVAGE.getPermissions(player)) {
|
else if (blockState.getType() == Salvage.anvilMaterial && PrimarySkillType.SALVAGE.getPermissions(player)) {
|
||||||
mmoPlayer.getSalvageManager().placedAnvilCheck();
|
((McMMOPlayer) (mmoPlayer)).getSalvageManager().placedAnvilCheck();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,7 +313,7 @@ public class BlockListener implements Listener {
|
|||||||
|
|
||||||
/* HERBALISM */
|
/* HERBALISM */
|
||||||
if (BlockUtils.affectedByGreenTerra(blockState)) {
|
if (BlockUtils.affectedByGreenTerra(blockState)) {
|
||||||
HerbalismManager herbalismManager = mmoPlayer.getHerbalismManager();
|
HerbalismManager herbalismManager = ((McMMOPlayer) (mmoPlayer)).getHerbalismManager();
|
||||||
|
|
||||||
/* Green Terra */
|
/* Green Terra */
|
||||||
if (herbalismManager.canActivateAbility()) {
|
if (herbalismManager.canActivateAbility()) {
|
||||||
@ -336,13 +336,13 @@ public class BlockListener implements Listener {
|
|||||||
|
|
||||||
/* MINING */
|
/* MINING */
|
||||||
else if (BlockUtils.affectedBySuperBreaker(blockState) && ItemUtils.isPickaxe(heldItem) && PrimarySkillType.MINING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) {
|
else if (BlockUtils.affectedBySuperBreaker(blockState) && ItemUtils.isPickaxe(heldItem) && PrimarySkillType.MINING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) {
|
||||||
MiningManager miningManager = mmoPlayer.getMiningManager();
|
MiningManager miningManager = ((McMMOPlayer) (mmoPlayer)).getMiningManager();
|
||||||
miningManager.miningBlockCheck(blockState);
|
miningManager.miningBlockCheck(blockState);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* WOOD CUTTING */
|
/* WOOD CUTTING */
|
||||||
else if (BlockUtils.hasWoodcuttingXP(blockState) && ItemUtils.isAxe(heldItem) && PrimarySkillType.WOODCUTTING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) {
|
else if (BlockUtils.hasWoodcuttingXP(blockState) && ItemUtils.isAxe(heldItem) && PrimarySkillType.WOODCUTTING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) {
|
||||||
WoodcuttingManager woodcuttingManager = mmoPlayer.getWoodcuttingManager();
|
WoodcuttingManager woodcuttingManager = ((McMMOPlayer) (mmoPlayer)).getWoodcuttingManager();
|
||||||
if (woodcuttingManager.canUseTreeFeller(heldItem)) {
|
if (woodcuttingManager.canUseTreeFeller(heldItem)) {
|
||||||
woodcuttingManager.processTreeFeller(blockState);
|
woodcuttingManager.processTreeFeller(blockState);
|
||||||
}
|
}
|
||||||
@ -357,7 +357,7 @@ public class BlockListener implements Listener {
|
|||||||
|
|
||||||
/* EXCAVATION */
|
/* EXCAVATION */
|
||||||
else if (BlockUtils.affectedByGigaDrillBreaker(blockState) && ItemUtils.isShovel(heldItem) && PrimarySkillType.EXCAVATION.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) {
|
else if (BlockUtils.affectedByGigaDrillBreaker(blockState) && ItemUtils.isShovel(heldItem) && PrimarySkillType.EXCAVATION.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) {
|
||||||
ExcavationManager excavationManager = mmoPlayer.getExcavationManager();
|
ExcavationManager excavationManager = ((McMMOPlayer) (mmoPlayer)).getExcavationManager();
|
||||||
excavationManager.excavationBlockCheck(blockState);
|
excavationManager.excavationBlockCheck(blockState);
|
||||||
|
|
||||||
if (mmoPlayer.getSuperAbilityManager().getAbilityMode(SuperAbilityType.GIGA_DRILL_BREAKER)) {
|
if (mmoPlayer.getSuperAbilityManager().getAbilityMode(SuperAbilityType.GIGA_DRILL_BREAKER)) {
|
||||||
@ -565,13 +565,13 @@ public class BlockListener implements Listener {
|
|||||||
* We don't need to check permissions here because they've already been checked for the ability to even activate.
|
* We don't need to check permissions here because they've already been checked for the ability to even activate.
|
||||||
*/
|
*/
|
||||||
if (mmoPlayer.getSuperAbilityManager().getAbilityMode(SuperAbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState)) {
|
if (mmoPlayer.getSuperAbilityManager().getAbilityMode(SuperAbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState)) {
|
||||||
if (mmoPlayer.getHerbalismManager().processGreenTerraBlockConversion(blockState)) {
|
if (((McMMOPlayer) (mmoPlayer)).getHerbalismManager().processGreenTerraBlockConversion(blockState)) {
|
||||||
blockState.update(true);
|
blockState.update(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mmoPlayer.getSuperAbilityManager().getAbilityMode(SuperAbilityType.BERSERK) && (heldItem.getType() == Material.AIR || Config.getInstance().getUnarmedItemsAsUnarmed())) {
|
else if (mmoPlayer.getSuperAbilityManager().getAbilityMode(SuperAbilityType.BERSERK) && (heldItem.getType() == Material.AIR || Config.getInstance().getUnarmedItemsAsUnarmed())) {
|
||||||
if (mmoPlayer.getUnarmedManager().canUseBlockCracker() && BlockUtils.affectedByBlockCracker(blockState)) {
|
if (((McMMOPlayer) (mmoPlayer)).getUnarmedManager().canUseBlockCracker() && BlockUtils.affectedByBlockCracker(blockState)) {
|
||||||
if (EventUtils.simulateBlockBreak(block, player, true) && mmoPlayer.getUnarmedManager().blockCrackerCheck(blockState)) {
|
if (EventUtils.simulateBlockBreak(block, player, true) && ((McMMOPlayer) (mmoPlayer)).getUnarmedManager().blockCrackerCheck(blockState)) {
|
||||||
blockState.update();
|
blockState.update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -585,7 +585,7 @@ public class BlockListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mmoPlayer.getWoodcuttingManager().canUseLeafBlower(heldItem) && BlockUtils.hasWoodcuttingXP(blockState) && EventUtils.simulateBlockBreak(block, player, true)) {
|
else if (((McMMOPlayer) (mmoPlayer)).getWoodcuttingManager().canUseLeafBlower(heldItem) && BlockUtils.hasWoodcuttingXP(blockState) && EventUtils.simulateBlockBreak(block, player, true)) {
|
||||||
event.setInstaBreak(true);
|
event.setInstaBreak(true);
|
||||||
SoundManager.sendSound(player, block.getLocation(), SoundType.POP);
|
SoundManager.sendSound(player, block.getLocation(), SoundType.POP);
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ public class EntityListener implements Listener {
|
|||||||
//Process launch event
|
//Process launch event
|
||||||
if (Permissions.skillEnabled(player, PrimarySkillType.CROSSBOWS)) {
|
if (Permissions.skillEnabled(player, PrimarySkillType.CROSSBOWS)) {
|
||||||
if (mmoPlayer != null) {
|
if (mmoPlayer != null) {
|
||||||
mmoPlayer.getCrossbowManager().processProjectileLaunchEvent(event);
|
((McMMOPlayer) (mmoPlayer)).getCrossbowManager().processProjectileLaunchEvent(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -411,7 +411,7 @@ public class EntityListener implements Listener {
|
|||||||
//Deflect checks
|
//Deflect checks
|
||||||
final OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(defendingPlayer);
|
final OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(defendingPlayer);
|
||||||
if (mmoPlayer != null) {
|
if (mmoPlayer != null) {
|
||||||
UnarmedManager unarmedManager = mmoPlayer.getUnarmedManager();
|
UnarmedManager unarmedManager = ((McMMOPlayer) (mmoPlayer)).getUnarmedManager();
|
||||||
|
|
||||||
if (unarmedManager.canDeflect()) {
|
if (unarmedManager.canDeflect()) {
|
||||||
if (projectile instanceof Arrow && unarmedManager.deflectCheck()) {
|
if (projectile instanceof Arrow && unarmedManager.deflectCheck()) {
|
||||||
|
@ -629,7 +629,7 @@ public class PlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
||||||
MiningManager miningManager = mmoPlayer.getMiningManager();
|
MiningManager miningManager = ((McMMOPlayer) (mmoPlayer)).getMiningManager();
|
||||||
ItemStack heldItem = player.getInventory().getItemInMainHand();
|
ItemStack heldItem = player.getInventory().getItemInMainHand();
|
||||||
|
|
||||||
switch (event.getAction()) {
|
switch (event.getAction()) {
|
||||||
@ -642,7 +642,7 @@ public class PlayerListener implements Listener {
|
|||||||
&& PrimarySkillType.REPAIR.getPermissions(player)
|
&& PrimarySkillType.REPAIR.getPermissions(player)
|
||||||
&& mcMMO.getRepairableManager().isRepairable(heldItem)
|
&& mcMMO.getRepairableManager().isRepairable(heldItem)
|
||||||
&& heldItem.getAmount() <= 1) {
|
&& heldItem.getAmount() <= 1) {
|
||||||
RepairManager repairManager = mmoPlayer.getRepairManager();
|
RepairManager repairManager = ((McMMOPlayer) (mmoPlayer)).getRepairManager();
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
||||||
// Make sure the player knows what he's doing when trying to repair an enchanted item
|
// Make sure the player knows what he's doing when trying to repair an enchanted item
|
||||||
@ -687,7 +687,7 @@ public class PlayerListener implements Listener {
|
|||||||
if (!Config.getInstance().getAbilitiesOnlyActivateWhenSneaking() || player.isSneaking()) {
|
if (!Config.getInstance().getAbilitiesOnlyActivateWhenSneaking() || player.isSneaking()) {
|
||||||
/* REPAIR CHECKS */
|
/* REPAIR CHECKS */
|
||||||
if (type == Repair.anvilMaterial && PrimarySkillType.REPAIR.getPermissions(player) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
|
if (type == Repair.anvilMaterial && PrimarySkillType.REPAIR.getPermissions(player) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
|
||||||
RepairManager repairManager = mmoPlayer.getRepairManager();
|
RepairManager repairManager = ((McMMOPlayer) (mmoPlayer)).getRepairManager();
|
||||||
|
|
||||||
// Cancel repairing an enchanted item
|
// Cancel repairing an enchanted item
|
||||||
if (repairManager.checkConfirmation(false)) {
|
if (repairManager.checkConfirmation(false)) {
|
||||||
@ -697,7 +697,7 @@ public class PlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
/* SALVAGE CHECKS */
|
/* SALVAGE CHECKS */
|
||||||
else if (type == Salvage.anvilMaterial && PrimarySkillType.SALVAGE.getPermissions(player) && mcMMO.getSalvageableManager().isSalvageable(heldItem)) {
|
else if (type == Salvage.anvilMaterial && PrimarySkillType.SALVAGE.getPermissions(player) && mcMMO.getSalvageableManager().isSalvageable(heldItem)) {
|
||||||
SalvageManager salvageManager = mmoPlayer.getSalvageManager();
|
SalvageManager salvageManager = ((McMMOPlayer) (mmoPlayer)).getSalvageManager();
|
||||||
|
|
||||||
// Cancel salvaging an enchanted item
|
// Cancel salvaging an enchanted item
|
||||||
if (salvageManager.checkConfirmation(false)) {
|
if (salvageManager.checkConfirmation(false)) {
|
||||||
@ -759,7 +759,7 @@ public class PlayerListener implements Listener {
|
|||||||
player.setVelocity(player.getEyeLocation().getDirection().multiply(10));
|
player.setVelocity(player.getEyeLocation().getDirection().multiply(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
mmoPlayer.getFishingManager().setFishingRodCastTimestamp();
|
((McMMOPlayer) (mmoPlayer)).getFishingManager().setFishingRodCastTimestamp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ package com.gmail.nossr50.listeners;
|
|||||||
|
|
||||||
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.experience.XPGainReason;
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent;
|
import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent;
|
||||||
@ -85,8 +84,8 @@ public class SelfListener implements Listener {
|
|||||||
PrimarySkillType primarySkillType = event.getSkill();
|
PrimarySkillType primarySkillType = event.getSkill();
|
||||||
|
|
||||||
if(mmoPlayer.isDebugMode()) {
|
if(mmoPlayer.isDebugMode()) {
|
||||||
mmoPlayer.getPlayer().sendMessage(event.getSkill().toString() + " XP Gained");
|
Misc.adaptPlayer(mmoPlayer).sendMessage(event.getSkill().toString() + " XP Gained");
|
||||||
mmoPlayer.getPlayer().sendMessage("Incoming Raw XP: "+event.getRawXpGained());
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Incoming Raw XP: "+event.getRawXpGained());
|
||||||
}
|
}
|
||||||
|
|
||||||
//WorldGuard XP Check
|
//WorldGuard XP Check
|
||||||
@ -103,7 +102,7 @@ public class SelfListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
||||||
if(mmoPlayer.isDebugMode()) {
|
if(mmoPlayer.isDebugMode()) {
|
||||||
mmoPlayer.getPlayer().sendMessage("No WG XP Flag - New Raw XP: "+event.getRawXpGained());
|
Misc.adaptPlayer(mmoPlayer).sendMessage("No WG XP Flag - New Raw XP: "+event.getRawXpGained());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -122,7 +121,7 @@ public class SelfListener implements Listener {
|
|||||||
//Give some bonus XP for low levels
|
//Give some bonus XP for low levels
|
||||||
if(PlayerLevelUtils.qualifiesForEarlyGameBoost(mmoPlayer, primarySkillType))
|
if(PlayerLevelUtils.qualifiesForEarlyGameBoost(mmoPlayer, primarySkillType))
|
||||||
{
|
{
|
||||||
earlyGameBonusXP += (mmoPlayer.getExperienceManager().getExperienceToNextLevel(primarySkillType) * 0.05);
|
earlyGameBonusXP += (mmoPlayer.getExperienceHandler().getExperienceToNextLevel(primarySkillType) * 0.05);
|
||||||
event.setRawXpGained(event.getRawXpGained() + earlyGameBonusXP);
|
event.setRawXpGained(event.getRawXpGained() + earlyGameBonusXP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -131,7 +130,7 @@ public class SelfListener implements Listener {
|
|||||||
|
|
||||||
if (threshold <= 0 || !ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) {
|
if (threshold <= 0 || !ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) {
|
||||||
if(mmoPlayer.isDebugMode()) {
|
if(mmoPlayer.isDebugMode()) {
|
||||||
mmoPlayer.getPlayer().sendMessage("Final Raw XP: "+event.getRawXpGained());
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Final Raw XP: "+event.getRawXpGained());
|
||||||
}
|
}
|
||||||
// Diminished returns is turned off
|
// Diminished returns is turned off
|
||||||
return;
|
return;
|
||||||
@ -151,7 +150,7 @@ public class SelfListener implements Listener {
|
|||||||
float guaranteedMinimum = ExperienceConfig.getInstance().getDiminishedReturnsCap() * rawXp;
|
float guaranteedMinimum = ExperienceConfig.getInstance().getDiminishedReturnsCap() * rawXp;
|
||||||
|
|
||||||
float modifiedThreshold = (float) (threshold / primarySkillType.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier());
|
float modifiedThreshold = (float) (threshold / primarySkillType.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier());
|
||||||
float difference = (mmoPlayer.getExperienceManager().getRegisteredXpGain(primarySkillType) - modifiedThreshold) / modifiedThreshold;
|
float difference = (mmoPlayer.getExperienceHandler().getRegisteredXpGain(primarySkillType) - modifiedThreshold) / modifiedThreshold;
|
||||||
|
|
||||||
if (difference > 0) {
|
if (difference > 0) {
|
||||||
// System.out.println("Total XP Earned: " + mmoPlayer.getProfile().getRegisteredXpGain(primarySkillType) + " / Threshold value: " + threshold);
|
// System.out.println("Total XP Earned: " + mmoPlayer.getProfile().getRegisteredXpGain(primarySkillType) + " / Threshold value: " + threshold);
|
||||||
@ -179,7 +178,7 @@ public class SelfListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(mmoPlayer.isDebugMode()) {
|
if(mmoPlayer.isDebugMode()) {
|
||||||
mmoPlayer.getPlayer().sendMessage("Final Raw XP: "+event.getRawXpGained());
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Final Raw XP: "+event.getRawXpGained());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ public final class PartyManager {
|
|||||||
*/
|
*/
|
||||||
public @Nullable Party queryParty(@NotNull UUID playerUUID) {
|
public @Nullable Party queryParty(@NotNull UUID playerUUID) {
|
||||||
for(Party party : parties.values()) {
|
for(Party party : parties.values()) {
|
||||||
if(party.hasMember(playerUUID)) {
|
if(party.getPartyMemberManager().hasMember(playerUUID)) {
|
||||||
return party;
|
return party;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -114,7 +114,7 @@ public final class PartyManager {
|
|||||||
* @return true if the party was joined successfully, false otherwise
|
* @return true if the party was joined successfully, false otherwise
|
||||||
*/
|
*/
|
||||||
public boolean changeOrJoinParty(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull String newPartyName) {
|
public boolean changeOrJoinParty(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull String newPartyName) {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
|
|
||||||
if (inParty(mmoPlayer)) {
|
if (inParty(mmoPlayer)) {
|
||||||
Party oldParty = mmoPlayer.getParty();
|
Party oldParty = mmoPlayer.getParty();
|
||||||
@ -171,7 +171,7 @@ public final class PartyManager {
|
|||||||
Party party = mmoPlayer.getParty();
|
Party party = mmoPlayer.getParty();
|
||||||
|
|
||||||
if (party != null) {
|
if (party != null) {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
double range = Config.getInstance().getPartyShareRange();
|
double range = Config.getInstance().getPartyShareRange();
|
||||||
|
|
||||||
for (PartyMember member : party.getPartyMembers()) {
|
for (PartyMember member : party.getPartyMembers()) {
|
||||||
@ -189,7 +189,7 @@ public final class PartyManager {
|
|||||||
Party party = mmoPlayer.getParty();
|
Party party = mmoPlayer.getParty();
|
||||||
|
|
||||||
if (party != null) {
|
if (party != null) {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
double range = Config.getInstance().getPartyShareRange();
|
double range = Config.getInstance().getPartyShareRange();
|
||||||
|
|
||||||
for (Player member : party.getVisibleMembers(player)) {
|
for (Player member : party.getVisibleMembers(player)) {
|
||||||
@ -359,7 +359,7 @@ public final class PartyManager {
|
|||||||
* @param mmoPlayer The player to remove
|
* @param mmoPlayer The player to remove
|
||||||
*/
|
*/
|
||||||
public void removeFromParty(OnlineMMOPlayer mmoPlayer) {
|
public void removeFromParty(OnlineMMOPlayer mmoPlayer) {
|
||||||
removeFromParty(mmoPlayer.getPlayer(), mmoPlayer.getParty());
|
removeFromParty(Misc.adaptPlayer(mmoPlayer), mmoPlayer.getParty());
|
||||||
processPartyLeaving(mmoPlayer);
|
processPartyLeaving(mmoPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -396,7 +396,7 @@ public final class PartyManager {
|
|||||||
* @param password The password for this party, null if there was no password
|
* @param password The password for this party, null if there was no password
|
||||||
*/
|
*/
|
||||||
public void createParty(OnlineMMOPlayer mmoPlayer, String partyName, String password) {
|
public void createParty(OnlineMMOPlayer mmoPlayer, String partyName, String password) {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
|
|
||||||
Party party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName.replace(".", ""), password);
|
Party party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName.replace(".", ""), password);
|
||||||
|
|
||||||
@ -451,7 +451,7 @@ public final class PartyManager {
|
|||||||
|
|
||||||
// Check if the party still exists, it might have been disbanded
|
// Check if the party still exists, it might have been disbanded
|
||||||
if (!parties.contains(invite)) {
|
if (!parties.contains(invite)) {
|
||||||
NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(), NotificationType.PARTY_MESSAGE, "Party.Disband");
|
NotificationManager.sendPlayerInformation(Misc.adaptPlayer(mmoPlayer), NotificationType.PARTY_MESSAGE, "Party.Disband");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -460,11 +460,11 @@ public final class PartyManager {
|
|||||||
*/
|
*/
|
||||||
if(Config.getInstance().getPartyMaxSize() > 0 && invite.getMembers().size() >= Config.getInstance().getPartyMaxSize())
|
if(Config.getInstance().getPartyMaxSize() > 0 && invite.getMembers().size() >= Config.getInstance().getPartyMaxSize())
|
||||||
{
|
{
|
||||||
NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(), NotificationType.PARTY_MESSAGE, "Commands.Party.PartyFull.InviteAccept", invite.getPartyName(), String.valueOf(Config.getInstance().getPartyMaxSize()));
|
NotificationManager.sendPlayerInformation(Misc.adaptPlayer(mmoPlayer), NotificationType.PARTY_MESSAGE, "Commands.Party.PartyFull.InviteAccept", invite.getPartyName(), String.valueOf(Config.getInstance().getPartyMaxSize()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(), NotificationType.PARTY_MESSAGE, "Commands.Party.Invite.Accepted", invite.getPartyName());
|
NotificationManager.sendPlayerInformation(Misc.adaptPlayer(mmoPlayer), NotificationType.PARTY_MESSAGE, "Commands.Party.Invite.Accepted", invite.getPartyName());
|
||||||
mmoPlayer.removePartyInvite();
|
mmoPlayer.removePartyInvite();
|
||||||
addToParty(mmoPlayer, invite);
|
addToParty(mmoPlayer, invite);
|
||||||
}
|
}
|
||||||
@ -476,7 +476,7 @@ public final class PartyManager {
|
|||||||
*/
|
*/
|
||||||
public void acceptAllianceInvite(OnlineMMOPlayer mmoPlayer) {
|
public void acceptAllianceInvite(OnlineMMOPlayer mmoPlayer) {
|
||||||
Party invite = mmoPlayer.getPartyAllianceInvite();
|
Party invite = mmoPlayer.getPartyAllianceInvite();
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
|
|
||||||
// Check if the party still exists, it might have been disbanded
|
// Check if the party still exists, it might have been disbanded
|
||||||
if (!parties.contains(invite)) {
|
if (!parties.contains(invite)) {
|
||||||
@ -536,7 +536,7 @@ public final class PartyManager {
|
|||||||
* @param party The party
|
* @param party The party
|
||||||
*/
|
*/
|
||||||
public void addToParty(OnlineMMOPlayer mmoPlayer, Party party) {
|
public void addToParty(OnlineMMOPlayer mmoPlayer, Party party) {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
String playerName = player.getName();
|
String playerName = player.getName();
|
||||||
|
|
||||||
informPartyMembersJoin(party, playerName);
|
informPartyMembersJoin(party, playerName);
|
||||||
@ -591,7 +591,7 @@ public final class PartyManager {
|
|||||||
public boolean canInvite(OnlineMMOPlayer mmoPlayer) {
|
public boolean canInvite(OnlineMMOPlayer mmoPlayer) {
|
||||||
Party party = mmoPlayer.getParty();
|
Party party = mmoPlayer.getParty();
|
||||||
|
|
||||||
return !party.isLocked() || party.getLeader().getUniqueId().equals(mmoPlayer.getPlayer().getUniqueId());
|
return !party.isLocked() || party.getLeader().getUniqueId().equals(mmoPlayer.getUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2,8 +2,6 @@ package com.gmail.nossr50.party;
|
|||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.config.party.ItemWeightConfig;
|
import com.gmail.nossr50.config.party.ItemWeightConfig;
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
|
||||||
import com.gmail.nossr50.datatypes.party.ItemShareType;
|
import com.gmail.nossr50.datatypes.party.ItemShareType;
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.datatypes.party.ShareMode;
|
import com.gmail.nossr50.datatypes.party.ShareMode;
|
||||||
@ -55,7 +53,7 @@ public final class ShareHandler {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
partyMember.getExperienceManager().beginUnsharedXpGain(primarySkillType, splitXp, xpGainReason, XPGainSource.PARTY_MEMBERS);
|
partyMember.getExperienceHandler().beginUnsharedXpGain(primarySkillType, splitXp, xpGainReason, XPGainSource.PARTY_MEMBERS);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.gmail.nossr50.runnables.items;
|
package com.gmail.nossr50.runnables.items;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.ChimaeraWing;
|
import com.gmail.nossr50.util.ChimaeraWing;
|
||||||
@ -13,9 +14,9 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
public class ChimaeraWingWarmup extends BukkitRunnable {
|
public class ChimaeraWingWarmup extends BukkitRunnable {
|
||||||
private final OnlineMMOPlayer mmoPlayer;
|
private final McMMOPlayer mmoPlayer;
|
||||||
|
|
||||||
public ChimaeraWingWarmup(OnlineMMOPlayer mmoPlayer) {
|
public ChimaeraWingWarmup(McMMOPlayer mmoPlayer) {
|
||||||
this.mmoPlayer = mmoPlayer;
|
this.mmoPlayer = mmoPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.gmail.nossr50.runnables.items;
|
package com.gmail.nossr50.runnables.items;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.EventUtils;
|
import com.gmail.nossr50.util.EventUtils;
|
||||||
@ -13,20 +15,20 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
public class TeleportationWarmup extends BukkitRunnable {
|
public class TeleportationWarmup extends BukkitRunnable {
|
||||||
private final OnlineMMOPlayer mmoPlayer;
|
private final McMMOPlayer mmoPlayer;
|
||||||
private final OnlineMMOPlayer mcMMOTarget;
|
private final McMMOPlayer mcMMOTarget;
|
||||||
|
|
||||||
public TeleportationWarmup(OnlineMMOPlayer mmoPlayer, OnlineMMOPlayer mcMMOTarget) {
|
public TeleportationWarmup(McMMOPlayer mmoPlayer, McMMOPlayer mcMMOTarget) {
|
||||||
this.mmoPlayer = mmoPlayer;
|
this.mmoPlayer = mmoPlayer;
|
||||||
this.mcMMOTarget = mcMMOTarget;
|
this.mcMMOTarget = mcMMOTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Player teleportingPlayer = mmoPlayer.getPlayer();
|
Player teleportingPlayer = Misc.adaptPlayer(mmoPlayer);
|
||||||
Player targetPlayer = mcMMOTarget.getPlayer();
|
Player targetPlayer = mcMMOTarget.getPlayer();
|
||||||
Location previousLocation = mmoPlayer.getTeleportCommenceLocation();
|
Location previousLocation = mmoPlayer.getTeleportCommenceLocation();
|
||||||
Location newLocation = mmoPlayer.getPlayer().getLocation();
|
Location newLocation = Misc.adaptPlayer(mmoPlayer).getLocation();
|
||||||
long recentlyHurt = mmoPlayer.getRecentlyHurtTimestamp();
|
long recentlyHurt = mmoPlayer.getRecentlyHurtTimestamp();
|
||||||
|
|
||||||
mmoPlayer.setTeleportCommenceLocation(null);
|
mmoPlayer.setTeleportCommenceLocation(null);
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
package com.gmail.nossr50.runnables.player;
|
package com.gmail.nossr50.runnables.player;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.datatypes.player.PersistentPlayerData;
|
||||||
|
import com.gmail.nossr50.datatypes.player.PersistentPlayerDataBuilder;
|
||||||
|
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
@ -42,8 +46,9 @@ public class PlayerProfileLoadingTask extends BukkitRunnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
PlayerProfile profile = mcMMO.getDatabaseManager().queryPlayerDataByUUID(player.getUniqueId());
|
MMOPlayerData mmoPlayerData = mcMMO.getDatabaseManager().queryPlayerDataByPlayer(player);
|
||||||
new ApplySuccessfulProfile(new OnlineMMOPlayer(player, profile)).runTask(mcMMO.p);
|
McMMOPlayer mmoPlayer = new McMMOPlayer(player, player.getUniqueId(), player.getName());
|
||||||
|
new ApplySuccessfulProfile(new McMMOPlayer(player, )).runTask(mcMMO.p);
|
||||||
EventUtils.callPlayerProfileLoadEvent(player, profile);
|
EventUtils.callPlayerProfileLoadEvent(player, profile);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -70,9 +75,9 @@ public class PlayerProfileLoadingTask extends BukkitRunnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class ApplySuccessfulProfile extends BukkitRunnable {
|
private class ApplySuccessfulProfile extends BukkitRunnable {
|
||||||
private final OnlineMMOPlayer mmoPlayer;
|
private final McMMOPlayer mmoPlayer;
|
||||||
|
|
||||||
private ApplySuccessfulProfile(OnlineMMOPlayer mmoPlayer) {
|
private ApplySuccessfulProfile(McMMOPlayer mmoPlayer) {
|
||||||
this.mmoPlayer = mmoPlayer;
|
this.mmoPlayer = mmoPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,13 +17,13 @@ public class AbilityCooldownTask extends BukkitRunnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!mmoPlayer.getPlayer().isOnline() || mmoPlayer.getSuperAbilityManager().getAbilityInformed(ability)) {
|
if (!Misc.adaptPlayer(mmoPlayer).isOnline() || mmoPlayer.getSuperAbilityManager().getAbilityInformed(ability)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mmoPlayer.getSuperAbilityManager().setAbilityInformed(ability, true);
|
mmoPlayer.getSuperAbilityManager().setAbilityInformed(ability, true);
|
||||||
|
|
||||||
NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(), NotificationType.ABILITY_REFRESHED, ability.getAbilityRefresh());
|
NotificationManager.sendPlayerInformation(Misc.adaptPlayer(mmoPlayer), NotificationType.ABILITY_REFRESHED, ability.getAbilityRefresh());
|
||||||
//mmoPlayer.getPlayer().sendMessage(ability.getAbilityRefresh());
|
//Misc.adaptPlayer(mmoPlayer).sendMessage(ability.getAbilityRefresh());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ public class AbilityDisableTask extends BukkitRunnable {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
|
|
||||||
switch (ability) {
|
switch (ability) {
|
||||||
case SUPER_BREAKER:
|
case SUPER_BREAKER:
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.gmail.nossr50.runnables.skills;
|
package com.gmail.nossr50.runnables.skills;
|
||||||
|
|
||||||
|
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.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
import com.gmail.nossr50.events.skills.alchemy.McMMOPlayerBrewEvent;
|
import com.gmail.nossr50.events.skills.alchemy.McMMOPlayerBrewEvent;
|
||||||
@ -9,6 +10,7 @@ import com.gmail.nossr50.skills.alchemy.Alchemy;
|
|||||||
import com.gmail.nossr50.skills.alchemy.AlchemyPotionBrewer;
|
import com.gmail.nossr50.skills.alchemy.AlchemyPotionBrewer;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
@ -36,12 +38,13 @@ public class AlchemyBrewTask extends BukkitRunnable {
|
|||||||
brewSpeed = DEFAULT_BREW_SPEED;
|
brewSpeed = DEFAULT_BREW_SPEED;
|
||||||
brewTimer = DEFAULT_BREW_TICKS;
|
brewTimer = DEFAULT_BREW_TICKS;
|
||||||
|
|
||||||
|
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
||||||
if (player != null
|
if (player != null
|
||||||
&& !Misc.isNPCEntityExcludingVillagers(player)
|
&& !Misc.isNPCEntityExcludingVillagers(player)
|
||||||
&& Permissions.isSubSkillEnabled(player, SubSkillType.ALCHEMY_CATALYSIS)
|
&& Permissions.isSubSkillEnabled(player, SubSkillType.ALCHEMY_CATALYSIS)
|
||||||
&& mcMMO.getUserManager().queryPlayer(player) != null) {
|
&& mmoPlayer != null) {
|
||||||
|
|
||||||
double catalysis = mcMMO.getUserManager().queryPlayer(player).getAlchemyManager().calculateBrewSpeed(Permissions.lucky(player, PrimarySkillType.ALCHEMY));
|
double catalysis = ((McMMOPlayer) mmoPlayer).getAlchemyManager().calculateBrewSpeed(Permissions.lucky(player, PrimarySkillType.ALCHEMY));
|
||||||
|
|
||||||
McMMOPlayerCatalysisEvent event = new McMMOPlayerCatalysisEvent(player, catalysis);
|
McMMOPlayerCatalysisEvent event = new McMMOPlayerCatalysisEvent(player, catalysis);
|
||||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.gmail.nossr50.runnables.skills;
|
package com.gmail.nossr50.runnables.skills;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
@ -18,6 +18,6 @@ public class DelayedHerbalismXPCheckTask extends BukkitRunnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
mmoPlayer.getHerbalismManager().awardXPForBlockSnapshots(chorusBlocks);
|
((McMMOPlayer) (mmoPlayer)).getHerbalismManager().awardXPForBlockSnapshots(chorusBlocks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,19 @@
|
|||||||
package com.gmail.nossr50.runnables.skills;
|
package com.gmail.nossr50.runnables.skills;
|
||||||
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
|
||||||
import com.gmail.nossr50.util.experience.MMOExperienceBarManager;
|
import com.gmail.nossr50.util.experience.MMOExperienceBarManager;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
public class ExperienceBarHideTask extends BukkitRunnable {
|
public class ExperienceBarHideTask extends BukkitRunnable {
|
||||||
public final OnlineMMOPlayer mmoPlayer;
|
public final OnlineMMOPlayer mmoPlayer;
|
||||||
public final PrimarySkillType primarySkillType;
|
public final RootSkill rootSkill;
|
||||||
public final MMOExperienceBarManager MMOExperienceBarManagerRef;
|
public final MMOExperienceBarManager MMOExperienceBarManagerRef;
|
||||||
|
|
||||||
public ExperienceBarHideTask(MMOExperienceBarManager MMOExperienceBarManagerRef, OnlineMMOPlayer mmoPlayer, PrimarySkillType primarySkillType)
|
public ExperienceBarHideTask(MMOExperienceBarManager MMOExperienceBarManagerRef, OnlineMMOPlayer mmoPlayer, RootSkill rootSkill) {
|
||||||
{
|
|
||||||
this.MMOExperienceBarManagerRef = MMOExperienceBarManagerRef;
|
this.MMOExperienceBarManagerRef = MMOExperienceBarManagerRef;
|
||||||
this.mmoPlayer = mmoPlayer;
|
this.mmoPlayer = mmoPlayer;
|
||||||
this.primarySkillType = primarySkillType;
|
this.rootSkill = rootSkill;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -33,7 +32,7 @@ public class ExperienceBarHideTask extends BukkitRunnable {
|
|||||||
if(MMOExperienceBarManagerRef == null || mmoPlayer == null)
|
if(MMOExperienceBarManagerRef == null || mmoPlayer == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MMOExperienceBarManagerRef.hideExperienceBar(primarySkillType);
|
MMOExperienceBarManagerRef.hideExperienceBar(rootSkill);
|
||||||
MMOExperienceBarManagerRef.clearTask(primarySkillType);
|
MMOExperienceBarManagerRef.clearTask(rootSkill);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public class SkillUnlockNotificationTask extends BukkitRunnable {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
//mmoPlayer.getPlayer().sendTitle(subSkillType.getLocaleName(), "Rank "+rank, 7, 20, 7);
|
//Misc.adaptPlayer(mmoPlayer).sendTitle(subSkillType.getLocaleName(), "Rank "+rank, 7, 20, 7);
|
||||||
NotificationManager.sendPlayerUnlockNotification(mmoPlayer, subSkillType);
|
NotificationManager.sendPlayerUnlockNotification(mmoPlayer, subSkillType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ public class ToolLowerTask extends BukkitRunnable {
|
|||||||
mmoPlayer.getSuperAbilityManager().setAbilityToolPrime(tool, false);
|
mmoPlayer.getSuperAbilityManager().setAbilityToolPrime(tool, false);
|
||||||
|
|
||||||
if (Config.getInstance().getAbilityMessagesEnabled()) {
|
if (Config.getInstance().getAbilityMessagesEnabled()) {
|
||||||
NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(), NotificationType.TOOL, tool.getLowerToolLocaleKey());
|
NotificationManager.sendPlayerInformation(Misc.adaptPlayer(mmoPlayer), NotificationType.TOOL, tool.getLowerToolLocaleKey());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.gmail.nossr50.skills;
|
package com.gmail.nossr50.skills;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
@ -18,11 +16,11 @@ public abstract class SkillManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Player getPlayer() {
|
public Player getPlayer() {
|
||||||
return mmoPlayer.getPlayer();
|
return Misc.adaptPlayer(mmoPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSkillLevel() {
|
public int getSkillLevel() {
|
||||||
return mmoPlayer.getExperienceManager().getSkillLevel(skill);
|
return mmoPlayer.getExperienceHandler().getSkillLevel(skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2,7 +2,6 @@ package com.gmail.nossr50.skills.acrobatics;
|
|||||||
|
|
||||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.LimitedSizeList;
|
import com.gmail.nossr50.datatypes.LimitedSizeList;
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
|
@ -2,8 +2,6 @@ package com.gmail.nossr50.skills.alchemy;
|
|||||||
|
|
||||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.config.skills.alchemy.PotionConfig;
|
import com.gmail.nossr50.config.skills.alchemy.PotionConfig;
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package com.gmail.nossr50.skills.child;
|
package com.gmail.nossr50.skills.child;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.skills.CoreSkillConstants;
|
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.neetgames.mcmmo.exceptions.UnknownSkillException;
|
import com.neetgames.mcmmo.exceptions.UnknownSkillException;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
import com.neetgames.mcmmo.skill.SkillIdentity;
|
import com.neetgames.mcmmo.skill.SkillIdentity;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -14,27 +16,29 @@ public class FamilyTree {
|
|||||||
/*
|
/*
|
||||||
* Hacky crap, will remove later
|
* Hacky crap, will remove later
|
||||||
*/
|
*/
|
||||||
|
private static @Nullable Set<RootSkill> smeltingParents;
|
||||||
|
private static @Nullable Set<RootSkill> salvageParents;
|
||||||
|
|
||||||
private static @Nullable Set<SkillIdentity> smeltingParents;
|
public static @NotNull Set<RootSkill> getParentSkills(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||||
private static @Nullable Set<SkillIdentity> salvageParents;
|
if(CoreSkills.isChildSkill(rootSkill)) {
|
||||||
|
|
||||||
public static @NotNull Set<SkillIdentity> getParentSkills(@NotNull SkillIdentity skillIdentity) throws UnknownSkillException {
|
|
||||||
if(CoreSkillConstants.isChildSkill(skillIdentity)) {
|
|
||||||
if(smeltingParents == null || salvageParents == null) {
|
if(smeltingParents == null || salvageParents == null) {
|
||||||
smeltingParents = new HashSet<>();
|
smeltingParents = new HashSet<>();
|
||||||
salvageParents = new HashSet<>();
|
salvageParents = new HashSet<>();
|
||||||
|
|
||||||
smeltingParents.add(CoreSkillConstants.MINING_ID);
|
smeltingParents.add(CoreSkills.MINING_CS);
|
||||||
smeltingParents.add(CoreSkillConstants.REPAIR_ID);
|
smeltingParents.add(CoreSkills.REPAIR_CS);
|
||||||
|
|
||||||
salvageParents.add(CoreSkillConstants.FISHING_ID);
|
salvageParents.add(CoreSkills.FISHING_CS);
|
||||||
salvageParents.add(CoreSkillConstants.REPAIR_ID);
|
salvageParents.add(CoreSkills.REPAIR_CS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(skillIdentity.equals(CoreSkillConstants.SALVAGE_ID)) {
|
if(rootSkill.equals(CoreSkills.SALVAGE_CS)) {
|
||||||
return salvageParents;
|
return salvageParents;
|
||||||
} else {
|
} else if (rootSkill.equals(CoreSkills.SMELTING_CS)) {
|
||||||
return smeltingParents;
|
return smeltingParents;
|
||||||
|
} else {
|
||||||
|
mcMMO.p.getLogger().severe("root skill argument is not a child skill! " + rootSkill.toString());
|
||||||
|
throw new UnknownSkillException();
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -52,8 +52,8 @@ public class CrossbowManager extends SkillManager {
|
|||||||
*/
|
*/
|
||||||
public void processProjectileLaunchEvent(ProjectileLaunchEvent projectileLaunchEvent) {
|
public void processProjectileLaunchEvent(ProjectileLaunchEvent projectileLaunchEvent) {
|
||||||
//Testing
|
//Testing
|
||||||
if(Permissions.isSubSkillEnabled(mmoPlayer.getPlayer(), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
if(Permissions.isSubSkillEnabled(Misc.adaptPlayer(mmoPlayer), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||||
if(RankUtils.hasUnlockedSubskill(mmoPlayer.getPlayer(), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
if(RankUtils.hasUnlockedSubskill(Misc.adaptPlayer(mmoPlayer), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||||
superShotgunProcessing(projectileLaunchEvent);
|
superShotgunProcessing(projectileLaunchEvent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -79,7 +79,7 @@ public class CrossbowManager extends SkillManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getSuperShotgunAdditionalArrowCount() {
|
public int getSuperShotgunAdditionalArrowCount() {
|
||||||
switch(RankUtils.getRank(mmoPlayer.getPlayer(), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
switch(RankUtils.getRank(Misc.adaptPlayer(mmoPlayer), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||||
case 1:
|
case 1:
|
||||||
return 9;
|
return 9;
|
||||||
case 2:
|
case 2:
|
||||||
|
@ -2,7 +2,6 @@ package com.gmail.nossr50.skills.excavation;
|
|||||||
|
|
||||||
import com.gmail.nossr50.api.ItemSpawnReason;
|
import com.gmail.nossr50.api.ItemSpawnReason;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
|
@ -5,7 +5,6 @@ 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.config.treasure.TreasureConfig;
|
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
@ -292,38 +291,38 @@ public class FishingManager extends SkillManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(mmoPlayer.isDebugMode()) {
|
if(mmoPlayer.isDebugMode()) {
|
||||||
mmoPlayer.getPlayer().sendMessage(ChatColor.GOLD + "Master Angler Debug");
|
Misc.adaptPlayer(mmoPlayer).sendMessage(ChatColor.GOLD + "Master Angler Debug");
|
||||||
|
|
||||||
if(badValuesFix) {
|
if(badValuesFix) {
|
||||||
mmoPlayer.getPlayer().sendMessage(ChatColor.RED + "Bad values were applied and corrected, check your configs, max wait should never be lower than min wait.");
|
Misc.adaptPlayer(mmoPlayer).sendMessage(ChatColor.RED + "Bad values were applied and corrected, check your configs, max wait should never be lower than min wait.");
|
||||||
}
|
}
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage("ALLOW STACK WITH LURE: " + masterAnglerCompatibilityLayer.getApplyLure(fishHook));
|
Misc.adaptPlayer(mmoPlayer).sendMessage("ALLOW STACK WITH LURE: " + masterAnglerCompatibilityLayer.getApplyLure(fishHook));
|
||||||
mmoPlayer.getPlayer().sendMessage("MIN TICK REDUCTION: " + minWaitReduction);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("MIN TICK REDUCTION: " + minWaitReduction);
|
||||||
mmoPlayer.getPlayer().sendMessage("MAX TICK REDUCTION: " + maxWaitReduction);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("MAX TICK REDUCTION: " + maxWaitReduction);
|
||||||
mmoPlayer.getPlayer().sendMessage("BOAT BONUS: " + boatBonus);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("BOAT BONUS: " + boatBonus);
|
||||||
|
|
||||||
if(boatBonus) {
|
if(boatBonus) {
|
||||||
mmoPlayer.getPlayer().sendMessage("BOAT MAX TICK REDUCTION: " + maxWaitReduction);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("BOAT MAX TICK REDUCTION: " + maxWaitReduction);
|
||||||
mmoPlayer.getPlayer().sendMessage("BOAT MIN TICK REDUCTION: " + maxWaitReduction);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("BOAT MIN TICK REDUCTION: " + maxWaitReduction);
|
||||||
}
|
}
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage("");
|
Misc.adaptPlayer(mmoPlayer).sendMessage("");
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage(ChatColor.DARK_AQUA + "BEFORE MASTER ANGLER WAS APPLIED");
|
Misc.adaptPlayer(mmoPlayer).sendMessage(ChatColor.DARK_AQUA + "BEFORE MASTER ANGLER WAS APPLIED");
|
||||||
mmoPlayer.getPlayer().sendMessage("Original Max Wait Ticks: " + maxWaitTicks);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Original Max Wait Ticks: " + maxWaitTicks);
|
||||||
mmoPlayer.getPlayer().sendMessage("Original Min Wait Ticks: " + minWaitTicks);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Original Min Wait Ticks: " + minWaitTicks);
|
||||||
mmoPlayer.getPlayer().sendMessage("");
|
Misc.adaptPlayer(mmoPlayer).sendMessage("");
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage(ChatColor.DARK_AQUA + "AFTER MASTER ANGLER WAS APPLIED");
|
Misc.adaptPlayer(mmoPlayer).sendMessage(ChatColor.DARK_AQUA + "AFTER MASTER ANGLER WAS APPLIED");
|
||||||
mmoPlayer.getPlayer().sendMessage("Current Max Wait Ticks: " + reducedMaxWaitTime);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Current Max Wait Ticks: " + reducedMaxWaitTime);
|
||||||
mmoPlayer.getPlayer().sendMessage("Current Min Wait Ticks: " + reducedMinWaitTime);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Current Min Wait Ticks: " + reducedMinWaitTime);
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage("");
|
Misc.adaptPlayer(mmoPlayer).sendMessage("");
|
||||||
|
|
||||||
mmoPlayer.getPlayer().sendMessage(ChatColor.DARK_AQUA + "Caps / Limits (edit in advanced.yml)");
|
Misc.adaptPlayer(mmoPlayer).sendMessage(ChatColor.DARK_AQUA + "Caps / Limits (edit in advanced.yml)");
|
||||||
mmoPlayer.getPlayer().sendMessage("Lowest possible max wait ticks " + bonusCapMax);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Lowest possible max wait ticks " + bonusCapMax);
|
||||||
mmoPlayer.getPlayer().sendMessage("Lowest possible min wait ticks " + bonusCapMin);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Lowest possible min wait ticks " + bonusCapMin);
|
||||||
}
|
}
|
||||||
|
|
||||||
masterAnglerCompatibilityLayer.setMaxWaitTime(fishHook, reducedMaxWaitTime);
|
masterAnglerCompatibilityLayer.setMaxWaitTime(fishHook, reducedMaxWaitTime);
|
||||||
@ -337,7 +336,7 @@ public class FishingManager extends SkillManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isInBoat() {
|
public boolean isInBoat() {
|
||||||
return mmoPlayer.getPlayer().isInsideVehicle() && mmoPlayer.getPlayer().getVehicle() instanceof Boat;
|
return Misc.adaptPlayer(mmoPlayer).isInsideVehicle() && Misc.adaptPlayer(mmoPlayer).getVehicle() instanceof Boat;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMasterAnglerTickMaxWaitReduction(int masterAnglerRank, boolean boatBonus, int emulatedLureBonus) {
|
public int getMasterAnglerTickMaxWaitReduction(int masterAnglerRank, boolean boatBonus, int emulatedLureBonus) {
|
||||||
|
@ -5,8 +5,6 @@ import com.gmail.nossr50.config.Config;
|
|||||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||||
import com.gmail.nossr50.datatypes.BlockSnapshot;
|
import com.gmail.nossr50.datatypes.BlockSnapshot;
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.gmail.nossr50.datatypes.meta.RecentlyReplantedCropMeta;
|
import com.gmail.nossr50.datatypes.meta.RecentlyReplantedCropMeta;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
@ -388,7 +386,7 @@ public class HerbalismManager extends SkillManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(mmoPlayer.isDebugMode()) {
|
if(mmoPlayer.isDebugMode()) {
|
||||||
mmoPlayer.getPlayer().sendMessage("Plants processed: "+brokenPlants.size());
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Plants processed: "+brokenPlants.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
//Reward XP
|
//Reward XP
|
||||||
@ -439,8 +437,8 @@ public class HerbalismManager extends SkillManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(mmoPlayer.isDebugMode()) {
|
if(mmoPlayer.isDebugMode()) {
|
||||||
mmoPlayer.getPlayer().sendMessage("Chorus Plants checked for XP: "+brokenPlants.size());
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Chorus Plants checked for XP: "+brokenPlants.size());
|
||||||
mmoPlayer.getPlayer().sendMessage("Valid Chorus Plant XP Gains: "+blocksGivingXP);
|
Misc.adaptPlayer(mmoPlayer).sendMessage("Valid Chorus Plant XP Gains: "+blocksGivingXP);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Reward XP
|
//Reward XP
|
||||||
|
@ -4,7 +4,6 @@ import com.gmail.nossr50.api.ItemSpawnReason;
|
|||||||
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.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
|
@ -3,7 +3,6 @@ package com.gmail.nossr50.skills.repair;
|
|||||||
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.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package com.gmail.nossr50.skills.smelting;
|
package com.gmail.nossr50.skills.smelting;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
|
@ -3,7 +3,6 @@ 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.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
|
@ -3,7 +3,6 @@ package com.gmail.nossr50.skills.woodcutting;
|
|||||||
import com.gmail.nossr50.api.ItemSpawnReason;
|
import com.gmail.nossr50.api.ItemSpawnReason;
|
||||||
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.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
|
@ -2,6 +2,7 @@ package com.gmail.nossr50.util;
|
|||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
@ -112,7 +113,7 @@ public final class ChimaeraWing {
|
|||||||
|
|
||||||
if (warmup > 0) {
|
if (warmup > 0) {
|
||||||
NotificationManager.sendPlayerInformation(player, NotificationType.ITEM_MESSAGE, "Teleport.Commencing", String.valueOf(warmup));
|
NotificationManager.sendPlayerInformation(player, NotificationType.ITEM_MESSAGE, "Teleport.Commencing", String.valueOf(warmup));
|
||||||
new ChimaeraWingWarmup(mmoPlayer).runTaskLater(mcMMO.p, 20 * warmup);
|
new ChimaeraWingWarmup((McMMOPlayer) mmoPlayer).runTaskLater(mcMMO.p, 20 * warmup);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
chimaeraExecuteTeleport();
|
chimaeraExecuteTeleport();
|
||||||
@ -120,7 +121,7 @@ public final class ChimaeraWing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void chimaeraExecuteTeleport() {
|
public static void chimaeraExecuteTeleport() {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
|
|
||||||
if (Config.getInstance().getChimaeraUseBedSpawn() && player.getBedSpawnLocation() != null) {
|
if (Config.getInstance().getChimaeraUseBedSpawn() && player.getBedSpawnLocation() != null) {
|
||||||
player.teleport(player.getBedSpawnLocation());
|
player.teleport(player.getBedSpawnLocation());
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package com.gmail.nossr50.util;
|
package com.gmail.nossr50.util;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
@ -224,7 +222,7 @@ public final class EventUtils {
|
|||||||
if (isCancelled) {
|
if (isCancelled) {
|
||||||
PlayerProfile profile = mcMMO.getUserManager().queryPlayer(player);
|
PlayerProfile profile = mcMMO.getUserManager().queryPlayer(player);
|
||||||
|
|
||||||
profile.getExperienceManager().setSkillLevel(skill, profile.getSkillLevel(skill) - (isLevelUp ? levelsChanged : -levelsChanged));
|
profile.getExperienceHandler().setSkillLevel(skill, profile.getSkillLevel(skill) - (isLevelUp ? levelsChanged : -levelsChanged));
|
||||||
profile.addXp(skill, xpRemoved);
|
profile.addXp(skill, xpRemoved);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,8 +41,8 @@ public final class HardcoreManager {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int playerSkillLevel = playerProfile.getExperienceManager().getSkillLevel(primarySkillType);
|
int playerSkillLevel = playerProfile.getExperienceHandler().getSkillLevel(primarySkillType);
|
||||||
int playerSkillXpLevel = playerProfile.getExperienceManager().getSkillXpValue(primarySkillType);
|
int playerSkillXpLevel = playerProfile.getExperienceHandler().getSkillXpValue(primarySkillType);
|
||||||
|
|
||||||
if (playerSkillLevel <= 0 || playerSkillLevel <= levelThreshold) {
|
if (playerSkillLevel <= 0 || playerSkillLevel <= levelThreshold) {
|
||||||
levelChanged.put(primarySkillType.toString(), 0);
|
levelChanged.put(primarySkillType.toString(), 0);
|
||||||
@ -93,8 +93,8 @@ public final class HardcoreManager {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int killerSkillLevel = killerProfile.getExperienceManager().getSkillLevel(primarySkillType);
|
int killerSkillLevel = killerProfile.getExperienceHandler().getSkillLevel(primarySkillType);
|
||||||
int victimSkillLevel = victimProfile.getExperienceManager().getSkillLevel(primarySkillType);
|
int victimSkillLevel = victimProfile.getExperienceHandler().getSkillLevel(primarySkillType);
|
||||||
|
|
||||||
if (victimSkillLevel <= 0 || victimSkillLevel < killerSkillLevel / 2 || victimSkillLevel <= levelThreshold) {
|
if (victimSkillLevel <= 0 || victimSkillLevel < killerSkillLevel / 2 || victimSkillLevel <= levelThreshold) {
|
||||||
levelChanged.put(primarySkillType.toString(), 0);
|
levelChanged.put(primarySkillType.toString(), 0);
|
||||||
@ -102,7 +102,7 @@ public final class HardcoreManager {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int victimSkillXpLevel = victimProfile.getExperienceManager().getSkillXpValue(primarySkillType);
|
int victimSkillXpLevel = victimProfile.getExperienceHandler().getSkillXpValue(primarySkillType);
|
||||||
|
|
||||||
double statsStolen = victimSkillLevel * (vampirismStatLeechPercentage * 0.01D);
|
double statsStolen = victimSkillLevel * (vampirismStatLeechPercentage * 0.01D);
|
||||||
int levelsStolen = (int) statsStolen;
|
int levelsStolen = (int) statsStolen;
|
||||||
|
@ -308,7 +308,7 @@ public final class Misc {
|
|||||||
* @return true if the player is the party leader
|
* @return true if the player is the party leader
|
||||||
*/
|
*/
|
||||||
public static boolean isPartyLeader(@NotNull OnlineMMOPlayer mmoPlayer) {
|
public static boolean isPartyLeader(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||||
return mmoPlayer.getParty().getLeader().getUniqueId().equals(mmoPlayer.getPlayer().getUniqueId());
|
return mcMMO.getPartyManager().queryParty(mmoPlayer.getUUID()).getPartyMemberManager().getPartyLeader().getUniqueId().equals(mmoPlayer.getUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
// public static void spawnExperienceOrb(@NotNull Location location, int orbAmount, int experienceValue) {
|
// public static void spawnExperienceOrb(@NotNull Location location, int orbAmount, int experienceValue) {
|
||||||
@ -325,6 +325,10 @@ public final class Misc {
|
|||||||
experienceOrb.setExperience(experienceValue);
|
experienceOrb.setExperience(experienceValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static @NotNull Player adaptPlayer(@NotNull OnlineMMOPlayer onlineMMOPlayer) {
|
||||||
|
return (Player) onlineMMOPlayer.getServerAPIPlayerImpl();
|
||||||
|
}
|
||||||
|
|
||||||
private static class SpawnOrbTask extends BukkitRunnable {
|
private static class SpawnOrbTask extends BukkitRunnable {
|
||||||
private final Location location;
|
private final Location location;
|
||||||
private int orbExpValue;
|
private int orbExpValue;
|
||||||
|
@ -7,6 +7,7 @@ import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
|||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
|
import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -115,6 +116,7 @@ public final class Permissions {
|
|||||||
public static boolean hasSalvageEnchantBypassPerk(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.bypass.salvageenchant"); }
|
public static boolean hasSalvageEnchantBypassPerk(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.bypass.salvageenchant"); }
|
||||||
|
|
||||||
public static boolean lucky(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.perks.lucky." + skill.toString().toLowerCase(Locale.ENGLISH)); }
|
public static boolean lucky(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.perks.lucky." + skill.toString().toLowerCase(Locale.ENGLISH)); }
|
||||||
|
public static boolean lucky(Permissible permissible, RootSkill rootSkill) { return permissible.hasPermission("mcmmo.perks.lucky." + rootSkill.getSkillName().toLowerCase(Locale.ENGLISH)); }
|
||||||
|
|
||||||
/* XP PERKS */
|
/* XP PERKS */
|
||||||
public static boolean quadrupleXp(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.quadruple." + skill.toString().toLowerCase(Locale.ENGLISH)); }
|
public static boolean quadrupleXp(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.quadruple." + skill.toString().toLowerCase(Locale.ENGLISH)); }
|
||||||
|
@ -79,7 +79,7 @@ public final class CommandUtils {
|
|||||||
*/
|
*/
|
||||||
public static boolean checkPlayerExistence(CommandSender sender, String playerName, OnlineMMOPlayer mmoPlayer) {
|
public static boolean checkPlayerExistence(CommandSender sender, String playerName, OnlineMMOPlayer mmoPlayer) {
|
||||||
if (mmoPlayer != null) {
|
if (mmoPlayer != null) {
|
||||||
if (CommandUtils.hidden(sender, mmoPlayer.getPlayer(), false)) {
|
if (CommandUtils.hidden(sender, Misc.adaptPlayer(mmoPlayer), false)) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -200,7 +200,7 @@ public final class CommandUtils {
|
|||||||
if (skill.isChildSkill()) {
|
if (skill.isChildSkill()) {
|
||||||
return LocaleLoader.getString("Skills.ChildStats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener") + " ", profile.getSkillLevel(skill));
|
return LocaleLoader.getString("Skills.ChildStats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener") + " ", profile.getSkillLevel(skill));
|
||||||
}
|
}
|
||||||
if (profile.getExperienceManager().getSkillLevel(skill) == Config.getInstance().getLevelCap(skill)){
|
if (profile.getExperienceHandler().getSkillLevel(skill) == Config.getInstance().getLevelCap(skill)){
|
||||||
return LocaleLoader.getString("Skills.Stats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener") + " ", profile.getSkillLevel(skill), profile.getSkillXpLevel(skill), LocaleLoader.getString("Skills.MaxXP"));
|
return LocaleLoader.getString("Skills.Stats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener") + " ", profile.getSkillLevel(skill), profile.getSkillXpLevel(skill), LocaleLoader.getString("Skills.MaxXP"));
|
||||||
}
|
}
|
||||||
return LocaleLoader.getString("Skills.Stats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener") + " ", profile.getSkillLevel(skill), profile.getSkillXpLevel(skill), profile.getXpToLevel(skill));
|
return LocaleLoader.getString("Skills.Stats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener") + " ", profile.getSkillLevel(skill), profile.getSkillXpLevel(skill), profile.getXpToLevel(skill));
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
package com.gmail.nossr50.util.experience;
|
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.skills.CoreSkills;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.player.PlayerLevelUtils;
|
import com.gmail.nossr50.util.player.PlayerLevelUtils;
|
||||||
import com.gmail.nossr50.util.text.StringUtils;
|
import com.gmail.nossr50.util.text.StringUtils;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.neetgames.mcmmo.skill.SkillIdentity;
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.boss.BarColor;
|
import org.bukkit.boss.BarColor;
|
||||||
import org.bukkit.boss.BarStyle;
|
import org.bukkit.boss.BarStyle;
|
||||||
import org.bukkit.boss.BossBar;
|
import org.bukkit.boss.BossBar;
|
||||||
@ -19,9 +22,9 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class ExperienceBarWrapper {
|
public class ExperienceBarWrapper {
|
||||||
|
|
||||||
private final @NotNull SkillIdentity skillIdentity; //Primary Skill
|
private final @NotNull RootSkill rootSkill; //Primary Skill
|
||||||
private @NotNull BossBar bossBar;
|
private @NotNull BossBar bossBar;
|
||||||
protected final @NotNull OnlineMMOPlayer onlineMMOPlayer;
|
protected final @NotNull McMMOPlayer mmoPlayer;
|
||||||
private int lastLevelUpdated;
|
private int lastLevelUpdated;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -30,14 +33,14 @@ public class ExperienceBarWrapper {
|
|||||||
protected String niceSkillName;
|
protected String niceSkillName;
|
||||||
protected String title;
|
protected String title;
|
||||||
|
|
||||||
public ExperienceBarWrapper(@NotNull SkillIdentity skillIdentity, @NotNull OnlineMMOPlayer onlineMMOPlayer) {
|
public ExperienceBarWrapper(@NotNull RootSkill rootSkill, @NotNull McMMOPlayer mmoPlayer) {
|
||||||
this.onlineMMOPlayer = onlineMMOPlayer;
|
this.mmoPlayer = mmoPlayer;
|
||||||
this.skillIdentity = skillIdentity;
|
this.rootSkill = rootSkill;
|
||||||
title = "";
|
title = "";
|
||||||
lastLevelUpdated = 0;
|
lastLevelUpdated = 0;
|
||||||
|
|
||||||
//These vars are stored to help reduce operations involving strings
|
//These vars are stored to help reduce operations involving strings
|
||||||
niceSkillName = StringUtils.getCapitalized(skillIdentity.toString());
|
niceSkillName = StringUtils.getCapitalized(rootSkill.toString());
|
||||||
|
|
||||||
//Create the bar
|
//Create the bar
|
||||||
initBar();
|
initBar();
|
||||||
@ -56,7 +59,7 @@ public class ExperienceBarWrapper {
|
|||||||
private String getTitleTemplate() {
|
private String getTitleTemplate() {
|
||||||
//If they are using extra details
|
//If they are using extra details
|
||||||
|
|
||||||
if(ExperienceConfig.getInstance().isEarlyGameBoostEnabled() && PlayerLevelUtils.qualifiesForEarlyGameBoost(onlineMMOPlayer, skillIdentity)) {
|
if(ExperienceConfig.getInstance().isEarlyGameBoostEnabled() && PlayerLevelUtils.qualifiesForEarlyGameBoost(mmoPlayer, rootSkill)) {
|
||||||
return LocaleLoader.getString("XPBar.Template.EarlyGameBoost");
|
return LocaleLoader.getString("XPBar.Template.EarlyGameBoost");
|
||||||
} else if(ExperienceConfig.getInstance().getAddExtraDetails())
|
} else if(ExperienceConfig.getInstance().getAddExtraDetails())
|
||||||
return LocaleLoader.getString("XPBar.Complex.Template", LocaleLoader.getString("XPBar."+niceSkillName, getLevel()), getCurrentXP(), getMaxXP(), getPowerLevel(), getPercentageOfLevel());
|
return LocaleLoader.getString("XPBar.Complex.Template", LocaleLoader.getString("XPBar."+niceSkillName, getLevel()), getCurrentXP(), getMaxXP(), getPowerLevel(), getPercentageOfLevel());
|
||||||
@ -65,16 +68,16 @@ public class ExperienceBarWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int getLevel() {
|
private int getLevel() {
|
||||||
return onlineMMOPlayer.getSkillLevel(skillIdentity);
|
return mmoPlayer.getSkillLevel(rootSkill);
|
||||||
}
|
}
|
||||||
private int getCurrentXP() {
|
private int getCurrentXP() {
|
||||||
return onlineMMOPlayer.getSkillExperience(skillIdentity);
|
return mmoPlayer.getSkillExperience(rootSkill);
|
||||||
}
|
}
|
||||||
private int getMaxXP() {
|
private int getMaxXP() {
|
||||||
return onlineMMOPlayer.getExperienceToNextLevel(skillIdentity);
|
return mmoPlayer.getExperienceToNextLevel(rootSkill);
|
||||||
}
|
}
|
||||||
private int getPowerLevel() { return onlineMMOPlayer.getPowerLevel(); }
|
private int getPowerLevel() { return mmoPlayer.getPowerLevel(); }
|
||||||
private int getPercentageOfLevel() { return (int) (onlineMMOPlayer.getProgressInCurrentSkillLevel(skillIdentity) * 100); }
|
private int getPercentageOfLevel() { return (int) (mmoPlayer.getProgressInCurrentSkillLevel(rootSkill) * 100); }
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return bossBar.getTitle();
|
return bossBar.getTitle();
|
||||||
@ -111,10 +114,10 @@ public class ExperienceBarWrapper {
|
|||||||
bossBar.setProgress(v);
|
bossBar.setProgress(v);
|
||||||
|
|
||||||
//Check player level
|
//Check player level
|
||||||
if(ExperienceConfig.getInstance().isEarlyGameBoostEnabled() && PlayerLevelUtils.qualifiesForEarlyGameBoost(mmoPlayer, skillIdentity)) {
|
if(ExperienceConfig.getInstance().isEarlyGameBoostEnabled() && PlayerLevelUtils.qualifiesForEarlyGameBoost(mmoPlayer, rootSkill)) {
|
||||||
setColor(BarColor.YELLOW);
|
setColor(BarColor.YELLOW);
|
||||||
} else {
|
} else {
|
||||||
setColor(ExperienceConfig.getInstance().getExperienceBarColor(skillIdentity));
|
setColor(ExperienceConfig.getInstance().getExperienceBarColor(rootSkill));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Every time progress updates we need to check for a title update
|
//Every time progress updates we need to check for a title update
|
||||||
@ -154,7 +157,7 @@ public class ExperienceBarWrapper {
|
|||||||
|
|
||||||
private void createBossBar()
|
private void createBossBar()
|
||||||
{
|
{
|
||||||
bossBar = mmoPlayer.getPlayer().getServer().createBossBar(title, ExperienceConfig.getInstance().getExperienceBarColor(skillIdentity), ExperienceConfig.getInstance().getExperienceBarStyle(skillIdentity));
|
bossBar = Bukkit.getServer().createBossBar(title, ExperienceConfig.getInstance().getExperienceBarColor(rootSkill), ExperienceConfig.getInstance().getExperienceBarStyle(rootSkill));
|
||||||
bossBar.addPlayer(mmoPlayer.getPlayer());
|
bossBar.addPlayer(mmoPlayer.getPlayer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.gmail.nossr50.util.experience;
|
package com.gmail.nossr50.util.experience;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
|
||||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
@ -17,11 +15,11 @@ public class ExperienceUtils {
|
|||||||
* @param xp Experience amount to add
|
* @param xp Experience amount to add
|
||||||
*/
|
*/
|
||||||
public static void applyXpGain(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
public static void applyXpGain(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
||||||
mmoPlayer.getExperienceManager().applyXpGain(primarySkillType, xp, xpGainReason, xpGainSource);
|
mmoPlayer.getExperienceHandler().applyXpGain(primarySkillType, xp, xpGainReason, xpGainSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void processPostXpEvent(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType, @NotNull Plugin plugin, @NotNull XPGainSource xpGainSource) {
|
public static void processPostXpEvent(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType, @NotNull Plugin plugin, @NotNull XPGainSource xpGainSource) {
|
||||||
mmoPlayer.getExperienceManager().processPostXpEvent(primarySkillType, plugin, xpGainSource);
|
mmoPlayer.getExperienceHandler().processPostXpEvent(primarySkillType, plugin, xpGainSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,6 +28,6 @@ public class ExperienceUtils {
|
|||||||
* @param primarySkillType The skill to check
|
* @param primarySkillType The skill to check
|
||||||
*/
|
*/
|
||||||
public static void updateLevelStats(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
public static void updateLevelStats(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
|
||||||
mmoPlayer.getExperienceManager().updateLevelStats(primarySkillType, xpGainReason, xpGainSource);
|
mmoPlayer.getExperienceHandler().updateLevelStats(primarySkillType, xpGainReason, xpGainSource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
package com.gmail.nossr50.util.experience;
|
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.util.Misc;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.CoreSkillConstants;
|
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.runnables.skills.ExperienceBarHideTask;
|
import com.gmail.nossr50.runnables.skills.ExperienceBarHideTask;
|
||||||
import com.gmail.nossr50.util.player.NotificationManager;
|
import com.gmail.nossr50.util.player.NotificationManager;
|
||||||
import com.neetgames.mcmmo.skill.*;
|
import com.neetgames.mcmmo.skill.*;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.EnumMap;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -21,17 +20,16 @@ import java.util.Map;
|
|||||||
* Each ExperienceBarManager only manages a single player
|
* Each ExperienceBarManager only manages a single player
|
||||||
*/
|
*/
|
||||||
public class MMOExperienceBarManager {
|
public class MMOExperienceBarManager {
|
||||||
private final OnlineMMOPlayer mmoPlayer;
|
private final McMMOPlayer mmoPlayer;
|
||||||
|
|
||||||
int delaySeconds = 3;
|
int delaySeconds = 3;
|
||||||
|
|
||||||
private @NotNull final Map<SkillIdentity, SkillBossBarState> barStateMapRef;
|
private @NotNull final Map<RootSkill, SkillBossBarState> barStateMapRef;
|
||||||
|
|
||||||
private @NotNull final HashMap<SkillIdentity, ExperienceBarWrapper> experienceBars;
|
private @NotNull final Map<RootSkill, ExperienceBarWrapper> experienceBars;
|
||||||
private @NotNull final HashMap<SkillIdentity, ExperienceBarHideTask> experienceBarHideTaskHashMap;
|
private @NotNull final Map<RootSkill, ExperienceBarHideTask> experienceBarHideTaskHashMap;
|
||||||
|
|
||||||
|
public MMOExperienceBarManager(@NotNull McMMOPlayer mmoPlayer, @NotNull Map<RootSkill, SkillBossBarState> barStateMapRef)
|
||||||
public MMOExperienceBarManager(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull Map<SkillIdentity, SkillBossBarState> barStateMapRef)
|
|
||||||
{
|
{
|
||||||
this.mmoPlayer = mmoPlayer;
|
this.mmoPlayer = mmoPlayer;
|
||||||
this.barStateMapRef = barStateMapRef;
|
this.barStateMapRef = barStateMapRef;
|
||||||
@ -48,8 +46,8 @@ public class MMOExperienceBarManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void syncBarStates() {
|
private void syncBarStates() {
|
||||||
for(Map.Entry<SkillIdentity, SkillBossBarState> entry : barStateMapRef.entrySet()) {
|
for(Map.Entry<RootSkill, SkillBossBarState> entry : barStateMapRef.entrySet()) {
|
||||||
SkillIdentity key = entry.getKey();
|
RootSkill key = entry.getKey();
|
||||||
SkillBossBarState barState = entry.getValue();
|
SkillBossBarState barState = entry.getValue();
|
||||||
|
|
||||||
switch(barState) {
|
switch(barState) {
|
||||||
@ -67,130 +65,130 @@ public class MMOExperienceBarManager {
|
|||||||
barStateMapRef.putAll(generateDefaultBarStateMap());
|
barStateMapRef.putAll(generateDefaultBarStateMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateExperienceBar(@NotNull SkillIdentity skillIdentity, @NotNull Plugin plugin)
|
public void updateExperienceBar(@NotNull RootSkill rootSkill, @NotNull Plugin plugin)
|
||||||
{
|
{
|
||||||
if(isBarDisabled(skillIdentity))
|
if(isBarDisabled(rootSkill))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Init Bar
|
//Init Bar
|
||||||
if(experienceBars.get(skillIdentity) == null)
|
if(experienceBars.get(rootSkill) == null)
|
||||||
experienceBars.put(skillIdentity, new ExperienceBarWrapper(skillIdentity, mmoPlayer.getPersistentPlayerData()));
|
experienceBars.put(rootSkill, new ExperienceBarWrapper(rootSkill, mmoPlayer));
|
||||||
|
|
||||||
//Get Bar
|
//Get Bar
|
||||||
ExperienceBarWrapper experienceBarWrapper = experienceBars.get(skillIdentity);
|
ExperienceBarWrapper experienceBarWrapper = experienceBars.get(rootSkill);
|
||||||
|
|
||||||
//Update Progress
|
//Update Progress
|
||||||
experienceBarWrapper.setProgress(mmoPlayer.getExperienceManager().getProgressInCurrentSkillLevel(skillIdentity));
|
experienceBarWrapper.setProgress(mmoPlayer.getExperienceHandler().getProgressInCurrentSkillLevel(rootSkill));
|
||||||
|
|
||||||
//Show Bar
|
//Show Bar
|
||||||
experienceBarWrapper.showExperienceBar();
|
experienceBarWrapper.showExperienceBar();
|
||||||
|
|
||||||
//Setup Hide Bar Task
|
//Setup Hide Bar Task
|
||||||
if(experienceBarHideTaskHashMap.get(skillIdentity) != null)
|
if(experienceBarHideTaskHashMap.get(rootSkill) != null)
|
||||||
{
|
{
|
||||||
experienceBarHideTaskHashMap.get(skillIdentity).cancel();
|
experienceBarHideTaskHashMap.get(rootSkill).cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
scheduleHideTask(skillIdentity, plugin);
|
scheduleHideTask(rootSkill, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isBarDisabled(PrimarySkillType primarySkillType) {
|
private boolean isBarDisabled(@NotNull RootSkill rootSkill) {
|
||||||
return barStateMapRef.get(primarySkillType) == BarState.DISABLED
|
return barStateMapRef.get(rootSkill) == SkillBossBarState.DISABLED
|
||||||
//Config checks
|
//Config checks
|
||||||
|| !ExperienceConfig.getInstance().isExperienceBarsEnabled()
|
|| !ExperienceConfig.getInstance().isExperienceBarsEnabled()
|
||||||
|| !ExperienceConfig.getInstance().isExperienceBarEnabled(primarySkillType);
|
|| !ExperienceConfig.getInstance().isExperienceBarEnabled(rootSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isBarAlwaysVisible(PrimarySkillType primarySkillType) {
|
private boolean isBarAlwaysVisible(@NotNull RootSkill rootSkill) {
|
||||||
return barStateMapRef.get(primarySkillType) == BarState.ALWAYS_ON;
|
return barStateMapRef.get(rootSkill) == SkillBossBarState.ALWAYS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scheduleHideTask(PrimarySkillType primarySkillType, Plugin plugin) {
|
private void scheduleHideTask(@NotNull RootSkill rootSkill, @NotNull Plugin plugin) {
|
||||||
if(isBarAlwaysVisible(primarySkillType))
|
if(isBarAlwaysVisible(rootSkill))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ExperienceBarHideTask experienceBarHideTask = new ExperienceBarHideTask(this, mmoPlayer, primarySkillType);
|
ExperienceBarHideTask experienceBarHideTask = new ExperienceBarHideTask(this, mmoPlayer, rootSkill);
|
||||||
experienceBarHideTask.runTaskLater(plugin, 20 * delaySeconds);
|
experienceBarHideTask.runTaskLater(plugin, 20 * delaySeconds);
|
||||||
experienceBarHideTaskHashMap.put(primarySkillType, experienceBarHideTask);
|
experienceBarHideTaskHashMap.put(rootSkill, experienceBarHideTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void hideExperienceBar(PrimarySkillType primarySkillType)
|
public void hideExperienceBar(@NotNull RootSkill rootSkill)
|
||||||
{
|
{
|
||||||
if(experienceBars.containsKey(primarySkillType))
|
if(experienceBars.containsKey(rootSkill))
|
||||||
experienceBars.get(primarySkillType).hideExperienceBar();
|
experienceBars.get(rootSkill).hideExperienceBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearTask(PrimarySkillType primarySkillType)
|
public void clearTask(@NotNull RootSkill rootSkill)
|
||||||
{
|
{
|
||||||
experienceBarHideTaskHashMap.remove(primarySkillType);
|
experienceBarHideTaskHashMap.remove(rootSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disableAllBars() {
|
public void disableAllBars() {
|
||||||
for(PrimarySkillType primarySkillType : PrimarySkillType.values()) {
|
for(RootSkill rootSkill : mcMMO.p.getSkillRegister().getRootSkills()) {
|
||||||
xpBarSettingToggle(XPBarSettingTarget.HIDE, primarySkillType);
|
xpBarSettingToggle(SkillBossBarSetting.HIDE, rootSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
NotificationManager.sendPlayerInformationChatOnlyPrefixed(mmoPlayer.getPlayer(), "Commands.XPBar.DisableAll");
|
NotificationManager.sendPlayerInformationChatOnlyPrefixed(Misc.adaptPlayer(mmoPlayer), "Commands.XPBar.DisableAll");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void xpBarSettingToggle(@NotNull SkillBossBarSetting skillBossBarSetting, @Nullable SkillIdentity skillIdentity) {
|
public void xpBarSettingToggle(@NotNull SkillBossBarSetting skillBossBarSetting, @NotNull RootSkill rootSkill) {
|
||||||
switch(skillBossBarSetting) {
|
switch(skillBossBarSetting) {
|
||||||
case SHOW:
|
case SHOW:
|
||||||
barStateMapRef.put(skillIdentity, SkillBossBarState.ALWAYS_ON);
|
barStateMapRef.put(rootSkill, SkillBossBarState.ALWAYS_ON);
|
||||||
|
|
||||||
//Remove lingering tasks
|
//Remove lingering tasks
|
||||||
if(experienceBarHideTaskHashMap.containsKey(skillIdentity)) {
|
if(experienceBarHideTaskHashMap.containsKey(rootSkill)) {
|
||||||
experienceBarHideTaskHashMap.get(skillIdentity).cancel();
|
experienceBarHideTaskHashMap.get(rootSkill).cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateExperienceBar(skillIdentity, mcMMO.p);
|
updateExperienceBar(rootSkill, mcMMO.p);
|
||||||
break;
|
break;
|
||||||
case HIDE:
|
case HIDE:
|
||||||
barStateMapRef.put(skillIdentity, SkillBossBarState.DISABLED);
|
barStateMapRef.put(rootSkill, SkillBossBarState.DISABLED);
|
||||||
|
|
||||||
//Remove lingering tasks
|
//Remove lingering tasks
|
||||||
if(experienceBarHideTaskHashMap.containsKey(skillIdentity)) {
|
if(experienceBarHideTaskHashMap.containsKey(rootSkill)) {
|
||||||
experienceBarHideTaskHashMap.get(skillIdentity).cancel();
|
experienceBarHideTaskHashMap.get(rootSkill).cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
hideExperienceBar(skillIdentity);
|
hideExperienceBar(rootSkill);
|
||||||
break;
|
break;
|
||||||
case RESET:
|
case RESET:
|
||||||
resetBarSettings();
|
resetBarSettings();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
informPlayer(skillBossBarSetting, skillIdentity);
|
informPlayer(skillBossBarSetting, rootSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetBarSettings() {
|
private void resetBarSettings() {
|
||||||
barStateMapRef.putAll(generateDefaultBarStateMap());
|
barStateMapRef.putAll(generateDefaultBarStateMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void informPlayer(@NotNull SkillBossBarSetting settingTarget, @Nullable PrimarySkillType skillType) {
|
private void informPlayer(@NotNull SkillBossBarSetting settingTarget, @NotNull RootSkill rootSkill) {
|
||||||
//Inform player of setting change
|
//Inform player of setting change
|
||||||
if(settingTarget != SkillBossBarSetting.RESET) {
|
if(settingTarget != SkillBossBarSetting.RESET) {
|
||||||
NotificationManager.sendPlayerInformationChatOnlyPrefixed(mmoPlayer.getPlayer(), "Commands.XPBar.SettingChanged", skillType.getName(), settingTarget.toString());
|
NotificationManager.sendPlayerInformationChatOnlyPrefixed(Misc.adaptPlayer(mmoPlayer), "Commands.XPBar.SettingChanged", rootSkill.getSkillName(), settingTarget.toString());
|
||||||
} else {
|
} else {
|
||||||
NotificationManager.sendPlayerInformationChatOnlyPrefixed(mmoPlayer.getPlayer(), "Commands.XPBar.Reset");
|
NotificationManager.sendPlayerInformationChatOnlyPrefixed(Misc.adaptPlayer(mmoPlayer), "Commands.XPBar.Reset");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NotNull HashMap<SkillIdentity, SkillBossBarState> generateDefaultBarStateMap() {
|
public static @NotNull Map<RootSkill, SkillBossBarState> generateDefaultBarStateMap() {
|
||||||
HashMap<SkillIdentity, SkillBossBarState> barStateMap = new HashMap<>();
|
HashMap<RootSkill, SkillBossBarState> barStateMap = new HashMap<>();
|
||||||
|
|
||||||
setBarStateDefaults(barStateMap);
|
setBarStateDefaults(barStateMap);
|
||||||
|
|
||||||
return barStateMap;
|
return barStateMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setBarStateDefaults(HashMap<SkillIdentity, SkillBossBarState> barStateHashMap) {
|
public static void setBarStateDefaults(@NotNull Map<RootSkill, SkillBossBarState> barStateHashMap) {
|
||||||
for(RootSkill rootSkill : CoreSkillConstants.getImmutableCoreRootSkillSet()) {
|
for(RootSkill rootSkill : CoreSkills.getImmutableCoreRootSkillSet()) {
|
||||||
|
|
||||||
if(CoreSkillConstants.isChildSkill(rootSkill.getSkillIdentity())) {
|
if(CoreSkills.isChildSkill(rootSkill)) {
|
||||||
barStateHashMap.put(rootSkill.getSkillIdentity(), SkillBossBarState.DISABLED);
|
barStateHashMap.put(rootSkill, SkillBossBarState.DISABLED);
|
||||||
} else {
|
} else {
|
||||||
barStateHashMap.put(rootSkill.getSkillIdentity(), SkillBossBarState.NORMAL);
|
barStateHashMap.put(rootSkill, SkillBossBarState.NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ public class AbilityActivationProcessor {
|
|||||||
|
|
||||||
public AbilityActivationProcessor(OnlineMMOPlayer mmoPlayer) {
|
public AbilityActivationProcessor(OnlineMMOPlayer mmoPlayer) {
|
||||||
this.mmoPlayer = mmoPlayer;
|
this.mmoPlayer = mmoPlayer;
|
||||||
this.player = mmoPlayer.getPlayer();
|
this.player = Misc.adaptPlayer(mmoPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -98,7 +98,7 @@ public class AbilityActivationProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* GREEN THUMB CHECK */
|
/* GREEN THUMB CHECK */
|
||||||
HerbalismManager herbalismManager = mmoPlayer.getHerbalismManager();
|
HerbalismManager herbalismManager = ((McMMOPlayer) (mmoPlayer)).getHerbalismManager();
|
||||||
|
|
||||||
if (getHeldItem().getType() == Material.BONE_MEAL) {
|
if (getHeldItem().getType() == Material.BONE_MEAL) {
|
||||||
switch (blockState.getType()) {
|
switch (blockState.getType()) {
|
||||||
@ -157,7 +157,7 @@ public class AbilityActivationProcessor {
|
|||||||
//TODO: This is strange, why is this needed?
|
//TODO: This is strange, why is this needed?
|
||||||
//TODO: This is strange, why is this needed?
|
//TODO: This is strange, why is this needed?
|
||||||
/* BLAST MINING CHECK */
|
/* BLAST MINING CHECK */
|
||||||
MiningManager miningManager = mmoPlayer.getMiningManager();
|
MiningManager miningManager = ((McMMOPlayer) (mmoPlayer)).getMiningManager();
|
||||||
if (miningManager.canDetonate()) {
|
if (miningManager.canDetonate()) {
|
||||||
miningManager.remoteDetonation();
|
miningManager.remoteDetonation();
|
||||||
}
|
}
|
||||||
@ -178,7 +178,7 @@ public class AbilityActivationProcessor {
|
|||||||
|
|
||||||
/* CALL OF THE WILD CHECKS */
|
/* CALL OF THE WILD CHECKS */
|
||||||
Material type = getHeldItem().getType();
|
Material type = getHeldItem().getType();
|
||||||
TamingManager tamingManager = mmoPlayer.getTamingManager();
|
TamingManager tamingManager = ((McMMOPlayer) (mmoPlayer)).getTamingManager();
|
||||||
|
|
||||||
if (type == Config.getInstance().getTamingCOTWMaterial(CallOfTheWildType.WOLF.getConfigEntityTypeEntry())) {
|
if (type == Config.getInstance().getTamingCOTWMaterial(CallOfTheWildType.WOLF.getConfigEntityTypeEntry())) {
|
||||||
tamingManager.summonWolf();
|
tamingManager.summonWolf();
|
||||||
|
@ -3,8 +3,8 @@ package com.gmail.nossr50.util.input;
|
|||||||
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.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.player.PersistentPlayerData;
|
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||||
import com.gmail.nossr50.datatypes.skills.AbilityToolType;
|
import com.gmail.nossr50.datatypes.skills.AbilityToolType;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
|
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
|
||||||
@ -28,7 +28,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
public class SuperAbilityManager {
|
public class SuperAbilityManager {
|
||||||
|
|
||||||
private final OnlineMMOPlayer mmoPlayer;
|
private final McMMOPlayer mmoPlayer;
|
||||||
private final Player player;
|
private final Player player;
|
||||||
|
|
||||||
private final Map<SuperAbilityType, Boolean> superAbilityState = new HashMap<>();
|
private final Map<SuperAbilityType, Boolean> superAbilityState = new HashMap<>();
|
||||||
@ -37,12 +37,12 @@ public class SuperAbilityManager {
|
|||||||
private boolean abilityActivationPermission = true;
|
private boolean abilityActivationPermission = true;
|
||||||
|
|
||||||
private final Map<AbilityToolType, Boolean> toolMode = new HashMap<>();
|
private final Map<AbilityToolType, Boolean> toolMode = new HashMap<>();
|
||||||
private final PersistentPlayerData persistentPlayerData;
|
private final MMOPlayerData mmoPlayerData;
|
||||||
|
|
||||||
public SuperAbilityManager(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull PersistentPlayerData persistentPlayerData) {
|
public SuperAbilityManager(@NotNull McMMOPlayer mmoPlayer, @NotNull MMOPlayerData mmoPlayerData) {
|
||||||
this.mmoPlayer = mmoPlayer;
|
this.mmoPlayer = mmoPlayer;
|
||||||
this.persistentPlayerData = persistentPlayerData;
|
this.mmoPlayerData = mmoPlayerData;
|
||||||
this.player = mmoPlayer.getPlayer();
|
this.player = Misc.adaptPlayer(mmoPlayer);
|
||||||
|
|
||||||
for (SuperAbilityType superAbilityType : SuperAbilityType.values()) {
|
for (SuperAbilityType superAbilityType : SuperAbilityType.values()) {
|
||||||
superAbilityState.put(superAbilityType, false);
|
superAbilityState.put(superAbilityType, false);
|
||||||
@ -55,7 +55,7 @@ public class SuperAbilityManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void processAbilityActivation(PrimarySkillType skill) {
|
public void processAbilityActivation(PrimarySkillType skill) {
|
||||||
Player player = mmoPlayer.getPlayer();
|
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||||
|
|
||||||
if (!skill.getPermissions(player)) {
|
if (!skill.getPermissions(player)) {
|
||||||
return;
|
return;
|
||||||
@ -243,7 +243,7 @@ public class SuperAbilityManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void resetCooldowns() {
|
public void resetCooldowns() {
|
||||||
this.persistentPlayerData.resetCooldowns();
|
this.mmoPlayerData.resetCooldowns();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -336,7 +336,7 @@ public class SuperAbilityManager {
|
|||||||
*/
|
*/
|
||||||
public int calculateTimeRemaining(SuperAbilityType superAbilityType) {
|
public int calculateTimeRemaining(SuperAbilityType superAbilityType) {
|
||||||
long deactivatedTimestamp = mmoPlayer.getAbilityDATS(superAbilityType) * Misc.TIME_CONVERSION_FACTOR;
|
long deactivatedTimestamp = mmoPlayer.getAbilityDATS(superAbilityType) * Misc.TIME_CONVERSION_FACTOR;
|
||||||
return (int) (((deactivatedTimestamp + (PerksUtils.handleCooldownPerks(mmoPlayer.getPlayer(), superAbilityType.getCooldown()) * Misc.TIME_CONVERSION_FACTOR)) - System.currentTimeMillis()) / Misc.TIME_CONVERSION_FACTOR);
|
return (int) (((deactivatedTimestamp + (PerksUtils.handleCooldownPerks(Misc.adaptPlayer(mmoPlayer), superAbilityType.getCooldown()) * Misc.TIME_CONVERSION_FACTOR)) - System.currentTimeMillis()) / Misc.TIME_CONVERSION_FACTOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,9 @@ import com.gmail.nossr50.config.AdvancedConfig;
|
|||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.gmail.nossr50.datatypes.notifications.SensitiveCommandType;
|
import com.gmail.nossr50.datatypes.notifications.SensitiveCommandType;
|
||||||
|
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||||
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
import com.gmail.nossr50.events.skills.McMMOPlayerNotificationEvent;
|
import com.gmail.nossr50.events.skills.McMMOPlayerNotificationEvent;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
@ -15,6 +16,7 @@ import com.gmail.nossr50.util.sounds.SoundManager;
|
|||||||
import com.gmail.nossr50.util.sounds.SoundType;
|
import com.gmail.nossr50.util.sounds.SoundType;
|
||||||
import com.gmail.nossr50.util.text.McMMOMessageType;
|
import com.gmail.nossr50.util.text.McMMOMessageType;
|
||||||
import com.gmail.nossr50.util.text.TextComponentFactory;
|
import com.gmail.nossr50.util.text.TextComponentFactory;
|
||||||
|
import com.neetgames.mcmmo.skill.RootSkill;
|
||||||
import net.kyori.adventure.audience.Audience;
|
import net.kyori.adventure.audience.Audience;
|
||||||
import net.kyori.adventure.audience.MessageType;
|
import net.kyori.adventure.audience.MessageType;
|
||||||
import net.kyori.adventure.identity.Identity;
|
import net.kyori.adventure.identity.Identity;
|
||||||
@ -71,16 +73,15 @@ public class NotificationManager {
|
|||||||
* @param key Locale Key for the string to use with this event
|
* @param key Locale Key for the string to use with this event
|
||||||
* @param values values to be injected into the locale string
|
* @param values values to be injected into the locale string
|
||||||
*/
|
*/
|
||||||
public static void sendNearbyPlayersInformation(@NotNull Player targetPlayer, @NotNull NotificationType notificationType, @NotNull String key, String... values)
|
public static void sendNearbyPlayersInformation(@NotNull Player targetPlayer, @NotNull NotificationType notificationType, @NotNull String key, String... values) {
|
||||||
{
|
|
||||||
sendPlayerInformation(targetPlayer, notificationType, key, values);
|
sendPlayerInformation(targetPlayer, notificationType, key, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendPlayerInformationChatOnly(@NotNull Player player, @NotNull String key, String... values)
|
public static void sendPlayerInformationChatOnly(@NotNull Player player, @NotNull String key, String... values) {
|
||||||
{
|
|
||||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
||||||
|
|
||||||
if(mmoPlayer == null || !mmoPlayer.hasSkillChatNotifications())
|
//Don't send chat notifications if they are disabled
|
||||||
|
if(mmoPlayer != null && !mmoPlayer.hasSkillChatNotifications())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
|
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
|
||||||
@ -91,7 +92,8 @@ public class NotificationManager {
|
|||||||
{
|
{
|
||||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
||||||
|
|
||||||
if(mmoPlayer == null || !mmoPlayer.hasSkillChatNotifications())
|
//Don't send chat notifications if they are disabled
|
||||||
|
if(mmoPlayer != null && !mmoPlayer.hasSkillChatNotifications())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
|
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
|
||||||
@ -99,9 +101,11 @@ public class NotificationManager {
|
|||||||
player.sendMessage(prefixFormattedMessage);
|
player.sendMessage(prefixFormattedMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendPlayerInformation(@NotNull Player player, @NotNull NotificationType notificationType, @NotNull String key, String... values)
|
public static void sendPlayerInformation(@NotNull Player player, @NotNull NotificationType notificationType, @NotNull String key, String... values) {
|
||||||
{
|
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
||||||
if(mcMMO.getUserManager().queryPlayer(player) == null || !mcMMO.getUserManager().queryPlayer(player).hasSkillChatNotifications())
|
|
||||||
|
//Don't send chat notifications if they are disabled
|
||||||
|
if(mmoPlayer != null && !mmoPlayer.hasSkillChatNotifications())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
McMMOMessageType destination = AdvancedConfig.getInstance().doesNotificationUseActionBar(notificationType) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
|
McMMOMessageType destination = AdvancedConfig.getInstance().doesNotificationUseActionBar(notificationType) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
|
||||||
@ -133,7 +137,7 @@ public class NotificationManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static McMMOPlayerNotificationEvent checkNotificationEvent(Player player, NotificationType notificationType, McMMOMessageType destination, Component message) {
|
private static @NotNull McMMOPlayerNotificationEvent checkNotificationEvent(@NotNull Player player, @NotNull NotificationType notificationType, @NotNull McMMOMessageType destination, @NotNull Component message) {
|
||||||
//Init event
|
//Init event
|
||||||
McMMOPlayerNotificationEvent customEvent = new McMMOPlayerNotificationEvent(player,
|
McMMOPlayerNotificationEvent customEvent = new McMMOPlayerNotificationEvent(player,
|
||||||
notificationType, message, destination, AdvancedConfig.getInstance().doesNotificationSendCopyToChat(notificationType));
|
notificationType, message, destination, AdvancedConfig.getInstance().doesNotificationSendCopyToChat(notificationType));
|
||||||
@ -146,20 +150,20 @@ public class NotificationManager {
|
|||||||
/**
|
/**
|
||||||
* Handles sending level up notifications to a mmoPlayer
|
* Handles sending level up notifications to a mmoPlayer
|
||||||
* @param mmoPlayer target mmoPlayer
|
* @param mmoPlayer target mmoPlayer
|
||||||
* @param skillName skill that leveled up
|
* @param rootSkill skill that leveled up
|
||||||
* @param newLevel new level of that skill
|
* @param newLevel new level of that skill
|
||||||
*/
|
*/
|
||||||
public static void sendPlayerLevelUpNotification(OnlineMMOPlayer mmoPlayer, PrimarySkillType skillName, int levelsGained, int newLevel)
|
public static void sendPlayerLevelUpNotification(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull RootSkill rootSkill, int levelsGained, int newLevel)
|
||||||
{
|
{
|
||||||
if(!mmoPlayer.hasSkillChatNotifications())
|
if(!mmoPlayer.hasSkillChatNotifications())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
McMMOMessageType destination = AdvancedConfig.getInstance().doesNotificationUseActionBar(NotificationType.LEVEL_UP_MESSAGE) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
|
McMMOMessageType destination = AdvancedConfig.getInstance().doesNotificationUseActionBar(NotificationType.LEVEL_UP_MESSAGE) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
|
||||||
|
|
||||||
Component levelUpTextComponent = TextComponentFactory.getNotificationLevelUpTextComponent(skillName, levelsGained, newLevel);
|
Component levelUpTextComponent = TextComponentFactory.getNotificationLevelUpTextComponent(CoreSkills.getSkill(rootSkill), levelsGained, newLevel);
|
||||||
McMMOPlayerNotificationEvent customEvent = checkNotificationEvent(mmoPlayer.getPlayer(), NotificationType.LEVEL_UP_MESSAGE, destination, levelUpTextComponent);
|
McMMOPlayerNotificationEvent customEvent = checkNotificationEvent(Misc.adaptPlayer(mmoPlayer), NotificationType.LEVEL_UP_MESSAGE, destination, levelUpTextComponent);
|
||||||
|
|
||||||
sendNotification(mmoPlayer.getPlayer(), customEvent);
|
sendNotification(Misc.adaptPlayer(mmoPlayer), customEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void broadcastTitle(@NotNull Server server, @NotNull String title, @NotNull String subtitle, int i1, int i2, int i3)
|
public static void broadcastTitle(@NotNull Server server, @NotNull String title, @NotNull String subtitle, int i1, int i2, int i3)
|
||||||
@ -176,16 +180,16 @@ public class NotificationManager {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
//CHAT MESSAGE
|
//CHAT MESSAGE
|
||||||
mcMMO.getAudiences().player(mmoPlayer.getPlayer()).sendMessage(Identity.nil(), TextComponentFactory.getSubSkillUnlockedNotificationComponents(mmoPlayer, subSkillType));
|
mcMMO.getAudiences().player(Misc.adaptPlayer(mmoPlayer)).sendMessage(Identity.nil(), TextComponentFactory.getSubSkillUnlockedNotificationComponents(mmoPlayer, subSkillType));
|
||||||
|
|
||||||
//Unlock Sound Effect
|
//Unlock Sound Effect
|
||||||
SoundManager.sendCategorizedSound(mmoPlayer.getPlayer(), mmoPlayer.getPlayer().getLocation(), SoundType.SKILL_UNLOCKED, SoundCategory.MASTER);
|
SoundManager.sendCategorizedSound(Misc.adaptPlayer(mmoPlayer), Misc.adaptPlayer(mmoPlayer).getLocation(), SoundType.SKILL_UNLOCKED, SoundCategory.MASTER);
|
||||||
|
|
||||||
//ACTION BAR MESSAGE
|
//ACTION BAR MESSAGE
|
||||||
/*if(AdvancedConfig.getInstance().doesNotificationUseActionBar(NotificationType.SUBSKILL_UNLOCKED))
|
/*if(AdvancedConfig.getInstance().doesNotificationUseActionBar(NotificationType.SUBSKILL_UNLOCKED))
|
||||||
mmoPlayer.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(LocaleLoader.getString("JSON.SkillUnlockMessage",
|
Misc.adaptPlayer(mmoPlayer).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(LocaleLoader.getString("JSON.SkillUnlockMessage",
|
||||||
subSkillType.getLocaleName(),
|
subSkillType.getLocaleName(),
|
||||||
String.valueOf(RankUtils.getRank(mmoPlayer.getPlayer(),
|
String.valueOf(RankUtils.getRank(Misc.adaptPlayer(mmoPlayer),
|
||||||
subSkillType)))));*/
|
subSkillType)))));*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user