Added Glass and Obsidian Glass door (doors mod)

此提交包含在:
PenguinDad
2014-04-16 16:31:30 +02:00
提交者 BlockMen
父節點 8dc6b0124e
當前提交 da9579846c
共有 22 個檔案被更改,包括 212 行新增31 行删除

查看文件

@@ -1,9 +1,11 @@
Minetest 0.4 mod: doors Minetest 0.4 mod: doors
======================= =======================
version: 1.3
License of source code: License of source code:
----------------------- -----------------------
Copyright (C) 2012 PilzAdam Copyright (C) 2012 PilzAdam
modified by BlockMen (added sounds, glassdoors[glass, obsidian glass], trapdoor)
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
@@ -11,13 +13,34 @@ and/or modify it under the terms of the Do What The Fuck You Want
To Public License, Version 2, as published by Sam Hocevar. See To Public License, Version 2, as published by Sam Hocevar. See
http://sam.zoy.org/wtfpl/COPYING for more details. http://sam.zoy.org/wtfpl/COPYING for more details.
License of media (textures and sounds) License of textures
-------------------------------------- --------------------------------------
Textures created by Fernando Zapata (CC BY-SA 3.0): following Textures created by Fernando Zapata (CC BY-SA 3.0):
door_wood.png door_wood.png
door_wood_a.png door_wood_a.png
door_wood_a_r.png door_wood_a_r.png
door_wood_b.png door_wood_b.png
door_wood_b_r.png door_wood_b_r.png
following Textures created by BlockMen (WTFPL):
door_trapdoor.png
door_obsidian_glass_side.png
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
All other textures (created by PilzAdam): WTFPL All other textures (created by PilzAdam): WTFPL
License of sounds
--------------------------------------
Opening-Sound created by CGEffex (CC BY 3.0), modified by BlockMen
door_open.ogg
Closing-Sound created by bennstir (CC BY 3.0)
door_close.ogg

查看文件

