Initial commit
This was split out of the venerable Castle mod, https://github.com/minetest-mods/castle, which has been maintained by a long line of distinguished modders.
This commit is contained in:
commit
c47707205a
17
.gitattributes
vendored
Normal file
17
.gitattributes
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Auto detect text files and perform LF normalization
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
# Custom for Visual Studio
|
||||||
|
*.cs diff=csharp
|
||||||
|
|
||||||
|
# Standard to msysgit
|
||||||
|
*.doc diff=astextplain
|
||||||
|
*.DOC diff=astextplain
|
||||||
|
*.docx diff=astextplain
|
||||||
|
*.DOCX diff=astextplain
|
||||||
|
*.dot diff=astextplain
|
||||||
|
*.DOT diff=astextplain
|
||||||
|
*.pdf diff=astextplain
|
||||||
|
*.PDF diff=astextplain
|
||||||
|
*.rtf diff=astextplain
|
||||||
|
*.RTF diff=astextplain
|
47
.gitignore
vendored
Normal file
47
.gitignore
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# Windows image file caches
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
# =========================
|
||||||
|
# Operating System Files
|
||||||
|
# =========================
|
||||||
|
|
||||||
|
# OSX
|
||||||
|
# =========================
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Minetest Mods Team
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
16
README.txt
Normal file
16
README.txt
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
=-=-=-=-=-=-=-=-=-=
|
||||||
|
|
||||||
|
Castles Mod
|
||||||
|
by: Philipbenr And DanDuncombe
|
||||||
|
|
||||||
|
=-=-=-=-=-=-=-=-=-=
|
||||||
|
|
||||||
|
Licence: MIT
|
||||||
|
|
||||||
|
see: LICENSE
|
||||||
|
|
||||||
|
=-=-=-=-=-=-=-=-=-=
|
||||||
|
|
||||||
|
This is a mod all about creating castles and castle dungeons. Many of the nodes are used for the outer-walls or dungeons.
|
||||||
|
|
||||||
|
=-=-=-=-=-=-=-=-=-=
|
59
crate.lua
Normal file
59
crate.lua
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
minetest.register_alias("darkage:box", "castle_storage:crate")
|
||||||
|
minetest.register_alias("castle:crate", "castle_storage:crate")
|
||||||
|
|
||||||
|
-- internationalization boilerplate
|
||||||
|
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||||
|
local S, NS = dofile(MP.."/intllib.lua")
|
||||||
|
|
||||||
|
minetest.register_node("castle_storage:crate", {
|
||||||
|
description = S("Crate"),
|
||||||
|
drawtype = "normal",
|
||||||
|
tiles = {"castle_crate_top.png","castle_crate_top.png","castle_crate.png","castle_crate.png","castle_crate.png","castle_crate.png"},
|
||||||
|
groups = {choppy=3},
|
||||||
|
sounds = default.node_sound_wood_defaults(),
|
||||||
|
paramtype = "light",
|
||||||
|
on_construct = function(pos)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_string("formspec",
|
||||||
|
"size[8,9]"..
|
||||||
|
default.gui_bg ..
|
||||||
|
default.gui_bg_img ..
|
||||||
|
default.gui_slots ..
|
||||||
|
"list[current_name;main;0,0;8,5;]"..
|
||||||
|
"list[current_player;main;0,5;8,4;]")
|
||||||
|
meta:set_string("infotext", S("Crate"))
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
inv:set_size("main", 8*4)
|
||||||
|
end,
|
||||||
|
can_dig = function(pos,player)
|
||||||
|
local meta = minetest.get_meta(pos);
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
return inv:is_empty("main")
|
||||||
|
end,
|
||||||
|
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||||
|
minetest.log("action", S("@1 moves stuff in crate at @2", player:get_player_name(), minetest.pos_to_string(pos)))
|
||||||
|
end,
|
||||||
|
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
|
minetest.log("action", S("@1 moves stuff to crate at @2", player:get_player_name(), minetest.pos_to_string(pos)))
|
||||||
|
end,
|
||||||
|
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||||
|
minetest.log("action", S("@1 takes stuff from locked chest at @2", player:get_player_name(), minetest.pos_to_string(pos)))
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "castle_storage:crate",
|
||||||
|
recipe = {
|
||||||
|
{"default:wood", "default:wood", "default:wood"},
|
||||||
|
{"default:wood", "default:steel_ingot", "default:wood"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Hopper compatibility
|
||||||
|
if minetest.get_modpath("hopper") and hopper ~= nil and hopper.add_container ~= nil then
|
||||||
|
hopper:add_container({
|
||||||
|
{"top", "castle_storage:crate", "main"},
|
||||||
|
{"side", "castle_storage:crate", "main"},
|
||||||
|
{"bottom", "castle_storage:crate", "main"},
|
||||||
|
})
|
||||||
|
end
|
3
depends.txt
Normal file
3
depends.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
default
|
||||||
|
intllib?
|
||||||
|
hopper?
|
1
description.txt
Normal file
1
description.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
This mod contains storage containers one might find contained in a castle.
|
3
init.lua
Normal file
3
init.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||||
|
dofile(MP.."/crate.lua")
|
||||||
|
dofile(MP.."/ironbound_chest.lua")
|
45
intllib.lua
Normal file
45
intllib.lua
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
-- Fallback functions for when `intllib` is not installed.
|
||||||
|
-- Code released under Unlicense <http://unlicense.org>.
|
||||||
|
|
||||||
|
-- Get the latest version of this file at:
|
||||||
|
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
|
||||||
|
|
||||||
|
local function format(str, ...)
|
||||||
|
local args = { ... }
|
||||||
|
local function repl(escape, open, num, close)
|
||||||
|
if escape == "" then
|
||||||
|
local replacement = tostring(args[tonumber(num)])
|
||||||
|
if open == "" then
|
||||||
|
replacement = replacement..close
|
||||||
|
end
|
||||||
|
return replacement
|
||||||
|
else
|
||||||
|
return "@"..open..num..close
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
|
||||||
|
end
|
||||||
|
|
||||||
|
local gettext, ngettext
|
||||||
|
if minetest.get_modpath("intllib") then
|
||||||
|
if intllib.make_gettext_pair then
|
||||||
|
-- New method using gettext.
|
||||||
|
gettext, ngettext = intllib.make_gettext_pair()
|
||||||
|
else
|
||||||
|
-- Old method using text files.
|
||||||
|
gettext = intllib.Getter()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Fill in missing functions.
|
||||||
|
|
||||||
|
gettext = gettext or function(msgid, ...)
|
||||||
|
return format(msgid, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
|
||||||
|
return format(n==1 and msgid or msgid_plural, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
return gettext, ngettext
|
143
ironbound_chest.lua
Normal file
143
ironbound_chest.lua
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
minetest.register_alias("castle:ironbound_chest", "castle_storage:ironbound_chest")
|
||||||
|
|
||||||
|
-- internationalization boilerplate
|
||||||
|
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||||
|
local S, NS = dofile(MP.."/intllib.lua")
|
||||||
|
|
||||||
|
local get_ironbound_chest_formspec = function(pos)
|
||||||
|
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
|
||||||
|
local formspec =
|
||||||
|
"size[8,9]"..
|
||||||
|
default.gui_bg ..
|
||||||
|
default.gui_bg_img ..
|
||||||
|
default.gui_slots ..
|
||||||
|
"list[nodemeta:".. spos .. ";main;,0;8,4;]"..
|
||||||
|
"list[current_player;main;,5;8,4;]"
|
||||||
|
return formspec
|
||||||
|
end
|
||||||
|
|
||||||
|
local function has_ironbound_chest_privilege(meta, player)
|
||||||
|
local name = ""
|
||||||
|
if player then
|
||||||
|
if minetest.check_player_privs(player, "protection_bypass") then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
name = player:get_player_name()
|
||||||
|
end
|
||||||
|
if name ~= meta:get_string("owner") then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_node("castle_storage:ironbound_chest",{
|
||||||
|
drawtype = "nodebox",
|
||||||
|
description = S("Ironbound Chest"),
|
||||||
|
tiles = {"castle_ironbound_chest_top.png",
|
||||||
|
"castle_ironbound_chest_top.png",
|
||||||
|
"castle_ironbound_chest_side.png",
|
||||||
|
"castle_ironbound_chest_side.png",
|
||||||
|
"castle_ironbound_chest_back.png",
|
||||||
|
"castle_ironbound_chest_front.png"},
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
groups = {cracky=2},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-0.5, -0.5, -0.3125, 0.5, -0.0625, 0.3125},
|
||||||
|
{-0.5, -0.0625, -0.25, 0.5, 0, 0.25},
|
||||||
|
{-0.5, 0, -0.1875,0.5, 0.0625, 0.1875},
|
||||||
|
{-0.5, 0.0625, -0.0625, 0.5, 0.125, 0.0625},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-0.5, -0.5, -0.4, 0.5, 0.2, 0.4},
|
||||||
|
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sounds = default.node_sound_wood_defaults(),
|
||||||
|
after_place_node = function(pos, placer)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_string("owner", placer:get_player_name() or "")
|
||||||
|
meta:set_string("infotext", S("Ironbound Chest (owned by @1)", meta:get_string("owner")))
|
||||||
|
end,
|
||||||
|
on_construct = function(pos)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_string("infotext", S("Ironbound Chest"))
|
||||||
|
meta:set_string("owner", "")
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
inv:set_size("main", 8*4)
|
||||||
|
end,
|
||||||
|
can_dig = function(pos,player)
|
||||||
|
local meta = minetest.get_meta(pos);
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
return inv:is_empty("main") and has_ironbound_chest_privilege(meta, player)
|
||||||
|
end,
|
||||||
|
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
if not has_ironbound_chest_privilege(meta, player) then
|
||||||
|
minetest.log("action", S("@1 tried to access a locked chest belonging to @2 at @3",
|
||||||
|
player:get_player_name(), meta:get_string("owner"), minetest.pos_to_string(pos)))
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
return count
|
||||||
|
end,
|
||||||
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
if not has_ironbound_chest_privilege(meta, player) then
|
||||||
|
minetest.log("action", S("@1 tried to access a locked chest belonging to @2 at @3",
|
||||||
|
player:get_player_name(), meta:get_string("owner"), minetest.pos_to_string(pos)))
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
return stack:get_count()
|
||||||
|
end,
|
||||||
|
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
if not has_ironbound_chest_privilege(meta, player) then
|
||||||
|
minetest.log("action", S("@1 tried to access a locked chest belonging to @2 at @3",
|
||||||
|
player:get_player_name(), meta:get_string("owner"), minetest.pos_to_string(pos)))
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
return stack:get_count()
|
||||||
|
end,
|
||||||
|
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||||
|
minetest.log("action", S("@1 moves stuff in locked chest at @2", player:get_player_name(), minetest.pos_to_string(pos)))
|
||||||
|
end,
|
||||||
|
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||||
|
minetest.log("action", S("@1 moves stuff to locked chest at @2", player:get_player_name(), minetest.pos_to_string(pos)))
|
||||||
|
end,
|
||||||
|
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||||
|
minetest.log("action", S("@1 takes stuff from locked chest at @2", player:get_player_name(), minetest.pos_to_string(pos)))
|
||||||
|
end,
|
||||||
|
on_rightclick = function(pos, node, clicker)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
if has_ironbound_chest_privilege(meta, clicker) then
|
||||||
|
minetest.show_formspec(
|
||||||
|
clicker:get_player_name(),
|
||||||
|
"castle_storage:ironbound_chest",
|
||||||
|
get_ironbound_chest_formspec(pos)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_blast = function() end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "castle_storage:ironbound_chest",
|
||||||
|
recipe = {
|
||||||
|
{"default:wood", "default:steel_ingot","default:wood"},
|
||||||
|
{"default:wood", "default:steel_ingot","default:wood"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Hopper compatibility
|
||||||
|
if minetest.get_modpath("hopper") and hopper ~= nil and hopper.add_container ~= nil then
|
||||||
|
hopper:add_container({
|
||||||
|
{"top", "castle_storage:ironbound_chest", "main"},
|
||||||
|
{"side", "castle_storage:ironbound_chest", "main"},
|
||||||
|
{"bottom", "castle_storage:ironbound_chest", "main"},
|
||||||
|
})
|
||||||
|
end
|
53
locale/template.pot
Normal file
53
locale/template.pot
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-02-25 19:18-0700\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: crate.lua:9 crate.lua:24
|
||||||
|
msgid "Crate"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crate.lua:34
|
||||||
|
msgid "@1 moves stuff in crate at @2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crate.lua:37
|
||||||
|
msgid "@1 moves stuff to crate at @2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: crate.lua:40 ironbound_chest.lua:113
|
||||||
|
msgid "@1 takes stuff from locked chest at @2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ironbound_chest.lua:35 ironbound_chest.lua:69
|
||||||
|
msgid "Ironbound Chest"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ironbound_chest.lua:65
|
||||||
|
msgid "Ironbound Chest (owned by @1)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ironbound_chest.lua:82 ironbound_chest.lua:91 ironbound_chest.lua:100
|
||||||
|
msgid "@1 tried to access a locked chest belonging to @2 at @3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ironbound_chest.lua:107
|
||||||
|
msgid "@1 moves stuff in locked chest at @2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ironbound_chest.lua:110
|
||||||
|
msgid "@1 moves stuff to locked chest at @2"
|
||||||
|
msgstr ""
|
13
textures/LICENSE.txt
Normal file
13
textures/LICENSE.txt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
16 px textures based on Castle mod
|
||||||
|
original textures by Philipner
|
||||||
|
|
||||||
|
License Textures: Napiophelios - CC-BY-SA 3.0
|
||||||
|
|
||||||
|
-castle_ironbound_chest_back.png
|
||||||
|
-castle_ironbound_chest_front.png
|
||||||
|
-castle_ironbound_chest_side.png
|
||||||
|
-castle_ironbound_chest_top.png
|
||||||
|
|
||||||
|
--------------------------------------------
|
BIN
textures/castle_crate.png
Normal file
BIN
textures/castle_crate.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 344 B |
BIN
textures/castle_crate_top.png
Normal file
BIN
textures/castle_crate_top.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 395 B |
BIN
textures/castle_ironbound_chest_back.png
Normal file
BIN
textures/castle_ironbound_chest_back.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 522 B |
BIN
textures/castle_ironbound_chest_front.png
Normal file
BIN
textures/castle_ironbound_chest_front.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 537 B |
BIN
textures/castle_ironbound_chest_side.png
Normal file
BIN
textures/castle_ironbound_chest_side.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 374 B |
BIN
textures/castle_ironbound_chest_top.png
Normal file
BIN
textures/castle_ironbound_chest_top.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 522 B |
Loading…
x
Reference in New Issue
Block a user