Commit Graph

956 Commits

Author SHA1 Message Date
Jonas Herzig
1836b7fb18 Fix Iris shader animation time on 1.21 2024-07-10 19:07:19 +02:00
Jonas Herzig
6b5993ad64 Fix post-screenshot popup being invisible while HUD is hidden 2024-07-07 11:02:41 +02:00
Jonas Herzig
486056de24 Fix recording whith login-phase custom packets 2024-06-25 10:31:12 +02:00
Jonas Herzig
2b2ab2ba8b Fix time keyframe lines rendering below timeline 2024-06-25 10:30:43 +02:00
Jonas Herzig
a4e0abec7f Update to 1.21 2024-06-23 20:33:41 +02:00
Jonas Herzig
310dc90e11 Remove WrappedTimer 2024-06-23 20:24:57 +02:00
Jonas Herzig
454e990849 Replace InputReplayTimer with Mixin 2024-06-23 20:24:57 +02:00
Jonas Herzig
76a68b7867 Prevent pausing in the middle of a bundle packet
Because certain actions (e.g. switching to Quick Mode) will fail in this
state.
2024-06-23 20:24:57 +02:00
Jonas Herzig
5218feb6b6 Update to 1.20.6 2024-06-23 20:24:57 +02:00
Jonas Herzig
3f12413c6b De-duplicate recording channel configuration 2024-06-23 20:07:57 +02:00
Jonas Herzig
675134e6d6 Split outbound handler from FullReplaySender
This because with 1.20.6, MC will require outbound messages to reach its
handlers to switch between protocol versions. So we need our drop
handler two be at the very end of the write processing chain.
2024-06-23 20:07:57 +02:00
Jonas Herzig
4df627029c Fix race condition in PacketListener
The ChannelHandlerContext was only set on the next received packet,
however `save` could be called before that happened.
2024-06-23 20:07:57 +02:00
Jonas Herzig
046a50f326 Target WorldRenderer in Mixin_PostRenderWorldCalback 2024-06-23 20:07:57 +02:00
Jonas Herzig
8900d5a4fb Split MixinGameRenderer into multiple mixins 2024-06-18 14:50:34 +02:00
Jonas Herzig
acd56a7ba3 Remove player list packet entry workaround
No longer using ForgeGradle \o/
2024-05-13 17:33:06 +02:00
Jonas Herzig
c74ef8c0e4 Let Minecraft handle packet decoding during recording
We've done this ourselves only because it was easier at the beginning.
However with 1.20.5, Minecraft's packet decoding became substantially
more sophisticated, to the point that it's probably a bad idea to try
to do it ourselves.

Additionally, getting the packet ids, which we require for identifying
the packets which we want to decode, has becomes significantly more
difficult too, and this way it's a simple instanceof check.
2024-05-13 17:01:03 +02:00
Jonas Herzig
fe0677923c Let Minecraft handle packet decoding during playback
We've done this ourselves only because it was easier at the beginning.
However by now (and especially with 1.20.5), Minecraft's packet decoding
has become substantially more sophisticated, to the point that it's
probably a bad idea to try to do it ourselves.

This commit gives back that responsibility to Minecraft by adding the
standard decoder (and encoder because it's required for proper
connection state management on modern versions) to our channel pipeline,
changes the full and the quick replay sender to send raw `ByteBuf`s into
the front of the channel, and moves the posititon of the full replay
sender in the channel pipeline such that it can see and modify packets
after Minecraft has decoded them.
2024-05-13 15:25:50 +02:00
Jonas Herzig
ad49a69f37 Switch from FG to archloom + essential-gradle-toolkit
- Upgrade Gradle to 8.7
- Increase build daemon max memory to 8GB because archloom can compile a lot
  more projects at the same time.
