codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
local function removeNode(pos) local n = minetest.env:get_node(pos).name if (n == "default:stone") then local chance = math.random(200) if (chance == 10) then minetest.env:add_node(pos, {name="glowblocks:glowblockblue_on"}) else minetest.env:add_node(pos, {name="air"}) end end end local function removeCubicShell(pos, sideLen) local s = math.floor(sideLen/2) for dx = -s, s do for dy = -s, s do removeNode({ x = pos.x + dx, y = pos.y + dy, z = pos.z - s }) removeNode({ x = pos.x + dx, y = pos.y + dy, z = pos.z + s }) end end for dy = -s, s do for dz = -s, s do removeNode({ x = pos.x - s, y = pos.y + dy, z = pos.z + dz }) removeNode({ x = pos.x + s, y = pos.y + dy, z = pos.z + dz }) end end for dz = -s, s do for dx = -s, s do removeNode({ x = pos.x + dx, y = pos.y - s, z = pos.z + dz }) removeNode({ x = pos.x + dx, y = pos.y + s, z = pos.z + dz }) end end end minetest.register_node("neoblocks:stoneremover", { tile_images = {"test_block.png"}, groups={snappy=2,choppy=2,oddly_breakable_by_hand=2}, description = "Stone Remover", light_source = 14, on_construct = function(pos) removeCubicShell(pos, 1) removeCubicShell(pos, 2) removeCubicShell(pos, 3) removeCubicShell(pos, 4) removeCubicShell(pos, 5) removeCubicShell(pos, 6) removeCubicShell(pos, 7) removeCubicShell(pos, 8) removeCubicShell(pos, 9) removeCubicShell(pos, 10) end, }) minetest.register_craft({ output = '"neoblocks:testblock" 2', recipe = { {'', 'default:wood', ''}, {'', 'default:wood', ''}, {'default:stone', '', 'default:wood'}, } }) -- --Lava-- -- local function removeNodeL(pos) local n = minetest.env:get_node(pos).name if (n == "default:lava_source") then minetest.env:add_node(pos, {name="air"}) end if (n == "default:lava_flowing") then minetest.env:add_node(pos, {name="air"}) end end local function removeCubicShellL(pos, sideLen) local s = math.floor(sideLen/2) for dx = -s, s do for dy = -s, s do removeNodeL({ x = pos.x + dx, y = pos.y + dy, z = pos.z - s }) removeNodeL({ x = pos.x + dx, y = pos.y + dy, z = pos.z + s }) end end for dy = -s, s do for dz = -s, s do removeNodeL({ x = pos.x - s, y = pos.y + dy, z = pos.z + dz }) removeNodeL({ x = pos.x + s, y = pos.y + dy, z = pos.z + dz }) end end for dz = -s, s do for dx = -s, s do removeNodeL({ x = pos.x + dx, y = pos.y - s, z = pos.z + dz }) removeNodeL({ x = pos.x + dx, y = pos.y + s, z = pos.z + dz }) end end end minetest.register_node("neoblocks:lavaremover", { tile_images = {"test_block.png"}, groups={snappy=2,choppy=2,oddly_breakable_by_hand=2}, description = "Lava Remover", light_source = 14, on_construct = function(pos) removeCubicShellL(pos, 1) removeCubicShellL(pos, 2) removeCubicShellL(pos, 3) removeCubicShellL(pos, 4) removeCubicShellL(pos, 5) removeCubicShellL(pos, 6) removeCubicShellL(pos, 7) removeCubicShellL(pos, 8) removeCubicShellL(pos, 9) removeCubicShellL(pos, 10) end, }) -- -- -- Drill -- -- local function digging(pos) minetest.env:add_node(pos, {name="default:ladder", param2=2}) end local function digDown(pos) local iSet = 1 while (iSet <= 50) do digging({ x = pos.x , y = pos.y - iSet, z = pos.z }) iSet = iSet + 1 end end minetest.register_node("neoblocks:digger", { tile_images = {"test_block.png"}, groups={snappy=2,choppy=2,oddly_breakable_by_hand=2}, description = "Digger", light_source = 14, on_construct = function(pos) digDown(pos) end, }) -- -- -- Probe -- -- local function probing(pos, pSet) local n = minetest.env:get_node(pos).name if (n == "air") then return pSet else return 9999 end end local function probeDown(pos) local pSet = 1 while (pSet <= 50) do if (probing({ x = pos.x , y = pos.y - pSet, z = pos.z }, pSet) ~= 9999) then return probing({ x = pos.x , y = pos.y - pSet, z = pos.z }, pSet) elseif (pSet == 50) then return 9999 else pSet = pSet + 1 end end end minetest.register_node("neoblocks:probe", { tile_images = {"test_block.png"}, groups={snappy=2,choppy=2,oddly_breakable_by_hand=2}, description = "Probe", light_source = 14, on_construct = function(pos) local meta = minetest.env:get_meta(pos) if (probeDown(pos) == 9999) then meta:set_string("infotext", "Very Far") elseif (probeDown(pos) <= 10) then meta:set_string("infotext", "Close") elseif (probeDown(pos) >= 10) then meta:set_string("infotext", "Far") end })
Private
[
?
]
Run code
Submit