forked from luanti-org/minetest_game
		
	Merge 'torches' mod as default:torch.
This merges the current state of the well-maintained and tested `torches` mod as I've maintained it for the last 6 months. This started out as a thorough cleanup of 3D torches by blockmen, where some of the initial code still remains. The models were redone entirely from scratch and have been extensively tested with dozens of animated textures converted with mcimport, and look a lot better than the original 3D Torches mod. The ceiling torch is retained and functional. The `wieldlight` addition that the torches mod has was removed, since it relies on wieldview to look decent. This can stay external mod code. I've opted to move the torch nodes to a separate file. It's not a lot of code but nodes.lua is already huge, and I wanted to retain the copyright header and some of the readme.txt notes, and this was the easiest way of doing it. This code passes "default:torch" to nodes with on_rightclick, fixing problems with itemframes. Essentially it has a more elaborate item_place() routine to make sure we're not passing the wall torch to nodes that may display it. The ceiling torch is a separate model and not the same as the floor model. That does mean that there are 3 models in this mod.
This commit is contained in:
		| @@ -41,6 +41,7 @@ dofile(default_path.."/functions.lua") | ||||
| dofile(default_path.."/trees.lua") | ||||
| dofile(default_path.."/nodes.lua") | ||||
| dofile(default_path.."/furnace.lua") | ||||
| dofile(default_path.."/torch.lua") | ||||
| dofile(default_path.."/tools.lua") | ||||
| dofile(default_path.."/item_entity.lua") | ||||
| dofile(default_path.."/craftitems.lua") | ||||
|   | ||||
							
								
								
									
										58
									
								
								mods/default/models/torch_ceiling.obj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								mods/default/models/torch_ceiling.obj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| # Blender v2.77 (sub 0) OBJ File: 'torch_ceiling.blend' | ||||
| # www.blender.org | ||||
| mtllib torch_ceiling.mtl | ||||
| o Cube_Cube.001 | ||||
| v -0.062469 -0.047331 0.068152 | ||||
| v -0.062469 -0.559515 -0.164388 | ||||
| v -0.062469 0.004344 -0.045667 | ||||
| v -0.062469 -0.507839 -0.278206 | ||||
| v 0.062531 -0.047331 0.068152 | ||||
| v 0.062531 -0.559515 -0.164388 | ||||
| v 0.062531 0.004344 -0.045667 | ||||
| v 0.062531 -0.507839 -0.278206 | ||||
| v 0.353584 0.040000 0.363553 | ||||
| v 0.353584 -0.397500 0.363553 | ||||
| v -0.353522 0.040000 -0.343553 | ||||
| v -0.353522 -0.397500 -0.343553 | ||||
| v 0.353584 0.040000 -0.343553 | ||||
| v -0.353522 0.040000 0.363553 | ||||
| v 0.353584 -0.397500 -0.343553 | ||||
| v -0.353522 -0.397500 0.363553 | ||||
| vt 0.5625 0.5000 | ||||
| vt 0.5625 0.6250 | ||||
| vt 0.4375 0.6250 | ||||
| vt 0.4375 0.5000 | ||||
| vt 0.4375 0.0000 | ||||
| vt 0.5625 0.0000 | ||||
| vt 0.5625 0.1250 | ||||
| vt 0.4375 0.1250 | ||||
| vt 0.5625 0.6250 | ||||
| vt 0.4375 0.6250 | ||||
| vt 0.4375 0.6250 | ||||
| vt 0.4375 0.0000 | ||||
| vt 0.5625 0.6250 | ||||
| vt 0.5625 0.0000 | ||||
| vt 1.0000 0.5625 | ||||
| vt 1.0000 1.0000 | ||||
| vt 0.0000 1.0000 | ||||
| vt 0.0000 0.5625 | ||||
| vt 0.0000 0.5625 | ||||
| vt 1.0000 0.5625 | ||||
| vt 1.0000 1.0000 | ||||
| vt 0.0000 1.0000 | ||||
| vn 0.0000 0.9105 0.4134 | ||||
| vn -0.0000 -0.4134 0.9105 | ||||
| vn -1.0000 0.0000 0.0000 | ||||
| vn 0.7071 0.0000 -0.7071 | ||||
| vn 0.7071 0.0000 0.7071 | ||||
| usemtl Material.001 | ||||
| s off | ||||
| f 3/1/1 1/2/1 5/3/1 7/4/1 | ||||
| f 8/5/1 4/6/1 2/7/1 6/8/1 | ||||
| f 3/9/2 4/6/2 8/5/2 7/10/2 | ||||
| f 1/11/3 3/9/3 4/6/3 2/12/3 | ||||
| f 5/13/2 1/11/2 2/12/2 6/14/2 | ||||
| f 7/10/3 8/5/3 6/14/3 5/13/3 | ||||
| usemtl Material.002 | ||||
| f 9/15/4 10/16/4 12/17/4 11/18/4 | ||||
| f 13/19/5 14/20/5 16/21/5 15/22/5 | ||||
							
								
								
									
										50
									
								
								mods/default/models/torch_floor.obj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								mods/default/models/torch_floor.obj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| # Blender v2.76 (sub 11) OBJ File: 'torch_floor.blend' | ||||
