forked from mtcontrib/scifi_nodes
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			e34fdde795
			...
			integratio
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 286e80edfd | ||
|  | fcce42837f | 
| @@ -19,7 +19,6 @@ read_globals = { | ||||
| 	"xpanes", | ||||
| 	"screwdriver", | ||||
| 	"minetest", | ||||
| 	"mesecon", | ||||
| 	"unifieddyes" | ||||
| 	"mesecon" | ||||
|  | ||||
| } | ||||
|   | ||||
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							| @@ -4,13 +4,11 @@ | ||||
|  | ||||
|  | ||||
|  | ||||
| [](https://content.minetest.net/packages/D00Med/scifi_nodes/) | ||||
|  | ||||
| Minetest mod that adds scifi themed blocks, doors, materials, plants and other assets. | ||||
|  | ||||
| # Changelog | ||||
| # Changes log | ||||
|  | ||||
| * Added support for unifieddyes | ||||
| * 14/08/2019 : retrocompatibility fixed (aliases in doors.lua) | ||||
| * 13/08/2019 : | ||||
|   * added mod option doors_open_with_mesecon_only (default = false) | ||||
| @@ -45,13 +43,9 @@ CC0 | ||||
|  | ||||
| # Contributors: | ||||
|  | ||||
| * D00Med https://github.com/D00Med (creator) | ||||
| * tanmayameher https://github.com/tanmayameher | ||||
| * BuckarooBanzay https://github.com/BuckarooBanzay | ||||
| * naturefreshmilk https://github.com/naturefreshmilk | ||||
| * acmgit https://github.com/acmgit | ||||
| * catz85 https://github.com/catz85 | ||||
| * coil0 https://github.com/coil0 | ||||
| * Grossam https://github.com/Grossam | ||||
| * OgelGames https://github.com/OgelGames | ||||
| * leftshift https://github.com/leftshift | ||||
| * fluxionary https://github.com/fluxionary | ||||
|   | ||||
| @@ -1680,7 +1680,7 @@ minetest.register_craft({ | ||||
| minetest.register_craft({ | ||||
|     output = 'scifi_nodes:stripes2top 3', | ||||
|     recipe = { | ||||
|         {"scifi_nodes:black","scifi_nodes:black","scifi_nodes:black"}, | ||||
|         {"scifi_nodes:black","scifi_noedes:black","scifi_nodes:black"}, | ||||
|         {"default:silver_sand","default:silver_sand","default:silver_sand"} | ||||
|     } | ||||
| }) | ||||
| @@ -1692,3 +1692,4 @@ minetest.register_craft({ | ||||
|         {"scifi_nodes:stripes"} | ||||
|     } | ||||
| }) | ||||
|  | ||||
|   | ||||
							
								
								
									
										6
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								init.lua
									
									
									
									
									
								
							| @@ -14,13 +14,9 @@ dofile(MP.."/chest.lua") | ||||
| dofile(MP.."/plants.lua") | ||||
| dofile(MP.."/nodes.lua") | ||||
| dofile(MP.."/doors.lua") | ||||
| dofile(MP.."/switch.lua") | ||||
| dofile(MP.."/protected_switch.lua") | ||||
| dofile(MP.."/switches.lua") | ||||
| dofile(MP.."/nodeboxes.lua") | ||||
| dofile(MP.."/palm_scanner.lua") | ||||
| dofile(MP.."/digicode.lua") | ||||
| dofile(MP.."/models.lua") | ||||
| dofile(MP.."/crafts.lua") | ||||
| dofile(MP.."/octagon_panes.lua") | ||||
|  | ||||
| minetest.log("action", "[scifi_nodes] loaded.") | ||||
|   | ||||
							
								
								
									
										2
									
								
								mod.conf
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								mod.conf
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| name = scifi_nodes | ||||
| description = Minetest mod that adds scifi themed blocks, doors, materials, plants and other assets. | ||||
| depends = default,dye | ||||
| optional_depends = xpanes,mesecons,moreblocks,mesecons_microcontroller,mesecons_button,mesecons_torch,mesecons_receiver,basic_materials,unifieddyes | ||||
| optional_depends = xpanes,mesecons,moreblocks,mesecons_microcontroller,mesecons_button,mesecons_torch,mesecons_receiver,basic_materials | ||||
|   | ||||
| @@ -151,8 +151,7 @@ minetest.register_node("scifi_nodes:pad", { | ||||
| 	paramtype = "light", | ||||
| 	groups = {cracky=1, oddly_breakable_by_hand=1}, | ||||
| 	light_source = 5, | ||||
|     after_place_node = function(pos, placer, itemstack, pointed_thing) | ||||
|         local placer_name = placer:get_player_name() | ||||
| 	on_construct = function(pos, node, placer) | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		if position1 == nil then | ||||
| 			position1 = pos | ||||
| @@ -161,11 +160,10 @@ minetest.register_node("scifi_nodes:pad", { | ||||
| 			position2 = pos | ||||
| 			meta:set_int("type", 2) | ||||
| 		else | ||||
| 			minetest.chat_send_player(placer_name, "There can only be two teleportation pads at a time!") | ||||
| 			minetest.chat_send_all("There can only be two teleportation pads at a time!") | ||||
| 		end | ||||
| 	end, | ||||
|     on_rightclick = function(pos, node, clicker) | ||||
|         local clicker_name = clicker:get_player_name() | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		if meta:get_int("type") == 1 and position2 ~= nil and position1 ~= nil then | ||||
| 		minetest.add_particlespawner( | ||||
| @@ -219,7 +217,7 @@ minetest.register_node("scifi_nodes:pad", { | ||||
| 			"scifi_nodes_tp_part.png" --texture | ||||
| 		) | ||||
| 		minetest.after(1, function() | ||||
|         local ppos = clicker:getpos() | ||||
| 		local ppos = clicker:getpos() | ||||
| 		if minetest.get_node({x=ppos.x, y=ppos.y, z=ppos.z}).name == "scifi_nodes:pad" then | ||||
| 			clicker:setpos(position1) | ||||
| 		end | ||||
| @@ -237,13 +235,13 @@ minetest.register_node("scifi_nodes:pad", { | ||||
| 		end) | ||||
| 		elseif position1 == nil and meta:get_int("type") ~= 2 then | ||||
| 		position1 = pos | ||||
|         meta:set_int("type", 1) | ||||
| 		minetest.chat_send_player(clicker_name, "Teleporter 1 connected at "..minetest.pos_to_string(pos)) | ||||
| 		meta:set_int("type", 1) | ||||
| 		minetest.chat_send_all("Teleporter 1 connected at "..minetest.pos_to_string(pos)) | ||||
| 		elseif position2 == nil and meta:get_int("type") ~= 1 then | ||||
| 		position2 = pos | ||||
| 		meta:set_int("type", 2) | ||||
| 		minetest.chat_send_player(clicker_name, "Teleporter 2 connected at "..minetest.pos_to_string(pos)) | ||||
| 		else minetest.chat_send_player(clicker_name, "Teleporter error!") | ||||
| 		minetest.chat_send_all("Teleporter 2 connected at "..minetest.pos_to_string(pos)) | ||||
| 		else minetest.chat_send_all("Teleporter error!") | ||||
| 		end | ||||
| 	end, | ||||
| 	on_destruct = function(pos, oldnode, placer) | ||||
| @@ -1080,9 +1078,10 @@ minetest.register_node("scifi_nodes:itemholder", { | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		if name == meta:get_string("owner") or | ||||
| 				minetest.check_player_privs(name, "protection_bypass") then | ||||
| 			local wield_item = clicker:get_wielded_item():get_name() | ||||
| 			local taken = item:take_item() | ||||
| 			if taken and not taken:is_empty() then | ||||
| 				minetest.add_item(pos, taken:to_string()) | ||||
| 				minetest.add_item(pos, wield_item) | ||||
| 				return item | ||||
| 			end | ||||
| 		end | ||||
|   | ||||
							
								
								
									
										50
									
								
								nodes.lua
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								nodes.lua
									
									
									
									
									
								
							| @@ -500,15 +500,14 @@ minetest.register_node("scifi_nodes:whtlightbnd", { | ||||
| -- colors available. When crafting, the last recipes will be checked first. | ||||
| --add new block using texture name(without "scifi_nodes_" prefix) then the description, and then the name of the block | ||||
| local nodetypes = { | ||||
| 	-- { name, description, shortname?, light, colorable } | ||||
| 	{"blue",      "blue lines",        "blue"}, | ||||
| 	{"holes",       "metal with holes","holes"}, | ||||
| 	{"white2",      "plastic",         "white2", 0, true}, | ||||
| 	{"white2",      "plastic",         "white2"}, | ||||
|     {"super_white",      "Super Plastic",         "super_white", 11}, | ||||
|     {"ultra_white",      "Ultra Plastic",         "ultra_white", default.LIGHT_MAX}, | ||||
| 	{"engine",      "engine",          "engine"}, | ||||
| 	{"wall",      "metal wall",        "wall"}, | ||||
| 	{"white",      "plastic wall",     "white", 0, true}, | ||||
| 	{"white",      "plastic wall",     "white"}, | ||||
| 	{"stripes2top",     "dirty metal block","metal2"}, | ||||
| 	{"rough",      "rough metal",      "rough"}, | ||||
| 	{"lighttop",      "metal block",      "metal"}, | ||||
| @@ -529,11 +528,12 @@ local nodetypes = { | ||||
| 	{"bluetile",      "blue tile",       "blutl"}, | ||||
| 	{"greytile",      "grey tile",       "grytl"}, | ||||
| 	{"mesh2",      "metal floormesh",       "mesh2"}, | ||||
| 	{"white",      "plastic wall",       "white"}, | ||||
| 	{"pipe",      "wall pipe",       "pipe2"}, | ||||
| 	{"pipeside",      "side pipe",       "pipe3"}, | ||||
| 	{"tile",      "white tile",       "tile"}, | ||||
| 	{"whiteoct",      "white octagon",       "whiteoct", 0, true}, | ||||
| 	{"whitetile",      "white tile2",       "whttl", 0, true}, | ||||
| 	{"whiteoct",      "white octagon",       "whiteoct"}, | ||||
| 	{"whitetile",      "white tile2",       "whttl"}, | ||||
| 	{"black_detail",      "black detail",       "blckdtl"}, | ||||
| 	{"green_square",      "green metal block",       "grnblck"}, | ||||
| 	{"red_square",      "red metal block",       "redblck"}, | ||||
| @@ -586,16 +586,12 @@ local nodetypes = { | ||||
| 	{"blackplate",      "Black plate", "", 0}, | ||||
| } | ||||
|  | ||||
| local has_unifieddyes_mod = minetest.get_modpath("unifieddyes") | ||||
|  | ||||
| for _, row in ipairs(nodetypes) do | ||||
| 	local name = row[1] | ||||
| 	local desc = row[2] | ||||
| 	local light = row[4] | ||||
| 	local is_colorable = row[5] | ||||
|  | ||||
| 	-- Node Definition | ||||
| 	local node_def = { | ||||
| 	minetest.register_node("scifi_nodes:"..name, { | ||||
| 		description = desc, | ||||
| 		tiles = {"scifi_nodes_"..name..".png"}, | ||||
| 		groups = {cracky=1}, | ||||
| @@ -603,35 +599,5 @@ for _, row in ipairs(nodetypes) do | ||||
| 		paramtype2 = "facedir", | ||||
| 		light_source = light, | ||||
| 		sounds = default.node_sound_glass_defaults() | ||||
| 	} | ||||
|  | ||||
| 	if is_colorable and has_unifieddyes_mod then | ||||
| 		-- overwrite attributes on the "uncolored" node | ||||
| 		node_def.palette = "unifieddyes_palette_extended.png" | ||||
| 		node_def.groups.ud_param2_colorable = 1 | ||||
| 		node_def.airbrush_replacement_node = "scifi_nodes:"..name.."_colored" | ||||
| 	end | ||||
|  | ||||
| 	-- register node | ||||
| 	minetest.register_node("scifi_nodes:"..name, node_def) | ||||
|  | ||||
| 	if is_colorable and has_unifieddyes_mod then | ||||
| 		-- register colored node | ||||
| 		minetest.register_node("scifi_nodes:"..name.."_colored", { | ||||
| 			description = desc, | ||||
| 			tiles = {"scifi_nodes_"..name..".png"}, | ||||
| 			groups = { | ||||
| 				cracky = 1, | ||||
| 				ud_param2_colorable = 1, | ||||
| 				not_in_creative_inventory = 1 | ||||
| 			}, | ||||
| 			palette = "unifieddyes_palette_extended.png", | ||||
| 			paramtype = "light", | ||||
| 			paramtype2 = "color", | ||||
| 			light_source = light, | ||||
| 			sounds = default.node_sound_glass_defaults(), | ||||
| 			on_construct = unifieddyes.on_construct, | ||||
| 			on_dig = unifieddyes.on_dig | ||||
| 		}) | ||||
| 	end | ||||
| end | ||||
| 	}) | ||||
| end | ||||
| @@ -1,111 +0,0 @@ | ||||
|  | ||||
| local function register(basename, description, texture) | ||||
|   local nodename_single = "scifi_nodes:" .. basename .. "_pane" | ||||
|   local nodename_double = "scifi_nodes:" .. basename .. "_pane_double" | ||||
|   local nodename_offset = "scifi_nodes:" .. basename .. "_pane_offset" | ||||
|   local recipe_ingredient = "scifi_nodes:" .. basename | ||||
|  | ||||
|   -- single height | ||||
|   minetest.register_node(nodename_single, { | ||||
|     description = description, | ||||
|     drawtype = "nodebox", | ||||
|     tiles = { | ||||
|       texture | ||||
|     }, | ||||
|     wield_image = texture, | ||||
|     paramtype = "light", | ||||
|     paramtype2 = "facedir", | ||||
|     sunlight_propagates = true, | ||||
|     is_ground_content = false, | ||||
|     node_box = { | ||||
|       type = "fixed", | ||||
|       fixed = {{-0.5, -0.5, -0.03125, 0.5, 0.5, 0.03125}}, | ||||
|     }, | ||||
|     selection_box = { | ||||
|       type = "fixed", | ||||
|       fixed = {{-0.5, -0.5, -0.25, 0.5, 0.5, 0.25}}, | ||||
|     }, | ||||
|     groups = {cracky = 3, oddly_breakable_by_hand = 3}, | ||||
|     use_texture_alpha = true, | ||||
|     sounds = default.node_sound_glass_defaults() | ||||
|   }) | ||||
|  | ||||
|   -- double height | ||||
|   minetest.register_node(nodename_double, { | ||||
|     description = description, | ||||
|     drawtype = "nodebox", | ||||
|     tiles = { | ||||
|       texture | ||||
|     }, | ||||
|     wield_image = texture, | ||||
|     paramtype = "light", | ||||
|     paramtype2 = "facedir", | ||||
|     sunlight_propagates = true, | ||||
|     is_ground_content = false, | ||||
|     node_box = { | ||||
|       type = "fixed", | ||||
|       fixed = {{-0.5, -0.5, -0.03125, 0.5, 1.5, 0.03125}}, | ||||
|     }, | ||||
|     selection_box = { | ||||
|       type = "fixed", | ||||
|       fixed = {{-0.5, -0.5, -0.25, 0.5, 1.5, 0.25}}, | ||||
|     }, | ||||
|     groups = {cracky = 3, oddly_breakable_by_hand = 3}, | ||||
|     use_texture_alpha = true, | ||||
|     sounds = default.node_sound_glass_defaults() | ||||
|   }) | ||||
|  | ||||
|   -- single height with offset | ||||
|   minetest.register_node(nodename_offset, { | ||||
|     description = description, | ||||
|     drawtype = "nodebox", | ||||
|     tiles = { | ||||
|       texture | ||||
|     }, | ||||
|     wield_image = texture, | ||||
|     paramtype = "light", | ||||
|     paramtype2 = "facedir", | ||||
|     sunlight_propagates = true, | ||||
|     is_ground_content = false, | ||||
|     node_box = { | ||||
|       type = "fixed", | ||||
|       fixed = {{-0.5, -0.5, 0.96875, 0.5, 0.5, 1.03125}}, | ||||
|     }, | ||||
|     selection_box = { | ||||
|       type = "fixed", | ||||
|       fixed = {{-0.5, -0.5, 0.75, 0.5, 0.5, 1.25}}, | ||||
|     }, | ||||
|     groups = {cracky = 3, oddly_breakable_by_hand = 3}, | ||||
|     use_texture_alpha = true, | ||||
|     sounds = default.node_sound_glass_defaults() | ||||
|   }) | ||||
|  | ||||
|   -- register recipes | ||||
|  | ||||
|   minetest.register_craft({ | ||||
|     output = nodename_single .. " 16", | ||||
|     recipe = { | ||||
|       {recipe_ingredient} | ||||
|     }, | ||||
|   }) | ||||
|  | ||||
|   minetest.register_craft({ | ||||
|     output = nodename_double .. " 16", | ||||
|     recipe = { | ||||
|       {recipe_ingredient}, | ||||
|       {recipe_ingredient} | ||||
|     }, | ||||
|   }) | ||||
|  | ||||
|   minetest.register_craft({ | ||||
|     output = nodename_offset, | ||||
|     type = "shapeless", | ||||
|     recipe = {nodename_single}, | ||||
|   }) | ||||
| end | ||||
|  | ||||
| register("octrng", "Orange Octagon Glass pane", "scifi_nodes_octrng.png") | ||||
| register("octgrn", "Green Octagon Glass pane", "scifi_nodes_octgrn.png") | ||||
| register("octbl", "Blue Octagon Glass pane", "scifi_nodes_octbl.png") | ||||
| register("octppl", "Purple Octagon Glass pane", "scifi_nodes_octppl.png") | ||||
| register("glass", "Dark Glass pane", "scifi_nodes_glass.png") | ||||
| @@ -1,89 +0,0 @@ | ||||
|  | ||||
| -------------- | ||||
| -- Switches -- | ||||
| -------------- | ||||
|  | ||||
| local has_mesecons = minetest.get_modpath("mesecons") | ||||
|  | ||||
| local function toggle_switch(pos, _, player) | ||||
| 	local node = minetest.get_node(pos) | ||||
| 	local name = node.name | ||||
| 	if name == "scifi_nodes:protected_switch_on" then | ||||
| 		-- toggle off | ||||
| 		minetest.sound_play("scifi_nodes_switch", {max_hear_distance = 8, pos = pos}) | ||||
| 		minetest.set_node(pos, {name = "scifi_nodes:protected_switch_off", param2 = node.param2}) | ||||
| 		mesecon.receptor_off(pos, scifi_nodes.get_switch_rules(node.param2)) | ||||
| 	elseif name == "scifi_nodes:protected_switch_off" then | ||||
| 		-- toggle on, check protection first | ||||
| 		if player and minetest.is_protected(pos, player:get_player_name()) then | ||||
| 			-- position is protected, abort | ||||
| 			minetest.sound_play("scifi_nodes_scanner_refused", {max_hear_distance = 8, pos = pos}) | ||||
| 			return | ||||
| 		end | ||||
| 		minetest.sound_play("scifi_nodes_switch", {max_hear_distance = 8, pos = pos}) | ||||
| 		minetest.set_node(pos, {name = "scifi_nodes:protected_switch_on", param2 = node.param2}) | ||||
| 		mesecon.receptor_on(pos, scifi_nodes.get_switch_rules(node.param2)) | ||||
| 		minetest.get_node_timer(pos):start(2) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| minetest.register_node("scifi_nodes:protected_switch_on", { | ||||
| 	description = "Protected wall switch", | ||||
| 	sunlight_propagates = true, | ||||
| 	buildable_to = false, | ||||
| 	tiles = {"scifi_nodes_switch_on.png",}, | ||||
| 	inventory_image = "scifi_nodes_switch_on.png", | ||||
| 	wield_image = "scifi_nodes_switch_on.png", | ||||
| 	drawtype = "signlike", | ||||
| 	node_box = {type = "wallmounted",}, | ||||
| 	selection_box = {type = "wallmounted",}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| 	light_source = 5, | ||||
| 	groups = { | ||||
| 		cracky=1, | ||||
| 		oddly_breakable_by_hand = 1, | ||||
| 		not_in_creative_inventory = 1, | ||||
| 		mesecon_needs_receiver = 1 | ||||
| 	}, | ||||
| 	mesecons = { | ||||
| 		receptor = { | ||||
| 			state = (has_mesecons and mesecon.state.on) | ||||
| 		} | ||||
| 	}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| 	on_rightclick = (has_mesecons and toggle_switch), | ||||
| 	on_timer = (has_mesecons and toggle_switch) | ||||
| }) | ||||
|  | ||||
| minetest.register_node("scifi_nodes:protected_switch_off", { | ||||
| 	description = "Protected wall switch", | ||||
| 	tiles = {"scifi_nodes_switch_off.png",}, | ||||
| 	inventory_image = "scifi_nodes_switch_on.png", | ||||
| 	wield_image = "scifi_nodes_switch_on.png", | ||||
| 	drawtype = "signlike", | ||||
| 	sunlight_propagates = true, | ||||
| 	buildable_to = false, | ||||
| 	node_box = {type = "wallmounted",}, | ||||
| 	selection_box = {type = "wallmounted",}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| 	groups = { | ||||
| 		cracky = 1, | ||||
| 		oddly_breakable_by_hand = 1, | ||||
| 		mesecon_needs_receiver = 1 | ||||
| 	}, | ||||
| 	mesecons = { | ||||
| 		receptor = { | ||||
| 			state = (has_mesecons and mesecon.state.off) | ||||
| 		} | ||||
| 	}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| 	on_rightclick = (has_mesecons and toggle_switch) | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "scifi_nodes:protected_switch_off 2", | ||||
| 	type = "shapeless", | ||||
| 	recipe = {"scifi_nodes:switch_off", "default:steel_ingot"} | ||||
| }) | ||||
| @@ -33,12 +33,7 @@ minetest.register_node("scifi_nodes:switch_on", { | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| 	light_source = 5, | ||||
| 	groups = { | ||||
| 		cracky=1, | ||||
| 		oddly_breakable_by_hand = 1, | ||||
| 		not_in_creative_inventory = 1, | ||||
| 		mesecon_needs_receiver = 1 | ||||
| 	}, | ||||
| 	groups = {cracky=1, oddly_breakable_by_hand=1, not_in_creative_inventory=1, mesecon_needs_receiver = 1}, | ||||
| 	mesecons = { | ||||
| 		receptor = { | ||||
| 			state = (has_mesecons and mesecon.state.on) | ||||
| @@ -61,11 +56,7 @@ minetest.register_node("scifi_nodes:switch_off", { | ||||
| 	selection_box = {type = "wallmounted",}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "wallmounted", | ||||
| 	groups = { | ||||
| 		cracky = 1, | ||||
| 		oddly_breakable_by_hand = 1, | ||||
| 		mesecon_needs_receiver = 1 | ||||
| 	}, | ||||
| 	groups = {cracky=1, oddly_breakable_by_hand=1, mesecon_needs_receiver = 1}, | ||||
| 	mesecons = { | ||||
| 		receptor = { | ||||
| 			state = (has_mesecons and mesecon.state.off) | ||||
		Reference in New Issue
	
	Block a user