diff options
| author | Anthony Zhang <azhang9@gmail.com> | 2013-03-16 21:18:36 -0400 | 
|---|---|---|
| committer | Anthony Zhang <azhang9@gmail.com> | 2013-03-16 21:18:36 -0400 | 
| commit | 1ff437b7b0b7ebd5f2faf1e2f1e7dcba027beb6b (patch) | |
| tree | bef9481b44adb2936b89c7edb2609fdbb6099a7a /mesecons_movestones | |
| parent | 5f9e655c13e7ce0946845646e9a6f11cba853bbe (diff) | |
Don't forget sticky movestones!
Diffstat (limited to 'mesecons_movestones')
| -rw-r--r-- | mesecons_movestones/init.lua | 37 | 
1 files changed, 13 insertions, 24 deletions
| diff --git a/mesecons_movestones/init.lua b/mesecons_movestones/init.lua index 8f4ff81..cd19ec2 100644 --- a/mesecons_movestones/init.lua +++ b/mesecons_movestones/init.lua @@ -136,26 +136,6 @@ minetest.register_node("mesecons_movestones:sticky_movestone", {  		action_on = function (pos, node)  			local direction=mesecon:get_movestone_direction(pos)  			if not direction then return end -			local checknode={} -			local collpos={x=pos.x, y=pos.y, z=pos.z} -			repeat -- Check if it collides with a stopper -				collpos = mesecon:addPosRule(collpos, direction) -				checknode=minetest.env:get_node(collpos) -				if mesecon:is_mvps_stopper(checknode.name, direction) then  -					return  -				end -			until checknode.name=="air" -			or checknode.name=="ignore"  -			or not(minetest.registered_nodes[checknode.name].liquidtype == "none")   -			repeat -- Check if it collides with a stopper (pull direction) -				collpos={x=collpos.x-direction.x, y=collpos.y-direction.y, z=collpos.z-direction.z} -				checknode=minetest.env:get_node(collpos) -				if mesecon:is_mvps_stopper(checknode.name, direction) then -					return  -				end -			until checknode.name=="air" -			or checknode.name=="ignore"  -			or not(minetest.registered_nodes[checknode.name].liquidtype == "none")  			minetest.env:remove_node(pos)  			mesecon:update_autoconnect(pos)  			minetest.env:add_entity(pos, "mesecons_movestones:sticky_movestone_entity") @@ -184,18 +164,27 @@ minetest.register_entity("mesecons_movestones:sticky_movestone_entity", {  	on_step = function(self, dtime)  		local pos = self.object:getpos() -		local colp = pos -		local direction=mesecon:get_movestone_direction(colp) +		pos.x, pos.y, pos.z = math.floor(pos.x), math.floor(pos.y), math.floor(pos.z) +		local direction = mesecon:get_movestone_direction(pos)  		if not direction then +			local name = minetest.env:get_node(pos).name +			if name ~= "air" and name ~= "ignore" and minetest.registered_nodes[name].liquidtype == "none" then +				mesecon:mvps_push(pos, direction, MOVESTONE_MAXIMUM_PUSH) +			end  			minetest.env:add_node(pos, {name="mesecons_movestones:sticky_movestone"})  			self.object:remove()  			return  		end -		self.object:setvelocity({x=direction.x*2, y=direction.y*2, z=direction.z*2}) +		local np = mesecon:addPosRule(pos, direction) +		if not mesecon:mvps_push(np, direction, MOVESTONE_MAXIMUM_PUSH) then +			minetest.env:add_node(pos, {name="mesecons_movestones:sticky_movestone"}) +			self.object:remove() +			return +		end -		mesecon:mvps_push(pos, direction, 100) +		self.object:setvelocity({x=direction.x*2, y=direction.y*2, z=direction.z*2})  		--STICKY  		mesecon:mvps_pull_all(pos, direction) | 
