tweak and tidy code
This commit is contained in:
parent
6b81269668
commit
843b920913
57
init.lua
57
init.lua
@ -1,12 +1,5 @@
|
|||||||
-- Minetest: builtin/item_entity.lua
|
-- Minetest: builtin/item_entity.lua
|
||||||
|
|
||||||
-- override ice to make slippery for 0.4.16
|
|
||||||
if not minetest.raycast then
|
|
||||||
minetest.override_item("default:ice", {
|
|
||||||
groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 3}})
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function core.spawn_item(pos, item)
|
function core.spawn_item(pos, item)
|
||||||
|
|
||||||
local stack = ItemStack(item)
|
local stack = ItemStack(item)
|
||||||
@ -20,7 +13,7 @@ function core.spawn_item(pos, item)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- If item_entity_ttl is not set, enity will have default life time
|
-- If item_entity_ttl is not set, entity will have default life time
|
||||||
-- Setting it to -1 disables the feature
|
-- Setting it to -1 disables the feature
|
||||||
local time_to_live = tonumber(core.settings:get("item_entity_ttl")) or 900
|
local time_to_live = tonumber(core.settings:get("item_entity_ttl")) or 900
|
||||||
local gravity = tonumber(core.settings:get("movement_gravity")) or 9.81
|
local gravity = tonumber(core.settings:get("movement_gravity")) or 9.81
|
||||||
@ -78,8 +71,7 @@ local function quick_flow_logic(node, pos_testing, direction)
|
|||||||
param2 = 0
|
param2 = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.registered_nodes[node_testing.name].liquidtype ~= "flowing"
|
if minetest.registered_nodes[node_testing.name].liquidtype ~= "flowing" then
|
||||||
and minetest.registered_nodes[node_testing.name].liquidtype ~= "source" then
|
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -135,19 +127,14 @@ local function add_effects(pos)
|
|||||||
maxexptime = 3,
|
maxexptime = 3,
|
||||||
minsize = 1,
|
minsize = 1,
|
||||||
maxsize = 4,
|
maxsize = 4,
|
||||||
texture = "tnt_smoke.png",
|
texture = "tnt_smoke.png"
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- print vector, helpful when debugging
|
|
||||||
local function vec_print(head, vec)
|
|
||||||
print(head, vec.x, vec.y, vec.z)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local water_force = tonumber(minetest.settings:get("builtin_item.waterflow_force") or 1.6)
|
local water_force = tonumber(minetest.settings:get("builtin_item.waterflow_force") or 1.6)
|
||||||
local water_drag = tonumber(minetest.settings:get("builtin_item.waterflow_drag") or 0.8)
|
local water_drag = tonumber(minetest.settings:get("builtin_item.waterflow_drag") or 0.8)
|
||||||
local dry_friction = tonumber(minetest.settings:get("builtin_item.friction_dry") or 2.5)
|
local dry_friction = tonumber(minetest.settings:get("builtin_item.friction_dry") or 2.6)
|
||||||
local air_drag = tonumber(minetest.settings:get("builtin_item.air_drag") or 0.4)
|
local air_drag = tonumber(minetest.settings:get("builtin_item.air_drag") or 0.4)
|
||||||
local items_collect_on_slippery = tonumber(
|
local items_collect_on_slippery = tonumber(
|
||||||
minetest.settings:get("builtin_item.items_collect_on_slippery") or 1) ~= 0
|
minetest.settings:get("builtin_item.items_collect_on_slippery") or 1) ~= 0
|
||||||
@ -194,7 +181,7 @@ core.register_entity(":__builtin:item", {
|
|||||||
local col_height = size * 0.75
|
local col_height = size * 0.75
|
||||||
local def = core.registered_nodes[itemname]
|
local def = core.registered_nodes[itemname]
|
||||||
local glow = def and def.light_source
|
local glow = def and def.light_source
|
||||||
local c1, c2 = "",""
|
local c1, c2 = "", ""
|
||||||
|
|
||||||
if not(stack:get_count() == 1) then
|
if not(stack:get_count() == 1) then
|
||||||
c1 = " x" .. tostring(stack:get_count())
|
c1 = " x" .. tostring(stack:get_count())
|
||||||
@ -225,23 +212,20 @@ core.register_entity(":__builtin:item", {
|
|||||||
glow = glow,
|
glow = glow,
|
||||||
infotext = name .. c1 .. "\n(" .. itemname .. c2 .. ")"
|
infotext = name .. c1 .. "\n(" .. itemname .. c2 .. ")"
|
||||||
})
|
})
|
||||||
|
|
||||||
end,
|
end,
|
||||||
|
|
||||||
get_staticdata = function(self)
|
get_staticdata = function(self)
|
||||||
|
|
||||||
local data = {
|
return core.serialize({
|
||||||
itemstring = self.itemstring,
|
itemstring = self.itemstring,
|
||||||
age = self.age,
|
age = self.age,
|
||||||
dropped_by = self.dropped_by
|
dropped_by = self.dropped_by
|
||||||
}
|
})
|
||||||
|
|
||||||
return core.serialize(data)
|
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_activate = function(self, staticdata, dtime_s)
|
on_activate = function(self, staticdata, dtime_s)
|
||||||
|
|
||||||
if string.sub(staticdata, 1, string.len("return")) == "return" then
|
if string.sub(staticdata, 1, 6) == "return" then
|
||||||
|
|
||||||
local data = core.deserialize(staticdata)
|
local data = core.deserialize(staticdata)
|
||||||
|
|
||||||
@ -384,7 +368,7 @@ core.register_entity(":__builtin:item", {
|
|||||||
pos = pos,
|
pos = pos,
|
||||||
max_hear_distance = 6,
|
max_hear_distance = 6,
|
||||||
gain = 0.5
|
gain = 0.5
|
||||||
})
|
}, true)
|
||||||
|
|
||||||
self.itemstring = ""
|
self.itemstring = ""
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
@ -405,7 +389,9 @@ core.register_entity(":__builtin:item", {
|
|||||||
local def = self.def_under
|
local def = self.def_under
|
||||||
|
|
||||||
if self.falling_state or not node then
|
if self.falling_state or not node then
|
||||||
|
|
||||||
self.slippery_state = false
|
self.slippery_state = false
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -444,17 +430,6 @@ core.register_entity(":__builtin:item", {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
step_air_drag_physics = function(self)
|
|
||||||
|
|
||||||
local vel = self.object:get_velocity()
|
|
||||||
|
|
||||||
-- apply air drag
|
|
||||||
if self.falling_state or (self.slippery_state and not self.waterflow_state) then
|
|
||||||
self.accel.x = self.accel.x - vel.x * air_drag
|
|
||||||
self.accel.z = self.accel.z - vel.z * air_drag
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
|
|
||||||
step_gravity = function(self)
|
step_gravity = function(self)
|
||||||
|
|
||||||
if self.falling_state then
|
if self.falling_state then
|
||||||
@ -473,12 +448,10 @@ core.register_entity(":__builtin:item", {
|
|||||||
|
|
||||||
if self.slippery_state then
|
if self.slippery_state then
|
||||||
|
|
||||||
local node = self.node_under
|
|
||||||
|
|
||||||
-- apply slip factor (tiny friction that depends on the actual block type)
|
-- apply slip factor (tiny friction that depends on the actual block type)
|
||||||
if (abs(vel.x) > 0.2 or abs(vel.z) > 0.2) then
|
if abs(vel.x) > 0.2 or abs(vel.z) > 0.2 then
|
||||||
|
|
||||||
local slippery = core.get_item_group(node.name, "slippery")
|
local slippery = core.get_item_group(self.node_under.name, "slippery")
|
||||||
local slip_factor = 4.0 / (slippery + 4)
|
local slip_factor = 4.0 / (slippery + 4)
|
||||||
|
|
||||||
self.accel.x = self.accel.x - vel.x * slip_factor
|
self.accel.x = self.accel.x - vel.x * slip_factor
|
||||||
@ -618,12 +591,14 @@ core.register_entity(":__builtin:item", {
|
|||||||
local left = inv:add_item("main", self.itemstring)
|
local left = inv:add_item("main", self.itemstring)
|
||||||
|
|
||||||
if left and not left:is_empty() then
|
if left and not left:is_empty() then
|
||||||
|
|
||||||
self:set_item(left)
|
self:set_item(left)
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self.itemstring = ""
|
self.itemstring = ""
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
end,
|
end
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user