LockettePro - UUID Support [Abandoned - restarting] 2.9.0

High performance sign-based lock plugin, highly customizable

  1. connection_lost
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    Where did you go?
    Update from January 31, 2021:
    I am restarting this project very soon. I saw several forks updating the project thru 1.14 (the version that breaks the plugin).
    I will start officially restart maintaining this plugin again before 1.17 get released.
    Want to contribute and update the plugin now? PR in GitHub!

    17w47a Snapshot Concerns

    In the latest snapshot, Mojang introduced a feature to allow any chests to be placed adjacent to each other. This may cause issue in the further Minecraft versions (1.13+). I will remove this warning as soon as the problem is addressed.

    What is LockettePro?

    Remember the sign-based lock plugin Lockette that is popular for years? LockettePro is a deep remade & rewrite of the original Lockette. It has massive performance enhancement, fixed bugs and completely customizable.

    Why LockettePro?
    I love Lockette, but as time goes by, I get deeply depressed with it. Its codebase is messy, performance is bad, unnecessary checks are everywhere... It also uses legacy deprecated methods, having a piston-related bug for years... It is not very possible to fix all the issues, so I started to start a brand new plugin. And today, I am proudly to present you the ultimate sign lock plugin, LockettePro.

    LockettePro - Pros
    * No database. All information required for a lock is recorded on the sign.
    * Switch to LockettePro and switch back to Lockette worry-free anytime.
    * Absolutely better performance. Performance test comparison below.
    * Language files are editable, with UTF-8 support.
    * Able to disable "bloat" features easily with no affect to performance.
    * Customizable. For instance, you can set lockable for every single block.
    * Just saying original Lockette's UUID support is not working between server restarts...

    LockettePro - Cons
    * Lack of admin snooping alert and I am not likely to add this soon.
    * (Well seems like I have resolved every other cons, great!)

    This test is focused on the most serious performance issue caused by hoppers InventoryMoveItemEvent. The event happens when hoppers are trying to pull items from the container above. Test is performed on my server with a monstrous Chest-Hopper rig consisting 10000 sets of locked chest and hoppers. A hopper tries to pull an item from a chest ever 8 ticks, resulting ~1250 interactions per tick.
    Lockette: 41.8 microseconds per event
    LockettePro without cache: 19.4 microseconds per event
    LockettePro with cache set to 10 seconds: 4.3 microseconds per event

    ProtocolLib if you use UUID support. Soft-depended supported plugins could be found as a list below.

    How to Use LockettePro?
    The usage of Lockette and LockettePro are exactly the same.
    For players, just hold a sign in your hand, then right click a chest or any lockable block. If you want to lock a door, you may put a sign on the block above or below the door too. You may also SHIFT+RIGHT CLICK the block to prevent it get automatically locked, or you can write [Private] text manually on signs as well.
    Share the chest with another user:
    After claiming the chest, you can add another user on the sign. First, right click the sign, then enter /lock 3 <user name>
    Share the chest with everyone:
    Same as above, you just use [Everyone] (with brackets) in the username.
    Add another sign:
    If one sign is not enough, you may hold a sign and right click on another surface. It will snap on the surface and become a [More User] sign automatically. Placing the sign while holding SHIFT will bypass the sign creation.
    Timer with doors:
    I have no idea why Lockette is doing this, but I am adding this feature anyways. If you add a line [timer:X] (with brackets, and X means an integer) to a door lock, the door will automatically close after X seconds.
    Even more information, please see Wiki.

    Commands and Permissions
    Main command is /lock. Aliases contains /lockit, /lockette and /lockettepro.
    * All players have the permission to lock a chest and edit a chest by default.
    * In order to stay consistent with original Lockette, Towny server players need "lockettepro.towny.wilderness" in order to lock chests in the wilds.
    * Edit a sign: /lock <line number> <player>
    * Reload configuration: /lock reload, requires permission lockettepro.reload
    * Admin break lock permission: lockettepro.admin.break
    * Admin use block (snoop chests) permission: lockettepro.admin.use
    * Admin override placing interference blocks permission: lockettepro.admin.interfere
    * Admin edit any sign permission: lockettepro.admin.edit
    * More info please see the wiki page.

    Head to GitHub wiki page for configuration. [config.yml] [lang.yml]
    It is currently NOT recommended to use lock expiry feature since it will be changed. Please avoid using it in order to prevent conflicts.


    Supported Plugins & Special Lock Line Features
    WorldGuard & Residence:

    If a player does not have the "break" permission to a block due to WorldGuard or Residence, then he cannot lock it.
    If a sign has a user line formatted "[SomeName]", this means any player in town or nation "SomeName" will have access to this chest.
    Players are not allowed to lock a chest in the wilderness unless he has permission lockettepro.towny.wilds
    Factions (from MassiveCraft):
    If a sign has a user line formatted "[FactionName]", this means any player in faction "FactionName" will have access to this chest.
    If a sign has a user line formatted "[clantag]", this means any player in that clan will have access to this chest.
    If a sign has a [GroupName] in user line, anyone in that group could access it. The group is taken according to Vault.
    Scoreboard Teams:
    If a sign has a [TeamName] in user line, anyone in that team could access it. The team is Bukkit's scoreboard.
    Other plugins:
    Some plugins are born to compatible with Lockette/LockettePro thanks to Bukkit's event priority mechanics. Players are not able to lock a chest/block that has already protected by another plugin. Known compatible plugin includes ChestShop.
    If you want some plugin to be supported, that plugin must be at least non-trivial with proper API. If that plugin is a premium plugin, source or a free copy of that plugin (from author) is required for me to test it properly as well.

    Please post issues to GitHub issue page if possible or leave a comment at discussions. Critical issues (exploits) please PM @connection_lost . Make sure to bring as many information as possible, such as error log, existing plugins etc..

    Known Issues & FAQ
    1. I have issues with LockettePro + UUID Support + Minecraft 1.8.8...
    Please note there is an issue with ProtocolLib, not LockettePro. A fixed version of ProtocolLib by my friend can be found here: http://ci.yumc.pw/job/ProtocolLib/
    2. FactionsUUID is not supported...

    The goal of LockettePro is to deliver a high-quality, and high performance sign-based lock plugin that can replace original Lockette. My server uses LockettePro too, and I will take full responsible for this plugin.
    Like LockettePro? Missing features? Issues or bugs? What can I help to make it better? Leave a comment in the discussion, I want to know!
    * My English is not very good, if I made some errors please don't laugh at me :)

    Special Thanks
    > bookone, CharltonJay, clovisd, HotpotKnight, Jiong8799, 小小马 for discovering critical issues.
    > Alarar for Spanish translation (lang_es.yml)
    > Maxetto for Italian translation (lang_it.yml)
    > And all pull requests on GitHub!

