Increased PlayerData#boundSkills security

This commit is contained in:
Indyuce 2022-02-19 13:09:30 +01:00
parent 3b09398ebc
commit 06f1ab2ab0
2 changed files with 15 additions and 1 deletions

View File

@ -156,7 +156,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
int j = 0;
while (j < boundSkills.size())
try {
boundSkills.set(j, getProfess().getSkill(boundSkills.get(j).getSkill()));
boundSkills.set(j, Objects.requireNonNull(getProfess().getSkill(boundSkills.get(j).getSkill())));
} catch (Exception ignored) {
} finally {
j++;
@ -843,6 +843,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
}
public void setBoundSkill(int slot, ClassSkill skill) {
Validate.notNull(skill, "Skill cannot be null");
if (boundSkills.size() < 6)
boundSkills.add(skill);
else

View File

@ -90,4 +90,17 @@ public class RegisteredSkill {
public double getModifier(String modifier, int level) {
return defaultModifiers.get(modifier).calculate(level);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
RegisteredSkill that = (RegisteredSkill) o;
return handler.equals(that.handler) && triggerType.equals(that.triggerType);
}
@Override
public int hashCode() {
return Objects.hash(handler, triggerType);
}
}