LockettePro - UUID Support 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?
    Sorry for not showing up for a long time. I was close to graduating and busy finding myself a job. Fortunately, things finally went well, and I will be back in track soon.

    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!
    Emekuber, pinkpig, Temale and 15 others like this.

Recent Reviews

  1. Thredz
    Version: 2.9.0
    thanks for the plugin, I wrote the lang_fr.yml if you want let me know to give you the file.
  2. iCourt
    Version: 2.9.0
    My users can still open chests while locked... Though, they have no permissions at all.

    Your plugin.yml (yeah I decompiled it) doesn't have your admin permissions registered... Not sure if that is the reason, but that's happened.
  3. zeddy
    Version: 2.9.0
  4. ZakkyPlays
    Version: 2.9.0
    Hi! By far the best plugin ever. but one question! do i really need Protocol Lib to be installed on my server or does LockettePro need it if you want the LockettePro to support UUID Support?
  5. mrssandman
    Version: 2.9.0
    Very good plugin but the players /non op and op can open chest even thre is a sign plz help me and I put Five stars !
    1. connection_lost
      Author's Response
      Considering hundreds and thousands of plugin users does not encounter issue, please check whether you have misconfigured or misused my the plugin or seek for help in the discussion.
  6. devioursoul
    Version: 2.9.0
    Great plugin, have used it for quite a long time now. Happy user.
    Also, Welcome back from vacation. :)
  7. Spikey101
    Version: 2.8.1
    1. connection_lost
      Author's Response
      This is a ProtocolLib issue. As it for now, seems like the ProtocolLib author does not want to fix it.
      One of my friend has a fixed version of ProtocolLib which can be found here: http://ci.yumc.pw/job/ProtocolLib/

      Also, please be advised that leaving a negative comment usually don't help solving issues. This especially hurts when the issue is not at my end.
  8. mhemperors
    Version: 2.8.1
    Please Hook This Plugin With GriefPrevention beacuse Players Can Grief Each Other With private Sign in claim area
    1. connection_lost
      Author's Response
      Considering there are hundreds of plugins that my plugin may possibly hook into, please do not leave a negative rating just because your desired plugin is not currently supported.
  9. Eternal__Dark
    Version: 2.8.1
    [19:57:41 INFO]: [Yum] [Yum 事件监控] 插件 LockettePro 处理 PlayerInteractEvent 事件时发生异常!
    [19:57:41 INFO]: [Yum] 异常名称: java.lang.NoSuchMethodError
    [19:57:41 INFO]: [Yum] 异常说明: com.bekvon.bukkit.residence.Residence.getInstance()Lcom/bekvon/bukkit/residence/Residence;
    [19:57:41 INFO]: [Yum] 简易错误信息如下:
    [19:57:41 INFO]: [Yum] 位于 me.crafter.mc.lockettepro.Dependency.isProtectedFrom(Dependency.java:79)
    [19:57:41 INFO]: [Yum] 位于 me.crafter.mc.lockettepro.BlockPlayerListener.onPlayerQuickLockChest(BlockPlayerListener.java:46)
    [19:57:41 INFO]: [Yum] 位于 com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor540.execute( 未知:-1)
    [19:57:41 INFO]: [Yum] 位于 org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:44)
    [19:57:41 INFO]: [Yum] 位于 co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78)
    1. connection_lost
      Author's Response
  10. dart2112
    Version: 2.8.1
    Works well and seems very efficient. Great job and I hope to see this plugin supported long into the future.