item_texture = core.registered_items[itemname].inventory_image
item_type = core.registered_items[itemname].type
end
- prop = {
+ local prop = {
is_visible = true,
textures = {node.name},
}
on_activate = function(self, staticdata)
self.object:set_armor_groups({immortal=1})
- --self.object:setacceleration({x=0, y=-10, z=0})
self:set_node({name=staticdata})
end,
-- it's drops
if n2.name ~= "air" and (not core.registered_nodes[n2.name] or
core.registered_nodes[n2.name].liquidtype == "none") then
- local drops = core.get_node_drops(n2.name, "")
core.remove_node(np)
- -- Add dropped items
- local _, dropped_item
- for _, dropped_item in ipairs(drops) do
- core.add_item(np, dropped_item)
+ if core.registered_nodes[n2.name].buildable_to == false then
+ -- Add dropped items
+ local drops = core.get_node_drops(n2.name, "")
+ local _, dropped_item
+ for _, dropped_item in ipairs(drops) do
+ core.add_item(np, dropped_item)
+ end
end
-- Run script hook
local _, callback
core.add_node(np, self.node)
self.object:remove()
nodeupdate(np)
- else
- -- Do nothing
+ return
+ end
+ local vel = self.object:getvelocity()
+ if vector.equals(vel, {x=0,y=0,z=0}) then
+ local npos = self.object:getpos()
+ self.object:setpos(vector.round(npos))
end
end
})
function spawn_falling_node(p, node)
- obj = core.add_entity(p, "__builtin:falling_node")
+ local obj = core.add_entity(p, "__builtin:falling_node")
obj:get_luaentity():set_node(node)
end
--
function nodeupdate_single(p, delay)
- n = core.get_node(p)
+ local n = core.get_node(p)
if core.get_item_group(n.name, "falling_node") ~= 0 then
- p_bottom = {x=p.x, y=p.y-1, z=p.z}
- n_bottom = core.get_node(p_bottom)
+ local p_bottom = {x=p.x, y=p.y-1, z=p.z}
+ local n_bottom = core.get_node(p_bottom)
-- Note: walkable is in the node definition, not in item groups
if core.registered_nodes[n_bottom.name] and
(core.get_item_group(n.name, "float") == 0 or
core.registered_nodes[n_bottom.name].liquidtype == "none") and
(n.name ~= n_bottom.name or (core.registered_nodes[n_bottom.name].leveled and
core.get_node_level(p_bottom) < core.get_node_max_level(p_bottom))) and
- (not core.registered_nodes[n_bottom.name].walkable or
+ (not core.registered_nodes[n_bottom.name].walkable or
core.registered_nodes[n_bottom.name].buildable_to) then
if delay then
core.after(0.1, nodeupdate_single, {x=p.x, y=p.y, z=p.z}, false)
else
- n.level = core.env:get_node_level(p)
+ n.level = core.get_node_level(p)
core.remove_node(p)
spawn_falling_node(p, n)
nodeupdate(p)
end
end
end
-
+
if core.get_item_group(n.name, "attached_node") ~= 0 then
if not check_attached_node(p, n) then
drop_attached_node(p)
p.x = math.floor(p.x+0.5)
p.y = math.floor(p.y+0.5)
p.z = math.floor(p.z+0.5)
-
+
for x = -1,1 do
for y = -1,1 do
for z = -1,1 do