BlockLocker 1.7

Protect chests, doors, etc. using signs. UUID compatible.

  1. rutgerkok
    Native Minecraft Version:
    1.14
    Tested Minecraft Versions:
    • 1.14
    Source Code:
    https://github.com/rutgerkok/BlockLocker
    Contributors:
    jensvh, TheBusyBiscuit
    Bug reports:..............................https://github.com/rutgerkok/BlockLocker/issues or use the discussion thread

    This plugin allows you to protect chests, doors, furnaces, dispensers, droppers, hoppers and many other blocks simply using signs. Once a sign is attached, only people listed on the sign can access the container. It uses no databases, all information is stored on sign attached to the protected block. So if you use WorldEdit to move a chest, the chest will still be protected.

    The plugin can be used as a replacement for LockettePro. Existing protections will look a bit funny at first (the UUID on the sign is not hidden, as BlockLocker does not include a protocol hack), but once you interact with the protection it will be updated to look normal again. This is because BlockLocker stores the UUID on a "hover text", which is hidden automatically by the Minecraft client.

    Video
    Video created by ServerMiner


    Features

    [​IMG]

    • Protect chest, doors, etc. simply by attaching a sign.
    • Doesn't need a database, the plugin just looks for attached signs.
    • Allow other players to access your protection.
    • Allow groups to access your protection.
      • Groups are defined using permission nodes, scoreboard teams, Towny towns, Towny nations or MassiveCraft Factions
    • UUID support
      • Players can change their names without losing access to their protected blocks.
      • Stores UUIDs on signs in a hidden text component, so UUIDs are saved between server restarts.
    • Supports double doors and double chests (double trapped chests too): you only need one sign to protect both blocks.
    • Shows a message to players placing a chest, so that they know chests can be protected.
    • Automatically closes doors when a [Timer:X] tag is added, or when a default door close time has been specified in the config file.
    • Automatically let protections expire if the owner hasn't logged in for X numbers of days. (Disabled by default.)
    • Redstone support
      • Redstone contraptions cannot open protected doors, unless a [Redstone] tag is added.
      • Hoppers (minecart hoppers too!) cannot take or put items, unless a [Redstone] tag is added.
    • Auto-updater
      • Server owners get notified when there is a BlockLocker update available.
      • The auto-updater works asynchronously, it will never block the server.
      • The auto-updater used to be able to download and install JAR files from spigotmc.org (it is restricted to spigotmc.org only). The code for this is still in the plugin. However, the plugin isn't able to contact spigotmc.org anymore, probably because of a DDOS protection measure. As a result, the auto-updater can only notify you of updates, but you have to download them yourself.
      • The auto-updater can of course be toggled off.
    • Configuration
      • Add extra blocks, for example TNT, levers or note blocks.
      • You can set that "attachable" blocks like levers can be protected by attaching a sign on the block the lever is attached on (no need to put signs on the lever itself!)
      • All messages can be translated.
      • Reload config files while the server is running using /blocklocker reload

    Usage

    [​IMG]

    Placing signs
    For containers (chests, furnaces, dispensers, etc.) it's easy: just place a sign against the block. BlockLocker will automatically add [Private] to the first line and your name to the second.

    You can also place a sign while sneaking, this allows you to add some text to the third and fourth lines. You then need to write[Private] yourself on the first line. You can leave the second line empty, your name will automatically be placed here.

    For doors, place a sign with [Private] on the first line against the block above the door. Placing a sign on the block below the door or even on the door itself works too, but looks less nice.

    Trapdoors can be protected by placing a sign with [Private] on the first line against the block the trapdoor is attached to.

    Editing signs
    Right-click the sign and type /blocklocker <line number> <text> to replace the text on the given line. You can shorten this to /bl <line number> <text>.

    Adding people to the sign
    On the third and fourth row of the sign with [Private] you can add the names of up to two friends who may also access the chest. Want to add more people? Place a second sign against the chest. BlockLocker will add [More Users] to the first line and [Everyone] to the second line. If you want to change this, right-click the sign to edit it.

    If the name of the person you're adding doesn't fit on the sign, just type as many characters as possible. If the person you're adding is currently online, BlockLocker will be able to complete the name.

    If no Minecraft account exists with the name, a ~ is added before the name. However, the ~ is not added for things that don't look like an username, so --text-- won't be changed to ~--text--. This should still give you plenty of options to decorate the sign, while it will still be obvious when name is not a valid Minecraft name.

    Special tags

    [​IMG]

    The tag [Everyone] grants everyone access to the protection. The tag [Redstone] grants hoppers access to the container, and allows redstone signal to open doors.

    [​IMG]

    There's also a [Timer:X] tag, where X is a number from 0 to 9. Doors (trapdoors too) will close automatically after the specified amount of seconds. Use 0 to never close the door automatically. The timer tag overrides the default close timer setting the config.yml.

    You can also add [MyGroup], which will grant all members of the group MyGroup access to the chest. See "Group support" below for what groups are supported.

    Finally, you can also add +MyGroup+, which allows only the group leaders to access the sign. See again "Group support" below for more information.



    Setup

    Permissions
    There's a very simple permission structure:

    • blocklocker.protect - create new protections
    • blocklocker.bypass - bypass all protections, edit all protections
    • blocklocker.reload - use /bl reload to reload the configuration files
    • blocklocker.group.groupName - adds you to the group with the name groupName, so that you have access to protections with a [groupName] tag on it.
    • blocklocker.wilderness - place chests outside Towny towns. Granted by default, so use your permissions plugin to negate this permissions if you don't want people to place chests in the wilderness. Has no effect if Towny is not installed.

    Commands
    • /blocklocker <line number> <text> - places the specified text on the last sign you selected (right-clicked). You can only select signs on your own protections, unless you have the permission node blocklocker.bypass.
    • /blocklocker reload - reloads configuration files. Requires the permission node blocklocker.reload

    Configuration
    You can change what block types can be protected, you can set a default close timer for doors and you can set whether one sign protects a whole row of containers, or only the current container.

    The file plugins/BlockLocker/config.yml contains explanations of all settings, I won't repeat them here. Just open the file!

    There's also a translation file, you can edit all user-visible text here, as well as changing the [Private], [More Users], etc. tags to something else. For the tags, you can even use multiple values, for example:
    private: ['[Private]', '[Besloten]'].

    When you have made a change, run the command /bl reload for your settings to take effect. You can of course also restart the server.

    Group support

    [​IMG]

    When placing [MyGroup] on a sign, every member of MyGroup will have access to the protection. The plugin considers the following persons to be a member of the group MyGroup:

    • People with the permission node blocklocker.group.mygroup. The permission node is always blocklocker.group. with the lowercase group name appended to it.
    • People in the scoreboard team MyGroup (case insensitive). You can modify scoreboard teams using the (vanilla) command /scoreboard.
    • When MassiveCraft Factions is installed: people in the faction called MyGroup (case insensitive).
    • When Towny is installed: people in a town or nation called MyGroup (case insensitive).
    • When mcMMO is installed: people in a party called MyGroup (case insensitive)
    • When Guilds is installed: people in a guild called MyGroup.

    When placing +MyGroup+ on the sign, only the leaders of MyGroup will have access. Those are:

    • When Towny is installed: mayors and assitants of Towny towns and nations called MyGroup will have access.
    • When mcMMO is installed: the party leader.
    • When Guilds is installed: the guild master.

    Other group systems are currently not supported. If you want support for another plugin, just ask me.

    Automatic updater
    As this is an anti-stealing plugin, bugs can have a large impact on the economy of your server. For that reason, the plugin notifies you of any updates. As of version 1.7, the plugin will not download any files anymore, making the AUTO_INSTALL setting equal to JUST_NOTIFY. The updater works asynchronously: it will never pause your server while it's checking for something.

    If you want to disable the updater you must edit the plugins/BlockLocker/config.yml file. Set the updater setting in the file to DISABLED or JUST_NOTIFY. If you don't see the update setting in the file it is because you have a pre-1.0 config file. Simply add updater: DISABLED or updater: JUST_NOTIFY to a new line and you'll be fine.

    UUID support
    BlockLocker has been built with UUID support in mind. Minecraft 1.8 allows signs to use chat components. BlockLocker adds a hidden chat component with UUID information.

    When your server is running in offline mode, not behind a BungeeCord proxy, the plugin won't use UUIDs and will continue to use names.

    When UUIDs are used, the plugin accesses api.mojang.com every now and then to look up UUIDs of offline players added to a sign.

    Bugs

    If you have found a bug, please report it! You can report it here in in the forum thread, or on Github. Please provide instructions for me how I can reproduce the bug. Please do not file bug reports in the review tab, as (a) bug reports aren't reviews and (b) the review section doesn't allow any interaction: you cannot reply there to any questions that I ask, so tracking down a bug is impossible.

    Any questions?

    Can you add this feature?
    I'm still maintaining this plugin, but I've decided to no longer add features myself that I'm not personally interested in. If you would like a new feature, code it yourself! (Or ask someone else to code it for you.) Once you're done, a pull request on Github would be very much appreciated! :)

    Some features that would be nice:
    • A permission node to allow people to view chests, but not to modify the contents of the chest.
    • Some way to let players add items to a certain chest, but now remove them.
    Some features that wouldn't work:
    • A shop function to buy items from chests. This will quickly grow out of hand. It's better to code this as a separate plugin. BlockLocker offers a simple API for other plugin authors to check if a chest is protected.
    • A command that shows all your protected chests. This would require keeping a database of all chests. Right now, all information is stored on the signs. Using a database would mean that copying chests to/from schematic files and moving them around with WorldEdit would no longer work correctly.
    How do I change the color scheme of messages, [Private] and [More Users]?
    Open plugins/BlockLocker/translations-en.yml (if you're using another language, open up that file instead) and add/remove color codes. For example private: "&9[Private]" results in a blue [Private] tag.

    Hoppers cannot put items into/take items from protected chests. How can I fix this?
    Add a line with the text [Redstone] or [Everyone] to the sign.

    Hoppers can put items into/take items from protected chests. How can I fix this?
    This isn't caused by BlockLocker, but it's caused by setting hopper.disable-move-event to true in your paper.yml file. If you set it back to false, then Paper will again tell plugins when hoppers are moving items, so that BlockLocker can block the item movement.

    How can I disable the message that tells players how they can protect a chest?
    Open the plugins/BlockLocker/translation-en.yml file (if you're using another language, open up that file instead) and set the protection.chest_hint setting to two quotes: "". The configuration file uses the YAML format, and those two quotes mean that the message is empty.

    Are old Minecraft versions supported?

    Nope. For older Minecraft versions, please download an older release of BlockLocker.

    Minecraft 1.14.4: use latest version
    Minecraft 1.14.0 - 1.14.3: use BlockLocker 1.6
    Minecraft 1.13: use BlockLocker 1.5
    Minecraft 1.12: use BlockLocker 1.3.4
    Minecraft 1.9 to 1.11: use BlockLocker 1.3.3
    Minecraft 1.8: use BlockLocker 1.2.0.0
    Even older: BlockLocker didn't exist yet

    What are the differences between this plugin and LockettePro?
    This plugin uses no code from LockettePro. It was written from scratch. I have listed the major differences here, but there are many more smaller differences.

    Both LockettePro and BlockLocker store the UUID of players on the sign, which is a good thing: the UUID data cannot get lost, even when you are using WorldEdit to move a sign. LockettePro stores UUIDs of players in the sign text as Name#UUID, so for example Notch#069a79f4-44e9-4726-a5be-fca90e38aaf5. It uses a protocol hack to hide the UUID. For this, the plugin requires ProtocolLib. BlockLocker stores the UUID in a hover text on the sign. Unlike for chat messages, signs never display their hover text, even if your mouse cursor is on the sign. Therefore, no protocol hack was needed to hide the UUID of players: Minecraft already hides this text.

    LockettePro supports as many alternative texts for the [Private], [More Users] and [Timer:X] tags as you want, but BlockLocker currently supports only one text. While this is less confusing for players (they would wonder what the difference between for example a [Private], [No Entry] and a [No Access] sign is), I can see how it causes problems if you currently already have a server with multiple alternatives for [Private]).

    LockettePro currently supports SimpleClans and Vault groups while BlockLocker doesn't. However, BlockLocker supports groups based on permission nodes: if you for example grant someone the permission node blocklocker.group.myexample, then that player will belong to the group MyExample (case insensitive). Groups from Towny and MassiveCraft Factions are supported in both plugins.

    LockettePro has only rudimentary redstone support. You have to add [Everyone] to your door for redstone to work. In BlockLocker [Everyone] still works, but you can also add a [Redstone] tag instead.

    Hoppers are not well supported in LockettePro: either they never take items from protected containers, or always, depending on a configuration setting. BlockLocker allows you to add a [Redstone] tag to allow hoppers. When no [Redstone] (or [Everyone]) tag is added, hoppers won't be able to place or take items from the container.

    What are the differences between this plugin and the classic Lockette?
    This plugin uses no code from Lockette. It was written from scratch. I have listed the major differences here, but there are many more smaller differences.

    Lockette has no real UUID support: it just looks up your old names. (UUIDs are cached as Bukkit metadata, but not saved, so they are lost when the server restarts.) BlockLocker uses hidden text components, which means that the data is stored safely inside the chunk and that external editors like MCEdit won't delete the UUID data.

    Lockette has only rudimentary redstone support. You have to add [Everyone] to your door for redstone to work. In BlockLocker [Everyone] still works, but you can also add a [Redstone] tag instead.

    Hoppers are not well supported in Lockette: either they never take items from protected containers, or always, depending on a configuration setting. BlockLocker allows you to add a [Redstone] tag to allow hoppers. When no [Redstone] (or [Everyone]) tag is added, hoppers won't be able to place or take items from the container.

    Placing signs works a little different. In both plugins you can attach a sign to a container simply by right-clicking the container with a sign in your hand. The sign will be filled with [Private] on the first line and your name on the second line. In Lockette you can also place a sign next to a container. You have to manually type [Private] on the first line. Lockette will then move the sign so that it is attached to the chest. I find this behaviour not very useful, so it is not included in BlockLocker. For those cases where you want to add something to the third or fourth line of the sign, you can either edit the sign after placing it, or you can place the sign while sneaking, allowing you manually edit the sign.

    Lockette currently has hooks for many plugins (McMMO, SimpleClans, etc.) for group support, BlockLocker currently only has hooks for vanilla scoreboard teams, permission nodes, Towny towns, Towny nations and MassiveCraft Factions.

    I have another question.
    Please ask! The best place is here in the forum thread. You can also send me a PM, but keep in mind that others won't be able to benefit from any solution you found.

Recent Reviews

  1. Soufreur7877
    Soufreur7877
    5/5,
    Version: 1.7
    Good plugin, but some things to do in config:
    - Allow/disallow possibility to use command to change line
    - When we put nothing in message line, don't send message (ex: '' -> nothing to send).

    VERY IMPORTANT : put the possibility of limiting the number of protect chest per person. PLEASE !

    I'm french, so if my english is strange it's normal :).
  2. leefromvt
    leefromvt
    5/5,
    Version: 1.6.1
    Great plugin love the options and protections.

    Can you add one permission so that my (owner) chests cannot be accessed by other staff but allow them to access players chests.

    Thanks!
    1. rutgerkok
      Author's Response
      Hi!

      I will not add that feature myself (the plugin is open source, so other can add that feature). If you think the staff might steal from the owner, then surely they cannot be trusted around the players chests either.
  3. Keopsfenks
    Keopsfenks
    3/5,
    Version: 1.6.1
    command:
    cannot_be_used_by_console: This command cannot be used by the console. Sorry!
    cannot_edıt_owner: ~~TODO translate command.cannot_edıt_owner~~
    lıne_number_out_of_bounds: ~~TODO translate command.lıne_number_out_of_bounds~~
    no_permıssıon: ~~TODO translate command.no_permıssıon~~
    no_sıgn_selected: ~~TODO translate command.no_sıgn_selected~~
    player_name_too_long: '&4The player name is over 16 characters, which doesn''t fit
    on the sign. It is also longer than Mojang allows player names to be.'
    plugın_reloaded: ~~TODO translate command.plugın_reloaded~~
    sıgn_no_longer_part_of_protectıon: ~~TODO translate command.sıgn_no_longer_part_of_protectıon~~
    updated_sıgn: ~~TODO translate command.updated_sıgn~~
    protectıon:
    add_more_users_sıgn_ınstead: ~~TODO translate protectıon.add_more_users_sıgn_ınstead~~
    bypassed: ~~TODO translate protectıon.bypassed~~
    cannot_change_sıgn: ~~TODO translate protectıon.cannot_change_sıgn~~
    chest_hınt: ~~TODO translate protectıon.chest_hınt~~
    claımed_contaıner: ~~TODO translate protectıon.claımed_contaıner~~
    claımed_manually: ~~TODO translate protectıon.claımed_manually~~
    expıred: ~~TODO translate protectıon.expıred~~
    ın_wılderness: ~~TODO translate protectıon.ın_wılderness~~
    ıs_claımed_by: ~~TODO translate protectıon.ıs_claımed_by~~
    no_access: ~~TODO translate protectıon.no_access~~
    no_permıssıon_for_claım: ~~TODO translate protectıon.no_permıssıon_for_claım~~
    not_nearby: ~~TODO translate protectıon.not_nearby~~
    selected_sıgn: ~~TODO translate protectıon.selected_sıgn~~
    tag:
    everyone: Everyone
    more_users: '[More Users]'
    prıvate: ~~TODO translate tag.prıvate~~
    redstone: Redstone
    tımer: ~~TODO translate tag.tımer~~
    updater:
    more_ınformatıon: ~~TODO translate updater.more_ınformatıon~~
    unsupported_server: '&4The latest version of BlockLocker (version {0}) no longer
    supports this Minecraft version, only Minecraft {1}.'
    update_avaılable: ~~TODO translate updater.update_avaılable~~
    updated_automatıcally: ~~TODO translate updater.updated_automatıcally~~


    It happens all the time, please help

    transtlate-en.yml
  4. DreamsOfAnarchy
    DreamsOfAnarchy
    4/5,
    Version: 1.6.1
    Really like the plugin, but not working on my spigot 1.14.4.
    "[Server thread/ERROR]: [BlockLocker] This Minecraft version is not supported. Find another version of the plugin, if available."
    1. rutgerkok
      Author's Response
      Works fine on my (1.14.4) server. Are you absolutely sure you're running the latest version of the plugin? Could you PM me the log of the console?
  5. superfly2000
    superfly2000
    5/5,
    Version: 1.6.1
    Works excellent so far. Would like to have more ways to configure it but still I can not complain :-)
  6. RainbowTea
    RainbowTea
    5/5,
    Version: 1.6.1
    Works just fine, really cool i can add other blocks to the config aswell if needed. :) Helps cut down on griefing.theft.
  7. Link_Lite
    Link_Lite
    5/5,
    Version: 1.6.1
    Author updated the plugin within 24 hours of the new spigot update. Incredible speed!
  8. spling
    spling
    5/5,
    Version: 1.6.1
    I registered to give you this 5 star review to offset Link_Lite's dumb and unfair 2 star review. BlockLocker has been a fantastic plugin I've used it for years and your update speed is excellent! Thanks for getting it out so quick.
  9. Link_Lite
    Link_Lite
    2/5,
    Version: 1.6
    Doesn't work on paper spigot 1.14.4 build 135 at all. Shows up red in /pl
    please update the plugin!
    1. rutgerkok
      Author's Response
      Spigot announced the 1.14.4 release today at 1:38 AM in my time zone, which broke this plugin. At 9:17 AM you left this review, which seems to declare that this free plugin is worth only two stars because the plugin author didn't update it yet. That seems quite severe, in my opinion.

      In any case, the plugin is now updated, still well within 24 hours of the Spigot release. Personally, I consider that to be fast. :)
  10. MothMuse
    MothMuse
    5/5,
    Version: 1.6
    this is awesome but please support lecturns! then players can open books and see info without stealing the books!