Deadbolt
Features
- No databases. In-game signs only.
- Super permissions support ONLY.
- Protects any type of furnace, dispenser, chest, door, trapdoor, cauldron, enchantment table, or brewing stand.
- Broadcast specific admin actions to those with "deadbolt.broadcast.xxx"
- Denies explosions, pistons, and redstone from circumventing protection
- Timed doors, [Timer:#], that toggle after a certain delay
- Server-wide protected blocks, use [Everyone] on line 3 or 4
- Modular plugin hooking system, add your own easily
- Compatible with Lockette
- Optional sign coloring
- Localization support
Notes
As this is a Lockette-type plugin, also similar to Alerter or BlockLock, things may seem similar. This plugin was originally created as a continuation of Lockette by Acru to add trapdoor support and other recent developments. Portions of this project were reverse engineered from Lockette and the original idea for a sign-based locking system still belongs with Acru. Credit where credit is due. As this only supports super permissions, if you need a plugin that is more backwards compatible with older configurations, you may want to look at Lockette.
If you have another plugin such as Cenotaph or ChestShop3 that you have integrated with Lockette and would rather use Deadbolt instead, I have created a LocketteSimulator that will allow you to use Deadbolt.
Check GitHub for the most recent files, there is a slight delay in getting files posted here authorized by the staff.
Usage
Place a sign next to the item you want to protect and type in the following
- Line 1: [Private]
- Line 2: Your name will be automatically filled, users with "deadbolt.admin.create" can specify someone else.
- Lines 3 and 4: You have a couple options for these lines
- Another player's name
- Unrestricted access via [Everyone] while preventing breaking
- Create an automatic timed door using [Timer:1] through [Timer:9]
Not enough room for all the names you need? Make another sign with the [More Users] on line 1
For ease of use in maintaining your signs without having to break them:
- Right click the sign to select it.
- Use "/deadbolt <line number> <text>" to directly modify that line.
When placing signs, valid locations are to the NORTH, SOUTH, EAST, and WEST of the target block.
Other valid blocks include:
- Doors: The blocks above and below.
- Trapdoors: The block that it is attached to (hinge-block) and directly above/below the trapdoor itself.
- Fence gates: Any block horizontally adjacent to the gate itself.
Use your imagination and hide those unsightly signs under walls.
Also, color is now available! Just add "deadbolt.user.color" and use &1-9,a-f in your sign.
Permissions
Configuration
Developer's Corner
DeadboltListener is a new system designed to incorporate your favorite plugin directly into Deadbolt.
To create your own or to view Deadbolt's static API, head over to the Developer's Corner
Currently available for download
- PermissionsBukkit, PermissionsEx, bPermissions, GroupManager
[GroupName]
- SimpleClans
[ClanName] [ClanTag]
- Towny
[TownName] [NationName] (All residents) +TownName+ +NationName+ (Assistant/Mayor only) 4 Config options: mayor,assistant,wilderness overrides.
Localizations
Have a completed localization? Drop me a link to it and Ill add it to the repository.
Once added, it is available for automatic downloading by changing the "language" setting in config.yml.
Available:
Issues?
The following issues are known:
- Double timer doors are broken
- Force coloring of Signs placed directly onto walls is broken.
- Vertical trapdoor chaining has been removed because it was only half implemented
Visit github and open an new issue.
Alternatively, try and find me at play.arkcraft.net.
Thank you so much
@josecuervo2016
I had this same error, I ended up decompiling the plugin and fixing/updating it manually myself...
[16:46:01] [Server thread/ERROR]: Could not pass event BlockBreakEvent to Deadbolt v2.2 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.PlayerInteractManager.breakBlock(PlayerInteractManager.java:286) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.PlayerInteractManager.a(PlayerInteractManager.java:215) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:637) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.PacketPlayInBlockDig.a(SourceFile:40) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.PacketPlayInBlockDig.a(SourceFile:10) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_91] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_91] at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_91] Caused by: java.lang.StackOverflowError at net.minecraft.server.v1_8_R3.World.getChunkAtWorldCoords(World.java:351) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.World.getType(World.java:784) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.World.getType(World.java:765) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.World.c(World.java:654) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at net.minecraft.server.v1_8_R3.World.getLightLevel(World.java:649) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.craftbukkit.v1_8_R3.block.CraftBlock.getLightLevel(CraftBlock.java:158) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.craftbukkit.v1_8_R3.block.CraftBlockState.<init>(CraftBlockState.java:36) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.craftbukkit.v1_8_R3.block.CraftBlock.getState(CraftBlock.java:288) [survival-spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:69) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:78) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:82) [?:?] at com.daemitus.deadbolt.Deadbolted.search(Deadbolted.java:
Is this ever going to have UUID support? When my players change their name and log back in, a staff member has to manually go around and break all their signs for them, so they can add new ones.
@zempire2010mjk
I have taken the open source code and removed this. Please contact me if you would like it where they have to type out private for it to work instead of the fastsign option. I had an issues like this also but i recoded it and made it where they have to type it now so they can do chestshop and etc..
@palindrome96
This is not an issue. Just tested. Its another plugin interfering with it.
WARNING : Big use-bug with sticky piston. It is possible to remove a private sign with a sticky piston laid back to the sign. Once activated is disabled, the sign disappears...
Players are changing their names and their chest don't change?
Is there a way to add more than three poeple to the list? I have four people who need to have access to my chests.
You can place an additional sign with the top row saying [more users]
I think.
@AdamTragedy
Got the newest build from:
http://ci.md-5.net/job/Deadbolt/
and its working great in 1.8.3. Many thanks!
I was tearing my hair out trying to do some things with Lockette that this plugin allows in its config. I wanted to make it so that if people blew up a chest, they could get the items out of it. It's so that pirates can seize a movecraft airship in unprotected airspace and loot it, yet in an area where explosions are protected against the airship's cargo is safe.
Thanks again!
8 months since the last update? cmon now...
Hey, you can use your plugin, please upgrade to the 1.8 Spigot for you plugin would not be compatible UUID really very nice thank you
any chance that you might be able to add a config option to allow SNEAK and PLACE of normal signs when the instant private sign option is also on?
a lot of people like the instant signs, but many of us also don't like that it interferes with being able to put normal signs directly on a chest for things such as labeling in tight spots, chestshop signs in tight spots, etc.
if you could make this happen it would be greatly appreciated.
Please update, I don't want to use Lockette.
Just updated checkNameHistory plugin. It will allow a player to automatically update Deadbolt's or Lockette's [private] and [More Users] sign when a player right click the sign after s/he changed the name.
I have a question, Some players on my server changed their names with the new feature of mojang.It will be an update for to change automatic the sings?
Does or Will Deadbolt support UUID? https://mojang.com/2015/01/announcing-minecraft-name-changes/
Is it possible, or can it be made possible to protect beacons? Those are certainly valuable and should be protected from tampering or theft.
Thanks absentee23 to link the deadbolt's dev jenkin.
In last version deadbolt don't working with fencegate & anvil.
fencegate have the sign but gate isn't protect
Can't put sign on anvil...
I don't find any custom protection also :(