Spigot LockSecurity 2.0.0

Locking containers with keys so only you and your friends can have access to them!

  1. Hey,

    we're using Thermos server 1.7.10 and have some issues with this plugin.
    Could you take a look at it and make it compatible?

    That would be really awesome :)


    Code (Text):
    [09:40:22] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to LockSecurity v1.8.2
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) ~[JavaPluginLoader$1.class:1.7.10-1614.58]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[RegisteredListener.class:1.7.10-1614.58]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:1.7.10-1614.58]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:1.7.10-1614.58]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:223) [CraftEventFactory.class:1.7.10-1614.58]
        at net.minecraft.server.management.ItemInWorldManager.func_73078_a(ItemInWorldManager.java:429) [mx.class:?]
        at net.minecraft.network.NetHandlerPlayServer.func_147346_a(NetHandlerPlayServer.java:861) [nh.class:?]
        at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:60) [jo.class:?]
        at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:9) [jo.class:?]
        at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245) [ej.class:?]
        at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:181) [nc.class:?]
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:1023) [MinecraftServer.class:?]
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432) [lt.class:?]
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841) [MinecraftServer.class:?]
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693) [MinecraftServer.class:?]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
    Caused by: java.lang.NoClassDefFoundError: org/bukkit/inventory/ItemFlag
        at me.choco.locks.utils.Keys.convertToLockedKey(Keys.java:78) ~[?:?]
        at me.choco.locks.events.InteractWithBlock.onInteractWithBlock(InteractWithBlock.java:97) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor125.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_121]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_121]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) ~[JavaPluginLoader$1.class:1.7.10-1614.58]
        ... 15 more
     
     
  2. is this plugin works on 1.8.8 spigot?
     
  3. Choco

    Moderator

    So this resource has been rather neglected by myself after I've had little time to update it and finish its rewrite. About a year ago I said I was rewriting the plugin from scratch, and this is still the case. I have the project up on the private repository and it's nearly completed, so it should be done sometime soon. I've been caught up with a few things in real life as well as some other projects that I've been working on (including VeinMiner and the new resource teased on my profile page).

    The most important thing to note about LockSecurity 2 is that 1.12 breaks this plugin and I'm completely aware of that (you do not need to inform me of such), and because of this, I am once again motivated to update it to support the newest version ONLY. That's right... LockSecurity 2 will only support Minecraft 1.12. Due to the amount of API changes made, Minecraft versions 1.11.2 and below are rather obnoxious to support, so support for those will be dropped rather than me having to have this resource hanging by a thread on unsupported versions. I apologize but if you're not willing to update your server, that's not my fault. It may seem harsh, but it is not my job to keep your outdated servers running. If no one else is going to motivate you to update, I might as well.

    Thank you for the support and patience while this rewrite is being made, progress updates will be made every now and again as LockSecurity 2 is being developed. One of the more notable changes in the rewrite includes major efficiency improvements regarding data storage (loading / saving information about locked blocks), so this is something you should all be looking forward to. All past versions have been rather heavy on RAM and CPU usage. This rewrite should resolve all of the concerns regarding its efficiency.

    Thank you again.
    (LockSecurity, LockSecurity 2 and LSChestCollector will ALL be open sourced as soon as its rewrite is released :))
     
    • Like Like x 1
  4. Choco

    Moderator

    2008Choco updated LockSecurity with a new update entry:

    Complete Rewrite + 1.12 Support

    Read the rest of this update entry...
     
  5. Choco

    Moderator

  6. I have a question . Will this plugin work for 1.12.2 , everything else I have tried doesn't and I would like to know before I go to all the pain installing it. My server needs something like this seriously.
     
  7. Really good plugin. Nice developer
     
  8. Choco

    Moderator

    It should work fine on 1.12.2, yes

    Thank you! :D
     
  9. Choco

    Moderator

    For anyone that reads the discussion, I figured I'd give my plans on the future of LockSecurity after the release of Minecraft 1.13.

    Recently I announced my plans for Minecraft 1.13 for my VeinMiner and DragonEggDrop plugins. For LockSecurity, I plan on following suit with VeinMiner and dropping support for Minecraft 1.12 in order to accommodate for new features in the API. In doing so, the plugin will be more configurable and user friendly, as well as be a lot more stable in terms of implementation. I do not plan on adding any additional features, but I may perhaps update the current API to be more friendly when it comes to updating the plugin. In previous versions, whenever this plugin gets an update, large API breaks occur. I want to make that a lot less common and instead add a compatibility layer for publicly accessible APIs through the use of interfaces.

    Some of my current plans for this plugin's update to 1.13 are as follows:
    • New interfaces for the following classes:
      • LockedBlock: A wrapper for blocks that have been locked by players
      • LockedBlockManager: A utility class to register / unregister / manipulate LockedBlock instances
      • LSPlayer: A wrapper for players that can hold LockSecurity-specific data
      • LockSecurity: The main class. This will have an interface and an easy getter to retrieve the plugin instance
      • PlayerRegistry: A registration class that holds instances of LSPlayer objects
    • Update current implementation to use block states (a cleaner / more efficient version of holding locked blocks)
    • Use the new up-to-date Material enumeration constant in 1.13 to ease customization (names should match those of in-game names)
    Additionally, I plan on improving LockSecurity's description to match a similar style to that of VeinMiner and DragonEggDrop. I want to create vector titles, a more descriptive introduction, command, permission and configuration section, as well as just an overall revamp of everything on the page. If I'm not mistaken, the description hasn't changed since the release of the plugin back in September of 2015. As of currently, the description is incredibly lackluster and I'm not happy with it's current state, so expect a complete rewrite promptly after the release of LockSecurity's 1.13 support update.

    Beyond that, I'm not exactly sure what new features may be added in LockSecurity for Minecraft 1.13. I do know, however, that I want to drop support for Minecraft 1.12 as it would allow the plugin to grow rather than constraining it to outdated software.

    I appreciate the support and I hope you're as excited for Minecraft 1.13 as I am. May you have a safe and happy holidays

    TL;DR: After the release of Minecraft 1.13, LockSecurity will officially drop support for Spigot 1.12.x and will instead only support 1.13+

    EDIT: These plans have since been re-written. While some may still hold true (1.13+ support, namely), I do not plan on releasing a version of LockSecurity for Minecraft 1.13. I apologize, I just found no time to update the project and expect a release in Minecraft 1.14 instead. That build should support 1.13 nonetheless.
     
    #110 Choco, Dec 21, 2017
    Last edited: Mar 12, 2019
    • Like Like x 1
  10. I want to start this off by saying that I HAVE read what you posted above, namely the "no more features" part, but then I got to your
    And I had one that you/other may or may not like-but I personally think could find a lot of use.

    Basically I was hoping for a lock pick mechanic. BUT WAIT! Something that is *hard* to do, this shouldn't be easy to obtain, or to pull off. Think something similar to Skyrim (but with more limited lockpicks). Post apocalyptic servers (like mine) would find a plugin with BOTH chest/door protection AND robbery included in one-to be very useful! But I'd suggest to make it so it can be turned off in the config, because it does change a lot.

    Either way though, I'm impressed with what you've got, and can't wait to see the sleek new overview, as well as the improvements in 1.13!
     
  11. Choco

    Moderator

    This is something I've been requested to do since pretty much the creation of this plugin and I've always neglected to do it. The reason being because I never figured out an elegant way to do it without "breaking the realism". Evidently it would be configurable or the sole purpose of this plugin would be defeated entirely for servers that use it as RPG-friendly chest protection, but if I can think of a clean way to do this, yea I'd be down to add it.
     
  12. That's fair! You could possibly make a small add-on plugin that is compatible with this one, then people like myself get the lock picks, and RPG servers just don't download the side plugin and everything works as normal :D
     
    #113 Chimera, Feb 10, 2018
    Last edited: Feb 10, 2018
  13. Is this possible to set a key as a one time use ? i use your mode for a dongeon so why no set a command block with /clear @p 131 you would say; But it doesnt seems to work.
    I tried /clear @p 131 -1 -1 {display:{Name:"Smithed Key"}}


    edit:
    Nevermind, i had to modify the commands.yml file and set

    command-block-overrides:
    - clear
     
    #114 Guigui5031, Mar 16, 2018
    Last edited: Mar 16, 2018
    • Like Like x 1
  14. i can't find all the values tho, can you give them to me 2008Choco ?
    Its seems it have 3 NBT tags linked to it, and i need them to clear it.

    But still it would be a lot easier for me if you could update your plugin to allow to set a key as a one time use only ^^
     
    #115 Guigui5031, Mar 16, 2018
    Last edited: Mar 16, 2018
  15. Also, here's the French translation of your plugin.
    The original has a loooooooooooot of mistakes and also accents. This one is good :

    #Event messages
    event.key.attemptpick = "Vous tentez de crocheter la serrure, mais cela ne fonctionne pas"
    event.key.none = "Il faut une clef pour ouvrir cette porte"
    event.lock.cannotbreak = "Cette %type% appartient a %player%. Vous ne pouvez pas la briser"
    event.lock.cannotopen = "Cette %type% appartient a %player%. Vous ne pouvez pas l'ouvrir"
    event.lock.cannotplace = "Vous n'avez pas la permission de placer un %type% proche d'un bloc appartenant %player%"
    event.lock.nopermission = "Vous n'avez pas les permissions suffisantes pour verrouiller un %type%"
    event.lock.registered = "Ce verrou est maintenant actif avec le LockID %lockID% (KeyID: %keyID%)"
    event.lock.unregistered = "%type% avec le Lock ID %id% n'est plus actif"
    event.player.maxlocks = "Vous ne pouvez pas verrouiller ce bloc. Vous avez atteint le maximum de verrous dans ce monde"
    event.player.money.deposited = "%amount% mis dans votre solde"
    event.player.money.insufficient = "Vous n'avez pas les fonds suffisants pour verrouiller un %type%"
    event.player.money.withdrawn = "%amount% pris de votre solde"
    event.unlock.nopermission.self = "Permissions insuffisantes pour ouvrir cette %type%"
    event.unlock.nopermission.other = "Permissions insuffisantes pour ouvrir cette %type% qui appartient a %player%"
    #Command messages
    command.forgekey.givenkey = "Donnez une clef avec un ID de %ID%"
    command.forgekey.noid = "Veuillez specifier l'ID de cette clef"
    command.general.datatransfer.commencing = "Enregistrement des informations dans les fichiers..."
    command.general.datatransfer.successful = "&aSucces!"
    command.general.invalidlockid = "%ID% est un Lock ID invalide"
    command.general.invalidinteger = "%param% n'est pas un chiffre. Veuillez specifier un chiffre"
    command.general.idnotlocked = "Aucun bloc avec le Lock ID %ID%"
    command.general.neverplayed = "%target% n'est pas un joueur"
    command.general.nopermission = "Permissions insuffisantes pour cette commande"
    command.general.onlyplayers = "Seulement les joueurs peuvent utiliser cette commande"
    command.general.playeroffline = "%target% est hors-ligne"
    command.general.specifyplayer = "Vous devez specifier un joueur pour executer cette commande"
    command.givekey.receivedkey = "Vous avez recu une nouvelle clef"
    command.givekey.receivedkey.target = "Vous avez recu %count% nouvelle(s) clef(s) de %player%"
    command.givekey.sentkey = "Vous donnez a %target% %count% nouvelle(s) clef(s)"
    command.ignorelocks.disabled = "Vous ne pouvez plus ignorer les serrures"
    command.ignorelocks.enabled = "Vous pouvez ouvrir toutes les serrures"
    command.lockinspect.disabled = "Inspection des serrures &cinactif"
    command.lockinspect.enabled = "Inspection des serrures &actif"
    command.lockinspect.notlocked = "Ce bloc n'a pas de serrure"
    command.locklist.identifier = "&eListe de toutes les serrures (joueur: %player%)"
    command.locknotify.disabled = "Notifications administratives inactif"
    command.locknotify.enabled = "Notifications administratives actif"
    command.locknotify.notification = "%player% verrouille un %type% a x:%x% y:%y% z:%z% dans le monde %world% avec LockID %lockID% (KeyID: %keyID%)"
    command.locksecurity.reloaded = "&aRechargement des fichiers de configuration"
    command.transferlock.disabled = "Mode de transfert inactif"
    command.transferlock.enabled = "Mode de transfert actif. Cliquez sur le bloc que vous souhaitez transferer"
    command.transferlock.transferred = "%type% avec LockID %lockID% (KeyID: %keyID%) recu par %player%"
    command.unlock.disabled = "Mode deverrouillage inactif"
    command.unlock.enabled = "Mode deverrouillage actif. Cliquez sur le bloc que vous souhaites ouvrir"
    command.unlock.notowner = "Vous ne possedez pas ce bloc"
    command.unlock.unlocked = "LockID %lockID% est ouvert"
     
  16. Choco

    Moderator

    I apologize for missing your messages to this discussion. It seems I unwatched the thread, perhaps out of habit.

    Which key? Do you mean the use of a key associated with a block? i.e. lock a block, whenever the key is used to open the block, remove it from the player's inventory? I could certainly make that a feature if you'd like.

    Thank you very, very much. I appreciate this greatly. Yea, initially I wrote the French file with my very horrible understanding of French. I'm fluent in French and can speak it quite well, but my spelling is abysmal. I've known the language for well over 15 years but I still struggle to spell properly. Haha. I'll have this implemented post-1.13 :)
     
  17. Désolé je ne voulais pas paraitre condescendant ^^
    Sinon oui je parle bien de ça, faire en sorte que dés qu'une clef est utilisée pour ouvrir une porte elle s'enléve de l'inventaire; Mais pour l'instant j'ai contourné ce problème à la "Doom" en renommant les clefs "clef rouge" pour porte rouge, etc.
    En faites je me sert de ton plugin pour mes donjons RP du coup je pensais à un système comme dans les vieux jeu Zelda si tu vois ce que je veux dire.

    Du coup en parlant de RP je souhaiterais enlever le préfixe "[LockSecurity]" devant les messages in-game; est-ce possible ? je ne vois pas l'option dans les fichiers config.
     
  18. Choco

    Moderator

    Hello everyone.

    For those of you that have this discussion page watched and are still active users of my plugins, I would like to unofficially announce that I have created a Discord support channel for all my resources. I plan on officially announcing this alongside the 1.13 update notes for this plugin, though I figured that some would enjoy coming into the channel before then and either talking to me or to consider contributing to the projects or reporting unknown / unheard issues. So if you would like to join, please do! It is there where I will announce resource updates and changelogs as well as handle bugs with higher priority. If you're interested in helping me out, do the following:

    1. Join my Discord by clicking this link here: https://discord.gg/djrzzYB
    2. Read the announcement in the #announcements channel
    3. Follow the instructions in #role-retrieval to get yourself the LockSecurity User role so I may further identify you

    Thanks!