From 197380dd849d6aad41a34e0f9a8f3e5045155edd Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 18 Mar 2022 12:29:42 +0000 Subject: [PATCH] Moved to use rewards.yml --- .../com/willfp/ecocrates/EcoCratesPlugin.kt | 2 + .../com/willfp/ecocrates/config/RewardsYml.kt | 14 +++++ .../com/willfp/ecocrates/crate/Crate.kt | 3 +- .../com/willfp/ecocrates/crate/Crates.kt | 4 +- .../com/willfp/ecocrates/reward/Rewards.kt | 46 +++++++++++++++ .../core-plugin/src/main/resources/crates.yml | 59 +------------------ .../src/main/resources/rewards.yml | 57 ++++++++++++++++++ 7 files changed, 125 insertions(+), 60 deletions(-) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/config/RewardsYml.kt create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/reward/Rewards.kt create mode 100644 eco-core/core-plugin/src/main/resources/rewards.yml diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/EcoCratesPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/EcoCratesPlugin.kt index 5c43164..04d1d99 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/EcoCratesPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/EcoCratesPlugin.kt @@ -5,6 +5,7 @@ import com.willfp.eco.core.command.impl.PluginCommand import com.willfp.eco.core.display.DisplayModule import com.willfp.ecocrates.commands.CommandEcoCrates import com.willfp.ecocrates.config.CratesYml +import com.willfp.ecocrates.config.RewardsYml import com.willfp.ecocrates.crate.CrateKeyListener import com.willfp.ecocrates.crate.placed.CrateDisplay import com.willfp.ecocrates.crate.placed.PlacedCrates @@ -14,6 +15,7 @@ import org.bukkit.event.Listener class EcoCratesPlugin : EcoPlugin() { val cratesYml = CratesYml(this) + val rewardsYml = RewardsYml(this) init { instance = this diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/config/RewardsYml.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/config/RewardsYml.kt new file mode 100644 index 0000000..0ee6e43 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/config/RewardsYml.kt @@ -0,0 +1,14 @@ +package com.willfp.ecocrates.config + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.config.BaseConfig +import com.willfp.eco.core.config.ConfigType + +class RewardsYml( + plugin: EcoPlugin +) : BaseConfig( + "rewards", + plugin, + true, + ConfigType.YAML +) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/Crate.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/Crate.kt index b0de4c8..8b7c83e 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/Crate.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/Crate.kt @@ -28,6 +28,7 @@ import com.willfp.ecocrates.crate.roll.Rolls import com.willfp.ecocrates.event.CrateOpenEvent import com.willfp.ecocrates.event.CrateRewardEvent import com.willfp.ecocrates.reward.Reward +import com.willfp.ecocrates.reward.Rewards import com.willfp.ecocrates.util.ConfiguredFirework import com.willfp.ecocrates.util.ConfiguredSound import com.willfp.ecocrates.util.PlayableSound @@ -77,7 +78,7 @@ class Crate( val keyLore = config.getFormattedStrings("key.lore") - val rewards = config.getSubsections("rewards").map { Reward(plugin, it) } + val rewards = config.getStrings("rewards").mapNotNull { Rewards.getByID(it) } val permission: Permission = Bukkit.getPluginManager().getPermission("ecocrates.open.$id") ?: Permission( diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/Crates.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/Crates.kt index 66908d1..1e2d865 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/Crates.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/Crates.kt @@ -2,7 +2,6 @@ package com.willfp.ecocrates.crate import com.google.common.collect.HashBiMap import com.google.common.collect.ImmutableList -import com.willfp.eco.core.config.updating.ConfigUpdater import com.willfp.ecocrates.EcoCratesPlugin import com.willfp.ecocrates.crate.placed.PlacedCrates @@ -32,8 +31,7 @@ object Crates { } @JvmStatic - @ConfigUpdater - fun update(plugin: EcoCratesPlugin) { + internal fun update(plugin: EcoCratesPlugin) { BY_ID.clear() for (config in plugin.cratesYml.getSubsections("crates")) { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/reward/Rewards.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/reward/Rewards.kt new file mode 100644 index 0000000..620fe3b --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/reward/Rewards.kt @@ -0,0 +1,46 @@ +package com.willfp.ecocrates.reward + +import com.google.common.collect.HashBiMap +import com.google.common.collect.ImmutableList +import com.willfp.eco.core.config.updating.ConfigUpdater +import com.willfp.ecocrates.EcoCratesPlugin +import com.willfp.ecocrates.crate.Crates + +@Suppress("UNUSED") +object Rewards { + private val BY_ID = HashBiMap.create() + + /** + * Get reward matching id. + * + * @param id The id to query. + * @return The matching reward, or null if not found. + */ + @JvmStatic + fun getByID(id: String): Reward? { + return BY_ID[id] + } + + /** + * List of all registered rewards. + * + * @return The rewards. + */ + @JvmStatic + fun values(): List { + return ImmutableList.copyOf(BY_ID.values) + } + + @JvmStatic + @ConfigUpdater + fun update(plugin: EcoCratesPlugin) { + BY_ID.clear() + + for (config in plugin.rewardsYml.getSubsections("rewards")) { + val reward = Reward(plugin, config) + BY_ID[reward.id] = reward + } + + Crates.update(plugin) + } +} diff --git a/eco-core/core-plugin/src/main/resources/crates.yml b/eco-core/core-plugin/src/main/resources/crates.yml index 9cd00bf..bfafab9 100644 --- a/eco-core/core-plugin/src/main/resources/crates.yml +++ b/eco-core/core-plugin/src/main/resources/crates.yml @@ -94,59 +94,6 @@ crates: pitch: 1 rewards: - - id: diamond - commands: [ ] - items: - - diamond - messages: - - 'amogus?' - weight: - actual: 1 - display: 25 - max-wins: -1 - display: - name: "&bDiamond" - item: diamond - lore: - - "&fDisplay Chance: &a%chance%%" - - "&fActual Chance: &a%actual_chance%%" - row: 3 - column: 2 - - - id: emerald - commands: [ ] - items: - - emerald - messages: - - 'amogus?!!' - weight: - actual: 1 - display: 50 - max-wins: -1 - display: - name: "&aEmerald" - item: emerald - lore: - - "&fDisplay Chance: &a%chance%%" - - "&fActual Chance: &a%actual_chance%%" - row: 4 - column: 2 - - - id: bedrock - commands: [ ] - items: - - bedrock - messages: - - 'amogus?!!' - weight: - actual: 98 - display: 0 - max-wins: -1 - display: - name: "very cool demo bedrock" - item: bedrock - lore: - - "&fDisplay Chance: &a%chance%%" - - "&fActual Chance: &a%actual_chance%%" - row: 5 - column: 2 + - diamond + - emerald + - bedrock \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/rewards.yml b/eco-core/core-plugin/src/main/resources/rewards.yml new file mode 100644 index 0000000..187c630 --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/rewards.yml @@ -0,0 +1,57 @@ +rewards: + - id: diamond + commands: [ ] + items: + - diamond + messages: + - 'amogus?' + weight: + actual: 1 + display: 25 + max-wins: -1 + display: + name: "&bDiamond" + item: diamond + lore: + - "&fDisplay Chance: &a%chance%%" + - "&fActual Chance: &a%actual_chance%%" + row: 3 + column: 2 + + - id: emerald + commands: [ ] + items: + - emerald + messages: + - 'amogus?!!' + weight: + actual: 1 + display: 50 + max-wins: -1 + display: + name: "&aEmerald" + item: emerald + lore: + - "&fDisplay Chance: &a%chance%%" + - "&fActual Chance: &a%actual_chance%%" + row: 4 + column: 2 + + - id: bedrock + commands: [ ] + items: + - bedrock + messages: + - 'amogus?!!' + weight: + actual: 98 + display: 0 + max-wins: -1 + display: + name: "very cool demo bedrock" + item: bedrock + lore: + - "&fDisplay Chance: &a%chance%%" + - "&fActual Chance: &a%actual_chance%%" + row: 5 + column: 2