minetest_game/mods/default
Auke Kok e4b1c93512 Keys: Allow easy sharing of access without commands
This code adds the key concept to minetest_game, and integrates it
with lockable nodes. Currently supported lockable items are the Steel
Door, the Steel Trapdoor, and the Locked Chest.

The goal of this modification is to introduce a fine-grained multi-
player permission system that is intuitive and usable without any
console or chat commands, and doesn't require extra privileges to
be granted or setup. Keys can also physically be conveyed to other
players, adding to gameplay and adding some personality that is
preferable to console commands or editing formspecs.

A skeleton key can be crafted with 1 gold ingot. Skeleton keys can
then be matched to a lockable node by right-clicking the skeleton
key on a lockable node, which changes the skeleton key to a "key".

Gold was chosen as it's currently a not-so very useful item, and
therefore it's likely that players have some, but aren't really
using it for any purpose.

This key can subsequently used by any player to open or access that
lockable node, including retrieving items from Locked Chests, or
putting items in them.

They key is programmed to fit only the particular locked node it is
programmed to. This is achieved by storing a secret value in both
key and locked node. If this secret value doesn't match, the key
will not open the locked node. This allows many keys to be created
for one chest or door, but a key will only fit one node ever. The
secrets are stored in node, and item meta for the key.

If a locked node is removed, all keys that opened it are no longer
valid. Even if a new door/chest is placed in exactly the same spot,
the old keys will no longer fit that node.

Keys can be smelted back in gold ingots if they are no longer useful.

The method of storing a secret in nodemeta and itemstackmeta is secure
as there is no way for the client to create new items on the server
with a particular secret metadata value. Even if you could possible
create such an itemstack on the client, the server does not ever read
itemstackmeta from a client package.

The patch adds an API that allows other nodes and nodes added by
mods to use the same keys as well. The method how to implement this
is described in game_api.txt. The mod should add 2 callbacks to it's
node definition. Example code is given.

Textures are from PixelBOX, thanks to Gambit.
2016-11-25 03:01:14 +00:00
..
models Merge 'torches' mod as default:torch. 2016-11-23 15:29:53 -08:00
schematics Default: New aspen tree schematics 2016-06-27 05:32:36 +01:00
sounds Make smoke puff sound mono 2016-11-21 21:23:50 -08:00
textures Keys: Allow easy sharing of access without commands 2016-11-25 03:01:14 +00:00
README.txt Keys: Allow easy sharing of access without commands 2016-11-25 03:01:14 +00:00
aliases.lua Carts: Merge boost_cart as "carts" mod 2016-11-21 03:15:04 +00:00
crafting.lua Keys: Allow easy sharing of access without commands 2016-11-25 03:01:14 +00:00
craftitems.lua Make flammable: Flowers, grasses and several crafitems 2016-10-25 02:37:36 +01:00
functions.lua Update 'nodeupdate()' to 'check_for_falling()' API 2016-11-22 05:55:36 +00:00
furnace.lua Fix whitespace errors to silence luacheck. 2016-11-19 19:39:51 -08:00
init.lua Merge 'torches' mod as default:torch. 2016-11-23 15:29:53 -08:00
item_entity.lua Default: Destroy flammable items when in fire or lava 2016-10-23 03:48:37 +01:00
legacy.lua Licenses: (Part 4) Remove overlooked WTFPL text. Cleanup 2016-09-08 06:17:05 +01:00
license.txt Default: Add damage and falling damage sounds 2016-10-24 04:55:03 +01:00
mapgen.lua Move nyancats into a separate mod 2016-07-18 04:15:44 +01:00
nodes.lua Keys: Allow easy sharing of access without commands 2016-11-25 03:01:14 +00:00
player.lua Fix whitespace errors to silence luacheck. 2016-11-19 19:39:51 -08:00
tools.lua Keys: Allow easy sharing of access without commands 2016-11-25 03:01:14 +00:00
torch.lua Merge 'torches' mod as default:torch. 2016-11-23 15:29:53 -08:00
trees.lua Fix sapling placement handling of on_rightclick and CONTENT_IGNORE 2016-10-05 22:22:15 +01:00

README.txt

Minetest Game mod: default
==========================
See license.txt for license information.

