forked from minetest/minetest_game
Steel Trapdoor.
Adds a steel trapdoor. Textures were painted from scratch, and inspired by the current Steel Door. Ownership on the trapdoor works as expected, and so does the crafting recipe.
This commit is contained in:
parent
76471dd137
commit
e9a7782c88
@ -6,6 +6,7 @@ License of source code:
|
|||||||
-----------------------
|
-----------------------
|
||||||
Copyright (C) 2012 PilzAdam
|
Copyright (C) 2012 PilzAdam
|
||||||
modified by BlockMen (added sounds, glassdoors[glass, obsidian glass], trapdoor)
|
modified by BlockMen (added sounds, glassdoors[glass, obsidian glass], trapdoor)
|
||||||
|
Steel trapdoor added by sofar.
|
||||||
|
|
||||||
This program is free software. It comes without any warranty, to
|
This program is free software. It comes without any warranty, to
|
||||||
the extent permitted by applicable law. You can redistribute it
|
the extent permitted by applicable law. You can redistribute it
|
||||||
@ -35,6 +36,10 @@ following Textures created by PenguinDad (CC BY-SA 4.0):
|
|||||||
door_glass.png
|
door_glass.png
|
||||||
door_obsidian_glass.png
|
door_obsidian_glass.png
|
||||||
|
|
||||||
|
Steel trapdoor textures by sofar (CC-BY-SA-3.0)
|
||||||
|
doors_trapdoor_steel.png
|
||||||
|
doors_trapdoor_steel_side.png
|
||||||
|
|
||||||
All other textures (created by PilzAdam): WTFPL
|
All other textures (created by PilzAdam): WTFPL
|
||||||
|
|
||||||
|
|
||||||
|
@ -428,7 +428,19 @@ function doors.register_trapdoor(name, def)
|
|||||||
local name_closed = name
|
local name_closed = name
|
||||||
local name_opened = name.."_open"
|
local name_opened = name.."_open"
|
||||||
|
|
||||||
def.on_rightclick = function (pos, node)
|
local function check_player_priv(pos, player)
|
||||||
|
if not def.only_placer_can_open then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local pn = player:get_player_name()
|
||||||
|
return meta:get_string("doors_owner") == pn
|
||||||
|
end
|
||||||
|
|
||||||
|
def.on_rightclick = function (pos, node, clicker, itemstack, pointed_thing)
|
||||||
|
if not check_player_priv(pos, clicker) then
|
||||||
|
return
|
||||||
|
end
|
||||||
local newname = node.name == name_closed and name_opened or name_closed
|
local newname = node.name == name_closed and name_opened or name_closed
|
||||||
local sound = false
|
local sound = false
|
||||||
if node.name == name_closed then sound = def.sound_open end
|
if node.name == name_closed then sound = def.sound_open end
|
||||||
@ -436,7 +448,7 @@ function doors.register_trapdoor(name, def)
|
|||||||
if sound then
|
if sound then
|
||||||
minetest.sound_play(sound, {pos = pos, gain = 0.3, max_hear_distance = 10})
|
minetest.sound_play(sound, {pos = pos, gain = 0.3, max_hear_distance = 10})
|
||||||
end
|
end
|
||||||
minetest.set_node(pos, {name = newname, param1 = node.param1, param2 = node.param2})
|
minetest.swap_node(pos, {name = newname, param1 = node.param1, param2 = node.param2})
|
||||||
end
|
end
|
||||||
|
|
||||||
def.on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple
|
def.on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple
|
||||||
@ -446,6 +458,21 @@ function doors.register_trapdoor(name, def)
|
|||||||
def.paramtype = "light"
|
def.paramtype = "light"
|
||||||
def.paramtype2 = "facedir"
|
def.paramtype2 = "facedir"
|
||||||
def.is_ground_content = false
|
def.is_ground_content = false
|
||||||
|
def.can_dig = check_player_priv
|
||||||
|
|
||||||
|
if def.only_placer_can_open then
|
||||||
|
def.after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||||
|
local pn = placer:get_player_name()
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_string("doors_owner", pn)
|
||||||
|
meta:set_string("infotext", "Owned by "..pn)
|
||||||
|
|
||||||
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local def_opened = table.copy(def)
|
local def_opened = table.copy(def)
|
||||||
local def_closed = table.copy(def)
|
local def_closed = table.copy(def)
|
||||||
@ -492,6 +519,19 @@ doors.register_trapdoor("doors:trapdoor", {
|
|||||||
sound_close = "doors_door_close"
|
sound_close = "doors_door_close"
|
||||||
})
|
})
|
||||||
|
|
||||||
|
doors.register_trapdoor("doors:trapdoor_steel", {
|
||||||
|
description = "Steel Trapdoor",
|
||||||
|
inventory_image = "doors_trapdoor_steel.png",
|
||||||
|
wield_image = "doors_trapdoor_steel.png",
|
||||||
|
tile_front = "doors_trapdoor_steel.png",
|
||||||
|
tile_side = "doors_trapdoor_steel_side.png",
|
||||||
|
only_placer_can_open = true,
|
||||||
|
groups = {snappy=1, bendy=2, cracky=1, melty=2, level=2, door=1},
|
||||||
|
sounds = default.node_sound_wood_defaults(),
|
||||||
|
sound_open = "doors_door_open",
|
||||||
|
sound_close = "doors_door_close"
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'doors:trapdoor 2',
|
output = 'doors:trapdoor 2',
|
||||||
recipe = {
|
recipe = {
|
||||||
@ -500,3 +540,13 @@ minetest.register_craft({
|
|||||||
{'', '', ''},
|
{'', '', ''},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'doors:trapdoor_steel 2',
|
||||||
|
recipe = {
|
||||||
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
||||||
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
||||||
|
{'', '', ''},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
BIN
mods/doors/textures/doors_trapdoor_steel.png
Normal file
BIN
mods/doors/textures/doors_trapdoor_steel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 153 B |
BIN
mods/doors/textures/doors_trapdoor_steel_side.png
Normal file
BIN
mods/doors/textures/doors_trapdoor_steel_side.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 101 B |
Loading…
Reference in New Issue
Block a user