This snapshot is possibly one of the most impactful for API we have ever had. This PR is an inital port to support 22w06a, stuff will be missing and broken.
# Removed modules:
- fabric-mining-levels-v0 - Previously deprecated
- fabric-object-builders-v0 - Previously deprecated
- fabric-tag-extensions-v0
- fabric-tool-attribute-api-v1
# Modules with API breaking changes:
- fabric-biome-api-v1
- fabric-content-registries-v0
- fabric-data-generation-api-v1
- fabric-mining-level-api-v1
- fabric-object-builder-api-v1
- fabric-resource-conditions-api-v1
- fabric-structure-api-v1
# Impactful API changes:
### fabric-object-builder-api-v1
- Removed - FabricBlockSettings.breakByHand
- Removed - FabricBlockSettings.breakByTool - Previously deprecated
# Notable changes
- fabric-registry-sync-v0 moves vanilla's new registry freezing to a later point in time, allowing mods to add to the registry during init.
# Known issues:
- ServerBugfixMixin used to fix https://bugs.mojang.com/browse/MC-195468 has not yet been ported.
* Optimize registry sync packet
* Make sure that the id map is sorted by the raw id
Send the difference of the first raw id and the last raw id from the bulk before
* Add packet size log prints
* Use Boolean.getBoolean
Don't send sync packet if the player is the server host
* Use generic Map
* Multiple raw id bulk test
* Group object namespace first before grouping raw ids
* Revert "Add packet size log prints"
This reverts commit fcb8b71e
* RegistrySyncPacket -> RegistryPacketSerializer
Move RegistryPacketSerializer singleton to the interface
* Packet size log prints
* Sort raw id on each namespace group
* Use Identifier.DEFAULT_NAMESPACE
* Slice to multiple packet if necessary
* Make MAX_PAYLOAD_SIZE configurable
Make testmod registry bigger
Print buffer size in equality test
* Move static packet handler instance to RegistrySyncManager
Release combinedBuf before discarding it
Discard syncedRegistryMap after it's accessed
* Use PacketByteBufs to create buffers
* Fix running game tests.
* Fix dimension api bugfix mixin. Of note: The Vanilla bug is still present, and the bugfix still needed.
* Fix references to unmatched RegistryOps method.
* Add custom value denoting module lifecycles.
* Make the module validation work.
My hand has been forced - we must use buildSrc since JsonSlurper is not available in main buildscript.
* Apply task to each project and dont cross projects
* A horrible hack
* Wait what
* It works now.
* Not needed
* Drop unneeded maven repo, cache map lookup
(cherry picked from commit daa38b3d82)
* Networking api v1
Some final docs?
Licenses and testmod
Fix a bunch o imports and make things work for v1 (v0 is bork)
Make the testmod pass checkstyle and work
Docs for v1
* Deprecate v0 and implement using v1
* Drop files down one package due to package check error
* Fix issue with channel registration, add another testmod
* jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavadoc
* Make javadoc use `code`, move impl interface to package access
* this things
* Rename a few internal methods
* Mark all client side stuff client only, move client mixins
* Add null checks around the place, clarify some javadoc and method names
* Make FutureListeners uninstantiable
* Some internal nullable annotations
* An impl class I forgot to rename
* Some comments and clarify some client login handler javadoc
* Add a missing FunctionalInterface annotation
* Split play and login, move client stuff to right package
* No interface left behind
* Inline channel registries in api
* Login and play subpackages not needed
* Add helper method to create play custom packets
* hasGlobalChannel -> hasGlobalReceiver
* Just rename the collection method for now
* Inline PlayPacketSender into static methods
* Start on testmod idea for verifying dynamic registration
* Add client login events
* You don't say hello when talking to yourself.
Also more testmod stuff
* Make event names present tense
* Some javadoc and impl interface rename
* Change the test keybinding
* Begin working on dynamic reg
* Dynamic reg works, just need a lot of cleanup and reimpling global
* A few renames, readd global methods
* Try to reduce the amount of duplicate registration logic
* Reimplement dynamic accessors
* More impl
* Start reimplementing global receivers. Still very hacky solution.
* Reimplement some server global reciever stuff
* Add login init event for server login.
* Implement client login query start event
* Move event invocations into addon, don't dual register global recievers
* Finally reimplement global recievers for all networking phases
* A revelation: Send packets properly
This also finds the issue with screen getting the proper S2C channels, current on TODO list.
* Disconnect event does not need a packet sender
* Clarify, add methods to get channels net handler can recieve on client
* Unregister actually works now
* Bunch of null checks, add simpler login delay test for vanilla clients
* Add some debug logging entries, fix unregister on client's session reg
* Play channel event javadoc and rename login query handlers
* More channel -> channelName
* thisening
* Introduce the basics infrastructure for tracking global receivers
* Add more substantial javadoc to login connection events
* Javadoc, reimplement unreg methods on v0, 1 impl fix
* Implement tracking for global recievers
* Dont forget to start tracked sessions in 3/4 cases
* Global receiver docs and move methods in classes
* Complete null checks
* big boi javadoc part 1
* Finish the main javadoc, usage javadoc is left
* Set so has method is not needed
* Rename receiveable and sendable methods
* Add the two missing private ctors
* buildscript update to upstream
* Split out player finding stuff to networking player tracking API v1
Signed-off-by: liach <liach@users.noreply.github.com>
Forward v0 PlayerStream to new module, add entity track events
Rename module to player tracking
Well javadoc can make sense
Decide on tracking for the name
Update fabric-player-tracking-api-v1/src/main/java/net/fabricmc/fabric/api/networking/player/tracking/v1/package-info.java
Co-authored-by: Erlend Åmdal <erlend@aamdal.com>
Remove exceptions from javadoc that are not thrown
javadoc fix again
Handle a case where the player manager happens to be null
rename player tracking to player lookup
Yeet
* Cherrypick #1092
* Remove some redundant client networking methods, rename `(un)register` to `(un)registerReceiver`
* Simplify access to dynamic reg on client
* Param shifting, let users get sender.
* Warning about time and distance units
* Make sure these are client only
* Fix control flow in ClientPlayNetworking#send
* Correct example code javadoc
* javadoc correction in server login
* Put login delay tests behind system property
Also remove unnecessary junk added by old module that was merged together.
* Fix ordering so channel registrations during `PHASE`_INIT work
* Fix prod bug and an oversight
* Fix login when connecting to dedicated server
* Update registry sync to v0 to prevent issue with reg sync hanging client
* this is done
* First pass on PersistentDynamicRegistryHandler, not tested
* Extra debugging + fix it not working
* Fix build
* Minor tweaks
* checkstyle ;)
* Improve comments + fix issues with tag reading/writing
* Simplify mixin
* Boost to Loom 0.5
Add null related annotations
* Rearrange nullable to be overline
* Fix anno sorting for picky
* Add imports
* Address feedback
* Fix import
* Adds a synchronisation for entries in BuiltInRegistries to the built-in DynamicRegistryManager, to a void class-loading DynamicRegistryManager during Mod initialization from messing up the Worldgen registrations of subsequently loaded mods.
* Changed to use updated Yarn mappings.