Make tunneling only work when in creative mode.

master
David G 2018-05-20 20:09:00 -07:00
parent a7261f2ae4
commit 8b08524a9c
2 changed files with 26 additions and 20 deletions

View File

@ -3,7 +3,7 @@
A Minetest Mod to easily create arbitrarily curved tunnels.
Especially designed to make laying track for the advtrains mod easier.
*This mod is intended for creative mode—it can do great damage if misused.*
*This mod only works when in creative mode—it can do great damage if misused.*
by David G (kestral246@gmail.com)
@ -15,6 +15,7 @@ Features
- Provides changing icon to help player align in proper direction.
- Uses privileges, requires "tunneling" privilege to be able to use.
- Checks protection, and doesn't dig any protected nodes.
- Checks for creative mode before tunneling; otherwise it's just equivalent to a wooden pickaxe that won't wear out.
- Reference point is at ground level: possible to increase or decrease the grade by changing the height of the reference node.
- Fills in holes in flooring with stone.
- Adds torches to ceiling if ceiling is stone or desert_stone.

View File

@ -143,7 +143,7 @@ local dig_rect_fin = function(xmin, xmax, zmin, zmax, user, pointed_thing)
end
end
-- add lighting
add_light(2, user, pointed_thing)
add_light(1, user, pointed_thing)
end
-- dig extra width for 45 degree angles
@ -216,73 +216,73 @@ local dig_plus = function(xmin, xmax, zmin, zmax, user, pointed_thing)
end
end
-- add lighting
add_light(2, user, pointed_thing)
add_light(1, user, pointed_thing)
end
-- dig tunnel based on direction given
local dig_tunnel = function(cdir, user, pointed_thing)
if minetest.check_player_privs(user, "tunneling") then
if cdir == 0 then -- pointed 0 (north)
if cdir == 0 then -- pointed north
dig_rect(-2, 2, 0, 2, user, pointed_thing)
dig_rect_fin(-1, 1, 0, 2, user, pointed_thing)
add_ref(0, 2, user, pointed_thing)
elseif cdir == 1 then -- pointed -22.5
elseif cdir == 1 then -- pointed north-northwest
dig_rect(-3, 2, 0, 2, user, pointed_thing)
dig_rect_fin(-2, 1, 0, 2, user, pointed_thing)
add_ref(-1, 2, user, pointed_thing)
elseif cdir == 2 then -- pointed -45 (northwest)
elseif cdir == 2 then -- pointed northwest
dig_nw(user, pointed_thing)
dig_plus(-2, 1, -1, 2, user, pointed_thing)
add_ref(-1, 1, user, pointed_thing)
elseif cdir == 3 then -- pointed -67.5
elseif cdir == 3 then -- pointed west-northwest
dig_rect(-2, 0, -2, 3, user, pointed_thing)
dig_rect_fin(-2, 0, -1, 2, user, pointed_thing)
add_ref(-2, 1, user, pointed_thing)
elseif cdir == 4 then -- pointed -90 (west)
elseif cdir == 4 then -- pointed west
dig_rect(-2, 0, -2, 2, user, pointed_thing)
dig_rect_fin(-2, 0, -1, 1, user, pointed_thing)
add_ref(-2, 0, user, pointed_thing)
elseif cdir == 5 then -- pointed -90-22.5
elseif cdir == 5 then -- pointed west-southwest
dig_rect(-2, 0, -3, 2, user, pointed_thing)
dig_rect_fin(-2, 0, -2, 1, user, pointed_thing)
add_ref(-2, -1, user, pointed_thing)
elseif cdir == 6 then -- pointed -90-45 (southwest)
elseif cdir == 6 then -- pointed southwest
dig_sw(user, pointed_thing)
dig_plus(-2, 1, -2, 1, user, pointed_thing)
add_ref(-1, -1, user, pointed_thing)
elseif cdir == 7 then -- pointed -90-67.5
elseif cdir == 7 then -- pointed south-southwest
dig_rect(-3, 2, -2, 0, user, pointed_thing)
dig_rect_fin(-2, 1, -2, 0, user, pointed_thing)
add_ref(-1, -2, user, pointed_thing)
elseif cdir == 8 then -- pointed +/-180 (south)
elseif cdir == 8 then -- pointed south
dig_rect(-2, 2, -2, 0, user, pointed_thing)
dig_rect_fin(-1, 1, -2, 0, user, pointed_thing)
add_ref(0, -2, user, pointed_thing)
elseif cdir == 9 then -- pointed +90+67.5
elseif cdir == 9 then -- pointed south-southeast
dig_rect(-2, 3, -2, 0, user, pointed_thing)
dig_rect_fin(-1, 2, -2, 0, user, pointed_thing)
add_ref(1, -2, user, pointed_thing)
elseif cdir == 10 then -- pointed +90+45 (southeast)
elseif cdir == 10 then -- pointed southeast
dig_se(user, pointed_thing)
dig_plus(-1, 2, -2, 1, user, pointed_thing)
add_ref(1, -1, user, pointed_thing)
elseif cdir == 11 then -- pointed +90+22.5
elseif cdir == 11 then -- pointed east-southeast
dig_rect(0, 2, -3, 2, user, pointed_thing)
dig_rect_fin(0, 2, -2, 1, user, pointed_thing)
add_ref(2, -1, user, pointed_thing)
elseif cdir == 12 then -- pointed +90 (east)
elseif cdir == 12 then -- pointed east
dig_rect(0, 2, -2, 2, user, pointed_thing)
dig_rect_fin(0, 2, -1, 1, user, pointed_thing)
add_ref(2, 0, user, pointed_thing)
elseif cdir == 13 then -- pointed +67.5
elseif cdir == 13 then -- pointed east-northeast
dig_rect(0, 2, -2, 3, user, pointed_thing)
dig_rect_fin(0, 2, -1, 2, user, pointed_thing)
add_ref(2, 1, user, pointed_thing)
elseif cdir == 14 then -- pointed +45 (northeast)
elseif cdir == 14 then -- pointed northeast
dig_ne(user, pointed_thing)
dig_plus(-1, 2, -1, 2, user, pointed_thing)
add_ref(1, 1, user, pointed_thing)
elseif cdir == 15 then -- pointed +22.5
elseif cdir == 15 then -- pointed north-northeast
dig_rect(-2, 3, 0, 2, user, pointed_thing)
dig_rect_fin(-1, 2, 0, 2, user, pointed_thing)
add_ref(1, 2, user, pointed_thing)
@ -307,6 +307,7 @@ for i,img in ipairs(images) do
stack_max = 1,
range = 7.0,
-- dig single node like wood pickaxe with left mouse click
-- works in both regular and creative modes
tool_capabilities = {
full_punch_interval = 1.2,
max_drop_level=0,
@ -317,8 +318,12 @@ for i,img in ipairs(images) do
},
-- dig tunnel with right mouse click (double tap on android)
-- tunneling only works if in creative mode
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type=="node" then
local player_name = placer and placer:get_player_name() or ""
local creative_enabled = (creative and creative.is_enabled_for
and creative.is_enabled_for(player_name))
if creative_enabled and pointed_thing.type=="node" then
dig_tunnel(i-1, placer, pointed_thing)
end
end,