forked from minetest/minetest_game
menu
mods
beds
boats
bones
bucket
carts
creative
default
models
schematics
sounds
textures
bubble.png
crack_anylength.png
default_acacia_bush_stem.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_apple.png
default_aspen_leaves.png
default_aspen_sapling.png
default_aspen_tree.png
default_aspen_tree_top.png
default_aspen_wood.png
default_book.png
default_book_written.png
default_bookshelf.png
default_bookshelf_slot.png
default_brick.png
default_bronze_block.png
default_bronze_ingot.png
default_bush_stem.png
default_cactus_side.png
default_cactus_top.png
default_chest_front.png
default_chest_lock.png
default_chest_side.png
default_chest_top.png
default_clay.png
default_clay_brick.png
default_clay_lump.png
default_cloud.png
default_coal_block.png
default_coal_lump.png
default_cobble.png
default_copper_block.png
default_copper_ingot.png
default_copper_lump.png
default_coral_brown.png
default_coral_orange.png
default_coral_skeleton.png
default_desert_cobble.png
default_desert_sand.png
default_desert_stone.png
default_desert_stone_block.png
default_desert_stone_brick.png
default_diamond.png
default_diamond_block.png
default_dirt.png
default_dry_grass.png
default_dry_grass_1.png
default_dry_grass_2.png
default_dry_grass_3.png
default_dry_grass_4.png
default_dry_grass_5.png
default_dry_grass_side.png
default_dry_shrub.png
default_fence_acacia_wood.png
default_fence_aspen_wood.png
default_fence_junglewood.png
default_fence_overlay.png
default_fence_pine_wood.png
default_fence_wood.png
default_flint.png
default_footprint.png
default_furnace_bottom.png
default_furnace_fire_bg.png
default_furnace_fire_fg.png
default_furnace_front.png
default_furnace_front_active.png
default_furnace_side.png
default_furnace_top.png
default_glass.png
default_glass_detail.png
default_gold_block.png
default_gold_ingot.png
default_gold_lump.png
default_grass.png
default_grass_1.png
default_grass_2.png
default_grass_3.png
default_grass_4.png
default_grass_5.png
default_grass_side.png
default_gravel.png
default_ice.png
default_iron_lump.png
default_item_smoke.png
default_junglegrass.png
default_jungleleaves.png
default_jungleleaves_simple.png
default_junglesapling.png
default_jungletree.png
default_jungletree_top.png
default_junglewood.png
default_key.png
default_key_skeleton.png
default_ladder_steel.png
default_ladder_wood.png
default_lava.png
default_lava_flowing_animated.png
default_lava_source_animated.png
default_leaves.png
default_leaves_simple.png
default_mese_block.png
default_mese_crystal.png
default_mese_crystal_fragment.png
default_meselamp.png
default_mineral_coal.png
default_mineral_copper.png
default_mineral_diamond.png
default_mineral_gold.png
default_mineral_iron.png
default_mineral_mese.png
default_mossycobble.png
default_obsidian.png
default_obsidian_block.png
default_obsidian_brick.png
default_obsidian_glass.png
default_obsidian_glass_detail.png
default_obsidian_shard.png
default_paper.png
default_papyrus.png
default_pine_needles.png
default_pine_sapling.png
default_pine_tree.png
default_pine_tree_top.png
default_pine_wood.png
default_river_water.png
default_river_water_flowing_animated.png
default_river_water_source_animated.png
default_sand.png
default_sandstone.png
default_sandstone_block.png
default_sandstone_brick.png
default_sapling.png
default_sign_steel.png
default_sign_wall_steel.png
default_sign_wall_wood.png
default_sign_wood.png
default_silver_sand.png
default_snow.png
default_snow_side.png
default_snowball.png
default_steel_block.png
default_steel_ingot.png
default_stick.png
default_stone.png
default_stone_block.png
default_stone_brick.png
default_tool_bronzeaxe.png
default_tool_bronzepick.png
default_tool_bronzeshovel.png
default_tool_bronzesword.png
default_tool_diamondaxe.png
default_tool_diamondpick.png
default_tool_diamondshovel.png
default_tool_diamondsword.png
default_tool_meseaxe.png
default_tool_mesepick.png
default_tool_meseshovel.png
default_tool_mesesword.png
default_tool_steelaxe.png
default_tool_steelpick.png
default_tool_steelshovel.png
default_tool_steelsword.png
default_tool_stoneaxe.png
default_tool_stonepick.png
default_tool_stoneshovel.png
default_tool_stonesword.png
default_tool_woodaxe.png
default_tool_woodpick.png
default_tool_woodshovel.png
default_tool_woodsword.png
default_torch_animated.png
default_torch_on_ceiling_animated.png
default_torch_on_floor.png
default_torch_on_floor_animated.png
default_tree.png
default_tree_top.png
default_water.png
default_water_flowing_animated.png
default_water_source_animated.png
default_wood.png
gui_formbg.png
gui_furnace_arrow_bg.png
gui_furnace_arrow_fg.png
gui_hb_bg.png
gui_hotbar.png
gui_hotbar_selected.png
heart.png
player.png
player_back.png
wieldhand.png
README.txt
aliases.lua
crafting.lua
craftitems.lua
functions.lua
furnace.lua
init.lua
item_entity.lua
legacy.lua
license.txt
mapgen.lua
nodes.lua
player.lua
tools.lua
torch.lua
trees.lua
doors
dye
farming
fire
flowers
give_initial_stuff
nyancat
screwdriver
sethome
sfinv
stairs
tnt
vessels
walls
wool
xpanes
.gitignore
.luacheckrc
.travis.yml
README.txt
game.conf
game_api.txt
minetest.conf
minetest.conf.example
settingtypes.txt
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.