1 --Quick definition of tools
2 local tool = {"shovel","axe","pick"}
3 local material = {"wood","stone","iron","gold","diamond"}
5 for _,material in pairs(material) do
6 for id,tool in pairs(tool) do
8 --print(id,tool,level,material)
13 if tool == "shovel" then
14 if material == "wood" then
16 dirt = {times={[1]=0.4,[2]=1.5,[3]=3,[4]=6,[5]=12}, uses=59, maxlevel=1},
17 snow = {times={[1]=0.4,[2]=1.5,[3]=3,[4]=6,[5]=12}, uses=59, maxlevel=1},
18 grass = {times={[1]=0.45,[2]=1.5,[3]=3,[4]=6,[5]=12}, uses=59, maxlevel=1},
19 sand = {times={[1]=0.4,[2]=1.5,[3]=3,[4]=6,[5]=12}, uses=59, maxlevel=1},
23 elseif material == "stone" then
25 dirt = {times={[1]=0.2,[2]=0.2,[3]=1.5,[4]=3,[5]=6}, uses=131, maxlevel=1},
26 snow = {times={[1]=0.2,[2]=0.2,[3]=1.5,[4]=3,[5]=6}, uses=131, maxlevel=1},
27 grass = {times={[1]=0.25,[2]=0.25,[3]=1.5,[4]=3,[5]=6}, uses=131, maxlevel=1},
28 sand = {times={[1]=0.2,[2]=0.2,[3]=1.5,[4]=3,[5]=6}, uses=131, maxlevel=1},
32 elseif material == "iron" then
34 dirt = {times={[1]=0.15,[2]=0.15,[3]=0.15,[4]=1.5,[5]=3}, uses=250, maxlevel=1},
35 snow = {times={[1]=0.15,[2]=0.15,[3]=0.15,[4]=1.5,[5]=3}, uses=250, maxlevel=1},
36 grass = {times={[1]=0.15,[2]=0.15,[3]=0.15,[4]=1.5,[5]=3}, uses=250, maxlevel=1},
37 sand = {times={[1]=0.15,[2]=0.15,[3]=0.15,[4]=1.5,[5]=3}, uses=250, maxlevel=1},
41 elseif material == "gold" then
43 dirt = {times={[1]=0.1,[2]=0.1,[3]=0.1,[4]=0.1,[5]=1.5}, uses=32, maxlevel=1},
44 snow = {times={[1]=0.1,[2]=0.1,[3]=0.1,[4]=0.1,[5]=1.5}, uses=32, maxlevel=1},
45 grass = {times={[1]=0.1,[2]=0.1,[3]=0.1,[4]=0.1,[5]=1.5}, uses=32, maxlevel=1},
46 sand = {times={[1]=0.1,[2]=0.1,[3]=0.1,[4]=0.1,[5]=1.5}, uses=32, maxlevel=1},
50 elseif material == "diamond" then
52 dirt = {times={[1]= 0.1,[2]=0.1,[3]=0.1,[4]=0.1,[5]=1.5}, uses=1561, maxlevel=1},
53 snow = {times={[1]= 0.1,[2]=0.1,[3]=0.1,[4]=0.1,[5]=1.5}, uses=1561, maxlevel=1},
54 grass = {times={[1]= 0.15,[2]=0.15,[3]=0.15,[4]=0.15,[5]=1.5}, uses=1561, maxlevel=1},
55 sand = {times={[1]= 0.1,[2]=0.1,[3]=0.1,[4]=0.1,[5]=1.5}, uses=1561, maxlevel=1},
63 if material == "wood" then
65 wood = {times={[1]=1.5,[2]=3,[3]=6,[4]=9,[5]=12}, uses=59, maxlevel=1}
69 elseif material == "stone" then
71 wood = {times={[1]=0.75,[2]=0.75,[3]=3,[4]=6,[5]=9}, uses=131, maxlevel=1}
75 elseif material == "iron" then
77 wood = {times={[1]=0.5,[2]=0.5,[3]=0.5,[4]=3,[5]=6}, uses=250, maxlevel=1}
81 elseif material == "gold" then
83 wood = {times={[1]=0.25,[2]=0.25,[3]=0.25,[4]=0.25,[5]=3}, uses=32, maxlevel=1}
87 elseif material == "diamond" then
89 wood = {times={[1]= 0.4,[2]=0.4,[3]=0.4,[4]=0.4,[5]=3}, uses=1561, maxlevel=1}
96 if tool == "pick" then
97 if material == "wood" then
100 --1 stone, 1 coal, 2 iron, 3 gold, 4 diamond, 5 obsidian
101 stone = {times={[1]=1.15,[2]=16,[3]=32,[4]=64,[5]=128}, uses=59, maxlevel=1},
102 glass = {times={[1]=0.575,[2]=16,[3]=32,[4]=64,[5]=128}, uses=59, maxlevel=1},
103 netherrack = {times={[1]=0.2875,[2]=16,[3]=32,[4]=64,[5]=128}, uses=59, maxlevel=1},
107 elseif material == "stone" then
109 stone = {times={[1]=0.6,[2]=0.6,[3]=32,[4]=64,[5]=128}, uses=131, maxlevel=1},
110 glass = {times={[1]=0.3,[2]=0.3,[3]=32,[4]=64,[5]=128}, uses=131, maxlevel=1},
111 netherrack = {times={[1]=0.15,[2]=0.15,[3]=32,[4]=64,[5]=128}, uses=131, maxlevel=1},
115 elseif material == "iron" then
117 stone = {times={[1]=0.4,[2]=0.4,[3]=0.4,[4]=32,[5]=64}, uses=250, maxlevel=1},
118 glass = {times={[1]=0.2,[2]=0.2,[3]=0.2,[4]=32,[5]=64}, uses=250, maxlevel=1},
119 netherrack = {times={[1]=0.1,[2]=0.1,[3]=0.1,[4]=32,[5]=64}, uses=250, maxlevel=1},
123 elseif material == "gold" then
125 stone = {times={[1]=0.2,[2]=0.2,[3]=0.2,[4]=0.2,[5]=32}, uses=32, maxlevel=1},
126 glass = {times={[1]=0.1,[2]=0.1,[3]=0.1,[4]=0.1,[5]=32}, uses=32, maxlevel=1},
127 netherrack = {times={[1]=0.05,[2]=0.05,[3]=0.05,[4]=0.05,[5]=32}, uses=32, maxlevel=1},
131 elseif material == "diamond" then
133 stone = {times={[1]= 0.3,[2]=0.3,[3]=0.3,[4]=0.3,[5]=4}, uses=1561, maxlevel=1},
134 glass = {times={[1]= 0.15,[2]=0.15,[3]=0.15,[4]=0.15,[5]=4}, uses=1561, maxlevel=1},
135 netherrack = {times={[1]= 0.075,[2]=0.075,[3]=0.075,[4]=0.075,[5]=4}, uses=1561, maxlevel=1},
141 minetest.register_tool("main:"..material..tool, {
142 description = material:gsub("^%l", string.upper).." "..tool:gsub("^%l", string.upper),
143 inventory_image = material..tool..".png",
144 tool_capabilities = {
145 --full_punch_interval = 1.2,
147 groupcaps=groupcaps2,
148 damage_groups = {damage=damage},
150 sound = {breaks = {name="tool_break",gain=0.4}}, -- change this
151 groups = {flammable = 2, tool=1 },
153 --torch rightclick - hacked in since api doesn't call on_place correctly
154 on_place = function(itemstack, placer, pointed_thing)
155 local inv = placer:get_inventory()
156 local torch = inv:contains_item("main", "torch:torch")
157 local is_air = minetest.get_node(pointed_thing.above).name == "air"
158 local dir = vector.subtract(pointed_thing.under, pointed_thing.above)
160 local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
161 local walkable = noddef.walkable
162 local sneak = placer:get_player_control().sneak
164 if not sneak and noddef.on_rightclick then
165 minetest.item_place(itemstack, placer, pointed_thing)
169 if torch and is_air and walkable then
171 local param2 = minetest.dir_to_wallmounted(dir)
172 minetest.set_node(pointed_thing.above, {name="torch:wall",param2=param2})
173 minetest.sound_play("wood", {pos=pointed_thing.above, gain = 1.0})
174 elseif diff == -1 then
175 minetest.place_node(pointed_thing.above,{name="torch:floor"})
178 if diff == 0 or diff == -1 then
179 inv:remove_item("main", "torch:torch")
189 if material == "wood" then
192 elseif material == "stone" then
195 elseif material == "iron" then
198 elseif material == "gold" then
201 elseif material == "diamond" then
208 minetest.register_tool("main:"..material.."sword", {
209 description = material:gsub("^%l", string.upper).." Sword",
210 inventory_image = material.."sword.png",
211 tool_capabilities = {
212 --full_punch_interval = 1.2,
214 groupcaps={leaves = {times={[4]=0.7,[3]=0.7,[2]=0.7,[1]=0.7}, uses=10, maxlevel=1},},
215 damage_groups = {damage = damage},
218 sound = {breaks = {name="tool_break",gain=0.4}}, -- change this
219 groups = {damage=damage }
224 minetest.register_tool("main:shears", {
225 description = "Shears",
226 inventory_image = "shears.png",
227 tool_capabilities = {
229 leaves = {times={[1]= 0.05,[2]=0.05,[3]=0.05,[4]=0.05,[5]=0.05}, uses=500, maxlevel=1},
232 sound = {breaks = "default_tool_breaks"}, -- change this
233 groups = {shears = 1}