diff --git a/src/main/java/com/gmail/nossr50/config/hocon/SkillRankPropertySerializer.java b/src/main/java/com/gmail/nossr50/config/hocon/SkillRankPropertySerializer.java index 5abe0f645..021e8ad98 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/SkillRankPropertySerializer.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/SkillRankPropertySerializer.java @@ -20,20 +20,24 @@ public class SkillRankPropertySerializer implements TypeSerializer type, @NonNull ConfigurationNode value) throws ObjectMappingException { - HashMap standardMap; - HashMap retroMap; + HashMap standardHashMap; + HashMap retroHashMap; try { - standardMap = (HashMap) value.getNode(STANDARD_RANK_UNLOCK_LEVEL_REQUIREMENTS).getValue(new TypeToken>() {}); - retroMap = (HashMap) value.getNode(RETRO_RANK_UNLOCK_LEVEL_REQUIREMENTS).getValue(new TypeToken>() {}); + Map standardMap = value.getNode(STANDARD_RANK_UNLOCK_LEVEL_REQUIREMENTS).getValue(new TypeToken>() {}); + Map retroMap = value.getNode(RETRO_RANK_UNLOCK_LEVEL_REQUIREMENTS).getValue(new TypeToken>() {}); + + standardHashMap = new HashMap<>(standardMap); + retroHashMap = new HashMap<>(retroMap); + } catch (ObjectMappingException e) { mcMMO.p.getLogger().severe("Unable to deserialize rank property information from the config, make sure the ranks are correctly set in the config. You can delete the rank config to generate a new one if problems persist."); throw e; } SkillRankProperty skillRankProperty = new SkillRankProperty(); - skillRankProperty.setStandardRanks(standardMap); - skillRankProperty.setRetroRanks(retroMap); + skillRankProperty.setStandardRanks(standardHashMap); + skillRankProperty.setRetroRanks(retroHashMap); return skillRankProperty; } @@ -41,6 +45,6 @@ public class SkillRankPropertySerializer implements TypeSerializer type, @Nullable SkillRankProperty obj, @NonNull ConfigurationNode value) throws ObjectMappingException { value.getNode(STANDARD_RANK_UNLOCK_LEVEL_REQUIREMENTS).setValue(obj.getStandardRanks()); - value.getNode(RETRO_RANK_UNLOCK_LEVEL_REQUIREMENTS).setValue(obj.getStandardRanks()); + value.getNode(RETRO_RANK_UNLOCK_LEVEL_REQUIREMENTS).setValue(obj.getRetroRanks()); } } diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksArchery.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksArchery.java index ba7b9dd4c..d7d09cea7 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksArchery.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksArchery.java @@ -6,7 +6,7 @@ import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @ConfigSerializable public class ConfigRanksArchery { - @Setting(value = "Limit-Break") + @Setting(value = "Archery-Limit-Break") private SkillRankProperty limitBreak = new SkillRankProperty(10, 20, 30, 40, 50, 60, 70, 80, 90, 100); @Setting(value = "Arrow-Retrieval") diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksAxes.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksAxes.java index cff5c18fa..e34e627ff 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksAxes.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksAxes.java @@ -6,7 +6,7 @@ import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @ConfigSerializable public class ConfigRanksAxes { - @Setting(value = "Limit-Break") + @Setting(value = "Axes-Limit-Break") private SkillRankProperty limitBreak = new SkillRankProperty(10, 20, 30, 40, 50, 60, 70, 80, 90, 100); @Setting(value = "Skull-Splitter") diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksRepair.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksRepair.java index 0badde7c0..ec7ab2f1c 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksRepair.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksRepair.java @@ -1,8 +1,29 @@ package com.gmail.nossr50.config.hocon.skills.ranks; +import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @ConfigSerializable public class ConfigRanksRepair { + @Setting(value = "Arcane-Forging") + private SkillRankProperty arcaneForging = new SkillRankProperty(10, 25, 35, 50, 65, 75, 85, 100); + + @Setting(value = "Repair-Mastery") + private SkillRankProperty repairMastery = new SkillRankProperty(75); + + @Setting(value = "Super-Repair") + private SkillRankProperty superRepair = new SkillRankProperty(40); + + public SkillRankProperty getArcaneForging() { + return arcaneForging; + } + + public SkillRankProperty getRepairMastery() { + return repairMastery; + } + + public SkillRankProperty getSuperRepair() { + return superRepair; + } } diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksSwords.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksSwords.java index 8418d314a..f86f27d84 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksSwords.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksSwords.java @@ -6,7 +6,7 @@ import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @ConfigSerializable public class ConfigRanksSwords { - @Setting(value = "Limit-Break") + @Setting(value = "Swords-Limit-Break") private SkillRankProperty limitBreak = new SkillRankProperty(10, 20, 30, 40, 50, 60, 70, 80, 90, 100); @Setting(value = "Stab") diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksUnarmed.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksUnarmed.java index 09b9cfc7c..71cf03bc8 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksUnarmed.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/ranks/ConfigRanksUnarmed.java @@ -6,7 +6,7 @@ import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @ConfigSerializable public class ConfigRanksUnarmed { - @Setting(value = "Limit-Break") + @Setting(value = "Unarmed-Limit-Break") private SkillRankProperty limitBreak = new SkillRankProperty(10, 20, 30, 40, 50, 60, 70, 80, 90, 100); @Setting(value = "Berserk") diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java index 85ed63777..74d83595d 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java @@ -36,7 +36,7 @@ public enum PrimarySkillType { ACROBATICS(AcrobaticsManager.class, Color.WHITE, ImmutableList.of(SubSkillType.ACROBATICS_DODGE, SubSkillType.ACROBATICS_ROLL), "Acrobatics"), ALCHEMY(AlchemyManager.class, Color.FUCHSIA, - ImmutableList.of(SubSkillType.ALCHEMY_CATALYSIS, SubSkillType.ALCHEMY_CONCOCTIONS), "Alchemy"), + ImmutableList.of(), "Alchemy"), ARCHERY(ArcheryManager.class, Color.MAROON, ImmutableList.of(SubSkillType.ARCHERY_DAZE, SubSkillType.ARCHERY_ARCHERY_LIMIT_BREAK, SubSkillType.ARCHERY_ARROW_RETRIEVAL, SubSkillType.ARCHERY_SKILL_SHOT), "Archery"), AXES(AxesManager.class, Color.AQUA, SuperAbilityType.SKULL_SPLITTER, ToolType.AXE, @@ -44,7 +44,7 @@ public enum PrimarySkillType { EXCAVATION(ExcavationManager.class, Color.fromRGB(139, 69, 19), SuperAbilityType.GIGA_DRILL_BREAKER, ToolType.SHOVEL, ImmutableList.of(SubSkillType.EXCAVATION_GIGA_DRILL_BREAKER, SubSkillType.EXCAVATION_ARCHAEOLOGY), "Excavation"), FISHING(FishingManager.class, Color.NAVY, - ImmutableList.of(SubSkillType.FISHING_FISHERMANS_DIET, SubSkillType.FISHING_TREASURE_HUNTER, SubSkillType.FISHING_ICE_FISHING, SubSkillType.FISHING_MAGIC_HUNTER, SubSkillType.FISHING_MASTER_ANGLER, SubSkillType.FISHING_SHAKE), "Fishing"), + ImmutableList.of(SubSkillType.FISHING_FISHERMANS_DIET, SubSkillType.FISHING_TREASURE_HUNTER, SubSkillType.FISHING_ICE_FISHING, SubSkillType.FISHING_MAGIC_HUNTER, SubSkillType.FISHING_MASTER_ANGLER, SubSkillType.FISHING_SHAKE, SubSkillType.FISHING_INNER_PEACE), "Fishing"), HERBALISM(HerbalismManager.class, Color.GREEN, SuperAbilityType.GREEN_TERRA, ToolType.HOE, ImmutableList.of(SubSkillType.HERBALISM_GREEN_TERRA, SubSkillType.HERBALISM_FARMERS_DIET, SubSkillType.HERBALISM_GREEN_THUMB, SubSkillType.HERBALISM_DOUBLE_DROPS, SubSkillType.HERBALISM_HYLIAN_LUCK, SubSkillType.HERBALISM_SHROOM_THUMB), "Herbalism"), MINING(MiningManager.class, Color.GRAY, SuperAbilityType.SUPER_BREAKER, ToolType.PICKAXE, @@ -151,6 +151,8 @@ public enum PrimarySkillType { return type; } } + + mcMMO.p.getLogger().severe("Unable to locate parent for "+subSkillType.toString()); return null; } diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java index f9373a086..44ab15c72 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java @@ -12,8 +12,6 @@ public enum SubSkillType { ACROBATICS_ROLL, /* ALCHEMY */ - ALCHEMY_CATALYSIS(1), - ALCHEMY_CONCOCTIONS(8), /* ARCHERY */ ARCHERY_ARROW_RETRIEVAL(1), diff --git a/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java b/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java index 82888f887..3207fbadc 100644 --- a/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java @@ -222,9 +222,13 @@ public class InventoryListener implements Listener { HumanEntity whoClicked = event.getWhoClicked(); - if (!UserManager.hasPlayerDataKey(event.getWhoClicked()) || !Permissions.isSubSkillEnabled(whoClicked, SubSkillType.ALCHEMY_CONCOCTIONS)) { + //TODO: This is where Alchemy permissions used to be checked + //TODO: This is where Alchemy permissions used to be checked + //TODO: This is where Alchemy permissions used to be checked + //TODO: This is where Alchemy permissions used to be checked + /*if (!UserManager.hasPlayerDataKey(event.getWhoClicked()) || !Permissions.isSubSkillEnabled(whoClicked, SubSkillType.ALCHEMY_CONCOCTIONS)) { return; - } + }*/ Player player = (Player) whoClicked; @@ -328,9 +332,13 @@ public class InventoryListener implements Listener { HumanEntity whoClicked = event.getWhoClicked(); - if (!UserManager.hasPlayerDataKey(event.getWhoClicked()) || !Permissions.isSubSkillEnabled(whoClicked, SubSkillType.ALCHEMY_CONCOCTIONS)) { + //TODO: This is where alchemy permissions used to be checked + //TODO: This is where alchemy permissions used to be checked + //TODO: This is where alchemy permissions used to be checked + //TODO: This is where alchemy permissions used to be checked + /*if (!UserManager.hasPlayerDataKey(event.getWhoClicked()) || !Permissions.isSubSkillEnabled(whoClicked, SubSkillType.ALCHEMY_CONCOCTIONS)) { return; - } + }*/ // if (!event.getInventorySlots().contains(Alchemy.INGREDIENT_SLOT)) { // return; diff --git a/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java b/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java index 96c8f712d..35b2fd5b8 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java @@ -380,12 +380,14 @@ public class RankUtils { try { SkillRankProperty skillRankProperty - = rankConfigRoot.getNode(subSkillType.getParentSkill()) + = (SkillRankProperty) rankConfigRoot.getNode(subSkillType.getParentSkill().getCapitalizedName()) .getNode(subSkillType.getHoconFriendlyConfigName()) .getValue(TypeToken.of(SkillRankProperty.class)); - return skillRankProperty.getUnlockLevel(mcMMO.isRetroModeEnabled(), rank); - } catch (ObjectMappingException | MissingSkillPropertyDefinition e) { + int unlockLevel = skillRankProperty.getUnlockLevel(mcMMO.isRetroModeEnabled(), rank); + return unlockLevel; + + } catch (ObjectMappingException | MissingSkillPropertyDefinition | NullPointerException e) { mcMMO.p.getLogger().severe("Error traversing nodes to SkillRankProperty for "+subSkillType.toString()); mcMMO.p.getLogger().severe("This indicates a problem with your rank config file, edit the file and correct the issue or delete it to generate a new default one with correct values."); e.printStackTrace();