That is, most of the business code should not be aware that it is being compiled
to multiple versions even when it heavily interacts with MC, preprocessor
statements should be an escape hatch, not the norm.
Similarly, code should not be forced to do `MCVer.getWindow(mc)` instead of the
much more intuitive `mc.getWindow()`, and a new preprocessor (technically remap)
feature makes this possible by defining "search and replace"-like patterns (but
smarter in that they are type-aware) in one or more central places (the
"Patterns.java" files) which then are applied all over the code base.
In a way, this is another step in the automatic back-porting process where
preprocessor statements are used when we cannot yet do something automatically.
Previously we "merely" automatically converted between different mapping, this
new feature now also allows us to automatically perform simple refactoring
tasks like changing field access to a getter+setter (e.g. `mc.getWindow()`), or
changing how a method is called (e.g. `BufferBuilder.begin`), or changing a
method call chain (e.g. `dispatcher.camera.getYaw()`), or most other
search-and-replace-like changes and any combination of those.
The only major limitation is that the replacement itself is not smart, so
arguments must be kept in same order (or be temporarily assigned to local
variables which then can be used in any order).
This fixes both, replay-exclusive keybindings blocking vanilla ones as well as
vanilla keybindings blocking replay-exclusive ones.
The magic happens in Mixin_ContextualKeyBindings.
MC clears it scheduled tasks on disconnect. If we don't wait for
that to have happened on the async sender, then we might loose
some of the initial handshake packets (resulting in a dead lock in
fabric's registry syncing code).
The preprocessor should have complained about these but it didn't for
some reason. This commit isn't fixing any imminent bug, it's just
precautionary (and required to compile once the preprocessor is fixed).
While this commit also considerably simplifies/cleans the setup
method, the actual fix is that the networkManager is now added
to the channel pipeline with under the "packet_handler" key,
whereas before it was unnamed causing issues when transitioning
to the play state.
Allows very quick forwards and backwards jumping at the cost of only
replaying entity positions and block updates.
Still needs to be backported from 1.12.2 and contains FIXMEs
The ReplaySender used to be started in async mode even before the call
to setup(). If the ReplaySender restarts the replay before the setup()
call finishes, that call may instead produce a NPE in
clientToServerHandshake().
To fix this race condition, the ReplaySender is always started in sync
mode and only switched to async after the setup() call.
13bb0bd Merge branch 1.11-staging into 1.11.2-staging
5257a41 Merge branch 1.10.2 into 1.11
689f897 Merge branch 1.9.4 into 1.10.2
0aed9c3 Merge branch 1.8.9 into 1.9.4
f36ebf1 Merge branch 1.8 into 1.8.9
08170b3 Downgrade FG to 2.1 because FG 2.2 is 1.9+ only
41d2547 Update translations
00e999f Fix replay not being closed when opened via URI scheme handler (fixes#92)
767ea29 Fix book gui not being suppressed during replay (fixes#90)
5b04edb Hide ReplayMod app entry from menus on Linux
6aff99d Fix livelock during netty write to embedded channel (fixes#85)
703805f Fix infinite loop in mc.scheduledTasks (fixes#86)
7a4440c Update ReplayStudio
0b9c56c Fix resource packs not working after first time jumping back in time
933ee5f [Compat] Fix camera entity with BetterSprinting prior to 2.0.0 (fixes#78)
83b1090 Fix hotbar being visible while spectating player (fixes#83)
5c73117 [Compat] Fix invisible entities with Orange's 1.7 Animations (fixes#78)
4704b29 Replace the RenderPlayer hook (used subclassing) with a mixin (fixes#79)
0c226b0 Fix path at end of replay resulting in constant reloading (fixes#56)
1b9b13e Rename render success sound to all lowercase (required for 1.11) (fixes#66)
c2000b3 Fix only front-facing chunks visible for ODS rendering (fixes#67)
aafeecc Fix initial login gui not closing on success (fixes#68)
9292add Use percent-encoding for replay file names (fixes#71)
8499c0f Fix name of invis armor stand with CustomNameVisible not rendering (fixes#72)
b9ea572 Try to handle invalid ffmpeg arguments more gracefully (fixes#77)
a2f8c88 Fix compression packets being recorded (fixes#80)
19629c3 Replace usages of System.out with logger
fe1d9b8 Stop Forge from allowing the mod to load on other MC versions (fixes#82)
d56fa9b Update ReplayStudio/MCProtocolLib (Fixes missing ARMOR_STAND MobType)
7c719e0 Update ReplayStudio/MCProtocolLib (Fixes missing ARMOR_STAND MobType)
1a1e96c Fix server with RM installed refusing clients without RM (fixes#76)
35eb9ca Replace usage of FMLLog with the mod logger
5257a41 Merge branch 1.10.2 into 1.11
689f897 Merge branch 1.9.4 into 1.10.2
0aed9c3 Merge branch 1.8.9 into 1.9.4
f36ebf1 Merge branch 1.8 into 1.8.9
08170b3 Downgrade FG to 2.1 because FG 2.2 is 1.9+ only
41d2547 Update translations
00e999f Fix replay not being closed when opened via URI scheme handler (fixes#92)
767ea29 Fix book gui not being suppressed during replay (fixes#90)
5b04edb Hide ReplayMod app entry from menus on Linux
6aff99d Fix livelock during netty write to embedded channel (fixes#85)
703805f Fix infinite loop in mc.scheduledTasks (fixes#86)
7a4440c Update ReplayStudio
0b9c56c Fix resource packs not working after first time jumping back in time
933ee5f [Compat] Fix camera entity with BetterSprinting prior to 2.0.0 (fixes#78)
83b1090 Fix hotbar being visible while spectating player (fixes#83)
5c73117 [Compat] Fix invisible entities with Orange's 1.7 Animations (fixes#78)
4704b29 Replace the RenderPlayer hook (used subclassing) with a mixin (fixes#79)
0c226b0 Fix path at end of replay resulting in constant reloading (fixes#56)
1b9b13e Rename render success sound to all lowercase (required for 1.11) (fixes#66)
c2000b3 Fix only front-facing chunks visible for ODS rendering (fixes#67)
aafeecc Fix initial login gui not closing on success (fixes#68)
9292add Use percent-encoding for replay file names (fixes#71)
8499c0f Fix name of invis armor stand with CustomNameVisible not rendering (fixes#72)
b9ea572 Try to handle invalid ffmpeg arguments more gracefully (fixes#77)
a2f8c88 Fix compression packets being recorded (fixes#80)
19629c3 Replace usages of System.out with logger
fe1d9b8 Stop Forge from allowing the mod to load on other MC versions (fixes#82)
d56fa9b Update ReplayStudio/MCProtocolLib (Fixes missing ARMOR_STAND MobType)
7c719e0 Update ReplayStudio/MCProtocolLib (Fixes missing ARMOR_STAND MobType)
1a1e96c Fix server with RM installed refusing clients without RM (fixes#76)
35eb9ca Replace usage of FMLLog with the mod logger
689f897 Merge branch 1.9.4 into 1.10.2
0aed9c3 Merge branch 1.8.9 into 1.9.4
f36ebf1 Merge branch 1.8 into 1.8.9
08170b3 Downgrade FG to 2.1 because FG 2.2 is 1.9+ only
41d2547 Update translations
00e999f Fix replay not being closed when opened via URI scheme handler (fixes#92)
767ea29 Fix book gui not being suppressed during replay (fixes#90)
5b04edb Hide ReplayMod app entry from menus on Linux
6aff99d Fix livelock during netty write to embedded channel (fixes#85)
703805f Fix infinite loop in mc.scheduledTasks (fixes#86)
7a4440c Update ReplayStudio
0b9c56c Fix resource packs not working after first time jumping back in time
933ee5f [Compat] Fix camera entity with BetterSprinting prior to 2.0.0 (fixes#78)
83b1090 Fix hotbar being visible while spectating player (fixes#83)
5c73117 [Compat] Fix invisible entities with Orange's 1.7 Animations (fixes#78)
4704b29 Replace the RenderPlayer hook (used subclassing) with a mixin (fixes#79)
0c226b0 Fix path at end of replay resulting in constant reloading (fixes#56)
1b9b13e Rename render success sound to all lowercase (required for 1.11) (fixes#66)
c2000b3 Fix only front-facing chunks visible for ODS rendering (fixes#67)
aafeecc Fix initial login gui not closing on success (fixes#68)
9292add Use percent-encoding for replay file names (fixes#71)
8499c0f Fix name of invis armor stand with CustomNameVisible not rendering (fixes#72)
b9ea572 Try to handle invalid ffmpeg arguments more gracefully (fixes#77)
a2f8c88 Fix compression packets being recorded (fixes#80)
19629c3 Replace usages of System.out with logger
fe1d9b8 Stop Forge from allowing the mod to load on other MC versions (fixes#82)
7c719e0 Update ReplayStudio/MCProtocolLib (Fixes missing ARMOR_STAND MobType)
1a1e96c Fix server with RM installed refusing clients without RM (fixes#76)
35eb9ca Replace usage of FMLLog with the mod logger