forkattu lähteestä luanti-org/minetest_game
		
	Create API for registration of fence gate.
This commit is contained in:
		| @@ -658,59 +658,101 @@ minetest.register_craft({ | ||||
|  | ||||
| ----fence gate---- | ||||
|  | ||||
| local fence = { | ||||
| 	description = "Fence Gate", | ||||
| 	drawtype = "mesh", | ||||
| 	tiles = {"default_wood.png"}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "facedir", | ||||
| 	sunlight_propagates = true, | ||||
| 	is_ground_content = false, | ||||
| 	drop = "doors:gate_closed", | ||||
| 	connect_sides = { "left", "right" }, | ||||
| 	groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, | ||||
| 		flammable = 2, fence = 1}, | ||||
| 	on_rightclick = function(pos, clicker) | ||||
| 		local node = minetest.get_node(pos) | ||||
| 		local def = minetest.registered_nodes[node.name] | ||||
| 		minetest.swap_node(pos, {name = def.gate, param2 = node.param2}) | ||||
| 		minetest.sound_play(def.sound, {pos = pos, gain = 0.3, | ||||
| 			max_hear_distance = 8}) | ||||
| 	end, | ||||
| 	selection_box = { | ||||
| function doors.register_fencegate(name, def) | ||||
| 	local fence = { | ||||
| 		description = def.description, | ||||
| 		drawtype = "mesh", | ||||
| 		tiles = { def.texture }, | ||||
| 		paramtype = "light", | ||||
| 		paramtype2 = "facedir", | ||||
| 		sunlight_propagates = true, | ||||
| 		is_ground_content = false, | ||||
| 		drop = name .. "_closed", | ||||
| 		connect_sides = { "left", "right" }, | ||||
| 		groups = def.groups, | ||||
| 		sounds = def.sounds, | ||||
| 		on_rightclick = function(pos, clicker) | ||||
| 			local node = minetest.get_node(pos) | ||||
| 			local node_def = minetest.registered_nodes[node.name] | ||||
| 			minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2}) | ||||
| 			minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3, | ||||
| 				max_hear_distance = 8}) | ||||
| 		end, | ||||
| 		selection_box = { | ||||
| 			type = "fixed", | ||||
| 			fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}, | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	if not fence.sounds then | ||||
| 		fence.sounds = default.node_sound_wood_defaults() | ||||
| 	end | ||||
|  | ||||
| 	fence.groups.fence = 1 | ||||
|  | ||||
| 	local fence_closed = table.copy(fence) | ||||
| 	fence_closed.mesh = "doors_fencegate_closed.obj" | ||||
| 	fence_closed.gate = name .. "_open" | ||||
| 	fence_closed.sound = "doors_fencegate_open" | ||||
| 	fence_closed.collision_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}, | ||||
| 	}, | ||||
| } | ||||
| 	} | ||||
|  | ||||
| local fence_closed = table.copy(fence) | ||||
| fence_closed.mesh = "doors_fencegate_closed.obj" | ||||
| fence_closed.gate = "doors:gate_open" | ||||
| fence_closed.sound = "doors_fencegate_open" | ||||
| fence_closed.collision_box = { | ||||
| 	type = "fixed", | ||||
| 	fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}, | ||||
| } | ||||
| 	local fence_open = table.copy(fence) | ||||
| 	fence_open.mesh = "doors_fencegate_open.obj" | ||||
| 	fence_open.gate = name .. "_closed" | ||||
| 	fence_open.sound = "doors_fencegate_close" | ||||
| 	fence_open.groups.not_in_creative_inventory = 1 | ||||
| 	fence_open.collision_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4}, | ||||
| 			{-5/8, -3/8, -14/16, -3/8, 3/8, 0}}, | ||||
| 	} | ||||
|  | ||||
| local fence_open = table.copy(fence) | ||||
| fence_open.mesh = "doors_fencegate_open.obj" | ||||
| fence_open.gate = "doors:gate_closed" | ||||
| fence_open.sound = "doors_fencegate_close" | ||||
| fence_open.groups.not_in_creative_inventory = 1 | ||||
| fence_open.collision_box = { | ||||
| 	type = "fixed", | ||||
| 	fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4}, | ||||
| 		{-5/8, -3/8, -14/16, -3/8, 3/8, 0}}, | ||||
| } | ||||
| 	minetest.register_node(":" .. name .. "_closed", fence_closed) | ||||
| 	minetest.register_node(":" .. name .. "_open", fence_open) | ||||
|  | ||||
| minetest.register_node("doors:gate_closed", fence_closed) | ||||
| minetest.register_node("doors:gate_open", fence_open) | ||||
| 	minetest.register_craft({ | ||||
| 		output = name .. "_closed", | ||||
| 		recipe = { | ||||
| 			{"default:stick", def.material, "default:stick"}, | ||||
| 			{"default:stick", def.material, "default:stick"} | ||||
| 		} | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "doors:gate_closed", | ||||
| 	recipe = { | ||||
| 		{"default:stick", "group:wood", "default:stick"}, | ||||
| 		{"default:stick", "group:wood", "default:stick"}, | ||||
| 	}, | ||||
| doors.register_fencegate("doors:gate_wood", { | ||||
| 	description = "Wooden Fence Gate", | ||||
| 	texture = "default_wood.png", | ||||
| 	material = "default:wood", | ||||
| 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} | ||||
| }) | ||||
|  | ||||
| doors.register_fencegate("doors:gate_acacia_wood", { | ||||
| 	description = "Acacia Fence Gate", | ||||
| 	texture = "default_acacia_wood.png", | ||||
| 	material = "default:acacia_wood", | ||||
| 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} | ||||
| }) | ||||
|  | ||||
| doors.register_fencegate("doors:gate_junglewood", { | ||||
| 	description = "Junglewood Fence Gate", | ||||
| 	texture = "default_junglewood.png", | ||||
| 	material = "default:junglewood", | ||||
| 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} | ||||
| }) | ||||
|  | ||||
| doors.register_fencegate("doors:gate_pine_wood", { | ||||
| 	description = "Pine Fence Gate", | ||||
| 	texture = "default_pine_wood.png", | ||||
| 	material = "default:pine_wood", | ||||
| 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} | ||||
| }) | ||||
|  | ||||
| doors.register_fencegate("doors:gate_aspen_wood", { | ||||
| 	description = "Aspen Fence Gate", | ||||
| 	texture = "default_aspen_wood.png", | ||||
| 	material = "default:aspen_wood", | ||||
| 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} | ||||
| }) | ||||
|   | ||||
		Viittaa uudesa ongelmassa
	
	Block a user