Installation
Overview
ML Crafting is a workbench crafting system where the menu renders on a screen attached to the bench, in the world, players walk up and click through it like a terminal. Stations, recipes, categories and blueprints are all created from an in-game admin panel and stored in the database, so there is nothing to predefine in config files. Recipes support interchangeable OR-ingredients, skill gating, blueprints, timed queues, and benches can burn fuel and wear down.
Quick Start
- Download from the CFX Portal
- Extract to your
resourcesfolder asml_crafting - Add to
server.cfg:
1ensure oxmysql
2ensure ox_lib
3ensure ml_bridge
4ensure ml_craftingml_crafting must start AFTER ml_bridge. If you use ml_skills or ml_fuel, start them before it as well. The resource folder must keep the exact name ml_crafting.
Database
All tables are created automatically on first start. No manual SQL import is needed.
ml_crafting_bench_types/ml_crafting_bench_type_access/ml_crafting_bench_type_categories: Workstation definitions, their access lists and allowed categoriesml_crafting_bench_locations: Every placed bench, coordinates, owner, per-bench camera and interact point, portable flagml_crafting_categories/ml_crafting_color_presets: Recipe categories and the editor color paletteml_crafting_recipes/ml_crafting_recipe_ingredients/ml_crafting_recipe_results/ml_crafting_recipe_blueprints: Recipes with their ingredients, results and blueprint requirementsml_crafting_blueprints/ml_crafting_blueprint_uses: Blueprint definitions and per-player remaining usesml_crafting_players/ml_crafting_xp_log: Player progression, permanent blueprint unlocks, awarded-XP ledgerml_crafting_queue/ml_crafting_pending_refunds: Active and ready crafts, plus refunds delivered on next login when an inventory was fullml_crafting_station_models/ml_crafting_default_interact/ml_crafting_migrations: Custom station models from the model builder, the saved default interact point, schema migration markers
_INSTALL/drop_old_tables.sql drops every ml_crafting table. Run it only if you want to wipe the install and start clean, the schema is recreated on the next start.
Item Registration
There is no fixed item list, register in your inventory the items you actually use:
ml_workstation: Generic placeable station item (Config.PortableStations.GenericItemName). The bench type comes frommetadata.stationType. Alternatively, bind a dedicated item per bench type in the admin panelml_blueprint: Generic blueprint item (Config.Blueprints.GenericItemName) carryingmetadata.blueprint, or one item per blueprint namedblueprint_<label>- Every ingredient and result item referenced by your recipes must exist in your inventory. The recipe editor lists registered items, so typos are hard to make
Verify
After the database initializes, the server console prints the startup banner:
1[ml_crafting] Resource started
2[ml_crafting] Developed by Micio Mods | miciomods.itIn game, run /craftadmin with a staff account to open the editor, create a bench type, and place a first bench. It appears for everyone immediately.
- Admin command does nothing: Your account does not pass the
Config.Admin.Permissiongroup check (orAcePermissionif set). The denied attempt is logged to the exploit webhook - Bench prop not visible: Benches spawn within
Config.Interaction.SpawnDistance. If a bench was just created remotely, walkConfig.Stream.ReloadDistancemeters or relog to refresh the area cache - Screen stays black: Content renders within
Config.DUI.Rangeof the bench and at mostConfig.DUI.MaxActivescreens run at once. Check the F8 console withConfig.Debug = true - Recipes not visible to players:
Config.Recipes.HideUnavailableandHideMissingBlueprinthide what cannot be crafted. SetShowLockedPreview = trueto show locked entries - No XP awarded: The console prints a yellow
[ml_crafting][XP]warning when no ml_skills category could be resolved, bind a required skill on the recipe or map the category inConfig.ExternalSkills.Mapping - Portable station item does nothing: The item must be registered as usable in your inventory and carry
metadata.stationType. On inventories without metadata support, the console prints an INFO line and stations fall back to default values