summaryrefslogtreecommitdiff
path: root/framedglass
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-01-31 19:39:31 -0500
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-01-31 19:39:31 -0500
commit39f5cba27eef35877c91291f518974f34130fcb6 (patch)
tree117a9d1b7d4ee5f78f73e1216e982c366ed9ecc6 /framedglass
parent2922421f4a88e56a0a1c819f62bf2bc287835388 (diff)
downloaddreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.tar
dreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.tar.gz
dreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.tar.bz2
dreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.tar.xz
dreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.zip
Huge update - lots of mods:
areas, biome_lib, blox, bobblocks, boost_cart, homedecor, mobs, coloredwood, ilights, inbox, item_tweaks, moreblocks, moreores, pipeworks, plasticbox, signs_lib, stainedglass, roads, unifieddyes, vines, worldedit, xban2, maybe some others I didn't think about ;-)
Diffstat (limited to 'framedglass')
-rw-r--r--framedglass/init.lua159
1 files changed, 131 insertions, 28 deletions
diff --git a/framedglass/init.lua b/framedglass/init.lua
index bf50495..07f60d1 100644
--- a/framedglass/init.lua
+++ b/framedglass/init.lua
@@ -66,6 +66,110 @@ minetest.register_node("framedglass:wooden_framed_obsidian_glass", {
sounds = default.node_sound_glass_defaults(),
})
+-- helper functions copied partly from Unified Dyes
+
+local creative_mode = minetest.setting_getbool("creative_mode")
+
+local function select_node(pointed_thing)
+ local pos = pointed_thing.under
+ local node = minetest.get_node_or_nil(pos)
+ local def = node and minetest.registered_nodes[node.name]
+
+ if not def or not def.buildable_to then
+ pos = pointed_thing.above
+ node = minetest.get_node_or_nil(pos)
+ def = node and minetest.registered_nodes[node.name]
+ end
+ return def and pos, def
+end
+
+local function is_buildable_to(placer_name, ...)
+ for _, pos in ipairs({...}) do
+ local node = minetest.get_node_or_nil(pos)
+ local def = node and minetest.registered_nodes[node.name]
+ if not (def and def.buildable_to) or minetest.is_protected(pos, placer_name) then
+ return false
+ end
+ end
+ return true
+end
+
+local color_on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+
+ if not string.find(itemname, "dye:") then
+ if minetest.registered_nodes[node.name] then
+ local pos2 = select_node(pointed_thing)
+ if pos2 and is_buildable_to(clicker, pos2) then
+ minetest.set_node(pos2, { name = itemname })
+ if not creative_mode then
+ itemstack:take_item()
+ end
+ end
+ end
+ return itemstack
+ end
+
+ local a,b = string.find(node.name, "_glass")
+ local oldcolor = string.sub(node.name, b + 1)
+ local newcolor = string.sub(itemname, string.find(itemname, ":") + 1)
+
+ local oldcolor2 = string.gsub(oldcolor, "darkgreen", "dark_green")
+ local oldcolor2 = string.gsub(oldcolor2, "darkgrey", "dark_grey")
+
+ local newcolor2 = string.gsub(newcolor, "dark_green", "darkgreen")
+ local newcolor2 = string.gsub(newcolor2, "dark_grey", "darkgrey")
+
+ if oldcolor == newcolor2 then
+ minetest.chat_send_player(clicker:get_player_name(), "That node is already "..newcolor.."." )
+ return itemstack
+ end
+
+ if not (newcolor == "dark_grey"
+ or newcolor == "dark_green"
+ or minetest.registered_nodes["framedglass:steel_framed_obsidian_glass"..newcolor]) then
+ minetest.chat_send_player(clicker:get_player_name(), "Framed glass doesn't support "..newcolor.."." )
+ return itemstack
+ end
+
+ local inv = clicker:get_inventory()
+ local prevdye = "dye:"..oldcolor2
+
+ print(oldcolor, oldcolor2, newcolor, newcolor2, prevdye)
+
+ if not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then
+ if inv:room_for_item("main", prevdye) then
+ inv:add_item("main", prevdye)
+ else
+ minetest.add_item(pos, prevdye)
+ end
+ end
+
+ minetest.set_node(pos, { name = "framedglass:steel_framed_obsidian_glass"..newcolor2 })
+ itemstack:take_item()
+ return itemstack
+end
+
+local return_dye_after_dig = function(pos, oldnode, oldmetadata, digger)
+
+ local a,b = string.find(oldnode.name, "_glass")
+ local oldcolor = string.sub(oldnode.name, b + 1)
+ local oldcolor2 = string.gsub(oldcolor, "darkgreen", "dark_green")
+ local oldcolor2 = string.gsub(oldcolor2, "darkgrey", "dark_grey")
+
+ local prevdye = "dye:"..oldcolor2
+
+ local inv = digger:get_inventory()
+
+ if prevdye and not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then
+ if inv:room_for_item("main", prevdye) then
+ inv:add_item("main", prevdye)
+ else
+ minetest.add_item(pos, prevdye)
+ end
+ end
+end
+
minetest.register_node("framedglass:steel_framed_obsidian_glass", {
description = "Steel-framed Obsidian Glass",
drawtype = "glasslike_framed",
@@ -74,45 +178,44 @@ minetest.register_node("framedglass:steel_framed_obsidian_glass", {
sunlight_propagates = true,
groups = {cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(),
+ on_rightclick = color_on_rightclick,
+ after_dig_node = return_dye_after_dig
})
-function add_coloured_framedglass(name, desc, dye, texture)
+function add_coloured_framedglass(name, desc, color)
minetest.register_node( "framedglass:steel_framed_obsidian_glass"..name, {
description = "Steel-framed "..desc.." Obsidian Glass",
- tiles = {"framedglass_steel_frame.png",texture},
+ tiles = {
+ "framedglass_steel_frame.png",
+ { name = "framedglass_whiteglass.png", color = color }
+ },
drawtype = "glasslike_framed",
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
use_texture_alpha = true,
- groups = {cracky=3},
+ groups = {cracky=3, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(),
+ on_rightclick = color_on_rightclick,
+ after_dig_node = return_dye_after_dig,
+ drop = "framedglass:steel_framed_obsidian_glass"
})
-
- minetest.register_craft({
- type = "shapeless",
- output = "framedglass:steel_framed_obsidian_glass"..name,
- recipe = {
- "framedglass:steel_framed_glass",
- "group:basecolor_white",
- dye
- }
- })
-
end
-add_coloured_framedglass ("red","Red","group:basecolor_red","framedglass_redglass.png")
-add_coloured_framedglass ("green","Green","group:basecolor_green","framedglass_greenglass.png")
-add_coloured_framedglass ("blue","Blue","group:basecolor_blue","framedglass_blueglass.png")
-add_coloured_framedglass ("cyan","Cyan","group:basecolor_cyan","framedglass_cyanglass.png")
-add_coloured_framedglass ("darkgreen","Dark Green","group:unicolor_dark_green","framedglass_darkgreenglass.png")
-add_coloured_framedglass ("violet","Violet","group:excolor_violet","framedglass_violetglass.png")
-add_coloured_framedglass ("pink","Pink","group:unicolor_light_red","framedglass_pinkglass.png")
-add_coloured_framedglass ("yellow","Yellow","group:basecolor_yellow","framedglass_yellowglass.png")
-add_coloured_framedglass ("orange","Orange","group:basecolor_orange","framedglass_orangeglass.png")
-add_coloured_framedglass ("brown","Brown","group:unicolor_dark_orange","framedglass_brownglass.png")
-add_coloured_framedglass ("white","White","group:basecolor_white","framedglass_whiteglass.png")
-add_coloured_framedglass ("grey","Grey","group:basecolor_grey","framedglass_greyglass.png")
-add_coloured_framedglass ("darkgrey","Dark Grey","group:excolor_darkgrey","framedglass_darkgreyglass.png")
-add_coloured_framedglass ("black","Black","group:basecolor_black","framedglass_blackglass.png")
+add_coloured_framedglass ("red", "Red", 0xffff0000)
+add_coloured_framedglass ("orange", "Orange", 0xfffe7f00)
+add_coloured_framedglass ("yellow", "Yellow", 0xffffff01)
+add_coloured_framedglass ("green", "Green", 0xff0cff00)
+add_coloured_framedglass ("cyan", "Cyan", 0xff7affff)
+add_coloured_framedglass ("blue", "Blue", 0xff1600ff)
+add_coloured_framedglass ("violet", "Violet", 0xff7d00ff)
+add_coloured_framedglass ("magenta", "Magenta", 0xfffd05ff)
+
+add_coloured_framedglass ("darkgreen", "Dark Green", 0xff144f00)
+add_coloured_framedglass ("pink", "Pink", 0xffffa4a4)
+add_coloured_framedglass ("brown", "Brown", 0xff542a00)
+add_coloured_framedglass ("white", "White", 0xffffffff)
+add_coloured_framedglass ("grey", "Grey", 0xff7f817e)
+add_coloured_framedglass ("darkgrey", "Dark Grey", 0xff3f403e)
+add_coloured_framedglass ("black", "Black", 0xff000000)