[IDEA] SimpleTown,TownyLite

Discussion in 'Archived: Plugin Requests' started by np98765, Jun 12, 2012.

  1. Offline

    np98765

    Hello!

    I've seen a lot of posts about a simpler town plugin. I think that Towny is much too complicated for users. It's too feature-rich and confusing for the average player.

    I've taken all of the ideas I think would be nice in a simpler plugin and combined them in a hopefully easy-to-read-and-understand manner.

    I think that this might be a good "springboard" or "stepping stone" for a developer who is willing to take this on. I can definitely see that this plugin would explode upon release. I can imagine so many server users who want to use Towny, but find it too complicated.

    Please leave your thoughts in the comments (nicely)! :)


    Commands:

    Creation and Administration:


    /town define: Start the cuboid selection process to define a town
    /town create <town>: Create <town> from selection, you are now the owner
    /town setowner <player>: Transfer ownership to <player>. You must own the town.
    /town invite <player>: Invite <player> to your town
    /town ban <player>: Ban <player> from your town, they are kicked and cannot ask to join
    /town unban <player>: Unban <player> from your town
    /town setwarp: Set the warp point for your town
    /town plot define: Select a cuboid for a plot.
    /town plot addmember <player>: Allows <player> to build in the plot you're standing in.
    /town plot removemember <player>: Disallows <player> to build in the plot you're standing in.
    /town delete: Delete your town

    General Commands:
    /town list: Lists all towns
    /town members <town>: Lists the members in <town>
    /town warp <town>: Warps to <town>
    /town join <town>: Notifies the owner you wish to join
    /town leave: Leaves the current town
    /town help [page#]: Displays the help pages (basically, this entire section)


    Permissions:

    I'm not going to take the time to write out each permission; I think they're pretty self-explanatory.

    pluginName.function

    For example:
    Town.create
    Town.plot.addmember

    If you have any questions regarding permissions (or anything else), feel free to comment.



    Some quick notes:

    - All '/town's can be replaced with the name of this plugin and an alias. I used town merely for simplicity. Same with the permission nodes.
    - You can only administer the town if you hold ownership and are currently part of it. That's why there isn't a need for a <town> argument.
    - An owner can edit all blocks within a town, Members can edit all blocks within their plot.
    - You might want to add an option to give specific members the ability to build outside their plot.

    Please leave your thoughts! The whole point of posting this was to hear what others had to say.
     
    Omnitv likes this.
  2. Offline

    izak12345678910

    Yes this would be useful today i have seen 2 plugins requesting for a towny lite or simple towns
     
  3. Offline

    np98765

    Would anyone like to share a thought or two?
     
  4. Offline

    Omnitv

    Yes I firmly believe that the "Towny" plugin is too complicated for the average consumer, and that too many people over think and get there brain in a stew. I Highly support the production and development of this plugin.
     
  5. Offline

    np98765

    It is quite complicated. I just don't think that users of a server want to read an entire wiki on how to use Towny... I can even see server owners reluctant to do so.

    I thank you for your support. :)

    That makes three supporters, myself included.

    Can anyone give me a developmental aspect? I know that everything is possible (right?), but how difficult would it be to code?

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

    Sushi

    As difficult as any plugin... A database might be optimal for storing all the town and plot cuboids/regions though.
     
  7. Offline

    np98765

    That would probably be best. Using MySQL to store all the data... :)

    Maybe a configurable option for mysql or sqlite...

    Thanks!
     
  8. Offline

    PhoenixFlight

    I call dibs on this one... it'll be uploaded by 8 PM EST. I've got the basic idea of it working now, like creating a zone and giving it an owner... it's just the MySQL and SQLite that's going to be annoying.
     
  9. Offline

    np98765

    Ok, good luck!! Many, many people will use and enjoy this plugin, as a simpler alternative to Towny.

    Good luck, and happy coding! :)

    Also, a note to anyone who responds to this post (or any others)...

    I will be gone for the week, so I won't be able to respond to anything... Whether that be a PM, comment, etc.

    That being said, I won't be able to beta test this plugin... So I'm relying on someone else to! :)


    Thanks,
    NP98765

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

    Omnitv

    Will use as reference once plugin has been created.
     
  11. Offline

    Sushi

    If you open-source the plugin I'll be sure to help out.
     
  12. Offline

    PhoenixFlight

    I always go open source... no exceptions. Also, it'll be a few more hours, since I woke up at like 4 today (HOORAY FOR SUMMER)

    Okay, so, I just finished writing this thing, and I'm going to say this once: It's crap. The code is just ugly. I mean, if you actually use the jar, it works fine, but oh my god, I actually want someone to castrate me with an axe for writing this code. I think what screwed me up was a bad assumption, rather than a bad approach. Specifically, I wrote this code in such a way that players could create multiple towns and join as many as they want. Writing it to make this work made everything just plain weird. For instance, to figure out if a block can be placed, I went through every Town until I found the one that the block was placed in, then went through each plot in that Town until I found the one where the block was placed, THEN checked if the player was a member of that plot and decided whether or not to cancel. That whole process was happening every time something happened to a block, or a player talked, or anything like that... it's horrible. Because of the godawful nature of this creation of mine, I am not committing it tonight. I'm going to take tomorrow and go through, using this crap code as a base, since a lot of functions are actually okay just fine, and do a rewrite. It should go faster, since I've got the basic idea down, I can copy-paste a lot of things, and I've got the SQL stuff set up perfectly already (that's actually perfect).

    A couple of notes, actually:
    1) For the first commit, I'm only going to support MySQL, but I'll add support for other engines pretty soon after.
    2) There'll be a configuration option to allow or disallow building in the wild.
    3) I've got a lot of ideas that I'd sort of like to add in, like town-specific chat channels and being able to allow/disallow certain mobs from spawning in a given Town or Plot, but since the goal is simplicity, I'll probably refrain from putting them in unless a lot of people want something. Any thoughts on either of these two?
    4) Would anyone like to tell me whether or not banned users should be allowed to even enter a town? I can just block them off entirely, or I can just prevent them from asking to join (which is what the OP wrote).
    5) Right now, my new plan on how to keep track of Town and Plot occupant blocks is to just keep a huge HashMap of Locations that are in ANY Plot or Town, then just tracking by checking if a Location is in that HashMap and if so, check its Plot to see if the user has permission to do whatever it is they're doing. The only issue I have with this is that it feels like it would eat up a ridiculous amount of memory. Any other devs want to give an opinion on this?

    That's about it for this wall of text... I'll try to have a first commit up asap, and I'm already annoyed that it's taking me this long.

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

    lclc98

    I was thinking about making this but know i am happy i didn't as i would have failed badly and stuffed it up.
    Good luck Phoenix and hope it works out
     
  14. Offline

    PhoenixFlight

    Bad news. I just accidentally wrote an integrated mail system.

    My god I fail so hard.


    HOWEVER, this version looks infinitely better than that last... debacle.
     
  15. Offline

    Everdras

  16. Offline

    PhoenixFlight

    Well, here's my attempt. It seems to work pretty well so far. Obviously it's an alpha release, and for the moment the only database type is MySQL, but that'll change soon.

    http://github.com/PhoenixFlight/SimpleZones

    Have fun debugging and such, nooblets.

    PS: Permissions are in src/plugin.yml
     
  17. Offline

    izak12345678910

    So you need MySQL? Can you make it without it like towny?
     
  18. Offline

    PhoenixFlight

    Well, I can probably make it into just a bunch of ymls, but while it is doable and probably wouldn't take more than an hour or two at most, it would still be annoying and stupid. I can definitely shift it to include other DB engines.
     
  19. Offline

    OstlerDev

    I could help dev this if needed phoenix, just send me a PM.
     
  20. Offline

    maxwell23

    I support this project fully! I also have some feature requests/ideas.
    The town should have buyable plots like if the mayor puts up a sign at 1 plot with price and a player right clicks it he/she buys it and the money goes to the Town account. There should also be rentable plots. Considering that you select a plot with a cuboid selection tool you could make a hotel with different rooms that can be rentable. I like the idea with the simpler claiming method. Running around claiming 16x16 areas (like in towny) doesnt allow you to make roads between the plots and such. But some stuff from towny should be implemented like a town account for players to deposit in and pay taxes. Also towns should be able to unite in nations (as in towny) and 1 town can be chosen as Capital city. There are some suggestions for a perfect plugin. I se alot of potential and this plugin will be very popular , THE MOST IMPORTANT THING IS: STICK WITH THE CUBOID SELECTION (WORLD GUARD LIKE) claiming 16x16 areas is so annoying!!
    Feel free to email me if you need help with anything as i answear there much faster . Im more than happy if i could help outn with this great plugin!

    email-
    [email protected]
     
  21. Offline

    PhoenixFlight

    Selection is done by just tapping two opposite corners, and it expands the selection to maximize it in the Y direction. As for the iConomy stuff... um, I'll think about it, but that seems oddly complicated. Maybe if I can figure out a simple implementation, and definitely not till everything else is working flawlessly. More than likely, if I do that, it'll be as a separate plugin to act as an extension to this one.

    On that note, my todo list:
    1 - Get YAML storage working (debugging now)
    2 - Add SQLite support
    3 - Add a config option to allow/disallow building in the wild
    4 - Town specific chat channels, and a command for town owners to send mail to all of their town residents
    5 - Change how people join towns... change it to an invite/request/confirm system, rather than the current system, where "joining" a town really just means having a mail sent to the town owner saying you want to join, and a town owner can add a user to their town without any confirmation on the user's end.
    6 - Add a /plot delete command
    7 - Add superusers, who, like the owner, can build in unplotted sections of their town.
    8 - Clean up the code... I feel like I've got some pointless methods and repeat code in there.
    9 - ?????

    Somewhere in this process, I should probably set up BukkitDev, shouldn't I?
     
  22. Offline

    izak12345678910

    Make it no need MySQL? Please! Thanks
     
  23. Offline

    lclc98

    or make it configurable
     
  24. Offline

    PhoenixFlight

    That's what #1 is on that todo list, lol.
     
  25. Offline

    lclc98

    how the yaml storage going
     
  26. Offline

    PhoenixFlight

    YAML works as much as I care to test it, which means MySQL is no longer required. New upload posted on github. Switching to BukkitDev in a bit.

    EDIT: BukkitDev is set up... just waiting on an approval now.

    EDIT 2: http://dev.bukkit.org/server-mods/simplezones/ <--- transitioning over there, I suppose
     
  27. Offline

    np98765

    Back from vacation! Love the BukkitDev page, good job, PhoenixFlight.

    Can't wait to see this progress!
     
  28. Offline

    Beefy567

    I love the idea of a simpler towny! Can this one help me ALLOW people to join a town?
    Or edit how big a default one can be? i am working on a server and i added Towny, not just to protect my spawn. I made a castle but it was TINY because i could only use 8 plots :( I ended up making it 3x2 plots (48x32 blocks) but it was still awfully small! Please add ABSOLUTELY EASIER customisation.

    PS: I set it so a town with only a mayor could have about 25 plots but it only let me use 16 plots!(On my first server) So i deleted that server and made a NEW one! It only let me use 8!
     
  29. Offline

    PhoenixFlight

    If you don't want people to be allowed to join, just don't give them the Zone.join permission, since that one handles both sending and accepting invitations.

    As for towns... right now their horizontal size is exactly the (rectangular) size you want... who am I to force them to be certain sizes? I suppose I can add a config option to set a max town size for non-ops, though.

    np: I still have a little bit of work to do on it... I need to put up command/permission data, etc.
     
  30. Offline

    Frost_Blue

    Do you need to make update to accomidate 1.3?
     

Share This Page