mirror of
https://github.com/Auxilor/EcoJobs.git
synced 2025-12-21 16:09:18 +00:00
Updated GUI
This commit is contained in:
@@ -49,7 +49,7 @@ allprojects {
|
|||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'com.willfp:eco:6.46.0'
|
compileOnly 'com.willfp:eco:6.46.0'
|
||||||
implementation 'com.willfp:libreforge:3.129.1'
|
implementation 'com.willfp:libreforge:3.129.1'
|
||||||
implementation 'com.willfp:ecomponent:1.0.0'
|
implementation 'com.willfp:ecomponent:1.3.0'
|
||||||
implementation 'org.joml:joml:1.10.4'
|
implementation 'org.joml:joml:1.10.4'
|
||||||
|
|
||||||
compileOnly 'org.jetbrains:annotations:23.0.0'
|
compileOnly 'org.jetbrains:annotations:23.0.0'
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package com.willfp.ecojobs
|
|||||||
|
|
||||||
import com.willfp.eco.core.command.impl.PluginCommand
|
import com.willfp.eco.core.command.impl.PluginCommand
|
||||||
import com.willfp.eco.core.placeholder.PlayerPlaceholder
|
import com.willfp.eco.core.placeholder.PlayerPlaceholder
|
||||||
import com.willfp.eco.util.toSingletonList
|
import com.willfp.ecojobs.api.activeJobs
|
||||||
|
import com.willfp.ecojobs.api.getJobLevel
|
||||||
|
import com.willfp.ecojobs.api.jobLimit
|
||||||
import com.willfp.ecojobs.commands.CommandEcojobs
|
import com.willfp.ecojobs.commands.CommandEcojobs
|
||||||
import com.willfp.ecojobs.commands.CommandJobs
|
import com.willfp.ecojobs.commands.CommandJobs
|
||||||
import com.willfp.ecojobs.jobs.JobLevelListener
|
import com.willfp.ecojobs.jobs.JobLevelListener
|
||||||
@@ -10,16 +12,15 @@ import com.willfp.ecojobs.jobs.JobTriggerXPGainListener
|
|||||||
import com.willfp.ecojobs.jobs.Jobs
|
import com.willfp.ecojobs.jobs.Jobs
|
||||||
import com.willfp.ecojobs.jobs.PriceHandler
|
import com.willfp.ecojobs.jobs.PriceHandler
|
||||||
import com.willfp.ecojobs.jobs.ResetOnQuitListener
|
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 com.willfp.libreforge.LibReforgePlugin
|
||||||
import org.bukkit.event.Listener
|
import org.bukkit.event.Listener
|
||||||
|
|
||||||
class EcoJobsPlugin : LibReforgePlugin() {
|
class EcoJobsPlugin : LibReforgePlugin() {
|
||||||
init {
|
init {
|
||||||
instance = this
|
instance = this
|
||||||
registerHolderProvider { it.activeJobLevel?.toSingletonList() ?: emptyList() }
|
registerHolderProvider { player ->
|
||||||
|
player.activeJobs.map { it.getLevel(player.getJobLevel(it)) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handleEnableAdditional() {
|
override fun handleEnableAdditional() {
|
||||||
@@ -27,18 +28,13 @@ class EcoJobsPlugin : LibReforgePlugin() {
|
|||||||
|
|
||||||
PlayerPlaceholder(
|
PlayerPlaceholder(
|
||||||
this,
|
this,
|
||||||
"job"
|
"limit"
|
||||||
) { it.activeJob?.name ?: "" }.register()
|
) { it.jobLimit.toString() }.register()
|
||||||
|
|
||||||
PlayerPlaceholder(
|
PlayerPlaceholder(
|
||||||
this,
|
this,
|
||||||
"job_level"
|
"in_jobs"
|
||||||
) { it.activeJobLevel?.level?.toString() ?: "" }.register()
|
) { it.activeJobs.size.toString() }.register()
|
||||||
|
|
||||||
PlayerPlaceholder(
|
|
||||||
this,
|
|
||||||
"job_id"
|
|
||||||
) { it.activeJob?.id ?: "" }.register()
|
|
||||||
|
|
||||||
PlayerPlaceholder(
|
PlayerPlaceholder(
|
||||||
this,
|
this,
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class CommandJoin(plugin: EcoPlugin) : Subcommand(plugin, "join", "ecojobs.comma
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!player.canJoinJob(job)) {
|
if (!player.canJoinJob(job)) {
|
||||||
player.sendMessage(plugin.langYml.getMessage("leave-current-job"))
|
player.sendMessage(plugin.langYml.getMessage("cannot-join-job"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import com.willfp.ecojobs.api.getJobLevel
|
|||||||
import com.willfp.ecojobs.api.getJobProgress
|
import com.willfp.ecojobs.api.getJobProgress
|
||||||
import com.willfp.ecojobs.api.getJobXP
|
import com.willfp.ecojobs.api.getJobXP
|
||||||
import com.willfp.ecojobs.api.getJobXPRequired
|
import com.willfp.ecojobs.api.getJobXPRequired
|
||||||
|
import com.willfp.ecojobs.api.hasJobActive
|
||||||
import com.willfp.ecojobs.api.jobLimit
|
import com.willfp.ecojobs.api.jobLimit
|
||||||
import com.willfp.libreforge.conditions.Conditions
|
import com.willfp.libreforge.conditions.Conditions
|
||||||
import com.willfp.libreforge.conditions.ConfiguredCondition
|
import com.willfp.libreforge.conditions.ConfiguredCondition
|
||||||
@@ -305,7 +306,9 @@ class Job(
|
|||||||
).addLoreLines {
|
).addLoreLines {
|
||||||
injectPlaceholdersInto(
|
injectPlaceholdersInto(
|
||||||
plugin.configYml.getStrings("gui.job-icon.lore"), player
|
plugin.configYml.getStrings("gui.job-icon.lore"), player
|
||||||
) + if (player.canJoinJob(this)) {
|
) + if (player.hasJobActive(this)) {
|
||||||
|
plugin.configYml.getStrings("gui.job-icon.active-lore")
|
||||||
|
} else if (player.canJoinJob(this)) {
|
||||||
plugin.configYml.getStrings("gui.job-icon.join-lore")
|
plugin.configYml.getStrings("gui.job-icon.join-lore")
|
||||||
} else if (player.activeJobs.size == player.jobLimit) {
|
} else if (player.activeJobs.size == player.jobLimit) {
|
||||||
plugin.configYml.getStrings("gui.job-icon.too-many-jobs-lore")
|
plugin.configYml.getStrings("gui.job-icon.too-many-jobs-lore")
|
||||||
|
|||||||
@@ -4,19 +4,28 @@ import com.willfp.eco.core.config.updating.ConfigUpdater
|
|||||||
import com.willfp.eco.core.gui.menu
|
import com.willfp.eco.core.gui.menu
|
||||||
import com.willfp.eco.core.gui.menu.Menu
|
import com.willfp.eco.core.gui.menu.Menu
|
||||||
import com.willfp.eco.core.gui.onLeftClick
|
import com.willfp.eco.core.gui.onLeftClick
|
||||||
|
import com.willfp.eco.core.gui.onRightClick
|
||||||
|
import com.willfp.eco.core.gui.page.PageChanger
|
||||||
import com.willfp.eco.core.gui.slot
|
import com.willfp.eco.core.gui.slot
|
||||||
import com.willfp.eco.core.gui.slot.ConfigSlot
|
import com.willfp.eco.core.gui.slot.ConfigSlot
|
||||||
import com.willfp.eco.core.gui.slot.FillerMask
|
import com.willfp.eco.core.gui.slot.FillerMask
|
||||||
import com.willfp.eco.core.gui.slot.MaskItems
|
import com.willfp.eco.core.gui.slot.MaskItems
|
||||||
import com.willfp.eco.core.items.Items
|
import com.willfp.eco.core.items.Items
|
||||||
import com.willfp.eco.core.items.builder.ItemStackBuilder
|
import com.willfp.eco.core.items.builder.ItemStackBuilder
|
||||||
|
import com.willfp.eco.core.items.builder.SkullBuilder
|
||||||
|
import com.willfp.eco.util.formatEco
|
||||||
import com.willfp.ecojobs.EcoJobsPlugin
|
import com.willfp.ecojobs.EcoJobsPlugin
|
||||||
|
import com.willfp.ecojobs.api.activeJobs
|
||||||
|
import com.willfp.ecojobs.api.canJoinJob
|
||||||
import com.willfp.ecojobs.api.getJobLevel
|
import com.willfp.ecojobs.api.getJobLevel
|
||||||
|
import com.willfp.ecojobs.api.hasJobActive
|
||||||
|
import com.willfp.ecojobs.api.joinJob
|
||||||
import com.willfp.ecojobs.jobs.Jobs.unlockedJobs
|
import com.willfp.ecojobs.jobs.Jobs.unlockedJobs
|
||||||
import org.bukkit.Material
|
import org.bukkit.Material
|
||||||
import org.bukkit.Sound
|
import org.bukkit.Sound
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
|
import org.bukkit.inventory.meta.SkullMeta
|
||||||
import kotlin.math.ceil
|
import kotlin.math.ceil
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
@@ -24,17 +33,6 @@ import kotlin.math.min
|
|||||||
object JobsGUI {
|
object JobsGUI {
|
||||||
private lateinit var menu: Menu
|
private lateinit var menu: Menu
|
||||||
private val jobAreaSlots = mutableListOf<Pair<Int, Int>>()
|
private val jobAreaSlots = mutableListOf<Pair<Int, Int>>()
|
||||||
private const val pageKey = "page"
|
|
||||||
|
|
||||||
private fun getPage(menu: Menu, player: Player): Int {
|
|
||||||
val pages = ceil(Jobs.values()
|
|
||||||
.filter { player.getJobLevel(it) > 0 }
|
|
||||||
.size.toDouble() / jobAreaSlots.size).toInt()
|
|
||||||
|
|
||||||
val page = menu.getState(player, pageKey) ?: 1
|
|
||||||
|
|
||||||
return max(min(pages, page + 1), 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@ConfigUpdater
|
@ConfigUpdater
|
||||||
@@ -55,18 +53,8 @@ object JobsGUI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun buildMenu(plugin: EcoJobsPlugin): Menu {
|
private fun buildMenu(plugin: EcoJobsPlugin): Menu {
|
||||||
val jobInfoItemBuilder = { player: Player, _: Menu ->
|
|
||||||
val job = player.activeJob
|
|
||||||
|
|
||||||
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()
|
|
||||||
}
|
|
||||||
|
|
||||||
val jobIconBuilder = { player: Player, menu: Menu, index: Int ->
|
val jobIconBuilder = { player: Player, menu: Menu, index: Int ->
|
||||||
val page = getPage(menu, player)
|
val page = menu.getPage(player)
|
||||||
|
|
||||||
val unlockedJobs = player.unlockedJobs
|
val unlockedJobs = player.unlockedJobs
|
||||||
|
|
||||||
@@ -87,13 +75,46 @@ object JobsGUI {
|
|||||||
)
|
)
|
||||||
|
|
||||||
setSlot(
|
setSlot(
|
||||||
plugin.configYml.getInt("gui.job-info.row"),
|
plugin.configYml.getInt("gui.player-info.row"),
|
||||||
plugin.configYml.getInt("gui.job-info.column"),
|
plugin.configYml.getInt("gui.player-info.column"),
|
||||||
slot(jobInfoItemBuilder) {
|
slot { player, _ ->
|
||||||
onLeftClick { event, _, _ ->
|
val skullBuilder = SkullBuilder()
|
||||||
val player = event.whoClicked as Player
|
.setDisplayName(
|
||||||
player.activeJob?.levelGUI?.open(player)
|
plugin.configYml.getString("gui.player-info.name")
|
||||||
|
.replace("%player%", player.displayName)
|
||||||
|
.formatEco(player, true)
|
||||||
|
)
|
||||||
|
|
||||||
|
if (player.activeJobs.isEmpty()) {
|
||||||
|
skullBuilder.addLoreLines(
|
||||||
|
plugin.configYml.getStrings("gui.player-info.no-jobs")
|
||||||
|
.formatEco(player, true)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
skullBuilder.addLoreLines(
|
||||||
|
plugin.configYml.getStrings("gui.player-info.has-jobs")
|
||||||
|
.flatMap {
|
||||||
|
if (it == "%jobs%") {
|
||||||
|
player.activeJobs.flatMap { job ->
|
||||||
|
job.injectPlaceholdersInto(
|
||||||
|
plugin.configYml.getStrings("gui.player-info.job-line"),
|
||||||
|
player
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
listOf(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.formatEco(player, true)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
val skull = skullBuilder.build()
|
||||||
|
|
||||||
|
val meta = skull.itemMeta as SkullMeta
|
||||||
|
meta.owningPlayer = player
|
||||||
|
skull.itemMeta = meta
|
||||||
|
skull
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -101,10 +122,8 @@ object JobsGUI {
|
|||||||
val (row, column) = pair
|
val (row, column) = pair
|
||||||
|
|
||||||
setSlot(row, column, slot({ p, m -> jobIconBuilder(p, m, index) }) {
|
setSlot(row, column, slot({ p, m -> jobIconBuilder(p, m, index) }) {
|
||||||
onLeftClick { event, _, _ ->
|
onLeftClick { player, _, _, menu ->
|
||||||
val player = event.whoClicked as Player
|
val page = menu.getPage(player)
|
||||||
|
|
||||||
val page = getPage(menu, player)
|
|
||||||
|
|
||||||
val unlockedJobs = player.unlockedJobs
|
val unlockedJobs = player.unlockedJobs
|
||||||
|
|
||||||
@@ -112,10 +131,22 @@ object JobsGUI {
|
|||||||
|
|
||||||
val job = unlockedJobs.getOrNull(pagedIndex) ?: return@onLeftClick
|
val job = unlockedJobs.getOrNull(pagedIndex) ?: return@onLeftClick
|
||||||
|
|
||||||
if (player.activeJob == null) {
|
if (player.hasJobActive(job)) {
|
||||||
player.activeJob = job
|
job.levelGUI.open(player)
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(plugin.langYml.getMessage("leave-current-job"))
|
if (player.canJoinJob(job)) {
|
||||||
|
player.joinJob(job)
|
||||||
|
|
||||||
|
if (player.hasJobActive(job)) {
|
||||||
|
player.sendMessage(
|
||||||
|
plugin.langYml.getMessage("joined-job")
|
||||||
|
.replace("%job%", job.name)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
player.sendMessage(plugin.langYml.getMessage("cannot-join-job"))
|
||||||
|
return@onLeftClick
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player.playSound(
|
player.playSound(
|
||||||
@@ -125,51 +156,57 @@ object JobsGUI {
|
|||||||
plugin.configYml.getDouble("gui.job-icon.click.pitch").toFloat()
|
plugin.configYml.getDouble("gui.job-icon.click.pitch").toFloat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onRightClick { player, _, _, menu ->
|
||||||
|
val page = menu.getPage(player)
|
||||||
|
|
||||||
|
val unlockedJobs = player.unlockedJobs
|
||||||
|
|
||||||
|
val pagedIndex = ((page - 1) * jobAreaSlots.size) + index
|
||||||
|
|
||||||
|
val job = unlockedJobs.getOrNull(pagedIndex) ?: return@onRightClick
|
||||||
|
|
||||||
|
if (player.hasJobActive(job)) {
|
||||||
|
job.leaveGUI.open(player)
|
||||||
|
|
||||||
|
player.playSound(
|
||||||
|
player.location,
|
||||||
|
Sound.valueOf(plugin.configYml.getString("gui.job-icon.click.sound").uppercase()),
|
||||||
|
1f,
|
||||||
|
plugin.configYml.getDouble("gui.job-icon.click.pitch").toFloat()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
setSlot(
|
addComponent(
|
||||||
plugin.configYml.getInt("gui.prev-page.location.row"),
|
plugin.configYml.getInt("gui.prev-page.location.row"),
|
||||||
plugin.configYml.getInt("gui.prev-page.location.column"),
|
plugin.configYml.getInt("gui.prev-page.location.column"),
|
||||||
slot(
|
PageChanger(
|
||||||
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.prev-page.item")))
|
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.prev-page.item")))
|
||||||
.setDisplayName(plugin.configYml.getString("gui.prev-page.name"))
|
.setDisplayName(plugin.configYml.getString("gui.prev-page.name"))
|
||||||
.build()
|
.build(),
|
||||||
) {
|
PageChanger.Direction.BACKWARDS
|
||||||
onLeftClick { event, _, menu ->
|
)
|
||||||
val player = event.whoClicked as Player
|
|
||||||
val page = getPage(menu, player)
|
|
||||||
|
|
||||||
val newPage = max(1, page - 1)
|
|
||||||
|
|
||||||
menu.setState(player, pageKey, newPage)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
setSlot(
|
addComponent(
|
||||||
plugin.configYml.getInt("gui.next-page.location.row"),
|
plugin.configYml.getInt("gui.next-page.location.row"),
|
||||||
plugin.configYml.getInt("gui.next-page.location.column"),
|
plugin.configYml.getInt("gui.next-page.location.column"),
|
||||||
slot(
|
PageChanger(
|
||||||
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.next-page.item")))
|
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.next-page.item")))
|
||||||
.setDisplayName(plugin.configYml.getString("gui.next-page.name"))
|
.setDisplayName(plugin.configYml.getString("gui.next-page.name"))
|
||||||
.build()
|
.build(),
|
||||||
) {
|
PageChanger.Direction.FORWARDS
|
||||||
onLeftClick { event, _, menu ->
|
)
|
||||||
val player = event.whoClicked as Player
|
)
|
||||||
|
|
||||||
val pages = ceil(Jobs.values()
|
maxPages { player ->
|
||||||
|
ceil(Jobs.values()
|
||||||
.filter { player.getJobLevel(it) > 0 }
|
.filter { player.getJobLevel(it) > 0 }
|
||||||
.size.toDouble() / jobAreaSlots.size).toInt()
|
.size.toDouble() / jobAreaSlots.size).toInt()
|
||||||
|
|
||||||
val page = getPage(menu, player)
|
|
||||||
|
|
||||||
val newPage = min(pages, page + 1)
|
|
||||||
|
|
||||||
menu.setState(player, pageKey, newPage)
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
setSlot(plugin.configYml.getInt("gui.close.location.row"),
|
setSlot(plugin.configYml.getInt("gui.close.location.row"),
|
||||||
plugin.configYml.getInt("gui.close.location.column"),
|
plugin.configYml.getInt("gui.close.location.column"),
|
||||||
@@ -182,19 +219,6 @@ object JobsGUI {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
setSlot(plugin.configYml.getInt("gui.deactivate-job.location.row"),
|
|
||||||
plugin.configYml.getInt("gui.deactivate-job.location.column"),
|
|
||||||
slot(
|
|
||||||
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.deactivate-job.item")))
|
|
||||||
.setDisplayName(plugin.configYml.getString("gui.deactivate-job.name"))
|
|
||||||
.build()
|
|
||||||
) {
|
|
||||||
onLeftClick { player, _, _, _ ->
|
|
||||||
player.activeJob?.leaveGUI?.open(player)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
for (config in plugin.configYml.getSubsections("gui.custom-slots")) {
|
for (config in plugin.configYml.getSubsections("gui.custom-slots")) {
|
||||||
setSlot(
|
setSlot(
|
||||||
config.getInt("row"),
|
config.getInt("row"),
|
||||||
|
|||||||
@@ -24,49 +24,44 @@ gui:
|
|||||||
materials:
|
materials:
|
||||||
- black_stained_glass_pane
|
- black_stained_glass_pane
|
||||||
pattern:
|
pattern:
|
||||||
|
- "111101111"
|
||||||
- "111111111"
|
- "111111111"
|
||||||
- "101000001"
|
- "100000001"
|
||||||
- "111000001"
|
- "100000001"
|
||||||
- "101000001"
|
- "100000001"
|
||||||
- "111111111"
|
- "111101111"
|
||||||
- "111100011"
|
|
||||||
|
|
||||||
job-area:
|
job-area:
|
||||||
top-left:
|
top-left:
|
||||||
row: 2
|
row: 3
|
||||||
column: 4
|
column: 2
|
||||||
bottom-right:
|
bottom-right:
|
||||||
row: 4
|
row: 5
|
||||||
column: 8
|
column: 8
|
||||||
|
|
||||||
job-info:
|
player-info:
|
||||||
row: 2
|
row: 2
|
||||||
column: 2
|
column: 2
|
||||||
|
|
||||||
no-active:
|
name: "%player%&f's Jobs:"
|
||||||
name: "&cNo Active Job"
|
|
||||||
lore:
|
no-jobs:
|
||||||
- ""
|
- ""
|
||||||
- "&cYou do not currently have a job active"
|
- "&cYou do not currently have a job active"
|
||||||
- "&fPick one from the options below!"
|
- "&fPick one from the options below!"
|
||||||
- ""
|
- ""
|
||||||
item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmFkYzA0OGE3Y2U3OGY3ZGFkNzJhMDdkYTI3ZDg1YzA5MTY4ODFlNTUyMmVlZWQxZTNkYWYyMTdhMzhjMWEifX19
|
- "&fYou can have up to &a%ecojobs_limit% &fjobs at once"
|
||||||
|
|
||||||
# %join_price% and %leave_price% are also available as placeholders
|
|
||||||
|
|
||||||
active:
|
|
||||||
name: "%job% &fLvl. &a%level%"
|
|
||||||
lore:
|
|
||||||
- "%description%"
|
|
||||||
- "&f"
|
|
||||||
- "&fJob Rewards:"
|
|
||||||
- "%effects%"
|
|
||||||
- ""
|
- ""
|
||||||
- "&fProgress:"
|
|
||||||
- "&8» &e%percentage_progress%%"
|
has-jobs:
|
||||||
- "&8» &e%current_xp%&8/&7%required_xp% &fXP"
|
|
||||||
- ""
|
- ""
|
||||||
- "&eClick to view Level Progression!"
|
- "%jobs%"
|
||||||
|
- ""
|
||||||
|
- "&fJob slots in use: &a%ecojobs_in_jobs%&r/&a%ecojobs_limit%"
|
||||||
|
- ""
|
||||||
|
|
||||||
|
job-line:
|
||||||
|
- " %job% &fLvl. &a%level%"
|
||||||
|
|
||||||
job-icon:
|
job-icon:
|
||||||
name: "%job% &fLvl. &a%level%"
|
name: "%job% &fLvl. &a%level%"
|
||||||
@@ -80,9 +75,12 @@ gui:
|
|||||||
- "&8» &e%percentage_progress%%"
|
- "&8» &e%percentage_progress%%"
|
||||||
- "&8» &e%current_xp%&8/&7%required_xp% &fXP"
|
- "&8» &e%current_xp%&8/&7%required_xp% &fXP"
|
||||||
|
|
||||||
|
# %join_price% and %leave_price% are also available as placeholders
|
||||||
|
|
||||||
active-lore:
|
active-lore:
|
||||||
- ""
|
- ""
|
||||||
- "&cYou've already joined this job!"
|
- "&eClick to view Level Progression!"
|
||||||
|
- "&eRight-click to leave this job!"
|
||||||
|
|
||||||
too-many-jobs-lore:
|
too-many-jobs-lore:
|
||||||
- ""
|
- ""
|
||||||
@@ -101,28 +99,21 @@ gui:
|
|||||||
name: "&fPrevious Page"
|
name: "&fPrevious Page"
|
||||||
location:
|
location:
|
||||||
row: 6
|
row: 6
|
||||||
column: 5
|
column: 4
|
||||||
|
|
||||||
next-page:
|
next-page:
|
||||||
item: arrow
|
item: arrow
|
||||||
name: "&fNext Page"
|
name: "&fNext Page"
|
||||||
location:
|
location:
|
||||||
row: 6
|
row: 6
|
||||||
column: 7
|
column: 6
|
||||||
|
|
||||||
close:
|
close:
|
||||||
item: barrier
|
item: barrier
|
||||||
name: "&cClose"
|
name: "&cClose"
|
||||||
location:
|
location:
|
||||||
row: 6
|
row: 6
|
||||||
column: 6
|
column: 5
|
||||||
|
|
||||||
deactivate-job:
|
|
||||||
item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTRiZDlhNDViOTY4MWNlYTViMjhjNzBmNzVhNjk1NmIxZjU5NGZlYzg0MGI5NjA3Nzk4ZmIxZTcwNzc2NDQzMCJ9fX0=
|
|
||||||
name: "&cDeactivate Job"
|
|
||||||
location:
|
|
||||||
row: 4
|
|
||||||
column: 2
|
|
||||||
|
|
||||||
# Custom GUI slots; see here for a how-to: https://plugins.auxilor.io/all-plugins/custom-gui-slots
|
# Custom GUI slots; see here for a how-to: https://plugins.auxilor.io/all-plugins/custom-gui-slots
|
||||||
custom-slots: [ ]
|
custom-slots: [ ]
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ messages:
|
|||||||
joined-job: "&fYou have joined the %job%&f job!"
|
joined-job: "&fYou have joined the %job%&f job!"
|
||||||
left-job: "&fYou have left the %job%&f job!"
|
left-job: "&fYou have left the %job%&f job!"
|
||||||
job-already-joined: "&cYou already have this job!"
|
job-already-joined: "&cYou already have this job!"
|
||||||
leave-current-job: "&cYou must leave your current job before joining a new one!"
|
cannot-join-job: "&cYou are already in too many jobs, please leave one!"
|
||||||
cant-leave-job: "&cYou can't leave the %job%&f job!"
|
cant-leave-job: "&cYou can't leave the %job%&f job!"
|
||||||
dont-have-job: "&cYou don't have this job unlocked!"
|
dont-have-job: "&cYou don't have this job unlocked!"
|
||||||
not-in-job: "&cYou are not in this job!"
|
not-in-job: "&cYou are not in this job!"
|
||||||
|
|||||||
Reference in New Issue
Block a user