various code style improvements

This commit is contained in:
Sumyjkl 2022-07-26 20:20:13 +10:00
parent 5fc662664f
commit 70b7655e46

View file

@ -320,14 +320,12 @@ function minetest.handle_node_drops(pos, drops, digger)
if obj then if obj then
-- set the velocity multiplier to the stored amount or if the game dug this node, apply a bigger velocity -- set the velocity multiplier to the stored amount or if the game dug this node, apply a bigger velocity
local v = 1 local v = 1
if digger and digger:is_player() then if digger and digger:is_player() then
obj:get_luaentity().random_velocity = 1 obj:get_luaentity().random_velocity = 1
else else
obj:get_luaentity().random_velocity = 1.6 obj:get_luaentity().random_velocity = 1.6
end end
obj:get_luaentity().age = item_drop_settings.dug_buffer obj:get_luaentity().age = item_drop_settings.dug_buffer
obj:get_luaentity()._insta_collect = false obj:get_luaentity()._insta_collect = false
end end
end end
@ -406,16 +404,18 @@ minetest.register_entity(":__builtin:item", {
-- Number of seconds this item entity has existed so far -- Number of seconds this item entity has existed so far
age = 0, age = 0,
-- Multiplier for initial random velocity when the item is spawned
random_velocity = 1, random_velocity = 1,
-- How old it has become in the collection animation -- How old it has become in the collection animation
collection_age = 0, collection_age = 0,
-- Function to apply a random velocity
apply_random_vel = function(self, speed) apply_random_vel = function(self, speed)
if not self or not self.object or not self.object:get_luaentity() then if not self or not self.object or not self.object:get_luaentity() then
return return
end end
-- if you passed a value then use that for the velocity multiplier
if speed ~= nil then self.random_velocity = speed end if speed ~= nil then self.random_velocity = speed end
local vel = self.object:get_velocity() local vel = self.object:get_velocity()
@ -483,7 +483,7 @@ minetest.register_entity(":__builtin:item", {
glow = glow, glow = glow,
} }
self.object:set_properties(prop) self.object:set_properties(prop)
if item_drop_settings.random_item_velocity == true and self.age < 2 then if item_drop_settings.random_item_velocity == true and self.age < 1 then
minetest.after(0, self.apply_random_vel, self) minetest.after(0, self.apply_random_vel, self)
end end
end, end,
@ -660,12 +660,14 @@ minetest.register_entity(":__builtin:item", {
local nn_above = minetest.get_node({x=p.x, y=p.y+0.1, z=p.z}).name local nn_above = minetest.get_node({x=p.x, y=p.y+0.1, z=p.z}).name
-- make sure it's more or less stationary and is at water level -- make sure it's more or less stationary and is at water level
local sleep_threshold = 0.3 local sleep_threshold = 0.3
local is_floating = false
local is_stationary = math.abs(self.object:get_velocity().x) < sleep_threshold local is_stationary = math.abs(self.object:get_velocity().x) < sleep_threshold
and math.abs(self.object:get_velocity().y) < sleep_threshold and math.abs(self.object:get_velocity().y) < sleep_threshold
and math.abs(self.object:get_velocity().z) < sleep_threshold and math.abs(self.object:get_velocity().z) < sleep_threshold
local is_floating = (is_stationary if is_in_water and is_stationary then
and is_in_water is_floating = (is_in_water
and (minetest.get_item_group(nn_above, "liquid") == 0)) and (minetest.get_item_group(nn_above, "liquid") == 0))
end
if is_floating and self.physical_state == true then if is_floating and self.physical_state == true then
self.object:set_velocity({x = 0, y = 0, z = 0}) self.object:set_velocity({x = 0, y = 0, z = 0})
@ -857,24 +859,23 @@ minetest.register_entity(":__builtin:item", {
if not minetest.registered_nodes[nn] if not minetest.registered_nodes[nn]
or is_floating or is_on_floor then or is_floating or is_on_floor then
if true then local own_stack = ItemStack(self.object:get_luaentity().itemstring)
local own_stack = ItemStack(self.object:get_luaentity().itemstring) -- Merge with close entities of the same item
-- Merge with close entities of the same item for _, object in pairs(minetest.get_objects_inside_radius(p, 0.8)) do
for _, object in pairs(minetest.get_objects_inside_radius(p, 0.8)) do local obj = object:get_luaentity()
local obj = object:get_luaentity() if obj and obj.name == "__builtin:item"
if obj and obj.name == "__builtin:item" and obj.physical_state == false then
and obj.physical_state == false then if self:try_merge_with(own_stack, object, obj) then
if self:try_merge_with(own_stack, object, obj) then return
return
end
end end
end end
-- don't disable if underwater
if not is_in_water then if not is_in_water then
disable_physics(self.object, self) disable_physics(self.object, self)
end end
end end
else else
if self._magnet_active == false and not is_floating and not is_in_water then if self._magnet_active == false and not is_floating then
enable_physics(self.object, self) enable_physics(self.object, self)
end end
end end