summaryrefslogtreecommitdiff
path: root/concrete/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'concrete/init.lua')
-rw-r--r--concrete/init.lua239
1 files changed, 137 insertions, 102 deletions
diff --git a/concrete/init.lua b/concrete/init.lua
index 12deb74..bf25c32 100644
--- a/concrete/init.lua
+++ b/concrete/init.lua
@@ -1,8 +1,8 @@
---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',
+ output = 'technic:rebar 6',
recipe = {
{'','', 'default:steel_ingot'},
{'','default:steel_ingot',''},
@@ -11,7 +11,7 @@ minetest.register_craft({
})
minetest.register_craft({
- output = ':technic:concrete 5',
+ output = 'technic:concrete 5',
recipe = {
{'default:stone','technic:rebar','default:stone'},
{'technic:rebar','default:stone','technic:rebar'},
@@ -20,14 +20,14 @@ minetest.register_craft({
})
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'},
@@ -35,6 +35,15 @@ minetest.register_craft({
}
})
+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'},
+ }
+})
+
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+
@@ -48,6 +57,12 @@ minetest.register_craftitem(":technic:rebar", {
stack_max = 99,
})
+minetest.register_craftitem(":technic:blast_resistant_concrete", {
+ description = "Blast-resistant Concrete Block",
+ inventory_image = "technic_blast_resistant_concrete_block.png",
+ stack_max = 99,
+})
+
minetest.register_craftitem(":technic:concrete", {
description = "Concrete Block",
inventory_image = "technic_concrete_block.png",
@@ -83,6 +98,25 @@ minetest.register_node(":technic:concrete", {
end,
})
+minetest.register_node(":technic:blast_resistant_concrete", {
+ description = "Blast-resistant Concrete Block",
+ tile_images = {"technic_blast_resistant_concrete_block.png",},
+ is_ground_content = true,
+ groups={cracky=1,level=3},
+ 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)
+ end,
+})
+
minetest.register_node(":technic:concrete_post_platform", {
description = "Concrete Post Platform",
tile_images = {"technic_concrete_block.png",},
@@ -165,16 +199,16 @@ 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+
+ 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={}
+ 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
+ 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, {
@@ -280,7 +314,7 @@ minetest.register_node(":technic:concrete_post33", {
}},
after_dig_node = function (pos, oldnode, oldmetadata, digger)
- check_post_connections (pos,0)
+ check_post_connections (pos,0)
end,
})
@@ -344,7 +378,7 @@ dig_post_with_platform = function (pos,oldnode,oldmetadata)
print(dump(x1))
oldmetadata.fields["platform"]="0"
local rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,0)
- print(dump(rule))
+ --print(dump(rule))
oldnode.name="technic:concrete_post"..rule
minetest.env:set_node(pos,oldnode)
meta = minetest.env:get_meta(pos)
@@ -365,103 +399,104 @@ check_post_connections = function(pos,mode)
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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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)
@@ -476,25 +511,25 @@ check_post_connections = function(pos,mode)
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
+ 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
end
function hacky_swap_posts(pos,name)
local node = minetest.env:get_node(pos)
- if node.name == "technic:concrete" then
+ if node.name == "technic:concrete" or node.name == "technic:blast_resistant_concrete" then
return nil
end
local meta = minetest.env:get_meta(pos)