123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- -- naming scheme: wire:(xp)(zp)(xm)(zm)_on/off
- -- The conditions in brackets define whether there is a digiline at that place or not
- -- 1 = there is one; 0 = there is none
- -- y always means y+
- local box_center = {-1/16, -.5, -1/16, 1/16, -.5+1/16, 1/16}
- local box_bump1 = { -2/16, -8/16, -2/16, 2/16, -13/32, 2/16 }
- local box_bump2 = { -3/32, -13/32, -3/32, 3/32, -12/32, 3/32 }
- local box_xp = {1/16, -.5, -1/16, 8/16, -.5+1/16, 1/16}
- local box_zp = {-1/16, -.5, 1/16, 1/16, -.5+1/16, 8/16}
- local box_xm = {-8/16, -.5, -1/16, -1/16, -.5+1/16, 1/16}
- local box_zm = {-1/16, -.5, -8/16, 1/16, -.5+1/16, -1/16}
- local box_xpy = {.5-1/16, -.5+1/16, -1/16, .5, .4999+1/16, 1/16}
- local box_zpy = {-1/16, -.5+1/16, .5-1/16, 1/16, .4999+1/16, .5}
- local box_xmy = {-.5, -.5+1/16, -1/16, -.5+1/16, .4999+1/16, 1/16}
- local box_zmy = {-1/16, -.5+1/16, -.5, 1/16, .4999+1/16, -.5+1/16}
- for xp=0, 1 do
- for zp=0, 1 do
- for xm=0, 1 do
- for zm=0, 1 do
- for xpy=0, 1 do
- for zpy=0, 1 do
- for xmy=0, 1 do
- for zmy=0, 1 do
- if (xpy == 1 and xp == 0) or (zpy == 1 and zp == 0)
- or (xmy == 1 and xm == 0) or (zmy == 1 and zm == 0) then break end
- local groups
- local nodeid = tostring(xp )..tostring(zp )..tostring(xm )..tostring(zm )..
- tostring(xpy)..tostring(zpy)..tostring(xmy)..tostring(zmy)
- local wiredesc
- if nodeid == "00000000" then
- groups = {dig_immediate = 3}
- wiredesc = "Digiline"
- else
- groups = {dig_immediate = 3, not_in_creative_inventory = 1}
- end
- local nodebox = {}
- local adjx = false
- local adjz = false
- if xp == 1 then table.insert(nodebox, box_xp) adjx = true end
- if zp == 1 then table.insert(nodebox, box_zp) adjz = true end
- if xm == 1 then table.insert(nodebox, box_xm) adjx = true end
- if zm == 1 then table.insert(nodebox, box_zm) adjz = true end
- if xpy == 1 then table.insert(nodebox, box_xpy) end
- if zpy == 1 then table.insert(nodebox, box_zpy) end
- if xmy == 1 then table.insert(nodebox, box_xmy) end
- if zmy == 1 then table.insert(nodebox, box_zmy) end
- local tiles
- if adjx and adjz and (xp + zp + xm + zm > 2) then
- table.insert(nodebox, box_bump1)
- table.insert(nodebox, box_bump2)
- tiles = {
- "digiline_std_bump.png",
- "digiline_std_bump.png",
- "digiline_std_vertical.png",
- "digiline_std_vertical.png",
- "digiline_std_vertical.png",
- "digiline_std_vertical.png"
- }
- else
- table.insert(nodebox, box_center)
- tiles = {
- "digiline_std.png",
- "digiline_std.png",
- "digiline_std_vertical.png",
- "digiline_std_vertical.png",
- "digiline_std_vertical.png",
- "digiline_std_vertical.png"
- }
- end
- if nodeid == "00000000" then
- nodebox = {-8/16, -.5, -1/16, 8/16, -.5+1/16, 1/16}
- end
- minetest.register_node("digilines:wire_std_"..nodeid, {
- description = wiredesc,
- drawtype = "nodebox",
- tiles = tiles,
- inventory_image = "digiline_std_inv.png",
- wield_image = "digiline_std_inv.png",
- paramtype = "light",
- paramtype2 = "facedir",
- sunlight_propagates = true,
- digiline =
- {
- wire =
- {
- basename = "digilines:wire_std_",
- use_autoconnect = true
- }
- },
- selection_box = {
- type = "fixed",
- fixed = {-.5, -.5, -.5, .5, -.5+1/16, .5}
- },
- node_box = {
- type = "fixed",
- fixed = nodebox
- },
- groups = groups,
- walkable = false,
- stack_max = 99,
- drop = "digilines:wire_std_00000000"
- })
- end
- end
- end
- end
- end
- end
- end
- end
|