mirror of
https://github.com/ElCeejo/creatura.git
synced 2025-03-21 15:21:24 +00:00
Fix crash in is_pos_moveable()
This commit is contained in:
parent
4516bac65f
commit
ec92591710
1 changed files with 40 additions and 40 deletions
80
api.lua
80
api.lua
|
@ -123,6 +123,45 @@ end
|
||||||
|
|
||||||
-- Sensors --
|
-- Sensors --
|
||||||
|
|
||||||
|
local default_node_def = {walkable = true} -- both ignore and unknown nodes are walkable
|
||||||
|
|
||||||
|
function minetest.get_node_height_from_def(name)
|
||||||
|
local def = minetest.registered_nodes[name]
|
||||||
|
if not def then return 0.5 end
|
||||||
|
if def.walkable then
|
||||||
|
if def.drawtype == "nodebox" then
|
||||||
|
if def.node_box
|
||||||
|
and def.node_box.type == "fixed" then
|
||||||
|
if type(def.node_box.fixed[1]) == "number" then
|
||||||
|
return 0.5 + def.node_box.fixed[5]
|
||||||
|
elseif type(def.node_box.fixed[1]) == "table" then
|
||||||
|
return 0.5 + def.node_box.fixed[1][5]
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function creatura.get_node_def(node) -- Node can be name or pos
|
||||||
|
if type(node) == "table" then
|
||||||
|
node = minetest.get_node(node).name
|
||||||
|
end
|
||||||
|
local def = minetest.registered_nodes[node] or default_node_def
|
||||||
|
if def.walkable
|
||||||
|
and minetest.get_node_height_from_def(node) < 0.26 then
|
||||||
|
def.walkable = false -- workaround for nodes like snow
|
||||||
|
end
|
||||||
|
return def
|
||||||
|
end
|
||||||
|
|
||||||
function creatura.is_pos_moveable(pos, width, height)
|
function creatura.is_pos_moveable(pos, width, height)
|
||||||
local pos1 = {
|
local pos1 = {
|
||||||
x = pos.x - (width + 0.2),
|
x = pos.x - (width + 0.2),
|
||||||
|
@ -142,7 +181,7 @@ function creatura.is_pos_moveable(pos, width, height)
|
||||||
for pointed_thing in ray do
|
for pointed_thing in ray do
|
||||||
if pointed_thing.type == "node" then
|
if pointed_thing.type == "node" then
|
||||||
local name = minetest.get_node(pointed_thing.under).name
|
local name = minetest.get_node(pointed_thing.under).name
|
||||||
if minetest.registered_nodes[name].walkable then
|
if creatura.get_node_def(name).walkable then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -381,45 +420,6 @@ function creatura.get_nearby_entities(self, name)
|
||||||
return nearby
|
return nearby
|
||||||
end
|
end
|
||||||
|
|
||||||
local default_node_def = {walkable = true} -- both ignore and unknown nodes are walkable
|
|
||||||
|
|
||||||
function minetest.get_node_height_from_def(name)
|
|
||||||
local def = minetest.registered_nodes[name]
|
|
||||||
if not def then return 0.5 end
|
|
||||||
if def.walkable then
|
|
||||||
if def.drawtype == "nodebox" then
|
|
||||||
if def.node_box
|
|
||||||
and def.node_box.type == "fixed" then
|
|
||||||
if type(def.node_box.fixed[1]) == "number" then
|
|
||||||
return 0.5 + def.node_box.fixed[5]
|
|
||||||
elseif type(def.node_box.fixed[1]) == "table" then
|
|
||||||
return 0.5 + def.node_box.fixed[1][5]
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function creatura.get_node_def(node) -- Node can be name or pos
|
|
||||||
if type(node) == "table" then
|
|
||||||
node = minetest.get_node(node).name
|
|
||||||
end
|
|
||||||
local def = minetest.registered_nodes[node] or default_node_def
|
|
||||||
if def.walkable
|
|
||||||
and minetest.get_node_height_from_def(node) < 0.26 then
|
|
||||||
def.walkable = false -- workaround for nodes like snow
|
|
||||||
end
|
|
||||||
return def
|
|
||||||
end
|
|
||||||
|
|
||||||
--------------------
|
--------------------
|
||||||
-- Global Mob API --
|
-- Global Mob API --
|
||||||
--------------------
|
--------------------
|
||||||
|
|
Loading…
Add table
Reference in a new issue