⛏️ Multiplayer Tunnel Miner Job – Procedural Tunnel Generation

A script by Freamee

No reviews yet.
⛏️ Multiplayer Tunnel Miner Job – Procedural Tunnel Generation main image

Price

Unknown

Full Description

:pick: Miner Job – Procedural Tunnel Generation

The Miner resource provides a fully modular, realistic mining experience for FiveM servers.
It features custom ore models, a detailed interior mine, working rail and cart systems, and equipment mechanics designed to create an immersive and scalable mining economy.

Built for performance, modularity, and roleplay immersion, this system seamlessly integrates into any economy or progression-based gameplay.


Links

Purchase
Video (intro & raw gameplay)

Please note that the video may not accurately represent the latest version of the script, as ongoing updates and changes are made. (Additional sound effects, etc.)

Dependency

  • Ox - MySQL

Performance

If you are not inside any mine, the resource will only run one tick, which is basically searching for the closest mine entrance(s).

If you are inside the mine, it will have many threads run simultanesly, so resmon will surely raise, which we think is fine, considering that everything is rendering (smooth texts, progress bars, locomotive&minecarts calculation, etc…)

:framed_picture: Images















:nut_and_bolt: Key Features

  • :door: Entering the mine – you can enter the mine via the MineCenter, or you can also place the mines into world coordinates (but we have not found any right place to spawn them, so we made the MineCenter, where you can enter any mine via UI)
  • :rock: Custom models – Minecart, Locomotive, Sorting machine, animated entities, ores and many others.
  • :hut: Custom Mine Interior – fully instanced environment with expandable tunnel grids
  • :loud_sound: Custom native sounds – +15 custom native sound effect. (PlaySoundFromEntity)
  • :package: Storage – where you can store your ores (without limit, we found that limiting this storage, makes hard to keep track what to pickup, etc.)
  • :tshirt: Wardrobe – to apply proper clothes (you can disable this entirely if you want)
  • :steam_locomotive: Rail & Cart System – dynamic rail connections, locomotive, and functional minecarts
  • :pick: Equipment System – helmets with real working lights (directional from your headbob), pickaxe(s)
  • :shopping_cart: Mining Shop – buy tools, and mining-related equipment (Minecart, and others…)
  • :memo: Permission System – to add players with different permissions (handle storage, change lock, mine, etc.)
  • :gear: Server–Client Synchronization – optimized state management using RPC and event-driven logic
  • :gem: Ore Generation – you can easily customize ore dropChance generation for your server economy fit
  • :hammer: Easy localization – locale files through .json
  • :repeat: Others – many others which are not mentioned here…

:rock: Basic Workflow

  1. Rent a mine
  2. Go to the wardrobe and change clothes (if enabled)
  3. Pickup pickaxe & helmet (if enabled)
  4. Go to the mine tunnels and start mining
  5. Collect the dropped ore(s) and put them inside the minecart
  6. Drive back the locomotive to the sorting machine
  7. Startup the sorting machine, and empty the minecart
  8. Wait for the ores to be sorted, after sorting you will have the ores in your storage
    Smeltery
  9. Pickup the storage and empty it into the specific furnace
  10. Startup the furnace, wait for it to reach the required temperature then cast the ingot
  11. Take the ingot from the furnace

Gems like Diamond, Ruby and others are also collected inside the storage container, but you do not have to repeat the smeltery progress, you receive them instantly after interacting with the storage.

:station: Tunnel system

There are no pre-built passages; you create everything yourself. You can blast passages to the right and left, but not backwards, so it is not possible for four adjacent passages to meet. There is a reason for this, as it would create interesting anomalies in the rail system. But the size of the mine is still almost infinite, and based on our current calculations, it would take approximately 4000-5000 hours to completely “exhaust” a mine.

:rock: Ore System

Each ore has a different dropChance, in addition, you can add unique items to the table, so if the system generates diamond ore or anything else, it can also add any item you like to your inventory alongside the ore, which is easily customizable.

  • Some ores (like iron, copper, gold) require smelting in a furnace before they can be used or sold
  • Gems (like diamond, ruby, sapphire) are added directly to the player’s inventory upon mining

:steam_locomotive: Rail & Locomotive System

A full in-mine transportation network with animated locomotives and minecarts running along dynamically generated rails.

Includes:

  • Procedural rail layout and connections
  • Working locomotives with controllable speed (gear)
  • Custom networked synchronization between players (with interpolation)

:fire: Refinery

A built-in smelting and refining module for processing raw ores.
Players can smelt metals such as iron, gold, copper, nickel, …others

Features:

  • Fuel management
  • Different temperature requirement for metals
  • Custom animated particle effects when casting the ore

:gear: Exports

Export name Description Parameters Returns
insertMine Creates a new mine at your position x:number, y:number, z:number, price:number, name:string Promise
removeMine Removes a mine id:number Promise
resetMine Resets the mine (carts, owner, etc.) id:number Promise
setPickaxeState Sets the pickaxe state for a player (if custom inventory) source:number, state:boolean void
setHelmetState Sets the helmet state for a player (if custom inventory) source:number, state:boolean void

:gear: Events

Event name Description Parameters
onEnterMine Triggered when player enter the mine source:number, mineId:number
onLeaveMine Triggered when player left the mine source:number, mineId:number
onMineRentExpired Triggered when mine rent is expired mineId:number
onMineRented Triggered when mine was just rented source:number, mineId:number, days:number
onMineRentRenewal Triggered when mine rent was renewed source:number, mineId:number, days:number
onHitCell Triggered when player hits a cell (tunnel block) source:number

:gear: Install

  1. Download, you will have 4 different folders. (props, interior, sounds, script)
  2. Put all of them in one folder, like [aquiver-miner]
  3. Import the .sql file into your database
  4. Inside the bridge folder, modify the functions to fit your framework functions. (Inventory, etc.)
  5. data folder contains additional configs, locales
  6. We have convar setup, you can chance some basic config with it and also the language. (See config inside fxmanifest.lua)
  7. start aquiver-mining-script

Important file locations

  • Ore dropChance, loot data/ores.json
  • Shop costs data/shop.json
  • Locale files data/locales/*.json

Changing language

Type setr miner_Language en and enter to the server console.

If you have any error during start, like NPM yelling at you that some modules are missing then, open the aquiver-mining-script with a terminal, and type npm install, this should install all of the required packages.

:gear: Integration

The system is designed to work seamlessly with any framework or custom economy.
All modules communicate through clean exports. (addInventoryItem, etc.) You have to set these up for yourself if you have a custom inventory or framework.

Resource is built around dependency injection with tsyringe (typescript).


Code is accessible Open-source will be available later
Subscription-based No
Lines (approximately) ~10,000
Requirements None
Support Not good (review), but we have