Merge pull request #3 from Athemis/master
[MineClone.git] / mods / throwing / init.lua
blobcb81ad65d452f111497f0915a234b4dd0131ca67
2 dofile(minetest.get_modpath("throwing").."/arrow.lua")
4 arrows = {
5 {"throwing:arrow", "throwing:arrow_entity"},
8 local throwing_shoot_arrow = function(itemstack, player)
9 for _,arrow in ipairs(arrows) do
10 if player:get_inventory():get_stack("main", player:get_wield_index()+1):get_name() == arrow[1] then
11 player:get_inventory():remove_item("main", arrow[1])
12 local playerpos = player:getpos()
13 local obj = minetest.env:add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow[2])
14 local dir = player:get_look_dir()
15 obj:setvelocity({x=dir.x*19, y=dir.y*19, z=dir.z*19})
16 obj:setacceleration({x=dir.x*-3, y=-10, z=dir.z*-3})
17 obj:setyaw(player:get_look_yaw()+math.pi)
18 minetest.sound_play("throwing_sound", {pos=playerpos})
19 if obj:get_luaentity().player == "" then
20 obj:get_luaentity().player = player
21 end
22 obj:get_luaentity().node = player:get_inventory():get_stack("main", 1):get_name()
23 return true
24 end
25 end
26 return false
27 end
29 minetest.register_tool("throwing:bow", {
30 description = "Bow",
31 inventory_image = "throwing_bow.png",
32 stack_max = 1,
33 on_place = function(itemstack, placer, pointed_thing)
34 wear = itemstack:get_wear()
35 itemstack:replace("throwing:bow_0")
36 itemstack:add_wear(wear)
37 return itemstack
38 end,
39 on_use = function(itemstack, user, pointed_thing)
40 wear = itemstack:get_wear()
41 itemstack:add_wear(wear)
42 if throwing_shoot_arrow(itemstack, user, pointed_thing) then
43 if not minetest.setting_getbool("creative_mode") then
44 itemstack:add_wear(65535/385)
45 end
46 end
47 return itemstack
48 end,
51 minetest.register_tool("throwing:bow_0", {
52 description = "Bow",
53 inventory_image = "throwing_bow_0.png",
54 stack_max = 1,
55 groups = {not_in_creative_inventory=1},
56 on_place = function(itemstack, placer, pointed_thing)
57 wear = itemstack:get_wear()
58 itemstack:replace("throwing:bow_1")
59 itemstack:add_wear(wear)
60 return itemstack
61 end,
62 on_use = function(itemstack, user, pointed_thing)
63 wear = itemstack:get_wear()
64 itemstack:add_wear(wear)
65 if throwing_shoot_arrow(itemstack, user, pointed_thing) then
66 if not minetest.setting_getbool("creative_mode") then
67 itemstack:add_wear(65535/385)
68 end
69 end
70 return itemstack
71 end,
74 minetest.register_tool("throwing:bow_1", {
75 description = "Bow",
76 inventory_image = "throwing_bow_1.png",
77 stack_max = 1,
78 groups = {not_in_creative_inventory=1},
79 on_place = function(itemstack, placer, pointed_thing)
80 wear = itemstack:get_wear()
81 itemstack:replace("throwing:bow_2")
82 itemstack:add_wear(wear)
83 return itemstack
84 end,
85 on_use = function(itemstack, user, pointed_thing)
86 wear = itemstack:get_wear()
87 itemstack:add_wear(wear)
88 if throwing_shoot_arrow(itemstack, user, pointed_thing) then
89 if not minetest.setting_getbool("creative_mode") then
90 itemstack:add_wear(65535/385)
91 end
92 end
93 return itemstack
94 end,
97 minetest.register_tool("throwing:bow_2", {
98 description = "Bow",
99 inventory_image = "throwing_bow_2.png",
100 stack_max = 1,
101 groups = {not_in_creative_inventory=1},
102 on_use = function(itemstack, user, pointed_thing)
103 wear = itemstack:get_wear()
104 itemstack:replace("throwing:bow")
105 itemstack:add_wear(wear)
106 if throwing_shoot_arrow(itemstack, user, pointed_thing) then
107 if not minetest.setting_getbool("creative_mode") then
108 itemstack:add_wear(65535/385)
111 return itemstack
112 end,
115 minetest.register_craft({
116 output = 'throwing:bow',
117 recipe = {
118 {'', 'group:wood', 'default:string'},
119 {'group:wood', '', 'default:string'},
120 {'', 'group:wood', 'default:string'},