More API migration, feels like a mountain of work left lol

This commit is contained in:
nossr50 2020-12-22 17:27:25 -08:00
parent 73bc12841a
commit 4199ea0095
110 changed files with 2405 additions and 2521 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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;

View File

@ -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();
}

View File

@ -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();
}

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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();
}

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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)) {

View File

@ -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);

View File

@ -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;

View File

@ -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))) {

View File

@ -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();

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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);

View File

@ -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)

View File

@ -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) {

View File

@ -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);
}

View File

@ -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();

View File

@ -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())

View File

@ -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,

View File

@ -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,

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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)) {

View File

@ -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;
}

View File

@ -61,7 +61,7 @@ public class UnarmedCommand extends SkillCommand {
// IRON ARM
if (canIronArm) {
ironArmBonus = mmoPlayer.getUnarmedManager().getSteelArmStyleDamage();
ironArmBonus = ((McMMOPlayer) (mmoPlayer)).getUnarmedManager().getSteelArmStyleDamage();
}
// IRON GRIP

View File

@ -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);

View File

@ -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;
}

View File

@ -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); }

View File

@ -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.

View File

@ -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);
}
}

View File

@ -0,0 +1,6 @@
package com.gmail.nossr50.datatypes.experience;
import com.neetgames.mcmmo.experience.ExperienceHandler;
public class OfflineExperienceProcessor implements ExperienceHandler {
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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
}

View File

@ -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()) {

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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());
}
}

View 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;
}
}
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);
}

View File

@ -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()) {

View File

@ -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();
}
}

View File

@ -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());
}
}

View File

@ -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());
}
/**

View File

@ -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;

View File

@ -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;
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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());
}
}

View File

@ -32,7 +32,7 @@ public class AbilityDisableTask extends BukkitRunnable {
return;
}
Player player = mmoPlayer.getPlayer();
Player player = Misc.adaptPlayer(mmoPlayer);
switch (ability) {
case SUPER_BREAKER:

View File

@ -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);

View File

@ -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;

View File

@ -18,6 +18,6 @@ public class DelayedHerbalismXPCheckTask extends BukkitRunnable {
@Override
public void run() {
mmoPlayer.getHerbalismManager().awardXPForBlockSnapshots(chorusBlocks);
((McMMOPlayer) (mmoPlayer)).getHerbalismManager().awardXPForBlockSnapshots(chorusBlocks);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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());
}
}
}

View File

@ -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);
}
/**

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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:

View File

@ -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;

View File

@ -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) {

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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());

View File

@ -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);
}

View File

@ -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;

View File

@ -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;

View File

@ -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)); }

View File

@ -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));

View File

@ -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());
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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