| # www.blender.org | ||||
| mtllib torch_floor.mtl | ||||
| o Cube_Cube.001 | ||||
| v 0.062500 0.062500 -0.062500 | ||||
| v 0.062500 -0.500000 -0.062500 | ||||
| v 0.062500 0.062500 0.062500 | ||||
| v 0.062500 -0.500000 0.062500 | ||||
| v -0.062500 0.062500 -0.062500 | ||||
| v -0.062500 -0.500000 -0.062500 | ||||
| v -0.062500 0.062500 0.062500 | ||||
| v -0.062500 -0.500000 0.062500 | ||||
| v -0.353553 -0.500000 0.353553 | ||||
| v -0.353553 0.500000 0.353553 | ||||
| v 0.353553 -0.500000 -0.353553 | ||||
| v 0.353553 0.500000 -0.353553 | ||||
| v -0.353553 -0.500000 -0.353553 | ||||
| v 0.353553 -0.500000 0.353553 | ||||
| v -0.353553 0.500000 -0.353553 | ||||
| v 0.353553 0.500000 0.353553 | ||||
| vt 0.562500 0.500000 | ||||
| vt 0.562500 0.625000 | ||||
| vt 0.437500 0.625000 | ||||
| vt 0.437500 0.500000 | ||||
| vt 0.437500 0.000000 | ||||
| vt 0.562500 0.000000 | ||||
| vt 0.562500 0.125000 | ||||
| vt 0.437500 0.125000 | ||||
| vt 1.000000 0.000000 | ||||
| vt 1.000000 1.000000 | ||||
| vt 0.000000 1.000000 | ||||
| vt 0.000000 0.000000 | ||||
| vn 0.000000 1.000000 0.000000 | ||||
| vn 0.000000 0.000000 -1.000000 | ||||
| vn 1.000000 0.000000 0.000000 | ||||
| vn -0.707100 0.000000 -0.707100 | ||||
| vn -0.707100 -0.000000 0.707100 | ||||
| g Cube_Cube.001_Cube_Cube.001_Material.001 | ||||
| usemtl Material.001 | ||||
| s off | ||||
| f 3/1/1 1/2/1 5/3/1 7/4/1 | ||||
| f 8/5/1 4/6/1 2/7/1 6/8/1 | ||||
| f 3/2/2 4/6/2 8/5/2 7/3/2 | ||||
| f 1/3/3 3/2/3 4/6/3 2/5/3 | ||||
| f 5/2/2 1/3/2 2/5/2 6/6/2 | ||||
| f 7/3/3 8/5/3 6/6/3 5/2/3 | ||||
| g Cube_Cube.001_Cube_Cube.001_Material.002 | ||||
| usemtl Material.002 | ||||
| f 9/9/4 10/10/4 12/11/4 11/12/4 | ||||
| f 13/12/5 14/9/5 16/10/5 15/11/5 | ||||
							
								
								
									
										64
									
								
								mods/default/models/torch_wall.obj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								mods/default/models/torch_wall.obj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| # Blender v2.76 (sub 11) OBJ File: 'torch_wall.blend' | ||||
