summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRealBadAngel <maciej.kasatkin@o2.pl>2014-08-29 01:26:25 +0200
committerRealBadAngel <maciej.kasatkin@o2.pl>2014-08-29 01:26:25 +0200
commit0defb2e66d40f4058e096c9048ee09e81715069a (patch)
treec16d85abe68c09e44df5a44e51bb7f492f788d41
parent0de4fec07c39eaef7f16f72ac63a24b457d85b02 (diff)
Fix broken concrete posts.
-rw-r--r--concrete/init.lua39
1 files changed, 28 insertions, 11 deletions
diff --git a/concrete/init.lua b/concrete/init.lua
index 03a865a..b41deb0 100644
--- a/concrete/init.lua
+++ b/concrete/init.lua
@@ -123,10 +123,10 @@ minetest.register_node(":technic:concrete_post_platform", {
return minetest.item_place_node(itemstack, placer, pointed_thing)
end
local links = technic.concrete_posts[node.name]
- if links[5] ~= 0 then -- The post already has a platform
+ 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], 1})
+ 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})
itemstack:take_item()
placer:set_wielded_item(itemstack)
@@ -134,8 +134,15 @@ minetest.register_node(":technic:concrete_post_platform", {
end,
})
-local function gen_post_nodebox(x1, x2, z1, z2, platform)
- local box = {box_center}
+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
@@ -170,9 +177,9 @@ function technic.posts_should_connect(pos)
end
function technic.get_post_id(links)
- return (links[4] * 1) + (links[3] * 2)
- + (links[2] * 4) + (links[1] * 8)
- + (links[5] * 16)
+ 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)
@@ -182,9 +189,11 @@ function technic.update_posts(pos, set, secondrun)
{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}
+ 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)
@@ -198,13 +207,19 @@ function technic.update_posts(pos, set, secondrun)
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[5] = oldlinks[5]
+ links[6] = oldlinks[6]
end
minetest.set_node(pos, {name="technic:concrete_post"
..technic.get_post_id(links)})
@@ -215,8 +230,9 @@ 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, platform}
+ local links = {x1, x2, z1, z2, y, platform}
local id = technic.get_post_id(links)
technic.concrete_posts["technic:concrete_post"..id] = links
@@ -247,7 +263,7 @@ for platform = 0, 1 do
drawtype = "nodebox",
node_box = {
type = "fixed",
- fixed = gen_post_nodebox(x1, x2, z1, z2, platform),
+ fixed = gen_post_nodebox(x1, x2, z1, z2, y, platform),
},
after_place_node = function(pos, placer, itemstack)
technic.update_posts(pos, true)
@@ -259,4 +275,5 @@ end
end
end
end
+end