z_mirror/CursorEnhancements
git clone https://git.raiguard.me/z_mirror/CursorEnhancements
b4a035a
smart-quickbar
1local util =require ( "__CursorEnhancements__/scripts/util" ) 2 3local crafting_controllers ={ 4[ defines . controllers . character ] =true , 5[ defines . controllers . god ] =true , 6} 7 8--- @param e EventData.CustomInputEvent 9local function on_quick_craft ( e ) 10local player =game . get_player ( e . player_index ) 11if not player then 12return 13end 14 15if not crafting_controllers [ player . controller_type ] then 16return 17end 18 19local selected =e . selected_prototype 20if not selected then 21return 22end 23 24if selected . base_type == "entity" and selected . name == "entity-ghost" then 25-- Get ghost entity name 26local real_selected =player . selected 27if not real_selected or real_selected . name ~= "entity-ghost" then 28return 29end 30selected . name =real_selected . ghost_name 31end 32 33local recipes =util . get_selected_recipes ( selected ) 34if not recipes then 35return 36end 37 38for _ , recipe in pairs ( recipes ) do 39local craftable_count =player . cheat_mode and math . huge or player . get_craftable_count ( recipe . name ) --[[@as uint]] 40if craftable_count == 0 then 41goto continue 42end 43local main_product =recipe . main_product or recipe . products [ 1 ] 44if not main_product then 45goto continue 46end 47local craft_count_setting =player . mod_settings [ "cen-quick-craft-count" ]. value --[[@as uint]] 48local craft_count =math . min ( craftable_count , math . ceil ( craft_count_setting / main_product . amount ) --[[@as uint]] ) 49player . begin_crafting ( { recipe =recipe . name , count =craft_count } ) 50-- Language server and formatter don't like a label after break... 51do 52break 53end 54:: continue :: 55end 56end 57 58local quick_craft ={} 59 60quick_craft . events ={ 61[ "cen-quick-craft" ] =on_quick_craft , 62} 63 64return quick_craft