fix pos event

This commit is contained in:
MeexReay 2025-06-14 20:04:53 +03:00
parent d4abb39c80
commit 666377e5ee
3 changed files with 13 additions and 6 deletions

View File

@ -25,4 +25,5 @@ jobs:
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: build
path: build/libs/*

View File

@ -54,7 +54,7 @@ public class Main implements ClientModInitializer {
private static KeyBinding toggle_replay_key;
private static KeyBinding toggle_record_key;
public long record_pos_delay = 20;
public long record_pos_delay = -1;
public static Random rand = new Random();
@ -173,7 +173,7 @@ public class Main implements ClientModInitializer {
now_record = record_list.newRecord();
Vec3d start_pos = client.player.getPos();
now_record.addEvent(new MoveEvent(start_pos,client.player.getHeadYaw(),client.player.getPitch()));
recordTick(new MoveEvent(start_pos,client.player.getHeadYaw(),client.player.getPitch()));
now_record.setStartRecordPos(start_pos);
if (record_pos_delay > 0) {
@ -182,7 +182,7 @@ public class Main implements ClientModInitializer {
record_pos_delay) {
@Override
public void run() {
now_record.addEvent(new MoveEvent(client.player.getPos(),
recordTick(new MoveEvent(client.player.getPos(),
client.player.getHeadYaw(), client.player.getPitch()));
}
};

View File

@ -10,6 +10,8 @@ public class MoveEvent extends RecordEvent {
public float yaw;
public float pitch;
public static final float MOVE_THRESHOLD = 0.001f;
public static MoveEvent deserialize(String[] a) {
return new MoveEvent(new Vec3d(
Double.parseDouble(a[0]),
@ -29,9 +31,13 @@ public class MoveEvent extends RecordEvent {
if (Main.client.player != null) {
Vec3d p = Main.client.player.getPos();
Vec3d v = new Vec3d(vec.getX() - p.getX(), vec.getY() - p.getY(), vec.getZ() - p.getZ());
Main.client.player.move(MovementType.SELF, v);
Main.client.player.setYaw(yaw);
Main.client.player.setPitch(pitch);
if (Math.abs(v.x) > MOVE_THRESHOLD || Math.abs(v.y) > MOVE_THRESHOLD || Math.abs(v.z) > MOVE_THRESHOLD)
Main.client.player.move(MovementType.SELF, v);
if (Math.abs(Main.client.player.getYaw() - yaw) > MOVE_THRESHOLD)
Main.client.player.setYaw(yaw);
if (Math.abs(Main.client.player.getPitch() - pitch) > MOVE_THRESHOLD)
Main.client.player.setPitch(pitch);
}
}