[WIP] Nations --- For active PVP [Devs wanted!]

Discussion in 'WIP and Development Status' started by jwa1, Apr 24, 2014.

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

    jwa1

    /-----------------------------------------------------------------\
    Now in development!
    [Help wanted]
    You can find me (Ion) in our IRC channel!
    \-----------------------------------------------------------------/

    Current features:
    • Help-commands
    • Generate config file
    • Join nation through commands
    • Maven integration (No dependencies yet)
    • Save / load player-data to / from file
    • Disable pvp between players from the same nation
    To-do:
    Higher on the list means higher priority
    • Support for UUIDs
    • Update to latest Bukkit beta build (1.7.9)
    • Nation traits
    • Disable nation 'jumping' (Admin command should be able to change a player's nation directly though)
    • Set nation spawn (admin command | /n set spawn )
    • Teleport command to nation capital for players (only in their active nation)
    • Optimize saving / loading
    • Build-protection in an area around the nation spawn. (Ability to override with WorldGuard? Useful for houses inside the capital)
    • Create config.yml with plugin-options
    • More admin commands
    • Additional nation info in-game
    • Nation name under holo-nametag. Alternatively: Nation tag + color in nametag
    • Settlements (Will be specified at a later date)
    • Everything else
    Plugin Request
    Plugin category:
    Mechanics, Role playing

    Suggested name:
    Working title: Nations
    Name ideas are welcome!

    Minecraft version:
    Preferably 1.7.2, 1.7.5 or newer. Working with version 1.7.2, needs updating to 1.7.9.

    Back story:
    Hi, I have been sitting on an idea for a server for a long time. It's going to be a role playing server where you play as a late-17th century explorer who set out to explore and colonize the "New World". I have the worlds and basics done but have been problems with getting the plugins to do exactly what I want. As I have absolutely zero experience with coding I am asking you guys for help. I will be able to provide a testing server if needed.

    What I want (short):
    I want players to be able to choose a nation as their 'team' and then be able to make towns inside that nation. (reverse Towny). It would be really cool if the different nations could have little traits to them.
    The nations would be in constant war with each other, allowing the players to engage in battle or even destroy blocks of the other nation (with the exception of the nation capital).

    What I want (long):
    I have been working with Towny and Factions before, but they do not provide exactly what I need.
    My idea is that the player joins a nation/country/faction first and is then able to create towns/settlements under that nation's flag. My original idea was to have four nations, but there could be more to choose from, maybe enable/disable nations in a config file.

    Each nation will have a designated capital city that can not be attacked, players of that nation will be safe here. Player-created settlements however are vulnerable.
    Players from other nations that enter a capital of another nation will get a warning, other players can attack that player without taking damage themselves.

    The traits idea came from Mcmmo, it makes players choose a nation carefully. I think it can really improve gameplay to have that little extra trait.

    Players from other factions can be identified by the nation's name under the player name tag.

    The area that belongs to a nation's capital or settlements is done by claiming chunks (like in towny).

    Players from other nations are able to destroy blocks in settlements belonging to another nation, but not chests.

    Players should not be able to jump from one nation to another too often as that could be exploited, a limit of one switch every week sounds reasonable.

    After players in a settlement are offline for a certain amount of time (configurable?) the settlement will fall and players can then take everything.

    A neutral ground should also exist, players cannot break blocks or pvp here. This is useful as a spawnpoint, global market with shops or minigame area. This could be another world (Disable Nations in certain worlds).

    Main nations idea + traits
    England:Extra damage with bow & arrow in combat
    Netherlands: Gain a % of money each day (interest over current balance)
    France: Bonus resistance from armor
    Spain: Chance for extra drops while mining
    Additional nations + traits
    Germany: Chance to get one extra ingot in smelting
    Switzerland: Chance to get some money from killing mobs
    Italy: Extra loot from mobs
    Portugal: Extra damage with swords and axes
    Belgium: Extra food nourishment

    Extra idea: Sieges
    In this idea, players can not destroy blocks of another nation's settlement, instead they can declare a siege. The town will get a big warning message that an enemy town is attacking it and they can either declare counter-siege or to defend.
    In counter-siege both towns will have to kill as many town-members of the other town as possible. The town with the most kills will be victorious and the losing town will fall.
    In defend the enemy destroys an X amount of blocks (not chests) in the town they declared a siege on. If the damage is not repaired in an X amount of time (2-3 days) by the defending side, the town will fall.

    Ideas for commands:
    • '/nation' Show plugin commands or nation info when in a nation
    • '/nation join <nation_name>' For new players to join a nation
    • '/nation switch' Switch between nations
    • '/nation settle' Create a town in your nation
    • '/nation help' Show plugin commands
    Ideas for permissions:
    • - nation.player (General permission node for regular players)
    • - nation.admin (Can see admin commands | build/destroy/attack everywhere, can also set capital bounds)
    When I'd like it to be ready:
    Before the world ends.
     
  2. Offline

    tcvs

    jwa1 I think this is a very cool idea. However this is a very big plugin to develop.. I think it would actually require a team to do. I may be willing to do this if there are a few other that would want to work together.
     
  3. Offline

    jwa1

    I was thinking that a lot of the code could be adopted from Towny, Factions and Mcmmo.
     
  4. Offline

    jwa1

    I think that the base is pretty simple, let people choose a nation and have that nation as a tag to that player.
    It's pretty much exactly how Mcmmo does the class system.
     
  5. Offline

    jwa1

    I'm currently in the process of learning Java so I might be able to help with this at some point.
    Any more people interested?
     
  6. Offline

    TwoPointDuck

    Yes, this is quite a big proposal. But if I can work with one or more dev's I think id be fun to do it.

    If you can get tcvs to join in, just pop me a message.
     
  7. Offline

    jwa1

    I've set up a Github and began work on the plugin. Currently it's not more than a simple help menu.
    https://github.com/Ionaru/Nations

    tcvs and TwoPointDuck Please message me your Github name so I can give you access.
    Anyone else is welcome to help by sending pull requests. :)
     
  8. Offline

    tcvs

    jwa1 here is my github: endercrest. I may not be able to help for a bit due to a heavy work load.
     
  9. Offline

    jwa1

    Still looking for developers that, unlike me, actually know how to make things work. :p
     
  10. Offline

    jwa1

    bump

    Reminder: there is already a Github repository set up at https://github.com/Ionaru/Nations.
    Send a PM to me if you want full access on it, otherwise you are always welcome to make pull requests.
     
  11. Offline

    XgXXSnipz

    Ok how about jwa1 and tcvs and I work on this, using GIT. does that sound good?
     
  12. Offline

    jwa1


    It's my plugin request, so of course you can help. ;)
     
  13. Offline

    tcvs

    XgXXSnipz As I said still busy I will try to help every once in a while but at this time I can't commit to it full/part time.
     
  14. Offline

    jwa1

    There's now a to-do list on the Github page, so people know what to code. :p
     
  15. Offline

    tcvs

    jwa1 I recommend you start using maven to start compiling the plugin stuff. Just a recommendation. I also now have time if you need someone to take lead. I am willing.
     
  16. Offline

    jwa1

    tcvs What's that? Please explain.
     
  17. Offline

    Onlineids

  18. Offline

    jwa1

    Yeah, I saw the web-page. I still have no idea what it does exactly and more importantly, why I would need it.
     
    timtower likes this.
  19. Offline

    Onlineids

    credit to mkremins
    Show Spoiler

    The Maven official documentation isn't too great at explaining Maven from the perspective of someone who isn't already familiar with some of the tools that preceded it, which is something I learned the hard way when I was trying to get it set up myself a few weeks ago.

    When you distribute a Bukkit plugin (or other Java application), you package it as a .jar file. This file is basically an archive that contains everything your plugin needs to run, including executable files like compiled Java source code (.class files) and static resources like plugin.yml or your default config.yml. Most people who are just starting out don't think too much about how that .jar is put together; it's common to just let Eclipse (or whatever IDE you prefer to use) handle compiling and packaging your code and resources into a .jar for you.

    However, as your plugins grow more complicated, you'll start running into areas of .jar building that your IDE's "export" feature doesn't cover particularly well. One of those areas is dependency management, or making sure that your code has access to any and all of the external libraries that it needs to run – both at compile-time (on your development machine) and at run-time (on the Bukkit server(s) where the plugin is actually being run.) Simple plugins don't tend to rely too heavily on external libraries, but maintaining a plugin that makes use of lots and lots of other people's code – code that is itself being constantly updated and re-released – usually tends to devolve into a mess pretty quickly.

    That's when a lot of people tend to turn to Maven. Maven is a build tool – that is to say, it takes over from your IDE's export functionality, compiling and packaging your code for you in such a way that there's much less hassle involved in maintaining a project with more complicated dependencies than Bukkit alone.

    To use Maven, a plugin author will create a pom.xml file, a configuration file of sorts that defines how the final product .jar should look. That file instructs Maven about where to find the external libraries on which the plugin depends, what resource files should be included in the final product .jar, and lots of other stuff related to plugin packaging and distribution. Then the plugin author uses a command-line tool (the mvn command) to "build" the project, instructing Maven to download the necessary dependencies, move things around as required, and put together a stand-alone .jar that can be distributed to all of the plugin's users.

    Maven can do other stuff too (in fact, I've barely scratched the surface of what it can do), but dependency management that doesn't suck is the #1 reason I've seen people switch to Maven – and the reason I switched myself.

    Side note: a "Maven plugin" and "a Bukkit plugin that's compiled with Maven" are two entirely different things. A Maven plugin is a bit of code that Maven runs during the process of compiling and packaging your project; each Maven plugin mentioned in your project's pom.xml contributes something to the build process. A Bukkit plugin that's compiled with Maven, on the other hand, is just an ordinary Bukkit plugin that happens to be buildable by Maven (something that can often make it easier for other developers to get started contributing code to a Bukkit plugin, since a properly configured Maven project does a lot of the necessary "setup" drudge work automatically when the project is first built.)
     
  20. Offline

    jwa1

    It's a lot clearer now, thanks.
    But I don't have any dependencies as of yet and I don't plan on relying heavily on other plugins.
     
  21. Offline

    tcvs

    jwa1 even if you don't plan on building dependies. I think it is still a useful thing. Also we should have dependicies like you can't claim an area that is world guarded so there is a dependicy right there. Anyways I have made a new github that is using maven. Http://github.com/endercrest/nations
     
  22. Offline

    jwa1


    I'm not too happy that even though you said it was a "recommendation", you went and did it all on your own anyway! And couldn't it wait until we at least have some of the basic mechanics in place??

    All is good. ;)
     
  23. Offline

    tcvs

    jwa1 does it really matter that much? I can always make a fork to your github. I use maven becuase I am adding world guard support. As of what I can see as of now is just you and me... So ya. I also don't like changing the plugin over to maven in the middle. So I have done what I have done...
     
  24. Offline

    jwa1

  25. Offline

    jwa1

    Several basic mechanics are in place and I'm learning a lot about Java coding in the process. :)

    We're still looking for more people to help with features that I have no clue how to make (See the To-Do list on the github page).
     
  26. Offline

    jwa1

  27. Offline

    Alster551

    Shouldn't this be in the plugin development section?
     
  28. Offline

    jwa1


    No, because that section is for help with developing.

    This is still a plugin request because I'm looking for people to help me develop the entire plugin.
     
  29. Offline

    mythbusterma

    Sure I'll help you guys out with this, did you guys set up Maven support or no?
     
  30. Offline

    jwa1

    Yes, a while ago.
     
Thread Status:
Not open for further replies.

Share This Page