@@ -15,10 +15,23 @@ doors = {}
-- selection_box_top -- selection_box_top
-- only_placer_can_open: if true only the player who placed the door can -- only_placer_can_open: if true only the player who placed the door can
-- open it -- open it
local function is_right(pos)
local r1 = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
local r2 = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
if string.find(r1.name, "door_") or string.find(r2.name, "door_") then
if string.find(r1.name, "_1") or string.find(r2.name, "_1") then
return true
else
return false
end
end
end
function doors:register_door(name, def) function doors:register_door(name, def)
def.groups.not_in_creative_inventory = 1 def.groups.not_in_creative_inventory = 1
local box = {{-0.5, -0.5, -0.5, 0.5, 0.5, -0.5+1.5/16}} local box = {{-0.5, -0.5, -0.5, 0.5, 0.5, -0.5+1.5/16}}
if not def.node_box_bottom then if not def.node_box_bottom then
def.node_box_bottom = box def.node_box_bottom = box
@@ -105,9 +118,10 @@ function doors:register_door(name, def)
local tt = def.tiles_top local tt = def.tiles_top
local tb = def.tiles_bottom local tb = def.tiles_bottom
local function after_dig_node(pos, name) local function after_dig_node(pos, name, digger)
if minetest.get_node(pos).name == name then local node = minetest.get_node(pos)
minetest.remove_node(pos) if node.name == name then
minetest.node_dig(pos, node, digger)
end end
end end
@@ -123,6 +137,19 @@ function doors:register_door(name, def)
pos.y = pos.y-dir pos.y = pos.y-dir
minetest.swap_node(pos, {name=replace, param2=p2}) minetest.swap_node(pos, {name=replace, param2=p2})
local snd_1 = "_close"
local snd_2 = "_open"
if params[1] == 3 then
snd_1 = "_open"
snd_2 = "_close"
end
if is_right(pos) then
minetest.sound_play("door"..snd_1, {pos = pos, gain = 0.3, max_hear_distance = 10})
else
minetest.sound_play("door"..snd_2, {pos = pos, gain = 0.3, max_hear_distance = 10})
end
end end
local function check_player_priv(pos, player) local function check_player_priv(pos, player)
@@ -152,7 +179,7 @@ function doors:register_door(name, def)
after_dig_node = function(pos, oldnode, oldmetadata, digger) after_dig_node = function(pos, oldnode, oldmetadata, digger)
pos.y = pos.y+1 pos.y = pos.y+1
after_dig_node(pos, name.."_t_1") after_dig_node(pos, name.."_t_1", digger)
end, end,
on_rightclick = function(pos, node, clicker) on_rightclick = function(pos, node, clicker)
@@ -162,13 +189,15 @@ function doors:register_door(name, def)
end, end,
can_dig = check_player_priv, can_dig = check_player_priv,
sounds = def.sounds,
sunlight_propagates = def.sunlight
}) })
minetest.register_node(name.."_t_1", { minetest.register_node(name.."_t_1", {
tiles = {tt[2], tt[2], tt[2], tt[2], tt[1], tt[1].."^[transformfx"}, tiles = {tt[2], tt[2], tt[2], tt[2], tt[1], tt[1].."^[transformfx"},
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
drop = name, drop = "",
drawtype = "nodebox", drawtype = "nodebox",
node_box = { node_box = {
type = "fixed", type = "fixed",
@@ -182,7 +211,7 @@ function doors:register_door(name, def)
after_dig_node = function(pos, oldnode, oldmetadata, digger) after_dig_node = function(pos, oldnode, oldmetadata, digger)
pos.y = pos.y-1 pos.y = pos.y-1
after_dig_node(pos, name.."_b_1") after_dig_node(pos, name.."_b_1", digger)
end, end,
on_rightclick = function(pos, node, clicker) on_rightclick = function(pos, node, clicker)
@@ -192,6 +221,8 @@ function doors:register_door(name, def)
end, end,
can_dig = check_player_priv, can_dig = check_player_priv,
sounds = def.sounds,
sunlight_propagates = def.sunlight,
}) })
minetest.register_node(name.."_b_2", { minetest.register_node(name.."_b_2", {
@@ -212,7 +243,7 @@ function doors:register_door(name, def)
after_dig_node = function(pos, oldnode, oldmetadata, digger) after_dig_node = function(pos, oldnode, oldmetadata, digger)
pos.y = pos.y+1 pos.y = pos.y+1
after_dig_node(pos, name.."_t_2") after_dig_node(pos, name.."_t_2", digger)
end, end,
on_rightclick = function(pos, node, clicker) on_rightclick = function(pos, node, clicker)
@@ -222,13 +253,15 @@ function doors:register_door(name, def)
end, end,
can_dig = check_player_priv, can_dig = check_player_priv,
sounds = def.sounds,
sunlight_propagates = def.sunlight
}) })
minetest.register_node(name.."_t_2", { minetest.register_node(name.."_t_2", {
tiles = {tt[2], tt[2], tt[2], tt[2], tt[1].."^[transformfx", tt[1]}, tiles = {tt[2], tt[2], tt[2], tt[2], tt[1].."^[transformfx", tt[1]},
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
drop = name, drop = "",
drawtype = "nodebox", drawtype = "nodebox",
node_box = { node_box = {
type = "fixed", type = "fixed",
@@ -242,7 +275,7 @@ function doors:register_door(name, def)
after_dig_node = function(pos, oldnode, oldmetadata, digger) after_dig_node = function(pos, oldnode, oldmetadata, digger)
pos.y = pos.y-1 pos.y = pos.y-1
after_dig_node(pos, name.."_b_2") after_dig_node(pos, name.."_b_2", digger)
end, end,
on_rightclick = function(pos, node, clicker) on_rightclick = function(pos, node, clicker)
@@ -252,7 +285,10 @@ function doors:register_door(name, def)
end, end,
can_dig = check_player_priv, can_dig = check_player_priv,
sounds = def.sounds,
sunlight_propagates = def.sunlight
}) })
end end
doors:register_door("doors:door_wood", { doors:register_door("doors:door_wood", {
@@ -261,6 +297,8 @@ doors:register_door("doors:door_wood", {
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1},
tiles_bottom = {"door_wood_b.png", "door_brown.png"}, tiles_bottom = {"door_wood_b.png", "door_brown.png"},
tiles_top = {"door_wood_a.png", "door_brown.png"}, tiles_top = {"door_wood_a.png", "door_brown.png"},
sounds = default.node_sound_wood_defaults(),
sunlight = false,
}) })
minetest.register_craft({ minetest.register_craft({
@@ -279,6 +317,8 @@ doors:register_door("doors:door_steel", {
tiles_bottom = {"door_steel_b.png", "door_grey.png"}, tiles_bottom = {"door_steel_b.png", "door_grey.png"},
tiles_top = {"door_steel_a.png", "door_grey.png"}, tiles_top = {"door_steel_a.png", "door_grey.png"},
only_placer_can_open = true, only_placer_can_open = true,
sounds = default.node_sound_wood_defaults(),
sunlight = false,
}) })
minetest.register_craft({ minetest.register_craft({
@@ -290,7 +330,125 @@ minetest.register_craft({
} }
}) })
minetest.register_alias("doors:door_wood_a_c", "doors:door_wood_t_1") doors:register_door("doors:door_glass", {
minetest.register_alias("doors:door_wood_a_o", "doors:door_wood_t_1") description = "Glass Door",
minetest.register_alias("doors:door_wood_b_c", "doors:door_wood_b_1") inventory_image = "door_glass.png",
minetest.register_alias("doors:door_wood_b_o", "doors:door_wood_b_1") groups = {snappy=1,cracky=1,oddly_breakable_by_hand=3,door=1},
tiles_bottom = {"door_glass_b.png", "door_glass_side.png"},
tiles_top = {"door_glass_a.png", "door_glass_side.png"},
sounds = default.node_sound_glass_defaults(),
sunlight = true,
})
minetest.register_craft({
output = "doors:door_glass",
recipe = {
{"default:glass", "default:glass"},
{"default:glass", "default:glass"},
{"default:glass", "default:glass"}
}
})
doors:register_door("doors:door_obsidian_glass", {
description = "Obsidian Glass Door",
inventory_image = "door_obsidian_glass.png",
groups = {snappy=1,cracky=1,oddly_breakable_by_hand=3,door=1},
tiles_bottom = {"door_obsidian_glass_b.png", "door_obsidian_glass_side.png"},
tiles_top = {"door_obsidian_glass_b.png", "door_obsidian_glass_side.png"},
sounds = default.node_sound_glass_defaults(),
sunlight = true,
})
minetest.register_craft({
output = "doors:door_obsidian_glass",
recipe = {
{"default:obsidian_glass", "default:obsidian_glass"},
{"default:obsidian_glass", "default:obsidian_glass"},
{"default:obsidian_glass", "default:obsidian_glass"}
}
})
----trapdoor----
local function update_door(pos, node)
minetest.set_node(pos, node)
end
local function punch(pos)
local meta = minetest.get_meta(pos)
local state = meta:get_int("state")
local me = minetest.get_node(pos)
local tmp_node
local tmp_node2
oben = {x=pos.x, y=pos.y+1, z=pos.z}
if state == 1 then
state = 0
minetest.sound_play("door_close", {pos = pos, gain = 0.3, max_hear_distance = 10})
tmp_node = {name="doors:trapdoor", param1=me.param1, param2=me.param2}
else
state = 1
minetest.sound_play("door_open", {pos = pos, gain = 0.3, max_hear_distance = 10})
tmp_node = {name="doors:trapdoor_open", param1=me.param1, param2=me.param2}
end
update_door(pos, tmp_node)
meta:set_int("state", state)
end
minetest.register_node("doors:trapdoor", {
description = "Trapdoor",
inventory_image = "door_trapdoor.png",
drawtype = "nodebox",
tiles = {"door_trapdoor.png", "door_trapdoor.png", "door_trapdoor_side.png", "door_trapdoor_side.png", "door_trapdoor_side.png", "door_trapdoor_side.png"},
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1},
sounds = default.node_sound_wood_defaults(),
drop = "doors:trapdoor",
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}
},
on_creation = function(pos)
state = 0
end,
on_rightclick = function(pos, node, clicker)
punch(pos)
end,
})
minetest.register_node("doors:trapdoor_open", {
drawtype = "nodebox",
tiles = {"door_trapdoor_side.png", "door_trapdoor_side.png", "door_trapdoor_side.png", "door_trapdoor_side.png", "door_trapdoor.png", "door_trapdoor.png"},
paramtype = "light",
paramtype2 = "facedir",
pointable = true,
stack_max = 0,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1},
sounds = default.node_sound_wood_defaults(),
drop = "doors:trapdoor",
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5}
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5}
},
on_rightclick = function(pos, node, clicker)
punch(pos)
end,
})
minetest.register_craft({
output = 'doors:trapdoor 2',
recipe = {
{'group:wood', 'group:wood', 'group:wood'},
{'group:wood', 'group:wood', 'group:wood'},
{'', '', ''},
}
})

