forked from mtcontrib/minetest-mod-sea
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			nalc-1.0
			...
			b0fd455b7e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b0fd455b7e | |||
| e1ca03e6f3 | |||
| b2fc8936bf | |||
| 5ec73557de | |||
| ef1efe65d9 | 
| @@ -1,3 +1,6 @@ | ||||
| local sand_sounds = minetest.registered_nodes["default:sand"].sounds | ||||
| local dirt_sounds = minetest.registered_nodes["default:dirt"].sounds | ||||
|  | ||||
| -- NODES | ||||
|  | ||||
| minetest.register_node("clams:sandalgae", { | ||||
| @@ -16,7 +19,7 @@ minetest.register_node("clams:sandalgae", { | ||||
| 			} | ||||
| 		} | ||||
| 	}, | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| 	sounds = sand_sounds, | ||||
| }) | ||||
|  | ||||
| minetest.register_node("clams:dirtalgae", { | ||||
| @@ -35,25 +38,25 @@ minetest.register_node("clams:dirtalgae", { | ||||
| 			} | ||||
| 		} | ||||
| 	}, | ||||
| 	sounds = default.node_sound_dirt_defaults,	 | ||||
| 	sounds = dirt_sounds, | ||||
| }) | ||||
|  | ||||
| minetest.register_node("clams:sandalgaeused", { | ||||
| 	description = "Used sandalgae", | ||||
| 	tiles = {"default_sand.png^clams_algaeused.png"}, | ||||
| 	inventory_image = {"default_sand.png^clams_algaeused.png"}, | ||||
| 	inventory_image = "default_sand.png^clams_algaeused.png", | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1}, | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| 	sounds = sand_sounds, | ||||
| }) | ||||
|  | ||||
| minetest.register_node("clams:dirtalgaeused", { | ||||
| 	description = "Used dirtalgae", | ||||
| 	tiles = {"default_dirt.png^clams_algaeused.png"}, | ||||
| 	inventory_image = {"default_dirt.png^clams_algaeused.png"}, | ||||
| 	inventory_image = "default_dirt.png^clams_algaeused.png", | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3}, | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| 	sounds = dirt_sounds, | ||||
| }) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| default | ||||
| noairblocks | ||||
| nalc_lib | ||||
| unifieddyes | ||||
| colormachine? | ||||
| colormachine? | ||||
|   | ||||
| @@ -1,639 +1,174 @@ | ||||
| -- NODES | ||||
|  | ||||
| -- Add magenta, aqua, skyblue seacorals | ||||
| for color, cname in pairs({magenta = "Magenta", aqua = "Aqua", skyblue = "Skyblue"}) do | ||||
| 	minetest.register_node( | ||||
| 		"seacoral:coral_"..color, { | ||||
| 			description = cname.." Coral", | ||||
| 			drawtype = "plantlike_rooted", | ||||
| 			waving = 1, | ||||
| 			paramtype = "light", | ||||
| 			tiles = {"default_coral_skeleton.png"}, | ||||
| 			special_tiles = {{name = "seacoral_coral"..color..".png", tileable_vertical = true}}, | ||||
| 			inventory_image = "seacoral_coral"..color..".png", | ||||
| 			groups = {snappy = 3, seacoral = 1}, | ||||
| 			selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = { | ||||
| 					{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, | ||||
| 					{-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			node_dig_prediction = "default:coral_skeleton", | ||||
| 			node_placement_prediction = "", | ||||
| 			sounds = default.node_sound_stone_defaults( | ||||
| 				{ | ||||
| 					dig = {name = "default_dig_snappy", gain = 0.2}, | ||||
| 					dug = {name = "default_grass_footstep", gain = 0.25}, | ||||
| 				}), | ||||
|  | ||||
| minetest.register_node("seacoral:coralcyan", { | ||||
| 	description = "Cyan Coral", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seacoral_coralcyan.png"}, | ||||
| 	inventory_image = "seacoral_coralcyan.png", | ||||
| 	wield_image = "seacoral_coralcyan.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seacoral=1, sea=1,basecolor_cyan=1}, | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| 			on_place = function(itemstack, placer, pointed_thing) | ||||
| 				if pointed_thing.type ~= "node" or not placer then | ||||
| 					return itemstack | ||||
| 				end | ||||
|  | ||||
| 				local player_name = placer:get_player_name() | ||||
| 				local pos_under = pointed_thing.under | ||||
| 				local pos_above = pointed_thing.above | ||||
|  | ||||
| 				if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or | ||||
| 				minetest.get_node(pos_above).name ~= "default:water_source" then | ||||
| 					return itemstack | ||||
| 				end | ||||
|  | ||||
| 				if minetest.is_protected(pos_under, player_name) or | ||||
| 				minetest.is_protected(pos_above, player_name) then | ||||
| 					minetest.chat_send_player(player_name, "Node is protected") | ||||
| 					minetest.record_protection_violation(pos_under, player_name) | ||||
| 					return itemstack | ||||
| 				end | ||||
|  | ||||
| 				minetest.set_node(pos_under, {name = "seacoral:coral"..color}) | ||||
| 				if not (creative and creative.is_enabled_for(player_name)) then | ||||
| 					itemstack:take_item() | ||||
| 				end | ||||
|  | ||||
| 				return itemstack | ||||
| 			end, | ||||
|  | ||||
| 			after_destruct = function(pos, oldnode) | ||||
| 				minetest.set_node(pos, {name = "default:coral_skeleton"}) | ||||
| 			end, | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:coralmagenta", { | ||||
| 	description = "Magenta Coral", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seacoral_coralmagenta.png"}, | ||||
| 	inventory_image = "seacoral_coralmagenta.png", | ||||
| 	wield_image = "seacoral_coralmagenta.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seacoral=1, sea=1,basecolor_magenta=1}, | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
| 	-- Replace Old seacorals with new defined ones | ||||
| 	minetest.register_alias("seacoral:coral"..color, "default:water_source") | ||||
| 	minetest.register_alias("seacoral:seacoralsand"..color, "seacoral:coral_"..color) | ||||
| 	minetest.register_alias("seacoral:seacoraldirt"..color, "seacoral:coral_"..color) | ||||
| end | ||||
|  | ||||
| minetest.register_node("seacoral:coralaqua", { | ||||
| 	description = "Aqua Coral", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seacoral_coralaqua.png"}, | ||||
| 	inventory_image = "seacoral_coralaqua.png", | ||||
| 	wield_image = "seacoral_coralaqua.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seacoral=1, sea=1,excolor_aqua=1}, | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
| -- Replace cyan, redviolet, lime seacorals with default Minetest's ones | ||||
| minetest.register_alias("seacoral:coralcyan", "default:water_source") | ||||
| minetest.register_alias("seacoral:seacoralsandcyan", "default:coral_cyan") | ||||
| minetest.register_alias("seacoral:seacoraldirtcyan", "default:coral_cyan") | ||||
| nalc.add_group("default:coral_cyan", "seacoral", 1) | ||||
|  | ||||
| minetest.register_node("seacoral:corallime", { | ||||
| 	description = "Lime Coral", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seacoral_corallime.png"}, | ||||
| 	inventory_image = "seacoral_corallime.png", | ||||
| 	wield_image = "seacoral_corallime.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seacoral=1, sea=1,excolor_lime=1}, | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:coralskyblue", { | ||||
| 	description = "Skyblue Coral", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seacoral_coralskyblue.png"}, | ||||
| 	inventory_image = "seacoral_coralskyblue.png", | ||||
| 	wield_image = "seacoral_coralskyblue.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seacoral=1, sea=1,excolor_skyblue=1}, | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:coralredviolet", { | ||||
| 	description = "Redviolet Coral", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seacoral_coralredviolet.png"}, | ||||
| 	inventory_image = "seacoral_coralredviolet.png", | ||||
| 	wield_image = "seacoral_coralredviolet.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seacoral=1, sea=1,excolor_redviolet=1}, | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoralsandcyan", { | ||||
| 	description = "Sea coral sand cyan", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoraldirtcyan", { | ||||
| 	description = "Sea coral dirt cyan", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoralsandmagenta", { | ||||
| 	description = "Sea coral sand magenta", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoraldirtmagenta", { | ||||
| 	description = "Sea coral dirt magenta", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoralsandaqua", { | ||||
| 	description = "Sea coral sand aqua", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoraldirtaqua", { | ||||
| 	description = "Sea coral dirt aqua", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoralsandlime", { | ||||
| 	description = "Sea coral sand lime", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoraldirtlime", { | ||||
| 	description = "Sea coral dirt lime", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoralsandskyblue", { | ||||
| 	description = "Sea coral sand skyblue", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoraldirtskyblue", { | ||||
| 	description = "Sea coral dirt skyblue", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoralsandredviolet", { | ||||
| 	description = "Sea coral sand redviolet", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seacoral:seacoraldirtredviolet", { | ||||
| 	description = "Sea coral dirt redviolet", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
| minetest.register_alias("seacoral:coralredviolet", "default:water_source") | ||||
| minetest.register_alias("seacoral:seacoralsandredviolet", "default:coral_pink") | ||||
| minetest.register_alias("seacoral:seacoraldirtredviolet", "default:coral_pink") | ||||
| nalc.add_group("default:coral_pink", "seacoral", 1) | ||||
|  | ||||
| minetest.register_alias("seacoral:corallime", "default:water_source") | ||||
| minetest.register_alias("seacoral:seacoralsandlime", "default:coral_green") | ||||
| minetest.register_alias("seacoral:seacoraldirtlime", "default:coral_green") | ||||
| nalc.add_group("default:coral_green", "seacoral", 1) | ||||
|  | ||||
| -- CRAFTING | ||||
|  | ||||
|  | ||||
| if( minetest.get_modpath( "colormachine") == nil ) then | ||||
| 	register_seacoral_craft = function(output,recipe) | ||||
|     	minetest.register_craft({ | ||||
|         type = 'shapeless', | ||||
|         output = output, | ||||
|         recipe = recipe, | ||||
| 	}) | ||||
| 		minetest.register_craft( | ||||
| 			{ | ||||
| 				type = 'shapeless', | ||||
| 				output = output, | ||||
| 				recipe = recipe, | ||||
| 			}) | ||||
| 	end | ||||
|  | ||||
| register_seacoral_craft('dye:cyan 4', {'seacoral:coralcyan'}) | ||||
| register_seacoral_craft('dye:magenta 4', {'seacoral:coralmagenta'}) | ||||
| register_seacoral_craft('dye:lime 4', {'seacoral:corallime'}) | ||||
| register_seacoral_craft('dye:aqua 4', {'seacoral:coralaqua'}) | ||||
| register_seacoral_craft('dye:skyblue 4', {'seacoral:coralskyblue'}) | ||||
| register_seacoral_craft('dye:redviolet 4', {'seacoral:coralredviolet'}) | ||||
| 	register_seacoral_craft('dye:cyan 4', {'default:coral_cyan'}) | ||||
| 	register_seacoral_craft('dye:magenta 4', {'seacoral:coral_magenta'}) | ||||
| 	register_seacoral_craft('dye:lime 4', {'default:coral_green'}) | ||||
| 	register_seacoral_craft('dye:spring 4', {'seacoral:coral_aqua'}) | ||||
| 	register_seacoral_craft('dye:azure 4', {'seacoral:coral_skyblue'}) | ||||
| 	register_seacoral_craft('dye:pink 4', {'default:coral_pink'}) | ||||
| end | ||||
|  | ||||
| -- SEACORAL SAND AND DIRT GENERATION | ||||
|  | ||||
| -- Coral reef | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoralsandcyan", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoraldirtcyan", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoralsandmagenta", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoraldirtmagenta", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoralsandaqua", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoraldirtaqua", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoralsandlime", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoraldirtlime", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoralsandskyblue", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoraldirtskyblue", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoralsandredviolet", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seacoral:seacoraldirtredviolet", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -4, | ||||
| 	y_min     = -8, | ||||
| }) | ||||
|  | ||||
| local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, y_min, y_max) | ||||
| 	if maxp.y < y_min or minp.y > y_max then | ||||
| 		return | ||||
| 	end | ||||
| 	local y_min = math.max(minp.y, y_min) | ||||
| 	local y_max = math.min(maxp.y, y_max) | ||||
| 	if chunk_size >= y_max - y_min + 1 then | ||||
| 		return | ||||
| 	end | ||||
| 	local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) | ||||
| 	local pr = PseudoRandom(seed) | ||||
| 	local num_chunks = math.floor(chunks_per_volume * volume) | ||||
| 	local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) | ||||
| 	for i=1,num_chunks do | ||||
| 		local y0 = pr:next(y_min, y_max-chunk_size+1) | ||||
| 		if y0 >= y_min and y0 <= y_max then | ||||
| 			local x0 = pr:next(minp.x, maxp.x-chunk_size+1) | ||||
| 			local z0 = pr:next(minp.z, maxp.z-chunk_size+1) | ||||
| 			local p0 = {x=x0, y=y0, z=z0} | ||||
| 			for x1=0,chunk_size-1 do | ||||
| 			for y1=0,chunk_size-1 do | ||||
| 			for z1=0,chunk_size-1 do | ||||
| 				if pr:next(1,inverse_chance) == 1 then | ||||
| 					local x2 = x0+x1 | ||||
| 					local y2 = y0+y1 | ||||
| 					local z2 = z0+z1 | ||||
| 					local p2 = {x=x2, y=y2, z=z2} | ||||
| 					if minetest.get_node(p2).name == wherein then | ||||
| 						minetest.set_node(p2, {name=name}) | ||||
| 					end | ||||
| 				end | ||||
| 			end | ||||
| 			end | ||||
| 			end | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| minetest.register_decoration( | ||||
| 	{ | ||||
| 		name = "seacoral:corals", | ||||
| 		deco_type = "simple", | ||||
| 		place_on = {"default:sand"}, | ||||
| 		place_offset_y = -1, | ||||
| 		sidelen = 4, | ||||
| 		noise_params = { | ||||
| 			offset = -4, | ||||
| 			scale = 4, | ||||
| 			spread = {x = 50, y = 50, z = 50}, | ||||
| 			seed = 7014, | ||||
| 			octaves = 3, | ||||
| 			persist = 0.7, | ||||
| 		}, | ||||
| 		biomes = { | ||||
| 			"desert_ocean", | ||||
| 			"savanna_ocean", | ||||
| 			"rainforest_ocean", | ||||
| 		}, | ||||
| 		y_max = -2, | ||||
| 		y_min = -8, | ||||
| 		flags = "force_placement", | ||||
| 		decoration = { | ||||
| 			"seacoral:coral_magenta", "default:coral_orange", | ||||
| 			"seacoral:coral_aqua", "default:coral_brown", | ||||
| 			"seacoral:coral_skyblue", "default:coral_skeleton", | ||||
| 			"default:coral_green", "default:coral_pink", | ||||
| 			"default:coral_cyan" | ||||
| 		}, | ||||
| 	}) | ||||
|  | ||||
| -- ABM'S | ||||
|  | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoraldirtcyan"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralcyan"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoralsandcyan"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralcyan"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoraldirtmagenta"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralmagenta"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoralsandmagenta"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralmagenta"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoraldirtaqua"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralaqua"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoralsandaqua"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralaqua"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoraldirtlime"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:corallime"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoralsandlime"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:corallime"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoraldirtskyblue"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralskyblue"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoralsandskyblue"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralskyblue"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoraldirtredviolet"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralredviolet"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seacoral:seacoralsandredviolet"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seacoral:coralredviolet"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"group:seacoral"}, | ||||
| interval = 3, | ||||
| chance = 1, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	local yyp = {x = pos.x, y = pos.y + 2, z = pos.z} | ||||
| 	if ((minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") and | ||||
| 	(minetest.get_node(yyp).name == "default:water_source" or | ||||
| 	minetest.get_node(yyp).name == "noairblocks:water_sourcex")) then | ||||
| 		local objs = minetest.get_objects_inside_radius(pos, 2) | ||||
| 		for k, obj in pairs(objs) do | ||||
| 			obj:set_hp(obj:get_hp()+ 1) | ||||
| minetest.register_abm( | ||||
| 	{ | ||||
| 		nodenames = {"group:seacoral"}, | ||||
| 		interval = 3, | ||||
| 		chance = 1, | ||||
| 		action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 			local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 			local yyp = {x = pos.x, y = pos.y + 2, z = pos.z} | ||||
| 			if ((minetest.get_node(yp).name == "default:water_source" or | ||||
| 					  minetest.get_node(yp).name == "noairblocks:water_sourcex") and | ||||
| 					 (minetest.get_node(yyp).name == "default:water_source" or | ||||
| 					  minetest.get_node(yyp).name == "noairblocks:water_sourcex")) then | ||||
| 				local objs = minetest.get_objects_inside_radius(pos, 2) | ||||
| 				for k, obj in pairs(objs) do | ||||
| 					obj:set_hp(obj:get_hp()+ 1) | ||||
| 				end | ||||
| 			else | ||||
| 				return | ||||
| 			end | ||||
| 		end | ||||
| 	else | ||||
| 	return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
| 	}) | ||||
|  | ||||
|  | ||||
| -- OPTIONAL DEPENDENCY | ||||
|  | ||||
|  | ||||
| if( minetest.get_modpath( "colormachine") ~= nil ) then | ||||
| 	colormachine.basic_dye_sources  = { "flowers:rose", "flowers:tulip", "flowers:dandelion_yellow", "seacoral:corallime", "default:cactus", "seacoral:coralaqua", "seacoral:coralcyan", "seacoral:coralskyblue", "flowers:geranium", "flowers:viola", "seacoral:coralmagenta", "seacoral:coralredviolet", "default:stone", "", "", "", "default:coal_lump" }; | ||||
| 	colormachine.basic_dye_sources  = { "flowers:rose", "flowers:tulip", "flowers:dandelion_yellow", "default:coral_green", "default:cactus", "seacoral:coral_aqua", "default::coral_cyan", "seacoral:coral_skyblue", "flowers:geranium", "flowers:viola", "seacoral:coral_magenta", "default:coral_pink", "default:stone", "", "", "", "default:coal_lump" }; | ||||
| 	else | ||||
| 	return | ||||
| end | ||||
| @@ -645,8 +180,8 @@ end | ||||
| minetest.register_alias("seadye:cyan","dye:cyan") | ||||
| minetest.register_alias("seadye:magenta","dye:magenta") | ||||
| minetest.register_alias("seadye:lime","dye:lime") | ||||
| minetest.register_alias("seadye:aqua","dye:aqua") | ||||
| minetest.register_alias("seadye:skyblue","dye:skyblue") | ||||
| minetest.register_alias("seadye:redviolet","dye:redviolet") | ||||
| minetest.register_alias("seadye:aqua","dye:spring") | ||||
| minetest.register_alias("seadye:skyblue","dye:azure") | ||||
| minetest.register_alias("seadye:redviolet","dye:pink") | ||||
|  | ||||
| minetest.log("action", "[sea - seacoral] loaded.") | ||||
|   | ||||
| @@ -1,248 +1,107 @@ | ||||
| -- NODES | ||||
|  | ||||
| local repl = { | ||||
|    ["off"] = "", | ||||
|    ["on"] = "off", | ||||
| } | ||||
|  | ||||
| minetest.register_node("seaglass:seaglass", { | ||||
| 	description = "Standard seaglass on", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	light_source = 14, | ||||
| 	is_ground_content = true, | ||||
| 	drop = 'seaglass:seaglassoff', | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, shine=1, not_in_creative_inventory=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
| local colors = {"yellow", "red", "blue", "white", "black"} | ||||
|  | ||||
| minetest.register_node("seaglass:seaglass_yellow", { | ||||
| 	description = "Seaglass yellow on", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_yellow.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_yellow.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	light_source = 14, | ||||
| 	is_ground_content = true, | ||||
| 	drop = 'seaglass:seaglassoff_yellow', | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_yellow=1, shine=1, yellowshine=1, not_in_creative_inventory=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
| local function register_glass(suffix, color, cgroups) | ||||
|    -- suffix : bool (false:off | true:on) | ||||
|    local desc = "Seaglass " | ||||
|  | ||||
| minetest.register_node("seaglass:seaglass_red", { | ||||
| 	description = "Seaglass red on", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_red.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_red.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	light_source = 14, | ||||
| 	is_ground_content = true, | ||||
| 	drop = 'seaglass:seaglassoff_red', | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_red=1, shine=1, redshine=1, not_in_creative_inventory=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
|    local col, c = "", "" | ||||
|    if color and color ~= "" then | ||||
|       col,c = color, "_"..color | ||||
|       desc = desc..color.." " | ||||
|    end | ||||
|  | ||||
| minetest.register_node("seaglass:seaglass_blue", { | ||||
| 	description = "Seaglass blue on", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_blue.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_blue.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	light_source = 14, | ||||
| 	is_ground_content = true, | ||||
| 	drop = 'seaglass:seaglassoff_blue', | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_blue=1, shine=1, blueshine=1, not_in_creative_inventory=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
|    local l, light, ls = "", "on", 7 | ||||
|    if not suffix then | ||||
|       l,light = "off","off" | ||||
|       ls = 0 | ||||
|    end | ||||
|  | ||||
| minetest.register_node("seaglass:seaglass_white", { | ||||
| 	description = "Seaglass white on", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_white.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_white.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	light_source = 14, | ||||
| 	is_ground_content = true, | ||||
| 	drop = 'seaglass:seaglassoff_white', | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_white=1, shine=1, whiteshine=1, not_in_creative_inventory=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
|    desc = desc..light | ||||
|     | ||||
|    minetest.register_node( | ||||
|       "seaglass:seaglass"..l..c, | ||||
|       { | ||||
| 	 description = desc, | ||||
| 	 drawtype = "glasslike", | ||||
| 	 tiles = {"seaglass_seaglass"..c..".png"}, | ||||
| 	 inventory_image = minetest.inventorycube("seaglass_seaglass"..c..".png"), | ||||
| 	 paramtype = "light", | ||||
| 	 sunlight_propagates = true, | ||||
| 	 light_source = ls, | ||||
| 	 is_ground_content = true, | ||||
| 	 drop = "seaglass:seaglassoff"..c, | ||||
| 	 groups = cgroups, -- {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, shine=1, not_in_creative_inventory=1}, | ||||
| 	 sounds = default.node_sound_glass_defaults(), | ||||
| 	 on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 	    node.name = "seaglass:seaglass"..repl[light]..c | ||||
| 	    minetest.set_node(pos, node) | ||||
| 	 end, | ||||
|       }) | ||||
|  | ||||
| minetest.register_node("seaglass:seaglass_black", { | ||||
| 	description = "Seaglass black on", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_black.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_black.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	light_source = 14, | ||||
| 	is_ground_content = true, | ||||
| 	drop = 'seaglass:seaglassoff_black', | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_black=1, shine=1, blackshine=1, not_in_creative_inventory=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
|    stairs.register_stair_and_slab("seaglass"..l..c, "seaglass:seaglass"..l..c, | ||||
| 				       cgroups, | ||||
| 				       {"seaglass_seaglass"..c..".png"}, | ||||
| 				       "Seaglass stair "..light.." "..col, | ||||
| 				       "Seaglass slab "..light.." "..col, | ||||
| 				       default.node_sound_glass_defaults()) | ||||
|     | ||||
|    for _,i in ipairs({"slab", "stair", "stair_outer", "stair_inner"}) do | ||||
|       minetest.override_item( | ||||
| 	 "stairs:"..i.."_seaglass"..l..c, | ||||
| 	 { | ||||
| 	    light_source = ls, | ||||
| 	    drop = "stairs:"..i.."_seaglassoff"..c, | ||||
| 	    on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 	       node.name = "stairs:"..i.."_seaglass"..repl[light]..c | ||||
| 	       minetest.set_node(pos, node) | ||||
| 	    end | ||||
| 	 }) | ||||
|       if suffix then | ||||
| 	 minetest.register_alias("stairsshine:"..i.."_seaglass"..c, "stairs:"..i.."_seaglass"..c) | ||||
|       end | ||||
|    end | ||||
|     | ||||
| end | ||||
|  | ||||
| minetest.register_node("seaglass:seaglassoff", { | ||||
| 	description = "Standard seaglass off", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, noshine=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
| for _,color in ipairs(colors) do | ||||
|    local groups_off = {noshine=1, snappy=2, cracky=3, oddly_breakable_by_hand=3} | ||||
|    local groups_on = {not_in_creative_inventory=1, shine=1, snappy=2, cracky=3, oddly_breakable_by_hand=3} | ||||
|  | ||||
| minetest.register_node("seaglass:seaglassoff_yellow", { | ||||
| 	description = "Seaglass yellow off", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_yellow.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_yellow.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_yellow=1, noshine=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
|    if color == "yellow" then | ||||
|       groups_off.color_yellow = 1 | ||||
|       groups_on.color_yellow = 1 | ||||
|       groups_on.yellowshine = 1 | ||||
|    elseif color == "red" then | ||||
|       groups_off.color_red = 1 | ||||
|       groups_on.color_red = 1 | ||||
|       groups_on.redshine = 1 | ||||
|    elseif color == "blue" then | ||||
|       groups_off.color_blue = 1 | ||||
|       groups_on.color_blue = 1 | ||||
|       groups_on.blueshine = 1 | ||||
|    elseif color == "white" then | ||||
|       groups_off.color_white = 1 | ||||
|       groups_on.color_white = 1 | ||||
|       groups_on.whiteshine = 1 | ||||
|    elseif color == "black" then | ||||
|       groups_off.color_black = 1 | ||||
|       groups_on.color_black = 1 | ||||
|       groups_on.blackshine = 1 | ||||
|    end | ||||
|  | ||||
| minetest.register_node("seaglass:seaglassoff_red", { | ||||
| 	description = "Seaglass red off", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_red.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_red.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_red=1, noshine=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
|    register_glass(false, color, groups_off) | ||||
|    register_glass(true, color, groups_on) | ||||
| end | ||||
|  | ||||
| minetest.register_node("seaglass:seaglassoff_blue", { | ||||
| 	description = "Seaglass blue off", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_blue.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_blue.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_blue=1, noshine=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seaglass:seaglassoff_white", { | ||||
| 	description = "Seaglass white off", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_white.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_white.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_white=1, noshine=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("seaglass:seaglassoff_black", { | ||||
| 	description = "Seaglass black off", | ||||
| 	drawtype = "glasslike", | ||||
| 	tiles = {"seaglass_seaglass_black.png"}, | ||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_black.png"), | ||||
| 	paramtype = "light", | ||||
| 	sunlight_propagates = true, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_black=1, noshine=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
|  | ||||
|  | ||||
| -- STAIRS | ||||
|  | ||||
| stairsshine.register_stair_and_slab("seaglass", "seaglass:seaglass", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, shine=1, not_in_creative_inventory=1}, | ||||
| 		{"seaglass_seaglass.png"}, | ||||
| 		"Seaglass stair on", | ||||
| 		"Seaglass slab on", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairsshine.register_stair_and_slab("seaglass_yellow", "seaglass:seaglass_yellow", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_yellow=1, shine=1, yellowshine=1, not_in_creative_inventory=1}, | ||||
| 		{"seaglass_seaglass_yellow.png"}, | ||||
| 		"seaglass stair on yellow", | ||||
| 		"seaglass slab on yellow", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairsshine.register_stair_and_slab("seaglass_red", "seaglass:seaglass_red", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_red=1, shine=1, redshine=1, not_in_creative_inventory=1}, | ||||
| 		{"seaglass_seaglass_red.png"}, | ||||
| 		"Seaglass stair on red", | ||||
| 		"Seaglass slab on red", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairsshine.register_stair_and_slab("seaglass_blue", "seaglass:seaglass_blue", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_blue=1, shine=1, blueshine=1, not_in_creative_inventory=1}, | ||||
| 		{"seaglass_seaglass_blue.png"}, | ||||
| 		"Seaglass stair on blue", | ||||
| 		"Seaglass slab on blue", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairsshine.register_stair_and_slab("seaglass_white", "seaglass:seaglass_white", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_white=1, shine=1, whiteshine=1, not_in_creative_inventory=1}, | ||||
| 		{"seaglass_seaglass_white.png"}, | ||||
| 		"Seaglass stair on white", | ||||
| 		"Seaglass slab on white", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairsshine.register_stair_and_slab("seaglass_black", "seaglass:seaglass_black", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_black=1, shine=1, blackshine=1, not_in_creative_inventory=1}, | ||||
| 		{"seaglass_seaglass_black.png"}, | ||||
| 		"Seaglass stair on black ", | ||||
| 		"Seaglass slab on black", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairs.register_stair_and_slab("seaglassoff", "seaglass:seaglassoff", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, noshine=1}, | ||||
| 		{"seaglass_seaglass.png"}, | ||||
| 		"Seaglass stair off", | ||||
| 		"Seaglass slab off", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairs.register_stair_and_slab("seaglassoff_yellow", "seaglass:seaglassoff_yellow", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_yellow=1, noshine=1}, | ||||
| 		{"seaglass_seaglass_yellow.png"}, | ||||
| 		"seaglass stair off yellow", | ||||
| 		"seaglass slab off yellow", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairs.register_stair_and_slab("seaglassoff_red", "seaglass:seaglassoff_red", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_red=1, noshine=1}, | ||||
| 		{"seaglass_seaglass_red.png"}, | ||||
| 		"Seaglass stair off red", | ||||
| 		"Seaglass slab off red", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairs.register_stair_and_slab("seaglassoff_blue", "seaglass:seaglassoff_blue", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_blue=1, noshine=1}, | ||||
| 		{"seaglass_seaglass_blue.png"}, | ||||
| 		"Seaglass stair off blue", | ||||
| 		"Seaglass slab off blue", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairs.register_stair_and_slab("seaglassoff_white", "seaglass:seaglassoff_white", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_white=1, noshine=1}, | ||||
| 		{"seaglass_seaglass_white.png"}, | ||||
| 		"Seaglass stair off white", | ||||
| 		"Seaglass slab off white", | ||||
| 		default.node_sound_glass_defaults()) | ||||
|  | ||||
| stairs.register_stair_and_slab("seaglassoff_black", "seaglass:seaglassoff_black", | ||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_black=1, noshine=1}, | ||||
| 		{"seaglass_seaglass_black.png"}, | ||||
| 		"Seaglass stair off black ", | ||||
| 		"Seaglass slab off black", | ||||
| 		default.node_sound_glass_defaults()) | ||||
| register_glass(false, nil, {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, noshine=1}) | ||||
| register_glass(true, nil, {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, shine=1, not_in_creative_inventory=1}) | ||||
|  | ||||
|  | ||||
| -- CRAFTING | ||||
| @@ -290,444 +149,61 @@ register_seaglass_craft("seaglass:seaglass_blue", {'seaglass:seaglassoff_blue'}) | ||||
| register_seaglass_craft("seaglass:seaglass_white", {'seaglass:seaglassoff_white'}) | ||||
| register_seaglass_craft("seaglass:seaglass_black", {'seaglass:seaglassoff_black'}) | ||||
|  | ||||
| register_seaglass_craft("stairsshine:stair_seaglass", {'stairs:stair_seaglassoff'}) | ||||
| register_seaglass_craft("stairsshine:stair_seaglass_yellow", {'stairs:stair_seaglassoff_yellow'}) | ||||
| register_seaglass_craft("stairsshine:stair_seaglass_red", {'stairs:stair_seaglassoff_red'}) | ||||
| register_seaglass_craft("stairsshine:stair_seaglass_blue", {'stairs:stair_seaglassoff_blue'}) | ||||
| register_seaglass_craft("stairsshine:stair_seaglass_white", {'stairs:stair_seaglassoff_white'}) | ||||
| register_seaglass_craft("stairsshine:stair_seaglass_black", {'stairs:stair_seaglassoff_black'}) | ||||
| register_seaglass_craft("stairs:stair_seaglass", {'stairs:stair_seaglassoff'}) | ||||
| register_seaglass_craft("stairs:stair_seaglass_yellow", {'stairs:stair_seaglassoff_yellow'}) | ||||
| register_seaglass_craft("stairs:stair_seaglass_red", {'stairs:stair_seaglassoff_red'}) | ||||
| register_seaglass_craft("stairs:stair_seaglass_blue", {'stairs:stair_seaglassoff_blue'}) | ||||
| register_seaglass_craft("stairs:stair_seaglass_white", {'stairs:stair_seaglassoff_white'}) | ||||
| register_seaglass_craft("stairs:stair_seaglass_black", {'stairs:stair_seaglassoff_black'}) | ||||
|  | ||||
| register_seaglass_craft("stairs:stair_seaglassoff", {'stairsshine:stair_seaglass'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_yellow", {'stairsshine:stair_seaglass_yellow'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_red", {'stairsshine:stair_seaglass_red'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_blue", {'stairsshine:stair_seaglass_blue'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_white", {'stairsshine:stair_seaglass_white'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_black", {'stairsshine:stair_seaglass_black'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff", {'stairs:stair_seaglass'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_yellow", {'stairs:stair_seaglass_yellow'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_red", {'stairs:stair_seaglass_red'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_blue", {'stairs:stair_seaglass_blue'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_white", {'stairs:stair_seaglass_white'}) | ||||
| register_seaglass_craft("stairs:stair_seaglassoff_black", {'stairs:stair_seaglass_black'}) | ||||
|  | ||||
| register_seaglass_craft("stairsshine:slab_seaglass", {'stairs:slab_seaglassoff'}) | ||||
| register_seaglass_craft("stairsshine:slab_seaglass_yellow", {'stairs:slab_seaglassoff_yellow'}) | ||||
| register_seaglass_craft("stairsshine:slab_seaglass_red", {'stairs:slab_seaglassoff_red'}) | ||||
| register_seaglass_craft("stairsshine:slab_seaglass_blue", {'stairs:slab_seaglassoff_blue'}) | ||||
| register_seaglass_craft("stairsshine:slab_seaglass_white", {'stairs:slab_seaglassoff_white'}) | ||||
| register_seaglass_craft("stairsshine:slab_seaglass_black", {'stairs:slab_seaglassoff_black'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglass", {'stairs:stair_outer_seaglassoff'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglass_yellow", {'stairs:stair_outer_seaglassoff_yellow'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglass_red", {'stairs:stair_outer_seaglassoff_red'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglass_blue", {'stairs:stair_outer_seaglassoff_blue'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglass_white", {'stairs:stair_outer_seaglassoff_white'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglass_black", {'stairs:stair_outer_seaglassoff_black'}) | ||||
|  | ||||
| register_seaglass_craft("stairs:slab_seaglassoff", {'stairsshine:slab_seaglass'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_yellow", {'stairsshine:slab_seaglass_yellow'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_red", {'stairsshine:slab_seaglass_red'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_blue", {'stairsshine:slab_seaglass_blue'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_white", {'stairsshine:slab_seaglass_white'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_black", {'stairsshine:slab_seaglass_black'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglassoff", {'stairs:stair_outer_seaglass'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglassoff_yellow", {'stairs:stair_outer_seaglass_yellow'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglassoff_red", {'stairs:stair_outer_seaglass_red'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglassoff_blue", {'stairs:stair_outer_seaglass_blue'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglassoff_white", {'stairs:stair_outer_seaglass_white'}) | ||||
| register_seaglass_craft("stairs:stair_outer_seaglassoff_black", {'stairs:stair_outer_seaglass_black'}) | ||||
|  | ||||
| register_seaglass_craft("stairs:stair_inner_seaglass", {'stairs:stair_inner_seaglassoff'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglass_yellow", {'stairs:stair_inner_seaglassoff_yellow'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglass_red", {'stairs:stair_inner_seaglassoff_red'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglass_blue", {'stairs:stair_inner_seaglassoff_blue'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglass_white", {'stairs:stair_inner_seaglassoff_white'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglass_black", {'stairs:stair_inner_seaglassoff_black'}) | ||||
|  | ||||
| -- FUNCTIONS | ||||
| register_seaglass_craft("stairs:stair_inner_seaglassoff", {'stairs:stair_inner_seaglass'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglassoff_yellow", {'stairs:stair_inner_seaglass_yellow'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglassoff_red", {'stairs:stair_inner_seaglass_red'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglassoff_blue", {'stairs:stair_inner_seaglass_blue'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglassoff_white", {'stairs:stair_inner_seaglass_white'}) | ||||
| register_seaglass_craft("stairs:stair_inner_seaglassoff_black", {'stairs:stair_inner_seaglass_black'}) | ||||
|  | ||||
| register_seaglass_craft("stairs:slab_seaglass", {'stairs:slab_seaglassoff'}) | ||||
| register_seaglass_craft("stairs:slab_seaglass_yellow", {'stairs:slab_seaglassoff_yellow'}) | ||||
| register_seaglass_craft("stairs:slab_seaglass_red", {'stairs:slab_seaglassoff_red'}) | ||||
| register_seaglass_craft("stairs:slab_seaglass_blue", {'stairs:slab_seaglassoff_blue'}) | ||||
| register_seaglass_craft("stairs:slab_seaglass_white", {'stairs:slab_seaglassoff_white'}) | ||||
| register_seaglass_craft("stairs:slab_seaglass_black", {'stairs:slab_seaglassoff_black'}) | ||||
|  | ||||
| local on_lamp_puncher = function (pos, node, puncher) | ||||
| 	if node.name == "seaglass:seaglass" then | ||||
| 		minetest.add_node(pos, {name="seaglass:seaglassoff"}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "seaglass:seaglassoff" then | ||||
| 			minetest.add_node(pos, {name="seaglass:seaglass"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglass_yellow" then | ||||
| 		minetest.add_node(pos, {name="seaglass:seaglassoff_yellow"}) | ||||
| 		nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglassoff_yellow" then | ||||
| 			minetest.add_node(pos, {name="seaglass:seaglass_yellow"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglass_red" then | ||||
| 		minetest.add_node(pos, {name="seaglass:seaglassoff_red"}) | ||||
| 		nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglassoff_red" then | ||||
| 			minetest.add_node(pos, {name="seaglass:seaglass_red"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglass_blue" then | ||||
| 		minetest.add_node(pos, {name="seaglass:seaglassoff_blue"}) | ||||
| 		nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglassoff_blue" then | ||||
| 			minetest.add_node(pos, {name="seaglass:seaglass_blue"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglass_white" then | ||||
| 		minetest.add_node(pos, {name="seaglass:seaglassoff_white"}) | ||||
| 		nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglassoff_white" then | ||||
| 			minetest.add_node(pos, {name="seaglass:seaglass_white"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglass_black" then | ||||
| 		minetest.add_node(pos, {name="seaglass:seaglassoff_black"}) | ||||
| 		nodeupdate(pos) | ||||
| 	elseif node.name == "seaglass:seaglassoff_black" then | ||||
| 			minetest.add_node(pos, {name="seaglass:seaglass_black"}) | ||||
| 			nodeupdate(pos) | ||||
|  | ||||
| 	elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 0 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 0}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 0 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 0}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 1 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 1}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 1 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 1}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 2 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 2}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 2 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 2}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 3 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 3}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 3 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 3}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 21 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 21}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 21 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 21}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 22 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 22}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 22 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 22}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 23 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 23}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 23 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 23}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 0 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 0}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 0 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 0}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 1 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 1}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 1 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 1}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 2 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 2}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 2 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 2}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 3 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 3}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 3 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 3}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 21 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 21}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 21 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 21}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 22 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 22}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 22 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 22}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 23 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 23}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 23 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 23}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 0 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 0}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 0 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 0}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 1 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 1}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 1 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 1}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 2 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 2}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 2 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 2}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 3 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 3}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 3 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 3}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 21 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 21}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 21 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 21}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 22 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 22}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 22 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 22}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 23 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 23}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 23 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 23}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 0 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 0}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 0 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 0}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 1 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 1}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 1 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 1}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 2 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 2}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 2 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 2}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 3 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 3}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 3 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 3}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 21 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 21}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 21 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 21}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 22 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 22}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 22 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 22}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 23 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 23}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 23 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 23}) | ||||
| 			nodeupdate(pos) | ||||
|  | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 0 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 0}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 0 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 0}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 1 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 1}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 1 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 1}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 2 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 2}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 2 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 2}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 3 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 3}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 3 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 3}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 21 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 21}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 21 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 21}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 22 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 22}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 22 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 22}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 23 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 23}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 23 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 23}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 0 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 0}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 0 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 0}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 1 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 1}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 1 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 1}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 2 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 2}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 2 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 2}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 3 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 3}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 3 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 3}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 21 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 21}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 21 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 21}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 22 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 22}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 22 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 22}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 23 then | ||||
| 		minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 23}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 23 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 23}) | ||||
| 			nodeupdate(pos) | ||||
|  | ||||
| 	elseif node.name == "stairsshine:slab_seaglass" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass" then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff"}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff" then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_yellow" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_yellow", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_yellow" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_yellow", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_yellow" then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_yellow"}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_yellow" then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_yellow"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_red" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_red", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_red" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_red", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_red" then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_red"}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_red" then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_red"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_blue" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_blue", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_blue" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_blue", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_blue" then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_blue"}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_blue" then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_blue"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_white" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_white", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_white" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_white", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_white" then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_white"}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_white" then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_white"}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_black" and node.param2 == 20 then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_black", param2 = 20}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_black" and node.param2 == 20 then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_black", param2 = 20}) | ||||
| 			nodeupdate(pos) | ||||
| 	elseif node.name == "stairsshine:slab_seaglass_black" then | ||||
| 		minetest.add_node(pos, {name="stairs:slab_seaglassoff_black"}) | ||||
| 		nodeupdate(pos) | ||||
| 			elseif node.name == "stairs:slab_seaglassoff_black" then | ||||
| 			minetest.add_node(pos, {name="stairsshine:slab_seaglass_black"}) | ||||
| 			nodeupdate(pos) else | ||||
| 			return | ||||
| 	end | ||||
| end | ||||
|  | ||||
| minetest.register_on_punchnode(on_lamp_puncher) | ||||
|  | ||||
| register_seaglass_craft("stairs:slab_seaglassoff", {'stairs:slab_seaglass'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_yellow", {'stairs:slab_seaglass_yellow'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_red", {'stairs:slab_seaglass_red'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_blue", {'stairs:slab_seaglass_blue'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_white", {'stairs:slab_seaglass_white'}) | ||||
| register_seaglass_craft("stairs:slab_seaglassoff_black", {'stairs:slab_seaglass_black'}) | ||||
|  | ||||
|  | ||||
| -- ALIASES | ||||
|   | ||||
| @@ -1,2 +1 @@ | ||||
| default | ||||
| noairblocks | ||||
| @@ -1,202 +1,155 @@ | ||||
| -- NODES | ||||
|  | ||||
| minetest.register_node("seaplants:kelpgreen", { | ||||
| 	description = "Green Kelp", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seaplants_kelpgreen.png"}, | ||||
| 	inventory_image = "seaplants_kelpgreen.png", | ||||
| 	wield_image = "seaplants_kelpgreen.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seaplants=1, sea=1}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	on_use = minetest.item_eat(1) | ||||
| }) | ||||
| for color, cname in pairs({green = "Green", brown = "Brown"}) do | ||||
| 	minetest.register_node( | ||||
| 		"seaplants:sand_with_kelp_"..color, { | ||||
| 			description = cname.." Kelp", | ||||
| 			drawtype = "plantlike_rooted", | ||||
| 			waving = 1, | ||||
| 			tiles = {"default_sand.png"}, | ||||
| 			special_tiles = {{name = "seaplants_kelp"..color.."middle.png", tileable_vertical = true}}, | ||||
| 			inventory_image = "seaplants_kelp"..color..".png", | ||||
| 			paramtype = "light", | ||||
| 			paramtype2 = "leveled", | ||||
| 			groups = {snappy = 3}, | ||||
| 			selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = { | ||||
| 					{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, | ||||
| 					{-2/16, 0.5, -2/16, 2/16, 3.5, 2/16}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			node_dig_prediction = "default:sand", | ||||
| 			node_placement_prediction = "", | ||||
| 			sounds = default.node_sound_sand_defaults( | ||||
| 				{ | ||||
| 					dig = {name = "default_dig_snappy", gain = 0.2}, | ||||
| 					dug = {name = "default_grass_footstep", gain = 0.25}, | ||||
| 				}), | ||||
| 			 | ||||
| 			on_use = minetest.item_eat(1), | ||||
| 			 | ||||
| 			on_place = function(itemstack, placer, pointed_thing) | ||||
| 				-- Call on_rightclick if the pointed node defines it | ||||
| 				if pointed_thing.type == "node" and placer and | ||||
| 				not placer:get_player_control().sneak then | ||||
| 					local node_ptu = minetest.get_node(pointed_thing.under) | ||||
| 					local def_ptu = minetest.registered_nodes[node_ptu.name] | ||||
| 					if def_ptu and def_ptu.on_rightclick then | ||||
| 						return def_ptu.on_rightclick(pointed_thing.under, node_ptu, placer, | ||||
| 															  itemstack, pointed_thing) | ||||
| 					end | ||||
| 				end | ||||
|  | ||||
| minetest.register_node("seaplants:kelpgreenmiddle", { | ||||
| 	description = "Green Kelp middle", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seaplants_kelpgreenmiddle.png"}, | ||||
| 	inventory_image = "seaplants_kelpgreenmiddle.png", | ||||
| 	wield_image = "seaplants_kelpgreenmiddle.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seaplants=1, sea=1}, | ||||
| 	drop = "seaplants:kelpgreen", | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
| 				local pos = pointed_thing.under | ||||
| 				if minetest.get_node(pos).name ~= "default:sand" then | ||||
| 					return itemstack | ||||
| 				end | ||||
|  | ||||
| minetest.register_node("seaplants:kelpbrown", { | ||||
| 	description = "Brown Kelp ", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seaplants_kelpbrown.png"}, | ||||
| 	inventory_image = "seaplants_kelpbrown.png", | ||||
| 	wield_image = "seaplants_kelpbrown.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seaplants=1, sea=1}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	on_use = minetest.item_eat(1) | ||||
| }) | ||||
| 				local height = math.random(4, 6) | ||||
| 				local pos_top = {x = pos.x, y = pos.y + height, z = pos.z} | ||||
| 				local node_top = minetest.get_node(pos_top) | ||||
| 				local def_top = minetest.registered_nodes[node_top.name] | ||||
| 				local player_name = placer:get_player_name() | ||||
|  | ||||
| minetest.register_node("seaplants:kelpbrownmiddle", { | ||||
| 	description = "Brown Kelp middle", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seaplants_kelpbrownmiddle.png"}, | ||||
| 	inventory_image = "seaplants_kelpbrownmiddle.png", | ||||
| 	wield_image = "seaplants_kelpbrownmiddle.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seaplants=1, sea=1}, | ||||
| 	drop = "seaplants:kelpbrown", | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| }) | ||||
| 				if def_top and def_top.liquidtype == "source" and | ||||
| 				minetest.get_item_group(node_top.name, "water") > 0 then | ||||
| 					if not minetest.is_protected(pos, player_name) and | ||||
| 					not minetest.is_protected(pos_top, player_name) then | ||||
| 						minetest.set_node(pos, {name = "seaplants:sand_with_kelp_"..color, | ||||
| 														param2 = height * 16}) | ||||
| 						if not (creative and creative.is_enabled_for | ||||
| 								  and creative.is_enabled_for(player_name)) then | ||||
| 							itemstack:take_item() | ||||
| 						end | ||||
| 					else | ||||
| 						minetest.chat_send_player(player_name, "Node is protected") | ||||
| 						minetest.record_protection_violation(pos, player_name) | ||||
| 					end | ||||
| 				end | ||||
|  | ||||
| minetest.register_node("seaplants:seagrassgreen", { | ||||
| 	description = "Green Seagrass", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seaplants_seagrassgreen.png"}, | ||||
| 	inventory_image = "seaplants_seagrassgreen.png", | ||||
| 	wield_image = "seaplants_seagrassgreen.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seaplants=1, sea=1}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	on_use = minetest.item_eat(1) | ||||
| }) | ||||
| 				return itemstack | ||||
| 			end, | ||||
|  | ||||
| minetest.register_node("seaplants:seagrassred", { | ||||
| 	description = "Red Seagrass", | ||||
| 	drawtype = "plantlike", | ||||
| 	tiles = {"seaplants_seagrassred.png"}, | ||||
| 	inventory_image = "seaplants_seagrassred.png", | ||||
| 	wield_image = "seaplants_seagrassred.png", | ||||
| 	paramtype = "light", | ||||
| 	walkable = false, | ||||
| 	climbable = true, | ||||
| 	drowning = 1, | ||||
| 	is_ground_content = true, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} | ||||
| 	}, | ||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||
| 	groups = {snappy=3, seaplants=1, sea=1}, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	on_use = minetest.item_eat(1) | ||||
| }) | ||||
| 			after_destruct  = function(pos, oldnode) | ||||
| 				minetest.set_node(pos, {name = "default:sand"}) | ||||
| 			end | ||||
| 	}) | ||||
|  | ||||
| minetest.register_node("seaplants:seaplantssandkelpgreen", { | ||||
| 	description = "Sea plants sand kelp green", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
| 	-- Replace Old Kelps by new ones | ||||
| 	minetest.register_alias("seaplants:kelp"..color, "default:water_source") | ||||
| 	minetest.register_alias("seaplants:kelp"..color.."middle", "default:water_source") | ||||
| 	minetest.register_alias("seaplants:seaplantssandkelp"..color, "seaplants:sand_with_kelp_"..color) | ||||
| 	minetest.register_alias("seaplants:seaplantsdirtkelp"..color, "seaplants:sand_with_kelp_"..color) | ||||
| end | ||||
|  | ||||
| minetest.register_node("seaplants:seaplantsdirtkelpgreen", { | ||||
| 	description = "Sea plants dirt kelp green", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
| for color, cname in pairs({green = "Green", red = "Red"}) do | ||||
| 	minetest.register_node( | ||||
| 		"seaplants:seagrass_"..color, { | ||||
| 			description = cname.." Seagrass", | ||||
| 			drawtype = "plantlike_rooted", | ||||
| 			waving = 1, | ||||
| 			paramtype = "light", | ||||
| 			tiles = {"default_sand.png"}, | ||||
| 			special_tiles = {{name = "seaplants_seagrass"..color..".png", tileable_vertical = true}}, | ||||
| 			inventory_image = "seaplants_seagrass"..color..".png", | ||||
| 			groups = {snappy = 3}, | ||||
| 			selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = { | ||||
| 					{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, | ||||
| 					{-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			node_dig_prediction = "default:sand", | ||||
| 			node_placement_prediction = "", | ||||
| 			sounds = default.node_sound_sand_defaults( | ||||
| 				{ | ||||
| 					dig = {name = "default_dig_snappy", gain = 0.2}, | ||||
| 					dug = {name = "default_grass_footstep", gain = 0.25}, | ||||
| 				}), | ||||
|  | ||||
| minetest.register_node("seaplants:seaplantssandkelpbrown", { | ||||
| 	description = "Sea plants sand kelp brown", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
| 			on_use = minetest.item_eat(1), | ||||
|  | ||||
| minetest.register_node("seaplants:seaplantsdirtkelpbrown", { | ||||
| 	description = "Sea plants dirt kelp brown", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
| 			on_place = function(itemstack, placer, pointed_thing) | ||||
| 				if pointed_thing.type ~= "node" or not placer then | ||||
| 					return itemstack | ||||
| 				end | ||||
|  | ||||
| minetest.register_node("seaplants:seaplantssandseagrassgreen", { | ||||
| 	description = "Sea plants sand seagrass green", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
| 				local player_name = placer:get_player_name() | ||||
| 				local pos_under = pointed_thing.under | ||||
| 				local pos_above = pointed_thing.above | ||||
|  | ||||
| minetest.register_node("seaplants:seaplantsdirtseagrassgreen", { | ||||
| 	description = "Sea plants dirt seagrass green", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
| 				if minetest.get_node(pos_under).name ~= "default:sand" or | ||||
| 				minetest.get_node(pos_above).name ~= "default:water_source" then | ||||
| 					return itemstack | ||||
| 				end | ||||
|  | ||||
| minetest.register_node("seaplants:seaplantssandseagrassred", { | ||||
| 	description = "Sea plants sand seagrass red", | ||||
| 	tiles = {"default_sand.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:sand', | ||||
| 	sounds = default.node_sound_sand_defaults(), | ||||
| }) | ||||
| 				if minetest.is_protected(pos_under, player_name) or | ||||
| 				minetest.is_protected(pos_above, player_name) then | ||||
| 					minetest.chat_send_player(player_name, "Node is protected") | ||||
| 					minetest.record_protection_violation(pos_under, player_name) | ||||
| 					return itemstack | ||||
| 				end | ||||
|  | ||||
| minetest.register_node("seaplants:seaplantsdirtseagrassred", { | ||||
| 	description = "Sea plants dirt seagrass red", | ||||
| 	tiles = {"default_dirt.png"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | ||||
| 	drop = 'default:dirt', | ||||
| 	sounds = default.node_sound_dirt_defaults(), | ||||
| }) | ||||
| 				minetest.set_node(pos_under, {name = "seaplants:seagrass_"..color}) | ||||
| 				if not (creative and creative.is_enabled_for(player_name)) then | ||||
| 					itemstack:take_item() | ||||
| 				end | ||||
|  | ||||
| 				return itemstack | ||||
| 			end, | ||||
|  | ||||
| 			after_destruct = function(pos, oldnode) | ||||
| 				minetest.set_node(pos, {name = "default:sand"}) | ||||
| 			end, | ||||
| 	}) | ||||
|  | ||||
| 	-- Replace Old seagrasses by new ones | ||||
| 	minetest.register_alias("seaplants:seagrass"..color, "default:water_source") | ||||
| 	minetest.register_alias("seaplants:seaplantssandseagrass"..color, "seaplants:seagrass_"..color) | ||||
| 	minetest.register_alias("seaplants:seaplantsdirtseagrass"..color, "seaplants:seagrass_"..color) | ||||
| end | ||||
|  | ||||
|  | ||||
| -- CRAFT ITEMS | ||||
| @@ -214,328 +167,61 @@ minetest.register_craftitem("seaplants:seasaladmix", { | ||||
| minetest.register_craft({ | ||||
| 	type = "shapeless", | ||||
| 	output = "seaplants:seasaladmix", | ||||
| 	recipe = {"seaplants:kelpgreen", "seaplants:kelpbrown", "seaplants:seagrassgreen", "seaplants:seagrassred"} | ||||
| 	recipe = {"seaplants:sand_with_kelp_green", "seaplants:sand_with_kelp_brown", "seaplants:seagrass_green", "seaplants:seagrass_red"} | ||||
| }) | ||||
|  | ||||
|  | ||||
| -- SEAPLANTS SAND AND DIRT GENERATION | ||||
| -- SEAPLANTS GENERATION | ||||
|  | ||||
| -- Kelp | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seaplants:seaplantssandkelpgreen", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -14, | ||||
| 	y_min     = -31000, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seaplants:seaplantsdirtkelpgreen", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -14, | ||||
| 	y_min     = -31000, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seaplants:seaplantssandkelpbrown", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -14, | ||||
| 	y_min     = -31000, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seaplants:seaplantsdirtkelpbrown", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -14, | ||||
| 	y_min     = -31000, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seaplants:seaplantssandseagrassgreen", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -14, | ||||
| 	y_min     = -31000, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seaplants:seaplantsdirtseagrassgreen", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -14, | ||||
| 	y_min     = -31000, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seaplants:seaplantssandseagrassred", | ||||
| 	wherein        = "default:sand", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -14, | ||||
| 	y_min     = -31000, | ||||
| }) | ||||
|  | ||||
| minetest.register_ore({ | ||||
| 	ore_type       = "scatter", | ||||
| 	ore            = "seaplants:seaplantsdirtseagrassred", | ||||
| 	wherein        = "default:dirt", | ||||
| 	clust_scarcity = 10*10*10, | ||||
| 	clust_num_ores = 24, | ||||
| 	clust_size     = 4, | ||||
| 	y_max     = -14, | ||||
| 	y_min     = -31000, | ||||
| }) | ||||
|  | ||||
| local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, y_min, y_max) | ||||
| 	if maxp.y < y_min or minp.y > y_max then | ||||
| 		return | ||||
| 	end | ||||
| 	local y_min = math.max(minp.y, y_min) | ||||
| 	local y_max = math.min(maxp.y, y_max) | ||||
| 	if chunk_size >= y_max - y_min + 1 then | ||||
| 		return | ||||
| 	end | ||||
| 	local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) | ||||
| 	local pr = PseudoRandom(seed) | ||||
| 	local num_chunks = math.floor(chunks_per_volume * volume) | ||||
| 	local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) | ||||
| 	for i=1,num_chunks do | ||||
| 		local y0 = pr:next(y_min, y_max-chunk_size+1) | ||||
| 		if y0 >= y_min and y0 <= y_max then | ||||
| 			local x0 = pr:next(minp.x, maxp.x-chunk_size+1) | ||||
| 			local z0 = pr:next(minp.z, maxp.z-chunk_size+1) | ||||
| 			local p0 = {x=x0, y=y0, z=z0} | ||||
| 			for x1=0,chunk_size-1 do | ||||
| 			for y1=0,chunk_size-1 do | ||||
| 			for z1=0,chunk_size-1 do | ||||
| 				if pr:next(1,inverse_chance) == 1 then | ||||
| 					local x2 = x0+x1 | ||||
| 					local y2 = y0+y1 | ||||
| 					local z2 = z0+z1 | ||||
| 					local p2 = {x=x2, y=y2, z=z2} | ||||
| 					if minetest.get_node(p2).name == wherein then | ||||
| 						minetest.set_node(p2, {name=name}) | ||||
| 					end | ||||
| 				end | ||||
| 			end | ||||
| 			end | ||||
| 			end | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
|  | ||||
| -- ABM'S | ||||
|  | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:seaplantsdirtkelpgreen"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seaplants:kelpgreen"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:seaplantssandkelpgreen"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seaplants:kelpgreen"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:kelpgreen"}, | ||||
| interval = 6, | ||||
| chance = 3, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	local yyp = {x = pos.x, y = pos.y + 2, z = pos.z} | ||||
| 	local yyyp = {x = pos.x, y = pos.y + 3, z = pos.z} | ||||
| 	if minetest.get_node(pos).name == "seaplants:kelpgreen" and | ||||
| 		(minetest.get_node(yp).name == "default:water_source" or | ||||
| 		minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 			if (minetest.get_node(yyp).name == "default:water_source" or | ||||
| 			minetest.get_node(yyp).name == "noairblocks:water_sourcex") then | ||||
| 				if (minetest.get_node(yyyp).name == "default:water_source" or | ||||
| 				minetest.get_node(yyyp).name == "noairblocks:water_sourcex") then | ||||
| 					minetest.add_node(pos, {name = "seaplants:kelpgreenmiddle"})  | ||||
| 					pos.y = pos.y + 1 | ||||
| 					minetest.add_node(pos, {name = "seaplants:kelpgreen"})  | ||||
| 				else | ||||
| 				return | ||||
| 			end | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:seaplantsdirtkelpbrown"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seaplants:kelpbrown"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:seaplantssandkelpbrown"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seaplants:kelpbrown"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:kelpbrown"}, | ||||
| interval = 6, | ||||
| chance = 3, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	local yyp = {x = pos.x, y = pos.y + 2, z = pos.z} | ||||
| 	local yyyp = {x = pos.x, y = pos.y + 3, z = pos.z} | ||||
| 	if minetest.get_node(pos).name == "seaplants:kelpbrown" and | ||||
| 		(minetest.get_node(yp).name == "default:water_source" or | ||||
| 		minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 			if (minetest.get_node(yyp).name == "default:water_source" or | ||||
| 			minetest.get_node(yyp).name == "noairblocks:water_sourcex") then | ||||
| 				if (minetest.get_node(yyyp).name == "default:water_source" or | ||||
| 				minetest.get_node(yyyp).name == "noairblocks:water_sourcex") then | ||||
| 					minetest.add_node(pos, {name = "seaplants:kelpbrownmiddle"})  | ||||
| 					pos.y = pos.y + 1 | ||||
| 					minetest.add_node(pos, {name = "seaplants:kelpbrown"})  | ||||
| 				else | ||||
| 				return | ||||
| 			end | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:seaplantsdirtseagrassgreen"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seaplants:seagrassgreen"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:seaplantssandseagrassgreen"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seaplants:seagrassgreen"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:seaplantsdirtseagrassred"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seaplants:seagrassred"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
|  | ||||
| minetest.register_abm({ | ||||
| nodenames = {"seaplants:seaplantssandseagrassred"}, | ||||
| interval = 12, | ||||
| chance = 12, | ||||
| action = function(pos, node, active_object_count, active_object_count_wider) | ||||
| 	local yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||
| 	if (minetest.get_node(yp).name == "default:water_source" or | ||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||
| 		pos.y = pos.y + 1 | ||||
| 		minetest.add_node(pos, {name = "seaplants:seagrassred"}) else | ||||
| 		return | ||||
| 	end | ||||
| end | ||||
| }) | ||||
| minetest.register_decoration( | ||||
| 	{ | ||||
| 		name = "seaplants:seaplants", | ||||
| 		deco_type = "simple", | ||||
| 		place_on = {"default:sand"}, | ||||
| 		place_offset_y = -1, | ||||
| 		sidelen = 16, | ||||
| 		noise_params = { | ||||
| 			offset = -0.04, | ||||
| 			scale = 0.1, | ||||
| 			spread = {x = 200, y = 200, z = 200}, | ||||
| 			seed = 87113, | ||||
| 			octaves = 3, | ||||
| 			persist = 0.7 | ||||
| 		}, | ||||
| 		biomes = { | ||||
| 			"taiga_ocean", | ||||
| 			"snowy_grassland_ocean", | ||||
| 			"grassland_ocean", | ||||
| 			"coniferous_forest_ocean", | ||||
| 			"deciduous_forest_ocean", | ||||
| 			"sandstone_desert_ocean", | ||||
| 			"cold_desert_ocean"}, | ||||
| 		y_max = -5, | ||||
| 		y_min = -10, | ||||
| 		flags = "force_placement", | ||||
| 		decoration = { | ||||
| 			"default:sand_with_kelp", "seaplants:sand_with_kelp_green", | ||||
| 			"seaplants:sand_with_kelp_brown", "seaplants:seagrass_green", | ||||
| 			"seaplants:seagrass_red" | ||||
| 		}, | ||||
| 		param2 = 48, | ||||
| 		param2_max = 96, | ||||
| 	}) | ||||
|  | ||||
|  | ||||
| -- ALIASES | ||||
|  | ||||
|  | ||||
| minetest.register_alias("seaplants:stemsgreen","default:sand") | ||||
| minetest.register_alias("seaplants:stemsbrown","default:dirt") | ||||
| minetest.register_alias("seaplants:leafyblue","default:sand") | ||||
| minetest.register_alias("seaplants:leafygreen","default:dirt") | ||||
|  | ||||
| minetest.register_alias("seaplants:chewstickgreen","seaplants:kelpgreen") | ||||
| minetest.register_alias("seaplants:chewstickbrown","seaplants:kelpbrown") | ||||
| minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrassgreen") | ||||
| minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrassred") | ||||
| minetest.register_alias("seaplants:chewstickgreen","seaplants:sand_with_kelp_green") | ||||
| minetest.register_alias("seaplants:chewstickbrown","seaplants:sand_with_kelp_brown") | ||||
| minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrass_green") | ||||
| minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrass_red") | ||||
| minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") | ||||
|  | ||||
| minetest.log("action", "[sea - seaplants] loaded.") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user