🏰 [WIP] Guilds - A Factions Plugin - Looking For Input

:european_castle: Guilds v0.0.2 - NOT PRODUCTION READY

###LOOKING FOR INPUT - Please read my first reply

This plugin is in a still rather early state and is constantly progressing, so I do not recommend you use it on production servers. For now I am looking for suggestions, bug testing, and contributors. This plugin in its most basic form is what Factions was on Bukkit, with a few changes and additions. A lot of the old features are there, some new ones, and some will not be included or are still being worked on. I hope you guys enjoy and please leave all the feedback you can!

Features

  • Create and disband guilds.
  • Set relations with other guilds.
  • Create and modify ranks.
  • Claim land according to how much power your guild has.
  • Set a home for your guild and a configurable amount of warps per guild.
  • Can modify some basic information like max-power, min-power, and more in the configuration.
  • Talk in varying chats with members of guilds with a certain relation to you.
  • Basic economy integration, guild bank, transfer money between banks, etc.
  • Toggles for players, like if they see land messages or titles.
  • Can list all claims of your guild.
  • Can show land around you with a mapping command.
  • Can set an MOTD for your guild and players can disable it.

Known Issues | To-Do

  • Cannot modify the permissions of the specified relation.
  • No admin capabilities of controlling other guilds.
  • No capability of claiming WarZone or SafeZone.
  • Cannot claim land in squares or circles.
  • Not all messages are consistent and some are more than one line.
  • Sometimes land messages appear more than once, the first one wrong occasionally.
  • Cannot list what guilds you are invited to.
  • Chat formatting is completely overridden, causing issues with display name colors, prefixes, links, etc.
  • Player tags above their head are not colored by relation.

Source: https://github.com/Meronat/Guilds
Downloads: https://github.com/Meronat/Guilds/releases
Contributors: @Meronat, @Nighteyes604

Commands: I’ll add more in-depth information soon, but for now you can do “/g” or “/g help” in game for some basic command usage and help. Hover over the command name for syntax help. For those used to Factions, you can use “/f” as the base command.

Permissions: Permissions are still evolving, especially since there are no admin capabilities yet. For now, the permissions “guilds.normal” will give normal users all they need. Once I release the admin commands I will go more in-depth on the permissions.This should actually be given by default, so you should not need to give it. This may change in the future though.

Issues: There will be plenty of issues as this plugin has not had a lot of testing and there is still a lot to do. Remember do not use this on a production server yet. I do appreciate all input though, either about bugs, desired features, or language/color problems. Report or tell me anything here or by an issue on Github.

Thanks for being such a great community always helping me with any questions I’ve ever had and just being fun to be part of. I hope my contributions through plugins help the community continue to grow.

5 Likes

I haven’t worked on this much for a long time and am about to come back to it. At the moment it is slow, buggy, and missing a lot of features. I would like to know what everyone would like from a plugin like this, where I can improve, and just any feedback you have would be greatly appreciated. If you would like to help and submit a pull request that would be beyond amazing or test the plugin on non-production environments to find out missing features or bugs would be extremely helpful as well.

Some goals of mine -

  • Support for more database types outside of MySQL and asynchronous database calls.
  • Clean up the SQL queries and general database format, to improve performance, readability, and adaptability.
  • A complete refactor of how land is handled, there is too much object creation and it is beyond inefficient.
  • A refactor of how offline players are handled, as their GuildsPlayer is currently always loaded.
  • Stop ignoring(overriding) other chat plugins for public chat and actually respect what they add(help me?).
  • Add the ability to claim WarZone and SafeZone, as those are major features a server needs.
  • Color player tags by relation and possibly include their power under their name.
  • Allow claiming of land with a specified radius in either a circle or square shape.
  • (MAJOR) Introduce administrator features, as that prevents this plugin from being used much, such as bypasses, social spy, and other moderation tools.
  • Finish relation permissions and clean up rank permissions.
  • Decide on a common color scheme and style for messages and menus.
  • Completely redo all types of help, as they are messy and hard to follow.
  • Improve tab completion in some areas.
  • Optimize anywhere that’s possible and fix the use of Optionals in some parts of the plugin.
  • Refactor my main class, how I handle the loading of my SQL, where I register certain features, etc.
  • Properly protect from more interactions in faction land as a lot of damage that shouldn’t can still occur.
  • Increase the amount of configurable options as to make the plugin more fitting to more people.
  • Add a translation system for future support in other languages.
  • Make use of the inventory API to add some useful interactions that can optionally be toggled.
  • Create a style guide and contributing guidelines to hopefully increase contributions.

EDIT - Developers Please Read: I am still a beginner programmer and I did a lot poorly in this plugin, so if you are knowledgeable about Java and/or Sponge, I would love it if someone looked through my code and found where I have bad practices and possibly explain how to fix some of them. I know I am doing a lot wrong and any critique will help me so much. @pie_flavor ;)?

Thank you so much everyone, I hope this plugin can have a great future :heart_exclamation:

There’s a few minor things I can say, but for the most part you seem to have a good grasp of the API. The one thing that I would say is that GuildPlayer would be much better served by one or more DataManipulators.

Also, if you’re going to statically store an EconomyService, make sure to update it on ChangeServiceProviderEvent.

1 Like

I didn’t really think about the economy service provider changing, so thanks for that, I’ll make that change soon.

About the DataManipulators, I know there is documentation for it, but what do you think a good basic setup for data would be for GuildsPlayers? I don’t know how to effectively use them I guess I’m saying.

Thanks for help :smiley:

DataManipulators are used to store data. If you make your own, you can store your own custom data on players. This gets saved to NBT. It’s a better solution than storing it yourself because it provides unified access through the already-existing API.

1 Like

Am I able to get this data from a Player and their User if they are offline, also is there any concerns with data being lost between versions?

  1. Depends on whether Sponge allows that of normal data. I don’t know; I think they said they had fixed it during the Q&A of SoS XII.
  2. Nope, that’s not how NBT works. And as for your own versioning, it becomes very easy with use of AbstractDataBuilder and DataContentUpdater.
1 Like

Well I’ll have to just test it out then.

Thank you for your help, I appreciate it, and I look forward to implementing data for my guilds players.