- Move check for restricted user into validation service
- Keep restrictions in a map by name for fast lookup, avoid splitting Strings on every call
- Gracefully handle case when entry does not have the expected ';' and log exception
- On startup / reload the playerdata folder is scanned for old segment files, whose data is migrated before they are deleted
- Add tests for segment files persistence holder
- Instead of one huge file or a file for each player, allow the user to define how many files he wants to distribute the LimboPlayers over. This is based on a function that creates a String (segment ID) based on the player's UUID.
- Introduce configurable storage mechanism
- LimboPersistence wraps a LimboPersistenceHandler, of which there are multiple implementations
- Outside of the limbo.persistence package, classes only talk to LimboPersistence
- Restore the way of persisting to JSON from 5.2 (SeparateFilePersistenceHandler)
- Add handling for stored limbo players
- Merge any existing LimboPlayers together with the goal of only keeping one version of a LimboPlayer: there is no way for a player to be online without triggering the creation of a LimboPlayer first, so we can guarantee that the in-memory LimboPlayer is the most up-to-date, i.e. when restoring limbo data we don't have to check against the disk.
- Create and delete LimboPlayers at the same time when LimboPlayers are added or removed from the in-memory map
- Catch all exceptions in LimboPersistence so a handler throwing an unexpected exception does not stop the limbo process (#1070)
- Extend debug command /authme debug limbo to show LimboPlayer information on disk, too
- Extract some logic into LimboServiceHelper to keep LimboService slim
- Create LimboServiceHelper#merge to merge two LimboPlayers associated with a Player. E.g. if an admin unregisters an online player that has not logged in, the creation of a LimboPlayer is triggered while there already is one in LimboService
- AsynchronousLogin: call common permission methods through CommonService instead of PermissionsManager
- CommandManager: remove superfluous replacement of %p (handled by lazy tag replacer)
- Remove unused method in CommonService
- Create DebugSectionConsistencyTest
- SendMailSSL: Enable debug output if AuthMe log level is set to debug
- Add Utils#logAndSendMessage and replace existing, separate implementations
- Introduce options to define how allow flight, fly & walk speed should be restored from LimboPlayer
- Create consistency tests for line length in SectionComments methods and to ensure that all SettingsHolder classes are part of the returned ConfigurationData
- Add methods to LimboService for handling messages to make it the only relevant Limbo class for outside classes
- Move LimboPlayerTaskManager to limbo package and make it package-private
- Create MessageTask and TimeoutTask immediately when LimboPlayer is created
- #1112 MessageTask: improve efficiency by keeping reference to Player
- Delete LimboCache and LimboPlayerStorage: LimboService now handles all LimboPlayer actions
- Revoke player rights when creating a LimboPlayer, within the LimboService
- Various fixes and improvements
- Introduce new LimboService with a higher level abstraction for outside classes to trigger LimboPlayer actions
- Add methods to LimboPlayerTaskManager for muting the MessagesTask safely
- Construction of a CommandDescription requires a lot of fields to be set. In most tests we only care about one or two fields -> having to set a lot of fields to dummy values is not very nice.
- FlatFile doesn't store the "realname" - all names are always in all-lowercase. Converting from flatfile to other data source should therefore not take over an auth's realname
- Adjust sample flatfile file to only have all-lowercase usernames
New messages have been translated.
Uits of time reduced, as can be conjugated differently.
==================================
Были переведены новые сообщения.
Единицы времени сокращены, так как могут спрягаться по разному.
- Add configurable cooldown period after sending an email for /email recovery
- Change ExpiringMap to remove expired entries (like ExpiringSet)
- Create method to translate durations via the messages file
- SendMailSSL keeps on handling the technical details for sending mails, while EmailService offers methods to other classes and worries about generating the correct email content
Curious that only TravisCI has issues with some lambda code creating a map. Both CircleCI and our project Jenkins are happy with it. The same JDK is configured for TravisCI and CircleCI, too...
- Using e.g. Factory<Converter> instead of the injector directly makes its purpose more specific and disallows any future abuse of the injector's functions
- Change placement and comment of settings.restrictions.banUnsafedIP to make it clear that it only bans unknown IPs using a restricted username
- Move "MySQL use SSL" option outside of the column options
- Improve how a player is being switched between permission groups (add new group before removing old one)
- Remove group handling logic from LimboCache: AuthGroupHandler is now solely responsible for changing the player's permission group
- Avoid logging an error if a help_{lang}.yml file does not exist in the JAR
- No longer suggest /authme messages for updating the help translation
- Create consistency test to ensure that all help_{lang}.yml files in the JAR have entries for all help sections / messages / default permissions
- Add easy default methods on PermissionHandler interface (override whenever there's a better way!)
- Change getGroups() signature to return a Collection instead of a List
* #1026 Add more tags for forced commands (lazily replaced)
- Extract lazy replacement of tags to its own class
- Implement wrapper to replace a String property within an object
- Use wrapper in command manager and add new tags
* Make argument type generic in lazy tags util
- Check which tags are used when loading the welcome message and only apply their replacements afterwards
- Moves AuthMe#replaceAllInfo to a more appropriate place
- Avoid fetching data again for each line
* Update messages_ru.yml
What was done:
1. There have been transferred posts.
2. Have been changed this awful big and bold letters in messages
-------------------------------------------------------------------------
Что было сделано:
1. Были переведены сообщения.
2. Были изменены этот ужасные большие и жирные буквы в сообщениях
* Update messages_ru.yml
"THE_CAPTCHA"
* Update messages_ru.yml
"<theCaptcha>"
* Initial grouping of messages_en.yml (thanks to input by @Twonox)
* Change MessageFileVerifier to only do verification - no writing
* Create classes for sorting and grouping messages as per the messages_en file
- Remove 'reg_voluntarily'
- Remove 'user_unknown' in favor of 'unknown_user' - but move text from old 'user_unknown' to 'unknown_user'
Found by @Twonox
Part 1:
- Use only one message entry for "Please register", that may have to be adapted to reflect the proper /register arguments
- Remove other message entries from code and from the messages files
Breaking change: reg_email_msg is also removed
- Add default method to ExecutableCommand interface that allows to define the message key to show if a command's arguments are invalid. If not defined the behavior is as before: show the output of /<command> help
- Use translatable "no permission" message instead of hardcoded one
* This is a newly translated chinese version
Comes with new line translated
* Rename messages_zhmc to messages_zhmc.yml
* Update messages_zhmc.yml
* Update messages_zhmc.yml
- Split sole setting to two: one defining the registration type, and one defining what the register command should take as second argument
- Contains ugly code that will be fixed with a later issue
- Introduce registration executors: one for each registration variant; each extending class implements one registration variant and worries about that method's details only
- AsyncRegister receives the player and a registration executor
- An exception is thrown e.g. when running '/authme email player' where 'player' does not exist because CacheLoader#load may not ever return null (see Javadoc). Therefore, we are forced to wrap the PlayerAuth in an Optional.
- Use Java 8 Optional instead of Google's
- Replace CommandService and ProcessService with CommonService: a service that offers our typical needs to work with settings, messages and permissions
- Remove validation methods from CommonService: inject ValidationService directly. Validation methods are not used very frequently and therefore don't belong in CommonService. Their presence was a relict from our architecture before injection was used.
- Ugly workaround due to #1014: need to have EnumSetProperty extend from StringListProperty type so that it is exported in a proper manner (as a string list). To get an enum Set we need to call a dedicated method on EnumSetProperty for the time being.
Mostly minor changes:
- Add deprecated javadoc tag on deprecated members
- Reduce duplication (FlatFile, BackupService, ...)
- Make methods static
- Reduce size of anonymous classes
- Replace name with displayName in PermissionsSystemType (avoids confusing with Enum name())
- Tabs to spaces
- Merge if statements
Code from third-party sources (BCryptService, BinTools, PHPBB) not modified.
- Add missing language code to readme
- Remove Gource video from readme (now over a year old)
- Improve property comments for name restrictions and unrestrictions
- Separate provider methods from other tasks performed on startup
- No longer requires BukkitService to be instantiated manually
- Merge MetricsManager and Initializer into OnStartUpTasks