* Improve error message when command already exists
* Add app's name to the message
* Add app name to any command load failure and fix commands from new system masking existing ones
* Fix duplicated app name in an error
* Update to recent snapshot changes
* Null checks & using getOptions
* Removed useless variable, and made HashMap's final
* This list & Map should not be modified.
Plus small changes
* Small things
* Fix#1398
* Apply suggestions from code review
* Remove Dead call
* Handle options being null
* Remove redundant field explainers
Those were there for when they were intermediary fields, they now have a proper name
* Settings rework and encapsulation
* Settings overhaul 3
Move everything in the new system to a new API package
Require rules using the new system to specify descriptions in their translation files
Implement temporary system on top of current translations to allow that to work properly
* Fix getRules fallback
* Final touches to settings refactor
* Mention that set shouldn't throw and remove comment
* Change translation keys to unify with translation PR
* Deprecate printAllRulesToLog to allow using any PrintStream
* Remove restriction of CarpetRules being Comparable
And fix overreaction in a deprecation message
* Bring back user input to rule observers
* Make Validator deprecation warning not spam on use
* Remove unneeded abstract methods in CarpetRule already inherited from CarpetRule
They literally do nothing, don't even force them to be implemented, and may be confusing as to why they're there or as if they are needed to be implemented
* Fix legacy SettingsManager field not being assigned correctly
* Finish fixing conflicts from future merge
* Actually fix remaining conflicts from future merge (missing imports)
* Import the newer rule in SettingsManager
* Refactor Validators
* Don't spam deprecation warnings on custom managers
* Get out the var
* Fix missing warning in old rule observers
* Update src/main/java/carpet/api/settings/Rule.java
* Remove `@ApiStatus.Experimental` annotations
* Fix incorrect `@deprecated` javadoc tags
By removing them given the class is deprecated anyway and else there's too much noise
* Add missing static import
* Remove TypedField and use a regular field
I liked that class tbh, but it's true that it wasn't really needed
* Move `field` assignment out of for removal
* Fix not following contract of `type()` returning boxed value
Previously handled by TypedField
* Fix few incorrect translation keys
* Remove resaving of comments when saving config files
Comments ignoring is still a thing when reading, so `locked` configs for example will keep comments
* Condense rule load messages in one
* Only print loaded settings message when at least one setting was changed
* Fix legacy validator detector
* Tweak and add more context to response to invalid values
* Fix strict validator not actually erroring on invalid input
* Fix more warnings and do some small optimizations
* Fix more warnings in ValueConversions
* Clean up some decompiler names and fix an unnecessary transformation around commands
* Use (way) more compact data structure for slot map
* Minor tweaks
Such as map directly in the collector
* I hate vanilla javac
Revert map changes in latest commit
* Changed Rule: `updateSuppressionBlock` to match new update suppression
* Make it easier to use
* Carpets mixin file will be the death of me
* Renamed `WorldInterface` to `LevelInterface`
Merged LevelAccessor with LevelInterface
* Fix issues with 22w14a & resolve issues
* Add `@Unique` to Level_tickMixin.java
* Naming, brackets, and description
* Return null on invalid
* Fix remaining refactoring issues
* Split spawning and random ticks into separate categories
* Split blocks into tile ticks and block events
* Fix ambiguous call to tick() method
Fix package private warning
* fix: add missing sections for tile ticks and block events
* fix: wrong profiling order
* feat: add descriptions to profiler categories
* refactor: replace guava ImmutableMap with jdk Map
* fix negative time in "rest" category
Prevents instantiating classes with all annotated methods static, making it also more flexible in that you can put annotated functions near to other API that may be initialized
- Removes the unused accurate block placement protocol that has been dead there for ages
- Removes the various rotate clockwise methods in favour of Direction's, that did exactly the same
No behaviour changes