From 21ab58b425f6cb8cdc4246c44243431c38259189 Mon Sep 17 00:00:00 2001 From: ItsMeKrisK Date: Tue, 11 Oct 2022 03:11:24 +0300 Subject: [PATCH 1/3] Placeholder for the total levels of player's jobs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **The placeholder:** :wink: • `%ecojobs_total_jobs_level%` --- .../kotlin/com/willfp/ecojobs/jobs/Job.kt | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt index 944db97..3c7bd20 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt @@ -18,6 +18,7 @@ import com.willfp.ecojobs.api.event.PlayerJobExpGainEvent import com.willfp.ecojobs.api.event.PlayerJobJoinEvent import com.willfp.ecojobs.api.event.PlayerJobLeaveEvent import com.willfp.ecojobs.api.event.PlayerJobLevelUpEvent +import com.willfp.ecojobs.jobs.Jobs.unlockedJobs import com.willfp.libreforge.conditions.Conditions import com.willfp.libreforge.conditions.ConfiguredCondition import com.willfp.libreforge.effects.ConfiguredEffect @@ -166,11 +167,18 @@ class Job( }.register() PlayerPlaceholder( - plugin, - "${id}_level" + plugin, + "${id}_level" ) { it.getJobLevel(this).toString() }.register() + + PlayerPlaceholder( + plugin, + "total_jobs_level" + ) { + it.getTotalJobsLevel().toString() + }.register() } fun getLevel(level: Int): JobLevel = levels.get(level) { @@ -409,6 +417,15 @@ val OfflinePlayer.activeJobLevel: JobLevel? fun OfflinePlayer.getJobLevel(job: Job): Int = this.profile.read(job.levelKey) +fun OfflinePlayer.getTotalJobsLevel(): Int { + //Get each job level and add them together + var total = 0; + for (job in Jobs.values()){ + total += this.profile.read(job.levelKey); + } + return total; +} + fun OfflinePlayer.setJobLevel(job: Job, level: Int) = this.profile.write(job.levelKey, level) From ad16872efd2f40e04ad0545e691c7b65e922c61e Mon Sep 17 00:00:00 2001 From: ItsMeKrisK Date: Tue, 11 Oct 2022 19:25:54 +0300 Subject: [PATCH 2/3] Job Changes n Additions Added Enchanter/ Lumberjack/ Smelter job and fixed some things in beekeeper --- .../src/main/resources/jobs/beekeeper.yml | 4 +- .../src/main/resources/jobs/enchanter.yml | 94 ++++++++++++++ .../src/main/resources/jobs/lumberjack.yml | 117 ++++++++++++++++++ .../src/main/resources/jobs/smelter.yml | 94 ++++++++++++++ 4 files changed, 307 insertions(+), 2 deletions(-) create mode 100644 eco-core/core-plugin/src/main/resources/jobs/enchanter.yml create mode 100644 eco-core/core-plugin/src/main/resources/jobs/lumberjack.yml create mode 100644 eco-core/core-plugin/src/main/resources/jobs/smelter.yml diff --git a/eco-core/core-plugin/src/main/resources/jobs/beekeeper.yml b/eco-core/core-plugin/src/main/resources/jobs/beekeeper.yml index 7233631..ff84ade 100644 --- a/eco-core/core-plugin/src/main/resources/jobs/beekeeper.yml +++ b/eco-core/core-plugin/src/main/resources/jobs/beekeeper.yml @@ -92,7 +92,7 @@ effects: triggers: - breed filters: - entites: + entities: - bee - id: take_money @@ -101,7 +101,7 @@ effects: triggers: - consume filters: - imems: + items: - honey_bottle diff --git a/eco-core/core-plugin/src/main/resources/jobs/enchanter.yml b/eco-core/core-plugin/src/main/resources/jobs/enchanter.yml new file mode 100644 index 0000000..5b80fb8 --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/jobs/enchanter.yml @@ -0,0 +1,94 @@ +name: "A54FBEnchanter" +description: "&7&oLevel up by enchanting items" + +unlocked-by-default: true + +reset-on-quit: false + +join-price: 0 +leave-price: 0 + +level-xp-requirements: + - 100 + - 120 + - 150 + - 180 + - 210 + - 250 + - 300 + - 360 + - 430 + - 520 + - 620 + - 740 + - 890 + - 1000 + - 1300 + - 1500 + - 1900 + - 2200 + - 2700 + - 3200 + - 3800 + - 4600 + - 5500 + - 6600 + - 7900 + - 9500 + - 11500 + - 14000 + - 17000 + - 19000 + - 24000 + - 29000 + - 34000 + - 41000 + - 50000 + - 60000 + - 70000 + - 85000 + - 100000 + - 120000 + - 150000 + - 180000 + - 210000 + - 250000 + - 300000 + - 360000 + - 440000 + - 580000 + - 750000 + +xp-gain-methods: + - trigger: enchant_item + multiplier: 0.5 + conditions: [ ] + +level-placeholders: + - id: "money" + value: "%level% * 0.25" + +effects-description: + 1: + - "&8» &8Earn &a$%money%&8 for each enchanted item" + +rewards-description: + 1: + - "&8» &8Earn &a$%money%&8 for each enchanted item" + +level-up-messages: + 1: + - "&8» &8Earn &a$%money%&8 for each enchanted item" + +level-commands: [ ] + +effects: + - id: give_money + args: + amount: "%level% * 0.25" + triggers: + - enchant_item + +conditions: [ ] + +icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDJjOGU3NmZjZGRlOWExNWFlMzkyOWI4NGJmNmZmYTRjMTc3N2IxZTI2YjdkNmQ4OTM4ZjBlZjA0ZTg0ODc0YyJ9fX0= diff --git a/eco-core/core-plugin/src/main/resources/jobs/lumberjack.yml b/eco-core/core-plugin/src/main/resources/jobs/lumberjack.yml new file mode 100644 index 0000000..9f444ce --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/jobs/lumberjack.yml @@ -0,0 +1,117 @@ +name: "&#FB8810Lumberjack" +description: "&7&oLevel up by chopping wood" + +unlocked-by-default: true + +reset-on-quit: false + +join-price: 0 +leave-price: 0 + +level-xp-requirements: + - 100 + - 120 + - 150 + - 180 + - 210 + - 250 + - 300 + - 360 + - 430 + - 520 + - 620 + - 740 + - 890 + - 1000 + - 1300 + - 1500 + - 1900 + - 2200 + - 2700 + - 3200 + - 3800 + - 4600 + - 5500 + - 6600 + - 7900 + - 9500 + - 11500 + - 14000 + - 17000 + - 19000 + - 24000 + - 29000 + - 34000 + - 41000 + - 50000 + - 60000 + - 70000 + - 85000 + - 100000 + - 120000 + - 150000 + - 180000 + - 210000 + - 250000 + - 300000 + - 360000 + - 440000 + - 580000 + - 750000 + +xp-gain-methods: + - trigger: mine_block + multiplier: 0.5 + conditions: [ ] + filters: + items: + - "*oak_log" + - "*spruce_log" + - "*birch_log" + - "*jungle_log" + - "*acacia_log" + - "*dark_oak_log" + - "*mangrove_log" + - "*crimson_stem" + - "*warped_stem" + +level-placeholders: + - id: "money" + value: "%level% * 0.4" + +effects-description: + 1: + - "&8» &8Earn &a$%money%&8 for each log chopped." + +rewards-description: + 1: + - "&8» &8Earn &a$%money%&8 for each log chopped." + +level-up-messages: + 1: + - "&8» &8Earn &a$%money%&8 for each log chopped." + +level-commands: [ ] + +effects: + - id: give_money + args: + every: "ceil(10 - %level% / 10)" + amount: "0.4 * %level%" + filters: + items: + - "*oak_log" + - "*spruce_log" + - "*birch_log" + - "*jungle_log" + - "*acacia_log" + - "*dark_oak_log" + - "*mangrove_log" + - "*crimson_stem" + - "*warped_stem" + triggers: + - mine_block + +conditions: [ ] + +icon: player_head texture:basehead-eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2E2MjA3MDJmODBiZDJjMjI0MmUyZjEzMWMzZjlhMjU5NDAyYjdmYTg5NzRjODZjZjM0NTBmZjczZTc3MDU5NSJ9fX0= diff --git a/eco-core/core-plugin/src/main/resources/jobs/smelter.yml b/eco-core/core-plugin/src/main/resources/jobs/smelter.yml new file mode 100644 index 0000000..7339ed5 --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/jobs/smelter.yml @@ -0,0 +1,94 @@ +name: "B4736Smelter" +description: "&7&oLevel up by smelting items" + +unlocked-by-default: true + +reset-on-quit: false + +join-price: 0 +leave-price: 0 + +level-xp-requirements: + - 100 + - 120 + - 150 + - 180 + - 210 + - 250 + - 300 + - 360 + - 430 + - 520 + - 620 + - 740 + - 890 + - 1000 + - 1300 + - 1500 + - 1900 + - 2200 + - 2700 + - 3200 + - 3800 + - 4600 + - 5500 + - 6600 + - 7900 + - 9500 + - 11500 + - 14000 + - 17000 + - 19000 + - 24000 + - 29000 + - 34000 + - 41000 + - 50000 + - 60000 + - 70000 + - 85000 + - 100000 + - 120000 + - 150000 + - 180000 + - 210000 + - 250000 + - 300000 + - 360000 + - 440000 + - 580000 + - 750000 + +xp-gain-methods: + - trigger: smelt + multiplier: 0.5 + conditions: [ ] + +level-placeholders: + - id: "money" + value: "%level% * 0.25" + +effects-description: + 1: + - "&8» &8Earn &a$%money%&8 for each smelted item" + +rewards-description: + 1: + - "&8» &8Earn &a$%money%&8 for each smelted item" + +level-up-messages: + 1: + - "&8» &8Earn &a$%money%&8 for each smelted item" + +level-commands: [ ] + +effects: + - id: give_money + args: + amount: "%level% * 0.25" + triggers: + - smelt + +conditions: [ ] + +icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODdjMDc0ODM2MmU5YTYzZTA3YWEyYjA4YjVmN2QxMDFlNTM5NWFhMjE1MzJhNDc2NzIyZGJkZDk4YzJmMiJ9fX0= From 2447dc027944c65b9bc2896af1ac1c0291824230 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 24 Oct 2022 17:01:43 +0100 Subject: [PATCH 3/3] Lots of cleanup --- build.gradle | 2 +- config/checkstyle/checkstyle.xml | 184 ------------------ config/checkstyle/suppression.xml | 12 -- .../com/willfp/ecojobs/EcoJobsPlugin.kt | 15 +- .../ecojobs/api/event/PlayerJobJoinEvent.kt | 2 - .../willfp/ecojobs/commands/CommandGiveXP.kt | 1 - .../willfp/ecojobs/commands/CommandReset.kt | 2 - .../kotlin/com/willfp/ecojobs/jobs/Job.kt | 16 -- .../com/willfp/ecojobs/jobs/JobLevelGUI.kt | 10 +- .../kotlin/com/willfp/ecojobs/jobs/JobsGUI.kt | 13 +- .../core-plugin/src/main/resources/config.yml | 7 + .../core-plugin/src/main/resources/lang.yml | 9 + 12 files changed, 42 insertions(+), 231 deletions(-) delete mode 100644 config/checkstyle/checkstyle.xml delete mode 100644 config/checkstyle/suppression.xml diff --git a/build.gradle b/build.gradle index baf45e4..52e7ebc 100644 --- a/build.gradle +++ b/build.gradle @@ -46,7 +46,7 @@ allprojects { } dependencies { - compileOnly 'com.willfp:eco:6.43.6' + compileOnly 'com.willfp:eco:6.44.0' implementation 'com.willfp:libreforge:3.111.1' implementation 'org.joml:joml:1.10.4' diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml deleted file mode 100644 index 1e777ee..0000000 --- a/config/checkstyle/checkstyle.xml +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/config/checkstyle/suppression.xml b/config/checkstyle/suppression.xml deleted file mode 100644 index 71c5aa7..0000000 --- a/config/checkstyle/suppression.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/EcoJobsPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/EcoJobsPlugin.kt index 0cd10a9..94b33eb 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/EcoJobsPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/EcoJobsPlugin.kt @@ -7,10 +7,12 @@ import com.willfp.ecojobs.commands.CommandEcojobs import com.willfp.ecojobs.commands.CommandJobs import com.willfp.ecojobs.jobs.JobLevelListener import com.willfp.ecojobs.jobs.JobTriggerXPGainListener +import com.willfp.ecojobs.jobs.Jobs import com.willfp.ecojobs.jobs.PriceHandler import com.willfp.ecojobs.jobs.ResetOnQuitListener import com.willfp.ecojobs.jobs.activeJob import com.willfp.ecojobs.jobs.activeJobLevel +import com.willfp.ecojobs.jobs.getJobLevel import com.willfp.libreforge.LibReforgePlugin import org.bukkit.event.Listener @@ -31,12 +33,23 @@ class EcoJobsPlugin : LibReforgePlugin() { PlayerPlaceholder( this, "job_level" - ) { it.activeJobLevel?.level.toString() ?: "" }.register() + ) { it.activeJobLevel?.level?.toString() ?: "" }.register() PlayerPlaceholder( this, "job_id" ) { it.activeJob?.id ?: "" }.register() + + PlayerPlaceholder( + this, + "total_job_level" + ) { + var level = 0 + for (job in Jobs.values()) { + level += it.getJobLevel(job) + } + level.toString() + }.register() } override fun loadPluginCommands(): List { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/api/event/PlayerJobJoinEvent.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/api/event/PlayerJobJoinEvent.kt index 4417c55..7cb15fc 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/api/event/PlayerJobJoinEvent.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/api/event/PlayerJobJoinEvent.kt @@ -2,11 +2,9 @@ package com.willfp.ecojobs.api.event import com.willfp.ecojobs.jobs.Job import org.bukkit.OfflinePlayer -import org.bukkit.entity.Player import org.bukkit.event.Cancellable import org.bukkit.event.Event import org.bukkit.event.HandlerList -import org.bukkit.event.player.PlayerEvent class PlayerJobJoinEvent( val player: OfflinePlayer, diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/commands/CommandGiveXP.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/commands/CommandGiveXP.kt index d2ef672..b19811f 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/commands/CommandGiveXP.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/commands/CommandGiveXP.kt @@ -7,7 +7,6 @@ import com.willfp.eco.util.savedDisplayName import com.willfp.eco.util.toNiceString import com.willfp.ecojobs.jobs.Jobs import com.willfp.ecojobs.jobs.giveExactJobExperience -import com.willfp.ecojobs.jobs.giveJobExperience import com.willfp.ecojobs.jobs.hasJob import org.bukkit.Bukkit import org.bukkit.command.CommandSender diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/commands/CommandReset.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/commands/CommandReset.kt index aac1df3..bb17bbe 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/commands/CommandReset.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/commands/CommandReset.kt @@ -8,8 +8,6 @@ import com.willfp.ecojobs.jobs.Jobs import com.willfp.ecojobs.jobs.activeJob import com.willfp.ecojobs.jobs.hasJob import com.willfp.ecojobs.jobs.resetJob -import com.willfp.ecojobs.jobs.setJobLevel -import com.willfp.ecojobs.jobs.setJobXP import org.bukkit.Bukkit import org.bukkit.command.CommandSender diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt index 3c7bd20..91cb8bb 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt @@ -172,13 +172,6 @@ class Job( ) { it.getJobLevel(this).toString() }.register() - - PlayerPlaceholder( - plugin, - "total_jobs_level" - ) { - it.getTotalJobsLevel().toString() - }.register() } fun getLevel(level: Int): JobLevel = levels.get(level) { @@ -417,15 +410,6 @@ val OfflinePlayer.activeJobLevel: JobLevel? fun OfflinePlayer.getJobLevel(job: Job): Int = this.profile.read(job.levelKey) -fun OfflinePlayer.getTotalJobsLevel(): Int { - //Get each job level and add them together - var total = 0; - for (job in Jobs.values()){ - total += this.profile.read(job.levelKey); - } - return total; -} - fun OfflinePlayer.setJobLevel(job: Job, level: Int) = this.profile.write(job.levelKey, level) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/JobLevelGUI.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/JobLevelGUI.kt index 9230e94..a8ef305 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/JobLevelGUI.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/JobLevelGUI.kt @@ -66,7 +66,7 @@ class JobLevelGUI( pages = ceil(job.maxLevel.toDouble() / levelsPerPage).toInt() menu = menu(plugin.configYml.getInt("level-gui.rows")) { - setTitle(job.name) + title = job.name setMask( FillerMask( maskItems, @@ -142,7 +142,7 @@ class JobLevelGUI( if (newPage == 0) { JobsGUI.open(player) } else { - menu.addState(player, pageKey, newPage) + menu.setState(player, pageKey, newPage) } } } @@ -162,7 +162,7 @@ class JobLevelGUI( val newPage = min(pages, page + 1) - menu.addState(player, pageKey, newPage) + menu.setState(player, pageKey, newPage) } } ) @@ -191,5 +191,7 @@ class JobLevelGUI( } } - fun open(player: Player) = menu.open(player) + fun open(player: Player) { + menu.open(player) + } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/JobsGUI.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/JobsGUI.kt index 1da2134..36f1f19 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/JobsGUI.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/JobsGUI.kt @@ -56,14 +56,11 @@ object JobsGUI { val jobInfoItemBuilder = { player: Player, _: Menu -> val job = player.activeJob - if (job == null) { - ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.job-info.no-active.item"))) + job?.getJobInfoIcon(player) + ?: ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.job-info.no-active.item"))) .setDisplayName(plugin.configYml.getFormattedString("gui.job-info.no-active.name")) .addLoreLines(plugin.configYml.getFormattedStrings("gui.job-info.no-active.lore")) .build() - } else { - job.getJobInfoIcon(player) - } } val jobIconBuilder = { player: Player, menu: Menu, index: Int -> @@ -78,7 +75,7 @@ object JobsGUI { } return menu(plugin.configYml.getInt("gui.rows")) { - setTitle(plugin.langYml.getString("menu.title")) + title = plugin.langYml.getString("menu.title") setMask( FillerMask( @@ -145,7 +142,7 @@ object JobsGUI { val newPage = max(1, page - 1) - menu.addState(player, pageKey, newPage) + menu.setState(player, pageKey, newPage) } } ) @@ -169,7 +166,7 @@ object JobsGUI { val newPage = min(pages, page + 1) - menu.addState(player, pageKey, newPage) + menu.setState(player, pageKey, newPage) } } ) diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml index b95b0d4..7f401db 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -255,6 +255,13 @@ cannot-afford-type: sound: "BLOCK_NOTE_BLOCK_PLING" pitch: 0.5 +cannot-afford-price: + in-actionbar: true + sound: + enabled: true + sound: "BLOCK_NOTE_BLOCK_PLING" + pitch: 0.5 + point-names: # If you have point names that look ugly (eg g_souls) then you can map them to nice names to be shown to players. example_point: "Nicely Formatted Point" diff --git a/eco-core/core-plugin/src/main/resources/lang.yml b/eco-core/core-plugin/src/main/resources/lang.yml index 2c1a1b4..531345d 100644 --- a/eco-core/core-plugin/src/main/resources/lang.yml +++ b/eco-core/core-plugin/src/main/resources/lang.yml @@ -6,8 +6,17 @@ messages: reloaded: "Reloaded!" cannot-afford: "&cYou can't afford to do this! &fCost: &a$$%cost%" cannot-afford-type: "&cYou can't afford to do this! &fCost: &a%cost% %type%" + cannot-afford-price: "&cYou can't afford to do this! &fPrice: %price%" on-cooldown: "&cThis effect is on cooldown! &fTime left: &a%seconds% seconds" cannot-transmit: "&cYou can't transmit here!" + must-specify-lrcdb-id: "&cYou must specify the ID of the config to download! Not sure what this means? Go to &alrcdb.auxilor.io" + lrcdb-import-error: "&cError importing config: &f%message%" + lrcdb-import-success: "&fImported &a%name%&f! Reload the plugin to install it" + must-specify-config-name: "&cYou must specify the config name!" + invalid-config-name: "&cInvalid config name!" + lrcdb-export-error: "&cError exporting config: &f%message%" + lrcdb-export-success: "&fExported &a%name%&f! View it on &alrcdb.auxilor.io&f, or share your config ID: &f%id%" + needs-player: "&cYou must specify a player!" gave-xp: "&fYou have given &a%xp% &fXP to %player%&f's %job%&f!" reset-xp: "&fYou have reset %player%&f's %job%&f XP!"