二進制
mods/doors/sounds/door_close.ogg 一般檔案

未顯示二進位檔案。

二進制
mods/doors/sounds/door_open.ogg 一般檔案

未顯示二進位檔案。

未顯示二進位檔案。

之前

寬度:  |  高度:  |  大小: 109 B

之後

寬度:  |  高度:  |  大小: 109 B

二進制
mods/doors/textures/door_glass.png 一般檔案

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 172 B

二進制
mods/doors/textures/door_glass_a.png 一般檔案

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 978 B

二進制
mods/doors/textures/door_glass_b.png 一般檔案

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 978 B

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 90 B

未顯示二進位檔案。

之前

寬度:  |  高度:  |  大小: 109 B

之後

寬度:  |  高度:  |  大小: 109 B

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 207 B

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 293 B

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 293 B

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 90 B

未顯示二進位檔案。

之前

寬度:  |  高度:  |  大小: 185 B

之後

寬度:  |  高度:  |  大小: 230 B

未顯示二進位檔案。

之前

寬度:  |  高度:  |  大小: 178 B

之後

寬度:  |  高度:  |  大小: 223 B

未顯示二進位檔案。

之前

寬度:  |  高度:  |  大小: 181 B

之後

寬度:  |  高度:  |  大小: 206 B

二進制
mods/doors/textures/door_trapdoor.png 一般檔案

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 390 B

未顯示二進位檔案。

之後

寬度:  |  高度:  |  大小: 276 B

未顯示二進位檔案。

之前

寬度:  |  高度:  |  大小: 132 B

之後

寬度:  |  高度:  |  大小: 166 B

未顯示二進位檔案。

之前

寬度:  |  高度:  |  大小: 190 B

之後

寬度:  |  高度:  |  大小: 245 B

未顯示二進位檔案。

之前

寬度:  |  高度:  |  大小: 184 B

之後

寬度:  |  高度:  |  大小: 216 B