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 - name: Upload artifact
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: build
path: build/libs/* path: build/libs/*

View File

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

View File

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