diff --git a/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java b/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java index 890d876..76c9554 100644 --- a/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java +++ b/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java @@ -11,7 +11,6 @@ import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; -import net.minecraft.util.math.MathHelper; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.FileNotFoundException; @@ -82,14 +81,14 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js cfg.sprintModeWhileFlying = Json.getEnum(obj, "Flight.SprintMode", cfg.sprintModeWhileFlying, SprintMode.class); cfg.disableChangingFovWhileFlying = Json.getBool(obj, "Flight.DisableChangingFOV", cfg.disableChangingFovWhileFlying); cfg.flyOnGroundInCreative = Json.getBool(obj, "Flight.FlyOnGround.Creative", cfg.flyOnGroundInCreative); - cfg.flightSpeedMpCreativeDefault = MathHelper.clamp(Json.getFloat(obj, "Flight.SpeedMp.Creative.Default", cfg.flightSpeedMpCreativeDefault), 0.25F, 8F); - cfg.flightSpeedMpCreativeSprinting = MathHelper.clamp(Json.getFloat(obj, "Flight.SpeedMp.Creative.Sprinting", cfg.flightSpeedMpCreativeSprinting), 0.25F, 8F); - cfg.flightSpeedMpSpectatorDefault = MathHelper.clamp(Json.getFloat(obj, "Flight.SpeedMp.Spectator.Default", cfg.flightSpeedMpSpectatorDefault), 0.25F, 8F); - cfg.flightSpeedMpSpectatorSprinting = MathHelper.clamp(Json.getFloat(obj, "Flight.SpeedMp.Spectator.Sprinting", cfg.flightSpeedMpSpectatorSprinting), 0.25F, 8F); - cfg.flightVerticalBoostCreativeDefault = MathHelper.clamp(Json.getFloat(obj, "Flight.VerticalBoost.Creative.Default", cfg.flightVerticalBoostCreativeDefault), 0F, 3F); - cfg.flightVerticalBoostCreativeSprinting = MathHelper.clamp(Json.getFloat(obj, "Flight.VerticalBoost.Creative.Sprinting", cfg.flightVerticalBoostCreativeSprinting), 0F, 3F); - cfg.flightVerticalBoostSpectatorDefault = MathHelper.clamp(Json.getFloat(obj, "Flight.VerticalBoost.Spectator.Default", cfg.flightVerticalBoostSpectatorDefault), 0F, 3F); - cfg.flightVerticalBoostSpectatorSprinting = MathHelper.clamp(Json.getFloat(obj, "Flight.VerticalBoost.Spectator.Sprinting", cfg.flightVerticalBoostSpectatorSprinting), 0F, 3F); + cfg.flightSpeedMpCreativeDefault = Json.getFloat(obj, "Flight.SpeedMp.Creative.Default", cfg.flightSpeedMpCreativeDefault, 0.25F, 8F); + cfg.flightSpeedMpCreativeSprinting = Json.getFloat(obj, "Flight.SpeedMp.Creative.Sprinting", cfg.flightSpeedMpCreativeSprinting, 0.25F, 8F); + cfg.flightSpeedMpSpectatorDefault = Json.getFloat(obj, "Flight.SpeedMp.Spectator.Default", cfg.flightSpeedMpSpectatorDefault, 0.25F, 8F); + cfg.flightSpeedMpSpectatorSprinting = Json.getFloat(obj, "Flight.SpeedMp.Spectator.Sprinting", cfg.flightSpeedMpSpectatorSprinting, 0.25F, 8F); + cfg.flightVerticalBoostCreativeDefault = Json.getFloat(obj, "Flight.VerticalBoost.Creative.Default", cfg.flightVerticalBoostCreativeDefault, 0F, 3F); + cfg.flightVerticalBoostCreativeSprinting = Json.getFloat(obj, "Flight.VerticalBoost.Creative.Sprinting", cfg.flightVerticalBoostCreativeSprinting, 0F, 3F); + cfg.flightVerticalBoostSpectatorDefault = Json.getFloat(obj, "Flight.VerticalBoost.Spectator.Default", cfg.flightVerticalBoostSpectatorDefault, 0F, 3F); + cfg.flightVerticalBoostSpectatorSprinting = Json.getFloat(obj, "Flight.VerticalBoost.Spectator.Sprinting", cfg.flightVerticalBoostSpectatorSprinting, 0F, 3F); Json.readKeyBinding(obj, "Misc.KeyToggleWalkForward", cfg.keyToggleWalkForward); Json.readKeyBinding(obj, "Misc.KeyToggleJump", cfg.keyToggleJump); diff --git a/src/main/java/chylex/bettercontrols/config/Json.java b/src/main/java/chylex/bettercontrols/config/Json.java index 0746eb1..8d01990 100644 --- a/src/main/java/chylex/bettercontrols/config/Json.java +++ b/src/main/java/chylex/bettercontrols/config/Json.java @@ -11,8 +11,9 @@ final class Json{ obj.addProperty(key, Float.valueOf(value)); } - static float getFloat(final JsonObject obj, final String key, final float defaultValue){ - return obj.has(key) ? obj.get(key).getAsFloat() : defaultValue; + static float getFloat(final JsonObject obj, final String key, final float defaultValue, final float minValue, final float maxValue){ + final float value = obj.has(key) ? obj.get(key).getAsFloat() : defaultValue; + return Math.max(minValue, Math.min(maxValue, value)); } static void setBool(final JsonObject obj, final String key, final boolean value){ diff --git a/src/main/java/chylex/bettercontrols/player/PlayerTicker.java b/src/main/java/chylex/bettercontrols/player/PlayerTicker.java index 99903ca..1008605 100644 --- a/src/main/java/chylex/bettercontrols/player/PlayerTicker.java +++ b/src/main/java/chylex/bettercontrols/player/PlayerTicker.java @@ -12,7 +12,6 @@ import chylex.bettercontrols.mixin.AccessStickyKeyBindingStateGetter; import chylex.bettercontrols.util.Key; import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.util.MovementInput; -import net.minecraft.util.math.MathHelper; import java.lang.ref.WeakReference; import java.util.function.BooleanSupplier; import static chylex.bettercontrols.util.Statics.KEY_FORWARD; @@ -160,14 +159,13 @@ public final class PlayerTicker{ if (FlightHelper.isFlyingCreativeOrSpectator(player)){ final float flightSpeed = FlightHelper.getFlightSpeed(player); + final float verticalVelocity = FlightHelper.getExtraVerticalVelocity(player); if (flightSpeed > 0F){ player.abilities.setFlySpeed(flightSpeed); } - final float verticalVelocity = FlightHelper.getExtraVerticalVelocity(player); - - if (!MathHelper.epsilonEquals(verticalVelocity, 0F) && player == MINECRAFT.getRenderViewEntity()){ + if (Math.abs(verticalVelocity) > 1E-5F && player == MINECRAFT.getRenderViewEntity()){ int direction = 0; if (player.movementInput.sneaking){