-- File: codersea/seaglass.lua -- Purpose: CoderSea sea-glass support -- Credits: See "codersea.md" -- Licenses: See "LICENSE" -- Revision: 200329 -- =================================================================== local fcon = default.convert_force -- =================================================================== local function register_seaglass (suffix) local esuffix = suffix:gsub ("_", " " ) local nsuffix = suffix:gsub ("_", "" ) local base_on = "seaglass" .. suffix local node_on = "codersea:" .. base_on local img = "codersea_" .. base_on .. ".png" local old_base_off = "seaglassoff" .. suffix local base_off = "seaglass" .. suffix .. "_off" local old_node_off = "codersea:" .. old_base_off local node_off = "codersea:" .. base_off local groups = { snappy=2, cracky=3, oddly_breakable_by_hand=3, wrapwater=1, not_in_creative_inventory=1 } table.insert (seaglass_list, node_on) if suffix:len() > 0 then groups ["color" .. suffix] = 1 else groups ["nocolor"] = 1 end local params_base = { tiles = { img } , drawtype = "glasslike" , inventory_image = img , sunlight_propagates = true , is_ground_content = true , groups = groups , sounds = sounds_glass , } local params_off = CloneTable (params_base) params_off.paramtype = "light" -- params_off.light_source = 1 -- params_off.groups.noshine = 1 params_off.description = "Sea-glass" .. esuffix .. " off" minetest.register_node (node_off , params_off) local params_on = CloneTable (params_base) params_on.drop = node_off -- params_on.groups.shine = 1 params_on.paramtype = "light" params_on.light_source = 14 params_on.description = "Sea-glass".. esuffix .. " on" -- params_on.groups [ "shine" ] = 1 -- params_on.groups [ nsuffix .. "shine" ] = 1 minetest.register_node (node_on , params_on) if not codersea_disable_shine then codersea.register_shine (base_on, node_on, params_on.groups , { img } , "Sea-glass stair" .. esuffix , "Sea-glass slab" .. esuffix , sounds_glass) for _,which in pairs ({ "slab", "stair" }) do fcon ("stairs:" .. which .. "_" .. old_base_off , "codersea:shine_" .. which .. "_" .. base_off ) fcon ("stairs:" .. which .. "_" .. base_on , "codersea:shine_" .. which .. "_" .. base_on ) fcon ("stairsshine:" .. which .. "_" .. base_on , "codersea:shine_" .. which .. "_" .. base_on ) end end fcon (old_node_off, node_off ) fcon ("seaglass:" .. old_base_off , "codersea:" .. base_off ) fcon ("seaglass:" .. base_on , "codersea:" .. base_on ) end -- =================================================================== local on_glass_puncher = function (pos, node, puncher) local oldname = node.name local newname if not StartsWith (oldname, "codersea:seaglass") then return end if EndsWith (oldname, "_off") then newname = oldname:gsub ("_off", "") else newname = oldname .. "_off" end minetest.set_node (pos, { name=newname }) nodeupdate (pos) end -- =================================================================== minetest.register_on_punchnode (on_glass_puncher) for _,color in pairs (seaglass_colors) do if color:len() > 0 then color = "_" .. color end register_seaglass (color) end