mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-01-20 09:19:36 +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) {
|
||||
if(targetChatChannel == mmoPlayer.getChatChannel()) {
|
||||
//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);
|
||||
} else {
|
||||
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) {
|
||||
switch (mmoPlayer.getChatChannel()) {
|
||||
case ADMIN:
|
||||
if(mmoPlayer.getPlayer().isOp() || Permissions.adminChat(mmoPlayer.getPlayer())) {
|
||||
if(Misc.adaptPlayer(mmoPlayer).isOp() || Permissions.adminChat(mmoPlayer.getPlayer())) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
@ -19,7 +19,7 @@ public class AbilityToggleCommand extends ToggleCommand {
|
||||
|
||||
@Override
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ public class McgodCommand extends ToggleCommand {
|
||||
|
||||
@Override
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@ public class McrefreshCommand extends ToggleCommand {
|
||||
mmoPlayer.getSuperAbilityManager().unprimeAllAbilityTools();
|
||||
mmoPlayer.getSuperAbilityManager().disableSuperAbilities();
|
||||
|
||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -40,7 +40,7 @@ public abstract class ToggleCommand implements TabExecutor {
|
||||
if(mmoPlayer != null) {
|
||||
applyCommandAction(mmoPlayer);
|
||||
} else {
|
||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.NotLoaded"));
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.NotLoaded"));
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -23,7 +23,7 @@ public class PlayerDebugCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
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;
|
||||
} else {
|
||||
return false;
|
||||
|
@ -20,7 +20,7 @@ public class McChatSpy extends ToggleCommand {
|
||||
|
||||
@Override
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
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.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
|
@ -1,7 +1,5 @@
|
||||
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.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
|
@ -109,7 +109,7 @@ public abstract class ExperienceCommand implements TabExecutor {
|
||||
editValues(null, profile, skill, value, isSilent(args));
|
||||
}
|
||||
else {
|
||||
editValues(mmoPlayer.getPlayer(), mcMMOPlayer.getProfile(), skill, value, isSilent(args));
|
||||
editValues(Misc.adaptPlayer(mmoPlayer), mcMMOPlayer.getProfile(), skill, value, isSilent(args));
|
||||
}
|
||||
|
||||
handleSenderMessage(sender, playerName, skill);
|
||||
|
@ -1,6 +1,5 @@
|
||||
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.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.gmail.nossr50.commands.experience;
|
||||
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
@ -91,7 +90,7 @@ public class SkillresetCommand implements TabExecutor {
|
||||
editValues(null, profile, skill);
|
||||
}
|
||||
else {
|
||||
editValues(mmoPlayer.getPlayer(), mmoPlayer, skill);
|
||||
editValues(Misc.adaptPlayer(mmoPlayer), mmoPlayer, skill);
|
||||
}
|
||||
|
||||
handleSenderMessage(sender, playerName, skill);
|
||||
|
@ -33,7 +33,7 @@ public class PartyRenameCommand implements CommandExecutor {
|
||||
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
|
||||
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.PartyFeature;
|
||||
import com.gmail.nossr50.datatypes.party.PartyTeleportRecord;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
@ -196,7 +197,7 @@ public class PtpCommand implements TabExecutor {
|
||||
}
|
||||
|
||||
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)) {
|
||||
return false;
|
||||
@ -228,28 +229,29 @@ public class PtpCommand implements TabExecutor {
|
||||
}
|
||||
|
||||
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"));
|
||||
return;
|
||||
}
|
||||
|
||||
if(mcMMO.getUserManager().queryPlayer(teleportingPlayer) == null)
|
||||
{
|
||||
if(mcMMO.getUserManager().queryPlayer(teleportingPlayer) == null) {
|
||||
teleportingPlayer.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
|
||||
return;
|
||||
}
|
||||
|
||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(teleportingPlayer);
|
||||
OnlineMMOPlayer mcMMOTarget = mcMMO.getUserManager().queryPlayer(targetPlayer);
|
||||
McMMOPlayer mmoPlayer = (McMMOPlayer) mcMMO.getUserManager().queryPlayer(teleportingPlayer);
|
||||
McMMOPlayer mmoTargetPlayer = (McMMOPlayer) mcMMO.getUserManager().queryPlayer(targetPlayer);
|
||||
|
||||
if(mmoPlayer == null || mmoTargetPlayer == null)
|
||||
return;
|
||||
|
||||
long warmup = Config.getInstance().getPTPCommandWarmup();
|
||||
|
||||
mmoPlayer.actualizeTeleportCommenceLocation(teleportingPlayer);
|
||||
mmoPlayer.actualizeTeleportCommenceLocation();
|
||||
|
||||
if (warmup > 0) {
|
||||
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 {
|
||||
EventUtils.handlePartyTeleportEvent(teleportingPlayer, targetPlayer);
|
||||
|
@ -88,7 +88,7 @@ public class InspectCommand implements TabExecutor {
|
||||
CommandUtils.printGatheringSkills(targetPlayer, sender);
|
||||
CommandUtils.printCombatSkills(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;
|
||||
|
@ -55,7 +55,7 @@ public class McrankCommand implements TabExecutor {
|
||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayerName(playerName);
|
||||
|
||||
if (mmoPlayer != null) {
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
playerName = player.getName();
|
||||
|
||||
if (CommandUtils.tooFar(sender, player, Permissions.mcrankFar(sender))) {
|
||||
|
@ -25,7 +25,7 @@ public class XPBarCommand implements TabExecutor {
|
||||
if(sender instanceof Player) {
|
||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer((Player) sender);
|
||||
if(mmoPlayer == null) {
|
||||
NotificationManager.sendPlayerInformationChatOnlyPrefixed(mmoPlayer.getPlayer(), "Profile.PendingLoad");
|
||||
NotificationManager.sendPlayerInformationChatOnlyPrefixed(Misc.adaptPlayer(mmoPlayer), "Profile.PendingLoad");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -34,10 +34,10 @@ public class XPBarCommand implements TabExecutor {
|
||||
} else if(args.length < 2) {
|
||||
String option = args[0];
|
||||
|
||||
if(option.equalsIgnoreCase(MMOExperienceBarManager.XPBarSettingTarget.RESET.toString())) {
|
||||
mmoPlayer.getExperienceBarManager().xpBarSettingToggle(MMOExperienceBarManager.XPBarSettingTarget.RESET, null);
|
||||
if(option.equalsIgnoreCase(SkillBossBarSetting.RESET.toString())) {
|
||||
mmoPlayer.getExperienceBarManager().xpBarSettingToggle(SkillBossBarSetting.RESET, null);
|
||||
return true;
|
||||
} else if(option.equalsIgnoreCase(MMOExperienceBarManager.XPBarSettingTarget.DISABLE.toString())) {
|
||||
} else if(option.equalsIgnoreCase(SkillBossBarSetting.DISABLE.toString())) {
|
||||
mmoPlayer.getExperienceBarManager().disableAllBars();
|
||||
return true;
|
||||
} else {
|
||||
@ -55,8 +55,8 @@ public class XPBarCommand implements TabExecutor {
|
||||
//Target setting
|
||||
String option = args[0].toLowerCase();
|
||||
|
||||
MMOExperienceBarManager.XPBarSettingTarget settingTarget = getSettingTarget(option);
|
||||
if(settingTarget != null && settingTarget != MMOExperienceBarManager.XPBarSettingTarget.RESET) {
|
||||
SkillBossBarSetting settingTarget = getSettingTarget(option);
|
||||
if(settingTarget != null && settingTarget != SkillBossBarSetting.RESET) {
|
||||
//Change setting
|
||||
mmoPlayer.getExperienceBarManager().xpBarSettingToggle(settingTarget, targetSkill);
|
||||
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()) {
|
||||
case "hide":
|
||||
return MMOExperienceBarManager.XPBarSettingTarget.HIDE;
|
||||
return SkillBossBarSetting.HIDE;
|
||||
case "show":
|
||||
return MMOExperienceBarManager.XPBarSettingTarget.SHOW;
|
||||
return SkillBossBarSetting.SHOW;
|
||||
case "reset":
|
||||
return MMOExperienceBarManager.XPBarSettingTarget.RESET;
|
||||
return SkillBossBarSetting.RESET;
|
||||
case "disable":
|
||||
return MMOExperienceBarManager.XPBarSettingTarget.DISABLE;
|
||||
return SkillBossBarSetting.DISABLE;
|
||||
}
|
||||
|
||||
return null;
|
||||
@ -95,13 +95,13 @@ public class XPBarCommand implements TabExecutor {
|
||||
case 1:
|
||||
List<String> options = new ArrayList<>();
|
||||
|
||||
for(MMOExperienceBarManager.XPBarSettingTarget settingTarget : MMOExperienceBarManager.XPBarSettingTarget.values()) {
|
||||
for(SkillBossBarSetting settingTarget : SkillBossBarSetting.values()) {
|
||||
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:
|
||||
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()));
|
||||
default:
|
||||
return ImmutableList.of();
|
||||
|
@ -61,10 +61,10 @@ public class AcrobaticsCommand extends SkillCommand {
|
||||
double rollChance, graceChance;
|
||||
|
||||
//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
|
||||
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
|
||||
|
||||
//Chance Stat Calculations
|
||||
|
@ -1,5 +1,7 @@
|
||||
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.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||
@ -44,10 +46,10 @@ public class AlchemyCommand extends SkillCommand {
|
||||
}
|
||||
|
||||
protected String[] calculateAbilityDisplayValues(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||
AlchemyManager alchemyManager = mmoPlayer.getAlchemyManager();
|
||||
AlchemyManager alchemyManager = ((McMMOPlayer) (mmoPlayer)).getAlchemyManager();
|
||||
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[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) {
|
||||
// ARMOR IMPACT
|
||||
if (canImpact) {
|
||||
impactDamage = mmoPlayer.getAxesManager().getImpactDurabilityDamage();
|
||||
impactDamage = ((McMMOPlayer) (mmoPlayer)).getArcheryManager().getImpactDurabilityDamage();
|
||||
}
|
||||
|
||||
// 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) {
|
||||
List<String> messages = new ArrayList<>();
|
||||
|
||||
CrossbowManager crossbowManager = mmoPlayer.getCrossbowManager();
|
||||
CrossbowManager crossbowManager = ((McMMOPlayer) (mmoPlayer)).getCrossbowManager();
|
||||
|
||||
if(canUseSubskill(mmoPlayer, SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||
String additionalArrowCount = String.valueOf(crossbowManager.getSuperShotgunAdditionalArrowCount());
|
||||
@ -41,7 +41,7 @@ public class CrossbowsCommand extends SkillCommand {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Component> getTextComponents(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||
protected @NotNull List<Component> getTextComponents(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||
List<Component> textComponents = new ArrayList<>();
|
||||
|
||||
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) {
|
||||
List<String> messages = new ArrayList<>();
|
||||
|
||||
ExcavationManager excavationManager = mmoPlayer.getExcavationManager();
|
||||
ExcavationManager excavationManager = ((McMMOPlayer) (mmoPlayer)).getExcavationManager();
|
||||
|
||||
if (canGigaDrill) {
|
||||
messages.add(getStatMessage(SubSkillType.EXCAVATION_GIGA_DRILL_BREAKER, gigaDrillBreakerLength)
|
||||
|
@ -48,7 +48,7 @@ public class FishingCommand extends SkillCommand {
|
||||
|
||||
@Override
|
||||
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
||||
FishingManager fishingManager = mmoPlayer.getFishingManager();
|
||||
FishingManager fishingManager = ((McMMOPlayer) (mmoPlayer)).getFishingManager();
|
||||
|
||||
// TREASURE HUNTER
|
||||
if (canTreasureHunt) {
|
||||
|
@ -92,19 +92,19 @@ public class HerbalismCommand extends SkillCommand {
|
||||
hasHylianLuck = canUseSubskill(mmoPlayer, SubSkillType.HERBALISM_HYLIAN_LUCK);
|
||||
canGreenTerra = Permissions.greenTerra(mmoPlayer.getPlayer());
|
||||
canGreenThumbPlants = RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.HERBALISM_GREEN_THUMB)
|
||||
&& (Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.WHEAT)
|
||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.CARROT)
|
||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.POTATO)
|
||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.BEETROOT)
|
||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.NETHER_WART)
|
||||
|| Permissions.greenThumbPlant(mmoPlayer.getPlayer(), Material.COCOA));
|
||||
&& (Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.WHEAT)
|
||||
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.CARROT)
|
||||
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.POTATO)
|
||||
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.BEETROOT)
|
||||
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.NETHER_WART)
|
||||
|| Permissions.greenThumbPlant(Misc.adaptPlayer(mmoPlayer), Material.COCOA));
|
||||
canGreenThumbBlocks = RankUtils.hasUnlockedSubskill(mmoPlayer, SubSkillType.HERBALISM_GREEN_THUMB)
|
||||
&& (Permissions.greenThumbBlock(mmoPlayer.getPlayer(), Material.DIRT)
|
||||
|| Permissions.greenThumbBlock(mmoPlayer.getPlayer(), Material.COBBLESTONE)
|
||||
|| Permissions.greenThumbBlock(mmoPlayer.getPlayer(), Material.COBBLESTONE_WALL)
|
||||
|| Permissions.greenThumbBlock(mmoPlayer.getPlayer(), Material.STONE_BRICKS));
|
||||
&& (Permissions.greenThumbBlock(Misc.adaptPlayer(mmoPlayer), Material.DIRT)
|
||||
|| Permissions.greenThumbBlock(Misc.adaptPlayer(mmoPlayer), Material.COBBLESTONE)
|
||||
|| Permissions.greenThumbBlock(Misc.adaptPlayer(mmoPlayer), Material.COBBLESTONE_WALL)
|
||||
|| Permissions.greenThumbBlock(Misc.adaptPlayer(mmoPlayer), Material.STONE_BRICKS));
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,7 @@ public class MiningCommand extends SkillCommand {
|
||||
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
||||
// BLAST MINING
|
||||
if (canBlast || canDemoExpert || canBiggerBombs) {
|
||||
MiningManager miningManager = mmoPlayer.getMiningManager();
|
||||
MiningManager miningManager = ((McMMOPlayer) (mmoPlayer)).getMiningManager();
|
||||
|
||||
blastMiningRank = miningManager.getBlastMiningTier();
|
||||
bonusTNTDrops = miningManager.getDropMultiplier();
|
||||
|
@ -91,10 +91,10 @@ public class MmoInfoCommand implements TabExecutor {
|
||||
/*
|
||||
* Skill is only in the old system
|
||||
*/
|
||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.MmoInfo.Header"));
|
||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.MmoInfo.SubSkillHeader", subSkillName));
|
||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.MmoInfo.DetailsHeader"));
|
||||
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.MmoInfo.OldSkill"));
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.MmoInfo.Header"));
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.MmoInfo.SubSkillHeader", subSkillName));
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.MmoInfo.DetailsHeader"));
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(LocaleLoader.getString("Commands.MmoInfo.OldSkill"));
|
||||
}
|
||||
|
||||
for(SubSkillType subSkillType : SubSkillType.values())
|
||||
|
@ -79,13 +79,13 @@ public class RepairCommand extends SkillCommand {
|
||||
canSuperRepair = canUseSubskill(mmoPlayer, SubSkillType.REPAIR_SUPER_REPAIR);
|
||||
canMasterRepair = canUseSubskill(mmoPlayer, SubSkillType.REPAIR_REPAIR_MASTERY);
|
||||
canArcaneForge = canUseSubskill(mmoPlayer, SubSkillType.REPAIR_ARCANE_FORGING);
|
||||
canRepairDiamond = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.DIAMOND);
|
||||
canRepairGold = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.GOLD);
|
||||
canRepairIron = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.IRON);
|
||||
canRepairStone = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.STONE);
|
||||
canRepairString = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.STRING);
|
||||
canRepairLeather = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.LEATHER);
|
||||
canRepairWood = Permissions.repairMaterialType(mmoPlayer.getPlayer(), MaterialType.WOOD);
|
||||
canRepairDiamond = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.DIAMOND);
|
||||
canRepairGold = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.GOLD);
|
||||
canRepairIron = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.IRON);
|
||||
canRepairStone = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.STONE);
|
||||
canRepairString = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.STRING);
|
||||
canRepairLeather = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.LEATHER);
|
||||
canRepairWood = Permissions.repairMaterialType(Misc.adaptPlayer(mmoPlayer), MaterialType.WOOD);
|
||||
arcaneBypass = (Permissions.arcaneBypass(mmoPlayer.getPlayer()) || Permissions.hasRepairEnchantBypassPerk(mmoPlayer.getPlayer()));
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ public class RepairCommand extends SkillCommand {
|
||||
List<String> messages = new ArrayList<>();
|
||||
|
||||
if (canArcaneForge) {
|
||||
RepairManager repairManager = mmoPlayer.getRepairManager();
|
||||
RepairManager repairManager = ((McMMOPlayer) (mmoPlayer)).getRepairManager();
|
||||
|
||||
messages.add(getStatMessage(false, true,
|
||||
SubSkillType.REPAIR_ARCANE_FORGING,
|
||||
|
@ -37,7 +37,7 @@ public class SalvageCommand extends SkillCommand {
|
||||
@Override
|
||||
protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
|
||||
List<String> messages = new ArrayList<>();
|
||||
SalvageManager salvageManager = mmoPlayer.getSalvageManager();
|
||||
SalvageManager salvageManager = ((McMMOPlayer) (mmoPlayer)).getSalvageManager();
|
||||
|
||||
if (canScrapCollector) {
|
||||
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.Config;
|
||||
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
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.TextComponentFactory;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.neetgames.mcmmo.skill.RootSkill;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
@ -35,7 +38,8 @@ import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class SkillCommand implements TabExecutor {
|
||||
protected PrimarySkillType skill;
|
||||
protected @NotNull RootSkill rootSkill;
|
||||
protected @NotNull PrimarySkillType primarySkillType;
|
||||
private final String skillName;
|
||||
|
||||
protected DecimalFormat percent = new DecimalFormat("##0.00%");
|
||||
@ -43,10 +47,11 @@ public abstract class SkillCommand implements TabExecutor {
|
||||
|
||||
private final CommandExecutor skillGuideCommand;
|
||||
|
||||
public SkillCommand(PrimarySkillType skill) {
|
||||
this.skill = skill;
|
||||
skillName = skill.getName();
|
||||
skillGuideCommand = new SkillGuideCommand(skill);
|
||||
public SkillCommand(@NotNull PrimarySkillType primarySkillType) {
|
||||
this.rootSkill = CoreSkills.getSkill(primarySkillType);
|
||||
this.primarySkillType = primarySkillType;
|
||||
skillName = rootSkill.getSkillName();
|
||||
skillGuideCommand = new SkillGuideCommand(rootSkill);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -67,11 +72,11 @@ public abstract class SkillCommand implements TabExecutor {
|
||||
}
|
||||
|
||||
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);
|
||||
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
|
||||
if (AdvancedConfig.getInstance().doesSkillCommandSendBlankLines())
|
||||
@ -113,7 +118,7 @@ public abstract class SkillCommand implements TabExecutor {
|
||||
|
||||
|
||||
if (Config.getInstance().getScoreboardsEnabled() && Config.getInstance().getSkillUseBoard()) {
|
||||
ScoreboardManager.enablePlayerSkillScoreboard(player, skill);
|
||||
ScoreboardManager.enablePlayerSkillScoreboard(player, primarySkillType);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -125,14 +130,14 @@ public abstract class SkillCommand implements TabExecutor {
|
||||
List<String> statsMessages = statsDisplay(mmoPlayer, skillValue, hasEndurance, isLucky);
|
||||
|
||||
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) {
|
||||
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) {
|
||||
@ -141,19 +146,19 @@ public abstract class SkillCommand implements TabExecutor {
|
||||
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
|
||||
*/
|
||||
|
||||
//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
|
||||
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 {
|
||||
/*
|
||||
@ -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
|
||||
/*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();
|
||||
|
||||
@ -173,17 +178,17 @@ public abstract class SkillCommand implements TabExecutor {
|
||||
{
|
||||
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(", ");
|
||||
} 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
|
||||
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) {
|
||||
return RandomChanceUtil.calculateAbilityDisplayValues(skillActivationType, mmoPlayer.getPlayer(), subSkill);
|
||||
return RandomChanceUtil.calculateAbilityDisplayValues(skillActivationType, Misc.adaptPlayer(mmoPlayer), subSkill);
|
||||
}
|
||||
|
||||
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 abilityLengthCap = AdvancedConfig.getInstance().getAbilityLengthCap();
|
||||
|
||||
@ -219,7 +224,7 @@ public abstract class SkillCommand implements TabExecutor {
|
||||
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) {
|
||||
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
|
||||
*/
|
||||
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;
|
||||
|
||||
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.text.StringUtils;
|
||||
import com.neetgames.mcmmo.skill.RootSkill;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -11,13 +13,16 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
//TODO: Switch to root skill based
|
||||
public class SkillGuideCommand implements CommandExecutor {
|
||||
private final String header;
|
||||
private final PrimarySkillType skill;
|
||||
private final ArrayList<String> guide;
|
||||
|
||||
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());
|
||||
guide = getGuide(skill);
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ public class SmeltingCommand extends SkillCommand {
|
||||
protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
|
||||
// FUEL EFFICIENCY
|
||||
if (canFuelEfficiency) {
|
||||
burnTimeModifier = String.valueOf(mmoPlayer.getSmeltingManager().getFuelEfficiencyMultiplier());
|
||||
burnTimeModifier = String.valueOf(((McMMOPlayer) (mmoPlayer)).getSmeltingManager().getFuelEfficiencyMultiplier());
|
||||
}
|
||||
|
||||
// FLUX MINING
|
||||
@ -57,7 +57,7 @@ public class SmeltingCommand extends SkillCommand {
|
||||
canFuelEfficiency = canUseSubskill(mmoPlayer, SubSkillType.SMELTING_FUEL_EFFICIENCY);
|
||||
canSecondSmelt = canUseSubskill(mmoPlayer, SubSkillType.SMELTING_SECOND_SMELT);
|
||||
//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
|
||||
@ -81,7 +81,7 @@ public class SmeltingCommand extends SkillCommand {
|
||||
|
||||
if (canUnderstandTheArt) {
|
||||
messages.add(getStatMessage(false, true, SubSkillType.SMELTING_UNDERSTANDING_THE_ART,
|
||||
String.valueOf(mmoPlayer.getSmeltingManager().getVanillaXpMultiplier())));
|
||||
String.valueOf(((McMMOPlayer) (mmoPlayer)).getSmeltingManager().getVanillaXpMultiplier())));
|
||||
}
|
||||
|
||||
return messages;
|
||||
|
@ -44,7 +44,7 @@ public class SwordsCommand extends SkillCommand {
|
||||
|
||||
// SWORDS_RUPTURE
|
||||
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);
|
||||
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) {
|
||||
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 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))
|
||||
{
|
||||
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)) {
|
||||
|
@ -45,7 +45,7 @@ public class TamingCommand extends SkillCommand {
|
||||
@Override
|
||||
protected void permissionsCheck(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||
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);
|
||||
canFastFood = canUseSubskill(mmoPlayer, SubSkillType.TAMING_FAST_FOOD_SERVICE);
|
||||
canGore = canUseSubskill(mmoPlayer, SubSkillType.TAMING_GORE);
|
||||
@ -96,7 +96,7 @@ public class TamingCommand extends SkillCommand {
|
||||
protected @NotNull List<Component> getTextComponents(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||
List<Component> textComponents = new ArrayList<>();
|
||||
|
||||
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, this.skill);
|
||||
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, this.rootSkill);
|
||||
|
||||
return textComponents;
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ public class UnarmedCommand extends SkillCommand {
|
||||
|
||||
// IRON ARM
|
||||
if (canIronArm) {
|
||||
ironArmBonus = mmoPlayer.getUnarmedManager().getSteelArmStyleDamage();
|
||||
ironArmBonus = ((McMMOPlayer) (mmoPlayer)).getUnarmedManager().getSteelArmStyleDamage();
|
||||
}
|
||||
|
||||
// IRON GRIP
|
||||
|
@ -56,7 +56,7 @@ public class WoodcuttingCommand extends SkillCommand {
|
||||
@Override
|
||||
protected void permissionsCheck(@NotNull OnlineMMOPlayer mmoPlayer) {
|
||||
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);
|
||||
canKnockOnWood = canTreeFell && canUseSubskill(mmoPlayer, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD);
|
||||
/*canSplinter = canUseSubskill(player, SubSkillType.WOODCUTTING_SPLINTER);
|
||||
|
@ -552,6 +552,7 @@ public class Config extends AutoUpdateConfigLoader {
|
||||
}
|
||||
|
||||
public int getLevelCap(@NotNull SkillIdentity skillIdentity) {
|
||||
|
||||
int cap = config.getInt("Skills." + StringUtils.getCapitalized(skillIdentity.getSkillName()) + ".Level_Cap", 0);
|
||||
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.alchemy.PotionStage;
|
||||
import com.gmail.nossr50.util.text.StringUtils;
|
||||
import com.neetgames.mcmmo.skill.RootSkill;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
@ -13,6 +14,7 @@ import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.boss.BarColor;
|
||||
import org.bukkit.boss.BarStyle;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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 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(@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)
|
||||
{
|
||||
@ -343,8 +360,7 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
|
||||
return BarColor.WHITE;
|
||||
}
|
||||
|
||||
public BarStyle getExperienceBarStyle(PrimarySkillType primarySkillType)
|
||||
{
|
||||
public BarStyle getExperienceBarStyle(PrimarySkillType primarySkillType) {
|
||||
String colorValueFromConfig = config.getString("Experience_Bars."+StringUtils.getCapitalized(primarySkillType.toString())+".BarStyle");
|
||||
|
||||
for(BarStyle barStyle : BarStyle.values())
|
||||
@ -357,6 +373,19 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
|
||||
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 */
|
||||
public int getDodgeXPModifier() { return config.getInt("Experience_Values.Acrobatics.Dodge", 120); }
|
||||
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.neetgames.mcmmo.exceptions.InvalidSkillException;
|
||||
import com.neetgames.mcmmo.exceptions.ProfileRetrievalException;
|
||||
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||
import org.apache.commons.lang.NullArgumentException;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -85,7 +86,7 @@ public interface DatabaseManager {
|
||||
*/
|
||||
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
|
||||
@ -95,7 +96,7 @@ public interface DatabaseManager {
|
||||
* @param playerName the current player name for this player
|
||||
* @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
|
||||
@ -104,7 +105,7 @@ public interface DatabaseManager {
|
||||
* @param playerName the current player name for this player
|
||||
* @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
|
||||
@ -117,7 +118,7 @@ public interface DatabaseManager {
|
||||
* @param player 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.
|
||||
|
@ -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();
|
||||
|
||||
if (party != null) {
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
double range = Config.getInstance().getPartyShareRange();
|
||||
|
||||
for (PartyMember partyMember : party.getPartyMembers()) {
|
||||
|
@ -1,7 +1,10 @@
|
||||
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.MMOPlayerData;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -9,44 +12,32 @@ import java.util.UUID;
|
||||
|
||||
public abstract class AbstractMMOPlayer implements MMOPlayer {
|
||||
/* 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 */
|
||||
protected final @NotNull ExperienceManager experienceManager;
|
||||
protected final @NotNull ExperienceHandler experienceHandler;
|
||||
protected final @NotNull CooldownManager cooldownManager;
|
||||
|
||||
/**
|
||||
* Create a new AbstractMMOPlayer for a {@link Player} with default values
|
||||
*
|
||||
* @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}
|
||||
* Init for online players
|
||||
* This will be used for existing data
|
||||
*
|
||||
* @param persistentPlayerData target persistent player data
|
||||
* @param mmoPlayerData player data
|
||||
*/
|
||||
public AbstractMMOPlayer(@NotNull PersistentPlayerData persistentPlayerData) {
|
||||
this.persistentPlayerData = persistentPlayerData;
|
||||
this.experienceManager = new ExperienceManager(persistentPlayerData);
|
||||
this.cooldownManager = new CooldownManager(persistentPlayerData);
|
||||
public AbstractMMOPlayer(@NotNull Player player, @NotNull MMOPlayerData mmoPlayerData) {
|
||||
this.mmoPlayerData = mmoPlayerData;
|
||||
this.experienceHandler = new OnlineExperienceProcessor(mmoPlayerData);
|
||||
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.SuperAbilityManager;
|
||||
import com.neetgames.mcmmo.exceptions.UnknownSkillException;
|
||||
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.neetgames.mcmmo.skill.RootSkill;
|
||||
import com.neetgames.mcmmo.skill.SkillIdentity;
|
||||
import net.kyori.adventure.identity.Identified;
|
||||
import net.kyori.adventure.identity.Identity;
|
||||
@ -49,6 +51,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
//TODO: Update javadocs
|
||||
public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Identified {
|
||||
private final @NotNull Player player;
|
||||
private final @NotNull Identity identity;
|
||||
@ -91,15 +94,16 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
||||
* New
|
||||
* Player
|
||||
*/
|
||||
super(player);
|
||||
super(new PersistentPlayerData(player.getUniqueId(), player.getName()));
|
||||
|
||||
UUID uuid = player.getUniqueId();
|
||||
identity = Identity.identity(uuid);
|
||||
|
||||
this.player = player;
|
||||
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);
|
||||
|
||||
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();
|
||||
|
||||
|
||||
//Update last login
|
||||
updateLastLogin();
|
||||
}
|
||||
@ -122,18 +125,17 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
||||
/**
|
||||
* Create a new instance based on existing player data
|
||||
* @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
|
||||
* Player
|
||||
*/
|
||||
super(persistentPlayerData);
|
||||
UUID uuid = player.getUniqueId();
|
||||
identity = Identity.identity(uuid);
|
||||
playerMetadata = new FixedMetadataValue(mcMMO.p, player.getName());
|
||||
super(mmoPlayerData);
|
||||
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),
|
||||
@ -150,9 +152,9 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
||||
mcMMO.p.getPluginLoader().disablePlugin(mcMMO.p);
|
||||
}
|
||||
|
||||
superAbilityManager = new SuperAbilityManager(this);
|
||||
superAbilityManager = new SuperAbilityManager(this, mmoPlayerData);
|
||||
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
|
||||
|
||||
@ -172,7 +174,10 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
||||
|
||||
private void assignParty() {
|
||||
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
|
||||
*/
|
||||
private void updateLastLogin() {
|
||||
getPersistentPlayerData().setLastLogin(System.currentTimeMillis());
|
||||
mmoPlayerData.setLastLogin(System.currentTimeMillis());
|
||||
}
|
||||
|
||||
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
|
||||
* @return true if this player is currently spying
|
||||
*/
|
||||
public boolean isPartyChatSpying() {
|
||||
return getPersistentPlayerData().isPartyChatSpying();
|
||||
@Override
|
||||
public boolean isChatSpying() {
|
||||
return mmoPlayerData.isPartyChatSpying();
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle this player's party chat spying flag
|
||||
*/
|
||||
public void togglePartyChatSpying() {
|
||||
getPersistentPlayerData().togglePartyChatSpying();
|
||||
mmoPlayerData.togglePartyChatSpying();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -606,36 +612,39 @@ public class McMMOPlayer extends PlayerProfile implements OnlineMMOPlayer, Ident
|
||||
|
||||
@Override
|
||||
public boolean inParty() {
|
||||
return false;
|
||||
return playerPartyRef == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
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
|
||||
public boolean isChatSpying() {
|
||||
return false;
|
||||
public void sendMessage(@NotNull String s) {
|
||||
player.sendMessage(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgressInCurrentSkillLevel(@NotNull SkillIdentity skillIdentity) throws UnknownSkillException {
|
||||
return experienceManager.getProgressInCurrentSkillLevel(skillIdentity);
|
||||
public @NotNull Object getServerAPIPlayerImpl() {
|
||||
return player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSkillLevel(@NotNull SkillIdentity skillIdentity) throws UnknownSkillException {
|
||||
return experienceManager.getSkillLevel(skillIdentity);
|
||||
}
|
||||
|
||||
@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);
|
||||
public void updateXPBar(@NotNull RootSkill rootSkill) {
|
||||
experienceBarManager.updateExperienceBar(rootSkill, mcMMO.p);
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,7 @@
|
||||
package com.gmail.nossr50.datatypes.player;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.datatypes.skills.CoreSkillConstants;
|
||||
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||
import com.gmail.nossr50.datatypes.validation.NonNullRule;
|
||||
import com.gmail.nossr50.datatypes.validation.PositiveIntegerRule;
|
||||
import com.gmail.nossr50.datatypes.validation.Validator;
|
||||
@ -80,7 +79,7 @@ public class PersistentPlayerData implements MMOPlayerData {
|
||||
|
||||
//Core 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());
|
||||
skillExperienceValues.put(rootSkill, 0F);
|
||||
}
|
||||
|
@ -1,174 +1,58 @@
|
||||
package com.gmail.nossr50.datatypes.player;
|
||||
|
||||
import com.gmail.nossr50.datatypes.experience.ExperienceManager;
|
||||
import com.gmail.nossr50.datatypes.party.Party;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.neetgames.mcmmo.MobHealthBarType;
|
||||
import com.neetgames.mcmmo.exceptions.UnknownSkillException;
|
||||
import com.neetgames.mcmmo.experience.ExperienceHandler;
|
||||
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||
import com.neetgames.mcmmo.player.OfflineMMOPlayer;
|
||||
import com.neetgames.mcmmo.skill.Skill;
|
||||
import org.bukkit.entity.Player;
|
||||
import com.neetgames.mcmmo.skill.RootSkill;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
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}
|
||||
* This will be used for existing data
|
||||
*
|
||||
* @param persistentPlayerData target persistent player data
|
||||
* @param mmoPlayerData target persistent player data
|
||||
*/
|
||||
public PlayerProfile(@NotNull PersistentPlayerData persistentPlayerData) {
|
||||
super(persistentPlayerData);
|
||||
public PlayerProfile(@NotNull MMOPlayerData mmoPlayerData) {
|
||||
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
|
||||
public @NotNull UUID getUUID() {
|
||||
return getPersistentPlayerData().getPlayerUUID();
|
||||
return mmoPlayerData.getPlayerUUID();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getPlayerName() {
|
||||
return mmoPlayerData.getPlayerName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPowerLevel() {
|
||||
return experienceManager.getPowerLevel();
|
||||
return experienceHandler.getPowerLevel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSkillLevel(@NotNull Skill skill) {
|
||||
return 0;
|
||||
public int getSkillLevel(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||
return experienceHandler.getSkillLevel(rootSkill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSkillExperience(@NotNull Skill skill) {
|
||||
return persistentPlayerData;
|
||||
public int getSkillExperience(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||
return experienceHandler.getSkillXpValue(rootSkill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getExperienceToNextLevel() {
|
||||
return 0;
|
||||
public int getExperienceToNextLevel(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||
return experienceHandler.getExperienceToNextLevel(rootSkill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgressInCurrentSkillLevel(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||
return experienceHandler.getProgressInCurrentSkillLevel(rootSkill);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -176,8 +60,13 @@ public class PlayerProfile extends AbstractMMOPlayer {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull ExperienceHandler getExperienceHandler() {
|
||||
return experienceHandler;
|
||||
}
|
||||
|
||||
@Override
|
||||
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() {
|
||||
for(RootSkill rootSkill : CoreSkillConstants.getImmutableCoreRootSkillSet()) {
|
||||
for(RootSkill rootSkill : CoreSkills.getImmutableCoreRootSkillSet()) {
|
||||
mcMMO.p.getLogger().info("Registering core skill: "+rootSkill.getSkillName());
|
||||
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.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||
@ -120,7 +119,7 @@ public class Roll extends AcrobaticsSubSkill {
|
||||
|
||||
/* Values related to the 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());
|
||||
|
||||
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) {
|
||||
|
||||
int skillLevel = mmoPlayer.getExperienceManager().getSkillLevel(getPrimarySkill());
|
||||
int skillLevel = mmoPlayer.getExperienceHandler().getSkillLevel(getPrimarySkill());
|
||||
|
||||
if (player.isSneaking()) {
|
||||
return gracefulRollCheck(player, mmoPlayer, damage, skillLevel);
|
||||
@ -203,7 +202,7 @@ public class Roll extends AcrobaticsSubSkill {
|
||||
//player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Text"));
|
||||
|
||||
//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);
|
||||
//}
|
||||
|
||||
@ -212,7 +211,7 @@ public class Roll extends AcrobaticsSubSkill {
|
||||
}
|
||||
else if (!isFatal(player, damage)) {
|
||||
//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);
|
||||
//}
|
||||
}
|
||||
@ -222,7 +221,7 @@ public class Roll extends AcrobaticsSubSkill {
|
||||
}
|
||||
|
||||
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");
|
||||
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);
|
||||
|
||||
addFallLocation(player);
|
||||
return modifiedDamage;
|
||||
}
|
||||
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);
|
||||
|
||||
addFallLocation(player);
|
||||
@ -273,7 +272,7 @@ public class Roll extends AcrobaticsSubSkill {
|
||||
|
||||
if (ItemUtils.hasItemInEitherHand(player, Material.ENDER_PEARL) || player.isInsideVehicle()) {
|
||||
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;
|
||||
}
|
||||
@ -281,7 +280,7 @@ public class Roll extends AcrobaticsSubSkill {
|
||||
if(mcMMO.getUserManager().queryPlayer(player).getAcrobaticsManager().hasFallenInLocationBefore(getBlockLocation(player)))
|
||||
{
|
||||
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;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.gmail.nossr50.events.experience;
|
||||
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.gmail.nossr50.events.experience;
|
||||
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.gmail.nossr50.events.experience;
|
||||
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.gmail.nossr50.events.experience;
|
||||
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.gmail.nossr50.events.experience;
|
||||
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
@ -226,10 +226,10 @@ public class BlockListener implements Listener {
|
||||
return;
|
||||
|
||||
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)) {
|
||||
mmoPlayer.getSalvageManager().placedAnvilCheck();
|
||||
((McMMOPlayer) (mmoPlayer)).getSalvageManager().placedAnvilCheck();
|
||||
}
|
||||
}
|
||||
|
||||
@ -313,7 +313,7 @@ public class BlockListener implements Listener {
|
||||
|
||||
/* HERBALISM */
|
||||
if (BlockUtils.affectedByGreenTerra(blockState)) {
|
||||
HerbalismManager herbalismManager = mmoPlayer.getHerbalismManager();
|
||||
HerbalismManager herbalismManager = ((McMMOPlayer) (mmoPlayer)).getHerbalismManager();
|
||||
|
||||
/* Green Terra */
|
||||
if (herbalismManager.canActivateAbility()) {
|
||||
@ -336,13 +336,13 @@ public class BlockListener implements Listener {
|
||||
|
||||
/* MINING */
|
||||
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);
|
||||
}
|
||||
|
||||
/* WOOD CUTTING */
|
||||
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)) {
|
||||
woodcuttingManager.processTreeFeller(blockState);
|
||||
}
|
||||
@ -357,7 +357,7 @@ public class BlockListener implements Listener {
|
||||
|
||||
/* EXCAVATION */
|
||||
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);
|
||||
|
||||
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.
|
||||
*/
|
||||
if (mmoPlayer.getSuperAbilityManager().getAbilityMode(SuperAbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState)) {
|
||||
if (mmoPlayer.getHerbalismManager().processGreenTerraBlockConversion(blockState)) {
|
||||
if (((McMMOPlayer) (mmoPlayer)).getHerbalismManager().processGreenTerraBlockConversion(blockState)) {
|
||||
blockState.update(true);
|
||||
}
|
||||
}
|
||||
else if (mmoPlayer.getSuperAbilityManager().getAbilityMode(SuperAbilityType.BERSERK) && (heldItem.getType() == Material.AIR || Config.getInstance().getUnarmedItemsAsUnarmed())) {
|
||||
if (mmoPlayer.getUnarmedManager().canUseBlockCracker() && BlockUtils.affectedByBlockCracker(blockState)) {
|
||||
if (EventUtils.simulateBlockBreak(block, player, true) && mmoPlayer.getUnarmedManager().blockCrackerCheck(blockState)) {
|
||||
if (((McMMOPlayer) (mmoPlayer)).getUnarmedManager().canUseBlockCracker() && BlockUtils.affectedByBlockCracker(blockState)) {
|
||||
if (EventUtils.simulateBlockBreak(block, player, true) && ((McMMOPlayer) (mmoPlayer)).getUnarmedManager().blockCrackerCheck(blockState)) {
|
||||
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);
|
||||
SoundManager.sendSound(player, block.getLocation(), SoundType.POP);
|
||||
}
|
||||
|
@ -197,7 +197,7 @@ public class EntityListener implements Listener {
|
||||
//Process launch event
|
||||
if (Permissions.skillEnabled(player, PrimarySkillType.CROSSBOWS)) {
|
||||
if (mmoPlayer != null) {
|
||||
mmoPlayer.getCrossbowManager().processProjectileLaunchEvent(event);
|
||||
((McMMOPlayer) (mmoPlayer)).getCrossbowManager().processProjectileLaunchEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
@ -411,7 +411,7 @@ public class EntityListener implements Listener {
|
||||
//Deflect checks
|
||||
final OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(defendingPlayer);
|
||||
if (mmoPlayer != null) {
|
||||
UnarmedManager unarmedManager = mmoPlayer.getUnarmedManager();
|
||||
UnarmedManager unarmedManager = ((McMMOPlayer) (mmoPlayer)).getUnarmedManager();
|
||||
|
||||
if (unarmedManager.canDeflect()) {
|
||||
if (projectile instanceof Arrow && unarmedManager.deflectCheck()) {
|
||||
|
@ -629,7 +629,7 @@ public class PlayerListener implements Listener {
|
||||
}
|
||||
|
||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
||||
MiningManager miningManager = mmoPlayer.getMiningManager();
|
||||
MiningManager miningManager = ((McMMOPlayer) (mmoPlayer)).getMiningManager();
|
||||
ItemStack heldItem = player.getInventory().getItemInMainHand();
|
||||
|
||||
switch (event.getAction()) {
|
||||
@ -642,7 +642,7 @@ public class PlayerListener implements Listener {
|
||||
&& PrimarySkillType.REPAIR.getPermissions(player)
|
||||
&& mcMMO.getRepairableManager().isRepairable(heldItem)
|
||||
&& heldItem.getAmount() <= 1) {
|
||||
RepairManager repairManager = mmoPlayer.getRepairManager();
|
||||
RepairManager repairManager = ((McMMOPlayer) (mmoPlayer)).getRepairManager();
|
||||
event.setCancelled(true);
|
||||
|
||||
// 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()) {
|
||||
/* REPAIR CHECKS */
|
||||
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
|
||||
if (repairManager.checkConfirmation(false)) {
|
||||
@ -697,7 +697,7 @@ public class PlayerListener implements Listener {
|
||||
}
|
||||
/* SALVAGE CHECKS */
|
||||
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
|
||||
if (salvageManager.checkConfirmation(false)) {
|
||||
@ -759,7 +759,7 @@ public class PlayerListener implements Listener {
|
||||
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.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent;
|
||||
@ -85,8 +84,8 @@ public class SelfListener implements Listener {
|
||||
PrimarySkillType primarySkillType = event.getSkill();
|
||||
|
||||
if(mmoPlayer.isDebugMode()) {
|
||||
mmoPlayer.getPlayer().sendMessage(event.getSkill().toString() + " XP Gained");
|
||||
mmoPlayer.getPlayer().sendMessage("Incoming Raw XP: "+event.getRawXpGained());
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(event.getSkill().toString() + " XP Gained");
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("Incoming Raw XP: "+event.getRawXpGained());
|
||||
}
|
||||
|
||||
//WorldGuard XP Check
|
||||
@ -103,7 +102,7 @@ public class SelfListener implements Listener {
|
||||
event.setCancelled(true);
|
||||
|
||||
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
|
||||
if(PlayerLevelUtils.qualifiesForEarlyGameBoost(mmoPlayer, primarySkillType))
|
||||
{
|
||||
earlyGameBonusXP += (mmoPlayer.getExperienceManager().getExperienceToNextLevel(primarySkillType) * 0.05);
|
||||
earlyGameBonusXP += (mmoPlayer.getExperienceHandler().getExperienceToNextLevel(primarySkillType) * 0.05);
|
||||
event.setRawXpGained(event.getRawXpGained() + earlyGameBonusXP);
|
||||
}
|
||||
}
|
||||
@ -131,7 +130,7 @@ public class SelfListener implements Listener {
|
||||
|
||||
if (threshold <= 0 || !ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) {
|
||||
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
|
||||
return;
|
||||
@ -151,7 +150,7 @@ public class SelfListener implements Listener {
|
||||
float guaranteedMinimum = ExperienceConfig.getInstance().getDiminishedReturnsCap() * rawXp;
|
||||
|
||||
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) {
|
||||
// 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()) {
|
||||
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) {
|
||||
for(Party party : parties.values()) {
|
||||
if(party.hasMember(playerUUID)) {
|
||||
if(party.getPartyMemberManager().hasMember(playerUUID)) {
|
||||
return party;
|
||||
}
|
||||
}
|
||||
@ -114,7 +114,7 @@ public final class PartyManager {
|
||||
* @return true if the party was joined successfully, false otherwise
|
||||
*/
|
||||
public boolean changeOrJoinParty(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull String newPartyName) {
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
|
||||
if (inParty(mmoPlayer)) {
|
||||
Party oldParty = mmoPlayer.getParty();
|
||||
@ -171,7 +171,7 @@ public final class PartyManager {
|
||||
Party party = mmoPlayer.getParty();
|
||||
|
||||
if (party != null) {
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
double range = Config.getInstance().getPartyShareRange();
|
||||
|
||||
for (PartyMember member : party.getPartyMembers()) {
|
||||
@ -189,7 +189,7 @@ public final class PartyManager {
|
||||
Party party = mmoPlayer.getParty();
|
||||
|
||||
if (party != null) {
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
double range = Config.getInstance().getPartyShareRange();
|
||||
|
||||
for (Player member : party.getVisibleMembers(player)) {
|
||||
@ -359,7 +359,7 @@ public final class PartyManager {
|
||||
* @param mmoPlayer The player to remove
|
||||
*/
|
||||
public void removeFromParty(OnlineMMOPlayer mmoPlayer) {
|
||||
removeFromParty(mmoPlayer.getPlayer(), mmoPlayer.getParty());
|
||||
removeFromParty(Misc.adaptPlayer(mmoPlayer), mmoPlayer.getParty());
|
||||
processPartyLeaving(mmoPlayer);
|
||||
}
|
||||
|
||||
@ -396,7 +396,7 @@ public final class PartyManager {
|
||||
* @param password The password for this party, null if there was no 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);
|
||||
|
||||
@ -451,7 +451,7 @@ public final class PartyManager {
|
||||
|
||||
// Check if the party still exists, it might have been disbanded
|
||||
if (!parties.contains(invite)) {
|
||||
NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(), NotificationType.PARTY_MESSAGE, "Party.Disband");
|
||||
NotificationManager.sendPlayerInformation(Misc.adaptPlayer(mmoPlayer), NotificationType.PARTY_MESSAGE, "Party.Disband");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -460,11 +460,11 @@ public final class PartyManager {
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
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();
|
||||
addToParty(mmoPlayer, invite);
|
||||
}
|
||||
@ -476,7 +476,7 @@ public final class PartyManager {
|
||||
*/
|
||||
public void acceptAllianceInvite(OnlineMMOPlayer mmoPlayer) {
|
||||
Party invite = mmoPlayer.getPartyAllianceInvite();
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
|
||||
// Check if the party still exists, it might have been disbanded
|
||||
if (!parties.contains(invite)) {
|
||||
@ -536,7 +536,7 @@ public final class PartyManager {
|
||||
* @param party The party
|
||||
*/
|
||||
public void addToParty(OnlineMMOPlayer mmoPlayer, Party party) {
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
String playerName = player.getName();
|
||||
|
||||
informPartyMembersJoin(party, playerName);
|
||||
@ -591,7 +591,7 @@ public final class PartyManager {
|
||||
public boolean canInvite(OnlineMMOPlayer mmoPlayer) {
|
||||
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.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.Party;
|
||||
import com.gmail.nossr50.datatypes.party.ShareMode;
|
||||
@ -55,7 +53,7 @@ public final class ShareHandler {
|
||||
continue;
|
||||
}
|
||||
|
||||
partyMember.getExperienceManager().beginUnsharedXpGain(primarySkillType, splitXp, xpGainReason, XPGainSource.PARTY_MEMBERS);
|
||||
partyMember.getExperienceHandler().beginUnsharedXpGain(primarySkillType, splitXp, xpGainReason, XPGainSource.PARTY_MEMBERS);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.gmail.nossr50.runnables.items;
|
||||
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.ChimaeraWing;
|
||||
@ -13,9 +14,9 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.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;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.gmail.nossr50.runnables.items;
|
||||
|
||||
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.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.EventUtils;
|
||||
@ -13,20 +15,20 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class TeleportationWarmup extends BukkitRunnable {
|
||||
private final OnlineMMOPlayer mmoPlayer;
|
||||
private final OnlineMMOPlayer mcMMOTarget;
|
||||
private final McMMOPlayer mmoPlayer;
|
||||
private final McMMOPlayer mcMMOTarget;
|
||||
|
||||
public TeleportationWarmup(OnlineMMOPlayer mmoPlayer, OnlineMMOPlayer mcMMOTarget) {
|
||||
public TeleportationWarmup(McMMOPlayer mmoPlayer, McMMOPlayer mcMMOTarget) {
|
||||
this.mmoPlayer = mmoPlayer;
|
||||
this.mcMMOTarget = mcMMOTarget;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Player teleportingPlayer = mmoPlayer.getPlayer();
|
||||
Player teleportingPlayer = Misc.adaptPlayer(mmoPlayer);
|
||||
Player targetPlayer = mcMMOTarget.getPlayer();
|
||||
Location previousLocation = mmoPlayer.getTeleportCommenceLocation();
|
||||
Location newLocation = mmoPlayer.getPlayer().getLocation();
|
||||
Location newLocation = Misc.adaptPlayer(mmoPlayer).getLocation();
|
||||
long recentlyHurt = mmoPlayer.getRecentlyHurtTimestamp();
|
||||
|
||||
mmoPlayer.setTeleportCommenceLocation(null);
|
||||
|
@ -1,6 +1,10 @@
|
||||
package com.gmail.nossr50.runnables.player;
|
||||
|
||||
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.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
@ -42,8 +46,9 @@ public class PlayerProfileLoadingTask extends BukkitRunnable {
|
||||
}
|
||||
|
||||
try {
|
||||
PlayerProfile profile = mcMMO.getDatabaseManager().queryPlayerDataByUUID(player.getUniqueId());
|
||||
new ApplySuccessfulProfile(new OnlineMMOPlayer(player, profile)).runTask(mcMMO.p);
|
||||
MMOPlayerData mmoPlayerData = mcMMO.getDatabaseManager().queryPlayerDataByPlayer(player);
|
||||
McMMOPlayer mmoPlayer = new McMMOPlayer(player, player.getUniqueId(), player.getName());
|
||||
new ApplySuccessfulProfile(new McMMOPlayer(player, )).runTask(mcMMO.p);
|
||||
EventUtils.callPlayerProfileLoadEvent(player, profile);
|
||||
return;
|
||||
|
||||
@ -70,9 +75,9 @@ public class PlayerProfileLoadingTask 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;
|
||||
}
|
||||
|
||||
|
@ -17,13 +17,13 @@ public class AbilityCooldownTask extends BukkitRunnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (!mmoPlayer.getPlayer().isOnline() || mmoPlayer.getSuperAbilityManager().getAbilityInformed(ability)) {
|
||||
if (!Misc.adaptPlayer(mmoPlayer).isOnline() || mmoPlayer.getSuperAbilityManager().getAbilityInformed(ability)) {
|
||||
return;
|
||||
}
|
||||
|
||||
mmoPlayer.getSuperAbilityManager().setAbilityInformed(ability, true);
|
||||
|
||||
NotificationManager.sendPlayerInformation(mmoPlayer.getPlayer(), NotificationType.ABILITY_REFRESHED, ability.getAbilityRefresh());
|
||||
//mmoPlayer.getPlayer().sendMessage(ability.getAbilityRefresh());
|
||||
NotificationManager.sendPlayerInformation(Misc.adaptPlayer(mmoPlayer), NotificationType.ABILITY_REFRESHED, ability.getAbilityRefresh());
|
||||
//Misc.adaptPlayer(mmoPlayer).sendMessage(ability.getAbilityRefresh());
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ public class AbilityDisableTask extends BukkitRunnable {
|
||||
return;
|
||||
}
|
||||
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
|
||||
switch (ability) {
|
||||
case SUPER_BREAKER:
|
||||
|
@ -1,5 +1,6 @@
|
||||
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.SubSkillType;
|
||||
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.util.Misc;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.BlockState;
|
||||
@ -36,12 +38,13 @@ public class AlchemyBrewTask extends BukkitRunnable {
|
||||
brewSpeed = DEFAULT_BREW_SPEED;
|
||||
brewTimer = DEFAULT_BREW_TICKS;
|
||||
|
||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
||||
if (player != null
|
||||
&& !Misc.isNPCEntityExcludingVillagers(player)
|
||||
&& 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);
|
||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||
|
@ -1,7 +1,5 @@
|
||||
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.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
@ -18,6 +18,6 @@ public class DelayedHerbalismXPCheckTask extends BukkitRunnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
mmoPlayer.getHerbalismManager().awardXPForBlockSnapshots(chorusBlocks);
|
||||
((McMMOPlayer) (mmoPlayer)).getHerbalismManager().awardXPForBlockSnapshots(chorusBlocks);
|
||||
}
|
||||
}
|
||||
|
@ -1,20 +1,19 @@
|
||||
package com.gmail.nossr50.runnables.skills;
|
||||
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.util.experience.MMOExperienceBarManager;
|
||||
import com.neetgames.mcmmo.skill.RootSkill;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class ExperienceBarHideTask extends BukkitRunnable {
|
||||
public final OnlineMMOPlayer mmoPlayer;
|
||||
public final PrimarySkillType primarySkillType;
|
||||
public final RootSkill rootSkill;
|
||||
public final MMOExperienceBarManager MMOExperienceBarManagerRef;
|
||||
|
||||
public ExperienceBarHideTask(MMOExperienceBarManager MMOExperienceBarManagerRef, OnlineMMOPlayer mmoPlayer, PrimarySkillType primarySkillType)
|
||||
{
|
||||
public ExperienceBarHideTask(MMOExperienceBarManager MMOExperienceBarManagerRef, OnlineMMOPlayer mmoPlayer, RootSkill rootSkill) {
|
||||
this.MMOExperienceBarManagerRef = MMOExperienceBarManagerRef;
|
||||
this.mmoPlayer = mmoPlayer;
|
||||
this.primarySkillType = primarySkillType;
|
||||
this.rootSkill = rootSkill;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -33,7 +32,7 @@ public class ExperienceBarHideTask extends BukkitRunnable {
|
||||
if(MMOExperienceBarManagerRef == null || mmoPlayer == null)
|
||||
return;
|
||||
|
||||
MMOExperienceBarManagerRef.hideExperienceBar(primarySkillType);
|
||||
MMOExperienceBarManagerRef.clearTask(primarySkillType);
|
||||
MMOExperienceBarManagerRef.hideExperienceBar(rootSkill);
|
||||
MMOExperienceBarManagerRef.clearTask(rootSkill);
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ public class SkillUnlockNotificationTask extends BukkitRunnable {
|
||||
*/
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ public class ToolLowerTask extends BukkitRunnable {
|
||||
mmoPlayer.getSuperAbilityManager().setAbilityToolPrime(tool, false);
|
||||
|
||||
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;
|
||||
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import org.bukkit.entity.Entity;
|
||||
@ -18,11 +16,11 @@ public abstract class SkillManager {
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return mmoPlayer.getPlayer();
|
||||
return Misc.adaptPlayer(mmoPlayer);
|
||||
}
|
||||
|
||||
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.datatypes.LimitedSizeList;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
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.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.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||
|
@ -1,7 +1,9 @@
|
||||
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.skill.RootSkill;
|
||||
import com.neetgames.mcmmo.skill.SkillIdentity;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@ -14,27 +16,29 @@ public class FamilyTree {
|
||||
/*
|
||||
* Hacky crap, will remove later
|
||||
*/
|
||||
private static @Nullable Set<RootSkill> smeltingParents;
|
||||
private static @Nullable Set<RootSkill> salvageParents;
|
||||
|
||||
private static @Nullable Set<SkillIdentity> smeltingParents;
|
||||
private static @Nullable Set<SkillIdentity> salvageParents;
|
||||
|
||||
public static @NotNull Set<SkillIdentity> getParentSkills(@NotNull SkillIdentity skillIdentity) throws UnknownSkillException {
|
||||
if(CoreSkillConstants.isChildSkill(skillIdentity)) {
|
||||
public static @NotNull Set<RootSkill> getParentSkills(@NotNull RootSkill rootSkill) throws UnknownSkillException {
|
||||
if(CoreSkills.isChildSkill(rootSkill)) {
|
||||
if(smeltingParents == null || salvageParents == null) {
|
||||
smeltingParents = new HashSet<>();
|
||||
salvageParents = new HashSet<>();
|
||||
|
||||
smeltingParents.add(CoreSkillConstants.MINING_ID);
|
||||
smeltingParents.add(CoreSkillConstants.REPAIR_ID);
|
||||
smeltingParents.add(CoreSkills.MINING_CS);
|
||||
smeltingParents.add(CoreSkills.REPAIR_CS);
|
||||
|
||||
salvageParents.add(CoreSkillConstants.FISHING_ID);
|
||||
salvageParents.add(CoreSkillConstants.REPAIR_ID);
|
||||
salvageParents.add(CoreSkills.FISHING_CS);
|
||||
salvageParents.add(CoreSkills.REPAIR_CS);
|
||||
}
|
||||
|
||||
if(skillIdentity.equals(CoreSkillConstants.SALVAGE_ID)) {
|
||||
if(rootSkill.equals(CoreSkills.SALVAGE_CS)) {
|
||||
return salvageParents;
|
||||
} else {
|
||||
} else if (rootSkill.equals(CoreSkills.SMELTING_CS)) {
|
||||
return smeltingParents;
|
||||
} else {
|
||||
mcMMO.p.getLogger().severe("root skill argument is not a child skill! " + rootSkill.toString());
|
||||
throw new UnknownSkillException();
|
||||
}
|
||||
|
||||
} else {
|
||||
|
@ -52,8 +52,8 @@ public class CrossbowManager extends SkillManager {
|
||||
*/
|
||||
public void processProjectileLaunchEvent(ProjectileLaunchEvent projectileLaunchEvent) {
|
||||
//Testing
|
||||
if(Permissions.isSubSkillEnabled(mmoPlayer.getPlayer(), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||
if(RankUtils.hasUnlockedSubskill(mmoPlayer.getPlayer(), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||
if(Permissions.isSubSkillEnabled(Misc.adaptPlayer(mmoPlayer), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||
if(RankUtils.hasUnlockedSubskill(Misc.adaptPlayer(mmoPlayer), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||
superShotgunProcessing(projectileLaunchEvent);
|
||||
}
|
||||
}
|
||||
@ -79,7 +79,7 @@ public class CrossbowManager extends SkillManager {
|
||||
}
|
||||
|
||||
public int getSuperShotgunAdditionalArrowCount() {
|
||||
switch(RankUtils.getRank(mmoPlayer.getPlayer(), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||
switch(RankUtils.getRank(Misc.adaptPlayer(mmoPlayer), SubSkillType.CROSSBOWS_SUPER_SHOTGUN)) {
|
||||
case 1:
|
||||
return 9;
|
||||
case 2:
|
||||
|
@ -2,7 +2,6 @@ package com.gmail.nossr50.skills.excavation;
|
||||
|
||||
import com.gmail.nossr50.api.ItemSpawnReason;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
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.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
@ -292,38 +291,38 @@ public class FishingManager extends SkillManager {
|
||||
}
|
||||
|
||||
if(mmoPlayer.isDebugMode()) {
|
||||
mmoPlayer.getPlayer().sendMessage(ChatColor.GOLD + "Master Angler Debug");
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(ChatColor.GOLD + "Master Angler Debug");
|
||||
|
||||
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));
|
||||
mmoPlayer.getPlayer().sendMessage("MIN TICK REDUCTION: " + minWaitReduction);
|
||||
mmoPlayer.getPlayer().sendMessage("MAX TICK REDUCTION: " + maxWaitReduction);
|
||||
mmoPlayer.getPlayer().sendMessage("BOAT BONUS: " + boatBonus);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("ALLOW STACK WITH LURE: " + masterAnglerCompatibilityLayer.getApplyLure(fishHook));
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("MIN TICK REDUCTION: " + minWaitReduction);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("MAX TICK REDUCTION: " + maxWaitReduction);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("BOAT BONUS: " + boatBonus);
|
||||
|
||||
if(boatBonus) {
|
||||
mmoPlayer.getPlayer().sendMessage("BOAT MAX TICK REDUCTION: " + maxWaitReduction);
|
||||
mmoPlayer.getPlayer().sendMessage("BOAT MIN TICK REDUCTION: " + maxWaitReduction);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("BOAT MAX 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");
|
||||
mmoPlayer.getPlayer().sendMessage("Original Max Wait Ticks: " + maxWaitTicks);
|
||||
mmoPlayer.getPlayer().sendMessage("Original Min Wait Ticks: " + minWaitTicks);
|
||||
mmoPlayer.getPlayer().sendMessage("");
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(ChatColor.DARK_AQUA + "BEFORE MASTER ANGLER WAS APPLIED");
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("Original Max Wait Ticks: " + maxWaitTicks);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("Original Min Wait Ticks: " + minWaitTicks);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("");
|
||||
|
||||
mmoPlayer.getPlayer().sendMessage(ChatColor.DARK_AQUA + "AFTER MASTER ANGLER WAS APPLIED");
|
||||
mmoPlayer.getPlayer().sendMessage("Current Max Wait Ticks: " + reducedMaxWaitTime);
|
||||
mmoPlayer.getPlayer().sendMessage("Current Min Wait Ticks: " + reducedMinWaitTime);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(ChatColor.DARK_AQUA + "AFTER MASTER ANGLER WAS APPLIED");
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("Current Max Wait Ticks: " + reducedMaxWaitTime);
|
||||
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)");
|
||||
mmoPlayer.getPlayer().sendMessage("Lowest possible max wait ticks " + bonusCapMax);
|
||||
mmoPlayer.getPlayer().sendMessage("Lowest possible min wait ticks " + bonusCapMin);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage(ChatColor.DARK_AQUA + "Caps / Limits (edit in advanced.yml)");
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("Lowest possible max wait ticks " + bonusCapMax);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("Lowest possible min wait ticks " + bonusCapMin);
|
||||
}
|
||||
|
||||
masterAnglerCompatibilityLayer.setMaxWaitTime(fishHook, reducedMaxWaitTime);
|
||||
@ -337,7 +336,7 @@ public class FishingManager extends SkillManager {
|
||||
}
|
||||
|
||||
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) {
|
||||
|
@ -5,8 +5,6 @@ import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||
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.meta.RecentlyReplantedCropMeta;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
@ -388,7 +386,7 @@ public class HerbalismManager extends SkillManager {
|
||||
}
|
||||
|
||||
if(mmoPlayer.isDebugMode()) {
|
||||
mmoPlayer.getPlayer().sendMessage("Plants processed: "+brokenPlants.size());
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("Plants processed: "+brokenPlants.size());
|
||||
}
|
||||
|
||||
//Reward XP
|
||||
@ -439,8 +437,8 @@ public class HerbalismManager extends SkillManager {
|
||||
}
|
||||
|
||||
if(mmoPlayer.isDebugMode()) {
|
||||
mmoPlayer.getPlayer().sendMessage("Chorus Plants checked for XP: "+brokenPlants.size());
|
||||
mmoPlayer.getPlayer().sendMessage("Valid Chorus Plant XP Gains: "+blocksGivingXP);
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("Chorus Plants checked for XP: "+brokenPlants.size());
|
||||
Misc.adaptPlayer(mmoPlayer).sendMessage("Valid Chorus Plant XP Gains: "+blocksGivingXP);
|
||||
}
|
||||
|
||||
//Reward XP
|
||||
|
@ -4,7 +4,6 @@ import com.gmail.nossr50.api.ItemSpawnReason;
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
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.Config;
|
||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
|
@ -1,8 +1,6 @@
|
||||
package com.gmail.nossr50.skills.smelting;
|
||||
|
||||
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.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
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.Config;
|
||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
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.config.Config;
|
||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
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.datatypes.interactions.NotificationType;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
@ -112,7 +113,7 @@ public final class ChimaeraWing {
|
||||
|
||||
if (warmup > 0) {
|
||||
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 {
|
||||
chimaeraExecuteTeleport();
|
||||
@ -120,7 +121,7 @@ public final class ChimaeraWing {
|
||||
}
|
||||
|
||||
public static void chimaeraExecuteTeleport() {
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
|
||||
if (Config.getInstance().getChimaeraUseBedSpawn() && player.getBedSpawnLocation() != null) {
|
||||
player.teleport(player.getBedSpawnLocation());
|
||||
|
@ -1,8 +1,6 @@
|
||||
package com.gmail.nossr50.util;
|
||||
|
||||
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.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
@ -224,7 +222,7 @@ public final class EventUtils {
|
||||
if (isCancelled) {
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -41,8 +41,8 @@ public final class HardcoreManager {
|
||||
continue;
|
||||
}
|
||||
|
||||
int playerSkillLevel = playerProfile.getExperienceManager().getSkillLevel(primarySkillType);
|
||||
int playerSkillXpLevel = playerProfile.getExperienceManager().getSkillXpValue(primarySkillType);
|
||||
int playerSkillLevel = playerProfile.getExperienceHandler().getSkillLevel(primarySkillType);
|
||||
int playerSkillXpLevel = playerProfile.getExperienceHandler().getSkillXpValue(primarySkillType);
|
||||
|
||||
if (playerSkillLevel <= 0 || playerSkillLevel <= levelThreshold) {
|
||||
levelChanged.put(primarySkillType.toString(), 0);
|
||||
@ -93,8 +93,8 @@ public final class HardcoreManager {
|
||||
continue;
|
||||
}
|
||||
|
||||
int killerSkillLevel = killerProfile.getExperienceManager().getSkillLevel(primarySkillType);
|
||||
int victimSkillLevel = victimProfile.getExperienceManager().getSkillLevel(primarySkillType);
|
||||
int killerSkillLevel = killerProfile.getExperienceHandler().getSkillLevel(primarySkillType);
|
||||
int victimSkillLevel = victimProfile.getExperienceHandler().getSkillLevel(primarySkillType);
|
||||
|
||||
if (victimSkillLevel <= 0 || victimSkillLevel < killerSkillLevel / 2 || victimSkillLevel <= levelThreshold) {
|
||||
levelChanged.put(primarySkillType.toString(), 0);
|
||||
@ -102,7 +102,7 @@ public final class HardcoreManager {
|
||||
continue;
|
||||
}
|
||||
|
||||
int victimSkillXpLevel = victimProfile.getExperienceManager().getSkillXpValue(primarySkillType);
|
||||
int victimSkillXpLevel = victimProfile.getExperienceHandler().getSkillXpValue(primarySkillType);
|
||||
|
||||
double statsStolen = victimSkillLevel * (vampirismStatLeechPercentage * 0.01D);
|
||||
int levelsStolen = (int) statsStolen;
|
||||
|
@ -308,7 +308,7 @@ public final class Misc {
|
||||
* @return true if the player is the party leader
|
||||
*/
|
||||
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) {
|
||||
@ -325,6 +325,10 @@ public final class Misc {
|
||||
experienceOrb.setExperience(experienceValue);
|
||||
}
|
||||
|
||||
public static @NotNull Player adaptPlayer(@NotNull OnlineMMOPlayer onlineMMOPlayer) {
|
||||
return (Player) onlineMMOPlayer.getServerAPIPlayerImpl();
|
||||
}
|
||||
|
||||
private static class SpawnOrbTask extends BukkitRunnable {
|
||||
private final Location location;
|
||||
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.subskills.AbstractSubSkill;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.neetgames.mcmmo.skill.RootSkill;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
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 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 */
|
||||
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) {
|
||||
if (mmoPlayer != null) {
|
||||
if (CommandUtils.hidden(sender, mmoPlayer.getPlayer(), false)) {
|
||||
if (CommandUtils.hidden(sender, Misc.adaptPlayer(mmoPlayer), false)) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
||||
return false;
|
||||
}
|
||||
@ -200,7 +200,7 @@ public final class CommandUtils {
|
||||
if (skill.isChildSkill()) {
|
||||
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), profile.getXpToLevel(skill));
|
||||
|
@ -1,11 +1,14 @@
|
||||
package com.gmail.nossr50.util.experience;
|
||||
|
||||
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.util.player.PlayerLevelUtils;
|
||||
import com.gmail.nossr50.util.text.StringUtils;
|
||||
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.BarStyle;
|
||||
import org.bukkit.boss.BossBar;
|
||||
@ -19,9 +22,9 @@ import java.util.List;
|
||||
*/
|
||||
public class ExperienceBarWrapper {
|
||||
|
||||
private final @NotNull SkillIdentity skillIdentity; //Primary Skill
|
||||
private final @NotNull RootSkill rootSkill; //Primary Skill
|
||||
private @NotNull BossBar bossBar;
|
||||
protected final @NotNull OnlineMMOPlayer onlineMMOPlayer;
|
||||
protected final @NotNull McMMOPlayer mmoPlayer;
|
||||
private int lastLevelUpdated;
|
||||
|
||||
/*
|
||||
@ -30,14 +33,14 @@ public class ExperienceBarWrapper {
|
||||
protected String niceSkillName;
|
||||
protected String title;
|
||||
|
||||
public ExperienceBarWrapper(@NotNull SkillIdentity skillIdentity, @NotNull OnlineMMOPlayer onlineMMOPlayer) {
|
||||
this.onlineMMOPlayer = onlineMMOPlayer;
|
||||
this.skillIdentity = skillIdentity;
|
||||
public ExperienceBarWrapper(@NotNull RootSkill rootSkill, @NotNull McMMOPlayer mmoPlayer) {
|
||||
this.mmoPlayer = mmoPlayer;
|
||||
this.rootSkill = rootSkill;
|
||||
title = "";
|
||||
lastLevelUpdated = 0;
|
||||
|
||||
//These vars are stored to help reduce operations involving strings
|
||||
niceSkillName = StringUtils.getCapitalized(skillIdentity.toString());
|
||||
niceSkillName = StringUtils.getCapitalized(rootSkill.toString());
|
||||
|
||||
//Create the bar
|
||||
initBar();
|
||||
@ -56,7 +59,7 @@ public class ExperienceBarWrapper {
|
||||
private String getTitleTemplate() {
|
||||
//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");
|
||||
} else if(ExperienceConfig.getInstance().getAddExtraDetails())
|
||||
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() {
|
||||
return onlineMMOPlayer.getSkillLevel(skillIdentity);
|
||||
return mmoPlayer.getSkillLevel(rootSkill);
|
||||
}
|
||||
private int getCurrentXP() {
|
||||
return onlineMMOPlayer.getSkillExperience(skillIdentity);
|
||||
return mmoPlayer.getSkillExperience(rootSkill);
|
||||
}
|
||||
private int getMaxXP() {
|
||||
return onlineMMOPlayer.getExperienceToNextLevel(skillIdentity);
|
||||
return mmoPlayer.getExperienceToNextLevel(rootSkill);
|
||||
}
|
||||
private int getPowerLevel() { return onlineMMOPlayer.getPowerLevel(); }
|
||||
private int getPercentageOfLevel() { return (int) (onlineMMOPlayer.getProgressInCurrentSkillLevel(skillIdentity) * 100); }
|
||||
private int getPowerLevel() { return mmoPlayer.getPowerLevel(); }
|
||||
private int getPercentageOfLevel() { return (int) (mmoPlayer.getProgressInCurrentSkillLevel(rootSkill) * 100); }
|
||||
|
||||
public String getTitle() {
|
||||
return bossBar.getTitle();
|
||||
@ -111,10 +114,10 @@ public class ExperienceBarWrapper {
|
||||
bossBar.setProgress(v);
|
||||
|
||||
//Check player level
|
||||
if(ExperienceConfig.getInstance().isEarlyGameBoostEnabled() && PlayerLevelUtils.qualifiesForEarlyGameBoost(mmoPlayer, skillIdentity)) {
|
||||
if(ExperienceConfig.getInstance().isEarlyGameBoostEnabled() && PlayerLevelUtils.qualifiesForEarlyGameBoost(mmoPlayer, rootSkill)) {
|
||||
setColor(BarColor.YELLOW);
|
||||
} else {
|
||||
setColor(ExperienceConfig.getInstance().getExperienceBarColor(skillIdentity));
|
||||
setColor(ExperienceConfig.getInstance().getExperienceBarColor(rootSkill));
|
||||
}
|
||||
|
||||
//Every time progress updates we need to check for a title update
|
||||
@ -154,7 +157,7 @@ public class ExperienceBarWrapper {
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
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.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
@ -17,11 +15,11 @@ public class ExperienceUtils {
|
||||
* @param xp Experience amount to add
|
||||
*/
|
||||
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) {
|
||||
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
|
||||
*/
|
||||
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;
|
||||
|
||||
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.gmail.nossr50.datatypes.skills.CoreSkillConstants;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.CoreSkills;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.runnables.skills.ExperienceBarHideTask;
|
||||
import com.gmail.nossr50.util.player.NotificationManager;
|
||||
import com.neetgames.mcmmo.skill.*;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@ -21,17 +20,16 @@ import java.util.Map;
|
||||
* Each ExperienceBarManager only manages a single player
|
||||
*/
|
||||
public class MMOExperienceBarManager {
|
||||
private final OnlineMMOPlayer mmoPlayer;
|
||||
private final McMMOPlayer mmoPlayer;
|
||||
|
||||
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 HashMap<SkillIdentity, ExperienceBarHideTask> experienceBarHideTaskHashMap;
|
||||
private @NotNull final Map<RootSkill, ExperienceBarWrapper> experienceBars;
|
||||
private @NotNull final Map<RootSkill, ExperienceBarHideTask> experienceBarHideTaskHashMap;
|
||||
|
||||
|
||||
public MMOExperienceBarManager(@NotNull OnlineMMOPlayer mmoPlayer, @NotNull Map<SkillIdentity, SkillBossBarState> barStateMapRef)
|
||||
public MMOExperienceBarManager(@NotNull McMMOPlayer mmoPlayer, @NotNull Map<RootSkill, SkillBossBarState> barStateMapRef)
|
||||
{
|
||||
this.mmoPlayer = mmoPlayer;
|
||||
this.barStateMapRef = barStateMapRef;
|
||||
@ -48,8 +46,8 @@ public class MMOExperienceBarManager {
|
||||
}
|
||||
|
||||
private void syncBarStates() {
|
||||
for(Map.Entry<SkillIdentity, SkillBossBarState> entry : barStateMapRef.entrySet()) {
|
||||
SkillIdentity key = entry.getKey();
|
||||
for(Map.Entry<RootSkill, SkillBossBarState> entry : barStateMapRef.entrySet()) {
|
||||
RootSkill key = entry.getKey();
|
||||
SkillBossBarState barState = entry.getValue();
|
||||
|
||||
switch(barState) {
|
||||
@ -67,130 +65,130 @@ public class MMOExperienceBarManager {
|
||||
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;
|
||||
|
||||
//Init Bar
|
||||
if(experienceBars.get(skillIdentity) == null)
|
||||
experienceBars.put(skillIdentity, new ExperienceBarWrapper(skillIdentity, mmoPlayer.getPersistentPlayerData()));
|
||||
if(experienceBars.get(rootSkill) == null)
|
||||
experienceBars.put(rootSkill, new ExperienceBarWrapper(rootSkill, mmoPlayer));
|
||||
|
||||
//Get Bar
|
||||
ExperienceBarWrapper experienceBarWrapper = experienceBars.get(skillIdentity);
|
||||
ExperienceBarWrapper experienceBarWrapper = experienceBars.get(rootSkill);
|
||||
|
||||
//Update Progress
|
||||
experienceBarWrapper.setProgress(mmoPlayer.getExperienceManager().getProgressInCurrentSkillLevel(skillIdentity));
|
||||
experienceBarWrapper.setProgress(mmoPlayer.getExperienceHandler().getProgressInCurrentSkillLevel(rootSkill));
|
||||
|
||||
//Show Bar
|
||||
experienceBarWrapper.showExperienceBar();
|
||||
|
||||
//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) {
|
||||
return barStateMapRef.get(primarySkillType) == BarState.DISABLED
|
||||
private boolean isBarDisabled(@NotNull RootSkill rootSkill) {
|
||||
return barStateMapRef.get(rootSkill) == SkillBossBarState.DISABLED
|
||||
//Config checks
|
||||
|| !ExperienceConfig.getInstance().isExperienceBarsEnabled()
|
||||
|| !ExperienceConfig.getInstance().isExperienceBarEnabled(primarySkillType);
|
||||
|| !ExperienceConfig.getInstance().isExperienceBarEnabled(rootSkill);
|
||||
}
|
||||
|
||||
private boolean isBarAlwaysVisible(PrimarySkillType primarySkillType) {
|
||||
return barStateMapRef.get(primarySkillType) == BarState.ALWAYS_ON;
|
||||
private boolean isBarAlwaysVisible(@NotNull RootSkill rootSkill) {
|
||||
return barStateMapRef.get(rootSkill) == SkillBossBarState.ALWAYS_ON;
|
||||
}
|
||||
|
||||
private void scheduleHideTask(PrimarySkillType primarySkillType, Plugin plugin) {
|
||||
if(isBarAlwaysVisible(primarySkillType))
|
||||
private void scheduleHideTask(@NotNull RootSkill rootSkill, @NotNull Plugin plugin) {
|
||||
if(isBarAlwaysVisible(rootSkill))
|
||||
return;
|
||||
|
||||
ExperienceBarHideTask experienceBarHideTask = new ExperienceBarHideTask(this, mmoPlayer, primarySkillType);
|
||||
experienceBarHideTask.runTaskLater(plugin, 20* delaySeconds);
|
||||
experienceBarHideTaskHashMap.put(primarySkillType, experienceBarHideTask);
|
||||
ExperienceBarHideTask experienceBarHideTask = new ExperienceBarHideTask(this, mmoPlayer, rootSkill);
|
||||
experienceBarHideTask.runTaskLater(plugin, 20 * delaySeconds);
|
||||
experienceBarHideTaskHashMap.put(rootSkill, experienceBarHideTask);
|
||||
}
|
||||
|
||||
public void hideExperienceBar(PrimarySkillType primarySkillType)
|
||||
public void hideExperienceBar(@NotNull RootSkill rootSkill)
|
||||
{
|
||||
if(experienceBars.containsKey(primarySkillType))
|
||||
experienceBars.get(primarySkillType).hideExperienceBar();
|
||||
if(experienceBars.containsKey(rootSkill))
|
||||
experienceBars.get(rootSkill).hideExperienceBar();
|
||||
}
|
||||
|
||||
public void clearTask(PrimarySkillType primarySkillType)
|
||||
public void clearTask(@NotNull RootSkill rootSkill)
|
||||
{
|
||||
experienceBarHideTaskHashMap.remove(primarySkillType);
|
||||
experienceBarHideTaskHashMap.remove(rootSkill);
|
||||
}
|
||||
|
||||
public void disableAllBars() {
|
||||
for(PrimarySkillType primarySkillType : PrimarySkillType.values()) {
|
||||
xpBarSettingToggle(XPBarSettingTarget.HIDE, primarySkillType);
|
||||
for(RootSkill rootSkill : mcMMO.p.getSkillRegister().getRootSkills()) {
|
||||
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) {
|
||||
case SHOW:
|
||||
barStateMapRef.put(skillIdentity, SkillBossBarState.ALWAYS_ON);
|
||||
barStateMapRef.put(rootSkill, SkillBossBarState.ALWAYS_ON);
|
||||
|
||||
//Remove lingering tasks
|
||||
if(experienceBarHideTaskHashMap.containsKey(skillIdentity)) {
|
||||
experienceBarHideTaskHashMap.get(skillIdentity).cancel();
|
||||
if(experienceBarHideTaskHashMap.containsKey(rootSkill)) {
|
||||
experienceBarHideTaskHashMap.get(rootSkill).cancel();
|
||||
}
|
||||
|
||||
updateExperienceBar(skillIdentity, mcMMO.p);
|
||||
updateExperienceBar(rootSkill, mcMMO.p);
|
||||
break;
|
||||
case HIDE:
|
||||
barStateMapRef.put(skillIdentity, SkillBossBarState.DISABLED);
|
||||
barStateMapRef.put(rootSkill, SkillBossBarState.DISABLED);
|
||||
|
||||
//Remove lingering tasks
|
||||
if(experienceBarHideTaskHashMap.containsKey(skillIdentity)) {
|
||||
experienceBarHideTaskHashMap.get(skillIdentity).cancel();
|
||||
if(experienceBarHideTaskHashMap.containsKey(rootSkill)) {
|
||||
experienceBarHideTaskHashMap.get(rootSkill).cancel();
|
||||
}
|
||||
|
||||
hideExperienceBar(skillIdentity);
|
||||
hideExperienceBar(rootSkill);
|
||||
break;
|
||||
case RESET:
|
||||
resetBarSettings();
|
||||
break;
|
||||
}
|
||||
|
||||
informPlayer(skillBossBarSetting, skillIdentity);
|
||||
informPlayer(skillBossBarSetting, rootSkill);
|
||||
}
|
||||
|
||||
private void resetBarSettings() {
|
||||
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
|
||||
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 {
|
||||
NotificationManager.sendPlayerInformationChatOnlyPrefixed(mmoPlayer.getPlayer(), "Commands.XPBar.Reset");
|
||||
NotificationManager.sendPlayerInformationChatOnlyPrefixed(Misc.adaptPlayer(mmoPlayer), "Commands.XPBar.Reset");
|
||||
}
|
||||
}
|
||||
|
||||
public static @NotNull HashMap<SkillIdentity, SkillBossBarState> generateDefaultBarStateMap() {
|
||||
HashMap<SkillIdentity, SkillBossBarState> barStateMap = new HashMap<>();
|
||||
public static @NotNull Map<RootSkill, SkillBossBarState> generateDefaultBarStateMap() {
|
||||
HashMap<RootSkill, SkillBossBarState> barStateMap = new HashMap<>();
|
||||
|
||||
setBarStateDefaults(barStateMap);
|
||||
|
||||
return barStateMap;
|
||||
}
|
||||
|
||||
public static void setBarStateDefaults(HashMap<SkillIdentity, SkillBossBarState> barStateHashMap) {
|
||||
for(RootSkill rootSkill : CoreSkillConstants.getImmutableCoreRootSkillSet()) {
|
||||
public static void setBarStateDefaults(@NotNull Map<RootSkill, SkillBossBarState> barStateHashMap) {
|
||||
for(RootSkill rootSkill : CoreSkills.getImmutableCoreRootSkillSet()) {
|
||||
|
||||
if(CoreSkillConstants.isChildSkill(rootSkill.getSkillIdentity())) {
|
||||
barStateHashMap.put(rootSkill.getSkillIdentity(), SkillBossBarState.DISABLED);
|
||||
if(CoreSkills.isChildSkill(rootSkill)) {
|
||||
barStateHashMap.put(rootSkill, SkillBossBarState.DISABLED);
|
||||
} else {
|
||||
barStateHashMap.put(rootSkill.getSkillIdentity(), SkillBossBarState.NORMAL);
|
||||
barStateHashMap.put(rootSkill, SkillBossBarState.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ public class AbilityActivationProcessor {
|
||||
|
||||
public AbilityActivationProcessor(OnlineMMOPlayer mmoPlayer) {
|
||||
this.mmoPlayer = mmoPlayer;
|
||||
this.player = mmoPlayer.getPlayer();
|
||||
this.player = Misc.adaptPlayer(mmoPlayer);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -98,7 +98,7 @@ public class AbilityActivationProcessor {
|
||||
}
|
||||
|
||||
/* GREEN THUMB CHECK */
|
||||
HerbalismManager herbalismManager = mmoPlayer.getHerbalismManager();
|
||||
HerbalismManager herbalismManager = ((McMMOPlayer) (mmoPlayer)).getHerbalismManager();
|
||||
|
||||
if (getHeldItem().getType() == Material.BONE_MEAL) {
|
||||
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?
|
||||
/* BLAST MINING CHECK */
|
||||
MiningManager miningManager = mmoPlayer.getMiningManager();
|
||||
MiningManager miningManager = ((McMMOPlayer) (mmoPlayer)).getMiningManager();
|
||||
if (miningManager.canDetonate()) {
|
||||
miningManager.remoteDetonation();
|
||||
}
|
||||
@ -178,7 +178,7 @@ public class AbilityActivationProcessor {
|
||||
|
||||
/* CALL OF THE WILD CHECKS */
|
||||
Material type = getHeldItem().getType();
|
||||
TamingManager tamingManager = mmoPlayer.getTamingManager();
|
||||
TamingManager tamingManager = ((McMMOPlayer) (mmoPlayer)).getTamingManager();
|
||||
|
||||
if (type == Config.getInstance().getTamingCOTWMaterial(CallOfTheWildType.WOLF.getConfigEntityTypeEntry())) {
|
||||
tamingManager.summonWolf();
|
||||
|
@ -3,8 +3,8 @@ package com.gmail.nossr50.util.input;
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.neetgames.mcmmo.player.OnlineMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.player.PersistentPlayerData;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.neetgames.mcmmo.player.MMOPlayerData;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityToolType;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
|
||||
@ -28,7 +28,7 @@ import java.util.Map;
|
||||
|
||||
public class SuperAbilityManager {
|
||||
|
||||
private final OnlineMMOPlayer mmoPlayer;
|
||||
private final McMMOPlayer mmoPlayer;
|
||||
private final Player player;
|
||||
|
||||
private final Map<SuperAbilityType, Boolean> superAbilityState = new HashMap<>();
|
||||
@ -37,12 +37,12 @@ public class SuperAbilityManager {
|
||||
private boolean abilityActivationPermission = true;
|
||||
|
||||
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.persistentPlayerData = persistentPlayerData;
|
||||
this.player = mmoPlayer.getPlayer();
|
||||
this.mmoPlayerData = mmoPlayerData;
|
||||
this.player = Misc.adaptPlayer(mmoPlayer);
|
||||
|
||||
for (SuperAbilityType superAbilityType : SuperAbilityType.values()) {
|
||||
superAbilityState.put(superAbilityType, false);
|
||||
@ -55,7 +55,7 @@ public class SuperAbilityManager {
|
||||
}
|
||||
|
||||
public void processAbilityActivation(PrimarySkillType skill) {
|
||||
Player player = mmoPlayer.getPlayer();
|
||||
Player player = Misc.adaptPlayer(mmoPlayer);
|
||||
|
||||
if (!skill.getPermissions(player)) {
|
||||
return;
|
||||
@ -243,7 +243,7 @@ public class SuperAbilityManager {
|
||||
}
|
||||
|
||||
public void resetCooldowns() {
|
||||
this.persistentPlayerData.resetCooldowns();
|
||||
this.mmoPlayerData.resetCooldowns();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -336,7 +336,7 @@ public class SuperAbilityManager {
|
||||
*/
|
||||
public int calculateTimeRemaining(SuperAbilityType superAbilityType) {
|
||||
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.datatypes.interactions.NotificationType;
|
||||
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.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||
import com.gmail.nossr50.events.skills.McMMOPlayerNotificationEvent;
|
||||
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.text.McMMOMessageType;
|
||||
import com.gmail.nossr50.util.text.TextComponentFactory;
|
||||
import com.neetgames.mcmmo.skill.RootSkill;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
import net.kyori.adventure.audience.MessageType;
|
||||
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 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);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if(mmoPlayer == null || !mmoPlayer.hasSkillChatNotifications())
|
||||
//Don't send chat notifications if they are disabled
|
||||
if(mmoPlayer != null && !mmoPlayer.hasSkillChatNotifications())
|
||||
return;
|
||||
|
||||
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
|
||||
@ -91,7 +92,8 @@ public class NotificationManager {
|
||||
{
|
||||
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;
|
||||
|
||||
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
|
||||
@ -99,9 +101,11 @@ public class NotificationManager {
|
||||
player.sendMessage(prefixFormattedMessage);
|
||||
}
|
||||
|
||||
public static void sendPlayerInformation(@NotNull Player player, @NotNull NotificationType notificationType, @NotNull String key, String... values)
|
||||
{
|
||||
if(mcMMO.getUserManager().queryPlayer(player) == null || !mcMMO.getUserManager().queryPlayer(player).hasSkillChatNotifications())
|
||||
public static void sendPlayerInformation(@NotNull Player player, @NotNull NotificationType notificationType, @NotNull String key, String... values) {
|
||||
OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
|
||||
|
||||
//Don't send chat notifications if they are disabled
|
||||
if(mmoPlayer != null && !mmoPlayer.hasSkillChatNotifications())
|
||||
return;
|
||||
|
||||
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
|
||||
McMMOPlayerNotificationEvent customEvent = new McMMOPlayerNotificationEvent(player,
|
||||
notificationType, message, destination, AdvancedConfig.getInstance().doesNotificationSendCopyToChat(notificationType));
|
||||
@ -146,20 +150,20 @@ public class NotificationManager {
|
||||
/**
|
||||
* Handles sending level up notifications to a mmoPlayer
|
||||
* @param mmoPlayer target mmoPlayer
|
||||
* @param skillName skill that leveled up
|
||||
* @param rootSkill skill that leveled up
|
||||
* @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())
|
||||
return;
|
||||
|
||||
McMMOMessageType destination = AdvancedConfig.getInstance().doesNotificationUseActionBar(NotificationType.LEVEL_UP_MESSAGE) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
|
||||
|
||||
Component levelUpTextComponent = TextComponentFactory.getNotificationLevelUpTextComponent(skillName, levelsGained, newLevel);
|
||||
McMMOPlayerNotificationEvent customEvent = checkNotificationEvent(mmoPlayer.getPlayer(), NotificationType.LEVEL_UP_MESSAGE, destination, levelUpTextComponent);
|
||||
Component levelUpTextComponent = TextComponentFactory.getNotificationLevelUpTextComponent(CoreSkills.getSkill(rootSkill), levelsGained, newLevel);
|
||||
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)
|
||||
@ -176,16 +180,16 @@ public class NotificationManager {
|
||||
return;
|
||||
|
||||
//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
|
||||
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
|
||||
/*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(),
|
||||
String.valueOf(RankUtils.getRank(mmoPlayer.getPlayer(),
|
||||
String.valueOf(RankUtils.getRank(Misc.adaptPlayer(mmoPlayer),
|
||||
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