add wallTool
[df_scaffold.git] / slowscaffold.lua
blob6bb015bf88103ee52697896f0f16c563012f5145
1 -- CC0/Unlicense Emilia 2020
3 if minetest.settings:get("slow_blocks_per_second") == nil then
4 minetest.settings:set("slow_blocks_per_second", 8)
5 end
7 -- Could remove the queue and have nowplace() check if it can place at the position
9 local lastt = 0
11 local posqueue = {}
13 local function posq_pos(pos)
14 local plen = #posqueue
15 for i = 0, #posqueue - 1 do
16 if vector.equals(pos, posqueue[plen - i]) then
17 return plen - i
18 end
19 end
20 end
22 local function nowplace(pos)
23 local p = posq_pos(pos)
24 if p then
25 table.remove(posqueue, p)
26 end
28 minetest.place_node(pos)
29 end
31 local function place(pos)
32 if not posq_pos(pos) then
33 local now = os.clock()
35 if lastt < now then
36 lastt = now
37 end
39 local interval = 1 / minetest.settings:get("slow_blocks_per_second")
40 lastt = lastt + interval
42 minetest.after(lastt - now, nowplace, pos)
44 posqueue[#posqueue + 1] = pos
45 end
46 end
48 scaffold.register_template_scaffold("SlowScaffold", "scaffold_slow", function(pos)
49 if scaffold.can_place_wielded_at(pos) then
50 place(pos)
51 end
52 end)