From befe3ecc86f046310ec0a5c24f82acea2ad13d9d Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg <vanessa.e.dannenberg@gmail.com> Date: Wed, 27 May 2020 18:32:57 +0200 Subject: [PATCH] Fix incorrect numeric types for 5.3.0-dev --- concrete/init.lua | 265 +++++++++++++++-------------------------------------- 1 files changed, 75 insertions(+), 190 deletions(-) diff --git a/concrete/init.lua b/concrete/init.lua index 869dbbd..ced0471 100644 --- a/concrete/init.lua +++ b/concrete/init.lua @@ -1,55 +1,42 @@ ---Minetest 0.4.7 mod: concrete +--Minetest 0.4.7 mod: concrete --(c) 2013 by RealBadAngel <mk@realbadangel.pl> -local technic = technic or {} +local technic = rawget(_G, "technic") or {} technic.concrete_posts = {} -- Boilerplate to support localized strings if intllib mod is installed. -local S -if intllib then - S = intllib.Getter() -else - S = function(s) return s end +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 -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") - -minetest.register_craft({ - output = 'technic:rebar 6', - recipe = { - {'','', 'default:steel_ingot'}, - {'','default:steel_ingot',''}, - {'default:steel_ingot', '', ''}, - } -}) - -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'}, - } -}) +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_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'}, -} + {'default:stone','basic_materials:steel_bar','default:stone'}, + {'default:stone','basic_materials:steel_bar','default:stone'}, + {'default:stone','basic_materials:steel_bar','default:stone'}, + } }) minetest.register_craft({ @@ -61,195 +48,93 @@ } }) -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", -}) - -minetest.register_node(":technic:concrete", { - description = S("Concrete Block"), - tile_images = {"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"), - tile_images = {"technic_blast_resistant_concrete_block.png",}, - groups={cracky=1, level=3, concrete=1}, + tiles = {"technic_blast_resistant_concrete_block.png",}, + 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 > 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 = S("Concrete Post Platform"), - tile_images = {"technic_concrete_block.png",}, + tiles = {"basic_materials_concrete_block.png",}, groups={cracky=1, level=2}, sounds = default.node_sound_stone_defaults(), paramtype = "light", - drawtype = "nodebox", + drawtype = "nodebox", node_box = { type = "fixed", fixed = {box_platform} }, on_place = function (itemstack, placer, pointed_thing) local node = minetest.get_node(pointed_thing.under) - if not technic.concrete_posts[node.name] then - return minetest.item_place_node(itemstack, placer, pointed_thing) + 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[5] ~= 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}) - 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, platform) - local box = {box_center} - 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[4] * 1) + (links[3] * 2) - + (links[2] * 4) + (links[1] * 8) - + (links[5] * 16) -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}, - } - - local links = {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 - -- 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] - 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 platform = 0, 1 do - local links = {x1, x2, z1, z2, 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, + 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 = 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, 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 -- Gitblit v1.8.0