| | |
| | | --Minetest 0.4.6 mod: concrete |
| | | --Minetest 0.4.7 mod: concrete |
| | | --(c) 2013 by RealBadAngel <mk@realbadangel.pl> |
| | | |
| | | minetest.register_craft({ |
| | | output = ':technic:rebar 6', |
| | | recipe = { |
| | | {'','', 'default:steel_ingot'}, |
| | | {'','default:steel_ingot',''}, |
| | | {'default:steel_ingot', '', ''}, |
| | | } |
| | | }) |
| | | local technic = rawget(_G, "technic") or {} |
| | | technic.concrete_posts = {} |
| | | |
| | | -- Boilerplate to support localized strings if intllib mod is installed. |
| | | local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end |
| | | |
| | | for i = 0, 31 do |
| | | minetest.register_alias("technic:concrete_post"..i, |
| | | "technic:concrete_post") |
| | | end |
| | | for i = 32, 63 do |
| | | minetest.register_alias("technic:concrete_post"..i, |
| | | "technic:concrete_post_with_platform") |
| | | end |
| | | |
| | | local steel_ingot |
| | | if minetest.get_modpath("technic_worldgen") then |
| | | steel_ingot = "technic:carbon_steel_ingot" |
| | | else |
| | | steel_ingot = "default:steel_ingot" |
| | | end |
| | | |
| | | minetest.register_craft({ |
| | | output = ':technic:concrete 5', |
| | | recipe = { |
| | | {'default:stone','technic:rebar','default:stone'}, |
| | | {'technic:rebar','default:stone','technic:rebar'}, |
| | | {'default:stone','technic:rebar','default:stone'}, |
| | | } |
| | | }) |
| | | |
| | | minetest.register_craft({ |
| | | output = ':technic:concrete_post_platform 6', |
| | | output = 'technic:concrete_post_platform 6', |
| | | recipe = { |
| | | {'technic:concrete','technic:concrete_post','technic:concrete'}, |
| | | } |
| | | }) |
| | | |
| | | minetest.register_craft({ |
| | | output = ':technic:concrete_post 12', |
| | | output = 'technic:concrete_post 12', |
| | | recipe = { |
| | | {'default:stone','technic:rebar','default:stone'}, |
| | | {'default:stone','technic:rebar','default:stone'}, |
| | | {'default:stone','technic:rebar','default:stone'}, |
| | | } |
| | | {'default:stone','basic_materials:steel_bar','default:stone'}, |
| | | {'default:stone','basic_materials:steel_bar','default:stone'}, |
| | | {'default:stone','basic_materials:steel_bar','default:stone'}, |
| | | } |
| | | }) |
| | | |
| | | platform_box = {-0.5 , 0.3 , -0.5 , 0.5 , 0.5 , 0.5 } |
| | | post_str_y={ -0.15 , -0.5 , -0.15 , 0.15 , 0.5 , 0.15 } |
| | | post_str_x1={ 0 , -0.3 , -0.1, 0.5 , 0.3 , 0.1 } -- x+ |
| | | post_str_z1={ -0.1 , -0.3 , 0, 0.1 , 0.3 , 0.5 } -- z+ |
| | | post_str_x2={ 0 , -0.3 , -0.1, -0.5 , 0.3 , 0.1 } -- x- |
| | | post_str_z2={ -0.1 , -0.3 , 0, 0.1 , 0.3 , -0.5 } -- z- |
| | | |
| | | minetest.register_craftitem(":technic:rebar", { |
| | | description = "Rebar", |
| | | inventory_image = "technic_rebar.png", |
| | | stack_max = 99, |
| | | minetest.register_craft({ |
| | | output = 'technic:blast_resistant_concrete 5', |
| | | recipe = { |
| | | {'technic:concrete','technic:composite_plate','technic:concrete'}, |
| | | {'technic:composite_plate','technic:concrete','technic:composite_plate'}, |
| | | {'technic:concrete','technic:composite_plate','technic:concrete'}, |
| | | } |
| | | }) |
| | | |
| | | minetest.register_craftitem(":technic:concrete", { |
| | | description = "Concrete Block", |
| | | inventory_image = "technic_concrete_block.png", |
| | | stack_max = 99, |
| | | }) |
| | | |
| | | minetest.register_craftitem(":technic:concrete_post", { |
| | | description = "Concrete Post", |
| | | stack_max = 99, |
| | | }) |
| | | |
| | | minetest.register_craftitem(":technic:concrete_post_platform", { |
| | | description = "Concrete Post Platform", |
| | | stack_max = 99, |
| | | }) |
| | | |
| | | minetest.register_node(":technic:concrete", { |
| | | description = "Concrete Block", |
| | | tile_images = {"technic_concrete_block.png",}, |
| | | is_ground_content = true, |
| | | groups={cracky=1,level=2}, |
| | | minetest.register_node(":technic:blast_resistant_concrete", { |
| | | description = S("Blast-resistant Concrete Block"), |
| | | tiles = {"technic_blast_resistant_concrete_block.png",}, |
| | | groups = {cracky=1, level=3, concrete=1}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | paramtype = "light", |
| | | light_source = 0, |
| | | sunlight_propagates = true, |
| | | on_construct = function(pos) |
| | | meta=minetest.env:get_meta(pos) |
| | | meta:set_float("postlike",1) |
| | | check_post_connections (pos,1) |
| | | end, |
| | | after_dig_node = function (pos, oldnode, oldmetadata, digger) |
| | | check_post_connections (pos,0) |
| | | on_blast = function(pos, intensity) |
| | | if intensity > 9 then |
| | | minetest.remove_node(pos) |
| | | return {"technic:blast_resistant_concrete"} |
| | | end |
| | | end, |
| | | }) |
| | | |
| | | if minetest.get_modpath("moreblocks") then |
| | | stairsplus:register_all("technic","blast_resistant_concrete","technic:blast_resistant_concrete",{ |
| | | description = "Blast-resistant Concrete", |
| | | tiles = {"technic_blast_resistant_concrete_block.png",}, |
| | | groups = {cracky=1, level=3, concrete=1}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | on_blast = function(pos, intensity) |
| | | if intensity > 1 then |
| | | minetest.remove_node(pos) |
| | | minetest.add_item(pos, "technic:blast_resistant_concrete") |
| | | end |
| | | end, |
| | | }) |
| | | end |
| | | |
| | | local box_platform = {-0.5, 0.3, -0.5, 0.5, 0.5, 0.5} |
| | | local box_post = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15} |
| | | local box_front = {-0.1, -0.3, -0.5, 0.1, 0.3, 0} |
| | | local box_back = {-0.1, -0.3, 0, 0.1, 0.3, 0.5} |
| | | local box_left = {-0.5, -0.3, -0.1, 0, 0.3, 0.1} |
| | | local box_right = {0, -0.3, -0.1, 0.5, 0.3, 0.1} |
| | | |
| | | minetest.register_node(":technic:concrete_post_platform", { |
| | | description = "Concrete Post Platform", |
| | | tile_images = {"technic_concrete_block.png",}, |
| | | is_ground_content = true, |
| | | groups={cracky=1,level=2}, |
| | | description = S("Concrete Post Platform"), |
| | | tiles = {"basic_materials_concrete_block.png",}, |
| | | groups={cracky=1, level=2}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | paramtype = "light", |
| | | light_source = 0, |
| | | sunlight_propagates = true, |
| | | drawtype = "nodebox", |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {platform_box} |
| | | }, |
| | | drawtype = "nodebox", |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = {platform_box} |
| | | }, |
| | | on_place=function (itemstack, placer, pointed_thing) |
| | | local node=minetest.env:get_node(pointed_thing.under) |
| | | if minetest.get_item_group(node.name, "concrete_post")==0 then |
| | | return minetest.item_place_node(itemstack, placer, pointed_thing) |
| | | fixed = {box_platform} |
| | | }, |
| | | on_place = function (itemstack, placer, pointed_thing) |
| | | local node = minetest.get_node(pointed_thing.under) |
| | | if node.name ~= "technic:concrete_post" then |
| | | return minetest.item_place_node(itemstack, placer, pointed_thing) |
| | | end |
| | | minetest.set_node(pointed_thing.under, {name="technic:concrete_post_with_platform"}) |
| | | itemstack:take_item() |
| | | placer:set_wielded_item(itemstack) |
| | | return itemstack |
| | | end, |
| | | }) |
| | | |
| | | for platform = 0, 1 do |
| | | local after_dig_node = nil |
| | | if platform == 1 then |
| | | after_dig_node = function(pos, old_node) |
| | | old_node.name = "technic:concrete_post" |
| | | minetest.set_node(pos, old_node) |
| | | end |
| | | end |
| | | local meta=minetest.env:get_meta(pointed_thing.under) |
| | | y1=meta:get_float("y1") |
| | | platform=meta:get_float("platform") |
| | | if y1==1 or platform==1 then |
| | | return minetest.item_place_node(itemstack, placer, pointed_thing) |
| | | end |
| | | y2=meta:get_float("y2") |
| | | x1=meta:get_float("x1") |
| | | x2=meta:get_float("x2") |
| | | z1=meta:get_float("z1") |
| | | z2=meta:get_float("z2") |
| | | rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,1) |
| | | meta:set_float("platform",1) |
| | | hacky_swap_posts(pointed_thing.under,"technic:concrete_post"..rule) |
| | | itemstack:take_item() |
| | | placer:set_wielded_item(itemstack) |
| | | return itemstack |
| | | end, |
| | | }) |
| | | |
| | | |
| | | minetest.register_node(":technic:concrete_post", { |
| | | description = "Concrete Post", |
| | | tiles = {"technic_concrete_block.png"}, |
| | | groups={cracky=1,level=2,concrete_post=1}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | paramtype = "light", |
| | | light_source = 0, |
| | | sunlight_propagates = true, |
| | | drawtype = "nodebox", |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { -0.15 , -0.5 , -0.15 , 0.15 , 0.5 , 0.15 }}, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = {-0.15 , -0.5 , -0.15 , 0.15 , 0.5 , 0.15 }}, |
| | | on_construct = function(pos) |
| | | meta=minetest.env:get_meta(pos) |
| | | meta:set_int("postlike",1) |
| | | meta:set_int("platform",0) |
| | | meta:set_int("x1",0) |
| | | meta:set_int("x2",0) |
| | | meta:set_int("y1",0) |
| | | meta:set_int("y2",0) |
| | | meta:set_int("z1",0) |
| | | meta:set_int("z2",0) |
| | | check_post_connections (pos,1) |
| | | end, |
| | | |
| | | after_dig_node = function (pos, oldnode, oldmetadata, digger) |
| | | check_post_connections (pos,0) |
| | | end, |
| | | |
| | | }) |
| | | |
| | | local x1,x2,y1,z1,z2 |
| | | local count=0 |
| | | |
| | | for x1 = 0, 1, 1 do --x- |
| | | for x2 = 0, 1, 1 do --x+ |
| | | for z1 = 0, 1, 1 do --z- |
| | | for z2 = 0, 1, 1 do --z+ |
| | | |
| | | temp_x1={} temp_x2={} temp_z1={} temp_z2={} |
| | | |
| | | if x1==1 then temp_x1=post_str_x1 end |
| | | if x2==1 then temp_x2=post_str_x2 end |
| | | if z1==1 then temp_z1=post_str_z1 end |
| | | if z2==1 then temp_z2=post_str_z2 end |
| | | |
| | | |
| | | minetest.register_node(":technic:concrete_post"..count, { |
| | | description = "Concrete Post", |
| | | tiles = {"technic_concrete_block.png"}, |
| | | groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | drop = "technic:concrete_post", |
| | | paramtype = "light", |
| | | light_source = 0, |
| | | sunlight_propagates = true, |
| | | drawtype = "nodebox", |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | temp_x1,temp_x2,post_str_y,temp_z1,temp_z2, |
| | | }}, |
| | | |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | temp_x1,temp_x2,post_str_y,temp_z1,temp_z2, |
| | | }}, |
| | | |
| | | after_dig_node = function (pos, oldnode, oldmetadata, digger) |
| | | check_post_connections (pos,0) |
| | | end, |
| | | |
| | | }) |
| | | |
| | | minetest.register_node(":technic:concrete_post"..count+16, { |
| | | description = "Concrete Post", |
| | | tiles = {"technic_concrete_block.png"}, |
| | | groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | drop = "technic:concrete_post_platform", |
| | | paramtype = "light", |
| | | light_source = 0, |
| | | sunlight_propagates = true, |
| | | drawtype = "nodebox", |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | platform_box,temp_x1,temp_x2,post_str_y,temp_z1,temp_z2, |
| | | }}, |
| | | |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | platform_box,temp_x1,temp_x2,post_str_y,temp_z1,temp_z2, |
| | | }}, |
| | | |
| | | after_dig_node = function (pos, oldnode, oldmetadata, digger) |
| | | dig_post_with_platform (pos,oldnode,oldmetadata) |
| | | end, |
| | | }) |
| | | |
| | | count=count+1 end end end end |
| | | |
| | | minetest.register_node(":technic:concrete_post32", { |
| | | description = "Concrete Post", |
| | | tiles = {"technic_concrete_block.png"}, |
| | | groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | drop = "technic:concrete_post", |
| | | paramtype = "light", |
| | | light_source = 0, |
| | | sunlight_propagates = true, |
| | | drawtype = "nodebox", |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5,-0.3,-0.1,0.5,0.3,0.1}, |
| | | minetest.register_node(":technic:concrete_post"..(platform == 1 and "_with_platform" or ""), { |
| | | description = S("Concrete Post"), |
| | | tiles = {"basic_materials_concrete_block.png"}, |
| | | groups = {cracky=1, level=2, concrete_post=1, not_in_creative_inventory=platform}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | drop = (platform == 1 and "technic:concrete_post_platform" or |
| | | "technic:concrete_post"), |
| | | paramtype = "light", |
| | | sunlight_propagates = true, |
| | | drawtype = "nodebox", |
| | | connects_to = {"group:concrete", "group:concrete_post"}, |
| | | node_box = { |
| | | type = "connected", |
| | | fixed = {box_post, (platform == 1 and box_platform or nil)}, |
| | | connect_front = box_front, |
| | | connect_back = box_back, |
| | | connect_left = box_left, |
| | | connect_right = box_right, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | post_str_x1,post_str_x2, |
| | | }}, |
| | | |
| | | after_dig_node = function (pos, oldnode, oldmetadata, digger) |
| | | check_post_connections (pos,0) |
| | | end, |
| | | }) |
| | | minetest.register_node(":technic:concrete_post33", { |
| | | description = "Concrete Post", |
| | | tiles = {"technic_concrete_block.png"}, |
| | | groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | drop = "technic:concrete_post", |
| | | paramtype = "light", |
| | | light_source = 0, |
| | | sunlight_propagates = true, |
| | | drawtype = "nodebox", |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | post_str_z1,post_str_z2, |
| | | }}, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | post_str_z1,post_str_z2, |
| | | }}, |
| | | |
| | | after_dig_node = function (pos, oldnode, oldmetadata, digger) |
| | | check_post_connections (pos,0) |
| | | end, |
| | | }) |
| | | |
| | | minetest.register_node(":technic:concrete_post34", { |
| | | description = "Concrete Post", |
| | | tiles = {"technic_concrete_block.png"}, |
| | | groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | drop = "technic:concrete_post_platform", |
| | | paramtype = "light", |
| | | light_source = 0, |
| | | sunlight_propagates = true, |
| | | drawtype = "nodebox", |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | platform_box,post_str_x1,post_str_x2, |
| | | }}, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | platform_box,post_str_x1,post_str_x2, |
| | | }}, |
| | | |
| | | after_dig_node = function (pos, oldnode, oldmetadata, digger) |
| | | dig_post_with_platform (pos,oldnode,oldmetadata) |
| | | end, |
| | | }) |
| | | minetest.register_node(":technic:concrete_post35", { |
| | | description = "Concrete Post", |
| | | tiles = {"technic_concrete_block.png"}, |
| | | groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1}, |
| | | sounds = default.node_sound_stone_defaults(), |
| | | drop = "technic:concrete_post_platform", |
| | | paramtype = "light", |
| | | light_source = 0, |
| | | sunlight_propagates = true, |
| | | drawtype = "nodebox", |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | platform_box,post_str_z1,post_str_z2, |
| | | }}, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | platform_box,post_str_z1,post_str_z2, |
| | | }}, |
| | | after_dig_node = function (pos, oldnode, oldmetadata, digger) |
| | | dig_post_with_platform (pos,oldnode,oldmetadata) |
| | | end, |
| | | }) |
| | | |
| | | dig_post_with_platform = function (pos,oldnode,oldmetadata) |
| | | x1=tonumber(oldmetadata.fields["x1"]) |
| | | x2=tonumber(oldmetadata.fields["x2"]) |
| | | y1=tonumber(oldmetadata.fields["y1"]) |
| | | y2=tonumber(oldmetadata.fields["y2"]) |
| | | z1=tonumber(oldmetadata.fields["z1"]) |
| | | z2=tonumber(oldmetadata.fields["z2"]) |
| | | print(dump(x1)) |
| | | oldmetadata.fields["platform"]="0" |
| | | local rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,0) |
| | | print(dump(rule)) |
| | | oldnode.name="technic:concrete_post"..rule |
| | | minetest.env:set_node(pos,oldnode) |
| | | meta = minetest.env:get_meta(pos) |
| | | meta:from_table(oldmetadata) |
| | | end |
| | | |
| | | check_post_connections = function(pos,mode) |
| | | local pos1={} |
| | | pos1.x=pos.x |
| | | pos1.y=pos.y |
| | | pos1.z=pos.z |
| | | tempx1=0 |
| | | tempx2=0 |
| | | tempy1=0 |
| | | tempy2=0 |
| | | tempz1=0 |
| | | tempz2=0 |
| | | |
| | | pos1.x=pos1.x+1 |
| | | if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
| | | x2=mode |
| | | x1=minetest.env:get_meta(pos1):get_int("x1") |
| | | y1=minetest.env:get_meta(pos1):get_int("y1") |
| | | y2=minetest.env:get_meta(pos1):get_int("y2") |
| | | z1=minetest.env:get_meta(pos1):get_int("z1") |
| | | z2=minetest.env:get_meta(pos1):get_int("z2") |
| | | platform=minetest.env:get_meta(pos1):get_int("platform") |
| | | rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
| | | hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
| | | meta=minetest.env:get_meta(pos1) |
| | | meta:set_int("x2",x2) |
| | | tempx1=mode |
| | | end |
| | | |
| | | pos1.x=pos1.x-2 |
| | | if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
| | | x1=mode |
| | | x2=minetest.env:get_meta(pos1):get_int("x2") |
| | | y1=minetest.env:get_meta(pos1):get_int("y1") |
| | | y2=minetest.env:get_meta(pos1):get_int("y2") |
| | | z1=minetest.env:get_meta(pos1):get_int("z1") |
| | | z2=minetest.env:get_meta(pos1):get_int("z2") |
| | | platform=minetest.env:get_meta(pos1):get_int("platform") |
| | | rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
| | | hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
| | | meta=minetest.env:get_meta(pos1) |
| | | meta:set_int("x1",x1) |
| | | tempx2=mode |
| | | end |
| | | |
| | | pos1.x=pos1.x+1 |
| | | |
| | | pos1.y=pos1.y+1 |
| | | if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
| | | y2=mode |
| | | x1=minetest.env:get_meta(pos1):get_int("x1") |
| | | x2=minetest.env:get_meta(pos1):get_int("x2") |
| | | y1=minetest.env:get_meta(pos1):get_int("y1") |
| | | z1=minetest.env:get_meta(pos1):get_int("z1") |
| | | z2=minetest.env:get_meta(pos1):get_int("z2") |
| | | platform=minetest.env:get_meta(pos1):get_int("platform") |
| | | rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
| | | hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
| | | meta=minetest.env:get_meta(pos1) |
| | | meta:set_int("y2",y2) |
| | | tempy1=mode |
| | | end |
| | | |
| | | pos1.y=pos1.y-2 |
| | | if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
| | | y1=mode |
| | | x1=minetest.env:get_meta(pos1):get_int("x1") |
| | | x2=minetest.env:get_meta(pos1):get_int("x2") |
| | | y2=minetest.env:get_meta(pos1):get_int("y2") |
| | | z1=minetest.env:get_meta(pos1):get_int("z1") |
| | | z2=minetest.env:get_meta(pos1):get_int("z2") |
| | | platform=minetest.env:get_meta(pos1):get_int("platform") |
| | | rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
| | | hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
| | | meta=minetest.env:get_meta(pos1) |
| | | meta:set_int("y1",y1) |
| | | tempy2=mode |
| | | end |
| | | pos1.y=pos1.y+1 |
| | | |
| | | pos1.z=pos1.z+1 |
| | | if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
| | | z2=mode |
| | | x1=minetest.env:get_meta(pos1):get_int("x1") |
| | | x2=minetest.env:get_meta(pos1):get_int("x2") |
| | | y1=minetest.env:get_meta(pos1):get_int("y1") |
| | | y2=minetest.env:get_meta(pos1):get_int("y2") |
| | | z1=minetest.env:get_meta(pos1):get_int("z1") |
| | | platform=minetest.env:get_meta(pos1):get_int("platform") |
| | | rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
| | | hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
| | | meta=minetest.env:get_meta(pos1) |
| | | meta:set_int("z2",z2) |
| | | tempz1=mode |
| | | end |
| | | pos1.z=pos1.z-2 |
| | | |
| | | if minetest.env:get_meta(pos1):get_int("postlike")==1 then |
| | | z1=mode |
| | | x1=minetest.env:get_meta(pos1):get_int("x1") |
| | | x2=minetest.env:get_meta(pos1):get_int("x2") |
| | | y1=minetest.env:get_meta(pos1):get_int("y1") |
| | | y2=minetest.env:get_meta(pos1):get_int("y2") |
| | | z2=minetest.env:get_meta(pos1):get_int("z2") |
| | | platform=minetest.env:get_meta(pos1):get_int("platform") |
| | | rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform) |
| | | hacky_swap_posts(pos1,"technic:concrete_post"..rule) |
| | | meta=minetest.env:get_meta(pos1) |
| | | meta:set_int("z1",z1) |
| | | tempz2=mode |
| | | end |
| | | pos1.z=pos1.z+1 |
| | | if mode==1 then |
| | | meta=minetest.env:get_meta(pos) |
| | | meta:set_int("x1",tempx1) |
| | | meta:set_int("x2",tempx2) |
| | | meta:set_int("y1",tempy1) |
| | | meta:set_int("y2",tempy2) |
| | | meta:set_int("z1",tempz1) |
| | | meta:set_int("z2",tempz2) |
| | | rule=make_post_rule_number(tempx1,tempx2,tempy1,tempy2,tempz1,tempz2,0) |
| | | hacky_swap_posts(pos,"technic:concrete_post"..rule) |
| | | end |
| | | end |
| | | |
| | | function make_post_rule_number (x1,x2,y1,y2,z1,z2,platform) |
| | | local tempy=y1+y2 |
| | | local tempx=x1+x2 |
| | | local tempz=z1+z2 |
| | | if platform==0 then |
| | | if tempy==0 and tempx==0 and tempz==0 then return 0 end |
| | | if x1==1 and x2==1 and tempz==0 and tempy==0 then return 32 end |
| | | if z1==1 and z2==1 and tempx==0 and tempy==0 then return 33 end |
| | | return z2+z1*2+x2*4+x1*8 |
| | | else |
| | | if tempy==0 and tempx==0 and tempz==0 then return 16 end |
| | | if x1==1 and x2==1 and tempz==0 and tempy==0 then return 34 end |
| | | if z1==1 and z2==1 and tempx==0 and tempy==0 then return 35 end |
| | | return z2+z1*2+x2*4+x1*8+16 |
| | | end |
| | | after_dig_node = after_dig_node, |
| | | }) |
| | | end |
| | | |
| | | function hacky_swap_posts(pos,name) |
| | | local node = minetest.env:get_node(pos) |
| | | if node.name == "technic:concrete" then |
| | | return nil |
| | | end |
| | | local meta = minetest.env:get_meta(pos) |
| | | local meta0 = meta:to_table() |
| | | node.name = name |
| | | local meta0 = meta:to_table() |
| | | minetest.env:set_node(pos,node) |
| | | meta = minetest.env:get_meta(pos) |
| | | meta:from_table(meta0) |
| | | return 1 |
| | | end |