diff --git a/src/main/java/com/gmail/nossr50/config/tiers/BlastMiningRank.java b/src/main/java/com/gmail/nossr50/config/tiers/BlastMiningRank.java new file mode 100644 index 000000000..a2f2f8ef3 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/tiers/BlastMiningRank.java @@ -0,0 +1,45 @@ +package com.gmail.nossr50.config.tiers; + +import org.bukkit.configuration.ConfigurationSection; + +public class BlastMiningRank extends Rank { + + private double blastDamageDecrease; + private double oreBonus; + private double debrisReduction; + private int dropMultiplier; + private double blastRadiusModifier; + + public BlastMiningRank(int level, double blastDamageDecrease, double oreBonus, double debrisReduction, int dropMultiplier, double blastRadiusModifier) { + super(level); + this.blastDamageDecrease = blastDamageDecrease; + this.oreBonus = oreBonus; + this.debrisReduction = debrisReduction; + this.dropMultiplier = dropMultiplier; + this.blastRadiusModifier = blastRadiusModifier; + } + + public BlastMiningRank(ConfigurationSection section) { + this(section.getInt("Level"), section.getDouble("BlastDamageDecrease"), section.getDouble("OreBonus"), section.getDouble("DebrisReduction"), section.getInt("DropMultiplier"), section.getDouble("BlastRadiusModifier")); + } + + public double getBlastDamageDecrease() { + return blastDamageDecrease; + } + + public double getOreBonus() { + return oreBonus; + } + + public double getDebrisReduction() { + return debrisReduction; + } + + public int getDropMultiplier() { + return dropMultiplier; + } + + public double getBlastRadiusModifier() { + return blastRadiusModifier; + } +} diff --git a/src/main/java/com/gmail/nossr50/config/tiers/FishingRank.java b/src/main/java/com/gmail/nossr50/config/tiers/FishingRank.java new file mode 100644 index 000000000..8f489533d --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/tiers/FishingRank.java @@ -0,0 +1,27 @@ +package com.gmail.nossr50.config.tiers; + +import org.bukkit.configuration.ConfigurationSection; + +public class FishingRank extends Rank { + + private double shakeChance; + private int xpBoost; + + private FishingRank(int level, double shakeChance, int xpBoost) { + super(level); + this.shakeChance = shakeChance; + this.xpBoost = xpBoost; + } + + public FishingRank(ConfigurationSection section) { + this(section.getInt("Level"), section.getDouble("ShakeChance"), section.getInt("VanillaXPBoost")); + } + + public double getShakeChance() { + return shakeChance; + } + + public int getXpBoost() { + return xpBoost; + } +} diff --git a/src/main/java/com/gmail/nossr50/config/tiers/Rank.java b/src/main/java/com/gmail/nossr50/config/tiers/Rank.java new file mode 100644 index 000000000..bf001dd1c --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/tiers/Rank.java @@ -0,0 +1,13 @@ +package com.gmail.nossr50.config.tiers; + +public abstract class Rank { + private int level; + + public Rank(int level) { + this.level = level; + } + + public int getLevel() { + return level; + } +} diff --git a/src/main/java/com/gmail/nossr50/config/tiers/RankLoader.java b/src/main/java/com/gmail/nossr50/config/tiers/RankLoader.java new file mode 100644 index 000000000..36b402688 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/tiers/RankLoader.java @@ -0,0 +1,117 @@ +package com.gmail.nossr50.config.tiers; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; + +import org.bukkit.configuration.ConfigurationSection; + +import com.gmail.nossr50.config.ConfigLoader; + +public class RankLoader extends ConfigLoader { + + private List fishingRanks; + private List smeltingRanks; + private List blastMiningRanks; + private List repairRanks; + private static RankLoader instance; + + private RankLoader() { + super("ranks.yml"); + fishingRanks = new ArrayList(); + smeltingRanks = new ArrayList(); + blastMiningRanks = new ArrayList(); + repairRanks = new ArrayList(); + loadKeys(); + } + + public static RankLoader getInstance() { + if (instance == null) { + instance = new RankLoader(); + } + + return instance; + } + + @Override + protected void loadKeys() { + ConfigurationSection section = config.getConfigurationSection("Ranks.Fishing"); + RankComparator rankComparator = new RankComparator(); + for (String rank : section.getKeys(false)) { + fishingRanks.add(new FishingRank(section.getConfigurationSection(rank))); + } + Collections.sort(fishingRanks, rankComparator); + + section = config.getConfigurationSection("Ranks.BlastMining"); + for (String rank : section.getKeys(false)) { + blastMiningRanks.add(new BlastMiningRank(section.getConfigurationSection(rank))); + } + Collections.sort(blastMiningRanks, rankComparator); + + section = config.getConfigurationSection("Ranks.Repair"); + for (String rank : section.getKeys(false)) { + repairRanks.add(new RepairRank(section.getConfigurationSection(rank))); + } + Collections.sort(repairRanks, rankComparator); + + section = config.getConfigurationSection("Ranks.Smelting"); + for (String rank : section.getKeys(false)) { + smeltingRanks.add(new SmeltingRank(section.getConfigurationSection(rank))); + } + Collections.sort(smeltingRanks, rankComparator); + } + + public FishingRank getFishingRank(int level) { + Iterator it = fishingRanks.iterator(); + while (it.hasNext()) { + FishingRank rank = it.next(); + if (rank.getLevel() > level) { + return rank; + } + } + return null; + } + + public RepairRank getRepairRank(int level) { + Iterator it = repairRanks.iterator(); + while (it.hasNext()) { + RepairRank rank = it.next(); + if (rank.getLevel() > level) { + return rank; + } + } + return null; + } + + public SmeltingRank getSmeltingRank(int level) { + Iterator it = smeltingRanks.iterator(); + while (it.hasNext()) { + SmeltingRank rank = it.next(); + if (rank.getLevel() > level) { + return rank; + } + } + return null; + } + + public BlastMiningRank getBlastMiningRank(int level) { + Iterator it = blastMiningRanks.iterator(); + while (it.hasNext()) { + BlastMiningRank rank = it.next(); + if (rank.getLevel() > level) { + return rank; + } + } + return null; + } + + private class RankComparator implements Comparator { + @Override + public int compare(Rank o1, Rank o2) { + return Integer.valueOf(o1.getLevel()).compareTo(Integer.valueOf(o2.getLevel())); + } + + } +} diff --git a/src/main/java/com/gmail/nossr50/config/tiers/RepairRank.java b/src/main/java/com/gmail/nossr50/config/tiers/RepairRank.java new file mode 100644 index 000000000..b17109fce --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/tiers/RepairRank.java @@ -0,0 +1,27 @@ +package com.gmail.nossr50.config.tiers; + +import org.bukkit.configuration.ConfigurationSection; + +public class RepairRank extends Rank { + + private double downgradeChance; + private double keepEnchantsChance; + + public RepairRank(int level, double downgradeChance, double keepEnchantsChance) { + super(level); + this.downgradeChance = downgradeChance; + this.keepEnchantsChance = keepEnchantsChance; + } + + public RepairRank(ConfigurationSection section) { + this(section.getInt("Level"), section.getDouble("DowngradeChance"), section.getDouble("KeepEnchantsChance")); + } + + public double getDowngradeChance() { + return downgradeChance; + } + + public double getKeepEnchantsChance() { + return keepEnchantsChance; + } +} diff --git a/src/main/java/com/gmail/nossr50/config/tiers/SmeltingRank.java b/src/main/java/com/gmail/nossr50/config/tiers/SmeltingRank.java new file mode 100644 index 000000000..7b8729e35 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/tiers/SmeltingRank.java @@ -0,0 +1,21 @@ +package com.gmail.nossr50.config.tiers; + +import org.bukkit.configuration.ConfigurationSection; + +public class SmeltingRank extends Rank { + + private int xpMultiplier; + + public SmeltingRank(int level, int xpMultiplier) { + super(level); + this.xpMultiplier = xpMultiplier; + } + + public SmeltingRank(ConfigurationSection section) { + this(section.getInt("Level"), section.getInt("VanillaXPMultiplier")); + } + + public int getXpMultiplier() { + return xpMultiplier; + } +} diff --git a/src/main/resources/ranks.yml b/src/main/resources/ranks.yml new file mode 100644 index 000000000..a30008f45 --- /dev/null +++ b/src/main/resources/ranks.yml @@ -0,0 +1,41 @@ +Ranks: + Fishing: + Rank1: + Level: 0 + ShakeChance: 1.0 + VanillaXPBoost: 1 + ect: + Level: 1 + ShakeChance: 1.0 + VanillaXPBoost: 1 + Smelting: + Rank1: + Level: 0 + VanillaXPBoost: 1 + ect: + Level: 1 + VanillaXPBoost: 1 + BlastMining: + Rank1: + Level: 0 + BlastDamageDecrease: 1.0 + OreBonus: 1.0 + DebrisReduction: 1.0 + DropMultiplier: 1 + BlastRadiusModifier: 1 + ect: + Level: 1 + BlastDamageDecrease: 1.0 + OreBonus: 1.0 + DebrisReduction: 1.0 + DropMultiplier: 1 + BlastRadiusModifier: 1 + Repair: + Rank1: + Level: 0 + DowngradeChance: 1.0 + KeepEnchantsChance: 1.0 + ect: + Level: 1 + DowngradeChance: 1.0 + KeepEnchantsChance: 1.0 \ No newline at end of file