diff options
| -rw-r--r-- | depends.txt | 4 | ||||
| -rw-r--r-- | node_breaker.lua | 69 | ||||
| -rw-r--r-- | screwdriver.lua | 41 | ||||
| -rw-r--r-- | sonic_screwdriver.lua | 69 | ||||
| -rw-r--r-- | textures/technic_nodebreaker_back.png | bin | 0 -> 37128 bytes | |||
| -rw-r--r-- | textures/technic_nodebreaker_bottom.png | bin | 0 -> 38757 bytes | |||
| -rw-r--r-- | textures/technic_nodebreaker_front_off.png | bin | 0 -> 29441 bytes | |||
| -rw-r--r-- | textures/technic_nodebreaker_front_on.png | bin | 0 -> 23351 bytes | |||
| -rw-r--r-- | textures/technic_nodebreaker_side.png | bin | 0 -> 38136 bytes | |||
| -rw-r--r-- | textures/technic_nodebreaker_side1.png | bin | 0 -> 38291 bytes | |||
| -rw-r--r-- | textures/technic_nodebreaker_side2.png | bin | 0 -> 38195 bytes | |||
| -rw-r--r-- | textures/technic_nodebreaker_top.png | bin | 0 -> 38904 bytes | 
12 files changed, 135 insertions, 48 deletions
| diff --git a/depends.txt b/depends.txt index d2e492a..e9450f3 100644 --- a/depends.txt +++ b/depends.txt @@ -3,5 +3,5 @@ moreores  stairs  flowers  dye - - +pipeworks +mesecons diff --git a/node_breaker.lua b/node_breaker.lua new file mode 100644 index 0000000..4f110ee --- /dev/null +++ b/node_breaker.lua @@ -0,0 +1,69 @@ +minetest.register_node("technic:nodebreaker_off", { +	description = "Node Breaker", +	tile_images = {"technic_nodebreaker_top.png","technic_nodebreaker_bottom.png","technic_nodebreaker_side2.png","technic_nodebreaker_side1.png", +			"technic_nodebreaker_back.png","technic_nodebreaker_front_off.png"}, +	is_ground_content = true, +	paramtype2 = "facedir", +	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon_receptor_off = 1, mesecon_effector_off = 1, mesecon = 2}, +	sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("technic:nodebreaker_on", { +	description = "Node Breaker", +	tile_images = {"technic_nodebreaker_top.png","technic_nodebreaker_bottom.png","technic_nodebreaker_side2.png","technic_nodebreaker_side1.png", +			"technic_nodebreaker_back.png","technic_nodebreaker_front_on.png"}, +	is_ground_content = true, +	paramtype2 = "facedir", +	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon_receptor_off = 1, mesecon_effector_off = 1, mesecon = 2}, +	sounds = default.node_sound_stone_defaults(), +}) + +mesecon:register_on_signal_on(function(pos, node) +	if node.name == "technic:nodebreaker_off" then +		minetest.env:add_node(pos, {name="technic:nodebreaker_on", param2 = node.param2}) +		break_node (pos,node.param2) +		nodeupdate(pos) +	end +end) + +mesecon:register_on_signal_off(function(pos, node) +	if node.name == "technic:nodebreaker_on" then +		minetest.env:add_node(pos, {name="technic:nodebreaker_off", param2 = node.param2}) +		nodeupdate(pos) +	end +end) + +mesecon:register_effector("technic:nodebreaker_on", "technic:nodebreaker_off") + +function break_node (pos,n_param)		 +	local pos1={} +	local pos2={} +	pos1.x=pos.x +	pos1.y=pos.y +	pos1.z=pos.z +	pos2.x=pos.x +	pos2.y=pos.y +	pos2.z=pos.z + +	--param2 3=x+ 1=x- 2=z+ 0=z- +	if n_param==3 then print ("sru") pos2.x=pos2.x+1 pos1.x=pos1.x-1 end +	if n_param==2 then pos2.z=pos2.z+1 pos1.z=pos1.z-1 end +	if n_param==1 then pos2.x=pos2.x-1 pos1.x=pos1.x+1 end +	if n_param==0 then pos2.z=pos2.z-1 pos1.x=pos1.z+1 end + +	local node=minetest.env:get_node(pos2) +	if node.name == "air" then return nil end +	if node.name == "default:lava_source" then return nil end +	if node.name == "default:lava_flowing" then return nil end +	if node.name == "default:water_source" then minetest.env:remove_node(pos2) return nil end +	if node.name == "default:water_flowing" then minetest.env:remove_node(pos2) return nil end +	if node.name == "ignore" then minetest.env:remove_node(pos2) return nil end +	local drops = minetest.get_node_drops(node.name, "default:pick_mese") +		local _, dropped_item +		for _, dropped_item in ipairs(drops) do +			minetest.item_drop(dropped_item, "", pos1) +		end +	minetest.env:remove_node(pos2) + +end + diff --git a/screwdriver.lua b/screwdriver.lua index d58d11a..0b81217 100644 --- a/screwdriver.lua +++ b/screwdriver.lua @@ -1,34 +1,43 @@ -    minetest.register_tool("technic:screwdriver", { + minetest.register_tool("technic:screwdriver", {              description = "Screwdriver",              inventory_image = "technic_screwdriver.png",              on_use = function(itemstack, user, pointed_thing)                      -- Must be pointing to facedir applicable node                      if pointed_thing.type~="node" then return end -		    local pos=minetest.get_pointed_thing_position(pointed_thing,above) -		    local node=minetest.env:get_node(pos) -		    local node_name=node.name -		    if node.param2==nil  then return end -         	    -- Get ready to set the param2 +                    local pos=minetest.get_pointed_thing_position(pointed_thing,above) +                    local node=minetest.env:get_node(pos) +                    local node_name=node.name +                        if minetest.registered_nodes[node_name].paramtype2 == "facedir" or minetest.registered_nodes[node_name].paramtype2 == "wallmounted" then +                    if node.param2==nil  then return end +                    -- Get ready to set the param2                      local n = node.param2 +                                        if minetest.registered_nodes[node_name].paramtype2 == "facedir" then                      n = n+1                      if n == 4 then n = 0 end +                                        else +                                        n = n+1 +                                        if n == 6 then n = 0 end +                                        end                      -- hacky_swap_node, unforunatly.                      local meta = minetest.env:get_meta(pos)                      local meta0 = meta:to_table()                      node.param2 = n -           	    minetest.env:set_node(pos,node) +                    minetest.env:set_node(pos,node)                      meta = minetest.env:get_meta(pos)                      meta:from_table(meta0) -		    local item=itemstack:to_table() -		    local item_wear=tonumber((item["wear"]))  -		    item_wear=item_wear+819 -		    if item_wear>65535 then itemstack:clear() return itemstack end -		    item["wear"]=tostring(item_wear) -		    itemstack:replace(item) -		    return itemstack -	    end, +                    local item=itemstack:to_table() +                    local item_wear=tonumber((item["wear"])) +                    item_wear=item_wear+819 +                    if item_wear>65535 then itemstack:clear() return itemstack end +                    item["wear"]=tostring(item_wear) +                    itemstack:replace(item) +                    return itemstack +                        else +                        return itemstack +                        end +            end,      }) -      +          minetest.register_craft({              output = "technic:screwdriver",              recipe = { diff --git a/sonic_screwdriver.lua b/sonic_screwdriver.lua index 07aa9b4..c6efc42 100644 --- a/sonic_screwdriver.lua +++ b/sonic_screwdriver.lua @@ -1,40 +1,49 @@  sonic_screwdriver_max_charge=15000 - -    minetest.register_tool("technic:sonic_screwdriver", { +       +       minetest.register_tool("technic:sonic_screwdriver", {              description = "Sonic Screwdriver",              inventory_image = "technic_sonic_screwdriver.png",              on_use = function(itemstack, user, pointed_thing)                      -- Must be pointing to facedir applicable node                      if pointed_thing.type~="node" then return end -		    local pos=minetest.get_pointed_thing_position(pointed_thing,above) -		    local node=minetest.env:get_node(pos) -		    local node_name=node.name -		    if node.param2==nil  then return end +                    local pos=minetest.get_pointed_thing_position(pointed_thing,above) +                    local node=minetest.env:get_node(pos) +                    local node_name=node.name +                        if minetest.registered_nodes[node_name].paramtype2 == "facedir" or minetest.registered_nodes[node_name].paramtype2 == "wallmounted" then +                    if node.param2==nil  then return end                      item=itemstack:to_table() -			local charge=tonumber((item["wear"]))  -			if charge ==0 then charge =65535 end -			charge=get_RE_item_load(charge,sonic_screwdriver_max_charge) -			if charge-100>0 then -			  	minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.5, max_hear_distance = 10,}) -			   local n = node.param2 -			   n = n+1 -	                   if n == 4 then n = 0 end -	                    -- hacky_swap_node, unforunatly. -		            local meta = minetest.env:get_meta(pos) -			    local meta0 = meta:to_table() -	                    node.param2 = n -			    minetest.env:set_node(pos,node) -	                    meta = minetest.env:get_meta(pos) -		            meta:from_table(meta0) -		   -			  charge =charge-100;	 -			  charge=set_RE_item_load(charge,sonic_screwdriver_max_charge) -			  item["wear"]=tostring(charge) -			  itemstack:replace(item) -			  end -			return itemstack -			end, -	   +                        local charge=tonumber((item["wear"])) +                        if charge ==0 then charge =65535 end +                        charge=get_RE_item_load(charge,sonic_screwdriver_max_charge) +                        if charge-100>0 then +                                minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.5, max_hear_distance = 10,}) +                           local n = node.param2 +                           if minetest.registered_nodes[node_name].paramtype2 == "facedir" then +                           n = n+1 +                   if n == 4 then n = 0 end +                           else +                           n = n+1 +                           if n == 6 then n = 0 end +                           end +                            -- hacky_swap_node, unforunatly. +                            local meta = minetest.env:get_meta(pos) +                            local meta0 = meta:to_table() +                            node.param2 = n +                            minetest.env:set_node(pos,node) +                            meta = minetest.env:get_meta(pos) +                            meta:from_table(meta0) +                  +                          charge =charge-100;   +                          charge=set_RE_item_load(charge,sonic_screwdriver_max_charge) +                          item["wear"]=tostring(charge) +                          itemstack:replace(item) +                          end +                        return itemstack +                        else +                        return itemstack +                        end +                        end, +               })      minetest.register_craft({ diff --git a/textures/technic_nodebreaker_back.png b/textures/technic_nodebreaker_back.pngBinary files differ new file mode 100644 index 0000000..0bc8df9 --- /dev/null +++ b/textures/technic_nodebreaker_back.png diff --git a/textures/technic_nodebreaker_bottom.png b/textures/technic_nodebreaker_bottom.pngBinary files differ new file mode 100644 index 0000000..ff1a2c6 --- /dev/null +++ b/textures/technic_nodebreaker_bottom.png diff --git a/textures/technic_nodebreaker_front_off.png b/textures/technic_nodebreaker_front_off.pngBinary files differ new file mode 100644 index 0000000..d0f6f55 --- /dev/null +++ b/textures/technic_nodebreaker_front_off.png diff --git a/textures/technic_nodebreaker_front_on.png b/textures/technic_nodebreaker_front_on.pngBinary files differ new file mode 100644 index 0000000..368ce32 --- /dev/null +++ b/textures/technic_nodebreaker_front_on.png diff --git a/textures/technic_nodebreaker_side.png b/textures/technic_nodebreaker_side.pngBinary files differ new file mode 100644 index 0000000..aefd7c8 --- /dev/null +++ b/textures/technic_nodebreaker_side.png diff --git a/textures/technic_nodebreaker_side1.png b/textures/technic_nodebreaker_side1.pngBinary files differ new file mode 100644 index 0000000..8cb8634 --- /dev/null +++ b/textures/technic_nodebreaker_side1.png diff --git a/textures/technic_nodebreaker_side2.png b/textures/technic_nodebreaker_side2.pngBinary files differ new file mode 100644 index 0000000..c2855d0 --- /dev/null +++ b/textures/technic_nodebreaker_side2.png diff --git a/textures/technic_nodebreaker_top.png b/textures/technic_nodebreaker_top.pngBinary files differ new file mode 100644 index 0000000..941d333 --- /dev/null +++ b/textures/technic_nodebreaker_top.png | 
