Creative: Re-implement constant hand dig times, add comment
[oweals/minetest_game.git] / mods / creative / init.lua
1 dofile(minetest.get_modpath("creative") .. "/inventory.lua")
2
3 if minetest.setting_getbool("creative_mode") then
4         -- Dig time is modified according to difference (leveldiff) between tool
5         -- 'maxlevel' and node 'level'. Digtime is divided by the larger of
6         -- leveldiff and 1.
7         -- To speed up digging in creative, hand 'maxlevel' and 'digtime' have been
8         -- increased such that nodes of differing levels have an insignificant
9         -- effect on digtime.
10         local digtime = 42
11         local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 256}
12
13         minetest.register_item(":", {
14                 type = "none",
15                 wield_image = "wieldhand.png",
16                 wield_scale = {x = 1, y = 1, z = 2.5},
17                 range = 10,
18                 tool_capabilities = {
19                         full_punch_interval = 0.5,
20                         max_drop_level = 3,
21                         groupcaps = {
22                                 crumbly = caps,
23                                 cracky  = caps,
24                                 snappy  = caps,
25                                 choppy  = caps,
26                                 oddly_breakable_by_hand = caps,
27                         },
28                         damage_groups = {fleshy = 10},
29                 }
30         })
31
32         minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack)
33                 return true
34         end)
35
36         function minetest.handle_node_drops(pos, drops, digger)
37                 if not digger or not digger:is_player() then
38                         return
39                 end
40                 local inv = digger:get_inventory()
41                 if inv then
42                         for _, item in ipairs(drops) do
43                                 item = ItemStack(item):get_name()
44                                 if not inv:contains_item("main", item) then
45                                         inv:add_item("main", item)
46                                 end
47                         end
48                 end
49         end
50 end