diff --git a/README.md b/README.md index 0ce0c1d..ef31caf 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,43 @@ -# owl_tech +# Owl tech Large tech mod specially developed for Mineclone 2 +*** Mod Features: +* Reworked generation of ores - Now the ores appear in the world in large veins .Each ore vein has its own set of ores, spawn frequency and amount of ore + +* Ore processing system. The higher the level of mechanisms will be used, the more resources will be obtained from the ore - 1)Reworked generation of ores - Now the ores appear in the world in large veins .Each ore vein has its own set of ores, spawn frequency and amount of ore +* Fluid and Energy Transfer System - 2)Ore processing system. The higher the level of mechanisms will be used, the more resources will be obtained from the ore +* Geologist exploration systems from millet hammers that will tell you about the ores around the player - to open pits + +*** +## Ore - 3)Fluid and Energy Transfer System +Do not forget to turn off the generation of ordinary ores in the settingtypes.txt file +on the line mcl_generate_ores (Generate Ores) set instead of true -> falsemcl_generate_ores (Generate Ores) bool false - 4)Geologist exploration systems from millet hammers that will tell you about the ores around the player - to open pits +P.S. +Disabling ores in Mineclone 2 does not work yet(this is a bug and needs to be fixed) +*** +## Metals -Warning - mod in deep development \ No newline at end of file +The mod adds both a large number of metals - copper, tin, silver, and so on, as well as an alloy, for example, electrum, bronze, steel, and so on. + +*** +## Instruments + +Removed original tools except for wood and stone (unless you find them in chests in the world as loot). Now, in order to get metal tools, you need to create them according to new recipes with plates and various additional tools - such as a hammer or a file. + +*** + +## Pipe + +There is a mechanic of transferring liquids (such as water, lava, steam, etc.) through pipes from one mechanism to another. Pipes work on the principle of where there is less liquid there and send the liquid. + +There is a mechanics of item pipes. Item transfer only works with regular chests and mechanisms from the mod itself(WIP) + +*** +Warning - mod in deep development (install it in your game worlds only at your own peril and risk) \ No newline at end of file diff --git a/i3_integration/init.lua b/i3_integration/init.lua index af3e5fd..d7cf820 100644 --- a/i3_integration/init.lua +++ b/i3_integration/init.lua @@ -1,4 +1,5 @@ ----Integration for i3 +---Integration for i3 FORGE_HAMMER_RECIPS= + i3.register_craft_type("alloy_smelter", { description = "Alloy smetler", @@ -15,6 +16,11 @@ i3.register_craft_type("siev", { icon = "owl_tech_sieve_face.png", }) +i3.register_craft_type("forge_hammer", { --SIEV_RESIPS + description = "Forge hammer", + icon = "owl_tech_forge_face.png", +}) + for i, value in pairs(SMELTER_RECIPS) do i3.register_craft { type = "alloy_smelter", @@ -39,4 +45,10 @@ for i, value in pairs(SIEV_RESIPS) do } end - +for i, value in pairs(FORGE_HAMMER_RECIPS) do + i3.register_craft { + type = "forge_hammer", + result = value[3]..' '..value[4], + items = {value[9]..' '..value[1]}, + } +end diff --git a/init.lua b/init.lua index f7151ea..7d2bdbf 100755 --- a/init.lua +++ b/init.lua @@ -9,7 +9,7 @@ dofile(path .. "/api/init.lua") --all base func dofile(path .. "/tools/init.lua") --Tools dofile(path .. "/ore/init.lua") --ore loads dofile(path .. "/debug_tools/init.lua") --debug_tools don.t use in surv game ---dofile(path .. "/xray/init.lua") --xray don.t use in surv game +dofile(path .. "/xray/init.lua") --xray don.t use in surv game dofile(path .. "/steam/init.lua") --main fail about all steam gen dofile(path .. "/pipe/init.lua") --main fail about all pipes dofile(path .. "/custom_recips/init.lua") --main fail about all custom recips diff --git a/lists_of_all.lua b/lists_of_all.lua index 1c37a6b..895177f 100755 --- a/lists_of_all.lua +++ b/lists_of_all.lua @@ -55,4 +55,16 @@ SIEV_RESIPS={ saltpeter_dirt_dust= {(1),(1),("owl_tech:saltpeter_dust"),(2),(ore_duration),(25),("owl_tech:sulfur_dust"),(1),("owl_tech:saltpeter_dirt_dust")}, sulfur_dirt_dust= {(1),(1),("owl_tech:sulfur_dust"),(2),(ore_duration),(25),("owl_tech:saltpeter_dust"),(1),("owl_tech:sulfur_dirt_dust")}, diamond_dirt_dust= {(1),(1),("owl_tech:diamond_dust"),(2),(ore_duration),(25),("owl_tech:diamond_dust"),(1),("owl_tech:diamond_dirt_dust")}, +} +-- key-input_name ----1)input_amount 2)recip_tire 3)output_name 4)output_amount 5)duration(use for 100) 6)seconds_chanse(0-100) 7)output_name_second 8)output_amount_second 9)Input full name +--froge hammer resips +FORGE_HAMMER_RECIPS={ + iron_ingot = {(1),(1),("owl_tech:iron_plate"),(1),(ingot_duration),(0),("none"),(0),("owl_tech:iron_ingot")}, + tin_ingot = {(1),(1),("owl_tech:tin_plate"),(1),(ingot_duration),(0),("none"),(0),("owl_tech:tin_ingot")}, + copper_ingot = {(1),(1),("owl_tech:copper_plate"),(1),(ingot_duration),(0),("none"),(0),("owl_tech:copper_ingot")}, + gold_ingot = {(1),(1),("owl_tech:gold_plate"),(1),(ingot_duration),(0),("none"),(0),("owl_tech:gold_ingot")}, + silver_ingot = {(1),(1),("owl_tech:silver_plate"),(1),(ingot_duration),(0),("none"),(0),("owl_tech:silver_ingot")}, + lead_ingot = {(1),(1),("owl_tech:lead_plate"),(1),(ingot_duration),(0),("none"),(0),("owl_tech:lead_ingot")}, + steal_ingot = {(1),(1),("owl_tech:steal_plate"),(1),(ingot_duration),(0),("none"),(0),("owl_tech:steal_ingot")}, + bronze_ingot = {(1),(1),("owl_tech:bronze_plate"),(1),(ingot_duration),(0),("none"),(0),("owl_tech:bronze_ingot")}, } \ No newline at end of file diff --git a/mashins/steam_machins.lua b/mashins/steam_machins.lua index 15b186c..d6255c6 100755 --- a/mashins/steam_machins.lua +++ b/mashins/steam_machins.lua @@ -33,7 +33,7 @@ end --bronze_macerator" minetest.register_node("owl_tech:bronze_macerator", { description = S("Bronze macerator"), - _doc_items_longdesc = S("Macerate ore in dust"), + _doc_items_longdesc = S("Macerate dust"), tiles = { "(owl_tech_base_meshanism_side.png^[colorize:#a35900:128)", "owl_tech_base_meshanism_side.png^[colorize:#a35900:128", @@ -133,6 +133,16 @@ minetest.register_node("owl_tech:bronze_macerator", { timer:start(0.2) end }) +--Crafte "owl_tech:bronze_macerator" +minetest.register_craft({ + type = "shaped", + output = "owl_tech:bronze_macerator", + recipe = { + {"mcl_core:flint", "mcl_core:flint", "mcl_core:flint"}, + {"owl_tech:bronze_plate","owl_tech:bronze_frames","owl_tech:bronze_plate"}, + {"owl_tech:bronze_plate","owl_tech:bronze_plate","owl_tech:bronze_plate"} + } +}) --alloy smelter local function set_formspect_base_alloy_smelter(meta) local fluid_1_name = owl_tech.get_pull_fluid_name(meta,1) @@ -266,6 +276,16 @@ minetest.register_node("owl_tech:bronze_alloy_smelter", { timer:start(0.2) end }) +--Crafte "owl_tech:bronze_alloy_smelter" +minetest.register_craft({ + type = "shaped", + output ="owl_tech:bronze_alloy_smelter", + recipe = { + {"owl_tech:bronze_plate","owl_tech:bronze_plate","owl_tech:bronze_plate"}, + {"mcl_furnaces:furnace","owl_tech:bronze_frames","mcl_furnaces:furnace"}, + {"owl_tech:bronze_plate","owl_tech:bronze_plate","owl_tech:bronze_plate"} + } +}) ------------------------------------------- --base sieve local function set_formspect_base_sieve(meta) @@ -397,4 +417,144 @@ minetest.register_node("owl_tech:bronze_sieve", { set_formspect_base_sieve(meta) timer:start(0.2) end +}) +--Crafte "owl_tech:bronze_sieve" +minetest.register_craft({ + type = "shaped", + output ="owl_tech:bronze_sieve", + recipe = { + {"mcl_wool:white","mcl_wool:white","mcl_wool:white"}, + {"owl_tech:bronze_plate","owl_tech:bronze_frames","owl_tech:bronze_plate"}, + {"owl_tech:bronze_plate","owl_tech:bronze_plate","owl_tech:bronze_plate"} + } +}) +local function set_formspect_base_sieve(meta) + local fluid_1_name = owl_tech.get_pull_fluid_name(meta,1) + local fluid_1_volume = owl_tech.get_pull_volume(meta,1) + local redines = owl_tech.get_item_redines(meta) + local formspec = "size[9,8.75]".. + "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. + "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. + "label[2.25,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Steam Forge Hammer"))).."]".. + "list[context;input_in;2.5,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.5,2.5,1,1).. + "list[context;dst;5.5,1.5;1,1;]".. + mcl_formspec.get_itemslot_bg(5.5,1.5,1,1).. + "list[context;dst_add;6.5,1.5;1,1;]".. + mcl_formspec.get_itemslot_bg(6.5,1.5,1,1).. + "label[0,1.5;"..minetest.formspec_escape(minetest.colorize("#313131", (fluid_1_name.."--"..fluid_1_volume))).."]".. + "label[0,2;"..minetest.formspec_escape(minetest.colorize("#313131", (redines.." / 100"))).."]".. + "listring[context;dst]".. + "listring[context;dst_add]".. + "listring[current_player;main]".. + "listring[context;input_in]".. + "listring[current_player;main]".. + "listring[current_player;main]" + meta:set_string("formspec", formspec) +end +--froge hammer" +minetest.register_node("owl_tech:bronze_forge_hammer", { + description = S("Bronze forge hammer"), + _doc_items_longdesc = S("Automative forge"), + tiles = { + "(owl_tech_base_meshanism_side.png^[colorize:#a35900:128)", + "owl_tech_base_meshanism_side.png^[colorize:#a35900:128", + "owl_tech_base_meshanism_side.png^[colorize:#a35900:128", + "owl_tech_base_meshanism_side.png^[colorize:#a35900:128", + "owl_tech_base_meshanism_side.png^[colorize:#a35900:128", + "(owl_tech_base_meshanism_side.png^[colorize:#a35900:128)^owl_tech_forge_face.png", + }, + is_ground_content = false, + stack_max = 64, + groups = {pickaxey=2, owl_tech_machine=1}, + sounds = mcl_sounds.node_sound_metal_defaults(), + paramtype2 = "facedir", + _mcl_blast_resistance = 6, + _mcl_hardness = 5, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + owl_tech.add_new_pull(meta,8000,1,0) --steam eat 25 steam in 1 tick + owl_tech.set_pull_fluid_whitlist(meta,1,"owl_tech_steam")--whitlist for make and output ONLY Steam + owl_tech.set_mashine_tire(meta,1) --all steam mishine has 1 tire + owl_tech.reset_item_redines(meta) + set_formspect_base_sieve(meta) + owl_tech.update_fluid_pipe_around(pos) + local timer =minetest.get_node_timer(pos) + local inv = meta:get_inventory() + inv:set_size("input_in", 1) + inv:set_size("dst", 1) + inv:set_size("dst_add", 1) + timer:start(0.2) + end, + on_timer = function(pos, elapsed) + local timer = minetest.get_node_timer(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local input_its = inv:get_stack('input_in', 1) + local dst_its = inv:get_stack('dst', 1) + local dst_add_its = inv:get_stack('dst_add', 1) + if not input_its:is_empty() then -- chek for item in slots + local name= string.sub(input_its:get_name(), 10) + if FORGE_HAMMER_RECIPS[name]~=nil and owl_tech.get_item_redines(meta)>0 and owl_tech.get_item_redines(meta)<100 then --recipt real + if owl_tech.can_recips_go_in_this_mashien(meta,name,dst_its,dst_add_its) then-- chek for all itemslot and machine tire + local amount=owl_tech.calculate_recipe_tire_bonus(meta,FORGE_HAMMER_RECIPS[name][2],FORGE_HAMMER_RECIPS[name][5]) + local steam_new =owl_tech.get_pull_volume(meta,1)-25 + owl_tech.set_pull_volume(meta,1,steam_new) + owl_tech.add_item_redines(meta,amount) + end + elseif FORGE_HAMMER_RECIPS[name]~=nil and owl_tech.get_item_redines(meta)>=100 then + if owl_tech.can_recips_go_in_this_mashien(meta,name,dst_its,dst_add_its) then-- chek for all itemslot and machine tire + + input_its:set_count(input_its:get_count()-1) --Remove item from input slot + inv:set_stack('input_in', 1, input_its) + + if not dst_its:is_empty() then-- Add main output + dst_its:set_count(dst_its:get_count()+FORGE_HAMMER_RECIPS[name][4]) + inv:set_stack('dst', 1, dst_its) + else + local item ={name=FORGE_HAMMER_RECIPS[name][3], count=FORGE_HAMMER_RECIPS[name][4], wear=0, metadata=""} + dst_its:add_item(item) + inv:set_stack('dst', 1, dst_its) + end + + local random = math.random(1,100) --chans to get second output + if FORGE_HAMMER_RECIPS[name][6]>random then-- Add second output if has + if not dst_add_its:is_empty() then + dst_add_its:set_count(dst_add_its:get_count()+FORGE_HAMMER_RECIPS[name][8]) + inv:set_stack('dst_add', 1, dst_add_its) + else + local item ={name=FORGE_HAMMER_RECIPS[name][7], count=FORGE_HAMMER_RECIPS[name][8], wear=0, metadata=""} + dst_add_its:add_item(item) + inv:set_stack('dst_add', 1, dst_add_its) + end + end + local steam_new =owl_tech.get_pull_volume(meta,1)-25 + owl_tech.set_pull_volume(meta,1,steam_new) + owl_tech.reset_item_redines(meta) + end + elseif FORGE_HAMMER_RECIPS[name]~=nil and 100/FORGE_HAMMER_RECIPS[name][5]*25<= owl_tech.get_pull_volume(meta,1) and owl_tech.get_item_redines(meta)==0 then --begin for work + local amount=owl_tech.calculate_recipe_tire_bonus(meta,FORGE_HAMMER_RECIPS[name][2],FORGE_HAMMER_RECIPS[name][5]) + local steam_new =owl_tech.get_pull_volume(meta,1)-25 + owl_tech.set_pull_volume(meta,1,steam_new) + owl_tech.add_item_redines(meta,amount) + end + else + owl_tech.reset_item_redines(meta) + end + if minetest.get_item_group((minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})).name,"fluid_pipe") then --get from pipe steam + local meta_up = minetest.get_meta({x=pos.x,y=pos.y-1,z=pos.z}) + local can_do ,inde_pull =owl_tech.test_add_fluid_in_any_pulls(meta,"owl_tech_steam",owl_tech.get_fluid_sand_in_tick(meta)) + local can_do2 ,inde_pull_2 , remove_amount =owl_tech.test_remove_fluid_in_any_pulls(meta_up,"owl_tech_steam",owl_tech.get_fluid_sand_in_tick(meta_up)) + if can_do and can_do2 then + owl_tech.add_fluid_in_node_pull(meta,"owl_tech_steam",remove_amount,inde_pull) + owl_tech.remove_fluid_in_node_pull(meta_up,remove_amount,inde_pull) + end + end + owl_tech.delit_name_fluid_if_0(meta) + set_formspect_base_sieve(meta) + timer:start(0.2) + end }) \ No newline at end of file diff --git a/mashins/vertical_miner.lua b/mashins/vertical_miner.lua index 3c71873..a40ee38 100644 --- a/mashins/vertical_miner.lua +++ b/mashins/vertical_miner.lua @@ -78,4 +78,14 @@ minetest.register_node("owl_tech:steam_vertical_miner", { on_destruct = function(pos) owl_tech.remove_all_pipe_vertical(pos) end +}) +--Crafte "owl_tech:steam_vertical_miner", +minetest.register_craft({ + type = "shaped", + output ="owl_tech:steam_vertical_miner", + recipe = { + {"owl_tech:bronze_plate","owl_tech:bronze_plate","owl_tech:bronze_plate"}, + {"owl_tech:bronze_plate","owl_tech:bronze_frames","owl_tech:bronze_plate"}, + {"owl_tech:iron_item_pipe_input","owl_tech:bronze_fluid_pipe","owl_tech:iron_item_pipe_input"} + } }) \ No newline at end of file diff --git a/ore/node_register.lua b/ore/node_register.lua index c910484..8259e21 100755 --- a/ore/node_register.lua +++ b/ore/node_register.lua @@ -109,6 +109,7 @@ local metals_ore_array={ {"lead","Lead ",true,3,"#9092ab",62,true}, {"steal","Steal ",false,3,"#575757",300,false}, {"bronze","Bronze ",false,3,"#a35900",200,true}, + {"electrum","Electrum ",false,2,"#fffd73",55,true}, } --make metals ALL for i, value in ipairs(metals_ore_array) do @@ -687,8 +688,14 @@ end ----------------------------------------------------------------------------------- --Some custom recips --Crafte bronze dust from copper and tin - minetest.register_craft({ - type = "shapeless", - output = "owl_tech:bronze_dust 3", - recipe = {"owl_tech:copper_dust","owl_tech:copper_dust","owl_tech:copper_dust","owl_tech:tin_dust"} - }) \ No newline at end of file +minetest.register_craft({ + type = "shapeless", + output = "owl_tech:bronze_dust 3", + recipe = {"owl_tech:copper_dust","owl_tech:copper_dust","owl_tech:copper_dust","owl_tech:tin_dust"} +}) +--Crafte electrum from gold and silver +minetest.register_craft({ + type = "shapeless", + output = "owl_tech:electrum_dust 3", + recipe = {"owl_tech:gold_dust","owl_tech:gold_dust","owl_tech:silver_dust","owl_tech:silver_dust"} +}) \ No newline at end of file diff --git a/textures/owl_tech_wrench.png b/textures/owl_tech_wrench.png new file mode 100644 index 0000000..7ef67d6 Binary files /dev/null and b/textures/owl_tech_wrench.png differ diff --git a/tools/init.lua b/tools/init.lua index 0fdef31..cd38e36 100644 --- a/tools/init.lua +++ b/tools/init.lua @@ -3,7 +3,6 @@ local S = minetest.get_translator(minetest.get_current_modname()) local name = minetest.get_current_modname() local path = minetest.get_modpath(name) ---owl_tech_work_hammer_head.png owl_tech_hoe_stick.png --Work hammer minetest.register_craftitem("owl_tech:work_hammer", { description = S("Work hammer"), @@ -47,7 +46,7 @@ minetest.register_craftitem("owl_tech:work_mortar", { inventory_image = "owl_tech_mortar.png", stack_max = 1, groups = { craftitem = 1 }, -}) --"mcl_core:stone" +}) --Crafte worlk file minetest.register_craft({ type = "shaped", @@ -57,4 +56,22 @@ minetest.register_craft({ {"mcl_core:stone","owl_tech:iron_ingot","mcl_core:stone"}, {"mcl_core:stone","mcl_core:stick","mcl_core:stone"} } +}) +--Work mortar +minetest.register_craftitem("owl_tech:wrench", { + description = S("Wrench"), + _doc_items_longdesc = S("Use for crafte and some confige machins"), + inventory_image = "owl_tech_wrench.png", + stack_max = 1, + groups = { craftitem = 1,hand_wrench=1}, +}) +--Crafte wrench +minetest.register_craft({ + type = "shaped", + output = "owl_tech:work_mortar", + recipe = { + {"owl_tech:iron_ingot","","owl_tech:iron_ingot"}, + {"owl_tech:iron_ingot","owl_tech:iron_ingot","owl_tech:iron_ingot"}, + {"","owl_tech:iron_ingot",""} + } }) \ No newline at end of file