refactor(SpeedManager): clean up speed management logic

This commit is contained in:
cattyn
2025-11-05 16:22:20 +03:00
parent a42ba60742
commit 3cf7e9cac4
2 changed files with 30 additions and 91 deletions
@@ -6,7 +6,6 @@ import me.alpha432.oyvey.event.Stage;
import me.alpha432.oyvey.event.impl.*;
import me.alpha432.oyvey.features.Feature;
import me.alpha432.oyvey.features.commands.Command;
import me.alpha432.oyvey.util.models.Timer;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.packet.BrandCustomPayload;
import net.minecraft.network.packet.CustomPayload;
@@ -15,8 +14,6 @@ import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket;
import net.minecraft.util.Formatting;
public class EventManager extends Feature {
private final Timer logoutTimer = new Timer();
public void init() {
EVENT_BUS.register(this);
}
@@ -27,17 +24,10 @@ public class EventManager extends Feature {
@Subscribe
public void onUpdate(UpdateEvent event) {
mc.getWindow().setTitle("OyVey 0.0.3");
if (!fullNullCheck()) {
// OyVey.inventoryManager.update();
OyVey.moduleManager.onUpdate();
OyVey.moduleManager.sortModules(true);
onTick();
// if ((HUD.getInstance()).renderingMode.getValue() == HUD.RenderingMode.Length) {
// OyVey.moduleManager.sortModules(true);
// } else {
// OyVey.moduleManager.sortModulesABC();
// }
}
}
@@ -49,7 +39,6 @@ public class EventManager extends Feature {
if (player == null || player.getHealth() > 0.0F)
continue;
EVENT_BUS.post(new DeathEvent(player));
// PopCounter.getInstance().onDeath(player);
}
}
@@ -58,7 +47,7 @@ public class EventManager extends Feature {
if (fullNullCheck())
return;
if (event.getStage() == Stage.PRE) {
OyVey.speedManager.updateValues();
OyVey.speedManager.update();
OyVey.rotationManager.updateRotations();
OyVey.positionManager.updatePosition();
}
@@ -4,94 +4,44 @@ import me.alpha432.oyvey.features.Feature;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;
public class SpeedManager
extends Feature {
public static final double LAST_JUMP_INFO_DURATION_DEFAULT = 3.0;
public static boolean didJumpThisTick = false;
public static boolean isJumping = false;
private final int distancer = 20;
public double firstJumpSpeed = 0.0;
public double lastJumpSpeed = 0.0;
public double percentJumpSpeedChanged = 0.0;
public double jumpSpeedChanged = 0.0;
public boolean didJumpLastTick = false;
public long jumpInfoStartTime = 0L;
public boolean wasFirstJump = true;
public double speedometerCurrentSpeed = 0.0;
public HashMap<PlayerEntity, Double> playerSpeeds = new HashMap();
public class SpeedManager extends Feature {
private static final int SPEED_NORMALIZATION = 20;
public static void setDidJumpThisTick(boolean val) {
didJumpThisTick = val;
private final List<Float> localSpeed = new ArrayList<>();
private float localSpeedNormal = 0f;
public void update() {
localSpeed.add(getCurrentSpeed(mc.player));
while (localSpeed.size() > SPEED_NORMALIZATION) localSpeed.removeFirst();
localSpeedNormal = localSpeed.stream().reduce(0f, Float::sum) / localSpeed.size();
}
public static void setIsJumping(boolean val) {
isJumping = val;
public double getSpeed(PlayerEntity player) {
if (mc.player == player) return localSpeedNormal;
return getCurrentSpeed(player);
}
public float lastJumpInfoTimeRemaining() {
return (float) (System.currentTimeMillis() - this.jumpInfoStartTime) / 1000.0f;
public double getSpeedBpS(PlayerEntity player) {
return getSpeed(player) * 20;
}
public void updateValues() {
Entity e = mc.player.getVehicle();
double distTraveledLastTickX = mc.player.getX() - mc.player.lastX;
double distTraveledLastTickZ = mc.player.getZ() - mc.player.lastZ;
if (e != null) {
distTraveledLastTickX = e.getX() - e.lastX;
distTraveledLastTickZ = e.getZ() - e.lastZ;
public double getSpeedKmH(PlayerEntity player) {
return getSpeedBpS(player) * 3.6;
}
public float getCurrentSpeed(Entity entity) {
Entity vehicle = entity.getVehicle();
double distTraveledX = entity.getX() - entity.lastX;
double distTraveledZ = entity.getZ() - entity.lastZ;
if (vehicle != null) {
distTraveledX = vehicle.getX() - vehicle.lastX;
distTraveledZ = vehicle.getZ() - vehicle.lastZ;
}
this.speedometerCurrentSpeed = distTraveledLastTickX * distTraveledLastTickX + distTraveledLastTickZ * distTraveledLastTickZ;
if (didJumpThisTick && (!mc.player.isOnGround() || isJumping)) {
if (didJumpThisTick && !this.didJumpLastTick) {
this.wasFirstJump = this.lastJumpSpeed == 0.0;
this.percentJumpSpeedChanged = this.speedometerCurrentSpeed != 0.0 ? this.speedometerCurrentSpeed / this.lastJumpSpeed - 1.0 : -1.0;
this.jumpSpeedChanged = this.speedometerCurrentSpeed - this.lastJumpSpeed;
this.jumpInfoStartTime = System.currentTimeMillis();
this.lastJumpSpeed = this.speedometerCurrentSpeed;
this.firstJumpSpeed = this.wasFirstJump ? this.lastJumpSpeed : 0.0;
}
this.didJumpLastTick = didJumpThisTick;
} else {
this.didJumpLastTick = false;
this.lastJumpSpeed = 0.0;
}
this.updatePlayers();
}
public void updatePlayers() {
for (PlayerEntity player : mc.world.getPlayers()) {
if (!(mc.player.distanceTo(player) < distancer))
continue;
double distTraveledLastTickX = player.getX() - player.lastX;
double distTraveledLastTickZ = player.getZ() - player.lastZ;
double playerSpeed = distTraveledLastTickX * distTraveledLastTickX + distTraveledLastTickZ * distTraveledLastTickZ;
this.playerSpeeds.put(player, playerSpeed);
}
}
public double getPlayerSpeed(PlayerEntity player) {
if (this.playerSpeeds.get(player) == null) {
return 0.0;
}
return this.turnIntoKpH(this.playerSpeeds.get(player));
}
public double turnIntoKpH(double input) {
return Math.sqrt(input) * 71.2729367892;
}
public double getSpeedKpH() {
double speedometerkphdouble = this.turnIntoKpH(this.speedometerCurrentSpeed);
speedometerkphdouble = (double) Math.round(10.0 * speedometerkphdouble) / 10.0;
return speedometerkphdouble;
}
public double getSpeedMpS() {
double speedometerMpsdouble = this.turnIntoKpH(this.speedometerCurrentSpeed) / 3.6;
speedometerMpsdouble = (double) Math.round(10.0 * speedometerMpsdouble) / 10.0;
return speedometerMpsdouble;
return (float) Math.hypot(distTraveledX, distTraveledZ);
}
}