A JVM or OS crash can lead to incomplete packets at the end of a recording.
The duration of a corrupted replay file is not restored properly if that file
contains an incomplete packet. Furthermore, the entity tracker does not load
properly with such an incomplete packet. Both bugs are fixed with this commit.
To fix these bugs for replays that have already been recovered, simply open
them in the Replay Viewer, modify them somehow (save a new path) and force
the game to quit forcefully. The replays will be recovered the next time the
game starts and both bugs will be fixed.
JREs prior to 8u101 do not ship with the root certificate that cross-signed
the LetsEncrypt X3 CA used to sign server certificates.
As the standard native Minecraft launcher for Windows and OSX ship with an
older Java version, this commit imports the required root cert and uses it
wherever communication with the replaymod.com server is established.
Effectively reverts 682fb4b
While spectating, a special camera controller should be active. However after
a world change (which happens when the player dies), the camera is recreated
with the default controller, same when the controller setting is changed.
Also fixes the spectated entity if the player respawns in the same dimension
The vanilla server sends the player list packet with ADD action twice to the
joining player, however we must only send the spawn player packet once.
This also fixes semi-dead player entities in replays that just existed at
spawn but never did anything.
The Java version shipped with the default Minecraft launcher for Windows and
OSX, is quite old and does not contain the necessary root certificates for
properly accepting LetsEncrypt's certificates.
This can be reversed once the Minecraft launcher ships at least 1.8.0_101.
Add compatibility to shaders that utilize the Shadow Map by manually setting displayListEntitiesDirty to false
Call Shaders.beginRender in an Event Handler to avoid calling all of EntityRenderer#renderWorld
Fix handling of ESC key in popups (fixes#17)
This commit changes the behavior of the escape key from closing the current
gui screen to only closing the current layer of the gui screen. E.g. pressing
ESC closes the popup but not the gui screen, it used to close both
Markers were saved in a (Hash)Set even though they are mutable. Reducing the
exposed interface to Collection allows changing the interal implementation to
ArrayList which solves the problem.