LoZDungeons is a plugin that was created to fulfil this request. As shown on the thread, LoZDungeons currently only fulfils the first idea, but has plenty of ideas to improve upon in the future!
This plugin allows you to create a dungeon door. This door will be locked for all players, and in order to unlock it, they will need to right click it with a key for the door. There can be more than one key to unlock a door. Once a player unlocks the door, the blocks will disappear for that player only, allowing them to pass through. Doors can automatically lock after a certain amount of time has passed, or remain unlocked forever. This is configurable per door.
The command has the following aliases: lozdungeons, lozdung, or lozd
lozdungeons.*: description: Gives you all LoZDungeons permissions! default: op children: lozdungeons.door.*: true lozdungeons.key.*: true lozdungeons.door.*: description: Gives you all LoZDungeons door permissions! default: op children: lozdungeons.door.create: true lozdungeons.door.delete: true lozdungeons.door.list: true lozdungeons.door.settimer: true lozdungeons.key.*: description: Gives you all LoZDungeons door permissions! default: op children: lozdungeons.key.create: true lozdungeons.door.create: description: Allows you to create a LoZDungeon door! default: op lozdungeons.door.delete: description: Allows you to delete a LoZDungeon door! default: op lozdungeons.door.list: description: Allows you to list the LoZDungeon doors! default: op lozdungeons.door.settimer: description: Allows you to change the timer of a LoZDungeon door! default: op lozdungeons.key.create: description: Allows you to create a LoZDungeon key! default: op lozdungeons.lock: description: Allows you to lock a door with a command! default: op lozdungeons.unlock: description: Allows you to unlock a door with a command! default: op
There is no need for any configuration for this plugin, everything is handled through in-game commands. However, a config.yml file will be generated to store the properties for each dungeon door, so be sure not to delete this file!
The source for this plugin can be found on this GitHub page.