]> git.lizzy.rs Git - mcl_enchanting.git/blob - init.lua
Add crafting recipe
[mcl_enchanting.git] / init.lua
1 local default_tool_enchantments = {"efficiency", "unbreaking", "silk_touch"}
2 local default_tool_materials = {"wood", "stone", "iron", "gold", "diamond"}
3 local default_tool = {enchantments = default_tool_enchantments, materials = default_tool_materials}
4 local default_armor_enchantments = {"unbreaking"}--, "protection"}
5 local default_armor_materials = {"leather", "chain", "iron", "gold", "diamond"}
6 local default_armor = {enchantments = default_armor_enchantments, materials = default_armor_materials}
7
8 mcl_enchanting = {
9         lapis_itemstring = "mcl_dye:blue",
10         max_cost = 24,
11         level_rarity_grade = 3,
12         enchantment_name_list = {},
13         all_tools = {},
14         book_offset = vector.new(0, 0.75, 0),
15         enchantments = {
16                 silk_touch = {
17                         name = "Silk Touch",
18                         max_level = 1,
19                         create_itemdef = function(def)
20                                 def.tool_capabilities.max_drop_level = -5000
21                                 def._silk_touch = true
22                         end
23                 },
24                 sharpness = {
25                         name = "Sharpness",
26                         max_level = 5,
27                         create_itemdef = function(def, level)
28                                 def.tool_capabilities.damage_groups.fleshy = def.tool_capabilities.damage_groups.fleshy + (level + 1) / 2
29                         end,
30                 },
31                 efficiency = {
32                         name = "Efficiency",
33                         max_level = 5,
34                         create_itemdef = function(def, level)
35                                 local groupcaps = def.tool_capabilities.groupcaps
36                                 for _, groupcap in pairs(groupcaps) do
37                                         for i, t in pairs(groupcap.times) do
38                                                 local m = 1 / t
39                                                 m = m + math.pow(level, 2) + 1
40                                                 groupcap.times[i] = 1 / m
41                                         end
42                                 end
43                         end,
44                 },
45                 unbreaking = {
46                         name = "Unbreaking",
47                         max_level = 3,
48                         create_itemdef = function(def, level)
49                                 local toolcaps = def.tool_capabilities
50                                 local armor_uses = def.groups.mcl_armor_uses
51                                 local factor = 0.5
52                                 if toolcaps then
53                                         local groupcaps = toolcaps.groupcaps
54                                         for _, groupcap in pairs(groupcaps) do
55                                                 groupcap.uses = math.floor(groupcap.uses * (1 + level))
56                                         end
57                                         def.tool_capabilities.punch_attack_uses = math.floor(def.tool_capabilities.punch_attack_uses * (1 + level))
58                                 elseif armor_uses then
59                                         def.groups.mcl_armor_uses = math.floor(armor_uses / (0.6 + (0.4 / (level + 1))))
60                                 end
61                         end
62                 },
63                 --[[
64                 protection = {
65                         name = "Protection",
66                         max_level = 4,
67                         create_itemdef = function(def, level)
68                                 local groups = def.groups
69                                 groups.mcl_armor_points = groups.mcl_armor_points + (0.04 * level)
70                         end,
71                 },
72                 --]]
73         },
74         tools = {
75                 ["mcl_tools:pick"] = default_tool,
76                 ["mcl_tools:axe"] = {materials = default_tool_materials, enchantments = {"efficiency", "unbreaking", "sharpness", "silk_touch"}},
77                 ["mcl_tools:shovel"] = default_tool,
78                 ["mcl_tools:sword"] = {materials = default_tool_materials, enchantments = {"unbreaking", "sharpness"}},
79                 ["mcl_tools:hoe"] = {materials = default_tool_materials, enchantments = {"unbreaking", "silk_touch"}},
80                 ["mcl_armor:helmet"] = default_armor,
81                 ["mcl_armor:chestplate"] = default_armor,
82                 ["mcl_armor:leggings"] = default_armor,
83                 ["mcl_armor:boots"] = default_armor,
84         }
85 }
86
87 for k in pairs(mcl_enchanting.enchantments) do
88         table.insert(mcl_enchanting.enchantment_name_list, k)
89 end
90
91 local modpath = minetest.get_modpath("mcl_enchanting")
92
93 for _, f in pairs({"engine", "book", "table", "bookshelf_particles", "silk_touch"}) do
94         dofile(modpath .. "/" .. f .. ".lua")
95 end