Skip to content

Commit

Permalink
Steel Trapdoor.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
sofar authored and paramat committed Jan 3, 2016
1 parent 76471dd commit e9a7782
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 3 deletions.
7 changes: 6 additions & 1 deletion mods/doors/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ License of source code:
-----------------------
Copyright (C) 2012 PilzAdam
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
the extent permitted by applicable law. You can redistribute it
Expand All @@ -30,11 +31,15 @@ following textures created by celeron55 (CC BY-SA 3.0):
door_trapdoor_side.png
door_glass_a.png
door_glass_b.png

following Textures created by PenguinDad (CC BY-SA 4.0):
door_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


Expand Down
54 changes: 52 additions & 2 deletions mods/doors/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -428,15 +428,27 @@ function doors.register_trapdoor(name, def)
local name_closed = name
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 sound = false
if node.name == name_closed then sound = def.sound_open end
if node.name == name_opened then sound = def.sound_close end
if sound then
minetest.sound_play(sound, {pos = pos, gain = 0.3, max_hear_distance = 10})
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

def.on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple
Expand All @@ -446,6 +458,21 @@ function doors.register_trapdoor(name, def)
def.paramtype = "light"
def.paramtype2 = "facedir"
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_closed = table.copy(def)
Expand Down Expand Up @@ -492,6 +519,19 @@ doors.register_trapdoor("doors:trapdoor", {
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({
output = 'doors:trapdoor 2',
recipe = {
Expand All @@ -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'},
{'', '', ''},
}
})

Binary file added mods/doors/textures/doors_trapdoor_steel.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mods/doors/textures/doors_trapdoor_steel_side.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit e9a7782

Please sign in to comment.