From 06f1ab2ab0015214c08a398c48c991e8814a15bf Mon Sep 17 00:00:00 2001 From: Indyuce Date: Sat, 19 Feb 2022 13:09:30 +0100 Subject: [PATCH] Increased PlayerData#boundSkills security --- .../net/Indyuce/mmocore/api/player/PlayerData.java | 3 ++- .../net/Indyuce/mmocore/skill/RegisteredSkill.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index 61a132eb..149868f3 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -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 diff --git a/src/main/java/net/Indyuce/mmocore/skill/RegisteredSkill.java b/src/main/java/net/Indyuce/mmocore/skill/RegisteredSkill.java index 8d0e48bc..7c21e8d8 100644 --- a/src/main/java/net/Indyuce/mmocore/skill/RegisteredSkill.java +++ b/src/main/java/net/Indyuce/mmocore/skill/RegisteredSkill.java @@ -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); + } }