From c79ee075cf677b9dea67768ef49888a6025bb806 Mon Sep 17 00:00:00 2001 From: ConfidentOwl Date: Fri, 17 Feb 2023 21:43:22 +0300 Subject: [PATCH] Energy eat fix --- api/farming.lua | 91 ++++++++++++++++++++++++++++++------- mashins/electro_machins.lua | 16 ++----- ore/node_register.lua | 4 +- 3 files changed, 82 insertions(+), 29 deletions(-) diff --git a/api/farming.lua b/api/farming.lua index 5051926..04f52ce 100644 --- a/api/farming.lua +++ b/api/farming.lua @@ -47,7 +47,7 @@ function owl_tech.prepear_for_sapling_plant(pos,distance) end ----------------------------------------------- --looking for new sapling -function owl_tech.look_for_place_new_sapling(pos) +function owl_tech.look_for_place_new_sapling(pos,meta) local meta= minetest.get_meta(pos) local inv = meta:get_inventory() local fluid_its = inv:get_stack('it_sapling', 1) @@ -60,6 +60,8 @@ function owl_tech.look_for_place_new_sapling(pos) local fluid_its = inv:get_stack('it_sapling', 1) fluid_its:set_count(fluid_its:get_count()-1) inv:set_stack('it_sapling', 1, fluid_its) + local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 + owl_tech:set_charge(meta,steam_new) return -- plant 1 plant for each( if plant vore - hase bug1) end end @@ -67,7 +69,7 @@ function owl_tech.look_for_place_new_sapling(pos) end ------------------------------------------------ --get wood or leavs in slot -function owl_tech.get_wood_or_leaves(pos,inv,wood_its,leaves_its) +function owl_tech.get_wood_or_leaves(pos,inv,wood_its,leaves_its,meta) if owl_tech.is_wood_in_pos(pos) and (minetest.get_node(pos).name== wood_its:get_name() or wood_its:is_empty()) and wood_its:get_count()<64 then @@ -81,6 +83,8 @@ function owl_tech.get_wood_or_leaves(pos,inv,wood_its,leaves_its) inv:set_stack('wood', 1, wood_its) end minetest.remove_node(pos) + local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 + owl_tech:set_charge(meta,steam_new) end if owl_tech.is_leaf_in_pos(pos) and( minetest.get_node(pos).name== leaves_its:get_name() or leaves_its:is_empty()) @@ -95,11 +99,13 @@ function owl_tech.get_wood_or_leaves(pos,inv,wood_its,leaves_its) inv:set_stack('leaves', 1, leaves_its) end minetest.remove_node(pos) + local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 + owl_tech:set_charge(meta,steam_new) end end ------------------------------------------------ --looking fop trees -function owl_tech:look_for_trees(pos) +function owl_tech:look_for_trees(pos,meta) local meta =minetest.get_meta(pos) local inv = meta:get_inventory() local wood_its = inv:get_stack('wood', 1) @@ -110,7 +116,7 @@ function owl_tech:look_for_trees(pos) for i = (meta:get_int("distance")*-1), meta:get_int("distance"), 1 do--x for j = 1,(meta:get_int("distance")*2)+1, 1 do--z for k = 32,0, -1 do--y - owl_tech.get_wood_or_leaves({x=pos.x+i,y=pos.y+k,z=pos.z-j},inv,wood_its,leaves_its) + owl_tech.get_wood_or_leaves({x=pos.x+i,y=pos.y+k,z=pos.z-j},inv,wood_its,leaves_its,meta) end end end @@ -119,7 +125,7 @@ function owl_tech:look_for_trees(pos) for i = (meta:get_int("distance")*-1), meta:get_int("distance"), 1 do--x for j = 1,(meta:get_int("distance")*2)+1, 1 do--z for k =32,0, -1 do--y - owl_tech.get_wood_or_leaves({x=pos.x+i,y=pos.y+k,z=pos.z+j},inv,wood_its,leaves_its) + owl_tech.get_wood_or_leaves({x=pos.x+i,y=pos.y+k,z=pos.z+j},inv,wood_its,leaves_its,meta) end end end @@ -128,7 +134,7 @@ function owl_tech:look_for_trees(pos) for i = 1,(meta:get_int("distance")*2)+1, 1 do--x for j = (meta:get_int("distance")*-1), meta:get_int("distance"), 1 do--z for k = 32 ,0, -1 do--y - owl_tech.get_wood_or_leaves({x=pos.x+i,y=pos.y+k,z=pos.z+j},inv,wood_its,leaves_its) + owl_tech.get_wood_or_leaves({x=pos.x+i,y=pos.y+k,z=pos.z+j},inv,wood_its,leaves_its,meta) end end end @@ -137,7 +143,7 @@ function owl_tech:look_for_trees(pos) for i = 1,(meta:get_int("distance")*2)+1, 1 do--x for j = (meta:get_int("distance")*-1), meta:get_int("distance"), 1 do--z for k = 32,0,-1 do--y - owl_tech.get_wood_or_leaves({x=pos.x+i,y=pos.y+k,z=pos.z+j},inv,wood_its,leaves_its) + owl_tech.get_wood_or_leaves({x=pos.x+i,y=pos.y+k,z=pos.z+j},inv,wood_its,leaves_its,meta) end end end @@ -146,7 +152,7 @@ function owl_tech:look_for_trees(pos) end ------------------------------------------------------------- --Look for pos to plant -function owl_tech:look_for_place_new_sids(pos) +function owl_tech:look_for_place_new_sids(pos,meta) local meta= minetest.get_meta(pos) local inv = meta:get_inventory() local fluid_its = inv:get_stack('it_sapling', 1) -- @@ -160,6 +166,8 @@ function owl_tech:look_for_place_new_sids(pos) local fluid_its = inv:get_stack('it_sapling', 1) fluid_its:set_count(fluid_its:get_count()-1) inv:set_stack('it_sapling', 1, fluid_its) + local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 + owl_tech:set_charge(meta,steam_new) return -- plant 1 plant for each( if plant vore - hase bug1) end end @@ -167,28 +175,77 @@ function owl_tech:look_for_place_new_sids(pos) end ----------------------------------------------------------------- --Get redy plant in pos -function owl_tech:get_ready_plant_in_pos(pos,inv)--ready_to_harvest +function owl_tech:get_ready_plant_in_pos(pos,inv,meta)--ready_to_harvest local wood_its = inv:get_stack('wood', 1) local leaves_its = inv:get_stack('leaves', 1) local vanila_plants= {"wheat","beetroot","potato"} local crop_node=minetest.get_node(pos) for i = 1, #vanila_plants, 1 do if minetest.get_node(pos).name ==vanila_plants[i] then - local cut_wood = owl_tech.get_node_drop(crop_node.name,"toolname") if ( cut_wood== wood_its:get_name() or wood_its:is_empty()) and wood_its:get_count()<64 then if not wood_its:is_empty() then-- Add main output wood_its:set_count(wood_its:get_count()+1) inv:set_stack('wood', 1, wood_its) - minetest.remove_node(pos) else local item ={name=cut_wood, count=1, wear=0, metadata=""} wood_its:add_item(item) inv:set_stack('wood', 1, wood_its) + end + local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 + owl_tech:set_charge(meta,steam_new) + minetest.remove_node(pos) + end + if minetest.get_node(pos).name== "wheat"then + if ("mcl_farming:wheat_item"== leaves_its:get_name() or leaves_its:is_empty()) + and leaves_its:get_count()+1<=64 then + if not leaves_its:is_empty() then-- Add main output + leaves_its:set_count(leaves_its:get_count()+1) + inv:set_stack('leaves', 1, leaves_its) + else + local item ={name="mcl_farming:wheat_item", count=1, wear=0, metadata=""} + leaves_its:add_item(item) + inv:set_stack('leaves', 1, leaves_its) + end + local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 + owl_tech:set_charge(meta,steam_new) minetest.remove_node(pos) end end + if minetest.get_node(pos).name== "beetroot" then + if ("mcl_farming:beetroot_item"== leaves_its:get_name() or leaves_its:is_empty()) + and leaves_its:get_count()+1<=64 then + if not leaves_its:is_empty() then-- Add main output + leaves_its:set_count(leaves_its:get_count()+1) + inv:set_stack('leaves', 1, leaves_its) + else + local item ={name="mcl_farming:beetroot_item", count=1, wear=0, metadata=""} + leaves_its:add_item(item) + inv:set_stack('leaves', 1, leaves_its) + end + local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 + owl_tech:set_charge(meta,steam_new) + minetest.remove_node(pos) + end + end + if minetest.get_node(pos).name== "potato" then + if ("mcl_farming:potato_item"== leaves_its:get_name() or leaves_its:is_empty()) + and leaves_its:get_count()+1<=64 then + if not leaves_its:is_empty() then-- Add main output + leaves_its:set_count(leaves_its:get_count()+1) + inv:set_stack('leaves', 1, leaves_its) + else + local item ={name="mcl_farming:potato_item", count=1, wear=0, metadata=""} + leaves_its:add_item(item) + inv:set_stack('leaves', 1, leaves_its) + end + minetest.remove_node(pos) + local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 + owl_tech:set_charge(meta,steam_new) + end + end + minetest.remove_node(pos) @@ -227,13 +284,15 @@ function owl_tech:get_ready_plant_in_pos(pos,inv)--ready_to_harvest inv:set_stack('leaves', 1, leaves_its) end minetest.remove_node(pos) + local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 + owl_tech:set_charge(meta,steam_new) end minetest.remove_node(pos) end end ------------------------------------------------------------------ --look for plants -function owl_tech:look_for_plants(pos) +function owl_tech:look_for_plants(pos,meta) local meta =minetest.get_meta(pos) local inv = meta:get_inventory() local wood_its = inv:get_stack('wood', 1) @@ -243,28 +302,28 @@ function owl_tech:look_for_plants(pos) if rotation==0 then --z-1 for i = (meta:get_int("distance")*-1), meta:get_int("distance"), 1 do--x for j = 1,(meta:get_int("distance")*2)+1, 1 do--z - owl_tech:get_ready_plant_in_pos({x=pos.x+i,y=pos.y,z=pos.z-j},inv) + owl_tech:get_ready_plant_in_pos({x=pos.x+i,y=pos.y,z=pos.z-j},inv,meta) end end end if rotation==2 then --z+1 for i = (meta:get_int("distance")*-1), meta:get_int("distance"), 1 do--x for j = 1,(meta:get_int("distance")*2)+1, 1 do--z - owl_tech:get_ready_plant_in_pos({x=pos.x+i,y=pos.y,z=pos.z+j},inv) + owl_tech:get_ready_plant_in_pos({x=pos.x+i,y=pos.y,z=pos.z+j},inv,meta) end end end if rotation==3 then --x-1 for i = 1,(meta:get_int("distance")*2)+1, 1 do--x for j = (meta:get_int("distance")*-1), meta:get_int("distance"), 1 do--z - owl_tech:get_ready_plant_in_pos({x=pos.x+i,y=pos.y,z=pos.z+j},inv) + owl_tech:get_ready_plant_in_pos({x=pos.x+i,y=pos.y,z=pos.z+j},inv,meta) end end end if rotation==1 then --x+1 for i = 1,(meta:get_int("distance")*2)+1, 1 do--x for j = (meta:get_int("distance")*-1), meta:get_int("distance"), 1 do--z - owl_tech:get_ready_plant_in_pos({x=pos.x-i,y=pos.y,z=pos.z-j},inv) + owl_tech:get_ready_plant_in_pos({x=pos.x-i,y=pos.y,z=pos.z-j},inv,meta) end end end diff --git a/mashins/electro_machins.lua b/mashins/electro_machins.lua index 529da04..1d831cf 100644 --- a/mashins/electro_machins.lua +++ b/mashins/electro_machins.lua @@ -940,11 +940,9 @@ for i = 1, #table_all_machines, 1 do local timer = minetest.get_node_timer(pos) local inv = meta:get_inventory() local fluid_its = inv:get_stack('it_sapling', 1) - if meta:get_int("work_delay")==0 and owl_tech:get_charge(meta)>=owl_tech:get_voltage(meta) + if meta:get_int("work_delay")==0 and owl_tech:get_charge(meta)>=owl_tech:get_voltage(meta)/16 and minetest.get_item_group((fluid_its:get_name()),"sapling")>0 then - local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta) - owl_tech:set_charge(meta,steam_new) - owl_tech.look_for_place_new_sapling(pos) + owl_tech.look_for_place_new_sapling(pos,meta) meta:set_int("work_delay",table_all_machines[i][14]) end if meta:get_int("work_delay")>0 then @@ -1034,7 +1032,7 @@ for i = 1, #table_all_machines, 1 do if owl_tech:get_charge(meta)>=(owl_tech:get_voltage(meta)/16 ) then local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 owl_tech:set_charge(meta,steam_new) - owl_tech:look_for_trees(pos) + owl_tech:look_for_trees(pos,meta) end if minetest.get_item_group((minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})).name,"owl_tech_electro_wire")>0 and owl_tech:get_charge_max(meta)-owl_tech:get_charge(meta)>=owl_tech:get_voltage(meta) then --get from wire electro @@ -1118,11 +1116,9 @@ for i = 1, #table_all_machines, 1 do local fluid_its = inv:get_stack('it_sapling', 1) local name_seed =string.gsub(fluid_its:get_name(),"owl_tech:","") name_seed = string.gsub(name_seed,"mcl_farming:","") - if meta:get_int("work_delay")==0 and owl_tech:get_charge(meta)>=owl_tech:get_voltage(meta) + if meta:get_int("work_delay")==0 and owl_tech:get_charge(meta)>=owl_tech:get_voltage(meta)/16 and CROPS_VALID[name_seed]~=nil and CROPS_VALID[name_seed]~="" then - local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta) - owl_tech:set_charge(meta,steam_new) - owl_tech:look_for_place_new_sids(pos) + owl_tech:look_for_place_new_sids(pos,meta) meta:set_int("work_delay",table_all_machines[i][14]) end if meta:get_int("work_delay")>0 then @@ -1210,8 +1206,6 @@ for i = 1, #table_all_machines, 1 do local meta = minetest.get_meta(pos) local timer = minetest.get_node_timer(pos) if owl_tech:get_charge(meta)>=(owl_tech:get_voltage(meta)/16 ) then - local steam_new =owl_tech:get_charge(meta)-owl_tech:get_voltage(meta)/16 - owl_tech:set_charge(meta,steam_new) owl_tech:look_for_plants(pos) end if minetest.get_item_group((minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})).name,"owl_tech_electro_wire")>0 diff --git a/ore/node_register.lua b/ore/node_register.lua index 0c9ce6d..fa63ca5 100755 --- a/ore/node_register.lua +++ b/ore/node_register.lua @@ -1065,7 +1065,7 @@ minetest.register_craftitem("owl_tech:water_cell", { groups = { craftitem=1,load_cell=1 }, on_place = function(itemstack, placer, pointed_thing) if pointed_thing.type == "node" then - minetest.place_node(pointed_thing.above,{name="owl_tech:water_source"}) + minetest.place_node(pointed_thing.above,{name="mcl_core:water_source"}) itemstack:set_count(itemstack:get_count()-1) return itemstack end @@ -1079,7 +1079,7 @@ minetest.register_craftitem("owl_tech:lava_cell", { groups = { craftitem=1,load_cell=1 }, on_place = function(itemstack, placer, pointed_thing) if pointed_thing.type == "node" then - minetest.place_node(pointed_thing.above,{name="owl_tech:lava_source"}) + minetest.place_node(pointed_thing.above,{name="mcl_core:lava_source"}) itemstack:set_count(itemstack:get_count()-1) return itemstack end