summaryrefslogtreecommitdiff
path: root/concrete
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 22:10:20 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 22:42:02 -0400
commit86ad3e7c6a37699f7f8297a387bf08af74e36629 (patch)
treedc368b1eaf2cc09b9df2200250890b3038d8cf2d /concrete
parent888b0ebfec8c2eff9015163549a7e47443cb8665 (diff)
downloaddreambuilder_modpack-86ad3e7c6a37699f7f8297a387bf08af74e36629.tar
dreambuilder_modpack-86ad3e7c6a37699f7f8297a387bf08af74e36629.tar.gz
dreambuilder_modpack-86ad3e7c6a37699f7f8297a387bf08af74e36629.tar.bz2
dreambuilder_modpack-86ad3e7c6a37699f7f8297a387bf08af74e36629.tar.xz
dreambuilder_modpack-86ad3e7c6a37699f7f8297a387bf08af74e36629.zip
Update all core mods
Diffstat (limited to 'concrete')
-rw-r--r--concrete/init.lua206
1 files changed, 44 insertions, 162 deletions
diff --git a/concrete/init.lua b/concrete/init.lua
index d1fa1aa..4d5e781 100644
--- a/concrete/init.lua
+++ b/concrete/init.lua
@@ -7,11 +7,14 @@ 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
-minetest.register_alias("technic:concrete_post", "technic:concrete_post0")
-minetest.register_alias("technic:concrete_post32", "technic:concrete_post12")
-minetest.register_alias("technic:concrete_post33", "technic:concrete_post3")
-minetest.register_alias("technic:concrete_post34", "technic:concrete_post28")
-minetest.register_alias("technic:concrete_post35", "technic:concrete_post19")
+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
@@ -41,17 +44,17 @@ minetest.register_craft({
minetest.register_craft({
output = 'technic:concrete_post_platform 6',
recipe = {
- {'technic:concrete','technic:concrete_post0','technic:concrete'},
+ {'technic:concrete','technic:concrete_post','technic:concrete'},
}
})
minetest.register_craft({
- output = 'technic:concrete_post0 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'},
-}
+ }
})
minetest.register_craft({
@@ -63,13 +66,6 @@ minetest.register_craft({
}
})
-local box_platform = {-0.5, 0.3, -0.5, 0.5, 0.5, 0.5}
-local box_center = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}
-local box_x1 = {0, -0.3, -0.1, 0.5, 0.3, 0.1}
-local box_z1 = {-0.1, -0.3, 0, 0.1, 0.3, 0.5}
-local box_x2 = {0, -0.3, -0.1, -0.5, 0.3, 0.1}
-local box_z2 = {-0.1, -0.3, 0, 0.1, 0.3, -0.5}
-
minetest.register_craftitem(":technic:rebar", {
description = S("Rebar"),
inventory_image = "technic_rebar.png",
@@ -80,27 +76,29 @@ minetest.register_node(":technic:concrete", {
tiles = {"technic_concrete_block.png",},
groups = {cracky=1, level=2, concrete=1},
sounds = default.node_sound_stone_defaults(),
- after_place_node = function(pos, placer, itemstack)
- technic.update_posts(pos, false)
- end,
- after_dig_node = function (pos, oldnode, oldmetadata, digger)
- technic.update_posts(pos, false)
- end,
})
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},
+ groups = {cracky=1, level=3, concrete=1},
sounds = default.node_sound_stone_defaults(),
- after_place_node = function(pos, player, itemstack)
- technic.update_posts(pos, false)
- end,
- after_dig_node = function (pos, oldnode, oldmetadata, digger)
- technic.update_posts(pos, false)
+ on_blast = function(pos, intensity)
+ if intensity > 1 then
+ minetest.remove_node(pos)
+ minetest.add_item(pos, "technic:blast_resistant_concrete")
+ 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, 0.1, 0.3, -0.5}
+local box_back = {-0.1, -0.3, 0, 0.1, 0.3, 0.5}
+local box_left = {0, -0.3, -0.1, -0.5, 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 = S("Concrete Post Platform"),
tiles = {"technic_concrete_block.png",},
@@ -114,161 +112,45 @@ minetest.register_node(":technic:concrete_post_platform", {
},
on_place = function (itemstack, placer, pointed_thing)
local node = minetest.get_node(pointed_thing.under)
- if not technic.concrete_posts[node.name] then
+ if node.name ~= "technic:concrete_post" then
return minetest.item_place_node(itemstack, placer, pointed_thing)
end
- local links = technic.concrete_posts[node.name]
- if links[6] ~= 0 then -- The post already has a platform
- return minetest.item_place_node(itemstack, placer, pointed_thing)
- end
- local id = technic.get_post_id({links[1], links[2], links[3], links[4], links[5], 1})
- minetest.set_node(pointed_thing.under, {name="technic:concrete_post"..id})
+ minetest.set_node(pointed_thing.under, {name="technic:concrete_post_with_platform"})
itemstack:take_item()
placer:set_wielded_item(itemstack)
return itemstack
end,
})
-local function gen_post_nodebox(x1, x2, z1, z2, y, platform)
- local box
- local xx = x1 + x2
- local zz = z1 + z2
- if ((xx == 2 and zz == 0) or (xx == 0 and zz == 2)) and y == 0 then
- box = {}
- else
- box = {box_center}
- end
- if x1 ~= 0 then
- table.insert(box, box_x1)
- end
- if x2 ~= 0 then
- table.insert(box, box_x2)
- end
- if z1 ~= 0 then
- table.insert(box, box_z1)
- end
- if z2 ~= 0 then
- table.insert(box, box_z2)
- end
- if platform ~= 0 then
- table.insert(box, box_platform)
- end
- return box
-end
-
-local function dig_post_with_platform(pos, oldnode, oldmetadata)
- oldnode.name = "technic:concrete_post0"
- minetest.set_node(pos, oldnode)
- technic.update_posts(pos, true)
-end
-
-function technic.posts_should_connect(pos)
- local node = minetest.get_node(pos)
- if technic.concrete_posts[node.name] then
- return "post"
- elseif minetest.get_item_group(node.name, "concrete") ~= 0 then
- return "block"
- end
-end
-
-function technic.get_post_id(links)
- return (links[1] * 1) + (links[2] * 2)
- + (links[3] * 4) + (links[4] * 8)
- + (links[5] * 16) + (links[6] * 32)
-end
-
-function technic.update_posts(pos, set, secondrun)
- local node = minetest.get_node(pos)
- local link_positions = {
- {x=pos.x+1, y=pos.y, z=pos.z},
- {x=pos.x-1, y=pos.y, z=pos.z},
- {x=pos.x, y=pos.y, z=pos.z+1},
- {x=pos.x, y=pos.y, z=pos.z-1},
- {x=pos.x, y=pos.y-1, z=pos.z},
- {x=pos.x, y=pos.y+1, z=pos.z},
- }
-
- local links = {0, 0, 0, 0, 0, 0}
-
- for i, link_pos in pairs(link_positions) do
- local connecttype = technic.posts_should_connect(link_pos)
- if connecttype then
- links[i] = 1
- -- Have posts next to us update theirselves,
- -- but only once. (We don't want to start an
- -- infinite loop of updates)
- if not secondrun and connecttype == "post" then
- technic.update_posts(link_pos, true, true)
- end
- end
- end
-
- if links[5] == 1 or links[6] == 1 then
- links[5] = 1
- links[6] = 0
- end
-
- -- We don't want to set ourselves if we have been removed or we are
- -- updating a concrete node
- if set then
- -- Preserve platform
- local oldlinks = technic.concrete_posts[node.name]
- if oldlinks then
- links[6] = oldlinks[6]
- end
- minetest.set_node(pos, {name="technic:concrete_post"
- ..technic.get_post_id(links)})
- end
-end
-
-for x1 = 0, 1 do
-for x2 = 0, 1 do
-for z1 = 0, 1 do
-for z2 = 0, 1 do
-for y = 0, 1 do
for platform = 0, 1 do
- local links = {x1, x2, z1, z2, y, platform}
- local id = technic.get_post_id(links)
- technic.concrete_posts["technic:concrete_post"..id] = links
-
- local groups = {cracky=1, level=2, concrete_post=1}
- if id ~= 0 then
- groups.not_in_creative_inventory = 1
- end
-
- local drop = "technic:concrete_post0"
- local after_dig_node = function(pos, oldnode, oldmetadata, digger)
- technic.update_posts(pos, false)
- end
- if platform ~= 0 then
- drop = "technic:concrete_post_platform"
- after_dig_node = function(pos, oldnode, oldmetadata, digger)
- dig_post_with_platform(pos, oldnode, oldmetadata)
+ 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
- minetest.register_node(":technic:concrete_post"..id, {
+ minetest.register_node(":technic:concrete_post"..(platform == 1 and "_with_platform" or ""), {
description = S("Concrete Post"),
tiles = {"technic_concrete_block.png"},
- groups = groups,
+ groups = {cracky=1, level=2, concrete_post=1, not_in_creative_inventory=platform},
sounds = default.node_sound_stone_defaults(),
- drop = drop,
+ drop = (platform == 1 and "technic:concrete_post_platform" or
+ "technic:concrete_post"),
paramtype = "light",
sunlight_propagates = true,
- drawtype = "nodebox",
+ drawtype = "nodebox",
+ connects_to = {"group:concrete", "group:concrete_post"},
node_box = {
- type = "fixed",
- fixed = gen_post_nodebox(x1, x2, z1, z2, y, platform),
+ 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,
},
- after_place_node = function(pos, placer, itemstack)
- technic.update_posts(pos, true)
- end,
after_dig_node = after_dig_node,
})
end
-end
-end
-end
-end
-end