[WIP] BananaProtect - reinventing the concept [TESTERS NEEDED]

Discussion in 'WIP and Development Status' started by codename_B, Oct 20, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    codename_B

    Who wants to build on their own?
    Not many people.

    Who wants a BananaProtect test build?
    Get it here.

    How about the source code?
    It's on github!

    With this in mind I redesigned BananaProtect from the ground up, instead of being per-player it now has building groups much like "clans" with "leaders" who can assign new "leaders", and add new players to the "clan".

    To keep things simple, I've numbered each group from 0-127 (meaning you can have 128 groups total, if you need more than this it isn't possible at this moment in time, so let me know and I'll create support for it, it will just involve changing byte[] to short[]).

    The concept is, admins appoint "leaders" who then can accept new members into the "clan".

    The saveFile format has also been completely redesigned, with this in mind, and memory usage of the plugin has been reduced to a bare minimum.

    Another feedback taken from previous versions is that not every block should be protected. This makes a lot of sense, as saplings, dirt, etc may not be desirable to have protected on certain servers, so a blacklist of ids to be protected will be implemented.

    Status:
    • develop saveFile system (done)
    • develop groups system (done)
    • implement block protection in a sensible way (done)
    • implement a commands system (done)
    • implement block protection blacklist in a sensible way (done)
    • get tested (appointment booked)
    Commands:
    • /superstick claim|whoplaced (bananaprotect.super)
    • /setplayer NAME 0-127 (bananaprotect.admin)
    • /requestgroup 0-127 (bananaprotect.user)
    • /acceptplayer NAME (bananaprotect.leader)
    • /leavegroup NAME (bananaprotect.user)
    Permission Hierarchy:
    • bananaprotect.* -> bananaprotect.admin -> bananaprotect.leader -> bananaprotect.super -> bananaprotect.user
    Block Protection:
    When a request to protect a block is sent to the cache, it checks the id of the block against the blacklist, and if the id is not contained in the blacklist, it goes ahead and allows it.

    The main thing to remember with block protection is that this DOES NOT log who placed the block, it simply protects it for their "building group". You need a "block logging" plugin for that.

    For example:
    codename_B and SwearWord build a house, they are both in building group 6 and so they can both work on the house at their leisure.
    iffa the griffa comes along and sees this house, he is in building group 14 and wants to destroy their house, but can't, because the house is protected.

    Another example:
    A server clan is undertaking a massive ascii art build project, Johnny_Idiot comes along and sees the post on minecraftforum.net about it and decides it would be fun to rip a giant hole in the build project, unfortunately for him, they have the entire project protected by BananaProtect, and he fails to do any damage, despite attempting to set the creation on fire (as protected blocks have fire disabled on them)
     
  2. Offline

    iffa

    yay
     
  3. Offline

    King Rat

  4. Offline

    codename_B

    Test download now available!
     
    RazorFlint likes this.
  5. Offline

    RazorFlint

  6. Offline

    ZachBora

    255... it's a unsigned byte?
    Shouldn't you provide a list of commands or something?
     
  7. Offline

    codename_B

    Bump for OP update
     
  8. Offline

    ZachBora

    Does this work with 2.7.4?

    Also, one thing I noticed :
    Code:
    int fileSize = yml.getKeys(false).size();
    log(false, fileSize + " players saved.");
    if(fileSize > 300)
    log(false, "You may want to remove old members");
    300 isn't a lot of players. You should make it a configuration file or increase it.

    We're in need of such plugin on our server and I'm thinking of changing permissions system. I just find it to lack versatility at the moment :/

    Would be better if groups could have names instead of just #.

    I also don't fully understand how your group leader thing works. There should be a command to make someone a group leader and a command that the leader can use to assign co-leaders. I know right now it's just an added permission but still, I'm not sure if everything should revolve around permission in the current way. There would need to be bananaprotect.leader.zonename to fully integrate in permissions but there's no reason to go that way, it would just clog the permission file.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 20, 2016
  9. Offline

    codename_B

    Would "aliases" be better than names?
    So obviously the group has id: 0 but alias: craftWurk or something yeah?

    As for the group leaders, it was being done by a boolean in the file but I decided that people would probably rather do it by permission (then they're not tied to using my system and can take away/give leader via a web-interface by giving/removing a group).

    Thats the whole point of a permissions system really, otherwise every plugin would have its own individual config for things.

    Group leaders can accept new members into their group, basically, and can also use the "SuperStick" to claim unclaimed blocks for their group, as well as seeing what group placed a certain block.

    I'm very, very impressed with the data storage for this plugin so far though, far. Compared to the previous version it uses a miniscule amount of memory and disk space, as well as properly caching files, rather than reading/writing on every block edit.

    I'm feeling very good about the development of this plugin so-far.
     
  10. Offline

    ZachBora

    When I have time I'll give it a try.

    And yeah alias is fine. We wouldn't be able to sort things out with just numbers...
     
  11. Offline

    Tauryuu

    What about per-world groups, multigroup user, and disabled in certain worlds? :)
     
  12. Offline

    Malo

    looks good, so this is basically the Banana Protect with and factions setup. and what build is the test download? Also if someone that joins the server places a block, will it protect it or do they need a certain permissions or do they need to be in a group or leader of a group
     
  13. Offline

    codename_B

    Multigroup user = no.
    Per-world-groups = will think about.
    Disabled in certain worlds = should already be possible with permissions (if not I will make it so)

    Its 5.0 beta. The blocks are only protected if someone is in a group, and has the permission "bananaprotect.user" which defaults to true, so you'd need to explicitly set it to false for them NOT to have it.

    Also you can have it so people can't build unless they are in a group, which is pretty useful in terms of protecting your server, I'm just working on aliases for groups atm.
     
  14. Offline

    ZachBora

    Oh, I was under the impression someone could be in multiple groups. Well no this isn't what I need and I won't try it.
     
  15. Offline

    codename_B

    That's fine, thanks for the feedback lol.
     
  16. Offline

    wyndkin

    Any way to add in a chest or container command to allow the setup of special lootable chests that can't be destroyed? Would be cool to have the area protected, but allow people to score the loot in say a prebuilt dungeon or something.
     
  17. Offline

    Eminam

    So is it possible to set this up to run off what has already been built? If not I won't be moving from bananaprotect as there is just entirely WAY too much protected by bananaprotect on my server right now.
     
  18. Offline

    Havoxx

    Would there be a way to make this like the old bprotect without the groups thing? I have little faith in the intelligence of people and having them add themselves to groups, essentially, this same plugin but without groups? So I can have the blacklist, I'm not too far into my classes to know about the coding :D
     
  19. Offline

    The Khemist

    Will this convert the old data, so everything built already under old protect is protected by this new version ?
     
  20. Offline

    TehRandomGuy

    I am happy to test the plugin!
     
  21. Offline

    My_Krågespisar

    Been using this for a day now, and i'll continue using it. It makes protection so easy and headache-free.
     
  22. This looks fun!
     
  23. Offline

    iamthemovie42

    Is it yet possible to use fire on unprotected blocks?
    If not, would it be possible to implement this? ,For example, for use with netherrack for fireplaces, etc.
    Thanks for your consideration.
     
  24. Offline

    Malchus

    @codename_B
    I would be more then happy to help test.
    Let me know.

    Regards,
    James
     
  25. I am using the plugin and i found a error the dev build dont create any config files

    1º I use pincel version and the i use this version because pincel version create the config files
    I dont remenber if is pencel vesion or other name XD

    can you add a option to disable chest and furnace protection please

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 20, 2016
  26. when is going to be a update?
     
  27. Dosent work XD i use Pencil version
     
  28. Offline

    joselitoeu

    codename_B

    I dont understand it, that groups things mean i can only have 127 players on my server?
    If i have 200 players, some will need to be in the same group to have their blocks protected, but ppl in the same group will be able to destroy his blocks?

    This looks much more complicated than bananaprotect, i just want the /togglep (toggle protection on) /togglep again (toggle protection off) and the /ballow and /bremove =/
     
  29. Offline

    TheMaa

    Soo... what happens with this plugin?
    ETA?
     
Thread Status:
Not open for further replies.

Share This Page