- Native Minecraft Version:
- Tested Minecraft Versions:
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
Condensed YML files
Removed discord functionality as it was poorly optimized and ran on the main thread
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.
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.
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
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.
- Faction Duels
- More functionality to shields
any suggestions? Let us know in the discord!
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!
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.
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.
$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
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
Manafia Factions 1.01-Beta
An optimized factions plugin with boosts and shields!