diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index 9bae84ee..fc56e50d 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -44,7 +44,6 @@ import net.Indyuce.mmocore.player.CombatHandler; import net.Indyuce.mmocore.player.Unlockable; import net.Indyuce.mmocore.skill.ClassSkill; import net.Indyuce.mmocore.skill.RegisteredSkill; -import net.Indyuce.mmocore.skill.binding.SkillSlot; import net.Indyuce.mmocore.skill.cast.SkillCastingHandler; import net.Indyuce.mmocore.skilltree.IntegerCoordinates; import net.Indyuce.mmocore.skilltree.NodeStatus; @@ -105,6 +104,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc @Deprecated private final Set waypoints = new HashSet<>(); private final Map skills = new HashMap<>(); + // TODO change it to an array....... Map is just BoundSkillInfo[] private final Map boundSkills = new HashMap<>(); private final PlayerProfessions collectSkills = new PlayerProfessions(this); private final PlayerAttributes attributes = new PlayerAttributes(this); @@ -1064,15 +1064,15 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc public void setSkillLevel(String skill, int level) { skills.put(skill, level); - refreshBoundedSkill(skill); + refreshBoundSkill(skill); } public void resetSkillLevel(String skill) { skills.remove(skill); - refreshBoundedSkill(skill); + refreshBoundSkill(skill); } - public void refreshBoundedSkill(String skill) { + public void refreshBoundSkill(String skill) { boundSkills.values().stream().filter(skillInfo -> skillInfo.getClassSkill().getSkill().getHandler().getId().equals(skill)).forEach(BoundSkillInfo::refresh); } @@ -1142,6 +1142,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc return boundSkills.containsKey(slot); } + @Nullable public ClassSkill getBoundSkill(int slot) { return boundSkills.containsKey(slot) ? boundSkills.get(slot).getClassSkill() : null; } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java index e125792a..a4483506 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java @@ -32,7 +32,7 @@ public class CastableSkill extends Skill { PlayerData playerData = PlayerData.get(skillMeta.getCaster().getData().getUniqueId()); boolean loud = !getTrigger().isSilent(); - // If the caster has unlocked that skill + // Skill is not usable yet if (!playerData.hasSkillUnlocked(skill)) { if (loud) MMOCore.plugin.configManager.getSimpleMessage("not-unlocked-skill").send(playerData.getPlayer()); return false; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/ClassSkill.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/ClassSkill.java index 504e7f61..af08b6cd 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/ClassSkill.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/ClassSkill.java @@ -22,9 +22,6 @@ public class ClassSkill implements CooldownObject, Unlockable { private final boolean unlockedByDefault; private final Map modifiers = new HashMap<>(); - @Deprecated - private final Set unlockConditions = new HashSet<>(); - /** * Class used to save information about skills IN A CLASS CONTEXT * i.e at which level the skill can be unlocked, etc. diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/binding/BoundSkillInfo.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/binding/BoundSkillInfo.java index 1d7920de..9bdecb15 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/binding/BoundSkillInfo.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/binding/BoundSkillInfo.java @@ -3,6 +3,7 @@ package net.Indyuce.mmocore.skill.binding; import io.lumine.mythic.lib.player.skill.PassiveSkill; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.skill.ClassSkill; +import org.jetbrains.annotations.NotNull; import java.util.Objects; import java.util.UUID; @@ -10,17 +11,18 @@ import java.util.UUID; public class BoundSkillInfo { private final PlayerData playerData; private final ClassSkill classSkill; - private UUID passiveSkillUUID; + + private UUID passiveSkillId; public BoundSkillInfo(ClassSkill classSkill, PlayerData playerData) { this.classSkill = classSkill; this.playerData = playerData; } - public BoundSkillInfo(ClassSkill classSkill, PlayerData playerData, UUID passiveSkillUUID) { + public BoundSkillInfo(ClassSkill classSkill, PlayerData playerData, UUID passiveSkillId) { this.classSkill = classSkill; this.playerData = playerData; - this.passiveSkillUUID = passiveSkillUUID; + this.passiveSkillId = passiveSkillId; } /** @@ -32,19 +34,22 @@ public class BoundSkillInfo { info.unbind(); PassiveSkill passiveSkill = classSkill.toPassive(playerData); passiveSkill.register(playerData.getMMOPlayerData()); - this.passiveSkillUUID = passiveSkill.getUniqueId(); + this.passiveSkillId = passiveSkill.getUniqueId(); } + @NotNull public ClassSkill getClassSkill() { return classSkill; } + @NotNull public PlayerData getPlayerData() { return playerData; } - public UUID getPassiveSkillUUID() { - return passiveSkillUUID; + @NotNull + public UUID getPassiveSkillId() { + return passiveSkillId; } /** @@ -52,16 +57,15 @@ public class BoundSkillInfo { */ public void refresh() { if (classSkill.getSkill().getTrigger().isPassive()) { - playerData.getMMOPlayerData().getPassiveSkillMap().removeModifier(passiveSkillUUID); + playerData.getMMOPlayerData().getPassiveSkillMap().removeModifier(passiveSkillId); PassiveSkill passiveSkill = classSkill.toPassive(playerData); passiveSkill.register(playerData.getMMOPlayerData()); - this.passiveSkillUUID = passiveSkill.getUniqueId(); + this.passiveSkillId = passiveSkill.getUniqueId(); } } public void unbind() { - if (classSkill.getSkill().getTrigger().isPassive()) { - playerData.getMMOPlayerData().getPassiveSkillMap().removeModifier(passiveSkillUUID); - } + if (classSkill.getSkill().getTrigger().isPassive()) + playerData.getMMOPlayerData().getPassiveSkillMap().removeModifier(passiveSkillId); } }