use mesh node for plasma screen
also, add an "off" variant, accessible by punching.
| @@ -3,5 +3,14 @@ PLASMASCREEN | ||||
|  | ||||
| Mod adding a plasma screen TV for Minetest. | ||||
|  | ||||
| This mod adds a 2x3 plasma screen TV consisting of 6 nodeboxes. | ||||
| Code and textures are WTFPL. | ||||
| This mod adds a 2x3 plasma screen TV using a single large mesh node. | ||||
|  | ||||
| Point at the bottom center position where you want the TV to go, when placing. | ||||
|  | ||||
| Note:  If you're at a really steep view angle when trying to place a screen, | ||||
| the mod may occasionally refuse to place it (or it just appears for a moment). | ||||
| Just move over a bit, so that your target position is more directly in front | ||||
| of you. | ||||
|  | ||||
| Code, textures and model are WTFPL. | ||||
|  | ||||
|   | ||||
| @@ -25,168 +25,87 @@ minetest.register_node("plasmascreen:stand", { | ||||
| 	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2}, | ||||
| }) | ||||
|  | ||||
| minetest.register_node("plasmascreen:screen1", { | ||||
| 	description = "Plasma Screen 1", | ||||
| 	tiles = { | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		{ name="plasmascreen_screen1.png", | ||||
| 			animation={ | ||||
| 				type="vertical_frames", | ||||
| 				aspect_w=16, | ||||
| 				aspect_h=16, | ||||
| 				length=44 | ||||
| 			} | ||||
| 		} | ||||
| minetest.register_alias("plasmascreen:screen1", "air") | ||||
| minetest.register_alias("plasmascreen:screen2", "air") | ||||
| minetest.register_alias("plasmascreen:screen3", "air") | ||||
| minetest.register_alias("plasmascreen:screen4", "air") | ||||
| minetest.register_alias("plasmascreen:screen5", "plasmascreen:tv") | ||||
| minetest.register_alias("plasmascreen:screen6", "air") | ||||
|  | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	drop = "", | ||||
|         light_source = 10, | ||||
| 	drawtype = "nodebox", | ||||
| 	node_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = { | ||||
| 							{-0.5000, -0.5000, 0.4375, 0.5000, 0.5000, 0.5000}, | ||||
| 							{-0.5000, 0.5000, 0.3750, 0.5000, 0.3125, 0.4375}, | ||||
| 							{-0.5000, -0.5000, 0.5000, -0.3125, 0.5000, 0.3750}, | ||||
| 						} | ||||
| 	}, | ||||
| 		selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500} | ||||
| 	}, | ||||
| 	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, | ||||
| }) | ||||
| minetest.register_node("plasmascreen:screen2", { | ||||
| 	description = "Plasma Screen 2", | ||||
| 	tiles = { | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		{ name="plasmascreen_screen2.png", | ||||
| 			animation={ | ||||
| 				type="vertical_frames", | ||||
| 				aspect_w=16, | ||||
| 				aspect_h=16, | ||||
| 				length=44 | ||||
| 			} | ||||
| 		} | ||||
| local fdir_to_left = { | ||||
| 	{ -1,  0 }, | ||||
| 	{  0,  1 }, | ||||
| 	{  1,  0 }, | ||||
| 	{  0, -1 }, | ||||
| } | ||||
|  | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	drop = "", | ||||
|         light_source = 10, | ||||
| 	drawtype = "nodebox", | ||||
| 	node_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = { | ||||
| 							{-0.5000, -0.5000, 0.4375, 0.5000, 0.5000, 0.5000}, | ||||
| 							{-0.5000, 0.5000, 0.3750, 0.5000, 0.3125, 0.4375}, | ||||
| 						} | ||||
| 	}, | ||||
| 		selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500} | ||||
| 	}, | ||||
| 	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, | ||||
| }) | ||||
| minetest.register_node("plasmascreen:screen3", { | ||||
| 	description = "Plasma Screen 3", | ||||
| 	tiles = { | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		{ name="plasmascreen_screen3.png", | ||||
| 			animation={ | ||||
| 				type="vertical_frames", | ||||
| 				aspect_w=16, | ||||
| 				aspect_h=16, | ||||
| 				length=44 | ||||
| 			} | ||||
| 		} | ||||
| local fdir_to_right = { | ||||
| 	{  1,  0 }, | ||||
| 	{  0, -1 }, | ||||
| 	{ -1,  0 }, | ||||
| 	{  0,  1 }, | ||||
| } | ||||
|  | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	drop = "", | ||||
|         light_source = 10, | ||||
| 	drawtype = "nodebox", | ||||
| 	node_box = { | ||||
| local tv_cbox = { | ||||
| 	type = "fixed", | ||||
| 				fixed = { | ||||
| 							{-0.5000, -0.5000, 0.4375, 0.5000, 0.5000, 0.5000}, | ||||
| 							{-0.5000, 0.5000, 0.3750, 0.5000, 0.3125, 0.4375}, | ||||
| 							{0.3125, -0.5000, 0.5000, 0.5000, 0.5000, 0.3750}, | ||||
| 						} | ||||
| 	}, | ||||
| 		selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500} | ||||
| 	}, | ||||
| 	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, | ||||
| }) | ||||
| minetest.register_node("plasmascreen:screen4", { | ||||
| 	description = "Plasma Screen 4", | ||||
| 	tiles = { | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		{ name="plasmascreen_screen4.png", | ||||
| 			animation={ | ||||
| 				type="vertical_frames", | ||||
| 				aspect_w=16, | ||||
| 				aspect_h=16, | ||||
| 				length=44 | ||||
| 			} | ||||
| 		} | ||||
| 	fixed = {-1.5050, -0.3125, 0.3700, 1.5050, 1.5050, 0.5050} | ||||
| } | ||||
|  | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	drop = "", | ||||
|         light_source = 10, | ||||
| 	drawtype = "nodebox", | ||||
| 	node_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = { | ||||
| 							{-0.5000, -0.3125, 0.4375, 0.5000, 0.5000, 0.5000}, | ||||
| 							{-0.5000, -0.3125, 0.3750, 0.5000, -0.1250, 0.4375}, | ||||
| 							{-0.5000, -0.3125, 0.5000, -0.3125, 0.5000, 0.3750}, | ||||
| 						} | ||||
| 	}, | ||||
| 		selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500} | ||||
| 	}, | ||||
| 	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, | ||||
| }) | ||||
| local function checkwall(pos) | ||||
|  | ||||
| minetest.register_node("plasmascreen:screen5", { | ||||
| 	local fdir = minetest.get_node(pos).param2 | ||||
|  | ||||
| 	local dxl = fdir_to_left[fdir + 1][1]	-- dxl = "[D]elta [X] [L]eft" | ||||
| 	local dzl = fdir_to_left[fdir + 1][2]	-- Z left | ||||
|  | ||||
| 	local dxr = fdir_to_right[fdir + 1][1]	-- X right | ||||
| 	local dzr = fdir_to_right[fdir + 1][2]	-- Z right | ||||
|  | ||||
| 	local node1 = minetest.get_node({x=pos.x+dxl, y=pos.y, z=pos.z+dzl}) | ||||
| 	if not node1 or not minetest.registered_nodes[node1.name] | ||||
| 	  or not minetest.registered_nodes[node1.name].buildable_to then | ||||
| 		return false | ||||
| 	end | ||||
|  | ||||
| 	local node2 = minetest.get_node({x=pos.x+dxr, y=pos.y, z=pos.z+dzr}) | ||||
| 	if not node2 or not minetest.registered_nodes[node2.name] | ||||
| 	  or not minetest.registered_nodes[node2.name].buildable_to then | ||||
| 		return false | ||||
| 	end | ||||
|  | ||||
| 	local node3 = minetest.get_node({x=pos.x+dxl, y=pos.y+1, z=pos.z+dzl}) | ||||
| 	if not node3 or not minetest.registered_nodes[node3.name] | ||||
| 	  or not minetest.registered_nodes[node3.name].buildable_to then | ||||
| 		return false | ||||
| 	end | ||||
|  | ||||
| 	local node4 = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}) | ||||
| 	if not node4 or not minetest.registered_nodes[node4.name] | ||||
| 	  or not minetest.registered_nodes[node4.name].buildable_to then | ||||
| 		return false | ||||
| 	end | ||||
|  | ||||
| 	local node5 = minetest.get_node({x=pos.x+dxr, y=pos.y+1, z=pos.z+dzr}) | ||||
| 	if not node5 or not minetest.registered_nodes[node5.name]  | ||||
| 	  or not minetest.registered_nodes[node5.name].buildable_to then | ||||
| 		return false | ||||
| 	end | ||||
|  | ||||
| 	return true | ||||
| end | ||||
|  | ||||
| minetest.register_node("plasmascreen:tv", { | ||||
| 	description = "Plasma TV", | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "plasmascreen_tv.obj", | ||||
| 	tiles = { | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		{ name="plasmascreen_screen5.png", | ||||
| 		"plasmascreen_case.png", | ||||
| 		{ name="plasmascreen_video.png", | ||||
| 			animation={ | ||||
| 				type="vertical_frames", | ||||
| 				aspect_w=16, | ||||
| 				aspect_h=16, | ||||
| 				length=44 | ||||
| 				aspect_w = 42, | ||||
| 				aspect_h = 23, | ||||
| 				length = 44 | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| @@ -196,259 +115,52 @@ minetest.register_node("plasmascreen:screen5", { | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	light_source = 10, | ||||
| 	drawtype = "nodebox", | ||||
| 	node_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = { | ||||
| 							{-0.5000, -0.3125, 0.4375, 0.5000, 0.5000, 0.5000}, | ||||
| 							{-0.5000, -0.3125, 0.3750, 0.5000, -0.1250, 0.4375}, | ||||
| 						} | ||||
| 	}, | ||||
| 		selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = {-1.5050, -0.3125, 0.3700, 1.5050, 1.5050, 0.5050} | ||||
| 	}, | ||||
| 	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2}, | ||||
|  | ||||
| after_place_node = function(pos,placer,itemstack) | ||||
| 	local param2 = minetest.get_node(pos).param2 | ||||
| 	local p = {x=pos.x, y=pos.y, z=pos.z} | ||||
| 		if param2 == 0 then | ||||
| 			pos.x = pos.x-1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen4", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.x = pos.x+2 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen6", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.y = pos.y+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen3", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.x = pos.x-1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen2", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.x = pos.x-1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen1", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 		elseif param2 == 1 then | ||||
| 			pos.z = pos.z+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
|         minetest.set_node(pos,{name="plasmascreen:screen4", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.z = pos.z-2 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen6", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.y = pos.y+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen3", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.z = pos.z+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen2", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.z = pos.z+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen1", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 		elseif param2 == 2 then | ||||
| 			pos.x = pos.x+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
|         minetest.set_node(pos,{name="plasmascreen:screen4", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.x = pos.x-2 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen6", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.y = pos.y+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen3", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.x = pos.x+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen2", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.x = pos.x+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen1", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 		elseif param2 == 3 then | ||||
| 			pos.z = pos.z-1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
|         minetest.set_node(pos,{name="plasmascreen:screen4", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.z = pos.z+2 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen6", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.y = pos.y+1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen3", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.z = pos.z-1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen2", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 			pos.z = pos.z-1 | ||||
| 		if minetest.registered_nodes[minetest.get_node(pos).name].buildable_to  then | ||||
| 		minetest.set_node(pos,{name="plasmascreen:screen1", param2=minetest.dir_to_facedir(placer:get_look_dir())}) | ||||
| 		else | ||||
| 			minetest.remove_node(p) | ||||
| 			return true | ||||
| 		end | ||||
| 	selection_box = tv_cbox, | ||||
| 	collision_box = tv_cbox, | ||||
| 	groups = {snappy=1, choppy=2, oddly_breakable_by_hand=2}, | ||||
| 	after_place_node = function(pos, placer, itemstack) | ||||
| 		if not checkwall(pos) then | ||||
| 			minetest.set_node(pos, {name = "air"}) | ||||
| 			return true	-- "API: If return true no item is taken from itemstack" | ||||
| 		end | ||||
| 	end, | ||||
|  | ||||
| 	after_dig_node = function(pos, oldnode, oldmetadata, digger) | ||||
| 		if oldnode.param2 == 0 then | ||||
| 			pos.x = pos.x-1 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.x = pos.x+2 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.y = pos.y+1 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.x = pos.x-1 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.x = pos.x-1 | ||||
| 		minetest.remove_node(pos) | ||||
| 		elseif oldnode.param2 == 1 then | ||||
| 			pos.z = pos.z+1 | ||||
|         minetest.remove_node(pos) | ||||
| 			pos.z = pos.z-2 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.y = pos.y+1 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.z = pos.z+1 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.z = pos.z+1 | ||||
| 		minetest.remove_node(pos) | ||||
| 		elseif oldnode.param2 == 2 then | ||||
| 			pos.x = pos.x+1 | ||||
|         minetest.remove_node(pos) | ||||
| 			pos.x = pos.x-2 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.y = pos.y+1 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.x = pos.x+1 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.x = pos.x+1 | ||||
| 		minetest.remove_node(pos) | ||||
| 		elseif oldnode.param2 == 3 then | ||||
| 			pos.z = pos.z-1 | ||||
|         minetest.remove_node(pos) | ||||
| 			pos.z = pos.z+2 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.y = pos.y+1 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.z = pos.z-1 | ||||
| 		minetest.remove_node(pos) | ||||
| 			pos.z = pos.z-1 | ||||
| 		minetest.remove_node(pos) | ||||
| 		end | ||||
| 	on_punch = function(pos, node, puncher, pointed_thing) | ||||
| 		minetest.set_node(pos, {name = "plasmascreen:tv_off", param2 = node.fdir}) | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| minetest.register_node("plasmascreen:screen6", { | ||||
| 	description = "Plasma Screen 6", | ||||
| minetest.register_node("plasmascreen:tv_off", { | ||||
| 	description = "Plasma TV (off)", | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "plasmascreen_tv.obj", | ||||
| 	tiles = { | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_screen.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		"plasmascreen_back.png", | ||||
| 		{ name="plasmascreen_screen6.png", | ||||
| 			animation={ | ||||
| 				type="vertical_frames", | ||||
| 				aspect_w=16, | ||||
| 				aspect_h=16, | ||||
| 				length=44 | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		"plasmascreen_case_off.png", | ||||
| 		"plasmascreen_screen_off.png", | ||||
| 	}, | ||||
| 	inventory_image = "plasmascreen_tv_inv.png", | ||||
| 	wield_image = "plasmascreen_tv_inv.png", | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	drop = "", | ||||
| 	light_source = 10, | ||||
| 	drawtype = "nodebox", | ||||
| 	node_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = { | ||||
| 							{-0.5000, -0.3125, 0.4375, 0.5000, 0.5000, 0.5000}, | ||||
| 							{-0.5000, -0.3125, 0.3750, 0.5000, -0.1250, 0.4375}, | ||||
| 							{0.3125, -0.3125, 0.5000, 0.5000, 0.5000, 0.3750}, | ||||
| 						} | ||||
| 	}, | ||||
| 		selection_box = { | ||||
| 				type = "fixed", | ||||
| 				fixed = {-0.2500, -0.2500, 0.4500, 0.2500, 0.2500, 0.4500} | ||||
| 	}, | ||||
| 	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, | ||||
| 	selection_box = tv_cbox, | ||||
| 	collision_box = tv_cbox, | ||||
| 	groups = {snappy=1, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1}, | ||||
| 	after_place_node = function(pos, placer, itemstack) | ||||
| 		if not checkwall(pos) then | ||||
| 			minetest.set_node(pos, {name = "air"}) | ||||
| 			return true	-- "API: If return true no item is taken from itemstack" | ||||
| 		end | ||||
| 	end, | ||||
| 	on_punch = function(pos, node, puncher, pointed_thing) | ||||
| 		minetest.set_node(pos, {name = "plasmascreen:tv", param2 = node.fdir}) | ||||
| 	end, | ||||
| 	drop = "plasmascreen:tv" | ||||
| }) | ||||
|  | ||||
| -- crafting recipes | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "plasmascreen:screen5", | ||||
| 	output = "plasmascreen:tv", | ||||
| 	recipe = { | ||||
| 		{'default:glass', 'default:coal_lump', 'default:glass'}, | ||||
| 		{'default:steel_ingot', 'default:copper_ingot', 'default:steel_ingot'}, | ||||
| @@ -458,7 +170,7 @@ minetest.register_craft({ | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "shapeless", | ||||
| 	output = "plasmascreen:screen5", | ||||
| 	output = "plasmascreen:tv", | ||||
| 	recipe = {'homedecor:television', 'homedecor:television'}, | ||||
| }) | ||||
|  | ||||
|   | ||||
							
								
								
									
										135
									
								
								plasmascreen/models/plasmascreen_tv.obj
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,135 @@ | ||||
| # Blender v2.73 (sub 0) OBJ File: 'plasmascreen.blend' | ||||
| # www.blender.org | ||||
| o Cylinder | ||||
| v -1.500000 -0.312500 0.500000 | ||||
| v -1.500000 -0.312500 0.375000 | ||||
| v 1.500000 -0.312500 0.375000 | ||||
| v 1.500000 -0.312500 0.500000 | ||||
| v -1.500000 1.500000 0.500000 | ||||
| v -1.500000 1.500000 0.375000 | ||||
| v 1.500000 1.500000 0.375000 | ||||
| v 1.500000 1.500000 0.500000 | ||||
| v -1.312500 -0.125000 0.437500 | ||||
| v 1.375000 1.375000 0.375000 | ||||
| v -1.312500 1.312500 0.437500 | ||||
| v 1.375000 -0.187500 0.375000 | ||||
| v -1.375000 1.375000 0.375000 | ||||
| v 1.312500 -0.125000 0.437500 | ||||
| v -1.375000 -0.187500 0.375000 | ||||
| v 1.312500 1.312500 0.437500 | ||||
| v 1.500000 1.375000 0.375000 | ||||
| v 1.500000 -0.187500 0.375000 | ||||
| v -1.500000 1.375000 0.375000 | ||||
| v -1.500000 -0.187500 0.375000 | ||||
| v -1.312500 -0.187500 0.375000 | ||||
| v -1.312500 1.375000 0.375000 | ||||
| v 1.312500 -0.187500 0.375000 | ||||
| v 1.312500 1.375000 0.375000 | ||||
| v -1.375000 -0.125000 0.375000 | ||||
| v -1.375000 1.312500 0.375000 | ||||
| v 1.375000 -0.125000 0.375000 | ||||
| v 1.375000 1.312500 0.375000 | ||||
| v -1.312811 -0.125310 0.437500 | ||||
| v -1.312811 1.312810 0.437500 | ||||
| v 1.312811 -0.125310 0.437500 | ||||
| v 1.312811 1.312810 0.437500 | ||||
| vt 0.953125 0.984375 | ||||
| vt 0.921875 0.984375 | ||||
| vt 0.921875 0.531250 | ||||
| vt 0.953125 0.531250 | ||||
| vt 0.906250 0.984375 | ||||
| vt 0.875000 0.984375 | ||||
| vt 0.875000 0.531250 | ||||
| vt 0.906250 0.531250 | ||||
| vt 0.812500 0.984375 | ||||
| vt 0.781250 0.984375 | ||||
| vt 0.781250 0.593750 | ||||
| vt 0.812500 0.593750 | ||||
| vt 0.015625 0.953125 | ||||
| vt 0.765625 0.953125 | ||||
| vt 0.765625 0.984375 | ||||
| vt 0.015625 0.984375 | ||||
| vt 0.015625 0.812500 | ||||
| vt 0.765625 0.812500 | ||||
| vt 0.765625 0.843750 | ||||
| vt 0.015625 0.843750 | ||||
| vt 0.765625 0.796875 | ||||
| vt 0.015625 0.796875 | ||||
| vt 0.015625 0.343750 | ||||
| vt 0.765625 0.343750 | ||||
| vt 0.828125 0.593750 | ||||
| vt 0.859375 0.593750 | ||||
| vt 0.859375 0.984375 | ||||
| vt 0.828125 0.984375 | ||||
| vt 0.015625 0.890625 | ||||
| vt 0.015625 0.859375 | ||||
| vt 0.765625 0.859375 | ||||
| vt 0.765625 0.890625 | ||||
| vt 0.015625 0.937500 | ||||
| vt 0.015625 0.906250 | ||||
| vt 0.765625 0.906250 | ||||
| vt 0.765625 0.937500 | ||||
| vt 0.031250 0.296875 | ||||
| vt 0.031250 0.281250 | ||||
| vt 0.687500 0.281250 | ||||
| vt 0.687500 0.296875 | ||||
| vt 0.687500 0.312500 | ||||
| vt 0.687500 0.328125 | ||||
| vt 0.031250 0.328125 | ||||
| vt 0.031250 0.312500 | ||||
| vt 0.375000 0.250000 | ||||
| vt 0.375000 0.265625 | ||||
| vt 0.015625 0.265625 | ||||
| vt 0.015625 0.250000 | ||||
| vt 0.703125 0.296875 | ||||
| vt 0.703125 0.281250 | ||||
| vt 0.015625 0.234375 | ||||
| vt 0.015625 0.218750 | ||||
| vt 0.375000 0.218750 | ||||
| vt 0.375000 0.234375 | ||||
| vt 0.703125 0.328125 | ||||
| vt 0.703125 0.312500 | ||||
| vt 0.015625 0.328125 | ||||
| vt 0.015625 0.312500 | ||||
| vt 0.015625 0.281250 | ||||
| vt 0.015625 0.296875 | ||||
| vt 1.000000 1.000000 | ||||
| vt -0.000000 1.000000 | ||||
| vt -0.000000 -0.000000 | ||||
| vt 1.000000 -0.000000 | ||||
| vn -1.000000 0.000000 0.000000 | ||||
| vn 1.000000 0.000000 0.000000 | ||||
| vn 0.000000 0.000000 -1.000000 | ||||
| vn 0.000000 1.000000 0.000000 | ||||
| vn 0.000000 -1.000000 0.000000 | ||||
| vn 0.000000 0.000000 1.000000 | ||||
| vn 0.000000 0.707100 -0.707100 | ||||
| vn 0.000000 -0.707100 -0.707100 | ||||
| vn -0.707100 0.000000 -0.707100 | ||||
| vn 0.707100 0.000000 -0.707100 | ||||
| vn 0.000000 -0.707100 0.707100 | ||||
| g Cylinder_Cylinder_case | ||||
| s off | ||||
| f 5/1/1 6/2/1 2/3/1 1/4/1 | ||||
| f 7/5/2 8/6/2 4/7/2 3/8/2 | ||||
| f 10/9/3 17/10/3 18/11/3 12/12/3 | ||||
| f 5/13/4 8/14/4 7/15/4 6/16/4 | ||||
| f 2/17/5 3/18/5 4/19/5 1/20/5 | ||||
| f 8/21/6 5/22/6 1/23/6 4/24/6 | ||||
| f 15/25/3 20/26/3 19/27/3 13/28/3 | ||||
| f 18/29/3 3/30/3 2/31/3 20/32/3 | ||||
| f 7/33/3 17/34/3 19/35/3 6/36/3 | ||||
| f 14/37/7 23/38/7 21/39/7 9/40/7 | ||||
| f 11/41/8 22/42/8 24/43/8 16/44/8 | ||||
| f 16/45/9 28/46/9 27/47/9 14/48/9 | ||||
| f 25/49/10 9/40/10 15/50/10 | ||||
| f 15/50/7 9/40/7 21/39/7 | ||||
| f 9/51/10 25/52/10 26/53/10 11/54/10 | ||||
| f 13/55/10 11/41/10 26/56/10 | ||||
| f 22/42/8 11/41/8 13/55/8 | ||||
| f 10/57/8 16/44/8 24/43/8 | ||||
| f 28/58/9 16/44/9 10/57/9 | ||||
| f 12/59/9 14/37/9 27/60/9 | ||||
| f 23/38/11 12/59/11 14/37/11 | ||||
| g Cylinder_Cylinder_screen | ||||
| f 30/61/3 32/62/3 31/63/3 29/64/3 | ||||
| Before Width: | Height: | Size: 22 KiB | 
| Before Width: | Height: | Size: 81 B | 
							
								
								
									
										
											BIN
										
									
								
								plasmascreen/textures/plasmascreen_case.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								plasmascreen/textures/plasmascreen_case_off.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.1 KiB | 
| Before Width: | Height: | Size: 82 B | 
| Before Width: | Height: | Size: 3.8 KiB | 
| Before Width: | Height: | Size: 4.7 KiB | 
| Before Width: | Height: | Size: 4.1 KiB | 
| Before Width: | Height: | Size: 3.3 KiB | 
| Before Width: | Height: | Size: 3.9 KiB | 
| Before Width: | Height: | Size: 3.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								plasmascreen/textures/plasmascreen_screen_off.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 613 B | 
							
								
								
									
										
											BIN
										
									
								
								plasmascreen/textures/plasmascreen_video.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 21 KiB |