From 51a57429b6b8e3480a726592b7d032f4129d1e53 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Thu, 6 Jun 2019 05:58:44 -0700 Subject: [PATCH] Add PVP/PVE settings to core skill config --- .../coreskills/ConfigCoreSkillCombatMap.java | 30 ++++++++++++++++ .../skills/coreskills/ConfigCoreSkills.java | 25 ++++++++++++++ .../ConfigCoreSkillsCombatToggles.java | 34 +++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkillCombatMap.java create mode 100644 src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkillsCombatToggles.java diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkillCombatMap.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkillCombatMap.java new file mode 100644 index 000000000..73b76146a --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkillCombatMap.java @@ -0,0 +1,30 @@ +package com.gmail.nossr50.config.hocon.skills.coreskills; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import ninja.leaping.configurate.objectmapping.Setting; +import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; + +import java.util.HashMap; + +@ConfigSerializable +public class ConfigCoreSkillCombatMap { + + private static final HashMap COMBAT_TOGGLE_DEFAULT; + + static { + COMBAT_TOGGLE_DEFAULT = new HashMap<>(); + + for (PrimarySkillType primarySkillType : PrimarySkillType.values()) { + + COMBAT_TOGGLE_DEFAULT.put(primarySkillType, true); + } + + } + + @Setting(value = "Combat-Toggles") + private HashMap combatToggleMap = COMBAT_TOGGLE_DEFAULT; + + public HashMap getCombatToggleMap() { + return combatToggleMap; + } +} diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkills.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkills.java index e5c09f6a7..5ca737ef5 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkills.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkills.java @@ -1,5 +1,6 @@ package com.gmail.nossr50.config.hocon.skills.coreskills; +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @@ -10,6 +11,10 @@ public class ConfigCoreSkills { "\nCore skills are ones built into mcMMO") private ConfigCoreSkillsAcrobatics configCoreSkillsAcrobatics = new ConfigCoreSkillsAcrobatics(); + @Setting(value = "Combat-Settings", comment = "Determine whether or not a skills effects can activate in PVP or PVE" + + "\nIf a skill has no combat interactions, the toggle for it will still exists in case I ever do add combat interactions for the skill.") + private ConfigCoreSkillsCombatToggles combatToggles = new ConfigCoreSkillsCombatToggles(); + public boolean isRollEnabled() { return configCoreSkillsAcrobatics.isRollEnabled(); } @@ -21,4 +26,24 @@ public class ConfigCoreSkills { public boolean isAcrobaticsEnabled() { return getConfigCoreSkillsAcrobatics().isAcrobaticsEnabled(); } + + public ConfigCoreSkillsCombatToggles getCombatToggles() { + return combatToggles; + } + + public ConfigCoreSkillCombatMap getPve() { + return combatToggles.getPve(); + } + + public ConfigCoreSkillCombatMap getPvp() { + return combatToggles.getPvp(); + } + + public boolean isPVEEnabled(PrimarySkillType primarySkillType) { + return combatToggles.isPVEEnabled(primarySkillType); + } + + public boolean isPVPEnabled(PrimarySkillType primarySkillType) { + return combatToggles.isPVPEnabled(primarySkillType); + } } diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkillsCombatToggles.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkillsCombatToggles.java new file mode 100644 index 000000000..7dc1b8494 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/coreskills/ConfigCoreSkillsCombatToggles.java @@ -0,0 +1,34 @@ +package com.gmail.nossr50.config.hocon.skills.coreskills; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import ninja.leaping.configurate.objectmapping.Setting; +import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; + +@ConfigSerializable +public class ConfigCoreSkillsCombatToggles { + + @Setting(value = "PVE-Toggles", comment = "When set to false, offensive combat related abilities from a skill will not trigger in PVE." + + "\nPVE = Player Versus Environment" + + "\nEnvironment is stuff like Monsters, Animals") + private ConfigCoreSkillCombatMap pve = new ConfigCoreSkillCombatMap(); + + @Setting(value = "PVE-Toggles", comment = "When set to false, offensive combat related abilities from a skill will not trigger in PVP." + + "\nPVP = Player Versus Player") + private ConfigCoreSkillCombatMap pvp = new ConfigCoreSkillCombatMap(); + + public ConfigCoreSkillCombatMap getPve() { + return pve; + } + + public ConfigCoreSkillCombatMap getPvp() { + return pvp; + } + + public boolean isPVEEnabled(PrimarySkillType primarySkillType) { + return pve.getCombatToggleMap().get(primarySkillType); + } + + public boolean isPVPEnabled(PrimarySkillType primarySkillType) { + return pvp.getCombatToggleMap().get(primarySkillType); + } +}