Authors of source code
----------------------
Originally by celeron55, Perttu Ahola <celeron55@gmail.com> (LGPL 2.1)
Various Minetest developers and contributors (LGPL 2.1)

Authors of media (textures, models and sounds)
----------------------------------------------
Everything not listed in here:
celeron55, Perttu Ahola <celeron55@gmail.com> (CC BY-SA 3.0)

Cisoun's texture pack (CC BY-SA 3.0):
  default_jungletree.png
  default_lava.png
  default_leaves.png
  default_sapling.png
  default_stone.png
  default_tree.png
  default_tree_top.png
  default_water.png

Cisoun's conifers mod (CC BY-SA 3.0):
  default_pine_needles.png

Originating from G4JC's Almost MC Texture Pack (CC BY-SA 3.0):
  default_torch.png
  default_torch_on_ceiling.png
  default_torch_on_floor.png

VanessaE's animated torches (CC BY-SA 3.0):
  default_torch_animated.png
  default_torch_on_ceiling_animated.png
  default_torch_on_floor_animated.png
  default_torch_on_floor.png

RealBadAngel's animated water (CC BY-SA 3.0):
  default_water_source_animated.png
  default_water_flowing_animated.png

VanessaE (CC BY-SA 3.0):
  default_desert_sand.png
  default_desert_stone.png
  default_sand.png
  default_mese_crystal.png
  default_mese_crystal_fragment.png

Calinou (CC BY-SA 3.0):
  default_brick.png
  default_papyrus.png
  default_mineral_copper.png
  default_glass_detail.png

MirceaKitsune (CC BY-SA 3.0):
  character.x

Jordach (CC BY-SA 3.0):
  character.png

PilzAdam (CC BY-SA 3.0):
  default_jungleleaves.png
  default_junglesapling.png
  default_obsidian_glass.png
  default_obsidian_shard.png
  default_mineral_gold.png

jojoa1997 (CC BY-SA 3.0):
  default_obsidian.png

InfinityProject (CC BY-SA 3.0):
  default_mineral_diamond.png

Splizard (CC BY-SA 3.0):
  default_pine_sapling.png

Zeg9 (CC BY-SA 3.0):
  default_coal_block.png
  default_steel_block.png
  default_copper_block.png
  default_bronze_block.png
  default_gold_block.png

paramat (CC BY-SA 3.0):
  wieldhand.png -- Copied from character.png by Jordach (CC BY-SA 3.0)
  default_pinetree.png
  default_pinetree_top.png
  default_pinewood.png
  default_acacia_leaves.png
  default_acacia_leaves_simple.png
  default_acacia_sapling.png
  default_acacia_tree.png
  default_acacia_tree_top.png
  default_acacia_wood.png
  default_acacia_bush_stem.png
  default_bush_stem.png
  default_junglewood.png
  default_jungletree_top.png
  default_sandstone_brick.png
  default_obsidian_brick.png
  default_stone_brick.png
  default_desert_stone_brick.png
  default_sandstone_block.png
  default_obsidian_block.png
  default_stone_block.png
  default_desert_stone_block.png
  default_river_water.png
  default_river_water_source_animated.png
  default_river_water_flowing_animated.png
  default_dry_grass.png
  default_dry_grass_side.png
  default_dry_grass_*.png
  default_grass.png
  default_grass_side.png
  default_mese_block.png
  default_silver_sand.png

brunob.santos (CC BY-SA 4.0):
  default_desert_cobble.png

BlockMen (CC BY-SA 3.0):
  default_wood.png
  default_clay_brick.png
  default_iron_ingot.png
  default_gold_ingot.png
  default_tool_steelsword.png
  default_diamond.png
  default_book.png
  default_tool_*.png
  default_lava_source_animated.png
  default_lava_flowing_animated.png
  default_stick.png
  default_chest_front.png
  default_chest_lock.png
  default_chest_side.png
  default_chest_top.png
  default_mineral_mese.png
  default_meselamp.png
  bubble.png
  gui_*.png

Wuzzy (CC BY-SA 3.0):
  default_bookshelf_slot.png (based on default_book.png)

