SmallJoker
2018-08-04 9b40d02fbd9e8c39c5c64cc7de89a7fe45382f04
extranodes/init.lua
@@ -1,86 +1,187 @@
-- Minetest 0.4.6 mod: extranodes
-- namespace: technic
-- 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
if minetest.get_modpath("moreblocks") then
   -- register stairsplus/circular_saw nodes
   -- we skip blast resistant concrete and uranium intentionally
   -- chrome seems to be too hard of a metal to be actually sawable
   stairsplus:register_all("technic", "marble", "technic:marble", {
      description=S("Marble"),
      groups={cracky=3, not_in_creative_inventory=1},
      tiles={"technic_marble.png"},
   })
   stairsplus:register_all("technic", "marble_bricks", "technic:marble_bricks", {
      description=S("Marble Bricks"),
      groups={cracky=3, not_in_creative_inventory=1},
      tiles={"technic_marble_bricks.png"},
   })
   stairsplus:register_all("technic", "granite", "technic:granite", {
      description=S("Granite"),
      groups={cracky=1, not_in_creative_inventory=1},
      tiles={"technic_granite.png"},
   })
   stairsplus:register_all("technic", "concrete", "technic:concrete", {
      description=S("Concrete"),
      groups={cracky=3, not_in_creative_inventory=1},
      tiles={"technic_concrete_block.png"},
   })
   stairsplus:register_all("technic", "zinc_block", "technic:zinc_block", {
      description=S("Zinc Block"),
      groups={cracky=1, not_in_creative_inventory=1},
      tiles={"technic_zinc_block.png"},
   })
   stairsplus:register_all("technic", "cast_iron_block", "technic:cast_iron_block", {
      description=S("Cast Iron Block"),
      groups={cracky=1, not_in_creative_inventory=1},
      tiles={"technic_cast_iron_block.png"},
   })
   stairsplus:register_all("technic", "carbon_steel_block", "technic:carbon_steel_block", {
      description=S("Carbon Steel Block"),
      groups={cracky=1, not_in_creative_inventory=1},
      tiles={"technic_carbon_steel_block.png"},
   })
   stairsplus:register_all("technic", "stainless_steel_block", "technic:stainless_steel_block", {
      description=S("Stainless Steel Block"),
      groups={cracky=1, not_in_creative_inventory=1},
      tiles={"technic_stainless_steel_block.png"},
   })
   stairsplus:register_all("technic", "brass_block", "technic:brass_block", {
      description=S("Brass Block"),
      groups={cracky=1, not_in_creative_inventory=1},
      tiles={"technic_brass_block.png"},
   })
   function register_technic_stairs_alias(modname, origname, newmod, newname)
      minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname)
      minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted")
      minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", newmod..":slab_" .. newname .. "_wall")
      minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", newmod..":slab_" .. newname .. "_quarter")
      minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", newmod..":slab_" .. newname .. "_quarter_inverted")
      minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", newmod..":slab_" .. newname .. "_quarter_wall")
      minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", newmod..":slab_" .. newname .. "_three_quarter")
      minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", newmod..":slab_" .. newname .. "_three_quarter_inverted")
      minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", newmod..":slab_" .. newname .. "_three_quarter_wall")
      minetest.register_alias(modname .. ":stair_" .. origname, newmod..":stair_" .. newname)
      minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", newmod..":stair_" .. newname .. "_inverted")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", newmod..":stair_" .. newname .. "_wall")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_half", newmod..":stair_" .. newname .. "_half")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", newmod..":stair_" .. newname .. "_half_inverted")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", newmod..":stair_" .. newname .. "_right_half")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", newmod..":stair_" .. newname .. "_right_half_inverted")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", newmod..":stair_" .. newname .. "_inner")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", newmod..":stair_" .. newname .. "_inner_inverted")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", newmod..":stair_" .. newname .. "_outer")
      minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", newmod..":stair_" .. newname .. "_outer_inverted")
      minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", newmod..":panel_" .. newname .. "_bottom")
      minetest.register_alias(modname .. ":panel_" .. origname .. "_top", newmod..":panel_" .. newname .. "_top")
      minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical")
      minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom")
      minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top")
   end
   register_technic_stairs_alias("stairsplus", "concrete", "technic", "concrete")
   register_technic_stairs_alias("stairsplus", "marble", "technic", "marble")
   register_technic_stairs_alias("stairsplus", "granite", "technic", "granite")
   register_technic_stairs_alias("stairsplus", "marble_bricks", "technic", "marble_bricks")
end
--register stairslike nodes
register_stair_slab_panel_micro("technic", "marble", "technic:marble",
   {cracky=2, not_in_creative_inventory=1},
   {"technic_marble.png"},
   S("Marble"),
   "marble",
   "facedir",
   0)
register_stair_slab_panel_micro("technic", "marble_bricks", "technic:marble_bricks",
   {cracky=2, not_in_creative_inventory=1},
   {"technic_marble_bricks.png"},
   S("Marble Bricks"),
   "marble_bricks",
   "facedir",
   0)
local iclip_def = {
   description = "Insulator/cable clip",
   drawtype = "mesh",
   mesh = "technic_insulator_clip.obj",
   tiles = {"technic_insulator_clip.png"},
   is_ground_content = false,
   groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1 },
   sounds = default.node_sound_stone_defaults(),
}
register_stair_slab_panel_micro("technic", "granite", "technic:granite",
   {cracky=3, not_in_creative_inventory=1},
   {"technic_granite.png"},
   S("Granite"),
   "granite",
   "facedir",
   0)
