Troubleshooting
Work down the list. Most of these are one config key.
debug: true in config.yml prints a console line per block break with the material, the multi-block count, and what each job paid. It answers most payout questions on its own. Turn it back off afterwards.
The plugin does not enable
Console shows a library error on first start
CoreJobs loads a few libraries the first time it runs. If the server cannot fetch them, it will not enable. Restart once, and if it keeps failing, copy the libraries folder from a server where CoreJobs has already started.
Console says something about an unsupported version
The server is on Java 16 or older. CoreJobs needs Java 17 or newer.
A yml fails to load
The console names the file and the line. It is almost always an indentation slip or a tab character. Fix it and restart, or delete the file to get a fresh default back.
Money problems
Players get xp but no money
Either Vault or an economy plugin is missing, or economy.use-vault is false. The console warns at startup when money is off.
Money is far too high or low at high levels
per-level compounds with every level. Check the payout at your max level, not level 1: /corejobs job setlevel <you> <job> 100 and read the pay line in the job hub.
Payout problems
A specific block pays nothing
Check, in order: the material is in that job’s blocks list, the crop is mature if require-mature is on, the player did not place that block, and the block is not a harvest block listed in the wrong place. Debug names the reason.
A multi-stage plant pays for one block only
multi-block.enabled must be true and the material must be in the right list: column for stacks, connected-up for chorus, connected-down for vines.
Right-clicked berries pay nothing
Sweet berries and cave vines belong in harvest-blocks, not blocks. They pay xp by default, and money only if the material has a money.per-block entry.
Everything pays twice
Check you are not running two copies of the jar. An old build left in plugins/ alongside the new one enables both.
Menu problems
A button is missing
Its slot is out of range for the menu’s rows, or two items share the same slot and one overwrote the other. Rows times nine is the slot count.
A menu shows raw text like menu.shop-name
The lang: route points at a key that does not exist in the language file in use. Add the key, or write literal text in menus.yml.
Menu text is in the wrong language
language in config.yml picks the file. A key missing from that file falls back or shows blank, so compare it against en.yml.
An ItemsAdder icon shows as a barrier
The namespaced id is wrong, or ItemsAdder loaded after CoreJobs. Check the id in ItemsAdder, then restart rather than reload.
Boost problems
A boost is in the menu but its time is not moving
It is waiting behind a stronger boost of the same category, which is what boosts.queue-lower does. Waiting boosts are listed after the running ones with the entry-paused icon, and the one at the front starts the moment the stronger one ends with its full time still on it.
A shop boost was bought but nothing started
boosts.as-item, or as-item on that shop entry, hands the boost over as an item instead of starting it. The player right clicks the item when they want it. A right click on a chest, a furnace or a door does not use it up unless the player is sneaking.
A boost lost time over a restart
A clean shutdown costs nothing, since every boost is frozen and its exact time left is written out. A crash costs up to 30 seconds, which is the gap between writes. boosts.pause-while-offline: false makes boosts count down through downtime on purpose.
Placeholder problems
A placeholder shows written out as %something%
Run /corejobs papi %something% in game. It prints the text as you wrote it, what PlaceholderAPI gave back, and whether the identifier is registered, which tells apart a missing PlaceholderAPI, a missing expansion, and a misspelled placeholder. Full walkthrough on Placeholders.
PlaceholderAPI was installed after CoreJobs
No restart needed. CoreJobs looks for PlaceholderAPI again on every line it renders until it finds it, so the placeholders start filling in on their own.
Ranking problems
Nothing posted to Discord
ranking.webhook.enabled must be true and url must be a full webhook URL. Test with /corejobs resetranking confirm, which posts immediately.
The month rolled over at the wrong time
timezone follows the server machine by default. Set a time zone id like Europe/Paris so the rollover matches your calendar.
Everyone shows 0 for last month
Expected on a fresh install until a month has actually rolled over. display.hide-last-month-until-set: true hides the line until then.
Config warnings
A console line about multi-block.connected
Configs written before that key was split still carry it. It was never migrated, so on the first start after updating it is deleted for you and the console says so once. Check connected-up and connected-down hold the blocks you want.
A warning about a shop entry
The console names the entry id and what is wrong: a slot outside the menu, a slot another entry already uses, type: boost with no boost block, a duration of 0, a multiplier of 1 or less, an unknown boost type, or a job that is not in jobs.yml. It warns on every start until the entry is fixed, switched off with enabled: false, or removed. See shop.yml.
A warning about a language line with a placeholder in it
A line in your language file holds a %placeholder% and PlaceholderAPI is not installed, so it reaches players written out. Install PlaceholderAPI or take the placeholder out of the line.
A warning about the time zone
The value is not a time zone the server recognises. The plugin falls back to the system clock. Use a full id like Asia/Kolkata, not a short form like IST.
Still stuck
Grab the console lines with [CoreJobs] in them and bring them to Support. The line right before the problem is usually the useful one.