crowbar bugfix

This commit is contained in:
Joachim Stolberg 2018-11-30 22:01:32 +01:00
parent 7cf5f80e1c
commit 3d07fa3d5b
3 changed files with 14 additions and 108 deletions

105
shaft.lua
View File

@ -1,105 +0,0 @@
--[[
Hyperloop Mod
=============
Copyright (C) 2017 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
History:
see init.lua
]]--
-- simple shaft without logic or "memory"
minetest.register_node("hyperloop:shaft", {
description = "Hyperloop Elevator Shaft",
tiles = {
-- up, down, right, left, back, front
'hyperloop_tube_open.png',
'hyperloop_tube_open.png',
"hyperloop_tube_locked.png^[transformR90]",
"hyperloop_tube_locked.png^[transformR90]",
"hyperloop_tube_locked.png^[transformR90]",
"hyperloop_tube_locked.png^[transformR90]",
},
after_place_node = function(pos, placer, itemstack, pointed_thing)
local npos = table.copy(pos)
-- check above
npos.y = npos.y + 1
if minetest.get_node_or_nil(npos).name == "hyperloop:shaft" then
local node = minetest.get_node(npos)
node.name = "hyperloop:shaft2"
minetest.swap_node(npos, node)
return
elseif minetest.get_node_or_nil(npos).name == "hyperloop:elevator_top" then
npos.y = npos.y - 1
hyperloop.update_elevator(npos)
npos.y = npos.y + 1
return
end
-- check below
npos.y = npos.y - 2
if minetest.get_node_or_nil(npos).name == "hyperloop:shaft" then
local node = minetest.get_node(npos)
node.name = "hyperloop:shaft2"
minetest.swap_node(npos, node)
elseif minetest.get_node_or_nil(npos).name == "hyperloop:elevator_top" then
npos.y = npos.y - 1
hyperloop.update_elevator(npos)
else
minetest.remove_node(pos)
return itemstack
end
end,
after_destruct = function(pos)
local npos = table.copy(pos)
npos.y = npos.y - 1
if minetest.get_node_or_nil(npos).name == "hyperloop:shaft2" then
local node = minetest.get_node(npos)
node.name = "hyperloop:shaft"
minetest.swap_node(npos, node)
elseif minetest.get_node_or_nil(npos).name == "hyperloop:elevator_top" then
npos.y = npos.y - 1
hyperloop.update_elevator(npos)
end
npos.y = npos.y + 2
if minetest.get_node_or_nil(npos).name == "hyperloop:shaft2" then
local node = minetest.get_node(npos)
node.name = "hyperloop:shaft"
minetest.swap_node(npos, node)
end
end,
on_rotate = screwdriver.disallow,
light_source = 6,
paramtype2 = "facedir",
groups = {cracky=1},
is_ground_content = false,
})
-- simple shaft without logic or "memory"
minetest.register_node("hyperloop:shaft2", {
description = "Hyperloop Elevator Shaft",
tiles = {
-- up, down, right, left, back, front
"hyperloop_tube_locked.png^[transformR90]",
"hyperloop_tube_locked.png^[transformR90]",
"hyperloop_tube_locked.png^[transformR90]",
"hyperloop_tube_locked.png^[transformR90]",
"hyperloop_tube_locked.png^[transformR90]",
"hyperloop_tube_locked.png^[transformR90]",
},
on_rotate = screwdriver.disallow,
diggable = false,
paramtype2 = "facedir",
groups = {cracky=1, not_in_creative_inventory=1},
is_ground_content = false,
})

View File

@ -237,7 +237,7 @@ minetest.register_node("hyperloop:tubeA", {
sunlight_propagates = true,
is_ground_content = false,
groups = {cracky = 1, not_in_creative_inventory=1},
drop = "hyperloop:shaft",
drop = "hyperloop:tubeS",
sounds = default.node_sound_metal_defaults(),
})

View File

@ -63,12 +63,23 @@ local function repair_tubes(itemstack, placer, pointed_thing)
end
end
local function add_to_inventory(placer, item_name)
local inv = placer:get_inventory()
local item = ItemStack(item_name)
if inv and item and inv:room_for_item("main", item) then
inv:add_item("main", item)
end
end
local function remove_tube(itemstack, placer, pointed_thing)
if minetest.check_player_privs(placer:get_player_name(), "hyperloop") then
if pointed_thing.type == "node" then
local pos = pointed_thing.under
Shaft:tool_remove_tube(pos, "default_break_glass")
Tube:tool_remove_tube(pos, "default_break_glass")
if Shaft:tool_remove_tube(pos, "default_break_glass") then
add_to_inventory(placer, "hyperloop:shaft")
elseif Tube:tool_remove_tube(pos, "default_break_glass") then
add_to_inventory(placer, "hyperloop:tubeS")
end
end
else
minetest.chat_send_player(placer:get_player_name(), "You don't have the necessary privs!")