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

Compare commits

..

24 Commits

Author SHA1 Message Date
Auxilor
3829e326ba libreforge-updater 2022-10-19 20:43:19 +01:00
Auxilor
26d44fb2d9 libreforge-updater 2022-10-18 14:12:39 +01:00
Auxilor
5cba64d19f libreforge-updater 2022-10-16 23:26:32 +01:00
Auxilor
52f3230307 libreforge-updater 2022-10-13 20:11:59 +01:00
Auxilor
e0b2ae4f40 libreforge-updater 2022-10-10 21:03:58 +01:00
Auxilor
b9f7d6db42 libreforge-updater 2022-10-09 15:02:04 +01:00
Will FP
f62476c1d4 Merge pull request #7 from badomensurvival/master
Job level placeholder
2022-10-09 14:50:32 +01:00
Will FP
ca25f78c60 Merge pull request #6 from 0ft3n/master
Fixed default builder.yml
2022-10-09 14:50:17 +01:00
devbaraus
765d7ee7e2 Job level placeholder 2022-10-09 10:26:34 -03:00
0ft3n
850e1ec888 Fixed default builder.yml 2022-10-09 01:26:47 +03:00
Auxilor
fe29bb611f libreforge-updater 2022-10-07 19:50:42 +01:00
Auxilor
87c8c6755a Updated to 1.14.1 2022-10-06 14:09:00 +01:00
Auxilor
964d668713 Added more default jobs 2022-10-06 14:08:52 +01:00
Auxilor
d8113c3819 libreforge-updater 2022-10-06 12:02:41 +01:00
Auxilor
2e655ffbb8 libreforge-updater 2022-10-04 15:52:50 +01:00
Auxilor
88a44777e1 libreforge-updater 2022-10-03 18:28:56 +01:00
Auxilor
bd7305fae1 libreforge-updater 2022-10-02 14:57:36 +01:00
Auxilor
25b78106ee libreforge-updater 2022-09-28 17:52:31 +01:00
Auxilor
1b75ba0098 Updated to 1.10.0 2022-09-28 12:41:01 +01:00
Auxilor
b4b235f1b5 Added custom GUI slots 2022-09-28 12:40:05 +01:00
Auxilor
c7ec273747 Updated to 1.9.0 2022-09-28 09:09:05 +01:00
Auxilor
9991f9b683 Added /jobs join and /jobs leave 2022-09-28 09:08:51 +01:00
Auxilor
921f086f49 libreforge-updater 2022-09-26 18:27:06 +01:00
Auxilor
b0c882dc21 libreforge-updater 2022-09-26 14:41:23 +01:00
18 changed files with 591 additions and 20 deletions

View File

@@ -46,8 +46,8 @@ allprojects {
}
dependencies {
compileOnly 'com.willfp:eco:6.37.1'
implementation 'com.willfp:libreforge:3.104.1'
compileOnly 'com.willfp:eco:6.43.6'
implementation 'com.willfp:libreforge:3.114.0'
implementation 'org.joml:joml:1.10.4'
compileOnly 'org.jetbrains:annotations:23.0.0'

View File

@@ -28,6 +28,11 @@ class EcoJobsPlugin : LibReforgePlugin() {
"job"
) { it.activeJob?.name ?: "" }.register()
PlayerPlaceholder(
this,
"job_level"
) { it.activeJobLevel?.level.toString() ?: "" }.register()
PlayerPlaceholder(
this,
"job_id"

View File

@@ -2,14 +2,28 @@ package com.willfp.ecojobs.commands
import com.willfp.eco.core.EcoPlugin
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
class CommandEcojobs(plugin: EcoPlugin) : PluginCommand(plugin, "ecojobs", "ecojobs.command.ecojobs", false) {
class CommandEcojobs(plugin: LibReforgePlugin) : PluginCommand(plugin, "ecojobs", "ecojobs.command.ecojobs", false) {
init {
this.addSubcommand(CommandReload(plugin))
.addSubcommand(CommandUnlock(plugin))
.addSubcommand(CommandGiveXP(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>) {

View File

@@ -7,6 +7,11 @@ import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
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>) {
player as Player
JobsGUI.open(player)

View File

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

View File

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

View File

@@ -4,6 +4,7 @@ import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.gui.menu
import com.willfp.eco.core.gui.menu.Menu
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.MaskItems
import com.willfp.eco.core.items.Items
@@ -165,6 +166,7 @@ class JobLevelGUI(
}
}
)
setSlot(
plugin.configYml.getInt("level-gui.progression-slots.close.location.row"),
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)
)
}
}
}

View File

@@ -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.Menu
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.MaskItems
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)
)
}
}
}

View File

@@ -116,6 +116,9 @@ gui:
row: 4
column: 2
# Custom GUI slots; see here for a how-to: https://plugins.auxilor.io/all-plugins/custom-gui-slots
custom-slots: []
level-gui:
rows: 6
@@ -210,6 +213,9 @@ level-gui:
row: 6
column: 5
# Custom GUI slots; see here for a how-to: https://plugins.auxilor.io/all-plugins/custom-gui-slots
custom-slots: []
level-up:
message:
enabled: true
@@ -265,5 +271,3 @@ potions:
particles:
permanent: false
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

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

View File

@@ -89,14 +89,6 @@ effects:
args:
every: "ceil(12 - %level% / 8)"
amount: "1.2 * %level%"
filters:
items:
- "*wooden_pickaxe"
- "*stone_pickaxe"
- "*iron_pickaxe"
- "*golden_pickaxe"
- "*diamond_pickaxe"
- "*netherite_pickaxe"
triggers:
- place_block

View File

@@ -85,15 +85,15 @@ level-placeholders:
effects-description:
1:
- "&8» &8Earn &a$%money%&8 for each crop you farm"
- "&8» &8Earn &a$%money%&8 for each crop farmed"
rewards-description:
1:
- "&8» &8Earn &a$%money%&8 for each crop you farm"
- "&8» &8Earn &a$%money%&8 for each crop farmed"
level-up-messages:
1:
- "&8» &8Earn &a$%money%&8 for each crop you farm"
- "&8» &8Earn &a$%money%&8 for each crop farmed"
level-commands: [ ]

View 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=

View 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: "&#0047b3Toolsmith"
# 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=

View File

@@ -20,6 +20,17 @@ messages:
unlocked-job: "&fSuccessfully unlocked the %job%&f job for %player%!"
cannot-spawn-job: "&cYou already have this job unlocked!"
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:
title: "Jobs"

View 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>.

View File

@@ -49,7 +49,11 @@ permissions:
ecojobs.command.jobs: true
ecojobs.command.unlock: true
ecojobs.command.givexp: true
ecojobs.command.join: true
ecojobs.command.leave: true
ecojobs.command.reset: true
ecojobs.command.import: true
ecojobs.command.export: true
ecojobs.command.reload:
description: Allows reloading the config
@@ -69,6 +73,18 @@ permissions:
ecojobs.command.reset:
description: Allows the use of /ecojobs reset.
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:
description: Gives the player 50% more job experience

View File

@@ -1,4 +1,4 @@
#libreforge-updater
#Mon Sep 26 10:51:36 BST 2022
version=1.7.1
#Wed Oct 19 20:43:19 BST 2022
version=1.19.0
plugin-name=EcoJobs