What goes wrong most often, what it actually means, and what to do about it. Most of these are setup, not faults — and the job says so in the server console. Read the console from the top before opening a ticket, and turn on Config.Debug = true on a test server to see how far an action got before it stopped.
Installation and Access#
"You have renamed the script!" and the console freezes
The folder must be called exactly qs-minerjob. Rename it back, fix the ensure line and restart the server.
The rocks, the furnace or the pickaxe are invisible
miner_props is not running. Make sure the folder is in your resources and ensure miner_props comes before ensure qs-minerjob.
"Illegal mix of collations" or an empty leaderboard
The job aligns its identifier columns to your framework's collation on every start. If the database user is not allowed to ALTER, the console prints the exact statement instead — run it by hand in HeidiSQL and restart:
[qs-minerjob] could not align `qs_miner`.`identifier` to utf8mb4_uca1400_ai_ci (users.identifier uses it).
The leaderboard will fail with "Illegal mix of collations" until it matches. Run by hand:
ALTER TABLE `qs_miner` MODIFY `identifier` varchar(46) COLLATE utf8mb4_uca1400_ai_ci NOT NULL;"The player does not have a level in the database"
The miner's row is loaded when the framework says the character is loaded. If the resource was started after the player joined, or the framework never raised its loaded event, there is no row yet. Have the player reconnect; if it keeps happening, check that es_extended / qb-core start before the job.
"You are not allowed to open that" on /mineradmin
The player has neither command.miner nor group.admin. Ace lines in server.cfg are only read when the server starts — restarting the resource does not pick up a new one. Type the add_ace / add_principal lines in the server console to apply them now. Also check Config.AdminPanel.Enabled.
I changed config.lua and nothing happened
Either the resource has not been restarted, or that setting was saved from /mineradmin and the database value wins. The panel marks it "Changed from the panel"; press Back to the file's value and restart. The console lists saved settings that no longer fit your config:
[qs-minerjob] 2 saved setting(s) no longer fit this config and were ignored: ...I saved in the admin panel and nothing changed
Correct behaviour. Settings take effect on the next restart of the resource — the panel shows a banner while saves are waiting. Only the Events tab acts immediately.
"Could not register the ESX job rows"
The database has no jobs / job_grades tables, or they have a different layout. Add the job by hand with the two statements at the top of [sql]/qs-minerjob.sql. The job's own tables are not affected.
Mining and Pickaxes#
"You are not a miner"
The player's job is not in Config.MinerJob. On QBCore and Qbox, make sure the miner job exists in shared/jobs.lua and the player was given it. To let everyone mine, set Config.RequireJob = false.
"You need to have a pickaxe in your hand"
The pickaxe is on the belt or still in the bag. Use the item, or press Z to bring it to your hand.
Using the pickaxe item does nothing
The item definition is missing its client = { export = 'qs-minerjob.togglePickaxe' } line, or it is not usable. Copy the pickaxe entries again from Inventory Items and restart the inventory.
"You don't have enough level, you have to be level …"
Correct behaviour. Each tier of the mine has its own minimum level in Config.MinesLevels — 1, 3 and 6 by default.
"That ore is busy!"
Someone else is mining that rock. If nobody is, it frees itself when the player who claimed it leaves or gives up.
"This item does not exist: …"
The named item is in the config but not in your inventory's item list. The console says which and where:
[qs-minerjob] blue_diamond is listed in Config.Minerals but no such item exists in the inventory.
[qs-minerjob] diamond_ring is configured as the result of furnace recipe Diamond Ring but no such item exists in the inventory.Add it from Inventory Items. Buying a pickaxe that is not registered fails the same way, and no money is taken.
"Your inventory is full"
The drops did not fit. Raw ore is heavy (150–250 per unit in the shipped lists); sell or smelt some, or lower the weights in your item list. A craft that does not fit hands the materials back.
"You already have a pickaxe"
Correct behaviour — one pickaxe at a time. Use the one you have until it breaks, or destroy it from the shop to buy another.
Rocks on a custom cave map are not found
On large maps where the tiers are far apart, set Config.InstantOreCollection = true: it streams props from 500 m and searches every rock nearby instead of the nearest tier. For the K4MB1 Cave, use the commented positions under each tier and under Config.Locations.
Missions and Crews#
A crew member does not have the level for the mission
Every member has to meet the mission's levelRequired, not only the leader. Pick an easier mission or leave that member out.
"The player is too far away"
Invites need the other player within Config.InviteDistance metres (20). Set it to 0 to invite from anywhere — crew tiles then show initials instead of faces for players out of streaming range.
The mission finished but a member was not paid
That member no longer held a mining job when it completed, or had left the crew. Only current miners are paid. With qs-job-management running, mission money goes through the job's account rather than straight to cash.
"You are already on a mission"
Abandon the current one from the Missions tab first. A script can do the same with exports['qs-minerjob']:ExitJob().
Furnace, Selling and Leaderboards#
A finished smelt gave nothing
A craft is only accepted from a player within 15 m of that furnace, at the recipe's level, with all the materials, and no sooner than 7 seconds after their previous craft. A failed minigame consumes the materials on purpose.
Ore sells for almost nothing
Raw ore ships at $1 a unit. Raise the fifth value of each line in Config.Minerals, or smelt it — jewellery is where the money is.
A leaderboard winner was not paid
Resets run at 00:00 server time — check the server's clock, not yours. Winners who are offline have the prize banked and paid on their next login. Only miners who earned experience that day or season can place.
Rich veins or tournaments never show up
With MinersOnly = true only players holding a mining job see them. Check Enabled and Random.Enabled in each section, and the Schedule times against the server clock. Start one by hand from the Events tab of /mineradmin to test — "Turned off in the settings" means Enabled is false.



