Skip to content
  • Auke Kok's avatar
    e4b1c935
    Keys: Allow easy sharing of access without commands · e4b1c935
    Auke Kok authored
    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.
    e4b1c935
    Keys: Allow easy sharing of access without commands
    Auke Kok authored
    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.
Loading