minetest.register_entity("neoblocks:fireball", {
visual = "sprite",
visual_size = {x=1, y=1},
--textures = {{name="mobs_fireball.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.5}}}, FIXME
textures = {"mobs_fireball.png"},
velocity = 5,
hit_player = function(player, self)
local s = player:getpos()
local p = player:get_look_dir()
local vec = {x=s.x-p.x, y=s.y-p.y, z=s.z-p.z}
player:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups = {fleshy=4},
}, vec)
local pos = player:getpos()
for dx=-1,1 do
for dy=-1,1 do
for dz=-1,1 do
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.env:get_node(pos).name
if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <= 30 then
minetest.env:set_node(p, {name="fire:basic_flame"})
else
minetest.env:remove_node(p)
end
end
end
end
end,
hit_node = function(self, pos, node)
for dx=-1,1 do
for dy=-2,1 do
for dz=-1,1 do
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.env:get_node(pos).name
if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <= 30 then
minetest.env:set_node(p, {name="fire:basic_flame"})
else
minetest.env:remove_node(p)
end
end
end
end
end
})
minetest.register_craftitem("neoblocks:fireball", {
description = "Fireball",
inventory_image = "mobs_fireball.png",
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then
minetest.env:add_entity(pointed_thing.above, "neoblocks:fireball")
itemstack:take_item()
end
return itemstack
end,
})
minetest.register_node("neoblocks:fireballttt", {
tile_images = {"mobs_fireball.png"},
groups={snappy=2,choppy=2,oddly_breakable_by_hand=2},
})
minetest.register_craft({
output = '"neoblocks:fireball" 10',
recipe = {
{'', 'default:torch', ''},
{'', 'default:mese_crystal', ''},
{'', '', ''},
}
})