Commit Graph
100 Commits
Author SHA1 Message Date
Jonas Herzig de3f4dab7e Pause path playback while resource pack is loading (closes #540) 2021-08-21 15:11:41 +02:00
Jonas Herzig 612a90681e Reset camera inventory when no longer spectating (fixes #546) 2021-08-21 15:11:29 +02:00
Jonas Herzig 88dece679d Fix scissor state not including scissor bounds (fixes #556)
This caused the bounds to not be relaxed after e.g. lists and as such the scroll
bar and shadows would not render properly.
2021-08-15 17:25:23 +02:00
Jonas Herzig 82c7da8739 Fix advanced screenshot GUI not opening on 1.17.1 (fixes #559) 2021-08-15 16:53:12 +02:00
Jonas Herzig b243dfc625 Workaround soft-lock when REI screen is closed (fixes #560) 2021-08-15 16:41:50 +02:00
Jonas Herzig 27f365a60a Change skin-caching feature to be fail-safe (fixes #561) 2021-08-15 13:53:31 +02:00
Jonas Herzig 463c51be85 Convert getDefaultRenderSettings into default constructor
Allows us to completely get rid of the custom Gson instance and is more
idiomatic anyway.
2021-08-15 11:45:23 +02:00
Jonas Herzig 9626a4c442 Fix parsing of render queue with chroma key (fixes #564)
By simply replacing the private field with a concrete type, so we do not need to
manually register one when constructing the gson instance (which is evidently
too easy to forget about).
2021-08-15 11:39:10 +02:00
Jonas Herzig 3db8c28505 Fix .no_recover files never being cleaned up (fixes #497) 2021-08-15 11:28:11 +02:00
Jonas Herzig 110199044f Fix nametags not rendering in screenhots (fixes #498)
No clue why this extra hud hiding was even there in the first place, the
renderer already takes care of properly hiding the hud (without hiding the
nametags) as it does for videos as well.
2021-08-15 11:19:52 +02:00
Jonas Herzig 4a587eed74 Workaround crash with REI and MainMenuScale (fixes #501, fixes #473) 2021-08-15 11:07:19 +02:00
Jonas Herzig e2b0422965 Fix timeline not saving when completely overwritten (fixes #505)
Either when it is cleared or when it is loaded from the keyframe repository, if
you exit the replay without any further changes, this used to not be saved.
2021-08-15 10:47:34 +02:00
Jonas Herzig a793cbee0d Remove RM 2.6+ for MC 1.7.10 from versions.json 2021-08-01 16:59:51 +02:00
Jonas Herzig f95a943589 Release 2.6.0 2021-07-31 16:01:48 +02:00
Jonas Herzig c88b4c1e76 Add missing .gitkeep files 2021-07-31 16:01:11 +02:00
Jonas Herzig a457bccf12 Fix Java 9+ ABI being used for Java 8 versions 2021-07-31 15:31:43 +02:00
Jonas Herzig 3cba99068e Increase default bitrate to from 10 to 20mbps 2021-07-31 14:37:10 +02:00
Jonas Herzig e9bf75b4d6 Remove ModCore
That was never actually finished and we do not need to keep it around anymore.
Whether we add its successor once that is ready for production use remains to be
seen.
2021-07-24 19:15:08 +02:00
Jonas Herzig 5bede327f3 Update jGui (fixes textures with Sodium) 2021-07-24 17:09:16 +02:00
Jonas Herzig 0cb14a9106 Re-introduce entity-in-wrong-chunk-at-unload workaround (fixes #548)
Nope, this was not fixed, they just changed where the chunkCoords are stored but
the interpolation issue remains.
2021-07-24 17:06:46 +02:00
Jonas Herzig 35fef5176d Fix skins of server-only NPCs being unreliable (fixes #486) 2021-07-24 14:43:38 +02:00
Jonas Herzig 3ef355a267 Failure to hide cache folder should never be fatal (closes #512) 2021-07-24 13:17:14 +02:00
Jonas Herzig 4090e7b540 Search for homebrew in /opt as well (fixes #496) 2021-07-24 13:14:23 +02:00
Jonas Herzig 2891c4e8fa Remove MP4 Default Quality preset (closes #475)
Similar to High Quality, it is too unpredictable, sometimes giving bad quality
and sometimes being unbearably slow. We should just encourage everyone to set
their bitrate manually.
2021-07-24 12:59:06 +02:00
Jonas Herzig 83cb459957 Fix keyframes being required to open render queue window
Half the reason we swapped the render queue / settings parent relationship was
so we don't need to go through the settings screen to access the queue. But for
some reason I stopped half way through and didn't also move the "You need at
last two keyframes." popup. This commit rectifies that.
2021-07-24 12:46:13 +02:00
Jonas Herzig 3f4dae05db Fix missing preprocessor comments 2021-07-24 11:30:34 +02:00
Jonas Herzig 2f4360a2a1 Fix Mixin_PreserveDepthDuringGuiRendering for 1.14-16 2021-07-24 11:29:27 +02:00
Jonas Herzig 2415a886e2 Update to 1.17.1 2021-07-24 11:05:39 +02:00
Jonas Herzig 927db36baa Use same fabric-loader version across all MC versions 2021-07-24 11:05:00 +02:00
Jonas Herzig d0620091d2 Add support for FREX Flawless Frames API (fixes #150) 2021-07-24 09:11:34 +02:00
Jonas Herzig 96bb1abc1d Update ReplayStudio
0e72e36 Add workaround for lack of way to determine global palette size
872bc75 Update vanilla global palette size
19d3dab Fix OOB when converting local palette storage to global palette (fixes #509)
c93a370 Fix incorrect packet release during SquashFilter.flush (fixes #490, fixes #492)
2021-07-01 14:05:52 +02:00
Jonas Herzig 7a52a29ef3 Fix race condition in resource pack recording (fixes #521)
If the server sends the resource pack right on connect (rather than when
switching to a sub-server), then `mc.getNetworkHandler()` will be null.
2021-07-01 14:05:52 +02:00
Jonas Herzig 7ab2edd738 Implement ODS rendering via Iris Shader for MC 1.17 2021-07-01 14:05:52 +02:00
Jonas Herzig f462a5b391 Fix 1.12 shim Window.getScaledHeight 2021-07-01 14:05:52 +02:00
Jonas Herzig e85618a27c Change frame time (used by Iris) to be based on replay or video time
Iris derives that one from the frameStartNanos argument passed to the render
method and shaders usually use it to do animations. Prior to this commit we
always pass 0 which effectively froze any shader animations.

With this commit, we now compute the frameStartNanos based on the
FPS of the video we are rendering (so animations will happen in real time when
watching the video) or based on the time in the replay (so animations will
be influenced by playback speed / be frozen if the replay is frozen).
We default to the video time based approach because the replay time one may
produce undesirable results when it comes to things like motion blur and TAA.
2021-07-01 14:05:52 +02:00
Jonas Herzig 3f2456ba65 Use GameRenderer.render instead of renderWorld, improves compat
In particular, Iris updates its frame counter and timer in the outer method, so
if we only call the inner one, then its shadows and sky will not update
properly.
Since the render method also renders the GUI, we set the current screen to null
and cancel the HUD during rendering. MC also clears the depth before rendering
the HUD, which we don't want because it breaks the depth map export, so we
cancel that as well.

This also allows Vanilla post-processing (aka Super Secret Settings, aka Vanilla
Shaders) as well as entity outlines to function properly cause those are applied
in that method as well.
Should have done this a long time ago but better late than never.

Closes #321
2021-07-01 14:05:52 +02:00
Jonas Herzig ed99e240ec Bundle missing transitive fabric-api dependency 2021-06-28 19:06:26 +02:00
Jonas Herzig 0fcb27c6b2 Fix keyPressed/keyReleased injection targets 2021-06-28 19:06:26 +02:00
Jonas Herzig 5289026313 Bump MC to 1.17 proper 2021-06-28 19:06:26 +02:00
Jonas Herzig 2be47e9810 Change ReplayButton icon to be white with shadow for better contrast
The previous one, blue with no shadow, had horrible contrast with the button
background and did not fit well with any of the other buttons.
Now it does (except that it's not yet in the 20-pixel width/height style).
2021-06-28 19:06:26 +02:00
Jonas Herzig 1af4add932 Update ReplayStudio
- MC 1.17
- Updated ViaVersion
- Quick Mode supports multiple worlds now (and no longer needs a manual Respawn)
2021-06-28 19:06:26 +02:00
Jonas Herzig 8d3d705fed Switch to commons-lang Pair instead of the ViaVersion one
Cause that one will be removed in a future version, and the lang one is just
fine.
2021-06-28 14:35:57 +02:00
Jonas Herzig 766d3346ee Pin FG5 version because its maintainers cannot be trusted
Versions after 5.0.5 emit tsrg2 instead of tsrg, breaking anything which reads
those files (e.g. Mixin and the preprocessor), later versions even bump the
required Gradle version.
2021-06-27 14:44:16 +02:00
Jonas Herzig 08165252d5 Switch to new Quick Mode backend 2021-06-06 10:42:16 +02:00
Jonas Herzig 1802b1a7d0 Port to 1.17-pre1 2021-06-06 10:42:16 +02:00
Jonas Herzig 5f2dca08d1 Fix "Cannot register receiver while client is not logging in!"
Since MC provides no reliable way to get the connection while still in the login
phase, Fabric API tries to determine it either from MinecraftClient's connection
field (for the integrated server) or from the ConnectScreen (for multiplayer).
However, neither is present during a replay, leading to the aforementioned
error.

To fix this, we store our ClientConnection in MinecraftClient's connection
field. This should have no significant effect on vanilla behavior.

Also remove the dead Forge 1.14 code which was in the same place.
2021-06-05 23:01:16 +02:00
Jonas Herzig 25a6cdc502 Fix RenderSettings (de)serialization with Java 16 (fixes #520)
Turns out we were relying on the implementation detail of the File class, and
Java 16 ensures we cannot do that.
2021-06-05 23:01:16 +02:00
Jonas Herzig 9d3583293b Bundle Gson on 1.11.2 and below (fixes #421)
Decided to go with 1.11.2 because the Gson from that version is the first to not
have the JsonAdapter annotiation, which we want for fixing #520.
2021-06-05 23:01:16 +02:00
Jonas Herzig e380907334 Switch preprocessor config to flat style 2021-06-05 23:01:16 +02:00
Jonas Herzig 4cdbfb7c46 Update Gradle to 7.0.2 2021-06-05 23:01:16 +02:00
Jonas Herzig 59fb58c6fc Disable 1.7.10 for now
Continued support would require porting FG1.2 to Gradle 7 / Java 16.
2021-06-05 22:57:46 +02:00
Jonas Herzig 3440b8d8a8 Update loom to 0.6 2021-03-14 12:13:06 +01:00
Jonas Herzig 537795f9ca Backport contextual key bindings to 1.12.2 and below (closes #478) 2021-03-14 12:12:53 +01:00
Jonas Herzig dda6bd41b6 Implement ffmpeg-independent PNGWriter (closes #476)
Creates a dedicated folder for each video and does not depend on ffmpeg, just
like the EXRWriter (but supporting all MC versions).

Also does 32 bit depth export by chunking the 32-bit float into the 8-bit BGRA
component channels.
2021-03-14 12:12:53 +01:00
Jonas Herzig 8ff27437af Add configurable, small Replay Viewer button (closes #471) 2021-03-14 12:12:53 +01:00
Jonas Herzig c6b41d76fa Document valid values for MultipleChoiceSettings in config file 2021-03-14 12:12:53 +01:00
Jonas Herzig 4ca4f2def6 Auto-reload config file on changes (Fabric only) 2021-03-14 12:12:53 +01:00
Jonas Herzig 61d67a5e80 Remove OpenEye (closes #465)
It is not available for Fabric and we stopped using it.
2021-03-14 12:12:53 +01:00
Jonas Herzig b7309283e9 Rename MixinRendererLivingEntity -> Mixin_HideNameTags_LivingEntity 2021-03-14 12:12:53 +01:00
Jonas Herzig a97190de1e Move MixinRendererLivingEntity into 1.8.9 project 2021-03-14 12:12:53 +01:00
Jonas Herzig c17fc79ab2 Rename MixinRender -> Mixin_HideNameTags 2021-03-14 12:12:53 +01:00
Jonas Herzig 1924963d75 Move MixinOpenGlHelper into 1.7.10 project 2021-03-14 12:12:53 +01:00
Jonas Herzig aba34d6c6f Rename Mixin_CubicRotation -> Mixin_Omnidirectional_Rotation 2021-03-14 12:12:53 +01:00
Jonas Herzig db5708f338 Rename MixinFrustum -> Mixin_Omnidirectional_DisableFrustumCulling 2021-03-14 12:12:53 +01:00
Jonas Herzig 6974f8e60c Rename MixinCamera -> Mixin_StabilizeCamera 2021-03-14 12:12:53 +01:00
Jonas Herzig 3ec81d5c35 Split MixinEntityRenderer into multiple, more focused files 2021-03-14 12:12:53 +01:00
Jonas Herzig fad89626e5 Move 1.7.10 code from MixinEntityRenderer to Mixin_ForceChunkLoading 2021-03-14 12:12:53 +01:00
Jonas Herzig e7a1fafdf9 Extract Mixin_ChromaKeyDisableFog from other mixins 2021-03-14 12:12:53 +01:00
Jonas Herzig cf1d7537e8 Move MixinEffectRenderer into 1.8.9 project 2021-03-14 12:12:53 +01:00
Jonas Herzig 10426f9d39 Move MixinChunkRenderWorker into 1.14.4 project 2021-03-14 12:12:53 +01:00
Jonas Herzig 2fb4f73ae4 Move ChunkRenderDispatcherAccessor into 1.14.4 project 2021-03-14 12:12:53 +01:00
Jonas Herzig 6289545d84 Remove forge/fml event bus from MCVer 2021-03-14 12:12:53 +01:00
Jonas Herzig cfb9e15b8a Make use of new @Pattern feature to centralize version-aware code
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).
2021-03-14 12:12:51 +01:00
Jonas Herzig 06a46e6f38 Use callback-style events for crosshair and hotbar render events 2021-02-28 09:52:19 +01:00
Jonas Herzig da16b0fb78 Add 1.14.4 <> 1.12.2 mapping for Option <> GameSettings.Options 2021-02-28 09:52:19 +01:00
Jonas Herzig f34b88cf7e Move MixinShader into 1.7.10 project 2021-02-28 09:52:19 +01:00
Jonas Herzig d7dde42add Move HideInvisibleEntities into 1.12.2 project 2021-02-28 09:52:19 +01:00
Jonas Herzig 5f652ec7f2 Move DisableBetterSprinting into 1.12.2 project 2021-02-28 09:52:19 +01:00
Jonas Herzig 05d7971332 Move mapwriter.MixinMinecraft into 1.12.2 project 2021-02-28 09:52:19 +01:00
Jonas Herzig 4eeaca5af1 Use MainWindowAccessor across all versions 2021-02-28 09:52:19 +01:00
Jonas Herzig e4da7f331b DRY main MC window resizing 2021-02-28 09:52:19 +01:00
Jonas Herzig 3fbb4b50ea Rename ChunkLoadingRenderGlobal → ForceChunkLoadingHook
More descriptive, less MCP.
2021-02-28 09:52:19 +01:00
Jonas Herzig ab5b101f96 Add stub ChunkLoadingRenderGlobal for 1.7.10
Allows us to get rid of all preprocessor guards around its usages.
2021-02-28 09:52:19 +01:00
Jonas Herzig c729654f04 Split off 1.14.4 overwrite from ChunkLoadingRenderGlobal 2021-02-28 09:52:19 +01:00
Jonas Herzig f19ee8ba63 Split off 1.14.4 overwrite from Mixin_ForceChunkLoading 2021-02-28 09:52:19 +01:00
Jonas Herzig 90bbc68443 Replace reflection in ChunkLoadingRenderGlobal with mixin 2021-02-28 09:52:19 +01:00
Jonas Herzig 4b4d18026b Move GLStateTracker into 1.7.10 project 2021-02-28 09:52:19 +01:00
Jonas Herzig 74580e6649 Remove redundant preprocessor statements 2021-02-28 09:52:19 +01:00
Jonas Herzig 87b55e187c Replace a few //#if statements with mapping file entries 2021-02-28 09:52:19 +01:00
Jonas Herzig 026bc1fdcb Move MixinWorldClient into 1.12.2 project 2021-02-28 09:52:19 +01:00
Jonas Herzig 470669b1f7 Move MixinRenderManager into 1.12.2 project 2021-02-23 01:21:44 +01:00
Jonas Herzig b8bcb4967f Move MixinFMLClientHandler into 1.7.10 project 2021-02-23 01:05:48 +01:00
Jonas Herzig 6fa746a2e3 Move MixinEntityRenderer into 1.7.10 project 2021-02-23 01:01:55 +01:00
Jonas Herzig 01d47279fd Split off 1.12.2 overwrite from MixinCamera 2021-02-23 00:59:56 +01:00
Jonas Herzig 06db2ebb92 Move MixinS26PacketMapChunkBulk into 1.7.10 project 2021-02-23 00:47:01 +01:00
Jonas Herzig 6068aabea7 Move MixinPlayerControllerMP into 1.12.2 project 2021-02-23 00:45:12 +01:00
Jonas Herzig 6bc130312a Move MixinNetworkDispatcher into 1.12.2 project 2021-02-23 00:41:22 +01:00
Jonas Herzig ba7c478da1 Split off 1.12.2 overwrite from MixinNetHandlerLoginClient 2021-02-23 00:41:22 +01:00
Jonas Herzig 25247a2371 Move MixinGuiScreen into 1.7.10 project 2021-02-23 00:41:22 +01:00
Jonas Herzig 22d1048999 Move FMLHandshakeFilter into 1.12.2 project 2021-02-23 00:41:22 +01:00