Now all "non special" gatherers have been combined
to use Gatherer interface inside ProviderValueGatherer
Two gatherers are not yet abstracted:
- BooleanProviderValueGatherer, returns Conditions
- TableProviderValueGatherer, different provider save§
This removes a lot of duplicate code that was pretty
difficult to understand due to the complexity of the
functional interfaces inside the classes
Some optional values from different providers
were not included in ProviderInformation,
which lead to unnecessary instanceof usage and
weird static methods.
Added the optional info to ProviderInformation
and created a Builder, making much cleaner code
and removing those odd ball methods.
- Also fixed StoreProviderTransaction having
insert of Icon and Tab in wrong order
- Removes duplicate code by replacing 5 different
Store___ProviderTransaction classes with
a single one.
Null value is inserted where possible / makes sense
This class is supposed to replace all different gatherers (except maybe Boolean)
because these classes contain a lot of duplicate code, and adding group
methods would only increase the amount of duplicate code.
So instead of having duplicate code in different classes, a single
class could be abstract enough to construct the different functionality
without having branches in the execution logic.
Some non-text files like fonts were being exported as text
Fixed by identifying text files and exporting other files
by copying the bytestream directly.
Affects issues:
- Fixed#1297
Some paper methods are not available in old versions of Paper,
leading to exceptions.
Method for checking the existence of the methods was added
Affects issues:
- Fixed#1304
This commit is a squash of 8 optimization commits to TPSCounter.
1. Extracted duplicate code in TPSCounters to ServerSensors.
- TPSCounter tasks now live inside common module
- ServerTPSCounter and ProxyTPSCounter
- Gathering methods are implemented with ServerSensor interface:
Player count, TPS, Entity count, Chunk count
- ServerProperties#getOnlinePlayers was replaced with ServerSensor
- Fixed sonar smells: "Hiding field" in TPSStoreTransaction & NavLink
2. Optimizations down to 0.15ms / run
- Optimized entity+chunk count (same for loop)
- Added warm-up for system resource methods
- Removed Stream API usages
- Removed List copy operation
- Entities & chunks only count once per minute
- CPU & RAM averages now produced with Average class
- Maximum player count per minute now produced with Maximum class
Affects issues:
- Fixed#1289
Original query used an odd inner join which caused some tables to
not be displayed at all, in some cases no tables were displayed at all.
The inner join was joining the value table, which is lower in the table hierarchy.
Changed the query to instead inner join upwards in the table hierarchy, joining the
plugin table.
Affects issues:
- #1260
Regression during redesign placed single tab content in card-columns div,
which caused the content to be displayed with a sub-par width.
Fixed by extracting new code that handles case for wide tabs, which
display the plugin container as full page width.
- Additionally, solved some issues with the plugin tab names & ids
Affects issues:
- Fixed#1276
- Reduced constructor parameters in Exporter
- Removed Throwable#printStackTrace calls
- Cleaned up SessionsMutator#toJSONMaps a little
- Replaced uses of getString/Number/ methods of PlanConfig with PlanConfig#get
Also for /network -> /network/
This was causing some issues with relative links when Plan was in
subdirectory eg address/plan/server would direct requests to address/v1/
instead of address/plan/v1/
Affects issues:
- Fixed#1210
Player names were in use previously, but changed to uuids to reduce
odd player name issues (On cracked servers the names can be whatever)
Encoded the playernames to URL (new session json parameter) and added that
to sessionAccordion
Affects issues:
- Fixed#1269