trapglass variants added. settings.txt enhanced.

This commit is contained in:
andersje
2013-08-31 21:31:05 -05:00
parent da48353f86
commit 5dc18596b9
3 changed files with 104 additions and 9 deletions

102
init.lua
View File

@ -70,29 +70,101 @@ function makenode(arg)
local name=arg.blockname
local myglow=arg.glow
local myprefix=arg.prefix
local imagename=arg.imagename
local safe=arg.walkflag
local Description
local function tchelper(first, rest)
return first:upper()..rest:lower()
end -- from lua-users.org/wiki/StringRecipes
-- above function is used to turn red_violet_s50 to 'Red Violet S50'
--register item attributes
Description=string.gsub("Stained Glass - " ..myprefix..name, "_", " ")
Description=Description:gsub("(%a)([%w_']*)", tchelper)
minetest.register_node("stained_glass:"..myprefix..name, {
description = "Stained Glass - "..myprefix..name,
description = Description,
drawtype = "glasslike",
tiles = {"stained_glass_" .. name .. ".png"},
tiles = {"stained_glass_" .. imagename .. ".png"},
paramtype = "light",
sunlight_propagates = true,
use_texture_alpha = true,
light_source = myglow,
is_ground_content = true,
walkable=safe, -- if not safe, this is trapglass
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults()
})
end
-- maybe someday, I can cleanly combine these two functions.
function stained_trapglass_define(arg)
local code=arg.colorcode
local name=arg.colorname
local rawdyename=arg.recipe
local mydye=arg.recipe
local myshadename=arg.shade
local imagename=name
local stained_glass_blocktype = { }
local stained_glass_lightlevel = { }
if stained_glass.trap_full_light then
stained_glass_lightlevel[""] = LIGHT_MAX
stained_glass_blocktype[""] = "moreblocks:trap_super_glow_glass"
end -- see settings.txt for these settings.
if stained_glass.trap_med_light then
stained_glass_lightlevel["lowglow_"] = LIGHT_MAX-3
stained_glass_blocktype["lowglow_"] = "moreblocks:trap_glow_glass"
end
if stained_glass.trap_no_light then
stained_glass_lightlevel["noglow_"] = 0
stained_glass_blocktype["noglow_"] = "moreblocks:trap_glass"
end
for myprefix,myglow in pairs(stained_glass_lightlevel) do
local glasstype = stained_glass_blocktype[myprefix]
local name="trap_" .. name
-- define myrecipe as a table, pass it in.
local myrecipe = { mydye, glasstype, glasstype, glasstype }
-- those four items will ALWAYS be there. For faint and pastel, we
-- need to add additional dyes. If you have defined a new shade, then
-- you should probably handle it here.
if myshadename == "pastel_" then
myrecipe[5] = "dye:white"
end
if myshadename == "faint_" then
myrecipe[5] = "dye:white"
myrecipe[6] = "dye:white"
end
minetest.register_craft({
type = "shapeless",
output = "stained_glass:"..myprefix..name.." 3",
recipe = myrecipe,
})
makenode{blockname=name, glow=myglow, prefix=myprefix, imagename=imagename, walkflag=false}
end
end
function stained_glass_define(arg)
local code=arg.colorcode
local name=arg.colorname
local rawdyename=arg.recipe
local mydye=arg.recipe
local myshadename=arg.shade
local imagename=name
local stained_glass_blocktype = { }
@ -138,14 +210,15 @@ function stained_glass_define(arg)
recipe = myrecipe,
})
makenode{blockname=name, glow=myglow, prefix=myprefix}
makenode{blockname=name, glow=myglow, prefix=myprefix, imagename=name, walkflag=true}
if myprefix == "" then
local aliasname
minetest.register_alias( "stained_glass:" .. code, "stained_glass:" .. name)
if string.match(name,"redviolet") then
oldname=name
name=string.gsub(name, "redviolet","red_violet") -- need to support red_violet existence, too.
minetest.register_alias( "stained_glass:" .. name, "stained_glass:" .. oldname)
aliasname=string.gsub(name, "redviolet","red_violet") -- need to support red_violet existence, too.
minetest.register_alias( "stained_glass:" .. aliasname, "stained_glass:" .. oldname)
end
end
-- and an alias from the numeric to the named block
@ -231,6 +304,13 @@ for i in ipairs(stained_glass_hues) do
shade = shadename,
})
stained_trapglass_define({
colorcode = huenumber.."_"..shadenumber.."_7",
colorname = shadename..huename,
recipe = recipevalue,
shade = shadename,
}) -- only defines something if the trap is enabled.
-- below is the automatic "half saturation" block
-- which was mentioned previously
-- this is unicolor only, so switch dyename
@ -242,6 +322,12 @@ for i in ipairs(stained_glass_hues) do
recipe = recipevalue.."_s50",
shade = shadename,
})
stained_trapglass_define({
colorcode = huenumber.."_"..shadenumber.."_6",
colorname = shadename..huename.."_s50",
recipe = recipevalue.."_s50",
shade = shadename,
}) -- only defines something if the trap is enabled.
-- because we define two blocks inside this chunk of
-- code, we can't just define the relevant vars and
-- move the proc_call after the if-then loop.
@ -253,6 +339,12 @@ for i in ipairs(stained_glass_hues) do
recipe = recipevalue,
shade = shadename,
})
stained_trapglass_define({
colorcode = huenumber.."_"..shadenumber.."_",
colorname = shadename..huename,
recipe = recipevalue,
shade = shadename,
}) -- only defines something if the trap is enabled.
end