Skip to content

Commit 3f4a2c4

Browse files
committed
[Savestates] Fix crash when loadstating during playback
- Fix line endings in MixinNetHandlerPlayClient - Small variable change in VirtualInput
1 parent 9fcd077 commit 3f4a2c4

File tree

3 files changed

+25
-23
lines changed

3 files changed

+25
-23
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
package com.minecrafttas.tasmod.mixin.events;
2-
3-
import org.spongepowered.asm.mixin.Mixin;
4-
import org.spongepowered.asm.mixin.injection.At;
5-
import org.spongepowered.asm.mixin.injection.Inject;
6-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
7-
8-
import com.minecrafttas.mctcommon.events.EventClient.EventDoneLoadingPlayer;
9-
import com.minecrafttas.mctcommon.events.EventListenerRegistry;
10-
11-
import net.minecraft.client.network.NetHandlerPlayClient;
12-
13-
@Mixin(NetHandlerPlayClient.class)
14-
public class MixinNetHandlerPlayClient {
15-
16-
@Inject(method = "handlePlayerPosLook", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;displayGuiScreen(Lnet/minecraft/client/gui/GuiScreen;)V"))
17-
public void event_handlePlayerPosLook(CallbackInfo ci) {
18-
EventListenerRegistry.fireEvent(EventDoneLoadingPlayer.class);
19-
}
20-
}
1+
package com.minecrafttas.tasmod.mixin.events;
2+
3+
import org.spongepowered.asm.mixin.Mixin;
4+
import org.spongepowered.asm.mixin.injection.At;
5+
import org.spongepowered.asm.mixin.injection.Inject;
6+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
7+
8+
import com.minecrafttas.mctcommon.events.EventClient.EventDoneLoadingPlayer;
9+
import com.minecrafttas.mctcommon.events.EventListenerRegistry;
10+
11+
import net.minecraft.client.network.NetHandlerPlayClient;
12+
13+
@Mixin(NetHandlerPlayClient.class)
14+
public class MixinNetHandlerPlayClient {
15+
16+
@Inject(method = "handlePlayerPosLook", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;displayGuiScreen(Lnet/minecraft/client/gui/GuiScreen;)V"))
17+
public void event_handlePlayerPosLook(CallbackInfo ci) {
18+
EventListenerRegistry.fireEvent(EventDoneLoadingPlayer.class);
19+
}
20+
}

src/main/java/com/minecrafttas/tasmod/virtual/VirtualCameraAngle.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public void set(float pitch, float yaw) {
133133
public void getStates(List<VirtualCameraAngle> reference) {
134134
if (isParent()) {
135135
reference.addAll(subtickList);
136-
reference.add(this);
136+
reference.add(this.shallowClone()); // Fixes a crash where "this" can become null in the reference.
137137
}
138138
}
139139

src/main/java/com/minecrafttas/tasmod/virtual/VirtualInput.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -702,8 +702,10 @@ public Triple<Float, Float, Float> getInterpolatedState(float partialTick, float
702702
if (enable && !cameraAngleInterpolationStates.isEmpty()) {
703703
int index = (int) MathHelper.clampedLerp(0, cameraAngleInterpolationStates.size() - 1, partialTick); // Get interpolate index
704704

705-
interpolatedPitch = cameraAngleInterpolationStates.get(index).getPitch();
706-
interpolatedYaw = cameraAngleInterpolationStates.get(index).getYaw() + 180;
705+
VirtualCameraAngle interpolatedCamera = cameraAngleInterpolationStates.get(index);
706+
707+
interpolatedPitch = interpolatedCamera.getPitch();
708+
interpolatedYaw = interpolatedCamera.getYaw() + 180;
707709

708710
}
709711
return Triple.of(interpolatedPitch, interpolatedYaw, 0f);

0 commit comments

Comments
 (0)