]> git.lizzy.rs Git - dragonfireclient.git/blob - builtin/client/cheats/world.lua
Improved Scaffold
[dragonfireclient.git] / builtin / client / cheats / world.lua
1 core.register_on_dignode(function(pos)
2         if core.settings:get_bool("replace") then
3                 core.after(0, minetest.place_node, pos)
4         end
5 end)
6
7 local etime = 0
8
9 core.register_globalstep(function(dtime)
10         etime = etime + dtime
11         if etime < 1 then return end
12         local player = core.localplayer
13         if not player then return end
14         local pos = player:get_pos()
15         local item = player:get_wielded_item()
16         local def = core.get_item_def(item:get_name())
17         local nodes_per_tick = tonumber(minetest.settings:get("nodes_per_tick")) or 8
18         if item and item:get_count() > 0 and def and def.node_placement_prediction ~= "" then
19                 if core.settings:get_bool("scaffold") then
20                         local p = vector.round(vector.add(pos, {x = 0, y = -0.6, z = 0}))
21                         local node = minetest.get_node_or_nil(p)
22                         if not node or minetest.get_node_def(node.name).buildable_to then
23                                 core.place_node(p)
24                         end
25                 elseif core.settings:get_bool("scaffold_plus") then
26                         local z = pos.z
27                         local positions = {
28                                 {x = 0, y = -0.6, z = 0},
29                 {x = 1, y = -0.6, z = 0},
30                 {x = -1, y = -0.6, z = 0},
31                 {x = -1, y = -0.6, z = -1},
32                 {x = 0, y = -0.6, z = -1},
33                 {x = 1, y = -0.6, z = -1},
34                 {x = -1, y = -0.6, z = 1},
35                 {x = 0, y = -0.6, z = 1},
36                 {x = 1, y = -0.6, z = 1}
37                         }
38                         for i, p in pairs(positions) do
39                                 core.place_node(vector.add(pos, p))
40                         end
41                 elseif core.settings:get_bool("block_water") then
42                         local positions = core.find_nodes_near(pos, 5, {"mcl_core:water_source", "mcl_core:water_floating"}, true)
43                         for i, p in pairs(positions) do
44                                 if i > nodes_per_tick then return end
45                                 core.place_node(p)
46                         end
47                 elseif core.settings:get_bool("autotnt") then
48                         local positions = core.find_nodes_near_under_air_except(pos, 5, item:get_name(), true)
49                         for i, p in pairs(positions) do
50                                 if i > nodes_per_tick then return end
51                                 core.place_node(vector.add(p, {x = 0, y = 1, z = 0}))
52                         end
53                 end
54         end
55         if core.settings:get_bool("nuke") then
56                 local i = 0
57                 for x = pos.x - 5, pos.x + 5 do
58                         for y = pos.y - 5, pos.y + 5 do
59                                 for z = pos.z - 5, pos.z + 5 do
60                                         local p = vector.new(x, y, z)
61                                         local node = core.get_node_or_nil(p)
62                                         local def = node and core.get_node_def(node.name)
63                                         if def and def.diggable then
64                                                 if i > nodes_per_tick then return end
65                                                 core.dig_node(p)
66                                                 i = i + 1
67                                         end
68                                 end
69                         end
70                 end
71         end
72 end) 
73
74