sofar (CC BY-SA 3.0):
  default_book_written.png, based on default_book.png
  default_aspen_sapling
  default_aspen_leaves
  default_aspen_tree
  default_aspen_tree_top, derived from default_pine_tree_top (by paramat)
  default_aspen_wood, derived from default_pine_wood (by paramat)
  default_gravel.png -- Derived from Gambit's PixelBOX texture pack light gravel

Neuromancer (CC BY-SA 2.0):
  default_cobble.png, based on texture by Brane praefect
  default_mossycobble.png, based on texture by Brane praefect

Neuromancer (CC BY-SA 3.0):
  default_dirt.png
  default_furnace_*.png

Gambit (CC BY-SA 3.0):
  default_bronze_ingot.png
  default_copper_ingot.png
  default_copper_lump.png
  default_iron_lump.png
  default_gold_lump.png
  default_clay_lump.png
  default_coal.png
  default_grass_*.png
  default_paper.png
  default_diamond_block.png
  default_ladder_steel.png
  default_sign_wall_wood.png
  default_flint.png
  default_snow.png
  default_snow_side.png
  default_snowball.png
  default_key.png
  default_key_skeleton.png

asl97 (CC BY-SA 3.0):
  default_ice.png

KevDoy (CC BY-SA 3.0)
  heart.png

Pithydon (CC BY-SA 3.0)
  default_coral_brown.png
  default_coral_orange.png
  default_coral_skeleton.png

Ferk (CC0 1.0)
  default_item_smoke.png
  default_item_smoke.ogg, based on sound by http://opengameart.org/users/bart

Glass breaking sounds (CC BY 3.0):
  1: http://www.freesound.org/people/cmusounddesign/sounds/71947/
  2: http://www.freesound.org/people/Tomlija/sounds/97669/
  3: http://www.freesound.org/people/lsprice/sounds/88808/

sonictechtonic (CC BY 3.0):
https://www.freesound.org/people/sonictechtonic/sounds/241872/
  player_damage.ogg

Mito551 (sounds) (CC BY-SA 3.0):
  default_dig_choppy.ogg
  default_dig_cracky.ogg
  default_dig_crumbly.1.ogg
  default_dig_crumbly.2.ogg
  default_dig_dig_immediate.ogg
  default_dig_oddly_breakable_by_hand.ogg
  default_dug_node.1.ogg
  default_dug_node.2.ogg
  default_grass_footstep.1.ogg
  default_grass_footstep.2.ogg
  default_grass_footstep.3.ogg
  default_gravel_footstep.1.ogg
  default_gravel_footstep.2.ogg
  default_gravel_footstep.3.ogg
  default_gravel_footstep.4.ogg
  default_grass_footstep.1.ogg
  default_place_node.1.ogg
  default_place_node.2.ogg
  default_place_node.3.ogg
  default_place_node_hard.1.ogg
  default_place_node_hard.2.ogg
  default_snow_footstep.1.ogg
  default_snow_footstep.2.ogg
  default_hard_footstep.1.ogg
  default_hard_footstep.2.ogg
  default_hard_footstep.3.ogg
  default_sand_footstep.1.ogg
  default_sand_footstep.2.ogg
  default_wood_footstep.1.ogg
  default_wood_footstep.2.ogg
  default_dirt_footstep.1.ogg
  default_dirt_footstep.2.ogg
  default_glass_footstep.ogg

Metal sounds:
  default_dig_metal.ogg - yadronoff - CC-BY-3.0
  - https://www.freesound.org/people/yadronoff/sounds/320397/
  default_dug_metal.*.ogg - Iwan Gabovitch - qubodup - CC0
  - http://opengameart.org/users/qubodup
  default_metal_footstep.*.ogg - Ottomaani138 - CC0
  - https://www.freesound.org/people/Ottomaani138/sounds/232692/
  default_place_node_metal.*.ogg - Ogrebane - CC0
  - http://opengameart.org/content/wood-and-metal-sound-effects-volume-2

Tool breaking sounds added by sofar: CC-BY-3.0
  default_tool_breaks.* - http://www.freesound.org/people/HerbertBoland/sounds/33206/

AGFX
https://www.freesound.org/people/AGFX/
(CC BY 3.0):
  default_water_footstep.1.ogg
  default_water_footstep.2.ogg
  default_water_footstep.3.ogg
(default_water_footstep.4.ogg is silent)