local iclipfence_def = {
   description = "Insulator/cable clip",
   tiles = {"technic_insulator_clip.png"},
   is_ground_content = false,
   paramtype = "light",
   drawtype = "nodebox",
   node_box = {
      type = "connected",
      fixed = {
         { -0.25,   0.75,   -0.25,   0.25,   1.25,   0.25   }, -- the clip on top
         { -0.125, 0.6875, -0.125, 0.125, 0.75,   0.125 },
         { -0.1875,  0.625,  -0.1875,  0.1875,  0.6875, 0.1875  },
         { -0.125, 0.5625, -0.125, 0.125, 0.625,  0.125 },
         { -0.1875,  0.5,    -0.1875,  0.1875,  0.5625, 0.1875  },
         { -0.125, 0.4375, -0.125, 0.125, 0.5,    0.125 },
         { -0.1875,  0.375,  -0.1875,  0.1875,  0.4375, 0.1875  },
         { -0.125, -0.5,    -0.125,  0.125,  0.375,  0.125  }, -- the post, slightly short
      },
      -- connect_top =
      -- connect_bottom =
      connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8},
         {-1/16,-5/16,-1/2,1/16,-3/16,-1/8}},
      connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16},
         {-1/2,-5/16,-1/16,-1/8,-3/16,1/16}},
      connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2},
         {-1/16,-5/16,1/8,1/16,-3/16,1/2}},
      connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16},
         {1/8,-5/16,-1/16,1/2,-3/16,1/16}},
   },
   connects_to = {"group:fence", "group:wood", "group:tree"},
   groups = {fence=1, choppy=1, snappy=1, oddly_breakable_by_hand=1 },
   sounds = default.node_sound_stone_defaults(),
}
register_stair_slab_panel_micro("technic", "concrete", "technic:concrete",
   {cracky=3, not_in_creative_inventory=1},
   {"technic_concrete_block.png"},
   S("Concrete"),
   "concrete",
   "facedir",
   0)
--register nodes in circular saw if aviable
if circular_saw then
   for i,v in ipairs({"concrete",  "marble",  "marble_bricks",  "granite",  "default:obsidian"}) do
      table.insert(circular_saw.known_stairs, "technic:" ..v);
if minetest.get_modpath("unifieddyes") then
   iclip_def.paramtype2 = "colorwallmounted"
   iclip_def.palette = "unifieddyes_palette_colorwallmounted.png"
   iclip_def.after_place_node = function(pos, placer, itemstack, pointed_thing)
      unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
      unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
   end
   iclip_def.after_dig_node = unifieddyes.after_dig_node
   iclip_def.groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1}
   iclipfence_def.paramtype2 = "color"
   iclipfence_def.palette = "unifieddyes_palette_extended.png"
   iclipfence_def.on_construct = unifieddyes.on_construct
   iclipfence_def.after_place_node = unifieddyes.recolor_on_place
   iclipfence_def.after_dig_node = unifieddyes.after_dig_node
   iclipfence_def.groups = {fence=1, choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1}
   iclipfence_def.place_param2 = 171 -- medium amber, low saturation, closest color to default:wood
end
function register_technic_stairs_alias(modname, origname, newmod, newname)
   minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname)
   minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted")
   minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", newmod..":slab_" .. newname .. "_wall")
   minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", newmod..":slab_" .. newname .. "_quarter")
   minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", newmod..":slab_" .. newname .. "_quarter_inverted")
   minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", newmod..":slab_" .. newname .. "_quarter_wall")
   minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", newmod..":slab_" .. newname .. "_three_quarter")
   minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", newmod..":slab_" .. newname .. "_three_quarter_inverted")
   minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", newmod..":slab_" .. newname .. "_three_quarter_wall")
   minetest.register_alias(modname .. ":stair_" .. origname, newmod..":stair_" .. newname)
   minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", newmod..":stair_" .. newname .. "_inverted")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", newmod..":stair_" .. newname .. "_wall")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_half", newmod..":stair_" .. newname .. "_half")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", newmod..":stair_" .. newname .. "_half_inverted")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", newmod..":stair_" .. newname .. "_right_half")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", newmod..":stair_" .. newname .. "_right_half_inverted")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", newmod..":stair_" .. newname .. "_inner")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", newmod..":stair_" .. newname .. "_inner_inverted")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", newmod..":stair_" .. newname .. "_outer")
   minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", newmod..":stair_" .. newname .. "_outer_inverted")
   minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", newmod..":panel_" .. newname .. "_bottom")
   minetest.register_alias(modname .. ":panel_" .. origname .. "_top", newmod..":panel_" .. newname .. "_top")
   minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical")
   minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom")
   minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top")
end
minetest.register_node(":technic:insulator_clip", iclip_def)
minetest.register_node(":technic:insulator_clip_fencepost", iclipfence_def)
register_technic_stairs_alias("stairsplus", "concrete", "technic", "concrete")
register_technic_stairs_alias("stairsplus", "marble", "technic", "marble")
register_technic_stairs_alias("stairsplus", "granite", "technic", "granite")
register_technic_stairs_alias("stairsplus", "marble_bricks", "technic", "marble_bricks")
minetest.register_craft({
   output = "technic:insulator_clip",
   recipe = {
      { "", "dye:white", ""},
      { "", "technic:raw_latex", ""},
      { "technic:raw_latex", "default:stone", "technic:raw_latex"},
   }
})
minetest.register_craft({
   output = "technic:insulator_clip_fencepost 2",
   recipe = {
      { "", "dye:white", ""},
      { "", "technic:raw_latex", ""},
      { "technic:raw_latex", "default:fence_wood", "technic:raw_latex"},
   }
})