Version 0.41.3
[MineClone/MineClone2/MineClone2-Fixes.git] / mods / ITEMS / mcl_fire / fire_charge.lua
blob144d1959073706f26d55c929c57d883dfec719f8
1 -- Fire Charge
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,
8 stack_max = 64,
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
15 end
16 end
18 -- Ignite/light fire
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)
23 if not overwrite then
24 mcl_fire.set_fire(pointed_thing)
25 end
26 else
27 mcl_fire.set_fire(pointed_thing)
28 end
29 if not minetest.settings:get_bool("creative_mode") then
30 itemstack:take_item()
31 end
32 end
33 return itemstack
34 end,
35 _on_dispense = function(stack, pos, droppos, dropnode, dropdir)
36 -- Throw fire charge
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))
43 ent.switch = 1
44 stack:take_item()
45 end,
48 minetest.register_craft({
49 type = 'shapeless',
50 output = 'mcl_fire:fire_charge 3',
51 recipe = { 'mcl_mobitems:blaze_powder', 'group:coal', 'mcl_mobitems:gunpowder' },