- Disable Minecraft 1.8 (not 1.8.9) because archloom fails to set up for that
2024-05-12 14:24:43 +02:00
Jonas Herzig
f8379fa317 Fix thread-unsafe server resource pack playback 2024-03-10 16:29:31 +01:00
Jonas Herzig
faebeb525a Port to 1.20.3-rc1 2023-12-03 18:51:37 +01:00
Jonas Herzig
43576efeb3 Convert JPG images to PNG
Minecraft 1.20.3 no longer supports loading JPG images.
2023-12-03 16:28:28 +01:00
Jonas Herzig
b8ab7aa5a7 Port to 1.20.2 2023-11-27 19:40:42 +01:00
Jonas Herzig
e8f9234bf0 Fix EXR rendering failing on Windows on MC 1.20+ 2023-11-27 17:55:13 +01:00
Jonas Herzig
329ac51309 Fix rubber-banding on rotation of entity in vehicle (fixes #846) 2023-11-13 13:51:47 +01:00
Jonas Herzig
7726550131 Port to MC 1.20 2023-06-12 10:28:08 +02:00
Jonas Herzig
96a05e256f Add MixinExtras on 1.16.4+
We'll use it in 1.20 mixins.
Unclear what minimal fabric-loader version it requires, so in the interest of
keeping older versions compatible with OptiFabric (old versions of which aren't
compatible with the latest fabric-loader), we'll add it to 1.16.4+ only.
2023-06-12 10:28:08 +02:00
Jonas Herzig
587eff59fe Rewrite main menu button injection code (closes #577, fixes #621)
For 1.16.4+ only because we use parts of fabric-screen-api.
2023-06-12 10:23:21 +02:00
Jonas Herzig
fb4ae1b60a Delegate bindTexture to jGui's MCVer 2023-06-12 09:05:42 +02:00
Jonas Herzig
bf32672536 Fix active timeline changes affecting render queue (fixes #814)
The `Timeline` type is mutable, so we need to create a copy before we pass it to
GuiKeyframeRepository because we don't want anything stored in there (or more
specifically in render queue which can also be added to from that gui) to be
affected by subsequent changes.
2023-03-26 19:21:30 +02:00
Jonas Herzig
78bd060249 Port to MC 1.19.4 2023-03-26 18:58:49 +02:00
Jonas Herzig
043664ab0c Fix multiplayer recording on 1.19.3 (fixes #803) 2022-12-09 13:14:56 +01:00
Jonas Herzig
77ce90b2b0 Disable MixinShaderRenderChunk on 1.18+
It's only required for legacy Optifine doesn't even apply any more as of 1.18,
so we can just disable it on modern versions so it doesn't spam the log.
2022-12-07 16:34:55 +01:00
Jonas Herzig
3816671207 Fix depth export on 1.14.4 2022-12-07 16:34:55 +01:00
Jonas Herzig
000ff19749 Fix depth export while spectating on 1.12.2 and below (fixes #785) 2022-12-07 16:34:55 +01:00
Jonas Herzig
d571e8fed5 Port to MC 1.19.3
Building against 1.19.3-rc3 for now because 1.19.3 has yet to release.
ReplayStudio/ViaVersion is already targeting the release version though.
2022-12-07 16:34:55 +01:00
Jonas Herzig
e0a682a5df Fix armor missing after dimension change (fixes #791)
The respawn packet re-creates the player entity, so we need to re-send its
armor (and technically also the riding and sleeping state, though that probably
wouldn't ever have caused issues in practice because a respawn will implicitly
reset those, unlike your inventory which is preserved).
2022-12-06 18:01:07 +01:00
Jonas Herzig
19404032fe Fix jGui resource pack when using per-version run folder 2022-12-06 17:51:55 +01:00
Jonas Herzig
bee13fc9a1 Replace projection matrix Redirect with ModifyArg
Should be better for compatibility because multiple mods can ModifyArg but only
one can Redirect, and will be easier to port to 1.19.3.
2022-12-06 17:37:15 +01:00
Jonas Herzig
cce65ec76d Ignore expired player public keys during replay
These would otherwise fail to be initialized and cause the game to disconnect
itself on the first chat message from the corresponding player.
2022-08-10 14:22:21 +02:00
Jonas Herzig
06f1e0c36c Fix chat message validation failure when Show Chat is off on 1.19.1+ 2022-08-10 14:22:21 +02:00
Jonas Herzig
35d1b7f24b Fix game crashing if client disconnects from replay during jump 2022-08-10 13:47:47 +02:00
Jonas Herzig
c34f75d95a Fix item staying visually equipped after being dropped (fixes #658) 2022-07-31 13:03:43 +02:00
Jonas Herzig
62b9cd0538 Use DefaultedList for equipment tracking
Because on 1.11+ a `null` item stack is not something that should exist.
This then also allows us to compare item stacks by value rather than only by
reference, potentially saving a few redundant entity equipment update
packets (but more importantly, also allows us to store a copy instead of the
original, which will be important for the next commit).
2022-07-31 13:03:43 +02:00
Jonas Herzig
42d04d123c Deduplicate code 2022-07-31 12:55:54 +02:00
Jonas Herzig
7550e3dcb7 Fix race conditions in movement packet filtering (fixes #760)
We cannot filter this packet purely on the netty thread because our filter
depends on the current camera position (if it's too far, we do want to teleport
it closer) and accessing the camera is only safe from the main thread.

Previously the second part had not been considered which could lead to race
conditions where the camera may not yet exist on the netty thread at time of
handling. These appear to have gotten the wholly inappropriate "just put a null
check around it" treatment, but that means that the filter sometimes doesn't
work (hence the bug report).

This commit changes handling such that all access to `allowMovement` is always
done on the main thread and then moves the filtering there as well. And
therefore filtering should now work properly.
2022-07-31 12:55:54 +02:00
Jonas Herzig
af3f6ddbe2 Always handle PlayerPositionLookS2CPacket manually 2022-07-31 12:48:39 +02:00
Jonas Herzig
962f08718f Fix "Show Chat" setting on 1.19+ (fixes #757) 2022-07-31 10:38:14 +02:00
Jonas Herzig
400ec6bda5 Port to MC 1.19.1 2022-07-31 10:37:22 +02:00
Jonas Herzig
bdea84b9a2 Remove unused GuiMainMenuAccessor 2022-07-31 10:22:20 +02:00
bela333
05387b0ac7 Modified FREX notice 2022-07-17 23:05:27 +02:00