| # www.blender.org | ||||
| mtllib torch_wall.mtl | ||||
| o Cube_Cube.001 | ||||
| v 0.062469 -0.195248 0.023570 | ||||
| v 0.062469 -0.476498 -0.463570 | ||||
| v 0.062469 -0.303502 0.086070 | ||||
| v 0.062469 -0.584752 -0.401070 | ||||
| v -0.062531 -0.195248 0.023570 | ||||
| v -0.062531 -0.476498 -0.463570 | ||||
| v -0.062531 -0.303502 0.086070 | ||||
| v -0.062531 -0.584752 -0.401070 | ||||
| v -0.353584 -0.613553 0.022500 | ||||
| v -0.353584 -0.613553 0.460000 | ||||
| v 0.353522 0.093553 0.022500 | ||||
| v 0.353522 0.093553 0.460000 | ||||
| v -0.353584 0.093553 0.022500 | ||||
| v 0.353522 -0.613553 0.022500 | ||||
| v -0.353584 0.093553 0.460000 | ||||
| v 0.353522 -0.613553 0.460000 | ||||
| v 0.353553 0.056811 -0.121957 | ||||
| v 0.353553 -0.224439 -0.609096 | ||||
| v -0.353553 -0.555561 0.231596 | ||||
| v -0.353553 -0.836811 -0.255543 | ||||
| v -0.353553 0.056811 -0.121957 | ||||
| v -0.353553 -0.224439 -0.609096 | ||||
| v 0.353553 -0.555561 0.231596 | ||||
| v 0.353553 -0.836811 -0.255543 | ||||
| vt 0.562500 0.500000 | ||||
| vt 0.562500 0.625000 | ||||
| vt 0.437500 0.625000 | ||||
| vt 0.437500 0.500000 | ||||
| vt 0.437500 0.000000 | ||||
| vt 0.562500 0.000000 | ||||
| vt 0.562500 0.125000 | ||||
| vt 0.437500 0.125000 | ||||
| vt 0.000000 0.562500 | ||||
| vt 0.000000 -0.000000 | ||||
| vt 1.000000 0.000000 | ||||
| vt 1.000000 0.562500 | ||||
| vt 1.000000 1.000000 | ||||
| vt 0.000000 1.000000 | ||||
| vn -0.000000 0.500000 0.866000 | ||||
| vn -0.000000 0.866000 -0.500000 | ||||
| vn 1.000000 0.000000 0.000000 | ||||
| vn -0.707100 0.612400 -0.353600 | ||||
| vn -0.707100 -0.612400 0.353600 | ||||
| vn -0.707100 0.707100 -0.000000 | ||||
| vn -0.707100 -0.707100 -0.000000 | ||||
| g Cube_Cube.001_Cube_Cube.001_Material.001 | ||||
| usemtl Material.001 | ||||
| s off | ||||
| f 3/1/1 1/2/1 5/3/1 7/4/1 | ||||
| f 8/5/1 4/6/1 2/7/1 6/8/1 | ||||
| f 3/2/2 4/6/2 8/5/2 7/3/2 | ||||
| f 1/3/3 3/2/3 4/6/3 2/5/3 | ||||
| f 5/2/2 1/3/2 2/5/2 6/6/2 | ||||
| f 7/3/3 8/5/3 6/6/3 5/2/3 | ||||
| f 17/9/4 18/10/4 20/11/4 19/12/4 | ||||
| f 21/9/5 22/10/5 24/11/5 23/12/5 | ||||
| g Cube_Cube.001_Cube_Cube.001_Material.002 | ||||
| usemtl Material.002 | ||||
| f 9/12/6 10/13/6 12/14/6 11/9/6 | ||||
| f 13/9/7 14/12/7 16/13/7 15/14/7 | ||||
| @@ -159,8 +159,6 @@ default:lava_flowing | ||||
| Tools / "Advanced" crafting / Non-"natural" | ||||
| ------------------------------------------- | ||||
|  | ||||
| default:torch | ||||
|  | ||||
| default:chest | ||||
| default:chest_locked | ||||
|  | ||||
| @@ -1592,58 +1590,6 @@ minetest.register_node("default:lava_flowing", { | ||||
| -- Tools / "Advanced" crafting / Non-"natural" | ||||
| -- | ||||
|  | ||||
| minetest.register_node("default:torch", { | ||||
| 	description = "Torch", | ||||
| 	drawtype = "torchlike", | ||||
| 	tiles = { | ||||
| 		{ | ||||
| 			name = "default_torch_on_floor_animated.png", | ||||
| 			animation = { | ||||
| 				type = "vertical_frames", | ||||
| 				aspect_w = 16, | ||||
| 				aspect_h = 16, | ||||
| 				length = 3.0 | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name="default_torch_on_ceiling_animated.png", | ||||
| 			animation = { | ||||
| 				type = "vertical_frames", | ||||
| 				aspect_w = 16, | ||||
| 				aspect_h = 16, | ||||
| 				length = 3.0 | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name="default_torch_animated.png", | ||||
| 			animation = { | ||||
| 				type = "vertical_frames", | ||||
| 				aspect_w = 16, | ||||
| 				aspect_h = 16, | ||||
| 				length = 3.0 | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| 	inventory_image = "default_torch_on_floor.png", | ||||
| 	wield_image = "default_torch_on_floor.png", | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| 	sunlight_propagates = true, | ||||
| 	is_ground_content = false, | ||||
| 	walkable = false, | ||||
| 	light_source = default.LIGHT_MAX - 1, | ||||
| 	selection_box = { | ||||
| 		type = "wallmounted", | ||||
| 		wall_top = {-0.1, 0.5 - 0.6, -0.1, 0.1, 0.5, 0.1}, | ||||
| 		wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5 + 0.6, 0.1}, | ||||
| 		wall_side = {-0.5, -0.3, -0.1, -0.5 + 0.3, 0.3, 0.1}, | ||||
| 	}, | ||||
| 	groups = {choppy = 2, dig_immediate = 3, flammable = 1, attached_node = 1}, | ||||
| 	legacy_wallmounted = true, | ||||
| 	sounds = default.node_sound_defaults(), | ||||
| }) | ||||
|  | ||||
|  | ||||
| local chest_formspec = | ||||
| 	"size[8,9]" .. | ||||
| 	default.gui_bg .. | ||||
|   | ||||
							
								
								
									
										147
									
								
								mods/default/torch.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								mods/default/torch.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,147 @@ | ||||
|  | ||||
| --[[ | ||||
|  | ||||
| Torch mod - formerly mod "Torches" | ||||
| ====================== | ||||
|  | ||||
| (c) Copyright BlockMen (2013-2015) | ||||
| (C) Copyright sofar <sofar@foo-projects.org> (2016) | ||||
|  | ||||
| This mod changes the default torch drawtype from "torchlike" to "mesh", | ||||
| giving the torch a three dimensional appearance. The mesh contains the | ||||
| proper pixel mapping to make the animation appear as a particle above | ||||
| the torch, while in fact the animation is just the texture of the mesh. | ||||
|  | ||||
|  | ||||
| License: | ||||
| ~~~~~~~~ | ||||
| (c) Copyright BlockMen (2013-2015) | ||||
|  | ||||
| Textures and Meshes/Models: | ||||
| CC-BY 3.0 BlockMen | ||||
| Note that the models were entirely done from scratch by sofar. | ||||
|  | ||||
| Code: | ||||
| Licensed under the GNU LGPL version 2.1 or higher. | ||||
| You can redistribute it and/or modify it under | ||||
| the terms of the GNU Lesser General Public License | ||||
| as published by the Free Software Foundation; | ||||
|  | ||||
| You should have received a copy of the GNU Lesser General Public | ||||
| License along with this library; if not, write to the Free Software | ||||
| Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  | ||||
| See LICENSE.txt and http://www.gnu.org/licenses/lgpl-2.1.txt | ||||
|  | ||||
| --]] | ||||
|  | ||||
| minetest.register_node("default:torch", { | ||||
| 	description = "Torch", | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "torch_floor.obj", | ||||
| 	inventory_image = "default_torch_on_floor.png", | ||||
| 	wield_image = "default_torch_on_floor.png", | ||||
| 	tiles = {{ | ||||
| 		    name = "default_torch_on_floor_animated.png", | ||||
| 		    animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} | ||||
| 	}}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| 	sunlight_propagates = true, | ||||
| 	walkable = false, | ||||
| 	liquids_pointable = false, | ||||
| 	light_source = 13, | ||||
| 	groups = {choppy=2, dig_immediate=3, flammable=1, attached_node=1, torch=1}, | ||||
| 	drop = "default:torch", | ||||
| 	selection_box = { | ||||
| 		type = "wallmounted", | ||||
| 		wall_bottom = {-1/16, -0.5, -1/16, 1/16, 2/16, 1/16}, | ||||
| 	}, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		local under = pointed_thing.under | ||||
| 		local node = minetest.get_node(under) | ||||
| 		local def = minetest.registered_nodes[node.name] | ||||
| 		if def and def.on_rightclick and | ||||
| 			((not placer) or (placer and not placer:get_player_control().sneak)) then | ||||
| 			return def.on_rightclick(under, node, placer, itemstack, | ||||
| 				pointed_thing) or itemstack | ||||
| 		end | ||||
|  | ||||
| 		local above = pointed_thing.above | ||||
| 		local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above)) | ||||
| 		local fakestack = itemstack | ||||
| 		if wdir == 0 then | ||||
| 			fakestack:set_name("default:torch_ceiling") | ||||
| 		elseif wdir == 1 then | ||||
| 			fakestack:set_name("default:torch") | ||||
| 		else | ||||
| 			fakestack:set_name("default:torch_wall") | ||||
| 		end | ||||
|  | ||||
| 		itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir) | ||||
| 		itemstack:set_name("default:torch") | ||||
|  | ||||
| 		return itemstack | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| minetest.register_node("default:torch_wall", { | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "torch_wall.obj", | ||||
| 	tiles = {{ | ||||
| 		    name = "default_torch_on_floor_animated.png", | ||||
| 		    animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} | ||||
| 	}}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| 	sunlight_propagates = true, | ||||
| 	walkable = false, | ||||
| 	light_source = 13, | ||||
| 	groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1}, | ||||
| 	drop = "default:torch", | ||||
| 	selection_box = { | ||||
| 		type = "wallmounted", | ||||
| 		wall_side = {-0.5, -0.3, -0.1, -0.2, 0.3, 0.1}, | ||||
| 	}, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_node("default:torch_ceiling", { | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "torch_ceiling.obj", | ||||
| 	tiles = {{ | ||||
| 		    name = "default_torch_on_floor_animated.png", | ||||
| 		    animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} | ||||
| 	}}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| 	sunlight_propagates = true, | ||||
| 	walkable = false, | ||||
| 	light_source = 13, | ||||
| 	groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1}, | ||||
| 	drop = "default:torch", | ||||
| 	selection_box = { | ||||
| 		type = "wallmounted", | ||||
| 		wall_top = {-0.1, -0.1, -0.25, 0.1, 0.5, 0.1}, | ||||
| 	}, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| }) | ||||
|  | ||||
| minetest.register_lbm({ | ||||
| 	name = "default:3dtorch", | ||||
| 	nodenames = {"default:torch", "torches:floor", "torches:wall"}, | ||||
| 	action = function(pos, node) | ||||
| 		if node.param2 == 0 then | ||||
| 			minetest.set_node(pos, {name = "default:torch_ceiling", | ||||
| 				param2 = node.param2}) | ||||
| 		elseif node.param2 == 1 then | ||||
| 			minetest.set_node(pos, {name = "default:torch", | ||||
| 				param2 = node.param2}) | ||||
| 		else | ||||
| 			minetest.set_node(pos, {name = "default:torch_wall", | ||||
| 				param2 = node.param2}) | ||||
| 		end | ||||
| 	end | ||||
| }) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user