1 local S
= minetest
.get_translator("mcl_fire")
4 minetest
.register_craftitem("mcl_fire:fire_charge", {
5 description
= S("Fire Charge"),
6 _tt_help
= S("Dispenser projectile").."\n"..S("Starts fires and ignites blocks"),
7 _doc_items_longdesc
= S("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."),
8 _doc_items_usagehelp
= S("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."),
9 inventory_image
= "mcl_fire_fire_charge.png",
10 liquids_pointable
= false,
12 on_place
= function(itemstack
, user
, pointed_thing
)
13 -- Use pointed node's on_rightclick function first, if present
14 local node
= minetest
.get_node(pointed_thing
.under
)
15 if user
and not user
:get_player_control().sneak
then
16 if minetest
.registered_nodes
[node
.name
] and minetest
.registered_nodes
[node
.name
].on_rightclick
then
17 return minetest
.registered_nodes
[node
.name
].on_rightclick(pointed_thing
.under
, node
, user
, itemstack
) or itemstack
22 local protname
= user
:get_player_name()
23 if minetest
.is_protected(pointed_thing
.under
, protname
) then
24 minetest
.record_protection_violation(pointed_thing
.under
, protname
)
29 if pointed_thing
.type == "node" then
30 local nodedef
= minetest
.registered_nodes
[node
.name
]
31 if nodedef
and nodedef
._on_ignite
then
32 local overwrite
= nodedef
._on_ignite(user
, pointed_thing
)
34 mcl_fire
.set_fire(pointed_thing
, user
, false)
37 mcl_fire
.set_fire(pointed_thing
, user
, false)
39 if not minetest
.settings
:get_bool("creative_mode") then
45 _on_dispense
= function(stack
, pos
, droppos
, dropnode
, dropdir
)
47 local shootpos
= vector
.add(pos
, vector
.multiply(dropdir
, 0.51))
48 local fireball
= minetest
.add_entity(shootpos
, "mobs_mc:blaze_fireball")
49 local ent
= fireball
:get_luaentity()
50 ent
._shot_from_dispenser
= true
51 local v
= ent
.velocity
or 1
52 fireball
:set_velocity(vector
.multiply(dropdir
, v
))
58 minetest
.register_craft({
60 output
= 'mcl_fire:fire_charge 3',
61 recipe
= { 'mcl_mobitems:blaze_powder', 'group:coal', 'mcl_mobitems:gunpowder' },