mirror of
				https://bitbucket.org/minetest_gamers/minetest-mod-sea.git
				synced 2025-10-31 07:35:28 +01:00 
			
		
		
		
	Compare commits
	
		
			13 Commits
		
	
	
		
			master
			...
			b0fd455b7e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b0fd455b7e | |||
| e1ca03e6f3 | |||
| b2fc8936bf | |||
| 5ec73557de | |||
| ef1efe65d9 | |||
|  | d537a679a3 | ||
|  | 7692d12220 | ||
|  | 0f7a5c654d | ||
|  | 87694cb154 | ||
|  | a1c2fae7bf | ||
|  | a5c10e3399 | ||
|  | 7c5e9bf73a | ||
|  | c912cf078b | 
| @@ -1,3 +1,6 @@ | |||||||
|  | local sand_sounds = minetest.registered_nodes["default:sand"].sounds | ||||||
|  | local dirt_sounds = minetest.registered_nodes["default:dirt"].sounds | ||||||
|  |  | ||||||
| -- NODES | -- NODES | ||||||
|  |  | ||||||
| minetest.register_node("clams:sandalgae", { | minetest.register_node("clams:sandalgae", { | ||||||
| @@ -9,14 +12,14 @@ minetest.register_node("clams:sandalgae", { | |||||||
| 	drop = { | 	drop = { | ||||||
| 		items = { | 		items = { | ||||||
| 			{ | 			{ | ||||||
| 				items = {'"clams:collectedalgae" 4'}, | 				items = {"clams:collectedalgae 4"}, | ||||||
| 			}, | 			}, | ||||||
| 			{ | 			{ | ||||||
| 				items = {'clams:sandalgaeused'}, | 				items = {'clams:sandalgaeused'}, | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
| 	sounds = default.node_sound_sand_defaults(), | 	sounds = sand_sounds, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.register_node("clams:dirtalgae", { | minetest.register_node("clams:dirtalgae", { | ||||||
| @@ -28,32 +31,32 @@ minetest.register_node("clams:dirtalgae", { | |||||||
| 	drop = { | 	drop = { | ||||||
| 		items = { | 		items = { | ||||||
| 			{ | 			{ | ||||||
| 				items = {'"clams:collectedalgae" 4'}, | 				items = {"clams:collectedalgae 4"}, | ||||||
| 			}, | 			}, | ||||||
| 			{ | 			{ | ||||||
| 				items = {'clams:dirtalgaeused'}, | 				items = {'clams:dirtalgaeused'}, | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
| 	sounds = default.node_sound_dirt_defaults,	 | 	sounds = dirt_sounds, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.register_node("clams:sandalgaeused", { | minetest.register_node("clams:sandalgaeused", { | ||||||
| 	description = "Used sandalgae", | 	description = "Used sandalgae", | ||||||
| 	tiles = {"default_sand.png^clams_algaeused.png"}, | 	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, | 	is_ground_content = true, | ||||||
| 	groups = {crumbly=3, falling_node=1, sand=1}, | 	groups = {crumbly=3, falling_node=1, sand=1}, | ||||||
| 	sounds = default.node_sound_sand_defaults(), | 	sounds = sand_sounds, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.register_node("clams:dirtalgaeused", { | minetest.register_node("clams:dirtalgaeused", { | ||||||
| 	description = "Used dirtalgae", | 	description = "Used dirtalgae", | ||||||
| 	tiles = {"default_dirt.png^clams_algaeused.png"}, | 	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, | 	is_ground_content = true, | ||||||
| 	groups = {crumbly=3}, | 	groups = {crumbly=3}, | ||||||
| 	sounds = default.node_sound_dirt_defaults(), | 	sounds = dirt_sounds, | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -390,3 +393,5 @@ minetest.register_alias("shells_dye:redlightglass","clams:redlightglass") | |||||||
| minetest.register_alias("shells_dye:bluelightglass","clams:bluelightglass") | minetest.register_alias("shells_dye:bluelightglass","clams:bluelightglass") | ||||||
| minetest.register_alias("shells_dye:whitelightglass","clams:whitelightglass") | minetest.register_alias("shells_dye:whitelightglass","clams:whitelightglass") | ||||||
| minetest.register_alias("shells_dye:blacklightglass","clams:blacklightglass") | minetest.register_alias("shells_dye:blacklightglass","clams:blacklightglass") | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - clams] loaded.") | ||||||
|   | |||||||
| @@ -228,3 +228,5 @@ local pos1 = {x=pos.x+1,y=pos.y+1,z=pos.z+1} | |||||||
| 	end | 	end | ||||||
| end, | end, | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - noairblocks] loaded.") | ||||||
|   | |||||||
| @@ -4,3 +4,4 @@ stairs | |||||||
| clams | clams | ||||||
| whiteshell? | whiteshell? | ||||||
| colormachine? | colormachine? | ||||||
|  | moreblocks? | ||||||
|   | |||||||
| @@ -60,56 +60,74 @@ minetest.register_node("seacobble:seacobble_redviolet", { | |||||||
|  |  | ||||||
| -- STAIRS | -- STAIRS | ||||||
|  |  | ||||||
|  | local colors = {"", "cyan", "magenta", "lime", "aqua", "skyblue", "redviolet"} | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seacobble", "seacobble:seacobble", | if minetest.get_modpath("moreblocks") then | ||||||
|  | 	for i, color in ipairs(colors) do | ||||||
|  | 		local c = "_"..color | ||||||
|  | 		if i == 1 then c = "" end | ||||||
|  | 		local nodename = "seacobble:seacobble"..c | ||||||
|  | 		local ndef = table.copy(minetest.registered_nodes[nodename]) | ||||||
|  | 		ndef.sunlight_propagates = true | ||||||
|  | 		ndef.place_param2 = nil | ||||||
|  |  | ||||||
|  | 		stairsplus:register_all( | ||||||
|  | 			"seacobble", | ||||||
|  | 			"seacobble"..c, | ||||||
|  | 			nodename, | ||||||
|  | 			ndef | ||||||
|  | 		) | ||||||
|  | 	end | ||||||
|  | else | ||||||
|  | 	stairs.register_stair_and_slab("seacobble", "seacobble:seacobble", | ||||||
| 		{cracky=3, stone=2}, | 		{cracky=3, stone=2}, | ||||||
| 		{"seacobble_seacobble.png"}, | 		{"seacobble_seacobble.png"}, | ||||||
| 		"Seacobble stair", | 		"Seacobble stair", | ||||||
| 		"Seacobble slab", | 		"Seacobble slab", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seacobble_cyan", "seacobble:seacobble_cyan", | 	stairs.register_stair_and_slab("seacobble_cyan", "seacobble:seacobble_cyan", | ||||||
| 		{cracky=3, stone=2}, | 		{cracky=3, stone=2}, | ||||||
| 		{"seacobble_seacobble_cyan.png"}, | 		{"seacobble_seacobble_cyan.png"}, | ||||||
| 		"Seacobble stair cyan", | 		"Seacobble stair cyan", | ||||||
| 		"Seacobble slab cyan", | 		"Seacobble slab cyan", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seacobble_magenta", "seacobble:seacobble_magenta", | 	stairs.register_stair_and_slab("seacobble_magenta", "seacobble:seacobble_magenta", | ||||||
| 		{cracky=3, stone=2}, | 		{cracky=3, stone=2}, | ||||||
| 		{"seacobble_seacobble_magenta.png"}, | 		{"seacobble_seacobble_magenta.png"}, | ||||||
| 		"Seacobble stair magenta", | 		"Seacobble stair magenta", | ||||||
| 		"Seacobble slab magenta", | 		"Seacobble slab magenta", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seacobble_lime", "seacobble:seacobble_lime", | 	stairs.register_stair_and_slab("seacobble_lime", "seacobble:seacobble_lime", | ||||||
| 		{cracky=3, stone=2}, | 		{cracky=3, stone=2}, | ||||||
| 		{"seacobble_seacobble_lime.png"}, | 		{"seacobble_seacobble_lime.png"}, | ||||||
| 		"Seacobble stair lime", | 		"Seacobble stair lime", | ||||||
| 		"Seacobble slab lime", | 		"Seacobble slab lime", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seacobble_aqua", "seacobble:seacobble_aqua", | 	stairs.register_stair_and_slab("seacobble_aqua", "seacobble:seacobble_aqua", | ||||||
| 		{cracky=3, stone=2}, | 		{cracky=3, stone=2}, | ||||||
| 		{"seacobble_seacobble_aqua.png"}, | 		{"seacobble_seacobble_aqua.png"}, | ||||||
| 		"Seacobble stair aqua", | 		"Seacobble stair aqua", | ||||||
| 		"Seacobble slab aqua", | 		"Seacobble slab aqua", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seacobble_skyblue", "seacobble:seacobble_skyblue", | 	stairs.register_stair_and_slab("seacobble_skyblue", "seacobble:seacobble_skyblue", | ||||||
| 		{cracky=3, stone=2}, | 		{cracky=3, stone=2}, | ||||||
| 		{"seacobble_seacobble_skyblue.png"}, | 		{"seacobble_seacobble_skyblue.png"}, | ||||||
| 		"Seacobble stair skyblue ", | 		"Seacobble stair skyblue ", | ||||||
| 		"Seacobble slab skyblue", | 		"Seacobble slab skyblue", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seacobble_redviolet", "seacobble:seacobble_redviolet", | 	stairs.register_stair_and_slab("seacobble_redviolet", "seacobble:seacobble_redviolet", | ||||||
| 		{cracky=3, stone=2}, | 		{cracky=3, stone=2}, | ||||||
| 		{"seacobble_seacobble_redviolet.png"}, | 		{"seacobble_seacobble_redviolet.png"}, | ||||||
| 		"Seacobble stair redviolet", | 		"Seacobble stair redviolet", | ||||||
| 		"Seacobble slab redviolet", | 		"Seacobble slab redviolet", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  | end | ||||||
|  |  | ||||||
| -- CRAFTING | -- CRAFTING | ||||||
|  |  | ||||||
| @@ -137,3 +155,5 @@ register_seacobble_craft("seacobble:seacobble_lime", {'clams:crushedwhite', 'def | |||||||
| register_seacobble_craft("seacobble:seacobble_aqua", {'clams:crushedwhite', 'default:cobble','dye:aqua'}) | register_seacobble_craft("seacobble:seacobble_aqua", {'clams:crushedwhite', 'default:cobble','dye:aqua'}) | ||||||
| register_seacobble_craft("seacobble:seacobble_skyblue", {'clams:crushedwhite', 'default:cobble','dye:skyblue'}) | register_seacobble_craft("seacobble:seacobble_skyblue", {'clams:crushedwhite', 'default:cobble','dye:skyblue'}) | ||||||
| register_seacobble_craft("seacobble:seacobble_redviolet", {'clams:crushedwhite', 'default:cobble','dye:redviolet'}) | register_seacobble_craft("seacobble:seacobble_redviolet", {'clams:crushedwhite', 'default:cobble','dye:redviolet'}) | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - seacobble] loaded.") | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| default | default | ||||||
| noairblocks | nalc_lib | ||||||
| unifieddyes | unifieddyes | ||||||
| colormachine? | colormachine? | ||||||
| @@ -1,617 +1,152 @@ | |||||||
| -- NODES | -- NODES | ||||||
|  |  | ||||||
|  | -- Add magenta, aqua, skyblue seacorals | ||||||
| minetest.register_node("seacoral:coralcyan", { | for color, cname in pairs({magenta = "Magenta", aqua = "Aqua", skyblue = "Skyblue"}) do | ||||||
| 	description = "Cyan Coral", | 	minetest.register_node( | ||||||
| 	drawtype = "plantlike", | 		"seacoral:coral_"..color, { | ||||||
| 	tiles = {"seacoral_coralcyan.png"}, | 			description = cname.." Coral", | ||||||
| 	inventory_image = "seacoral_coralcyan.png", | 			drawtype = "plantlike_rooted", | ||||||
| 	wield_image = "seacoral_coralcyan.png", | 			waving = 1, | ||||||
| 			paramtype = "light", | 			paramtype = "light", | ||||||
| 	walkable = false, | 			tiles = {"default_coral_skeleton.png"}, | ||||||
| 	climbable = true, | 			special_tiles = {{name = "seacoral_coral"..color..".png", tileable_vertical = true}}, | ||||||
| 	drowning = 1, | 			inventory_image = "seacoral_coral"..color..".png", | ||||||
| 	is_ground_content = true, | 			groups = {snappy = 3, seacoral = 1}, | ||||||
| 			selection_box = { | 			selection_box = { | ||||||
| 				type = "fixed", | 				type = "fixed", | ||||||
| 		fixed = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3} | 				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}, | ||||||
| 				}, | 				}, | ||||||
| 	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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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}, | 			node_dig_prediction = "default:coral_skeleton", | ||||||
| 	groups = {snappy=3, seacoral=1, sea=1,basecolor_magenta=1}, | 			node_placement_prediction = "", | ||||||
| 	sounds = default.node_sound_dirt_defaults(), | 			sounds = default.node_sound_stone_defaults( | ||||||
|  | 				{ | ||||||
|  | 					dig = {name = "default_dig_snappy", gain = 0.2}, | ||||||
|  | 					dug = {name = "default_grass_footstep", gain = 0.25}, | ||||||
|  | 				}), | ||||||
|  |  | ||||||
|  | 			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:coralaqua", { | 	-- Replace Old seacorals with new defined ones | ||||||
| 	description = "Aqua Coral", | 	minetest.register_alias("seacoral:coral"..color, "default:water_source") | ||||||
| 	drawtype = "plantlike", | 	minetest.register_alias("seacoral:seacoralsand"..color, "seacoral:coral_"..color) | ||||||
| 	tiles = {"seacoral_coralaqua.png"}, | 	minetest.register_alias("seacoral:seacoraldirt"..color, "seacoral:coral_"..color) | ||||||
| 	inventory_image = "seacoral_coralaqua.png", | end | ||||||
| 	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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| minetest.register_node("seacoral:corallime", { | -- Replace cyan, redviolet, lime seacorals with default Minetest's ones | ||||||
| 	description = "Lime Coral", | minetest.register_alias("seacoral:coralcyan", "default:water_source") | ||||||
| 	drawtype = "plantlike", | minetest.register_alias("seacoral:seacoralsandcyan", "default:coral_cyan") | ||||||
| 	tiles = {"seacoral_corallime.png"}, | minetest.register_alias("seacoral:seacoraldirtcyan", "default:coral_cyan") | ||||||
| 	inventory_image = "seacoral_corallime.png", | nalc.add_group("default:coral_cyan", "seacoral", 1) | ||||||
| 	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", { | minetest.register_alias("seacoral:coralredviolet", "default:water_source") | ||||||
| 	description = "Skyblue Coral", | minetest.register_alias("seacoral:seacoralsandredviolet", "default:coral_pink") | ||||||
| 	drawtype = "plantlike", | minetest.register_alias("seacoral:seacoraldirtredviolet", "default:coral_pink") | ||||||
| 	tiles = {"seacoral_coralskyblue.png"}, | nalc.add_group("default:coral_pink", "seacoral", 1) | ||||||
| 	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: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 | -- CRAFTING | ||||||
|  |  | ||||||
|  |  | ||||||
| if( minetest.get_modpath( "colormachine") == nil ) then | if( minetest.get_modpath( "colormachine") == nil ) then | ||||||
| 	register_seacoral_craft = function(output,recipe) | 	register_seacoral_craft = function(output,recipe) | ||||||
|     	minetest.register_craft({ | 		minetest.register_craft( | ||||||
|  | 			{ | ||||||
| 				type = 'shapeless', | 				type = 'shapeless', | ||||||
| 				output = output, | 				output = output, | ||||||
| 				recipe = recipe, | 				recipe = recipe, | ||||||
| 			}) | 			}) | ||||||
| 	end | 	end | ||||||
|  |  | ||||||
| register_seacoral_craft('dye:cyan 4', {'seacoral:coralcyan'}) | 	register_seacoral_craft('dye:cyan 4', {'default:coral_cyan'}) | ||||||
| register_seacoral_craft('dye:magenta 4', {'seacoral:coralmagenta'}) | 	register_seacoral_craft('dye:magenta 4', {'seacoral:coral_magenta'}) | ||||||
| register_seacoral_craft('dye:lime 4', {'seacoral:corallime'}) | 	register_seacoral_craft('dye:lime 4', {'default:coral_green'}) | ||||||
| register_seacoral_craft('dye:aqua 4', {'seacoral:coralaqua'}) | 	register_seacoral_craft('dye:spring 4', {'seacoral:coral_aqua'}) | ||||||
| register_seacoral_craft('dye:skyblue 4', {'seacoral:coralskyblue'}) | 	register_seacoral_craft('dye:azure 4', {'seacoral:coral_skyblue'}) | ||||||
| register_seacoral_craft('dye:redviolet 4', {'seacoral:coralredviolet'}) | 	register_seacoral_craft('dye:pink 4', {'default:coral_pink'}) | ||||||
| end | end | ||||||
|  |  | ||||||
| -- SEACORAL SAND AND DIRT GENERATION | -- SEACORAL SAND AND DIRT GENERATION | ||||||
|  |  | ||||||
|  | -- Coral reef | ||||||
|  |  | ||||||
| minetest.register_ore({ | minetest.register_decoration( | ||||||
| 	ore_type       = "scatter", | 	{ | ||||||
| 	ore            = "seacoral:seacoralsandcyan", | 		name = "seacoral:corals", | ||||||
| 	wherein        = "default:sand", | 		deco_type = "simple", | ||||||
| 	clust_scarcity = 10*10*10, | 		place_on = {"default:sand"}, | ||||||
| 	clust_num_ores = 24, | 		place_offset_y = -1, | ||||||
| 	clust_size     = 4, | 		sidelen = 4, | ||||||
| 	y_max     = -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, | 		y_min = -8, | ||||||
| }) | 		flags = "force_placement", | ||||||
|  | 		decoration = { | ||||||
| minetest.register_ore({ | 			"seacoral:coral_magenta", "default:coral_orange", | ||||||
| 	ore_type       = "scatter", | 			"seacoral:coral_aqua", "default:coral_brown", | ||||||
| 	ore            = "seacoral:seacoraldirtcyan", | 			"seacoral:coral_skyblue", "default:coral_skeleton", | ||||||
| 	wherein        = "default:dirt", | 			"default:coral_green", "default:coral_pink", | ||||||
| 	clust_scarcity = 10*10*10, | 			"default:coral_cyan" | ||||||
| 	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 |  | ||||||
|  |  | ||||||
|  |  | ||||||
| -- ABM'S | -- ABM'S | ||||||
|  |  | ||||||
|  | minetest.register_abm( | ||||||
| minetest.register_abm({ | 	{ | ||||||
| nodenames = {"seacoral:seacoraldirtcyan"}, | 		nodenames = {"group:seacoral"}, | ||||||
| interval = 12, | 		interval = 3, | ||||||
| chance = 12, | 		chance = 1, | ||||||
| action = function(pos, node, active_object_count, active_object_count_wider) | 		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 yp = {x = pos.x, y = pos.y + 1, z = pos.z} | ||||||
| 			local yyp = {x = pos.x, y = pos.y + 2, 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 | 			if ((minetest.get_node(yp).name == "default:water_source" or | ||||||
| @@ -625,15 +160,15 @@ action = function(pos, node, active_object_count, active_object_count_wider) | |||||||
| 			else | 			else | ||||||
| 				return | 				return | ||||||
| 			end | 			end | ||||||
| end | 		end | ||||||
| }) | 	}) | ||||||
|  |  | ||||||
|  |  | ||||||
| -- OPTIONAL DEPENDENCY | -- OPTIONAL DEPENDENCY | ||||||
|  |  | ||||||
|  |  | ||||||
| if( minetest.get_modpath( "colormachine") ~= nil ) then | 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 | 	else | ||||||
| 	return | 	return | ||||||
| end | end | ||||||
| @@ -645,6 +180,8 @@ end | |||||||
| minetest.register_alias("seadye:cyan","dye:cyan") | minetest.register_alias("seadye:cyan","dye:cyan") | ||||||
| minetest.register_alias("seadye:magenta","dye:magenta") | minetest.register_alias("seadye:magenta","dye:magenta") | ||||||
| minetest.register_alias("seadye:lime","dye:lime") | minetest.register_alias("seadye:lime","dye:lime") | ||||||
| minetest.register_alias("seadye:aqua","dye:aqua") | minetest.register_alias("seadye:aqua","dye:spring") | ||||||
| minetest.register_alias("seadye:skyblue","dye:skyblue") | minetest.register_alias("seadye:skyblue","dye:azure") | ||||||
| minetest.register_alias("seadye:redviolet","dye:redviolet") | minetest.register_alias("seadye:redviolet","dye:pink") | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - seacoral] loaded.") | ||||||
|   | |||||||
| @@ -4,3 +4,4 @@ stairs | |||||||
| clams | clams | ||||||
| stairsshine | stairsshine | ||||||
| colormachine? | colormachine? | ||||||
|  | moreblocks? | ||||||
|   | |||||||
| @@ -1,249 +1,107 @@ | |||||||
| -- NODES | -- NODES | ||||||
|  |  | ||||||
|  | local repl = { | ||||||
|  |    ["off"] = "", | ||||||
|  |    ["on"] = "off", | ||||||
|  | } | ||||||
|  |  | ||||||
| minetest.register_node("seaglass:seaglass", { | local colors = {"yellow", "red", "blue", "white", "black"} | ||||||
| 	description = "Standard seaglass on", |  | ||||||
|  | local function register_glass(suffix, color, cgroups) | ||||||
|  |    -- suffix : bool (false:off | true:on) | ||||||
|  |    local desc = "Seaglass " | ||||||
|  |  | ||||||
|  |    local col, c = "", "" | ||||||
|  |    if color and color ~= "" then | ||||||
|  |       col,c = color, "_"..color | ||||||
|  |       desc = desc..color.." " | ||||||
|  |    end | ||||||
|  |  | ||||||
|  |    local l, light, ls = "", "on", 7 | ||||||
|  |    if not suffix then | ||||||
|  |       l,light = "off","off" | ||||||
|  |       ls = 0 | ||||||
|  |    end | ||||||
|  |  | ||||||
|  |    desc = desc..light | ||||||
|  |     | ||||||
|  |    minetest.register_node( | ||||||
|  |       "seaglass:seaglass"..l..c, | ||||||
|  |       { | ||||||
|  | 	 description = desc, | ||||||
| 	 drawtype = "glasslike", | 	 drawtype = "glasslike", | ||||||
| 	tiles = {"seaglass_seaglass.png"}, | 	 tiles = {"seaglass_seaglass"..c..".png"}, | ||||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass.png"), | 	 inventory_image = minetest.inventorycube("seaglass_seaglass"..c..".png"), | ||||||
| 	 paramtype = "light", | 	 paramtype = "light", | ||||||
| 	 sunlight_propagates = true, | 	 sunlight_propagates = true, | ||||||
| 	light_source = 14, | 	 light_source = ls, | ||||||
| 	 is_ground_content = true, | 	 is_ground_content = true, | ||||||
| 	drop = 'seaglass:seaglassoff', | 	 drop = "seaglass:seaglassoff"..c, | ||||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, shine=1, not_in_creative_inventory=1}, | 	 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(), | 	 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_yellow", { |    stairs.register_stair_and_slab("seaglass"..l..c, "seaglass:seaglass"..l..c, | ||||||
| 	description = "Seaglass yellow on", | 				       cgroups, | ||||||
| 	drawtype = "glasslike", | 				       {"seaglass_seaglass"..c..".png"}, | ||||||
| 	tiles = {"seaglass_seaglass_yellow.png"}, | 				       "Seaglass stair "..light.." "..col, | ||||||
| 	inventory_image = minetest.inventorycube("seaglass_seaglass_yellow.png"), | 				       "Seaglass slab "..light.." "..col, | ||||||
| 	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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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()) | 				       default.node_sound_glass_defaults()) | ||||||
|     |     | ||||||
| stairsshine.register_stair_and_slab("seaglass_yellow", "seaglass:seaglass_yellow", |    for _,i in ipairs({"slab", "stair", "stair_outer", "stair_inner"}) do | ||||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_yellow=1, shine=1, yellowshine=1, not_in_creative_inventory=1}, |       minetest.override_item( | ||||||
| 		{"seaglass_seaglass_yellow.png"}, | 	 "stairs:"..i.."_seaglass"..l..c, | ||||||
| 		"seaglass stair on yellow", | 	 { | ||||||
| 		"seaglass slab on yellow", | 	    light_source = ls, | ||||||
| 		default.node_sound_glass_defaults()) | 	    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 | ||||||
|     |     | ||||||
| stairsshine.register_stair_and_slab("seaglass_red", "seaglass:seaglass_red", | end | ||||||
| 		{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", | for _,color in ipairs(colors) do | ||||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_blue=1, shine=1, blueshine=1, not_in_creative_inventory=1}, |    local groups_off = {noshine=1, snappy=2, cracky=3, oddly_breakable_by_hand=3} | ||||||
| 		{"seaglass_seaglass_blue.png"}, |    local groups_on = {not_in_creative_inventory=1, shine=1, snappy=2, cracky=3, oddly_breakable_by_hand=3} | ||||||
| 		"Seaglass stair on blue", |  | ||||||
| 		"Seaglass slab on blue", |  | ||||||
| 		default.node_sound_glass_defaults()) |  | ||||||
|  |  | ||||||
| stairsshine.register_stair_and_slab("seaglass_white", "seaglass:seaglass_white", |    if color == "yellow" then | ||||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_white=1, shine=1, whiteshine=1, not_in_creative_inventory=1}, |       groups_off.color_yellow = 1 | ||||||
| 		{"seaglass_seaglass_white.png"}, |       groups_on.color_yellow = 1 | ||||||
| 		"Seaglass stair on white", |       groups_on.yellowshine = 1 | ||||||
| 		"Seaglass slab on white", |    elseif color == "red" then | ||||||
| 		default.node_sound_glass_defaults()) |       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 | ||||||
|  |  | ||||||
| stairsshine.register_stair_and_slab("seaglass_black", "seaglass:seaglass_black", |    register_glass(false, color, groups_off) | ||||||
| 		{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_black=1, shine=1, blackshine=1, not_in_creative_inventory=1}, |    register_glass(true, color, groups_on) | ||||||
| 		{"seaglass_seaglass_black.png"}, | end | ||||||
| 		"Seaglass stair on black ", |  | ||||||
| 		"Seaglass slab on black", |  | ||||||
| 		default.node_sound_glass_defaults()) |  | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seaglassoff", "seaglass:seaglassoff", | register_glass(false, nil, {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, noshine=1}) | ||||||
| 		{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}) | ||||||
| 		{"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()) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| -- CRAFTING | -- CRAFTING | ||||||
| @@ -291,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_white", {'seaglass:seaglassoff_white'}) | ||||||
| register_seaglass_craft("seaglass:seaglass_black", {'seaglass:seaglassoff_black'}) | register_seaglass_craft("seaglass:seaglass_black", {'seaglass:seaglassoff_black'}) | ||||||
|  |  | ||||||
| register_seaglass_craft("stairsshine:stair_seaglass", {'stairs:stair_seaglassoff'}) | register_seaglass_craft("stairs:stair_seaglass", {'stairs:stair_seaglassoff'}) | ||||||
| register_seaglass_craft("stairsshine:stair_seaglass_yellow", {'stairs:stair_seaglassoff_yellow'}) | register_seaglass_craft("stairs:stair_seaglass_yellow", {'stairs:stair_seaglassoff_yellow'}) | ||||||
| register_seaglass_craft("stairsshine:stair_seaglass_red", {'stairs:stair_seaglassoff_red'}) | register_seaglass_craft("stairs:stair_seaglass_red", {'stairs:stair_seaglassoff_red'}) | ||||||
| register_seaglass_craft("stairsshine:stair_seaglass_blue", {'stairs:stair_seaglassoff_blue'}) | register_seaglass_craft("stairs:stair_seaglass_blue", {'stairs:stair_seaglassoff_blue'}) | ||||||
| register_seaglass_craft("stairsshine:stair_seaglass_white", {'stairs:stair_seaglassoff_white'}) | register_seaglass_craft("stairs:stair_seaglass_white", {'stairs:stair_seaglassoff_white'}) | ||||||
| register_seaglass_craft("stairsshine:stair_seaglass_black", {'stairs:stair_seaglassoff_black'}) | 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", {'stairs:stair_seaglass'}) | ||||||
| register_seaglass_craft("stairs:stair_seaglassoff_yellow", {'stairsshine:stair_seaglass_yellow'}) | register_seaglass_craft("stairs:stair_seaglassoff_yellow", {'stairs:stair_seaglass_yellow'}) | ||||||
| register_seaglass_craft("stairs:stair_seaglassoff_red", {'stairsshine:stair_seaglass_red'}) | register_seaglass_craft("stairs:stair_seaglassoff_red", {'stairs:stair_seaglass_red'}) | ||||||
| register_seaglass_craft("stairs:stair_seaglassoff_blue", {'stairsshine:stair_seaglass_blue'}) | register_seaglass_craft("stairs:stair_seaglassoff_blue", {'stairs:stair_seaglass_blue'}) | ||||||
| register_seaglass_craft("stairs:stair_seaglassoff_white", {'stairsshine:stair_seaglass_white'}) | register_seaglass_craft("stairs:stair_seaglassoff_white", {'stairs:stair_seaglass_white'}) | ||||||
| register_seaglass_craft("stairs:stair_seaglassoff_black", {'stairsshine:stair_seaglass_black'}) | register_seaglass_craft("stairs:stair_seaglassoff_black", {'stairs:stair_seaglass_black'}) | ||||||
|  |  | ||||||
| register_seaglass_craft("stairsshine:slab_seaglass", {'stairs:slab_seaglassoff'}) | register_seaglass_craft("stairs:stair_outer_seaglass", {'stairs:stair_outer_seaglassoff'}) | ||||||
| register_seaglass_craft("stairsshine:slab_seaglass_yellow", {'stairs:slab_seaglassoff_yellow'}) | register_seaglass_craft("stairs:stair_outer_seaglass_yellow", {'stairs:stair_outer_seaglassoff_yellow'}) | ||||||
| register_seaglass_craft("stairsshine:slab_seaglass_red", {'stairs:slab_seaglassoff_red'}) | register_seaglass_craft("stairs:stair_outer_seaglass_red", {'stairs:stair_outer_seaglassoff_red'}) | ||||||
| register_seaglass_craft("stairsshine:slab_seaglass_blue", {'stairs:slab_seaglassoff_blue'}) | register_seaglass_craft("stairs:stair_outer_seaglass_blue", {'stairs:stair_outer_seaglassoff_blue'}) | ||||||
| register_seaglass_craft("stairsshine:slab_seaglass_white", {'stairs:slab_seaglassoff_white'}) | register_seaglass_craft("stairs:stair_outer_seaglass_white", {'stairs:stair_outer_seaglassoff_white'}) | ||||||
| register_seaglass_craft("stairsshine:slab_seaglass_black", {'stairs:slab_seaglassoff_black'}) | 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:stair_outer_seaglassoff", {'stairs:stair_outer_seaglass'}) | ||||||
| register_seaglass_craft("stairs:slab_seaglassoff_yellow", {'stairsshine:slab_seaglass_yellow'}) | register_seaglass_craft("stairs:stair_outer_seaglassoff_yellow", {'stairs:stair_outer_seaglass_yellow'}) | ||||||
| register_seaglass_craft("stairs:slab_seaglassoff_red", {'stairsshine:slab_seaglass_red'}) | register_seaglass_craft("stairs:stair_outer_seaglassoff_red", {'stairs:stair_outer_seaglass_red'}) | ||||||
| register_seaglass_craft("stairs:slab_seaglassoff_blue", {'stairsshine:slab_seaglass_blue'}) | register_seaglass_craft("stairs:stair_outer_seaglassoff_blue", {'stairs:stair_outer_seaglass_blue'}) | ||||||
| register_seaglass_craft("stairs:slab_seaglassoff_white", {'stairsshine:slab_seaglass_white'}) | register_seaglass_craft("stairs:stair_outer_seaglassoff_white", {'stairs:stair_outer_seaglass_white'}) | ||||||
| register_seaglass_craft("stairs:slab_seaglassoff_black", {'stairsshine:slab_seaglass_black'}) | 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) | register_seaglass_craft("stairs:slab_seaglassoff", {'stairs:slab_seaglass'}) | ||||||
| 	if node.name == "seaglass:seaglass" then | register_seaglass_craft("stairs:slab_seaglassoff_yellow", {'stairs:slab_seaglass_yellow'}) | ||||||
| 		minetest.add_node(pos, {name="seaglass:seaglassoff"}) | register_seaglass_craft("stairs:slab_seaglassoff_red", {'stairs:slab_seaglass_red'}) | ||||||
| 		nodeupdate(pos) | register_seaglass_craft("stairs:slab_seaglassoff_blue", {'stairs:slab_seaglass_blue'}) | ||||||
| 			elseif node.name == "seaglass:seaglassoff" then | register_seaglass_craft("stairs:slab_seaglassoff_white", {'stairs:slab_seaglass_white'}) | ||||||
| 			minetest.add_node(pos, {name="seaglass:seaglass"}) | register_seaglass_craft("stairs:slab_seaglassoff_black", {'stairs:slab_seaglass_black'}) | ||||||
| 			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) |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| -- ALIASES | -- ALIASES | ||||||
| @@ -739,3 +214,5 @@ minetest.register_alias("clams:redlightglass","seaglass:seaglassoff_red") | |||||||
| minetest.register_alias("clams:bluelightglass","seaglass:seaglassoff_blue") | minetest.register_alias("clams:bluelightglass","seaglass:seaglassoff_blue") | ||||||
| minetest.register_alias("clams:whitelightglass","seaglass:seaglassoff_white") | minetest.register_alias("clams:whitelightglass","seaglass:seaglassoff_white") | ||||||
| minetest.register_alias("clams:blacklightglass","seaglass:seaglassoff_black") | minetest.register_alias("clams:blacklightglass","seaglass:seaglassoff_black") | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - seaglass] loaded.") | ||||||
|   | |||||||
| @@ -4,3 +4,4 @@ stairs | |||||||
| clams | clams | ||||||
| whiteshell? | whiteshell? | ||||||
| colormachine? | colormachine? | ||||||
|  | moreblocks? | ||||||
|   | |||||||
| @@ -81,8 +81,26 @@ minetest.register_node("seagravel:seagravel_redviolet", { | |||||||
|  |  | ||||||
| -- STAIRS | -- STAIRS | ||||||
|  |  | ||||||
|  | local colors = {"", "cyan", "magenta", "lime", "aqua", "skyblue", "redviolet"} | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seagravel", "seagravel:seagravel", | if minetest.get_modpath("moreblocks") then | ||||||
|  | 	for i, color in ipairs(colors) do | ||||||
|  | 		local c = "_"..color | ||||||
|  | 		if i == 1 then c = "" end | ||||||
|  | 		local nodename = "seagravel:seagravel"..c | ||||||
|  | 		local ndef = table.copy(minetest.registered_nodes[nodename]) | ||||||
|  | 		ndef.sunlight_propagates = true | ||||||
|  | 		ndef.place_param2 = nil | ||||||
|  |  | ||||||
|  | 		stairsplus:register_all( | ||||||
|  | 			"seagravel", | ||||||
|  | 			"seagravel"..c, | ||||||
|  | 			nodename, | ||||||
|  | 			ndef | ||||||
|  | 		) | ||||||
|  | 	end | ||||||
|  | else | ||||||
|  | 	stairs.register_stair_and_slab("seagravel", "seagravel:seagravel", | ||||||
| 		{crumbly=2, falling_node=1}, | 		{crumbly=2, falling_node=1}, | ||||||
| 		{"seagravel_seagravel.png"}, | 		{"seagravel_seagravel.png"}, | ||||||
| 		"Seagravel stair", | 		"Seagravel stair", | ||||||
| @@ -92,7 +110,7 @@ stairs.register_stair_and_slab("seagravel", "seagravel:seagravel", | |||||||
| 		dug = {name="default_gravel_footstep", gain=1.0}, | 		dug = {name="default_gravel_footstep", gain=1.0}, | ||||||
| 		})) | 		})) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seagravel_cyan", "seagravel:seagravel_cyan", | 	stairs.register_stair_and_slab("seagravel_cyan", "seagravel:seagravel_cyan", | ||||||
| 		{crumbly=2, falling_node=1}, | 		{crumbly=2, falling_node=1}, | ||||||
| 		{"seagravel_seagravel_cyan.png"}, | 		{"seagravel_seagravel_cyan.png"}, | ||||||
| 		"Seagravel stair cyan", | 		"Seagravel stair cyan", | ||||||
| @@ -102,7 +120,7 @@ stairs.register_stair_and_slab("seagravel_cyan", "seagravel:seagravel_cyan", | |||||||
| 		dug = {name="default_gravel_footstep", gain=1.0}, | 		dug = {name="default_gravel_footstep", gain=1.0}, | ||||||
| 		})) | 		})) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seagravel_magenta", "seagravel:seagravel_magenta", | 	stairs.register_stair_and_slab("seagravel_magenta", "seagravel:seagravel_magenta", | ||||||
| 		{crumbly=2, falling_node=1}, | 		{crumbly=2, falling_node=1}, | ||||||
| 		{"seagravel_seagravel_magenta.png"}, | 		{"seagravel_seagravel_magenta.png"}, | ||||||
| 		"Seagravel stair magenta", | 		"Seagravel stair magenta", | ||||||
| @@ -112,7 +130,7 @@ stairs.register_stair_and_slab("seagravel_magenta", "seagravel:seagravel_magenta | |||||||
| 		dug = {name="default_gravel_footstep", gain=1.0}, | 		dug = {name="default_gravel_footstep", gain=1.0}, | ||||||
| 		})) | 		})) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seagravel_lime", "seagravel:seagravel_lime", | 	stairs.register_stair_and_slab("seagravel_lime", "seagravel:seagravel_lime", | ||||||
| 		{cracky=3, stone=2}, | 		{cracky=3, stone=2}, | ||||||
| 		{"seagravel_seagravel_lime.png"}, | 		{"seagravel_seagravel_lime.png"}, | ||||||
| 		"Seagravel stair lime", | 		"Seagravel stair lime", | ||||||
| @@ -122,7 +140,7 @@ stairs.register_stair_and_slab("seagravel_lime", "seagravel:seagravel_lime", | |||||||
| 		dug = {name="default_gravel_footstep", gain=1.0}, | 		dug = {name="default_gravel_footstep", gain=1.0}, | ||||||
| 		})) | 		})) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seagravel_aqua", "seagravel:seagravel_aqua", | 	stairs.register_stair_and_slab("seagravel_aqua", "seagravel:seagravel_aqua", | ||||||
| 		{crumbly=2, falling_node=1}, | 		{crumbly=2, falling_node=1}, | ||||||
| 		{"seagravel_seagravel_aqua.png"}, | 		{"seagravel_seagravel_aqua.png"}, | ||||||
| 		"Seagravel stair aqua", | 		"Seagravel stair aqua", | ||||||
| @@ -132,7 +150,7 @@ stairs.register_stair_and_slab("seagravel_aqua", "seagravel:seagravel_aqua", | |||||||
| 		dug = {name="default_gravel_footstep", gain=1.0}, | 		dug = {name="default_gravel_footstep", gain=1.0}, | ||||||
| 		})) | 		})) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seagravel_skyblue", "seagravel:seagravel_skyblue", | 	stairs.register_stair_and_slab("seagravel_skyblue", "seagravel:seagravel_skyblue", | ||||||
| 		{crumbly=2, falling_node=1}, | 		{crumbly=2, falling_node=1}, | ||||||
| 		{"seagravel_seagravel_skyblue.png"}, | 		{"seagravel_seagravel_skyblue.png"}, | ||||||
| 		"Seagravel stair skyblue ", | 		"Seagravel stair skyblue ", | ||||||
| @@ -142,7 +160,7 @@ stairs.register_stair_and_slab("seagravel_skyblue", "seagravel:seagravel_skyblue | |||||||
| 		dug = {name="default_gravel_footstep", gain=1.0}, | 		dug = {name="default_gravel_footstep", gain=1.0}, | ||||||
| 		})) | 		})) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seagravel_redviolet", "seagravel:seagravel_redviolet", | 	stairs.register_stair_and_slab("seagravel_redviolet", "seagravel:seagravel_redviolet", | ||||||
| 		{crumbly=2, falling_node=1}, | 		{crumbly=2, falling_node=1}, | ||||||
| 		{"seagravel_seagravel_redviolet.png"}, | 		{"seagravel_seagravel_redviolet.png"}, | ||||||
| 		"Seagravel stair redviolet", | 		"Seagravel stair redviolet", | ||||||
| @@ -151,7 +169,7 @@ stairs.register_stair_and_slab("seagravel_redviolet", "seagravel:seagravel_redvi | |||||||
| 		footstep = {name="default_gravel_footstep", gain=0.5}, | 		footstep = {name="default_gravel_footstep", gain=0.5}, | ||||||
| 		dug = {name="default_gravel_footstep", gain=1.0}, | 		dug = {name="default_gravel_footstep", gain=1.0}, | ||||||
| 		})) | 		})) | ||||||
|  | end | ||||||
|  |  | ||||||
| -- CRAFTING | -- CRAFTING | ||||||
|  |  | ||||||
| @@ -179,3 +197,5 @@ register_seagravel_craft("seagravel:seagravel_lime", {'clams:crushedwhite', 'def | |||||||
| register_seagravel_craft("seagravel:seagravel_aqua", {'clams:crushedwhite', 'default:gravel','dye:aqua'}) | register_seagravel_craft("seagravel:seagravel_aqua", {'clams:crushedwhite', 'default:gravel','dye:aqua'}) | ||||||
| register_seagravel_craft("seagravel:seagravel_skyblue", {'clams:crushedwhite', 'default:gravel','dye:skyblue'}) | register_seagravel_craft("seagravel:seagravel_skyblue", {'clams:crushedwhite', 'default:gravel','dye:skyblue'}) | ||||||
| register_seagravel_craft("seagravel:seagravel_redviolet", {'clams:crushedwhite', 'default:gravel','dye:redviolet'}) | register_seagravel_craft("seagravel:seagravel_redviolet", {'clams:crushedwhite', 'default:gravel','dye:redviolet'}) | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - seagravel] loaded.") | ||||||
|   | |||||||
| @@ -72,3 +72,5 @@ minetest.register_craft({ | |||||||
| 		{'default:steel_ingot', 'default:bronze_ingot', 'default:glass'}, | 		{'default:steel_ingot', 'default:bronze_ingot', 'default:glass'}, | ||||||
| 	}, | 	}, | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - sealamps] loaded.") | ||||||
|   | |||||||
| @@ -1,2 +1 @@ | |||||||
| default | default | ||||||
| noairblocks |  | ||||||
| @@ -1,202 +1,155 @@ | |||||||
| -- NODES | -- NODES | ||||||
|  |  | ||||||
| minetest.register_node("seaplants:kelpgreen", { | for color, cname in pairs({green = "Green", brown = "Brown"}) do | ||||||
| 	description = "Green Kelp", | 	minetest.register_node( | ||||||
| 	drawtype = "plantlike", | 		"seaplants:sand_with_kelp_"..color, { | ||||||
| 	tiles = {"seaplants_kelpgreen.png"}, | 			description = cname.." Kelp", | ||||||
| 	inventory_image = "seaplants_kelpgreen.png", | 			drawtype = "plantlike_rooted", | ||||||
| 	wield_image = "seaplants_kelpgreen.png", | 			waving = 1, | ||||||
| 	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) |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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) |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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) |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| 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) |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| minetest.register_node("seaplants:seaplantssandkelpgreen", { |  | ||||||
| 	description = "Sea plants sand kelp green", |  | ||||||
| 			tiles = {"default_sand.png"}, | 			tiles = {"default_sand.png"}, | ||||||
| 	is_ground_content = true, | 			special_tiles = {{name = "seaplants_kelp"..color.."middle.png", tileable_vertical = true}}, | ||||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | 			inventory_image = "seaplants_kelp"..color..".png", | ||||||
| 	drop = 'default:sand', | 			paramtype = "light", | ||||||
| 	sounds = default.node_sound_sand_defaults(), | 			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}, | ||||||
|  | 				}), | ||||||
| 			 | 			 | ||||||
| minetest.register_node("seaplants:seaplantsdirtkelpgreen", { | 			on_use = minetest.item_eat(1), | ||||||
| 	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(), |  | ||||||
| }) |  | ||||||
| 			 | 			 | ||||||
| minetest.register_node("seaplants:seaplantssandkelpbrown", { | 			on_place = function(itemstack, placer, pointed_thing) | ||||||
| 	description = "Sea plants sand kelp brown", | 				-- 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 | ||||||
|  |  | ||||||
|  | 				local pos = pointed_thing.under | ||||||
|  | 				if minetest.get_node(pos).name ~= "default:sand" then | ||||||
|  | 					return itemstack | ||||||
|  | 				end | ||||||
|  |  | ||||||
|  | 				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() | ||||||
|  |  | ||||||
|  | 				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 | ||||||
|  |  | ||||||
|  | 				return itemstack | ||||||
|  | 			end, | ||||||
|  |  | ||||||
|  | 			after_destruct  = function(pos, oldnode) | ||||||
|  | 				minetest.set_node(pos, {name = "default:sand"}) | ||||||
|  | 			end | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	-- 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 | ||||||
|  |  | ||||||
|  | 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"}, | 			tiles = {"default_sand.png"}, | ||||||
| 	is_ground_content = true, | 			special_tiles = {{name = "seaplants_seagrass"..color..".png", tileable_vertical = true}}, | ||||||
| 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | 			inventory_image = "seaplants_seagrass"..color..".png", | ||||||
| 	drop = 'default:sand', | 			groups = {snappy = 3}, | ||||||
| 	sounds = default.node_sound_sand_defaults(), | 			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:seaplantsdirtkelpbrown", { | 			on_use = minetest.item_eat(1), | ||||||
| 	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(), |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| minetest.register_node("seaplants:seaplantssandseagrassgreen", { | 			on_place = function(itemstack, placer, pointed_thing) | ||||||
| 	description = "Sea plants sand seagrass green", | 				if pointed_thing.type ~= "node" or not placer then | ||||||
| 	tiles = {"default_sand.png"}, | 					return itemstack | ||||||
| 	is_ground_content = true, | 				end | ||||||
| 	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("seaplants:seaplantsdirtseagrassgreen", { | 				local player_name = placer:get_player_name() | ||||||
| 	description = "Sea plants dirt seagrass green", | 				local pos_under = pointed_thing.under | ||||||
| 	tiles = {"default_dirt.png"}, | 				local pos_above = pointed_thing.above | ||||||
| 	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("seaplants:seaplantssandseagrassred", { | 				if minetest.get_node(pos_under).name ~= "default:sand" or | ||||||
| 	description = "Sea plants sand seagrass red", | 				minetest.get_node(pos_above).name ~= "default:water_source" then | ||||||
| 	tiles = {"default_sand.png"}, | 					return itemstack | ||||||
| 	is_ground_content = true, | 				end | ||||||
| 	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("seaplants:seaplantsdirtseagrassred", { | 				if minetest.is_protected(pos_under, player_name) or | ||||||
| 	description = "Sea plants dirt seagrass red", | 				minetest.is_protected(pos_above, player_name) then | ||||||
| 	tiles = {"default_dirt.png"}, | 					minetest.chat_send_player(player_name, "Node is protected") | ||||||
| 	is_ground_content = true, | 					minetest.record_protection_violation(pos_under, player_name) | ||||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | 					return itemstack | ||||||
| 	drop = 'default:dirt', | 				end | ||||||
| 	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 | -- CRAFT ITEMS | ||||||
| @@ -214,326 +167,61 @@ minetest.register_craftitem("seaplants:seasaladmix", { | |||||||
| minetest.register_craft({ | minetest.register_craft({ | ||||||
| 	type = "shapeless", | 	type = "shapeless", | ||||||
| 	output = "seaplants:seasaladmix", | 	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({ | minetest.register_decoration( | ||||||
| 	ore_type       = "scatter", | 	{ | ||||||
| 	ore            = "seaplants:seaplantssandkelpgreen", | 		name = "seaplants:seaplants", | ||||||
| 	wherein        = "default:sand", | 		deco_type = "simple", | ||||||
| 	clust_scarcity = 10*10*10, | 		place_on = {"default:sand"}, | ||||||
| 	clust_num_ores = 24, | 		place_offset_y = -1, | ||||||
| 	clust_size     = 4, | 		sidelen = 16, | ||||||
| 	y_max     = -14, | 		noise_params = { | ||||||
| 	y_min     = -31000, | 			offset = -0.04, | ||||||
| }) | 			scale = 0.1, | ||||||
|  | 			spread = {x = 200, y = 200, z = 200}, | ||||||
| minetest.register_ore({ | 			seed = 87113, | ||||||
| 	ore_type       = "scatter", | 			octaves = 3, | ||||||
| 	ore            = "seaplants:seaplantsdirtkelpgreen", | 			persist = 0.7 | ||||||
| 	wherein        = "default:dirt", | 		}, | ||||||
| 	clust_scarcity = 10*10*10, | 		biomes = { | ||||||
| 	clust_num_ores = 24, | 			"taiga_ocean", | ||||||
| 	clust_size     = 4, | 			"snowy_grassland_ocean", | ||||||
| 	y_max     = -14, | 			"grassland_ocean", | ||||||
| 	y_min     = -31000, | 			"coniferous_forest_ocean", | ||||||
| }) | 			"deciduous_forest_ocean", | ||||||
|  | 			"sandstone_desert_ocean", | ||||||
| minetest.register_ore({ | 			"cold_desert_ocean"}, | ||||||
| 	ore_type       = "scatter", | 		y_max = -5, | ||||||
| 	ore            = "seaplants:seaplantssandkelpbrown", | 		y_min = -10, | ||||||
| 	wherein        = "default:sand", | 		flags = "force_placement", | ||||||
| 	clust_scarcity = 10*10*10, | 		decoration = { | ||||||
| 	clust_num_ores = 24, | 			"default:sand_with_kelp", "seaplants:sand_with_kelp_green", | ||||||
| 	clust_size     = 4, | 			"seaplants:sand_with_kelp_brown", "seaplants:seagrass_green", | ||||||
| 	y_max     = -14, | 			"seaplants:seagrass_red" | ||||||
| 	y_min     = -31000, | 		}, | ||||||
| }) | 		param2 = 48, | ||||||
|  | 		param2_max = 96, | ||||||
| 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 |  | ||||||
| }) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| -- ALIASES | -- ALIASES | ||||||
|  |  | ||||||
|  |  | ||||||
| minetest.register_alias("seaplants:stemsgreen","default:sand") | minetest.register_alias("seaplants:stemsgreen","default:sand") | ||||||
| minetest.register_alias("seaplants:stemsbrown","default:dirt") | minetest.register_alias("seaplants:stemsbrown","default:dirt") | ||||||
| minetest.register_alias("seaplants:leafyblue","default:sand") | minetest.register_alias("seaplants:leafyblue","default:sand") | ||||||
| minetest.register_alias("seaplants:leafygreen","default:dirt") | minetest.register_alias("seaplants:leafygreen","default:dirt") | ||||||
|  |  | ||||||
| minetest.register_alias("seaplants:chewstickgreen","seaplants:kelpgreen") | minetest.register_alias("seaplants:chewstickgreen","seaplants:sand_with_kelp_green") | ||||||
| minetest.register_alias("seaplants:chewstickbrown","seaplants:kelpbrown") | minetest.register_alias("seaplants:chewstickbrown","seaplants:sand_with_kelp_brown") | ||||||
| minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrassgreen") | minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrass_green") | ||||||
| minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrassred") | minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrass_red") | ||||||
| minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") | minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - seaplants] loaded.") | ||||||
|   | |||||||
| @@ -4,3 +4,4 @@ stairs | |||||||
| clams | clams | ||||||
| whiteshell? | whiteshell? | ||||||
| colormachine? | colormachine? | ||||||
|  | moreblocks? | ||||||
|   | |||||||
| @@ -67,56 +67,74 @@ minetest.register_node("seastone:seastone_redviolet", { | |||||||
|  |  | ||||||
| -- STAIRS | -- STAIRS | ||||||
|  |  | ||||||
|  | local colors = {"", "cyan", "magenta", "lime", "aqua", "skyblue", "redviolet"} | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastone", "seastone:seastone", | if minetest.get_modpath("moreblocks") then | ||||||
|  | 	for i, color in ipairs(colors) do | ||||||
|  | 		local c = "_"..color | ||||||
|  | 		if i == 1 then c = "" end | ||||||
|  | 		local nodename = "seastone:seastone"..c | ||||||
|  | 		local ndef = table.copy(minetest.registered_nodes[nodename]) | ||||||
|  | 		ndef.sunlight_propagates = true | ||||||
|  | 		ndef.place_param2 = nil | ||||||
|  |  | ||||||
|  | 		stairsplus:register_all( | ||||||
|  | 			"seastone", | ||||||
|  | 			"seastone"..c, | ||||||
|  | 			nodename, | ||||||
|  | 			ndef | ||||||
|  | 		) | ||||||
|  | 	end | ||||||
|  | else | ||||||
|  | 	stairs.register_stair_and_slab("seastone", "seastone:seastone", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastone_seastone.png"}, | 		{"seastone_seastone.png"}, | ||||||
| 		"Seastone stair", | 		"Seastone stair", | ||||||
| 		"Seastone slab", | 		"Seastone slab", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastone_cyan", "seastone:seastone_cyan", | 	stairs.register_stair_and_slab("seastone_cyan", "seastone:seastone_cyan", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastone_seastone_cyan.png"}, | 		{"seastone_seastone_cyan.png"}, | ||||||
| 		"Seastone stair cyan", | 		"Seastone stair cyan", | ||||||
| 		"Seastone slab cyan", | 		"Seastone slab cyan", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastone_magenta", "seastone:seastone_magenta", | 	stairs.register_stair_and_slab("seastone_magenta", "seastone:seastone_magenta", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastone_seastone_magenta.png"}, | 		{"seastone_seastone_magenta.png"}, | ||||||
| 		"Seastone stair magenta", | 		"Seastone stair magenta", | ||||||
| 		"Seastone slab magenta", | 		"Seastone slab magenta", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastone_lime", "seastone:seastone_lime", | 	stairs.register_stair_and_slab("seastone_lime", "seastone:seastone_lime", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastone_seastone_lime.png"}, | 		{"seastone_seastone_lime.png"}, | ||||||
| 		"Seastone stair lime", | 		"Seastone stair lime", | ||||||
| 		"Seastone slab lime", | 		"Seastone slab lime", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastone_aqua", "seastone:seastone_aqua", | 	stairs.register_stair_and_slab("seastone_aqua", "seastone:seastone_aqua", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastone_seastone_aqua.png"}, | 		{"seastone_seastone_aqua.png"}, | ||||||
| 		"Seastone stair aqua", | 		"Seastone stair aqua", | ||||||
| 		"Seastone slab aqua", | 		"Seastone slab aqua", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastone_skyblue", "seastone:seastone_skyblue", | 	stairs.register_stair_and_slab("seastone_skyblue", "seastone:seastone_skyblue", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastone_seastone_skyblue.png"}, | 		{"seastone_seastone_skyblue.png"}, | ||||||
| 		"Seastone stair skyblue ", | 		"Seastone stair skyblue ", | ||||||
| 		"Seastone slab skyblue", | 		"Seastone slab skyblue", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastone_redviolet", "seastone:seastone_redviolet", | 	stairs.register_stair_and_slab("seastone_redviolet", "seastone:seastone_redviolet", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastone_seastone_redviolet.png"}, | 		{"seastone_seastone_redviolet.png"}, | ||||||
| 		"Seastone stair redviolet", | 		"Seastone stair redviolet", | ||||||
| 		"Seastone slab redviolet", | 		"Seastone slab redviolet", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  | end | ||||||
|  |  | ||||||
| -- CRAFTING | -- CRAFTING | ||||||
|  |  | ||||||
| @@ -163,3 +181,5 @@ register_smoothblock_cooking("seastone:seastone_lime", "seacobble:seacobble_lime | |||||||
| register_smoothblock_cooking("seastone:seastone_aqua", "seacobble:seacobble_aqua") | register_smoothblock_cooking("seastone:seastone_aqua", "seacobble:seacobble_aqua") | ||||||
| register_smoothblock_cooking("seastone:seastone_skyblue", "seacobble:seacobble_skyblue") | register_smoothblock_cooking("seastone:seastone_skyblue", "seacobble:seacobble_skyblue") | ||||||
| register_smoothblock_cooking("seastone:seastone_redviolet", "seacobble:seacobble_redviolet") | register_smoothblock_cooking("seastone:seastone_redviolet", "seacobble:seacobble_redviolet") | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - seastone] loaded.") | ||||||
|   | |||||||
| @@ -2,3 +2,4 @@ default | |||||||
| stairs | stairs | ||||||
| seastone | seastone | ||||||
| colormachine? | colormachine? | ||||||
|  | moreblocks? | ||||||
|   | |||||||
| @@ -61,56 +61,74 @@ minetest.register_node("seastonebrick:seastonebrick_redviolet", { | |||||||
|  |  | ||||||
| -- STAIRS | -- STAIRS | ||||||
|  |  | ||||||
|  | local colors = {"", "cyan", "magenta", "lime", "aqua", "skyblue", "redviolet"} | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastonebrick", "seastonebrick:seastonebrick", | if minetest.get_modpath("moreblocks") then | ||||||
|  | 	for i, color in ipairs(colors) do | ||||||
|  | 		local c = "_"..color | ||||||
|  | 		if i == 1 then c = "" end | ||||||
|  | 		local nodename = "seastonebrick:seastonebrick"..c | ||||||
|  | 		local ndef = table.copy(minetest.registered_nodes[nodename]) | ||||||
|  | 		ndef.sunlight_propagates = true | ||||||
|  | 		ndef.place_param2 = nil | ||||||
|  |  | ||||||
|  | 		stairsplus:register_all( | ||||||
|  | 			"seastonebrick", | ||||||
|  | 			"seastonebrick"..c, | ||||||
|  | 			nodename, | ||||||
|  | 			ndef | ||||||
|  | 		) | ||||||
|  | 	end | ||||||
|  | else | ||||||
|  | 	stairs.register_stair_and_slab("seastonebrick", "seastonebrick:seastonebrick", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastonebrick_seastonebrick.png"}, | 		{"seastonebrick_seastonebrick.png"}, | ||||||
| 		"Seastonebrick stair", | 		"Seastonebrick stair", | ||||||
| 		"Seastonebrick slab", | 		"Seastonebrick slab", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastonebrick_cyan", "seastonebrick:seastonebrick_cyan", | 	stairs.register_stair_and_slab("seastonebrick_cyan", "seastonebrick:seastonebrick_cyan", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastonebrick_seastonebrick_cyan.png"}, | 		{"seastonebrick_seastonebrick_cyan.png"}, | ||||||
| 		"Seastonebrick stair cyan", | 		"Seastonebrick stair cyan", | ||||||
| 		"Seastonebrick slab cyan", | 		"Seastonebrick slab cyan", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastonebrick_magenta", "seastonebrick:seastonebrick_magenta", | 	stairs.register_stair_and_slab("seastonebrick_magenta", "seastonebrick:seastonebrick_magenta", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastonebrick_seastonebrick_magenta.png"}, | 		{"seastonebrick_seastonebrick_magenta.png"}, | ||||||
| 		"Seastonebrick stair magenta", | 		"Seastonebrick stair magenta", | ||||||
| 		"Seastonebrick slab magenta", | 		"Seastonebrick slab magenta", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastonebrick_lime", "seastonebrick:seastonebrick_lime", | 	stairs.register_stair_and_slab("seastonebrick_lime", "seastonebrick:seastonebrick_lime", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastonebrick_seastonebrick_lime.png"}, | 		{"seastonebrick_seastonebrick_lime.png"}, | ||||||
| 		"Seastonebrick stair lime", | 		"Seastonebrick stair lime", | ||||||
| 		"Seastonebrick slab lime", | 		"Seastonebrick slab lime", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastonebrick_aqua", "seastonebrick:seastonebrick_aqua", | 	stairs.register_stair_and_slab("seastonebrick_aqua", "seastonebrick:seastonebrick_aqua", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastonebrick_seastonebrick_aqua.png"}, | 		{"seastonebrick_seastonebrick_aqua.png"}, | ||||||
| 		"Seastonebrick stair aqua", | 		"Seastonebrick stair aqua", | ||||||
| 		"Seastonebrick slab aqua", | 		"Seastonebrick slab aqua", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastonebrick_skyblue", "seastonebrick:seastonebrick_skyblue", | 	stairs.register_stair_and_slab("seastonebrick_skyblue", "seastonebrick:seastonebrick_skyblue", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastonebrick_seastonebrick_skyblue.png"}, | 		{"seastonebrick_seastonebrick_skyblue.png"}, | ||||||
| 		"Seastonebrick stair skyblue ", | 		"Seastonebrick stair skyblue ", | ||||||
| 		"Seastonebrick slab skyblue", | 		"Seastonebrick slab skyblue", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  |  | ||||||
| stairs.register_stair_and_slab("seastonebrick_redviolet", "seastonebrick:seastonebrick_redviolet", | 	stairs.register_stair_and_slab("seastonebrick_redviolet", "seastonebrick:seastonebrick_redviolet", | ||||||
| 		{cracky=3, stone=1}, | 		{cracky=3, stone=1}, | ||||||
| 		{"seastonebrick_seastonebrick_redviolet.png"}, | 		{"seastonebrick_seastonebrick_redviolet.png"}, | ||||||
| 		"Seastonebrick stair redviolet", | 		"Seastonebrick stair redviolet", | ||||||
| 		"Seastonebrick slab redviolet", | 		"Seastonebrick slab redviolet", | ||||||
| 		default.node_sound_stone_defaults()) | 		default.node_sound_stone_defaults()) | ||||||
|  | end | ||||||
|  |  | ||||||
| -- CRAFTING | -- CRAFTING | ||||||
|  |  | ||||||
| @@ -129,3 +147,5 @@ register_blockbrick_craft("seastonebrick:seastonebrick_lime", {{'seastone:seasto | |||||||
| register_blockbrick_craft("seastonebrick:seastonebrick_aqua", {{'seastone:seastone_aqua', 'seastone:seastone_aqua'}, {'seastone:seastone_aqua', 'seastone:seastone_aqua'}}) | register_blockbrick_craft("seastonebrick:seastonebrick_aqua", {{'seastone:seastone_aqua', 'seastone:seastone_aqua'}, {'seastone:seastone_aqua', 'seastone:seastone_aqua'}}) | ||||||
| register_blockbrick_craft("seastonebrick:seastonebrick_skyblue", {{'seastone:seastone_skyblue', 'seastone:seastone_skyblue'}, {'seastone:seastone_skyblue', 'seastone:seastone_skyblue'}}) | register_blockbrick_craft("seastonebrick:seastonebrick_skyblue", {{'seastone:seastone_skyblue', 'seastone:seastone_skyblue'}, {'seastone:seastone_skyblue', 'seastone:seastone_skyblue'}}) | ||||||
| register_blockbrick_craft("seastonebrick:seastonebrick_redviolet", {{'seastone:seastone_redviolet', 'seastone:seastone_redviolet'}, {'seastone:seastone_redviolet', 'seastone:seastone_redviolet'}}) | register_blockbrick_craft("seastonebrick:seastonebrick_redviolet", {{'seastone:seastone_redviolet', 'seastone:seastone_redviolet'}, {'seastone:seastone_redviolet', 'seastone:seastone_redviolet'}}) | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - seastonebrick] loaded.") | ||||||
|   | |||||||
| @@ -1 +1,2 @@ | |||||||
| default | default | ||||||
|  | treasurer? | ||||||
|   | |||||||
| @@ -1,5 +1,25 @@ | |||||||
| -- NODES | -- Fill chests function | ||||||
|  | local random = math.random | ||||||
|  |  | ||||||
|  | local function fill_chest(pos, min_pre, max_pre) | ||||||
|  | 	local n = minetest.get_node(pos) | ||||||
|  | 	if n and n.name and n.name == "default:chest" then | ||||||
|  | 		local meta = minetest.get_meta(pos) | ||||||
|  | 		local inv = meta:get_inventory() | ||||||
|  | 		inv:set_size("main", 32) | ||||||
|  | 		local stacks = {} | ||||||
|  | 		if minetest.get_modpath("treasurer") ~= nil then | ||||||
|  | 			stacks = treasurer.select_random_treasures(8, min_pre, max_pre, {"armes", "armures", "outils", "bonus", "carburant", "precieux"}) | ||||||
|  | 		end -- TODO else if no treasurer | ||||||
|  | 		for s=1,#stacks do | ||||||
|  | 			if not inv:contains_item("main", stacks[s]) then | ||||||
|  | 				inv:set_stack("main", random(1,32), stacks[s]) | ||||||
|  | 			end | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | -- NODES | ||||||
|  |  | ||||||
| minetest.register_node("seawrecks:woodship", { | minetest.register_node("seawrecks:woodship", { | ||||||
| 	description = "Sand for the wooden ship", | 	description = "Sand for the wooden ship", | ||||||
| @@ -13,123 +33,17 @@ minetest.register_node("seawrecks:uboot", { | |||||||
| 	description = "Dirt for the U-boot", | 	description = "Dirt for the U-boot", | ||||||
| 	tiles = {"default_dirt.png"}, | 	tiles = {"default_dirt.png"}, | ||||||
| 	is_ground_content = true, | 	is_ground_content = true, | ||||||
| 	groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, | 	groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, | ||||||
| 	sounds = default.node_sound_dirt_defaults(), | 	sounds = default.node_sound_sand_defaults(), | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.register_node("seawrecks:woodshipchest", { |  | ||||||
| 	description = "Wooden ship chest", |  | ||||||
| 	tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png", |  | ||||||
| 		"default_chest_side.png", "default_chest_side.png", "default_chest_front.png"}, |  | ||||||
| 	paramtype2 = "facedir", |  | ||||||
| 	groups = {choppy=2,oddly_breakable_by_hand=2, not_in_creative_inventory=1}, |  | ||||||
| 	drop = 'default:chest', |  | ||||||
| 	legacy_facedir_simple = true, |  | ||||||
| 	is_ground_content = false, |  | ||||||
| 	sounds = default.node_sound_wood_defaults(), |  | ||||||
| 	on_construct = function(pos) |  | ||||||
| 		local meta = minetest.get_meta(pos) |  | ||||||
| 		meta:set_string("formspec", |  | ||||||
| 			"size[8,9]".. |  | ||||||
| 			"list[current_name;main;0,0;8,4;]".. |  | ||||||
| 			"list[current_player;main;0,5;8,4;]" .. |  | ||||||
| 			"listring[current_name;main]" .. |  | ||||||
| 			"listring[current_player;main]") |  | ||||||
| 		meta:set_string("infotext", "Woodship chest") |  | ||||||
| 		local inv = meta:get_inventory() |  | ||||||
| 		inv:set_size("main", 8*4) |  | ||||||
| meta:from_table({ |  | ||||||
| 	inventory = { |  | ||||||
| 	main = {[1] = "default:tree 99", [2] = "default:jungletree 99", [3] = "default:wood 99", [4] = "default:junglewood 99", [5] = "default:sapling 99", [6] = "default:junglesapling 99", [7] = "default:grass_1 99", [8] = "default:junglegrass 99", [32] = ""} |  | ||||||
| 	}, |  | ||||||
| 	fields = { |  | ||||||
| 	formspec = "size[8,9;]list[context;main;0,0;8,4;]list[current_player;main;0,5;8,4;]" .. |  | ||||||
| 			"listring[context;main]" .. |  | ||||||
| 			"listring[current_player;main]", |  | ||||||
| 	infotext = "Normal chest" |  | ||||||
| 	} |  | ||||||
| }) |  | ||||||
| 	end, |  | ||||||
| 	can_dig = function(pos,player) |  | ||||||
| 		local meta = minetest.get_meta(pos); |  | ||||||
| 		local inv = meta:get_inventory() |  | ||||||
| 		return inv:is_empty("main") |  | ||||||
| 	end, |  | ||||||
| 	on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) |  | ||||||
| 		minetest.log("action", player:get_player_name().. |  | ||||||
| 				" moves stuff in chest at "..minetest.pos_to_string(pos)) |  | ||||||
| 	end, |  | ||||||
| 	on_metadata_inventory_put = function(pos, listname, index, stack, player) |  | ||||||
| 		minetest.log("action", player:get_player_name().. |  | ||||||
| 				" moves stuff to chest at "..minetest.pos_to_string(pos)) |  | ||||||
| 	end, |  | ||||||
| 	on_metadata_inventory_take = function(pos, listname, index, stack, player) |  | ||||||
| 		minetest.log("action", player:get_player_name().. |  | ||||||
| 				" takes stuff from chest at "..minetest.pos_to_string(pos)) |  | ||||||
| 	end, |  | ||||||
| }) |  | ||||||
|  |  | ||||||
| minetest.register_node("seawrecks:ubootchest", { |  | ||||||
| 	description = "U-boot chest", |  | ||||||
| 	tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png", |  | ||||||
| 		"default_chest_side.png", "default_chest_side.png", "default_chest_front.png"}, |  | ||||||
| 	paramtype2 = "facedir", |  | ||||||
| 	groups = {choppy=2,oddly_breakable_by_hand=2, not_in_creative_inventory=1}, |  | ||||||
| 	drop = 'default:chest', |  | ||||||
| 	legacy_facedir_simple = true, |  | ||||||
| 	is_ground_content = false, |  | ||||||
| 	sounds = default.node_sound_wood_defaults(), |  | ||||||
| 	on_construct = function(pos) |  | ||||||
| 		local meta = minetest.get_meta(pos) |  | ||||||
| 		meta:set_string("formspec", |  | ||||||
| 			"size[8,9]".. |  | ||||||
| 			"list[current_name;main;0,0;8,4;]".. |  | ||||||
| 			"list[current_player;main;0,5;8,4;]" .. |  | ||||||
| 			"listring[current_name;main]" .. |  | ||||||
| 			"listring[current_player;main]") |  | ||||||
| 		meta:set_string("infotext", "U-boot chest") |  | ||||||
| 		local inv = meta:get_inventory() |  | ||||||
| 		inv:set_size("main", 8*4) |  | ||||||
| meta:from_table({ |  | ||||||
| 	inventory = { |  | ||||||
| 	main = {[1] = "default:gold_ingot 99", [2] = "default:mese_crystal 99", [3] = "default:diamond 99", [32] = ""} |  | ||||||
| 	}, |  | ||||||
| 	fields = { |  | ||||||
| 	formspec = "size[8,9;]list[context;main;0,0;8,4;]list[current_player;main;0,5;8,4;]" .. |  | ||||||
| 			"listring[context;main]" .. |  | ||||||
| 			"listring[current_player;main]", |  | ||||||
| 	infotext = "Normal chest" |  | ||||||
| 	} |  | ||||||
| }) |  | ||||||
| 	end, |  | ||||||
| 	can_dig = function(pos,player) |  | ||||||
| 		local meta = minetest.get_meta(pos); |  | ||||||
| 		local inv = meta:get_inventory() |  | ||||||
| 		return inv:is_empty("main") |  | ||||||
| 	end, |  | ||||||
| 	on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) |  | ||||||
| 		minetest.log("action", player:get_player_name().. |  | ||||||
| 				" moves stuff in chest at "..minetest.pos_to_string(pos)) |  | ||||||
| 	end, |  | ||||||
| 	on_metadata_inventory_put = function(pos, listname, index, stack, player) |  | ||||||
| 		minetest.log("action", player:get_player_name().. |  | ||||||
| 				" moves stuff to chest at "..minetest.pos_to_string(pos)) |  | ||||||
| 	end, |  | ||||||
| 	on_metadata_inventory_take = function(pos, listname, index, stack, player) |  | ||||||
| 		minetest.log("action", player:get_player_name().. |  | ||||||
| 				" takes stuff from chest at "..minetest.pos_to_string(pos)) |  | ||||||
| 	end, |  | ||||||
| }) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| -- WRECK GENERATION | -- WRECK GENERATION | ||||||
|  |  | ||||||
|  |  | ||||||
| minetest.register_ore({ | minetest.register_ore({ | ||||||
| 	ore_type       = "scatter", | 	ore_type       = "scatter", | ||||||
| 	ore            = "seawrecks:woodship", | 	ore            = "seawrecks:woodship", | ||||||
| 	wherein        = "default:sand", | 	wherein        = "default:sand", | ||||||
| 	clust_scarcity = 30*30*30, | 	clust_scarcity = 40*40*40, | ||||||
| 	clust_num_ores = 1, | 	clust_num_ores = 1, | ||||||
| 	clust_size     = 12, | 	clust_size     = 12, | ||||||
| 	y_max     = -4, | 	y_max     = -4, | ||||||
| @@ -139,11 +53,11 @@ minetest.register_ore({ | |||||||
| minetest.register_ore({ | minetest.register_ore({ | ||||||
| 	ore_type       = "scatter", | 	ore_type       = "scatter", | ||||||
| 	ore            = "seawrecks:uboot", | 	ore            = "seawrecks:uboot", | ||||||
| 	wherein        = "default:dirt", | 	wherein        = "default:sand", | ||||||
| 	clust_scarcity = 30*30*30, | 	clust_scarcity = 50*50*50, | ||||||
| 	clust_num_ores = 1, | 	clust_num_ores = 1, | ||||||
| 	clust_size     = 12, | 	clust_size     = 12, | ||||||
| 	y_max     = -8, | 	y_max     = -10, | ||||||
| 	y_min     = -31000, | 	y_min     = -31000, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| @@ -358,7 +272,9 @@ local yp = {x = pos.x, y = pos.y + 3, z = pos.z} | |||||||
| 		pos.y = pos.y - 7 | 		pos.y = pos.y - 7 | ||||||
| 		pos.z = pos.z + 1 | 		pos.z = pos.z + 1 | ||||||
| 		pos.x = pos.x - 2 | 		pos.x = pos.x - 2 | ||||||
| 		minetest.add_node(pos, {name = "seawrecks:woodshipchest"}) |  | ||||||
|  | 		minetest.add_node(pos, {name = "default:chest"}) | ||||||
|  | 		fill_chest(pos, 1, 4) | ||||||
|  |  | ||||||
| 	else | 	else | ||||||
| 		return | 		return | ||||||
| @@ -375,7 +291,7 @@ local yp = {x = pos.x, y = pos.y + 8, z = pos.z} | |||||||
| 	if minetest.get_node(pos).name == "seawrecks:uboot" and  | 	if minetest.get_node(pos).name == "seawrecks:uboot" and  | ||||||
| 	(minetest.get_node(yp).name == "default:water_source" or | 	(minetest.get_node(yp).name == "default:water_source" or | ||||||
| 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | 	minetest.get_node(yp).name == "noairblocks:water_sourcex") then | ||||||
| 		minetest.add_node(pos, {name = "default:dirt"}) | 		minetest.add_node(pos, {name = "default:sand"}) | ||||||
|  |  | ||||||
| 		pos.y = pos.y + 1 | 		pos.y = pos.y + 1 | ||||||
| 		pos.x = pos.x - 15 | 		pos.x = pos.x - 15 | ||||||
| @@ -925,10 +841,16 @@ local yp = {x = pos.x, y = pos.y + 8, z = pos.z} | |||||||
| 		pos.y = pos.y - 7 | 		pos.y = pos.y - 7 | ||||||
| 		pos.x = pos.x +16 | 		pos.x = pos.x +16 | ||||||
| 		pos.z = pos.z +3 | 		pos.z = pos.z +3 | ||||||
| 		minetest.add_node(pos, {name = "seawrecks:ubootchest"}) |  | ||||||
|  | 		minetest.add_node(pos, {name = "default:chest"}) | ||||||
|  | 		fill_chest(pos, 1, 10) | ||||||
|  |  | ||||||
| 	else | 	else | ||||||
| 		return | 		return | ||||||
| 	end | 	end | ||||||
| end | end | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | minetest.register_alias("seawrecks:woodshipchest", "default:chest") | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - seawrecks] loaded.") | ||||||
|   | |||||||
| @@ -217,3 +217,5 @@ function stairsshine.register_stair_and_slab(subname, recipeitem, groups, images | |||||||
| 	stairsshine.register_stair(subname, recipeitem, groups, images, desc_stair, sounds) | 	stairsshine.register_stair(subname, recipeitem, groups, images, desc_stair, sounds) | ||||||
| 	stairsshine.register_slab(subname, recipeitem, groups, images, desc_slab, sounds) | 	stairsshine.register_slab(subname, recipeitem, groups, images, desc_slab, sounds) | ||||||
| end | end | ||||||
|  |  | ||||||
|  | minetest.log("action", "[sea - stairsshine] loaded.") | ||||||
|   | |||||||
| @@ -81,4 +81,4 @@ end | |||||||
|  |  | ||||||
| minetest.register_alias("clams:whiteshell","whiteshell:whiteshell") | minetest.register_alias("clams:whiteshell","whiteshell:whiteshell") | ||||||
|  |  | ||||||
| print("[Mod] Sea Loaded.") | minetest.log("action", "[sea - whiteshell] loaded.") | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user