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
,
56 -- MC Wiki: takes 1 damage every half second while in water
63 attack_type
= "dogshoot",
64 arrow
= "mobs_mc:blaze_fireball",
75 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
)
78 mobs
:register_arrow("mobs_mc:blaze_fireball", {
80 visual_size
= {x
= 0.3, y
= 0.3},
81 textures
= {"mcl_fire_fire_charge.png"},
84 -- Direct hit, no fire... just plenty of pain
85 hit_player
= function(self
, player
)
86 player
:punch(self
.object
, 1.0, {
87 full_punch_interval
= 1.0,
88 damage_groups
= {fleshy
= 5},
92 hit_mob
= function(self
, player
)
93 player
:punch(self
.object
, 1.0, {
94 full_punch_interval
= 1.0,
95 damage_groups
= {fleshy
= 5},
99 -- Node hit, make fire
100 hit_node
= function(self
, pos
, node
)
101 if node
.name
== "air" then
102 minetest
.set_node(pos_above
, {name
=mobs_mc
.items
.fire
})
104 local v
= self
.object
:getvelocity()
105 v
= vector
.normalize(v
)
106 local crashpos
= vector
.subtract(pos
, v
)
107 local crashnode
= minetest
.get_node(crashpos
)
108 -- Set fire if node is air, or a replacable flammable node (e.g. a plant)
109 if crashnode
.name
== "air" or
110 (minetest
.registered_nodes
[crashnode
.name
].buildable_to
and minetest
.get_item_group(crashnode
.name
, "flammable") >= 1) then
111 minetest
.set_node(crashpos
, {name
=mobs_mc
.items
.fire
})
118 mobs
:register_egg("mobs_mc:blaze", S("Blaze"), "mobs_mc_spawn_icon_blaze.png", 0)
125 if minetest
.settings
:get_bool("log_mods") then
126 minetest
.log("action", "MC Blaze loaded")