2 minetest
.register_craftitem("mcl_fire:fire_charge", {
3 description
= "Fire Charge",
4 _doc_items_longdesc
= "Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.",
5 _doc_items_usagehelp
= "Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.",
6 inventory_image
= "mcl_fire_fire_charge.png",
7 liquids_pointable
= false,
9 on_place
= function(itemstack
, user
, pointed_thing
)
10 -- Use pointed node's on_rightclick function first, if present
11 local node
= minetest
.get_node(pointed_thing
.under
)
12 if user
and not user
:get_player_control().sneak
then
13 if minetest
.registered_nodes
[node
.name
] and minetest
.registered_nodes
[node
.name
].on_rightclick
then
14 return minetest
.registered_nodes
[node
.name
].on_rightclick(pointed_thing
.under
, node
, user
, itemstack
) or itemstack
19 if pointed_thing
.type == "node" then
20 local nodedef
= minetest
.registered_nodes
[node
.name
]
21 if nodedef
and nodedef
._on_ignite
then
22 local overwrite
= nodedef
._on_ignite(user
, pointed_thing
)
24 mcl_fire
.set_fire(pointed_thing
)
27 mcl_fire
.set_fire(pointed_thing
)
29 if not minetest
.settings
:get_bool("creative_mode") then
35 _on_dispense
= function(stack
, pos
, droppos
, dropnode
, dropdir
)
37 local shootpos
= vector
.add(pos
, vector
.multiply(dropdir
, 0.51))
38 local fireball
= minetest
.add_entity(shootpos
, "mobs_mc:blaze_fireball")
39 local ent
= fireball
:get_luaentity()
40 ent
._shot_from_dispenser
= true
41 local v
= ent
.velocity
or 1
42 fireball
:setvelocity(vector
.multiply(dropdir
, v
))
48 minetest
.register_craft({
50 output
= 'mcl_fire:fire_charge 3',
51 recipe
= { 'mcl_mobitems:blaze_powder', 'group:coal', 'mcl_mobitems:gunpowder' },