starlit  Diff

Differences From Artifact [e52f2bba90]:

To Artifact [435c654ad9]:


   348    348   
   349    349   local function pointChanged(a,b)
   350    350   	return a.type ~= b.type
   351    351   		or a.type == 'node'   and vector.new(a.under) ~= vector.new(b.under)
   352    352   		or a.type == 'object' and a.ref ~= b.ref 
   353    353   end
   354    354   local function triggerPower(_, luser, point)
   355         -	for k,v in pairs(starlit.activeUsers) do
   356         -	print (k,v) end
   357         -	print("trigger", luser, luser:get_player_name())
          355  +-- 	print("trigger", luser, luser:get_player_name())
   358    356   	local user = starlit.activeUsers[luser:get_player_name()]
   359    357   	local oldTgt = user.action.tgt
   360    358   	user.action.tgt = point
   361    359   	if bit.band(user.action.bits, 0x100)==0 then
   362    360   		user.action.bits = bit.bor(user.action.bits, 0x100)
   363    361   		--return user:trigger('secondary', {state = 'prog', delta = 0})
   364    362   	elseif pointChanged(oldTgt, point) then
................................................................................
   388    386   minetest.register_item("starlit:_hand_dig", {
   389    387   	type = "none",
   390    388   	wield_image = "wieldhand.png",
   391    389   	wield_scale = {x=1,y=1,z=2.5},
   392    390   	tool_capabilities = {
   393    391   		groupcaps = {
   394    392   			plant = {maxlevel=1, times = {.50}};
   395         -			dirt = {maxlevel=1, times = {2.5}};
   396    393   
   397         -			log = {maxlevel=1, times = {1}};
          394  +			-- sand, dirt, gravel
          395  +			looseClump = {maxlevel=1, times = {1.5, 2.5}};
   398    396   		};
   399    397   	}
   400    398   })
   401    399   
   402    400   minetest.register_on_player_inventory_action(function(luser, act, inv, p)
   403    401   	local name = luser:get_player_name()
   404    402   	local user = starlit.activeUsers[name]
................................................................................
   429    427   		return vector.new(
   430    428   			r(pos.x),
   431    429   			r(pos.y),
   432    430   			r(pos.z)
   433    431   		)
   434    432   	end
   435    433   	for i, it in ipairs(drops) do
   436         -		local it = minetest.add_item(jitter(pos), it)
   437         -		local dp = vector.new(0,0,0)
   438         -		if digger then dp = digger:get_pos() end
   439         -		local delta = dp - it:get_pos()
   440         -		it:add_velocity(vector.new(delta.x,0,delta.z));
          434  +		if type(it) == 'string' then it = ItemStack(it) end
          435  +		if not it:is_empty() then
          436  +			local ent = minetest.add_item(jitter(pos), it)
          437  +			if ent ~= nil then -- avoid crash when dropping unknown item
          438  +				local dp = vector.new(0,0,0)
          439  +				if digger then dp = digger:get_pos() end
          440  +				local delta = dp - ent:get_pos()
          441  +				ent:add_velocity(vector.new(delta.x,0,delta.z));
          442  +			end
          443  +		end
   441    444   	end
   442    445   end
   443    446   
   444    447   
   445    448   -- TODO timer iterates live UI
   446    449