2 -- My work is under the LGPL terms
3 -- Model and mobs_blaze.png see https://github.com/22i/minecraft-voxel-blender-models
4 -- blaze.lua partial copy of mobs_mc/ghast.lua
7 local MP
= minetest
.get_modpath(minetest
.get_current_modname())
8 local S
, NS
= dofile(MP
.."/intllib.lua")
10 --dofile(minetest.get_modpath("mobs").."/api.lua")
12 --################### BLAZE
16 mobs
:register_mob("mobs_mc:blaze", {
20 collisionbox
= {-0.3, -0.01, -0.3, 0.3, 1.79, 0.3},
23 mesh
= "mobs_mc_blaze.b3d",
25 {"mobs_mc_blaze.png"},
27 visual_size
= {x
=3, y
=3},
29 random = "mobs_mc_blaze_breath",
30 death
= "mobs_mc_blaze_died",
31 damage
= "mobs_mc_blaze_hurt",
40 {name
= mobs_mc
.items
.blaze_rod
,
55 -- MC Wiki: takes 1 damage every half second while in water
62 attack_type
= "dogshoot",
63 arrow
= "mobs_mc:blaze_fireball",
74 mobs
:spawn_specific("mobs_mc:blaze", mobs_mc
.spawn
.nether_fortress
, {"air"}, 0, minetest
.LIGHT_MAX
+1, 30, 5000, 3, mobs_mc
.spawn_height
.nether_min
, mobs_mc
.spawn_height
.nether_max
)
77 mobs
:register_arrow("mobs_mc:blaze_fireball", {
79 visual_size
= {x
= 0.3, y
= 0.3},
80 textures
= {"mcl_fire_fire_charge.png"},
83 -- Direct hit, no fire... just plenty of pain
84 hit_player
= function(self
, player
)
85 player
:punch(self
.object
, 1.0, {
86 full_punch_interval
= 1.0,
87 damage_groups
= {fleshy
= 5},
91 hit_mob
= function(self
, player
)
92 player
:punch(self
.object
, 1.0, {
93 full_punch_interval
= 1.0,
94 damage_groups
= {fleshy
= 5},
98 -- Node hit, make fire
99 hit_node
= function(self
, pos
, node
)
100 if node
.name
== "air" then
101 minetest
.set_node(pos_above
, {name
=mobs_mc
.items
.fire
})
103 local v
= self
.object
:getvelocity()
104 v
= vector
.normalize(v
)
105 local crashpos
= vector
.subtract(pos
, v
)
106 local crashnode
= minetest
.get_node(crashpos
)
107 -- Set fire if node is air, or a replacable flammable node (e.g. a plant)
108 if crashnode
.name
== "air" or
109 (minetest
.registered_nodes
[crashnode
.name
].buildable_to
and minetest
.get_item_group(crashnode
.name
, "flammable") >= 1) then
110 minetest
.set_node(crashpos
, {name
=mobs_mc
.items
.fire
})
117 mobs
:register_egg("mobs_mc:blaze", S("Blaze"), "mobs_mc_spawn_icon_blaze.png", 0)
124 if minetest
.settings
:get_bool("log_mods") then
125 minetest
.log("action", "MC Blaze loaded")