Complex Guilds Plugin

Discussion in 'Plugin Requests' started by Xp10d3, Aug 21, 2020.

  1. Offline

    Xp10d3

    Version: 1.8.9

    **Brief Overview**
    Alright. I need a Guilds plugin. Basically, anyone with the permission `guilds.create` can create a Guild. The Guilds should be stored in a MySQL database.
    **Creating Guilds**
    Upon creating a Guild, the player that created it will be warped to another world that is specified in a config. An island will be generated. Nothing complex; just a small dirt platform. The player should also be given a book that can be customized in a config (what's inside of it).
    **The Guild Itself and Inviting other Players**
    Players can invite other players to the Guild using the command `/guild invite <user>`. Once they join a Guild, they are able to warp to the Guild island using `/guildisland`. The Owner can also promote people in the Guild using `/guild promote`. The ranks include:
    ```
    - Owner [highest rank]
    - Administrator
    - Moderator
    ```
    Owners can do anything. Kick people from the Guild (`/guild kick <user>`), ban people from the Guild to prevent the user from joining (`/guild ban <user>`), modify the Guild island, wage war (which I will explain later), and delete the Guild (`/guild delete` and `/guild delete confirm` to confirm to delete the Guild). Administrators can do all of those things EXCEPT delete the Guild. Moderators can only ban, kick, and modify the world. Note that there are other such commands that Mods+ can do. One of them includes being able to enable regular Members to modify the island or only allow certain Members to modify the island. The command is `/guild modifyworld <user>|everyone`. There is an option to either allow a certain user to modify the world (`/guild modifiyworld Eltik` for example) or allow everyone to modify the world (`/guild modifyworld everyone`). Mods can also disable modifying the island for Members (`/guild disablemodify <user>|everyone`), while Admins can disable modifying the island for Mods using `/guild disablemodify Moderator`. You should also be able to lock chests on the island (using another plugin will be too difficult to integrate into this one) using the command `/guild lockchest` and right clicking or left clicking the chest you want to lock. You can enable other players to acess the chest using `/guild chestallow <user>`. Owners and Admins can bypass the lock. If the permissions for Moderators, Owners, Admins, etc. is too complex, you can use commands in the config file. For example:
    ```yaml
    owner: lp user %player% permission set guild.owner
    admin: lp user %player% permission set guild.admin
    moderator: lp uesr %player% permission set guild.moderator
    ```
    %player% can be a placeholder or set it to whoever it targets. Obviously %player% is not a thing in LuckPerms :p
    **Waging War**
    This is a bit complex, but the coding should be somewhat simple. Basically, Guilds can declare war on other Guilds using `/guild war <guild_name>`. Once this happens, everything is relatively quiet. I can modify certain attributes with another plugin if I decide to using the database (be sure to add whether the Guild is in war or not and with who. It could be:
    ```
    war | enemy
    ---- ------
    false none
    ```
    And when in a war:
    ```
    war | enemy
    --- ----
    true some_guild
    ```
    )
    However, if you were to try and visit another Guild (more on that later) you won't be able to if you are in a war with them. Other Guilds can also enter the war using `/guild war ally <guild_name>`. This means that you will ally with that Guild. This can happen at any time, however in a war this means once you wage war (more on that later), you will spawn in WITH the Guild you have allied with. If you happen to ally with multiple Guilds that are in a war, you have to choose which one to join in with. You should be prompted with a message (only for Admins + Owner of the Guild) asking which Guild you want to ally with upon joining the server. Anyways, if you are to attack the other Guild that you have waged war on, you use the command `/guild attack <guild_name>`. This is only possible if you are in a war. You will then be able to visit the other Guild's island and grief their whole island, steal their chests, etc. Once antoher Guild's island has been completely destroyed, the war has ended and a reward is given to the winning Guild (reward can be specified in the config file).
    **Visiting Other Guilds**
    You have to enable visiting the Guild island in order for people to... well, visit the island. The command should be `/guild visit enable` for users who are not in the Guild to visit the island. That's... pretty much it.

    If you have any questions feel free to ask them (of course :p)

    The amount of players that can join a Guild have to be managed by the Owner or Admin. By default, 10 is the limited amount. However those with the permission:
    `guild.playerlimit.20`
    Can set the limit to 20. Those with the permission:
    `guild.playerlimit.50`
    Can set the limit to 50. Those with the permission:
    `guild.playerlimit.100`
    Can set the limit to 100. And finally those with the permission:
    `guild.playerlimit.unlimited`
    Can have unlimited amount of players in the Guild.

    A couple more things to note:

    Those with the permission guild.admin.delete can delete existing Guilds even if they aren't in a Guild.

    For creating the Guild Island:
    There are a few ways you can accomplish this:
    1. Creating a separate world for each Guild Island. Get a seed or world files and create a world based on that. I think the Bukkit API is Bukkit.getWorld().create(attributes_here) or something similar. You can name each world the Guild name.
    2. Use one world folder and generate a new island for each Guild. This isn’t recommended since it’ll be difficult with permissions and such. I’d only use this if I’m conserving CPU and memory.

    In a nutshell it’s basically a Skyblock island. But it shouldn’t be anything to fancy.

    The concept is that upon creating a Guild, an island is generated. As said in my first message, you can either use one world or multiple worlds. Each island is basically a dirt island. The person that created the Guild will be the only player that can build/modify the island. By that I mean:
    - Breaking blocks
    - Placing blocks
    - Using Redstone, water, etc.
    The Guild owner/person that created the Guild can promote others that join the Guild so that they can modify the area. I mentioned in my explanation on the Guilds how certain players can change the island.

    Additional features I'd like to be added are:
    In order to go into a Guild war you have to pay a certain amount of money (using Vault of course). Amount should be configurable.
    Guild Mods+ can toggle whether they can be waged war on. This means no Guild can wage war on that Guild and they can't wage wars on other Guilds either.
    Guilds have to mutually agree to war and agree on the player limit in the war (how many players will participate in the war MAX).

    If you have any questions let me know. This is a VERY complex plugin, so sorry...
     
  2. Offline

    Xp10d3

    Bump
     
  3. Offline

    Xp10d3

    Bump
    EDIT: Someone has taken this plugin already. If you want to give another shot at it that's fine, but that will probably not be necessary lol. I'll mark this as filled if/when the plugin is finished.
     
    Last edited: Sep 6, 2020

Share This Page