mirror of
https://github.com/Auxilor/EcoJobs.git
synced 2025-12-20 07:29:20 +00:00
Compare commits
38 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26d44fb2d9 | ||
|
|
5cba64d19f | ||
|
|
52f3230307 | ||
|
|
e0b2ae4f40 | ||
|
|
b9f7d6db42 | ||
|
|
f62476c1d4 | ||
|
|
ca25f78c60 | ||
|
|
765d7ee7e2 | ||
|
|
850e1ec888 | ||
|
|
fe29bb611f | ||
|
|
87c8c6755a | ||
|
|
964d668713 | ||
|
|
d8113c3819 | ||
|
|
2e655ffbb8 | ||
|
|
88a44777e1 | ||
|
|
bd7305fae1 | ||
|
|
25b78106ee | ||
|
|
1b75ba0098 | ||
|
|
b4b235f1b5 | ||
|
|
c7ec273747 | ||
|
|
9991f9b683 | ||
|
|
921f086f49 | ||
|
|
b0c882dc21 | ||
|
|
59a528689d | ||
|
|
16be3a8b69 | ||
|
|
8e1200f293 | ||
|
|
301b4d35f3 | ||
|
|
ff84afdc7d | ||
|
|
0239447b61 | ||
|
|
8b0b2f861f | ||
|
|
d2fd661ba3 | ||
|
|
238962bb4f | ||
|
|
6b7df691de | ||
|
|
28b7279a88 | ||
|
|
36f6765942 | ||
|
|
b96d6c3388 | ||
|
|
7c06eb5c18 | ||
|
|
e33d3264d8 |
@@ -46,8 +46,8 @@ allprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'com.willfp:eco:6.37.1'
|
compileOnly 'com.willfp:eco:6.43.6'
|
||||||
implementation 'com.willfp:libreforge:3.99.1'
|
implementation 'com.willfp:libreforge:3.113.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'
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ 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
|
||||||
import com.willfp.ecojobs.jobs.JobTriggerXPGainListener
|
import com.willfp.ecojobs.jobs.JobTriggerXPGainListener
|
||||||
|
import com.willfp.ecojobs.jobs.PriceHandler
|
||||||
|
import com.willfp.ecojobs.jobs.ResetOnQuitListener
|
||||||
import com.willfp.ecojobs.jobs.activeJob
|
import com.willfp.ecojobs.jobs.activeJob
|
||||||
import com.willfp.ecojobs.jobs.activeJobLevel
|
import com.willfp.ecojobs.jobs.activeJobLevel
|
||||||
import com.willfp.libreforge.LibReforgePlugin
|
import com.willfp.libreforge.LibReforgePlugin
|
||||||
@@ -26,6 +28,11 @@ class EcoJobsPlugin : LibReforgePlugin() {
|
|||||||
"job"
|
"job"
|
||||||
) { it.activeJob?.name ?: "" }.register()
|
) { it.activeJob?.name ?: "" }.register()
|
||||||
|
|
||||||
|
PlayerPlaceholder(
|
||||||
|
this,
|
||||||
|
"job_level"
|
||||||
|
) { it.activeJobLevel?.level.toString() ?: "" }.register()
|
||||||
|
|
||||||
PlayerPlaceholder(
|
PlayerPlaceholder(
|
||||||
this,
|
this,
|
||||||
"job_id"
|
"job_id"
|
||||||
@@ -42,7 +49,9 @@ class EcoJobsPlugin : LibReforgePlugin() {
|
|||||||
override fun loadListeners(): List<Listener> {
|
override fun loadListeners(): List<Listener> {
|
||||||
return listOf(
|
return listOf(
|
||||||
JobLevelListener(this),
|
JobLevelListener(this),
|
||||||
JobTriggerXPGainListener
|
JobTriggerXPGainListener,
|
||||||
|
ResetOnQuitListener,
|
||||||
|
PriceHandler
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
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,
|
||||||
|
val job: Job,
|
||||||
|
val oldJob: Job?
|
||||||
|
) : Event(), Cancellable {
|
||||||
|
private var cancelled = false
|
||||||
|
|
||||||
|
override fun isCancelled() = this.cancelled
|
||||||
|
|
||||||
|
override fun setCancelled(cancelled: Boolean) {
|
||||||
|
this.cancelled = cancelled
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getHandlers(): HandlerList {
|
||||||
|
return handlerList
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@JvmStatic
|
||||||
|
val handlerList = HandlerList()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.willfp.ecojobs.api.event
|
||||||
|
|
||||||
|
import com.willfp.ecojobs.jobs.Job
|
||||||
|
import org.bukkit.OfflinePlayer
|
||||||
|
import org.bukkit.event.Cancellable
|
||||||
|
import org.bukkit.event.Event
|
||||||
|
import org.bukkit.event.HandlerList
|
||||||
|
|
||||||
|
class PlayerJobLeaveEvent(
|
||||||
|
val player: OfflinePlayer,
|
||||||
|
val job: Job
|
||||||
|
) : Event(), Cancellable {
|
||||||
|
private var cancelled = false
|
||||||
|
|
||||||
|
override fun isCancelled() = this.cancelled
|
||||||
|
|
||||||
|
override fun setCancelled(cancelled: Boolean) {
|
||||||
|
this.cancelled = cancelled
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getHandlers(): HandlerList {
|
||||||
|
return handlerList
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@JvmStatic
|
||||||
|
val handlerList = HandlerList()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,14 +2,28 @@ package com.willfp.ecojobs.commands
|
|||||||
|
|
||||||
import com.willfp.eco.core.EcoPlugin
|
import com.willfp.eco.core.EcoPlugin
|
||||||
import com.willfp.eco.core.command.impl.PluginCommand
|
import com.willfp.eco.core.command.impl.PluginCommand
|
||||||
|
import com.willfp.ecojobs.jobs.Jobs
|
||||||
|
import com.willfp.libreforge.LibReforgePlugin
|
||||||
|
import com.willfp.libreforge.lrcdb.CommandExport
|
||||||
|
import com.willfp.libreforge.lrcdb.CommandImport
|
||||||
|
import com.willfp.libreforge.lrcdb.ExportableConfig
|
||||||
import org.bukkit.command.CommandSender
|
import org.bukkit.command.CommandSender
|
||||||
|
|
||||||
class CommandEcojobs(plugin: EcoPlugin) : PluginCommand(plugin, "ecojobs", "ecojobs.command.ecojobs", false) {
|
class CommandEcojobs(plugin: LibReforgePlugin) : PluginCommand(plugin, "ecojobs", "ecojobs.command.ecojobs", false) {
|
||||||
init {
|
init {
|
||||||
this.addSubcommand(CommandReload(plugin))
|
this.addSubcommand(CommandReload(plugin))
|
||||||
.addSubcommand(CommandUnlock(plugin))
|
.addSubcommand(CommandUnlock(plugin))
|
||||||
.addSubcommand(CommandGiveXP(plugin))
|
.addSubcommand(CommandGiveXP(plugin))
|
||||||
.addSubcommand(CommandReset(plugin))
|
.addSubcommand(CommandReset(plugin))
|
||||||
|
.addSubcommand(CommandImport("jobs", plugin))
|
||||||
|
.addSubcommand(CommandExport(plugin) {
|
||||||
|
Jobs.values().map {
|
||||||
|
ExportableConfig(
|
||||||
|
it.id,
|
||||||
|
it.config
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onExecute(sender: CommandSender, args: List<String>) {
|
override fun onExecute(sender: CommandSender, args: List<String>) {
|
||||||
@@ -17,4 +31,4 @@ class CommandEcojobs(plugin: EcoPlugin) : PluginCommand(plugin, "ecojobs", "ecoj
|
|||||||
plugin.langYml.getMessage("invalid-command")
|
plugin.langYml.getMessage("invalid-command")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,11 @@ import org.bukkit.command.CommandSender
|
|||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
class CommandJobs(plugin: EcoPlugin) : PluginCommand(plugin, "jobs", "ecojobs.command.jobs", true) {
|
class CommandJobs(plugin: EcoPlugin) : PluginCommand(plugin, "jobs", "ecojobs.command.jobs", true) {
|
||||||
|
init {
|
||||||
|
this.addSubcommand(CommandJoin(plugin))
|
||||||
|
.addSubcommand(CommandLeave(plugin))
|
||||||
|
}
|
||||||
|
|
||||||
override fun onExecute(player: CommandSender, args: List<String>) {
|
override fun onExecute(player: CommandSender, args: List<String>) {
|
||||||
player as Player
|
player as Player
|
||||||
JobsGUI.open(player)
|
JobsGUI.open(player)
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package com.willfp.ecojobs.commands
|
||||||
|
|
||||||
|
import com.willfp.eco.core.EcoPlugin
|
||||||
|
import com.willfp.eco.core.command.impl.Subcommand
|
||||||
|
import com.willfp.eco.util.StringUtils
|
||||||
|
import com.willfp.ecojobs.jobs.Jobs
|
||||||
|
import com.willfp.ecojobs.jobs.activeJob
|
||||||
|
import com.willfp.ecojobs.jobs.hasJob
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.bukkit.util.StringUtil
|
||||||
|
|
||||||
|
class CommandJoin(plugin: EcoPlugin) : Subcommand(plugin, "join", "ecojobs.command.join", true) {
|
||||||
|
override fun onExecute(player: CommandSender, args: List<String>) {
|
||||||
|
player as Player
|
||||||
|
|
||||||
|
if (args.isEmpty()) {
|
||||||
|
player.sendMessage(plugin.langYml.getMessage("needs-job"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val id = args[0]
|
||||||
|
|
||||||
|
val job = Jobs.getByID(id)
|
||||||
|
|
||||||
|
if (job == null || !player.hasJob(job)) {
|
||||||
|
player.sendMessage(plugin.langYml.getMessage("invalid-job"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player.activeJob == job) {
|
||||||
|
player.sendMessage(plugin.langYml.getMessage("job-already-joined"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
player.sendMessage(
|
||||||
|
plugin.langYml.getMessage("joined-job", StringUtils.FormatOption.WITHOUT_PLACEHOLDERS)
|
||||||
|
.replace("%job%", job.name)
|
||||||
|
)
|
||||||
|
player.activeJob = job
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun tabComplete(sender: CommandSender, args: List<String>): List<String> {
|
||||||
|
if (sender !is Player) {
|
||||||
|
return emptyList()
|
||||||
|
}
|
||||||
|
|
||||||
|
val completions = mutableListOf<String>()
|
||||||
|
if (args.isEmpty()) {
|
||||||
|
// Currently, this case is not ever reached
|
||||||
|
return Jobs.values().filter { sender.hasJob(it) }.map { it.id }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.size == 1) {
|
||||||
|
StringUtil.copyPartialMatches(
|
||||||
|
args[1],
|
||||||
|
Jobs.values().filter { sender.hasJob(it) }.map { it.id },
|
||||||
|
completions
|
||||||
|
)
|
||||||
|
return completions
|
||||||
|
}
|
||||||
|
|
||||||
|
return emptyList()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.willfp.ecojobs.commands
|
||||||
|
|
||||||
|
import com.willfp.eco.core.EcoPlugin
|
||||||
|
import com.willfp.eco.core.command.impl.Subcommand
|
||||||
|
import com.willfp.eco.util.StringUtils
|
||||||
|
import com.willfp.ecojobs.jobs.activeJob
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
|
class CommandLeave(plugin: EcoPlugin) : Subcommand(plugin, "leave", "ecojobs.command.leave", true) {
|
||||||
|
override fun onExecute(player: CommandSender, args: List<String>) {
|
||||||
|
player as Player
|
||||||
|
|
||||||
|
if (player.activeJob == null) {
|
||||||
|
player.sendMessage(plugin.langYml.getMessage("no-job"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
player.sendMessage(
|
||||||
|
plugin.langYml.getMessage("left-job", StringUtils.FormatOption.WITHOUT_PLACEHOLDERS)
|
||||||
|
.replace("%job%", player.activeJob?.name ?: "")
|
||||||
|
)
|
||||||
|
|
||||||
|
player.activeJob = null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ import com.willfp.eco.util.savedDisplayName
|
|||||||
import com.willfp.ecojobs.jobs.Jobs
|
import com.willfp.ecojobs.jobs.Jobs
|
||||||
import com.willfp.ecojobs.jobs.activeJob
|
import com.willfp.ecojobs.jobs.activeJob
|
||||||
import com.willfp.ecojobs.jobs.hasJob
|
import com.willfp.ecojobs.jobs.hasJob
|
||||||
|
import com.willfp.ecojobs.jobs.resetJob
|
||||||
import com.willfp.ecojobs.jobs.setJobLevel
|
import com.willfp.ecojobs.jobs.setJobLevel
|
||||||
import com.willfp.ecojobs.jobs.setJobXP
|
import com.willfp.ecojobs.jobs.setJobXP
|
||||||
import org.bukkit.Bukkit
|
import org.bukkit.Bukkit
|
||||||
@@ -48,8 +49,7 @@ class CommandReset(plugin: EcoPlugin) : Subcommand(plugin, "reset", "ecojobs.com
|
|||||||
if (player.activeJob == job) {
|
if (player.activeJob == job) {
|
||||||
player.activeJob = null
|
player.activeJob = null
|
||||||
}
|
}
|
||||||
player.setJobXP(job, 0.0)
|
player.resetJob(job)
|
||||||
player.setJobLevel(job, 1)
|
|
||||||
|
|
||||||
sender.sendMessage(
|
sender.sendMessage(
|
||||||
plugin.langYml.getMessage("reset-xp", StringUtils.FormatOption.WITHOUT_PLACEHOLDERS)
|
plugin.langYml.getMessage("reset-xp", StringUtils.FormatOption.WITHOUT_PLACEHOLDERS)
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ import com.willfp.eco.util.formatEco
|
|||||||
import com.willfp.eco.util.toNiceString
|
import com.willfp.eco.util.toNiceString
|
||||||
import com.willfp.ecojobs.EcoJobsPlugin
|
import com.willfp.ecojobs.EcoJobsPlugin
|
||||||
import com.willfp.ecojobs.api.event.PlayerJobExpGainEvent
|
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.api.event.PlayerJobLevelUpEvent
|
||||||
import com.willfp.libreforge.conditions.Conditions
|
import com.willfp.libreforge.conditions.Conditions
|
||||||
import com.willfp.libreforge.conditions.ConfiguredCondition
|
import com.willfp.libreforge.conditions.ConfiguredCondition
|
||||||
@@ -38,6 +40,9 @@ class Job(
|
|||||||
val name = config.getFormattedString("name")
|
val name = config.getFormattedString("name")
|
||||||
val description = config.getFormattedString("description")
|
val description = config.getFormattedString("description")
|
||||||
val isUnlockedByDefault = config.getBool("unlocked-by-default")
|
val isUnlockedByDefault = config.getBool("unlocked-by-default")
|
||||||
|
val resetsOnQuit = config.getBool("reset-on-quit")
|
||||||
|
val joinPrice = config.getDouble("join-price")
|
||||||
|
val leavePrice = config.getDouble("leave-price")
|
||||||
|
|
||||||
val levelKey: PersistentDataKey<Int> = PersistentDataKey(
|
val levelKey: PersistentDataKey<Int> = PersistentDataKey(
|
||||||
EcoJobsPlugin.instance.namespacedKeyFactory.create("${id}_level"),
|
EcoJobsPlugin.instance.namespacedKeyFactory.create("${id}_level"),
|
||||||
@@ -251,6 +256,8 @@ class Job(
|
|||||||
.replace("%description%", this.description)
|
.replace("%description%", this.description)
|
||||||
.replace("%job%", this.name)
|
.replace("%job%", this.name)
|
||||||
.replace("%level%", (forceLevel ?: player.getJobLevel(this)).toString())
|
.replace("%level%", (forceLevel ?: player.getJobLevel(this)).toString())
|
||||||
|
.replace("%join_price%", NumberUtils.format(this.joinPrice))
|
||||||
|
.replace("%leave_price%", NumberUtils.format(this.leavePrice))
|
||||||
}
|
}
|
||||||
.toMutableList()
|
.toMutableList()
|
||||||
|
|
||||||
@@ -365,7 +372,33 @@ private val activeJobKey: PersistentDataKey<String> = PersistentDataKey(
|
|||||||
|
|
||||||
var OfflinePlayer.activeJob: Job?
|
var OfflinePlayer.activeJob: Job?
|
||||||
get() = Jobs.getByID(this.profile.read(activeJobKey))
|
get() = Jobs.getByID(this.profile.read(activeJobKey))
|
||||||
set(value) = this.profile.write(activeJobKey, value?.id ?: "")
|
set(job) {
|
||||||
|
val oldJob = this.activeJob
|
||||||
|
|
||||||
|
if (oldJob != job) {
|
||||||
|
// Have to check for oldJob too to have null safety
|
||||||
|
if (job == null && oldJob != null) {
|
||||||
|
val event = PlayerJobLeaveEvent(this, oldJob)
|
||||||
|
Bukkit.getPluginManager().callEvent(event)
|
||||||
|
|
||||||
|
if (event.isCancelled) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not using else because null safety as well
|
||||||
|
if (job != null) {
|
||||||
|
val event = PlayerJobJoinEvent(this, job, oldJob)
|
||||||
|
Bukkit.getPluginManager().callEvent(event)
|
||||||
|
|
||||||
|
if (event.isCancelled) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.profile.write(activeJobKey, job?.id ?: "")
|
||||||
|
}
|
||||||
|
|
||||||
val OfflinePlayer.activeJobLevel: JobLevel?
|
val OfflinePlayer.activeJobLevel: JobLevel?
|
||||||
get() {
|
get() {
|
||||||
@@ -379,6 +412,11 @@ fun OfflinePlayer.getJobLevel(job: Job): Int =
|
|||||||
fun OfflinePlayer.setJobLevel(job: Job, level: Int) =
|
fun OfflinePlayer.setJobLevel(job: Job, level: Int) =
|
||||||
this.profile.write(job.levelKey, level)
|
this.profile.write(job.levelKey, level)
|
||||||
|
|
||||||
|
fun OfflinePlayer.resetJob(job: Job) {
|
||||||
|
this.setJobLevel(job, 1)
|
||||||
|
this.setJobXP(job, 0.0)
|
||||||
|
}
|
||||||
|
|
||||||
fun OfflinePlayer.getJobProgress(job: Job): Double {
|
fun OfflinePlayer.getJobProgress(job: Job): Double {
|
||||||
val currentXP = this.getJobXP(job)
|
val currentXP = this.getJobXP(job)
|
||||||
val requiredXP = job.getExpForLevel(this.getJobLevel(job) + 1)
|
val requiredXP = job.getExpForLevel(this.getJobLevel(job) + 1)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.willfp.eco.core.EcoPlugin
|
|||||||
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.slot
|
import com.willfp.eco.core.gui.slot
|
||||||
|
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
|
||||||
@@ -165,6 +166,7 @@ class JobLevelGUI(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
setSlot(
|
setSlot(
|
||||||
plugin.configYml.getInt("level-gui.progression-slots.close.location.row"),
|
plugin.configYml.getInt("level-gui.progression-slots.close.location.row"),
|
||||||
plugin.configYml.getInt("level-gui.progression-slots.close.location.column"),
|
plugin.configYml.getInt("level-gui.progression-slots.close.location.column"),
|
||||||
@@ -178,6 +180,14 @@ class JobLevelGUI(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
for (config in plugin.configYml.getSubsections("level-gui.custom-slots")) {
|
||||||
|
setSlot(
|
||||||
|
config.getInt("row"),
|
||||||
|
config.getInt("column"),
|
||||||
|
ConfigSlot(config)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ 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.slot
|
import com.willfp.eco.core.gui.slot
|
||||||
|
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
|
||||||
@@ -197,6 +198,14 @@ object JobsGUI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
for (config in plugin.configYml.getSubsections("gui.custom-slots")) {
|
||||||
|
setSlot(
|
||||||
|
config.getInt("row"),
|
||||||
|
config.getInt("column"),
|
||||||
|
ConfigSlot(config)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package com.willfp.ecojobs.jobs
|
||||||
|
|
||||||
|
import com.willfp.eco.core.integrations.economy.balance
|
||||||
|
import com.willfp.ecojobs.api.event.PlayerJobJoinEvent
|
||||||
|
import com.willfp.ecojobs.api.event.PlayerJobLeaveEvent
|
||||||
|
import org.bukkit.event.EventHandler
|
||||||
|
import org.bukkit.event.EventPriority
|
||||||
|
import org.bukkit.event.Listener
|
||||||
|
|
||||||
|
object PriceHandler : Listener {
|
||||||
|
@EventHandler(
|
||||||
|
priority = EventPriority.LOW,
|
||||||
|
ignoreCancelled = true
|
||||||
|
)
|
||||||
|
fun onJoin(event: PlayerJobJoinEvent) {
|
||||||
|
val player = event.player
|
||||||
|
val job = event.job
|
||||||
|
val price = job.joinPrice
|
||||||
|
|
||||||
|
if (price > 0) {
|
||||||
|
val hasMoney = player.balance >= price
|
||||||
|
|
||||||
|
if (!hasMoney) {
|
||||||
|
event.isCancelled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
player.balance -= price
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(
|
||||||
|
priority = EventPriority.LOW,
|
||||||
|
ignoreCancelled = true
|
||||||
|
)
|
||||||
|
fun onLeave(event: PlayerJobLeaveEvent) {
|
||||||
|
val player = event.player
|
||||||
|
val job = event.job
|
||||||
|
val price = job.leavePrice
|
||||||
|
|
||||||
|
if (price > 0) {
|
||||||
|
val hasMoney = player.balance >= price
|
||||||
|
|
||||||
|
if (!hasMoney) {
|
||||||
|
event.isCancelled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
player.balance -= price
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.willfp.ecojobs.jobs
|
||||||
|
|
||||||
|
import com.willfp.ecojobs.api.event.PlayerJobLeaveEvent
|
||||||
|
import org.bukkit.event.EventHandler
|
||||||
|
import org.bukkit.event.Listener
|
||||||
|
|
||||||
|
object ResetOnQuitListener : Listener {
|
||||||
|
@EventHandler(
|
||||||
|
ignoreCancelled = true
|
||||||
|
)
|
||||||
|
fun onQuit(event: PlayerJobLeaveEvent) {
|
||||||
|
val player = event.player
|
||||||
|
val job = event.job
|
||||||
|
|
||||||
|
if (job.resetsOnQuit) {
|
||||||
|
player.resetJob(job)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -48,12 +48,14 @@ gui:
|
|||||||
- ""
|
- ""
|
||||||
item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmFkYzA0OGE3Y2U3OGY3ZGFkNzJhMDdkYTI3ZDg1YzA5MTY4ODFlNTUyMmVlZWQxZTNkYWYyMTdhMzhjMWEifX19
|
item: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmFkYzA0OGE3Y2U3OGY3ZGFkNzJhMDdkYTI3ZDg1YzA5MTY4ODFlNTUyMmVlZWQxZTNkYWYyMTdhMzhjMWEifX19
|
||||||
|
|
||||||
|
# %join_price% and %leave_price% are also available as placeholders
|
||||||
|
|
||||||
active:
|
active:
|
||||||
name: "%job% &fLvl. &a%level%"
|
name: "%job% &fLvl. &a%level%"
|
||||||
lore:
|
lore:
|
||||||
- "%description%"
|
- "%description%"
|
||||||
- "&f"
|
- "&f"
|
||||||
- "&fEffects:"
|
- "&fJob Rewards:"
|
||||||
- "%effects%"
|
- "%effects%"
|
||||||
- ""
|
- ""
|
||||||
- "&fProgress:"
|
- "&fProgress:"
|
||||||
@@ -67,7 +69,7 @@ gui:
|
|||||||
lore:
|
lore:
|
||||||
- "%description%"
|
- "%description%"
|
||||||
- "&f"
|
- "&f"
|
||||||
- "&fEffects:"
|
- "&fJob Rewards:"
|
||||||
- "%effects%"
|
- "%effects%"
|
||||||
- ""
|
- ""
|
||||||
- "&fProgress:"
|
- "&fProgress:"
|
||||||
@@ -114,6 +116,9 @@ gui:
|
|||||||
row: 4
|
row: 4
|
||||||
column: 2
|
column: 2
|
||||||
|
|
||||||
|
# Custom GUI slots; see here for a how-to: https://plugins.auxilor.io/all-plugins/custom-gui-slots
|
||||||
|
custom-slots: []
|
||||||
|
|
||||||
level-gui:
|
level-gui:
|
||||||
rows: 6
|
rows: 6
|
||||||
|
|
||||||
@@ -208,6 +213,9 @@ level-gui:
|
|||||||
row: 6
|
row: 6
|
||||||
column: 5
|
column: 5
|
||||||
|
|
||||||
|
# Custom GUI slots; see here for a how-to: https://plugins.auxilor.io/all-plugins/custom-gui-slots
|
||||||
|
custom-slots: []
|
||||||
|
|
||||||
level-up:
|
level-up:
|
||||||
message:
|
message:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -252,7 +260,6 @@ point-names: # If you have point names that look ugly (eg g_souls) then you can
|
|||||||
|
|
||||||
use-faster-move-trigger: true # Disable if you want move trigger to detect sub-1-block movements
|
use-faster-move-trigger: true # Disable if you want move trigger to detect sub-1-block movements
|
||||||
raytrace-distance: 80 # The distance that alt_click should check for a location
|
raytrace-distance: 80 # The distance that alt_click should check for a location
|
||||||
block-item-drop-place-check: true # If the block_item_drop trigger should only fire on naturally placed blocks (prevents dupes)
|
|
||||||
|
|
||||||
potions:
|
potions:
|
||||||
icon:
|
icon:
|
||||||
@@ -263,6 +270,4 @@ potions:
|
|||||||
triggered: true
|
triggered: true
|
||||||
particles:
|
particles:
|
||||||
permanent: false
|
permanent: false
|
||||||
triggered: true
|
triggered: true
|
||||||
|
|
||||||
share-configs: true # If your configs are allowed to be used to gather data and improve the plugin. Nothing identifying (IP, Name, etc) is shared.
|
|
||||||
@@ -13,6 +13,13 @@ description: "&8&oLevel up by mining blocks"
|
|||||||
# If the job should be unlocked by default
|
# If the job should be unlocked by default
|
||||||
unlocked-by-default: true
|
unlocked-by-default: true
|
||||||
|
|
||||||
|
# If job progress should be reset when quitting
|
||||||
|
reset-on-quit: false
|
||||||
|
|
||||||
|
# The price to join or leave this job (set to 0 to disable)
|
||||||
|
join-price: 0
|
||||||
|
leave-price: 0
|
||||||
|
|
||||||
# The xp requirements for each job level - add new levels by adding more to this list
|
# The xp requirements for each job level - add new levels by adding more to this list
|
||||||
level-xp-requirements:
|
level-xp-requirements:
|
||||||
- 100
|
- 100
|
||||||
|
|||||||
111
eco-core/core-plugin/src/main/resources/jobs/beekeeper.yml
Normal file
111
eco-core/core-plugin/src/main/resources/jobs/beekeeper.yml
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
name: "&#FD9113Beekeeper"
|
||||||
|
description: "&8&oLevelling up by breeding bees, but don't drink any honey!"
|
||||||
|
|
||||||
|
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: breed
|
||||||
|
multiplier: 20.0
|
||||||
|
filters:
|
||||||
|
entities:
|
||||||
|
- bee
|
||||||
|
conditions: [ ]
|
||||||
|
|
||||||
|
level-placeholders:
|
||||||
|
- id: "money"
|
||||||
|
value: "%level% * 5"
|
||||||
|
|
||||||
|
effects-description:
|
||||||
|
1:
|
||||||
|
- "&8» &8Earn &a$%money%&8 for each bee you breed"
|
||||||
|
|
||||||
|
rewards-description:
|
||||||
|
1:
|
||||||
|
- "&8» &8Earn &a$%money%&8 for each bee you breed"
|
||||||
|
|
||||||
|
level-up-messages:
|
||||||
|
1:
|
||||||
|
- "&8» &8Earn &a$%money%&8 for each bee you breed"
|
||||||
|
|
||||||
|
level-commands: [ ]
|
||||||
|
|
||||||
|
effects:
|
||||||
|
- id: give_money
|
||||||
|
args:
|
||||||
|
amount: "%v% * %level% * 2.0"
|
||||||
|
triggers:
|
||||||
|
- breed
|
||||||
|
filters:
|
||||||
|
entites:
|
||||||
|
- bee
|
||||||
|
|
||||||
|
- id: take_money
|
||||||
|
args:
|
||||||
|
amount: "%v% * %level% * 5.0"
|
||||||
|
triggers:
|
||||||
|
- consume
|
||||||
|
filters:
|
||||||
|
imems:
|
||||||
|
- honey_bottle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
conditions: [ ]
|
||||||
|
|
||||||
|
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjY0MjgyZWQxOTc4NzQ4YjM5OTUwOTkxNDAwZjBiN2U0YTM5ZjJlN2Q5ZWNlNjA3NmFmNWQxMzUxYzExNzc3ZiJ9fX0=
|
||||||
@@ -3,6 +3,11 @@ description: "&8&oLevel up by placing blocks"
|
|||||||
|
|
||||||
unlocked-by-default: true
|
unlocked-by-default: true
|
||||||
|
|
||||||
|
reset-on-quit: false
|
||||||
|
|
||||||
|
join-price: 0
|
||||||
|
leave-price: 0
|
||||||
|
|
||||||
level-xp-requirements:
|
level-xp-requirements:
|
||||||
- 100
|
- 100
|
||||||
- 120
|
- 120
|
||||||
@@ -84,14 +89,6 @@ effects:
|
|||||||
args:
|
args:
|
||||||
every: "ceil(12 - %level% / 8)"
|
every: "ceil(12 - %level% / 8)"
|
||||||
amount: "1.2 * %level%"
|
amount: "1.2 * %level%"
|
||||||
filters:
|
|
||||||
items:
|
|
||||||
- "*wooden_pickaxe"
|
|
||||||
- "*stone_pickaxe"
|
|
||||||
- "*iron_pickaxe"
|
|
||||||
- "*golden_pickaxe"
|
|
||||||
- "*diamond_pickaxe"
|
|
||||||
- "*netherite_pickaxe"
|
|
||||||
triggers:
|
triggers:
|
||||||
- place_block
|
- place_block
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,11 @@ description: "&8&oLevel up by farming crops"
|
|||||||
|
|
||||||
unlocked-by-default: true
|
unlocked-by-default: true
|
||||||
|
|
||||||
|
reset-on-quit: false
|
||||||
|
|
||||||
|
join-price: 0
|
||||||
|
leave-price: 0
|
||||||
|
|
||||||
level-xp-requirements:
|
level-xp-requirements:
|
||||||
- 100
|
- 100
|
||||||
- 120
|
- 120
|
||||||
@@ -80,15 +85,15 @@ level-placeholders:
|
|||||||
|
|
||||||
effects-description:
|
effects-description:
|
||||||
1:
|
1:
|
||||||
- "&8» &8Earn &a$%money%&8 for each crop you farm"
|
- "&8» &8Earn &a$%money%&8 for each crop farmed"
|
||||||
|
|
||||||
rewards-description:
|
rewards-description:
|
||||||
1:
|
1:
|
||||||
- "&8» &8Earn &a$%money%&8 for each crop you farm"
|
- "&8» &8Earn &a$%money%&8 for each crop farmed"
|
||||||
|
|
||||||
level-up-messages:
|
level-up-messages:
|
||||||
1:
|
1:
|
||||||
- "&8» &8Earn &a$%money%&8 for each crop you farm"
|
- "&8» &8Earn &a$%money%&8 for each crop farmed"
|
||||||
|
|
||||||
level-commands: [ ]
|
level-commands: [ ]
|
||||||
|
|
||||||
|
|||||||
94
eco-core/core-plugin/src/main/resources/jobs/fisherman.yml
Normal file
94
eco-core/core-plugin/src/main/resources/jobs/fisherman.yml
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
name: "&#adf3fdFisherman"
|
||||||
|
description: "&8&oLevel up by fishing"
|
||||||
|
|
||||||
|
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: catch_fish
|
||||||
|
multiplier: 20.0
|
||||||
|
conditions: [ ]
|
||||||
|
|
||||||
|
level-placeholders:
|
||||||
|
- id: "money"
|
||||||
|
value: "%level% * 5"
|
||||||
|
|
||||||
|
effects-description:
|
||||||
|
1:
|
||||||
|
- "&8» &8Earn &a$%money%&8 for each fish caught"
|
||||||
|
|
||||||
|
rewards-description:
|
||||||
|
1:
|
||||||
|
- "&8» &8Earn &a$%money%&8 for each fish caught"
|
||||||
|
|
||||||
|
level-up-messages:
|
||||||
|
1:
|
||||||
|
- "&8» &8Earn &a$%money%&8 for each fish caught"
|
||||||
|
|
||||||
|
level-commands: [ ]
|
||||||
|
|
||||||
|
effects:
|
||||||
|
- id: give_money
|
||||||
|
args:
|
||||||
|
amount: "%v% * %level% * 2.0"
|
||||||
|
triggers:
|
||||||
|
- catch_fish
|
||||||
|
|
||||||
|
conditions: [ ]
|
||||||
|
|
||||||
|
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDgwNGU0MmVjOWIwN2ZjZTFjZTAwNThiNzhkZjU3NjNmNmU0MTBkOWNlODJlZjFlYmI5NTk3YTE1MmI2ZDRjOCJ9fX0=
|
||||||
@@ -3,6 +3,11 @@ description: "&8&oLevel up by mining blocks"
|
|||||||
|
|
||||||
unlocked-by-default: true
|
unlocked-by-default: true
|
||||||
|
|
||||||
|
reset-on-quit: false
|
||||||
|
|
||||||
|
join-price: 0
|
||||||
|
leave-price: 0
|
||||||
|
|
||||||
level-xp-requirements:
|
level-xp-requirements:
|
||||||
- 100
|
- 100
|
||||||
- 120
|
- 120
|
||||||
|
|||||||
@@ -3,6 +3,11 @@ description: "&8&oLevel up by killing mobs"
|
|||||||
|
|
||||||
unlocked-by-default: true
|
unlocked-by-default: true
|
||||||
|
|
||||||
|
reset-on-quit: false
|
||||||
|
|
||||||
|
join-price: 0
|
||||||
|
leave-price: 0
|
||||||
|
|
||||||
level-xp-requirements:
|
level-xp-requirements:
|
||||||
- 100
|
- 100
|
||||||
- 120
|
- 120
|
||||||
|
|||||||
190
eco-core/core-plugin/src/main/resources/jobs/toolsmith.yml
Normal file
190
eco-core/core-plugin/src/main/resources/jobs/toolsmith.yml
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
# The ID of the job is the name of the .yml file,
|
||||||
|
# for example miner.yml has the ID of miner
|
||||||
|
# You can place jobs anywhere in this folder,
|
||||||
|
# including in subfolders if you want to organize your job configs
|
||||||
|
# _example.yml is not loaded.
|
||||||
|
|
||||||
|
# The display name of the job
|
||||||
|
name: "/b3Toolsmith"
|
||||||
|
|
||||||
|
# The description of the job
|
||||||
|
description: "&8&oLevel up by crafting tools"
|
||||||
|
|
||||||
|
# If the job should be unlocked by default
|
||||||
|
unlocked-by-default: true
|
||||||
|
|
||||||
|
# If job progress should be reset when quitting
|
||||||
|
reset-on-quit: false
|
||||||
|
|
||||||
|
# The price to join or leave this job (set to 0 to disable)
|
||||||
|
join-price: 0
|
||||||
|
leave-price: 0
|
||||||
|
|
||||||
|
# The xp requirements for each job level - add new levels by adding more to this list
|
||||||
|
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
|
||||||
|
|
||||||
|
# An XP Gain method takes a trigger, a multiplier, conditions, and filters.
|
||||||
|
# The multiplier takes the value produced by the trigger and multiplies it
|
||||||
|
# by some value to calculate the experience that should be given
|
||||||
|
xp-gain-methods:
|
||||||
|
- trigger: craft
|
||||||
|
multiplier: 2
|
||||||
|
conditions: [ ]
|
||||||
|
filters:
|
||||||
|
items:
|
||||||
|
- "*wooden_pickaxe"
|
||||||
|
- "*stone_pickaxe"
|
||||||
|
- "*iron_pickaxe"
|
||||||
|
- "*golden_pickaxe"
|
||||||
|
- "*diamond_pickaxe"
|
||||||
|
- "*netherite_pickaxe"
|
||||||
|
- "*wooden_axe"
|
||||||
|
- "*stone_axe"
|
||||||
|
- "*iron_axe"
|
||||||
|
- "*golden_axe"
|
||||||
|
- "*diamond_axe"
|
||||||
|
- "*netherite_axe"
|
||||||
|
- "*wooden_shovel"
|
||||||
|
- "*stone_shovel"
|
||||||
|
- "*iron_shovel"
|
||||||
|
- "*golden_shovel"
|
||||||
|
- "*diamond_shovel"
|
||||||
|
- "*netherite_shovel"
|
||||||
|
- "*wooden_hoe"
|
||||||
|
- "*stone_hoe"
|
||||||
|
- "*iron_hoe"
|
||||||
|
- "*golden_hoe"
|
||||||
|
- "*diamond_hoe"
|
||||||
|
- "*netherite_hoe"
|
||||||
|
- "*fishing_rod"
|
||||||
|
- "*flint_and_steel"
|
||||||
|
- "*clock"
|
||||||
|
- "*compass"
|
||||||
|
- "*lead"
|
||||||
|
- "*shears"
|
||||||
|
- "*spyglass"
|
||||||
|
|
||||||
|
# Custom placeholders to be used in descriptions,
|
||||||
|
# Don't add % to the IDs, this is done automatically
|
||||||
|
# The value takes a %level% placeholder and is a mathematical expression
|
||||||
|
level-placeholders:
|
||||||
|
- id: "money"
|
||||||
|
value: "%level% * 2"
|
||||||
|
|
||||||
|
# The text shown with the %effects% placeholder
|
||||||
|
# The number dictates the minimum level for this text to show for
|
||||||
|
# Adding new levels will override this text on those levels or above
|
||||||
|
effects-description:
|
||||||
|
1:
|
||||||
|
- "&8» &8Earn &a$%money%&8 for each tool crafted"
|
||||||
|
|
||||||
|
# Same as above, but for %rewards%
|
||||||
|
rewards-description:
|
||||||
|
1:
|
||||||
|
- "&8» &8Earn &a$%money%&8 for each tool crafted"
|
||||||
|
|
||||||
|
# Same as above, but for %level_up_messages%
|
||||||
|
level-up-messages:
|
||||||
|
1:
|
||||||
|
- "&8» &8Earn &a$%money%&8 for each tool crafted"
|
||||||
|
|
||||||
|
# Commands to be sent on levelup, can be formatted two ways:
|
||||||
|
# level:command (e.g. 10:eco give %player% 1000), which would execute that command for level 10
|
||||||
|
# command (e.g. eco give %player% 5000), which would execute that command for all levels
|
||||||
|
level-commands: [ ]
|
||||||
|
|
||||||
|
# The effects for the job, has %level% as a placeholder
|
||||||
|
effects:
|
||||||
|
- id: give_money
|
||||||
|
args:
|
||||||
|
amount: "2 * %level%"
|
||||||
|
filters:
|
||||||
|
items:
|
||||||
|
- "*wooden_pickaxe"
|
||||||
|
- "*stone_pickaxe"
|
||||||
|
- "*iron_pickaxe"
|
||||||
|
- "*golden_pickaxe"
|
||||||
|
- "*diamond_pickaxe"
|
||||||
|
- "*netherite_pickaxe"
|
||||||
|
- "*wooden_axe"
|
||||||
|
- "*stone_axe"
|
||||||
|
- "*iron_axe"
|
||||||
|
- "*golden_axe"
|
||||||
|
- "*diamond_axe"
|
||||||
|
- "*netherite_axe"
|
||||||
|
- "*wooden_shovel"
|
||||||
|
- "*stone_shovel"
|
||||||
|
- "*iron_shovel"
|
||||||
|
- "*golden_shovel"
|
||||||
|
- "*diamond_shovel"
|
||||||
|
- "*netherite_shovel"
|
||||||
|
- "*wooden_hoe"
|
||||||
|
- "*stone_hoe"
|
||||||
|
- "*iron_hoe"
|
||||||
|
- "*golden_hoe"
|
||||||
|
- "*diamond_hoe"
|
||||||
|
- "*netherite_hoe"
|
||||||
|
- "*fishing_rod"
|
||||||
|
- "*flint_and_steel"
|
||||||
|
- "*clock"
|
||||||
|
- "*compass"
|
||||||
|
- "*lead"
|
||||||
|
- "*shears"
|
||||||
|
- "*spyglass"
|
||||||
|
triggers:
|
||||||
|
- craft
|
||||||
|
|
||||||
|
# The conditions for the job, also has %level% as a placeholder
|
||||||
|
conditions: [ ]
|
||||||
|
|
||||||
|
# The icon in GUIs
|
||||||
|
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODk2ZDRjODM4YTE2MDZhYzc1Nzc1NDIzMjA4NjE0OTcwOGI3OWFiYTAxYmU5NTNjNjUzOTkxMDFlODk0M2RhZiJ9fX0=
|
||||||
@@ -20,6 +20,17 @@ messages:
|
|||||||
unlocked-job: "&fSuccessfully unlocked the %job%&f job for %player%!"
|
unlocked-job: "&fSuccessfully unlocked the %job%&f job for %player%!"
|
||||||
cannot-spawn-job: "&cYou already have this job unlocked!"
|
cannot-spawn-job: "&cYou already have this job unlocked!"
|
||||||
invalid-amount: "&cInvalid amount!"
|
invalid-amount: "&cInvalid amount!"
|
||||||
|
no-job: "&cYou don't have a job!"
|
||||||
|
joined-job: "&fYou have joined the %job%&f job!"
|
||||||
|
left-job: "&fYou have left the %job%&f job!"
|
||||||
|
job-already-joined: "&cYou already have this job!"
|
||||||
|
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%"
|
||||||
|
|
||||||
menu:
|
menu:
|
||||||
title: "Jobs"
|
title: "Jobs"
|
||||||
|
|||||||
19
eco-core/core-plugin/src/main/resources/lrcdb.yml
Normal file
19
eco-core/core-plugin/src/main/resources/lrcdb.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Options for lrcdb (https://lrcdb.auxilor.io), a website to share configs
|
||||||
|
# with other server owners, so you can get more configs without making them
|
||||||
|
# yourself!
|
||||||
|
|
||||||
|
author: "Unknown Author" # The name attached to configs you export
|
||||||
|
|
||||||
|
# Options about automatically sharing configs you create
|
||||||
|
share-configs:
|
||||||
|
# If you want all your configs to automatically be publicly available,
|
||||||
|
# set this to true. This really helps out other users!
|
||||||
|
publicly: false
|
||||||
|
|
||||||
|
# If you don't want your configs to be usable to gather information about
|
||||||
|
# plugin usage or to improve the plugins in the future, disable this.
|
||||||
|
# Nothing identifying is shared.
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
# If you disable share-configs, you can still share select configs publicly
|
||||||
|
# with /ecojobs export <config>.
|
||||||
@@ -49,7 +49,11 @@ permissions:
|
|||||||
ecojobs.command.jobs: true
|
ecojobs.command.jobs: true
|
||||||
ecojobs.command.unlock: true
|
ecojobs.command.unlock: true
|
||||||
ecojobs.command.givexp: true
|
ecojobs.command.givexp: true
|
||||||
|
ecojobs.command.join: true
|
||||||
|
ecojobs.command.leave: true
|
||||||
ecojobs.command.reset: true
|
ecojobs.command.reset: true
|
||||||
|
ecojobs.command.import: true
|
||||||
|
ecojobs.command.export: true
|
||||||
|
|
||||||
ecojobs.command.reload:
|
ecojobs.command.reload:
|
||||||
description: Allows reloading the config
|
description: Allows reloading the config
|
||||||
@@ -69,6 +73,18 @@ permissions:
|
|||||||
ecojobs.command.reset:
|
ecojobs.command.reset:
|
||||||
description: Allows the use of /ecojobs reset.
|
description: Allows the use of /ecojobs reset.
|
||||||
default: op
|
default: op
|
||||||
|
ecojobs.command.import:
|
||||||
|
description: Allows the use of /ecojobs import.
|
||||||
|
default: op
|
||||||
|
ecojobs.command.export:
|
||||||
|
description: Allows the use of /ecojobs export.
|
||||||
|
default: op
|
||||||
|
ecojobs.command.join:
|
||||||
|
description: Allows the use of /jobs join.
|
||||||
|
default: true
|
||||||
|
ecojobs.command.leave:
|
||||||
|
description: Allows the use of /jobs leave.
|
||||||
|
default: true
|
||||||
|
|
||||||
ecojobs.xpmultiplier.50percent:
|
ecojobs.xpmultiplier.50percent:
|
||||||
description: Gives the player 50% more job experience
|
description: Gives the player 50% more job experience
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#libreforge-updater
|
#libreforge-updater
|
||||||
#Wed Sep 14 12:59:56 BST 2022
|
#Tue Oct 18 14:12:39 BST 2022
|
||||||
version=1.3.1
|
version=1.18.0
|
||||||
plugin-name=EcoJobs
|
plugin-name=EcoJobs
|
||||||
|
|||||||
Reference in New Issue
Block a user