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
    Contributors:
    connection_lost
    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!)

    Performance
    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.
    [​IMG]
    Lockette: 41.8 microseconds per event
    [​IMG]
    LockettePro without cache: 19.4 microseconds per event
    [​IMG]
    LockettePro with cache set to 10 seconds: 4.3 microseconds per event
    [​IMG]

    Dependency
    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.
    [​IMG]
    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>
    [​IMG]
    Share the chest with everyone:
    Same as above, you just use [Everyone] (with brackets) in the username.
    [​IMG]
    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.
    [​IMG]
    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.
    [​IMG]
    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.

    Configuration
    DO NOT TURN ON FEATURES THAT YOU ARE NOT FAMILIAR WITH BEFORE READING THE PROPER SECTION ON WIKI!
    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.

    Source
    https://github.com/connection-lost/LockettePro

    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.
    Towny:
    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.
    SimpleClans:
    If a sign has a user line formatted "[clantag]", this means any player in that clan will have access to this chest.
    Vault:
    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.

    Issues
    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...
    Soon

    Braggins
    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. KimoVoidDSGN
    KimoVoidDSGN
    5/5,
    Version: 2.9.0
    Great plugin, but please update to 1.13 ASAP. Keep the good job :) --------------
  2. Michiel_d_s_m
    Michiel_d_s_m
    4/5,
    Version: 2.9.0
    How to add a group to your door. can you send me a screen pls? Thx
    -------------
  3. Mapucraft
    Mapucraft
    5/5,
    Version: 2.9.0
    en la 1.12 es un plugin fenomenal, pero en la 1.13 hay un error con towny bien grave, cuando un usuario saca el claim, los carteles desaparecen y eso en la 1.12 no pasaba, por favor updatea a 1.13:(
    ---------------------------------------------------------------------------------------------
    in 1.12 it is a phenomenal plugin, but in 1.13 there is an error with towny very serious, when a user takes out the claim, the posters disappear and that in 1.12 did not pass, please update to 1.13 :(
  4. Misael_lagos
    Misael_lagos
    5/5,
    Version: 2.9.0
    excellent plugin My users like it because they can protect their chests and other things at last! Thank you very much: D 11 /
  5. KaanDeniz
    KaanDeniz
    4/5,
    Version: 2.9.0
    [17:33:06 ERROR]: Could not pass event PlayerInteractEvent to LockettePro v2.9.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:227) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at net.minecraft.server.v1_8_R3.PlayerInteractManager.interact(PlayerInteractManager.java:463) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:736) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:52) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_172]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_172]
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SystemUtils.java:19) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:718) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:367) [spigot-1.8.7.jar:git-Spigot-3ccbe77-a6a57a9]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:657) [spigot-1.8.7
  6. YuriTheMan
    YuriTheMan
    4/5,
    Version: 2.9.0
    useful plugin, but unfortunately there hasn't been a lot of development recently
  7. VthorBlaster
    VthorBlaster
    5/5,
    Version: 2.9.0
    Es un excelente plugin solo falta información y ejemplos de como agregar los "Scoreboards-Team" pues no hay documentación ni imágenes acerca de esto.
  8. ohbong
    ohbong
    5/5,
    Version: 2.9.0
    please update 1.13 :)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
  9. muzyeh
    muzyeh
    5/5,
    Version: 2.9.0
    like Waiting for 1.13 <3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  10. BBEFY_JOE
    BBEFY_JOE
    5/5,
    Version: 2.9.0
    Phenomenal plugin that has saved many a player from the troll, greifer, and a**hole. Would recommend for any server 10/10