diff --git a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java index cf202007..74b199d1 100644 --- a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java +++ b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java @@ -153,7 +153,6 @@ private void registerNetworkPacketHandlers() { private void registerEventListeners() { EventListenerRegistry.register(this); -// EventListenerRegistry.register(virtual); TODO Remove if unnecessary EventListenerRegistry.register(hud); EventListenerRegistry.register(shieldDownloader); EventListenerRegistry.register(loadingScreenHandler); diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinEntityRenderer.java b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinEntityRenderer.java index c736c7f0..761dbff6 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinEntityRenderer.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinEntityRenderer.java @@ -47,7 +47,7 @@ public class MixinEntityRenderer implements SubtickDuck { /** * Injects into the vanilla camera updating cycle, runs every frame. - * Updates {@link com.minecrafttas.tasmod.virtual.VirtualInput.VirtualCameraAngleInput#nextCameraAngle} + * Updates {@link com.minecrafttas.tasmod.virtual.VirtualInput.VirtualCameraAngleInput#nextCameraAngle VirtualCameraAngleInput#nextCameraAngle} * @param partialTicks The partial ticks of the timer, unused * @param nanoTime The nanoTime, unused * @param ci CBI diff --git a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java index 8500a956..050ce0f7 100644 --- a/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java +++ b/src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java @@ -50,6 +50,7 @@ import com.minecrafttas.tasmod.util.Scheduler.Task; import com.minecrafttas.tasmod.virtual.VirtualCameraAngle; import com.minecrafttas.tasmod.virtual.VirtualInput; +import com.minecrafttas.tasmod.virtual.VirtualInput.VirtualCameraAngleInput; import com.minecrafttas.tasmod.virtual.VirtualKeyboard; import com.minecrafttas.tasmod.virtual.VirtualMouse; @@ -239,7 +240,12 @@ public String setTASStateClient(TASstate stateIn, boolean verbose) { private void startRecording() { LOGGER.debug(LoggerMarkers.Playback, "Starting recording"); - if (this.inputs.isEmpty()) { + if(this.inputs.isEmpty()) { + VirtualCameraAngleInput CAMERA_ANGLE = TASmodClient.virtual.CAMERA_ANGLE; + Float pitch = CAMERA_ANGLE.getCurrentPitch(); + Float yaw = CAMERA_ANGLE.getCurrentYaw(); + this.camera.set(pitch, yaw); + inputs.add(new TickContainer()); } } @@ -462,12 +468,7 @@ public BigArrayList getInputs() { } public void setInputs(BigArrayList inputs) { - try { - inputs.clearMemory(); - } catch (IOException e) { - e.printStackTrace(); - } - inputs = new BigArrayList(directory + File.separator + "temp"); + clear(); SerialiserFlavorBase.addAll(this.inputs, inputs); } @@ -503,7 +504,7 @@ public TickContainer get() { } public void clear() { - LOGGER.debug(LoggerMarkers.Playback, "Clearing playback controller"); + LOGGER.info(LoggerMarkers.Playback, "Clearing playback controller"); EventListenerRegistry.fireEvent(EventPlaybackClient.EventRecordClear.class); try { inputs.clearMemory(); @@ -511,6 +512,7 @@ public void clear() { e.printStackTrace(); } inputs = new BigArrayList(directory + File.separator + "temp"); + index = 0; } /** @@ -575,9 +577,7 @@ public TickContainer(VirtualKeyboard keyboard, VirtualMouse mouse, VirtualCamera } public TickContainer() { - this.keyboard = new VirtualKeyboard(); - this.mouse = new VirtualMouse(); - this.cameraAngle = new VirtualCameraAngle(); + this(new VirtualKeyboard(), new VirtualMouse(), new VirtualCameraAngle()); } @Override @@ -792,7 +792,7 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws flavor = TASmodBufferBuilder.readString(buf); try { - PlaybackSerialiser2.loadFromFile(new File(directory, name + ".mctas"), flavor); + TASmodClient.controller.setInputs(PlaybackSerialiser2.loadFromFile(new File(directory, name + ".mctas"), flavor)); } catch (PlaybackLoadException e) { if (mc.world != null) mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(TextFormatting.RED + e.getMessage())); diff --git a/src/main/java/com/minecrafttas/tasmod/playback/tasfile/flavor/SerialiserFlavorBase.java b/src/main/java/com/minecrafttas/tasmod/playback/tasfile/flavor/SerialiserFlavorBase.java index be7150a3..2251d1d6 100644 --- a/src/main/java/com/minecrafttas/tasmod/playback/tasfile/flavor/SerialiserFlavorBase.java +++ b/src/main/java/com/minecrafttas/tasmod/playback/tasfile/flavor/SerialiserFlavorBase.java @@ -719,9 +719,15 @@ protected VirtualCameraAngle deserialiseCameraAngle(List cameraAngleStri if (matcher.find()) { String cameraPitchString = matcher.group(1); String cameraYawString = matcher.group(2); - - float cameraPitch = deserialiseRelativeFloat("camera pitch", cameraPitchString, previousPitch); - float cameraYaw = deserialiseRelativeFloat("camera yaw", cameraYawString, previousYaw); + + Float cameraPitch = null; + Float cameraYaw = null; + + if(!"null".equals(cameraPitchString)) + cameraPitch = deserialiseRelativeFloat("camera pitch", cameraPitchString, previousPitch); + + if(!"null".equals(cameraYawString)) + cameraYaw = deserialiseRelativeFloat("camera yaw", cameraYawString, previousYaw); out.updateFromState(cameraPitch, cameraYaw); } @@ -789,7 +795,11 @@ protected float parseFloat(String name, String floatstring) { } } - protected float deserialiseRelativeFloat(String name, String floatstring, Float previous) { + protected Float deserialiseRelativeFloat(String name, String floatstring, Float previous) { + if(floatstring == null) { + return null; + } + float out = 0; if (floatstring.startsWith("~")) { floatstring = floatstring.replace("~", ""); diff --git a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualCameraAngle.java b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualCameraAngle.java index 8ef25b4f..021ed975 100644 --- a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualCameraAngle.java +++ b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualCameraAngle.java @@ -98,11 +98,14 @@ public void updateFromEvent(float pitchDelta, float yawDelta, boolean updateSubt this.yaw += yawDelta; } - public void updateFromState(float pitch, float yaw) { + public void updateFromState(Float pitch, Float yaw) { if(this.pitch!=null && this.yaw != null) { createSubtick(true); } - this.pitch = MathHelper.clamp(pitch, -90F, 90F); + if(pitch != null) { + pitch = MathHelper.clamp(pitch, -90F, 90F); + } + this.pitch = pitch; this.yaw = yaw; }