forked from minetest-mods/mesecons
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			1963bfcc0d
			...
			dispenser
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 1711cbcbd8 | 
							
								
								
									
										1
									
								
								mesecons_dispenser/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								mesecons_dispenser/depends.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| default | ||||
							
								
								
									
										57
									
								
								mesecons_dispenser/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								mesecons_dispenser/init.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| minetest.register_node("mesecons_dispenser:dispenser", { | ||||
| 	description = "Dispenser", | ||||
| 	tiles = {"mesecons_dispenser_top.png" , "mesecons_dispenser_bottom.png", | ||||
| 		 "mesecons_dispenser_side.png", "mesecons_dispenser_side.png"   , | ||||
| 		 "mesecons_dispenser_side.png", "mesecons_dispenser_front.png"}, | ||||
| 	paramtype2 = "facedir", | ||||
| 	groups = {cracky=2}, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	on_construct = function(pos) | ||||
| 		local meta = minetest.env:get_meta(pos) | ||||
| 		meta:set_string("formspec", | ||||
| 				"size[8,7]".. | ||||
| 				"list[current_name;main;2.5,0;3,3;]".. | ||||
| 				"list[current_player;main;0,3;8,4;]") | ||||
| 		local inv = meta:get_inventory() | ||||
| 		inv:set_size("main", 3*3) | ||||
| 	end, | ||||
| 	mesecons = {effector={ | ||||
| 		action_on = function (pos, node) | ||||
| 			local dir = {{x=1, y=0, z=0}} | ||||
| 			for _ = 0, node.param2 do | ||||
| 				dir = mesecon:rotate_rules_left(dir) | ||||
| 			end | ||||
| 			dir = dir[1] | ||||
| 			local objpos = mesecon:addPosRule(pos, {x=dir.x/2, y=dir.y/2, z=dir.z/2}) | ||||
| 			--minetest.env:add_node(mesecon:addPosRule(pos, dir[1]), {name="default:wood"}) | ||||
| 			local inv = minetest.env:get_meta(pos):get_inventory() | ||||
| 			local stacks = {} | ||||
| 			for j = 1, 9 do | ||||
| 				local ts = inv:get_stack("main", j) | ||||
| 				if not ts:is_empty() then | ||||
| 					table.insert(stacks, {stack = ts, id = j}) | ||||
| 				end | ||||
| 			end | ||||
| 			print(dump(stacks)) | ||||
| 			if #stacks > 0 then | ||||
| 				local sn = math.random(1, #stacks) | ||||
| 				local takenitem = stacks[sn].stack:take_item() | ||||
| 				inv:set_stack("main", stacks[sn].id, stacks[sn].stack) | ||||
| 				print(dump(takenitem:to_table())) | ||||
| 				local obj = minetest.env:add_item(objpos, takenitem:to_table()) | ||||
| 				obj:setvelocity({	x=dir.x*5+math.random(1, 100)/50-0.5, | ||||
| 							y=dir.y*5+math.random(1, 100)/50-0.5, | ||||
| 							z=dir.z*5+math.random(1, 100)/50-0.5}) | ||||
| 			end | ||||
| 		end | ||||
| 	}}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'mesecons_dispenser:dispenser', | ||||
| 	recipe = { | ||||
| 		{"default:cobble", "default:cobble", "default:cobble"}, | ||||
| 		{"default:cobble", "mesecons_materials:fiber", "default:cobble"}, | ||||
| 		{"default:cobble", "group:mesecon_conductor_craftable", "default:cobble"}, | ||||
| 	} | ||||
| }) | ||||
							
								
								
									
										
											BIN
										
									
								
								mesecons_textures/textures/mesecons_dispenser_bottom.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								mesecons_textures/textures/mesecons_dispenser_bottom.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 731 B | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_textures/textures/mesecons_dispenser_front.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								mesecons_textures/textures/mesecons_dispenser_front.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 827 B | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_textures/textures/mesecons_dispenser_side.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								mesecons_textures/textures/mesecons_dispenser_side.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 731 B | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_textures/textures/mesecons_dispenser_top.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								mesecons_textures/textures/mesecons_dispenser_top.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 731 B | 
		Reference in New Issue
	
	Block a user