Manafia Factions 1.01-Beta

An optimized factions plugin with boosts and shields!

  1. 71Zombie
    Native Minecraft Version:
    1.16
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    • 1.17
    Source Code:
    https://github.com/Manafia-Development/Manafia-Factions
    Manafia Factions

    A well optimized factions plugin

    Note for 1.17 and beta users:
    The latest version is a beta version which will have bugs that affect only 1.17.



    What is it?

    We've taken the well known factions game-mode and have completely re coded the entire project. We've optimized nearly every single class with performance in mind. We have fully stress-tested the entire plugin. In some cases, this plugin saves 1.8MB of RAM per player, starts up 200% faster and with the proper configuration, it can claim 1 million chunks in just 20 seconds! These results will vary depending on hardware.

    What is different?

    Fully re-polished the entire plugin
    Faction Shields basic functionality
    Faction Boosters
    More configuration
    Condensed YML files
    Removed discord functionality as it was poorly optimized and ran on the main thread



    Boosters:

    Power Booster - Increase the power boost in your faction.
    Exp Booster - Increase mob exp drops in your territory.
    MobDrops Booster - Increase mob drops in your territory.
    MobSpawn Booster - Increase mob spawn in your territory.


    upload_2021-6-10_20-31-44.png

    upload_2021-6-10_20-31-34.png


    upload_2021-6-10_20-32-14.png

    upload_2021-6-10_20-32-4.png


    upload_2021-6-10_20-46-17.png





    Who is this for?

    This is for anybody who wants a good factions experience without sacrificing for performance. Like we said before, with the proper configuration this plugin is extremely efficient and can even save a large amount of RAM depending on your player base.

    Compatibility

    This should be compatible with all other plugins that any factions plugin is compatible with.

    Dependencies: Vault & EssentialsX

    SoftDepend: CoreProtect, PlayerVaults, PlaceholderAPI, MVdWPlaceholderAPI, PermissionsEx, Permissions, HeroChat, iChat, LocalAreaChat, LWC, nChat, ChatManager, CAPI, AuthMe, Spout, WorldEdit, WorldGuard, AuthDB, CaptureThePoints, CombatTag, dynmap, FactionsTop

    Before:

    [​IMG]



    After:

    [​IMG]




    The startup can vary depending on the amount of factions, claims and plugins on the server as well as host and hardware. This is just a baseline we got.



    This is a highlight of two days worth of work

    1) Changed lang.yml so it generates with underscores instead of nesting lines one after another (so the lang file is smaller):

    - also manually redone the root nest from the lang file so it generates correctly;

    - will look into trying to add comments and separe the areas; I don't think it's necessarry though;

    - lang file size reduced to ~1100-ish lines from ~1900-ish

    2) WarmUpUtill.java is fine, changed some brackets

    3) Removed useless methods from VisualizeUtil.java & changed stuff

    4) Interface Trackable seems fine, nothing to change

    5) Class ThreadFactoryBuilder seems useless to me, I'm gonna comment it out; waiting for call911's reply telling me what should I do with it (also the class is copy pasted from the internet from what it seems)

    6) SpiralTask seems fine, looks like a matrix being read into a spiral-like shape. Tell me if I'm wrong. I edited some methods here and there.

    7) Was thinking of doing the SeeChunkUtil with circular permutations as we can hold still blockX for instance and either add 0 to blockZ or add 16, but an efficient algorithm isn't crossing my mind for that. I don't think creating a 1-2 for loops for 4 cases is necessarry, so I'll go on with the current method of how the pillars are being chosen. Also edited some stuff from the class.

    UPDATE: I did SeeChunkUtil with 2 fors instead of spaghetti coding it and tested it, it works perfectly. I searched the internet and found that for loops are actually faster in java than spaghetti coding like that. That's great.

    8) Interface QuadFunction is fine

    9) Placeholder.java is fine

    10) That NumberUtil thing that checks if a string is a number is insanely inefficient. Changed it to a 1 line regex algorithm made by me

    11) MiscUtil is fine, removed useless brackets from for loops.

    12) Metrics -> changed the way a for loop works so we can remove brackets from a for (made if check for negative version and inserted code in it), also removed useless brackets and changed methods here and there.

    13) Minimal changes to LazyLocation.java

    14) JSONUtils is fine, nothing changed

    15) ItemBuilder.java -> some methods minimally changed

    16) InventoryUtil.java -> removed useless imports & changed stuff

    17) FlightEnhance.java -> removed useless imports & changed methods/removed brackets

    18) Changed some stuff in CornerTask.java

    19) Cooldown.java is fine

    20) Config.java is fine, changed stuff

    21) ClipPlaceholderAPIManager.java is fine, it's already done with switch statements, I just removed brackets, got rid of useless imports and changed some methods

    22) Removed useless declarations from CC.java class

    23) AutoLeaveTask.java is fine

    24) I laughed my ass off reading AsciiCompass.java and completely recoded the way we get the Direction using a while loop that increments an integer which I then switch after we decrease 45 degrees each time. Also we have to increment degrees by 22.5 so we don't land in the case where we are between 337.5 and 360 degrees to be north, therefore that should return north west. Also I added another switch statement to the ascii compass class.

    25) WaitedTask.java interface is fine

    26) WaitExecutor.java is fine, removed some brackets.

    27) WaitTask.java is also fine, small class

    28) TimerRunnable.java -> remove useless main instance after moving main functions to Utils class. Also removed useless imports.

    29) TimerManager.java is also fine, small class

    30) Timer.java is also fine, small class. Removed one useless method.

    31) GlobalTimer.java is fine, removed some brackets and cleared some stuff

    32) Removed unused formats from DateTimeFormats.java

    33) GraceTimer.java is also fine, removed useless brackets.

    34) Removed setDura method from ClickableItemStack.java; other than that the class is fine.

    35) Removed useless methods from GUIMenu.java; also removed useless imports

    36) Removed useless methods from InventoryItem.java

    37) I'm pretty sure class InventoryUtils.java is useless too. Removed it.

    38) ParticleProvider.java interface is fine

    39) ParticleColor.java is fine, not coded by Driftay so it's obviously good

    40) PacketParticleProvider -> removed useless brackets

    41) BukkitParticleProvider -> removed useless brackets

    42) ReflectionUtils.java is also fine, removed useless brackets. All these particles classes seem optimized and well done, probably because it wasn't Driftay who coded them

    43) Cleared stuff in ParticleEffect.java

    44) EnumTypeAdapter.java seems fine, changed stuff

    45) InventoryTypeAdapter.java is fine

    46) LocationTypeAdapter.java is also fine

    47) MapFLocToStringSetTypeAdapter.java is also fine, removed some brackets.

    48) MyLocationTypeAdapter.java is also fine

    49) Removed useless brackets in PermissionsMapTypeAdapter.java

    50) util package done.




    Upcoming Features:

    - Faction Duels
    - More functionality to shields
    and more!

    any suggestions? Let us know in the discord!

    Wiki

    We have a wiki located at https://71zombie.gitbook.io/ultimate-factions/ This is far from complete and is still a work-in-progress. If you're willing to help contribute please let me know and I can offer some rewards!

    FAQ:


    How do I get beta access?

    We have a public beta and a private beta. The public beta is posted here on spigot.

    What commands does this have?

    This has all the same regular factions commands. Refer to wiki for all commands.





    Donations

    We have several different options to show your support for the community. We've turned the regular donation into something much more beneficial to the entire community. Unlike a regular plugin where you donate, you don't really get much out of it. Here we have a great new innovative system that benefits everybody!

    How it works

    A donation is essentially "buying a feature". We've created several different tiers for donators. When you donate, you are also buying a custom feature for everybody in the community.

    Tiers:

    $5 - Basic Supporter rank + Custom Config
    $10 - Very small feature
    $30 - Medium to large feature or multiple smaller features
    $40 - Medium to large feature or multiple medium/smaller features
    $80 - Super large feature



    Servers:

    - mc.manafia.com


    Just let me know if your using the plugin and I will add your server to the list!







    A review is appreciated as this was a long process. Please do not post bugs in reviews. Leave a suggestion in our discord! We'll get back to you!

    Support Discord: https://discord.gg/yuCRTWmGbW
    Giovanmi likes this.

Recent Updates

  1. Changing 1.17 to beta
  2. Support for 1.17
  3. Fixed small bugs

Recent Reviews

  1. Giovanmi
    Giovanmi
    5/5,
    Version: 1.0
    I have never found a better plugin than Ultimate Factions. All the others plugins either were way too expensive or they were untrustworthy. Ultimate Factions itself included a lot of features I wasn't expecting a free plugin to allow others to use. Letting players (like myself) use different types of boosters, as well as, good optimization for me and my friends to have fun playing factions. The developer spoke with me about questions I had dealing with the plugin. They were very respectful, well mannered, and help me understand when I didn't fully get it. I would 100% recommend this to anyone that is willing to begin a good faction server.
    1. 71Zombie
      Author's Response
      Thank you so much for the kind review!