9
0
mirror of https://github.com/Auxilor/EcoJobs.git synced 2025-12-20 07:29:20 +00:00

Compare commits

..

25 Commits
1.0.0 ... 1.7.0

Author SHA1 Message Date
Auxilor
ff84afdc7d libreforge-updater 2022-09-20 10:39:39 +01:00
Auxilor
0239447b61 libreforge-updater 2022-09-17 15:45:43 +01:00
Auxilor
8b0b2f861f libreforge-updater 2022-09-15 12:16:24 +01:00
Auxilor
d2fd661ba3 libreforge-updater 2022-09-15 12:10:05 +01:00
Auxilor
238962bb4f libreforge-updater 2022-09-14 18:53:41 +01:00
Auxilor
6b7df691de libreforge-updater 2022-09-14 15:12:49 +01:00
Auxilor
28b7279a88 libreforge-updater 2022-09-14 15:09:55 +01:00
Auxilor
36f6765942 Fixed bug 2022-09-14 13:32:05 +01:00
Auxilor
b96d6c3388 Added leave price 2022-09-14 13:26:59 +01:00
Auxilor
7c06eb5c18 Added Join Price and Reset on Quit 2022-09-14 13:23:22 +01:00
Auxilor
e33d3264d8 Added PlayerJobJoinEvent and PlayerJobLeaveEvent 2022-09-14 13:12:47 +01:00
Auxilor
3780370caf libreforge-updater 2022-09-14 12:59:57 +01:00
Auxilor
e82eacf5b6 libreforge-updater 2022-09-13 19:15:37 +01:00
Auxilor
5a519aa263 libreforge-updater 2022-09-12 21:21:37 +01:00
Auxilor
4b9283c6de libreforge-updater 2022-09-12 17:15:34 +01:00
Auxilor
6316dddc0b libreforge-updater 2022-09-11 19:27:54 +01:00
Auxilor
4bab3ed8c2 Fixed /ecojobs givexp 2022-09-11 11:52:06 +01:00
Auxilor
3f6db2ba14 Merge remote-tracking branch 'origin/master' 2022-09-10 22:03:05 +01:00
Auxilor
ba3e0bb852 Updated to 1.0.1 2022-09-10 22:02:59 +01:00
Auxilor
7a45332837 Added update checker 2022-09-10 22:02:51 +01:00
Will FP
ddf1ef35e2 Update README.md 2022-09-10 17:07:25 +01:00
Will FP
273b8fe80a Update README.md 2022-09-10 16:33:51 +01:00
Auxilor
802681e3a5 Fixed slayer 2022-09-10 14:02:10 +01:00
Auxilor
f24e9d9ed9 Added farmer 2022-09-10 14:00:11 +01:00
Auxilor
682dc31b0c Added slayer 2022-09-10 13:55:45 +01:00
19 changed files with 433 additions and 19 deletions

View File

@@ -1,27 +1,27 @@
<h1 align="center"> <h1 align="center">
<br> <br>
<img src="https://i.imgur.com/FHqL960.png" alt="EcoJobs logo" width="256"> <img src="https://i.imgur.com/Qd617BL.png" alt="EcoJobs logo" width="256">
<br> <br>
</h1> </h1>
<h4 align="center">Source code for EcoJobs, a premium spigot plugin.</h4> <h4 align="center">Source code for EcoJobs, a premium spigot plugin.</h4>
<p align="center"> <p align="center">
<a href="https://polymart.org/resource/ecojobs.1351"> <a href="https://polymart.org/resource/ecojobs.2857">
<img alt="spigot" src="https://img.shields.io/badge/polymart-EcoJobs-964B00?style=for-the-badge"/> <img alt="spigot" src="https://img.shields.io/badge/polymart-EcoJobs-964B00?style=for-the-badge"/>
</a> </a>
<a href="https://bstats.org/plugin/bukkit/EcoJobs" alt="bstats servers"> <a href="https://bstats.org/plugin/bukkit/EcoJobs" alt="bstats servers">
<img src="https://img.shields.io/bstats/servers/15502?color=964B00&style=for-the-badge"/> <img src="https://img.shields.io/bstats/servers/16394?color=964B00&style=for-the-badge"/>
</a> </a>
<a href="https://bstats.org/plugin/bukkit/EcoJobs" alt="bstats players"> <a href="https://bstats.org/plugin/bukkit/EcoJobs" alt="bstats players">
<img src="https://img.shields.io/bstats/players/15502?color=964B00&style=for-the-badge"/> <img src="https://img.shields.io/bstats/players/16394?color=964B00&style=for-the-badge"/>
</a> </a>
<a href="https://discord.gg/ZcwpSsE/" alt="Discord"> <a href="https://discord.gg/ZcwpSsE/" alt="Discord">
<img src="https://img.shields.io/discord/452518336627081236?label=discord&style=for-the-badge&color=964B00"/> <img src="https://img.shields.io/discord/452518336627081236?label=discord&style=for-the-badge&color=964B00"/>
</a> </a>
</p> </p>
[![Docs](https://i.imgur.com/4JciYrQ.png)](https://discord.gg/ZcwpSsE/) [![Docs](https://i.imgur.com/7Ac2KTg.png)](https://discord.gg/ZcwpSsE/)
## License ## License
*Click here to read [the entire license](https://github.com/Auxilor/EcoJobs/blob/master/LICENSE.md).* *Click here to read [the entire license](https://github.com/Auxilor/EcoJobs/blob/master/LICENSE.md).*

View File

@@ -47,7 +47,7 @@ allprojects {
dependencies { dependencies {
compileOnly 'com.willfp:eco:6.37.1' compileOnly 'com.willfp:eco:6.37.1'
implementation 'com.willfp:libreforge:3.96.0' implementation 'com.willfp:libreforge:3.102.1'
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'

View File

@@ -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
@@ -42,7 +44,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
) )
} }

View File

@@ -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()
}
}