Recent Reviews

  1. skino0
    Version: 2.9.0
    Still not updated... => I will start officially restart maintaining this plugin again before 1.17 get released.
  2. arthur9874
    Version: 2.9.0
    good plugin but when i write [private] (not quick support) didnt write my name in first line
    ty and sry for my bad english
  3. kuba150
    Version: 2.9.0
    I have this error:

    [19:09:22] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to LockettePro v2.9.0
    org.bukkit.event.EventException: null
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:442) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.PlayerInteractManager.a(PlayerInteractManager.java:441) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1251) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:27) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.TickTask.run(SourceFile:18) [spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeTask(SourceFile:144) [spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeNext(SourceFile:118) [spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.MinecraftServer.ba(MinecraftServer.java:918) [spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.MinecraftServer.executeNext(MinecraftServer.java:911) [spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.awaitTasks(SourceFile:127) [spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.MinecraftServer.sleepForTick(MinecraftServer.java:895) [spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:828) [spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
    Caused by: java.lang.NullPointerException
    at org.bukkit.material.Sign.getFacing(Sign.java:134) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    at me.crafter.mc.lockettepro.LocketteProAPI.isLockedSingleBlock(LocketteProAPI.java:163) ~[?:?]
    at me.crafter.mc.lockettepro.LocketteProAPI.isLocked(LocketteProAPI.java:58) ~[?:?]
    at me.crafter.mc.lockettepro.BlockPlayerListener.onAttemptInteractLockedBlocks(BlockPlayerListener.java:249) ~[?:?]
    at sun.reflect.GeneratedMethodAccessor2815.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_201]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:315) ~[spigot-1.15.2.jar:git-Spigot-6de3d4b-a6f8093]
    ... 19 more
  4. Kshitij
    Version: 2.9.0
    Great plugin! Thanks! I have seen lockette from a long time!

    Ignore: BLAH BLAH B
  5. TheViperShow
    Version: 2.9.0
    Not good. Not updated , no support no way to fix issues. Currently there's an huge issue as people can just bypass this plugin with Minecart hoppers. There's no way to disable them stealing stuff from claimed chests. Every protection is on , this is not a bug or a glitch, this is something that the author hasn't thought off and since the plugin is outdated there's no way to fix it
  6. svartkatt
    Version: 2.9.0
    Its really good, but i have some issues with it if anyone could help me it it i would appriciate it a lot thanks in advanced,
  7. eickmung
    Version: 2.9.0
    The Very LockettePro Plugin! Thank you very much! Im using SkyBlock Server! Thanks!
    Version: 2.9.0
    Great plugin! I use this plugin on my survival server /w towny and it works great! Something that I would love to see in the future is more towny support than just not being able to [private] in the wilderness, like chests going public when land is unclaimed. Thanks a lot for this well-made and free plugin!
  9. LordofLightning
    Version: 2.9.0
  10. ArifErdoganK
    Version: 2.9.0
    I can't use this great plugin because it doesn't support SavageFactions