- Filter interface
- Wrote 5 filters
- Wrote QueryFilters that manages different Filters
Plan is to link the QueryFilters to Resolvers:
- One that returns all filters and their options as json
- One that users the query parameters (eg ?q={json}) and gets the filters
- FilterQuery has a static method to parse the json
- Removes the need for duplicate code in 5 places in charge of registering
the tasks for different platforms, as all the delays were the same too.
Affects issues:
- Close#1387
- Extracted ErrorLogger interface
- Created a new Component for Database tests
- Added TestAPFModule and TestSystemObjectBindingModule
- Database tests no longer enable the full system
Affects issues:
- Close#1401
- Redundancies:
- MySQLDB: Removed null check
- DeathEventListener: Removed warning suppression
- several Test classes: Removed public class identifier
- Unused private fields
- Constructors of abstract classes should be protected x31
- Added missing Parameterized types x2
- "throws" declerations for runtime EnableException
- Prevented Boxed Boolean from causing NPE in the future x15
- Renamed lesser scope variables that were hiding variables x12
- Some smaller ones that I was too tired to write down
- Added CMDSender#supportsChatEvents because Nukkit players don't support
hover or click events. This means that isPlayer method is not sufficient
for finding out if the sender can produce these events.
* Improved Extension errors
* Removed scary reflective operation exception
* Additional context to SQL Exceptions
* Added error context to Listeners
* Added error context to most error logging places
* Ignore cyclomatic complexity of DBOpException
Adds context to almost all error logging situations, except those where it is unknown, or to commands that are being refactored on another branch.
Close#1245
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
- 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
- GeoLite2 downloads the file using License key, only if EULA is accepted
- Fallback to IP2C if GeoLite2 is not available
- Remove GeoIP.dat after successfully downloading GeoLite2-Country.mmdb
- Added case where geolocation fails to enable and doesn't cause issues
- Adds Apache commons-compress to the dependencies because of a tar archive
Affects issues:
- Fixed#1273
- Removed unused code in Reflection
- Removed duplicated Strings in GMTimes
- Added private constructor to TimeZoneUtility
- Renamed local variable in RegisterDateMinimizationPatch
- Replaced Function<String, Boolean> with Predicate in ExtensionRegister
- Changed AFKListeners to use primitive boolean
- Changed Config#get(Setting<Boolean>) uses to isTrue and isFalse
- comment to NukkitListenerSystem
- Implemented APF for Nukkit
- Copied Bukkit implementation and modified it for Nukkit
- Fixed SQLite not being present on Nukkit by switching to H2 on boot
Affects issues:
- Close#1020