View File

@@ -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()
}
}

View File

@@ -6,6 +6,7 @@ import com.willfp.eco.util.StringUtils
import com.willfp.eco.util.savedDisplayName import com.willfp.eco.util.savedDisplayName
import com.willfp.eco.util.toNiceString import com.willfp.eco.util.toNiceString
import com.willfp.ecojobs.jobs.Jobs import com.willfp.ecojobs.jobs.Jobs
import com.willfp.ecojobs.jobs.giveExactJobExperience
import com.willfp.ecojobs.jobs.giveJobExperience import com.willfp.ecojobs.jobs.giveJobExperience
import com.willfp.ecojobs.jobs.hasJob import com.willfp.ecojobs.jobs.hasJob
import org.bukkit.Bukkit import org.bukkit.Bukkit
@@ -56,7 +57,7 @@ class CommandGiveXP(plugin: EcoPlugin) : Subcommand(plugin, "givexp", "ecojobs.c
return return
} }
player.giveJobExperience( player.giveExactJobExperience(
job, job,
amount amount
) )

View File

@@ -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)

View File

@@ -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)

View File

@@ -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
}
}
}

View File

@@ -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)
}
}
}

View File

@@ -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:"
@@ -252,7 +254,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,4 +264,6 @@ 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.

View File

@@ -1,3 +1,3 @@
resource-id: 0 resource-id: 2857
bstats-id: 16394 bstats-id: 16394
color: "&#964B00" color: "&#964B00"

View File

@@ -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

View File

@@ -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
@@ -97,4 +102,4 @@ effects:
conditions: [ ] conditions: [ ]
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmM4ZWJhZDcyYjc3ZGYzOTkwZTA3YmM4NjlhOTlhOGY4OTYyZDNjMTljNzZlMzlkOTk1NTNjYWU0MTMxY2M4In19fQ== icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTBiYmVmMGE0YmNmMDNlMDQ5ZDU1NmRhMGJlZDZiNDFkZDkyOGI4OTdhNDJhZTAxZWZlYTY4NGI1NjFjNDMyZiJ9fX0=

View File

@@ -0,0 +1,124 @@
name: "&eFarmer"
description: "&8&oLevel up by farming crops"
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:
blocks:
- "wheat"
- "potatoes"
- "beetroots"
- "carrots"
- "melon"
- "pumpkin"
- "cactus"
- "sugar_cane"
- "cocoa"
- "nether_wart"
- "bamboo"
- "sweet_berries"
- "glow_berries"
level-placeholders:
- id: "money"
value: "%level% * 0.25"
effects-description:
1:
- "&8» &8Earn &a$%money%&8 for each crop you farm"
rewards-description:
1:
- "&8» &8Earn &a$%money%&8 for each crop you farm"
level-up-messages:
1:
- "&8» &8Earn &a$%money%&8 for each crop you farm"
level-commands: [ ]
effects:
- id: give_money
args:
amount: "%level% * 0.25"
filters:
blocks:
- "wheat"
- "potatoes"
- "beetroots"
- "carrots"
- "melon"
- "pumpkin"
- "cactus"
- "sugar_cane"
- "cocoa"
- "nether_wart"
- "bamboo"
- "sweet_berries"
- "glow_berries"
triggers:
- mine_block
conditions: [ ]
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODMzNmUzMTVlMWFlOTk1NzJkYzljNzJhNjJhMTRiODU3Nzc0MWRjMzQ3MmM3NDEzZDdlYWE2NjdhMzA3YTNkNyJ9fX0=

View File

@@ -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

View File

@@ -0,0 +1,97 @@
name: "&#8a0303Slayer"
description: "&8&oLevel up by killing mobs"
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: kill
multiplier: 0.05
conditions: [ ]
level-placeholders:
- id: "money"
value: "%level% / 10"
effects-description:
1:
- "&8» &8Earn &a$%money%&8 per heart of health that"
- " &8mobs you kill have"
rewards-description:
1:
- "&8» &8Earn &a$%money%&8 per heart of health that"
- " &8mobs you kill have"
level-up-messages:
1:
- "&8» &8Earn &a$%money%&8 per heart of health that"
- " &8mobs you kill have"
level-commands: [ ]
effects:
- id: give_money
args:
amount: "%v% * %level% * 0.1"
triggers:
- kill
conditions: [ ]
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDY5MTllMGFjYzFiMjkzYThkNWY5NzI4NjkzMzZhN2VmZWRiMGJhNmY0YzdlMTkzODhkOGZiODEyNjBmMzIzYyJ9fX0=

View File

@@ -1,4 +1,4 @@
#libreforge-updater #libreforge-updater
#Sat Sep 10 12:58:46 BST 2022 #Tue Sep 20 10:39:39 BST 2022
version=1.0.0 version=1.6.1
plugin-name=EcoJobs plugin-name=EcoJobs

0
gradlew vendored Normal file → Executable file
View File