summaryrefslogtreecommitdiff
path: root/stained_glass/init.lua
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 20:02:19 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:09:33 -0400
commitda66780a569712c23ae4f2996cfb4608a9f9d69d (patch)
tree217556029a78bc23ad4564720afc86de97228a04 /stained_glass/init.lua
parent615b22df4d423aded3613db7716943a2f389b047 (diff)
downloaddreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar.gz
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar.bz2
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar.xz
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.zip
copy all standard Dreambuilder mods in from the old subgame
(exactly as last supplied there, updates to these mods will follow later)
Diffstat (limited to 'stained_glass/init.lua')
-rw-r--r--stained_glass/init.lua356
1 files changed, 356 insertions, 0 deletions
diff --git a/stained_glass/init.lua b/stained_glass/init.lua
new file mode 100644
index 0000000..be804e9
--- /dev/null
+++ b/stained_glass/init.lua
@@ -0,0 +1,356 @@
+--[[
+
+Stained Glass
+
+This mod provides luminescent stained glass blocks for Minetest 0.4.7+
+
+Depends:
+[moreblocks] by Calinou
+[unifieddyes] by VanessaE
+
+==============================================================================
+Sat 04 May 2013 01:52:35 PM EDT
+
+Copyright (C) 2013, Eli Innis
+Email: doyousketch2 @ yahoo.com
+
+Unified Dyes was released under GNU-GPL 2.0, see LICENSE for info.
+More Blocks was released under zlib/libpng for code and CC BY-SA 3.0 Unported for textures, see LICENSE.txt for info.
+
+Additional changes by VanessaEzekowitz in July 2013 to take all items
+out of creative inventory.
+
+August 2013 -- Jeremy Anderson tries to get this working after the new color
+changes, and to resurrect the craft recipes. Still GPL'd as far as I'm concerned.
+
+August 2013 -- rewritten a bit by VanessaEzekowitz to further condense the code.
+
+==============================================================================
+
+
+Recipe for standard colors:
+
+dye
+super glow glass
+super glow glass
+super glow glass
+
+
+Recipe for pastel colors:
+
+light dye
+white paint
+super glow glass
+super glow glass
+super glow glass
+
+
+Recipe for faint colors:
+
+light dye
+white paint
+white paint
+super glow glass
+super glow glass
+super glow glass
+
+recipe for low-glow-stained-glass:
+as above, but substitute 'glow glass' for super glow glass.
+
+recipe for no-glow-stained-glass:
+as regular stained glass, but substitute plain 'glass' for super glow glass
+
+
+All recipes produce three stained glass blocks.
+
+==============================================================================
+]]--
+
+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 = Description,
+ drawtype = "glasslike",
+ 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 = { }
+
+ local stained_glass_lightlevel = { }
+
+ if stained_glass.full_light then
+ stained_glass_lightlevel[""] = LIGHT_MAX
+ stained_glass_blocktype[""] = "moreblocks:super_glow_glass"
+ end -- see settings.txt for these settings.
+
+ if stained_glass.med_light then
+ stained_glass_lightlevel["lowglow_"] = LIGHT_MAX-3
+ stained_glass_blocktype["lowglow_"] = "moreblocks:glow_glass"
+ end
+
+ if stained_glass.no_light then
+ stained_glass_lightlevel["noglow_"] = 0
+ stained_glass_blocktype["noglow_"] = "default:glass"
+ end
+
+ for myprefix,myglow in pairs(stained_glass_lightlevel) do
+ local glasstype = stained_glass_blocktype[myprefix]
+
+ -- 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=name, walkflag=true}
+
+ if myprefix == "" then
+ local aliasname
+ minetest.register_alias( "stained_glass:" .. code, "stained_glass:" .. name)
+ if string.match(name,"redviolet") then
+ local oldname=name
+ 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
+ -- we need to keep the numeric block for all the people that used
+ -- pre-v1.4 blocks in their worlds.
+ -- no aliases for noglow- and lowglow- blocks, because they didn't
+ -- exist until v1.5
+ end
+end
+
+-- true means this color's recipe must use a direct "dye:xxxxx" item name
+-- (perhaps because the related groups overlap two or more distinct colors)
+-- false means the recipe uses "group:dye,unicolor_xxxxx"
+
+stained_glass= {}
+local worldpath=minetest.get_worldpath()
+local modpath=minetest.get_modpath("stained_glass")
+dofile(modpath .. "/settings.txt")
+
+-- the new settings.txt file has a variety of possible settings.
+-- see the file for examples. We'll access those settings where its important, in
+-- the stained glass module, where we'll build up the tables to contain
+-- only what we need.
+
+stained_glass_hues = {
+ { "yellow", true },
+ { "lime", false },
+ { "green", true },
+ { "aqua", false },
+ { "cyan", false },
+ { "skyblue", true },
+ { "blue", false },
+ { "violet", false },
+ { "magenta", true },
+ { "redviolet", true },
+ { "red", true },
+ { "orange", false },
+
+-- please note that these only apply when our shadelevel is ""
+
+}
+
+stained_glass_shades = {
+ {"dark_", 3 },
+ {"medium_", 4 },
+ {"", 5 }, -- full brightness
+ {"light_", 8 },
+ {"pastel_", 9 },
+ {"faint_", 91 }
+
+ -- note that dark_ medium_ and plain also have a half-saturation
+ -- equivalent automatically defined in the code
+}
+
+for i in ipairs(stained_glass_hues) do
+
+ local huename = stained_glass_hues[i][1]
+ local huenumber = i
+
+ for j in ipairs(stained_glass_shades) do
+
+ local shadename = stained_glass_shades[j][1]
+ local shadenumber = stained_glass_shades[j][2]
+
+ local recipevalue = nil
+
+ recipevalue = "group:dye,unicolor_"..shadename..huename
+ if (shadename == "" and stained_glass_hues[i][2]) then
+ -- print(huename .. " is set to true -- substituting dye:huename ")
+ recipevalue = "dye:"..huename
+ elseif (shadename=="pastel_" or shadename=="faint_") then
+ -- force light_dye for pastel and faint colors
+ recipevalue = "group:dye,unicolor_light_"..huename
+ else -- default case
+ recipevalue = "group:dye,unicolor_"..shadename..huename
+ end
+
+ if shadename == "dark_" or shadename == "medium_" or shadename == "" then
+ stained_glass_define({
+ colorcode = huenumber.."_"..shadenumber.."_7",
+ colorname = shadename..huename,
+ recipe = recipevalue,
+ 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
+ -- back to unicolor...
+ recipevalue="group:dye,unicolor_"..shadename..huename
+ stained_glass_define({
+ colorcode = huenumber.."_"..shadenumber.."_6",
+ colorname = shadename..huename.."_s50",
+ 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.
+
+ elseif shadename == "light_" or shadename == "pastel_" or shadename == "faint_" then
+ stained_glass_define({
+ colorcode = huenumber.."_"..shadenumber,
+ colorname = shadename..huename,
+ 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
+
+ end
+end
+
+print("[stained_glass] Loaded!")
+
+