Changelog

Release history for CoreJobs.

1.5.0

Where the multiplier comes from, and raw keys on the action bar

  • %corejobs_total_<type>_source% names everything giving a player more than 1.0, the CoreJobs boost first and then the registered plugins. %corejobs_external_<type>_source% keeps meaning providers only.
  • placeholder.self-source in the language file is what CoreJobs calls its own boost in that list, so it can read as “Server Boost” or whatever the shop sells.
  • Fixed on a scoreboard: a player with only a CoreJobs boost running saw the no-source wording, which read as having no boost.
  • {block_id} and {job_id} on job.xp-actionbar, the raw material key and the job id. Both are filled before PlaceholderAPI runs, so another plugin’s placeholder can be built out of them.
  • {block} still reads oak log on a break. {block_id} is the same break as oak_log, which is the shape a placeholder identifier needs.
  • Fishing and enchanting now name what they paid for. {block} reads cod or diamond sword where it used to read fish and enchant for every catch and every enchant.
  • The action bar tokens are now on the placeholders page as well as the config page.
1.4.0

A developer API

  • Three cancellable Bukkit events in cc.arrowtan.corejobs.api.event: CoreJobsXpGainEvent, CoreJobsMoneyGainEvent and CoreJobsFarmpointsGainEvent.
  • Each one carries the player, the job, the base value, the CoreJobs boost multiplier, and a settable final value that is what actually gets paid.
  • They fire after the CoreJobs boost and before the payout, so another plugin multiplies on top of a running boost instead of underneath it.
  • Cancelling the xp banks nothing and skips the level check, while the money and farmpoints from the same action still pay.
  • Admin commands fire nothing, and a payout of 0 fires nothing.
  • Nothing changes for a server with no plugin listening. No new config keys and no new messages.
1.3.0

Shop entries from in game, and a placeholder check

  • /corejobs shop boost, shop add, shop remove and shop list write ordinary shop.yml entries without opening the file.
  • enabled: false takes a shop entry out of the shop without deleting it, which is how a bundled entry is removed for good.
  • The console names what is wrong with a shop entry on load: no boost block, a duration of 0, a multiplier of 1, an unknown job, a slot outside the menu, two entries on one slot.
  • An entry that says type: boost but cannot grant one is kept out of the shop instead of taking farmpoints for nothing.
  • /corejobs papi <text> runs text through PlaceholderAPI and says whether each identifier in it is registered.
  • Without PlaceholderAPI, the console names the language lines holding a %placeholder% on start instead of staying quiet.
  • Fixed: a shop entry on the same slot as the balance item, the close button or the filler was drawn and then covered up.
  • Fixed: a shop entry with no give block handed over a stone block.
1.2.0

Money and farmpoints boosts

  • Boosts now come in three categories, xp, money and farmpoints. One of each runs at the same time, and a second boost of the same category still waits its turn.
  • boosts.affect-farmpoints, and boosts.xp-also-money for the old behaviour where an xp boost also multiplied money.
  • boost-type on a shop entry, an optional category argument on /corejobs boost and /corejobs boost item, and boosts.item-money and boosts.item-farmpoints for how those items look.
  • Per-category placeholders: %corejobs_boost_<type>_active%, _multiplier%, _amount%, _time%, _seconds% and _job%, with an optional job in the middle.
  • job.xp-actionbar accepts another plugin’s placeholders when PlaceholderAPI is installed, so a collection counter can sit next to the job progress.
  • Comments in your yml files are brought in line with the bundled ones on start, so a reworded explanation reaches a key you already had.
  • Fixed: a boost item right clicked in open air was thrown by vanilla instead of starting the boost.
  • Fixed: a leftover multi-block.connected list is now deleted on start instead of warning on every start.
1.1.0

Boost items, live timers, a fuller action bar

  • boosts.as-item hands a bought boost over as an item. The player right clicks it when they want it, the item is used up and the boost starts then. A shop entry can override it with as-item under its own boost block.
  • /corejobs boost item <player> <job|all> <multiplier> <seconds> [amount] for handing them out.
  • The boosts menu counts down while it is open, at feedback.boost-menu-refresh-ticks.
  • The action bar carries the money paid, the block that paid, a {bar} progress bar, and the farmpoints from the same block instead of being wiped by them.
  • job-prestige in menus.yml puts the prestige level and what it is worth under a job icon in /jobs.
1.0.2

Boosts take turns

  • boosts.queue-lower, on by default. A 2x freezes with its full time saved while a 3x over the same jobs runs, and starts again the second the 3x ends.
  • Boosts store the time they have left instead of an end time, so a clean shutdown costs no boost time at all.
  • The boosts menu shows a waiting boost with its own item, and buying one that has to wait says so.
1.0.1

Boost stacking, offline pause, faster leaderboards

  • boosts.stacking with highest, add and multiply. Two boosts no longer multiply into one huge number by default.
  • boosts.same-boost: extend tops up a boost you already have running instead of starting a second one.
  • boosts.pause-while-offline gives back the time the server spent down.
  • A level up saves and refreshes the leaderboards straight away instead of waiting for the autosave, with leaderboards.min-delay-seconds as the floor.
  • how-to-earn.lines in menus.yml and a per-job how-to-earn list in jobs.yml replace the generated block and mob list.
1.0.0

First release

Nine tester rounds went in before this one. Everything below shipped together.

  • Six jobs with configurable money formulas, xp curves, and prestige.
  • Head-grid /jobs menu, per-job hub, and tier pages.
  • Level rewards with a Claim All button.
  • Drop tables and farmpoint rules per material.
  • Farmpoints shop, boosts, and a monthly ranking with a Discord webhook.
  • Multi-stage plant support for sugar cane, cactus, bamboo, kelp, chorus, and vines.
  • Place-and-break protection.
  • SQLite and MySQL storage, English, French, and Spanish.
Thanks Luxioz

Prime tester through every round. Most of the fixes below came straight off his reports.

Round 9

Chorus plants paid nothing

A break now pays for the block the player actually hit, even when something else on the server clears it in the same moment. Only a swing at a block that was already gone is skipped.

Round 8

Per-block money for multi-stage plants

money.per-block on the farmer, matching the xp weights, so a chorus flower is worth double a stem and a vine is the cheapest block on the list.

Round 7

Placed blocks that grow into something else

A block a player placed pays again once it has grown into a different plant, so a chorus flower that becomes a chorus stem is no longer treated as hand placed.

Round 6

Multi-block split into three shapes

column, connected-up, and connected-down replaced the single connected list, which is what let chorus and vines break correctly in opposite directions.

Rounds 1 to 5

The build itself

Jobs, menus, prestige, rewards, drops, farmpoints, the shop, boosts, the ranking, storage, and the three language files.

Versioning

Release jars are named plainly, like CoreJobs-1.0.0.jar. A jar with an extra number on the end, like 1.0.0-9, is a test build from before the release and is not meant for a live server.