Writing down small things to check...
- [x] Need to redo slow falling and step height attribute modifier
- [x] Need to reevaluate finalize spawn because the CompoundTag was removed
- [x] Check where RegistryCodecs#fullCodec went
- [x] Fix overlays
- [x] Replace TitleScreenModUpdateIndicator by a custom button subclass
- [x] Reimplement packet splitter
- [x] Decide what to do about FBB and RFBB
- [x] Status: Config packets will continue to use FBB only for now.
- [ ] Always use RFBB in the API with the relevant registry access.
- [ ] Fix serverbound packets to use RFBB.
- [x] System chat type needs looking into
- [x] Decide whether `Direction.getNearestStable` is worth keeping. Status: Removed.
- [x] Make sure that registry sync runs before data pack registry and tag sync.
- [ ] Reimplement step height fix if mojang does not fix https://bugs.mojang.com/browse/MC-268917. Else remove the two related comments in `Player`.
- [x] Potentially fix https://bugs.mojang.com/browse/MC-268727?filter=-2 as it is more likely with NeoForge servers due to the longer configuration phase. Status: Fixed by Mojang.
- [x] Throw if (de)serializing a registry ID for a registry that is not synced.
- [x] Fix `TierSortingRegistry` and related things. (`DiggerItem` patch?) Status: Removed.
Notes for mod devs:
- `BlockState#neighborChanged` -> `BlockState#handleNeighborChanged`
- `Screen#screenWidth` and `Screen#screenHeight` are now `GuiGraphics` methods
- `FlowerBlock` supplier patches removed, use holders
- `MobEffects`, `GameEvent`, `Attributes` fields now use holders. As such, methods such as `LivingEntity#getEffect` accept a holder instead of a registry object
- `NBTUtils#writeBlockPos` (and `readBlockPos`) now de/encodes a int[3] array instead of {X, Y, Z}
- Gametests not have a `skyAccess` flag that when `false` (**default**) will encase the test in a barrier block box. This may affect tests that have an entity for example outside the vertical bounds
- `ClientChatReceivedEvent#getBoundChatType` is `null` when the message is a system message
- `Entity#defineSynchedData` now has a builder parameter which should be used instead of accessing `entityData`
- `Pack`s now use a `PackLocationInfo` that stores their ID and name. `Pack.Info` has been mostly replaced by `Pack.Metadata` (though some fields have been moved to `PackSelectionConfig` and `PackLocationInfo`); `PackResources` are identified using `PackLocationInfo`s
- Gui overlay system changes:
- Now uses vanilla's `LayeredDraw.Layer` interface.
- The system is significantly easier to patch for NeoForge. For modders, there is not much of a difference: see `RegisterGuiLayersEvent` and `RenderGuiLayerEvent`.
- The screen width and height (previously parameters of `IGuiOverlay`) are now accessible via the `GuiGraphics`.
- Block reach, entity reach, step height, and gravity attributes are now available in vanilla Minecraft. The NeoForge ones (such as `NeoForgeMod.ENTITY_GRAVITY`) have been removed.