mirror of
https://github.com/chylex/Better-Controls.git
synced 2025-04-22 09:15:46 +02:00
Replace vertical flight boost with a multiplier
This commit is contained in:
parent
21aa005bc4
commit
b720769df2
src/main/java/chylex/bettercontrols
@ -24,14 +24,14 @@ public final class BetterControlsConfig {
|
||||
public boolean disableFlightInertia = false;
|
||||
public boolean disableChangingFovWhileFlying = false;
|
||||
public boolean flyOnGroundInCreative = false;
|
||||
public float flightSpeedMpCreativeDefault = 1F;
|
||||
public float flightSpeedMpCreativeSprinting = 2F;
|
||||
public float flightSpeedMpSpectatorDefault = 1F;
|
||||
public float flightSpeedMpSpectatorSprinting = 2F;
|
||||
public float flightVerticalBoostCreativeDefault = 0F;
|
||||
public float flightVerticalBoostCreativeSprinting = 0F;
|
||||
public float flightVerticalBoostSpectatorDefault = 0F;
|
||||
public float flightVerticalBoostSpectatorSprinting = 0F;
|
||||
public float flightHorizontalSpeedMpCreativeDefault = 1F;
|
||||
public float flightHorizontalSpeedMpCreativeSprinting = 2F;
|
||||
public float flightHorizontalSpeedMpSpectatorDefault = 1F;
|
||||
public float flightHorizontalSpeedMpSpectatorSprinting = 2F;
|
||||
public float flightVerticalSpeedMpCreativeDefault = 1F;
|
||||
public float flightVerticalSpeedMpCreativeSprinting = 2F;
|
||||
public float flightVerticalSpeedMpSpectatorDefault = 1F;
|
||||
public float flightVerticalSpeedMpSpectatorSprinting = 2F;
|
||||
|
||||
public final KeyBindingWithModifier keyToggleWalkForward = new KeyBindingWithModifier("key.bettercontrols.toggle_forward");
|
||||
public final KeyBindingWithModifier keyToggleJump = new KeyBindingWithModifier("key.bettercontrols.toggle_jump");
|
||||
|
@ -12,6 +12,7 @@ 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.Mth;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import java.io.FileNotFoundException;
|
||||
@ -45,14 +46,14 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
|
||||
Json.setBool(obj, "Flight.DisableInertia", cfg.disableFlightInertia);
|
||||
Json.setBool(obj, "Flight.DisableChangingFOV", cfg.disableChangingFovWhileFlying);
|
||||
Json.setBool(obj, "Flight.FlyOnGround.Creative", cfg.flyOnGroundInCreative);
|
||||
Json.setFloat(obj, "Flight.SpeedMp.Creative.Default", cfg.flightSpeedMpCreativeDefault);
|
||||
Json.setFloat(obj, "Flight.SpeedMp.Creative.Sprinting", cfg.flightSpeedMpCreativeSprinting);
|
||||
Json.setFloat(obj, "Flight.SpeedMp.Spectator.Default", cfg.flightSpeedMpSpectatorDefault);
|
||||
Json.setFloat(obj, "Flight.SpeedMp.Spectator.Sprinting", cfg.flightSpeedMpSpectatorSprinting);
|
||||
Json.setFloat(obj, "Flight.VerticalBoost.Creative.Default", cfg.flightVerticalBoostCreativeDefault);
|
||||
Json.setFloat(obj, "Flight.VerticalBoost.Creative.Sprinting", cfg.flightVerticalBoostCreativeSprinting);
|
||||
Json.setFloat(obj, "Flight.VerticalBoost.Spectator.Default", cfg.flightVerticalBoostSpectatorDefault);
|
||||
Json.setFloat(obj, "Flight.VerticalBoost.Spectator.Sprinting", cfg.flightVerticalBoostSpectatorSprinting);
|
||||
Json.setFloat(obj, "Flight.SpeedMp.Creative.Default", cfg.flightHorizontalSpeedMpCreativeDefault);
|
||||
Json.setFloat(obj, "Flight.SpeedMp.Creative.Sprinting", cfg.flightHorizontalSpeedMpCreativeSprinting);
|
||||
Json.setFloat(obj, "Flight.SpeedMp.Spectator.Default", cfg.flightHorizontalSpeedMpSpectatorDefault);
|
||||
Json.setFloat(obj, "Flight.SpeedMp.Spectator.Sprinting", cfg.flightHorizontalSpeedMpSpectatorSprinting);
|
||||
Json.setFloat(obj, "Flight.VerticalSpeedMp.Creative.Default", cfg.flightVerticalSpeedMpCreativeDefault);
|
||||
Json.setFloat(obj, "Flight.VerticalSpeedMp.Creative.Sprinting", cfg.flightVerticalSpeedMpCreativeSprinting);
|
||||
Json.setFloat(obj, "Flight.VerticalSpeedMp.Spectator.Default", cfg.flightVerticalSpeedMpSpectatorDefault);
|
||||
Json.setFloat(obj, "Flight.VerticalSpeedMp.Spectator.Sprinting", cfg.flightVerticalSpeedMpSpectatorSprinting);
|
||||
|
||||
Json.writeKeyBinding(obj, "Misc.KeyToggleWalkForward", cfg.keyToggleWalkForward);
|
||||
Json.writeKeyBinding(obj, "Misc.KeyToggleJump", cfg.keyToggleJump);
|
||||
@ -84,14 +85,14 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
|
||||
cfg.disableFlightInertia = Json.getBool(obj, "Flight.DisableInertia", cfg.disableFlightInertia);
|
||||
cfg.disableChangingFovWhileFlying = Json.getBool(obj, "Flight.DisableChangingFOV", cfg.disableChangingFovWhileFlying);
|
||||
cfg.flyOnGroundInCreative = Json.getBool(obj, "Flight.FlyOnGround.Creative", cfg.flyOnGroundInCreative);
|
||||
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);
|
||||
cfg.flightHorizontalSpeedMpCreativeDefault = readHorizontalSpeedMultiplier(obj, "Flight.SpeedMp.Creative.Default", cfg.flightHorizontalSpeedMpCreativeDefault);
|
||||
cfg.flightHorizontalSpeedMpCreativeSprinting = readHorizontalSpeedMultiplier(obj, "Flight.SpeedMp.Creative.Sprinting", cfg.flightHorizontalSpeedMpCreativeSprinting);
|
||||
cfg.flightHorizontalSpeedMpSpectatorDefault = readHorizontalSpeedMultiplier(obj, "Flight.SpeedMp.Spectator.Default", cfg.flightHorizontalSpeedMpSpectatorDefault);
|
||||
cfg.flightHorizontalSpeedMpSpectatorSprinting = readHorizontalSpeedMultiplier(obj, "Flight.SpeedMp.Spectator.Sprinting", cfg.flightHorizontalSpeedMpSpectatorSprinting);
|
||||
cfg.flightVerticalSpeedMpCreativeDefault = readVerticalSpeedMultiplier(obj, "Flight.VerticalSpeedMp.Creative.Default", "Flight.VerticalBoost.Creative.Default", cfg.flightVerticalSpeedMpCreativeDefault);
|
||||
cfg.flightVerticalSpeedMpCreativeSprinting = readVerticalSpeedMultiplier(obj, "Flight.VerticalSpeedMp.Creative.Sprinting", "Flight.VerticalBoost.Creative.Sprinting", cfg.flightVerticalSpeedMpCreativeSprinting);
|
||||
cfg.flightVerticalSpeedMpSpectatorDefault = readVerticalSpeedMultiplier(obj, "Flight.VerticalSpeedMp.Spectator.Default", "Flight.VerticalBoost.Spectator.Default", cfg.flightVerticalSpeedMpSpectatorDefault);
|
||||
cfg.flightVerticalSpeedMpSpectatorSprinting = readVerticalSpeedMultiplier(obj, "Flight.VerticalSpeedMp.Spectator.Sprinting", "Flight.VerticalBoost.Spectator.Sprinting", cfg.flightVerticalSpeedMpSpectatorSprinting);
|
||||
|
||||
Json.readKeyBinding(obj, "Misc.KeyToggleWalkForward", cfg.keyToggleWalkForward);
|
||||
Json.readKeyBinding(obj, "Misc.KeyToggleJump", cfg.keyToggleJump);
|
||||
@ -101,6 +102,35 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
|
||||
return cfg;
|
||||
}
|
||||
|
||||
private static float readHorizontalSpeedMultiplier(final JsonObject obj, final String key, final float defaultValue) {
|
||||
return Json.getFloat(obj, key, defaultValue, 0.25F, 8F);
|
||||
}
|
||||
|
||||
private static float readVerticalSpeedMultiplier(final JsonObject obj, final String newKey, final String legacyBoostKey, final float defaultValue) {
|
||||
if (obj.has(newKey)) {
|
||||
return Json.getFloat(obj, newKey, defaultValue, 0.25F, 8F);
|
||||
}
|
||||
else if (obj.has(legacyBoostKey)) {
|
||||
final float value = 1F + Json.getFloat(obj, legacyBoostKey, 0F, 0F, 3F);
|
||||
// 1.25x, 1.75x, 2.5x, and 3.5x are not supported
|
||||
if (Mth.equal(value, 1.25F) || Mth.equal(value, 1.75F)) {
|
||||
return 1.5F;
|
||||
}
|
||||
else if (Mth.equal(value, 2.5F)) {
|
||||
return 2F;
|
||||
}
|
||||
else if (Mth.equal(value, 3.5F)) {
|
||||
return 3F;
|
||||
}
|
||||
else {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
static void serialize(final Path path, final BetterControlsConfig config) {
|
||||
try (final JsonWriter writer = gson.newJsonWriter(Files.newBufferedWriter(path, StandardCharsets.UTF_8))) {
|
||||
gson.getAdapter(BetterControlsConfig.class).write(writer, config);
|
||||
|
@ -105,18 +105,6 @@ public class BetterControlsScreen extends OptionsSubScreen {
|
||||
new Option<>(Float.valueOf(8.00F), text("8x"))
|
||||
);
|
||||
|
||||
final ImmutableList<Option<Float>> flightVerticalBoostOptions = ImmutableList.of(
|
||||
new Option<>(Float.valueOf(0.00F), text("None")),
|
||||
new Option<>(Float.valueOf(0.25F), text("+25%")),
|
||||
new Option<>(Float.valueOf(0.50F), text("+50%")),
|
||||
new Option<>(Float.valueOf(0.75F), text("+75%")),
|
||||
new Option<>(Float.valueOf(1.00F), text("+100%")),
|
||||
new Option<>(Float.valueOf(1.50F), text("+150%")),
|
||||
new Option<>(Float.valueOf(2.00F), text("+200%")),
|
||||
new Option<>(Float.valueOf(2.50F), text("+250%")),
|
||||
new Option<>(Float.valueOf(3.00F), text("+300%"))
|
||||
);
|
||||
|
||||
generateKeyBindingWithModifierRow(y, elements, text("Toggle Flight (Creative)"), cfg.keyToggleFlight);
|
||||
y += ROW_HEIGHT;
|
||||
|
||||
@ -137,24 +125,24 @@ public class BetterControlsScreen extends OptionsSubScreen {
|
||||
elements.add(new TextWidget(col4(3), y, COL4_W - TEXT_PADDING_RIGHT, text("Spectator"), CENTER));
|
||||
y += ROW_HEIGHT * 7 / 8;
|
||||
|
||||
generateLeftSideText(y, elements, text("Speed Multiplier (Default)"));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Speed Multiplier in Creative Mode"), flightSpeedOptions, cfg.flightSpeedMpCreativeDefault, value -> cfg.flightSpeedMpCreativeDefault = value));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Speed Multiplier in Spectator Mode"), flightSpeedOptions, cfg.flightSpeedMpSpectatorDefault, value -> cfg.flightSpeedMpSpectatorDefault = value));
|
||||
generateLeftSideText(y, elements, text("Horizontal Speed Multiplier (Default)"));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Horizontal Speed Multiplier in Creative Mode"), flightSpeedOptions, cfg.flightHorizontalSpeedMpCreativeDefault, value -> cfg.flightHorizontalSpeedMpCreativeDefault = value));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Horizontal Speed Multiplier in Spectator Mode"), flightSpeedOptions, cfg.flightHorizontalSpeedMpSpectatorDefault, value -> cfg.flightHorizontalSpeedMpSpectatorDefault = value));
|
||||
y += ROW_HEIGHT;
|
||||
|
||||
generateLeftSideText(y, elements, text("Speed Multiplier (Sprinting)"));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Speed Multiplier when Sprinting in Creative Mode"), flightSpeedOptions, cfg.flightSpeedMpCreativeSprinting, value -> cfg.flightSpeedMpCreativeSprinting = value));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Speed Multiplier when Sprinting in Spectator Mode"), flightSpeedOptions, cfg.flightSpeedMpSpectatorSprinting, value -> cfg.flightSpeedMpSpectatorSprinting = value));
|
||||
generateLeftSideText(y, elements, text("Horizontal Speed Multiplier (Sprinting)"));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Horizontal Speed Multiplier when Sprinting in Creative Mode"), flightSpeedOptions, cfg.flightHorizontalSpeedMpCreativeSprinting, value -> cfg.flightHorizontalSpeedMpCreativeSprinting = value));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Horizontal Speed Multiplier when Sprinting in Spectator Mode"), flightSpeedOptions, cfg.flightHorizontalSpeedMpSpectatorSprinting, value -> cfg.flightHorizontalSpeedMpSpectatorSprinting = value));
|
||||
y += ROW_HEIGHT;
|
||||
|
||||
generateLeftSideText(y, elements, text("Vertical Speed Boost (Default)"));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Vertical Speed Boost in Creative Mode"), flightVerticalBoostOptions, cfg.flightVerticalBoostCreativeDefault, value -> cfg.flightVerticalBoostCreativeDefault = value));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Vertical Speed Boost in Spectator Mode"), flightVerticalBoostOptions, cfg.flightVerticalBoostSpectatorDefault, value -> cfg.flightVerticalBoostSpectatorDefault = value));
|
||||
generateLeftSideText(y, elements, text("Vertical Speed Multiplier (Default)"));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Vertical Speed Multiplier in Creative Mode"), flightSpeedOptions, cfg.flightVerticalSpeedMpCreativeDefault, value -> cfg.flightVerticalSpeedMpCreativeDefault = value));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Vertical Speed Multiplier in Spectator Mode"), flightSpeedOptions, cfg.flightVerticalSpeedMpSpectatorDefault, value -> cfg.flightVerticalSpeedMpSpectatorDefault = value));
|
||||
y += ROW_HEIGHT;
|
||||
|
||||
generateLeftSideText(y, elements, text("Vertical Speed Boost (Sprinting)"));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Vertical Speed Boost when Sprinting in Creative Mode"), flightVerticalBoostOptions, cfg.flightVerticalBoostCreativeSprinting, value -> cfg.flightVerticalBoostCreativeSprinting = value));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Vertical Speed Boost when Sprinting in Spectator Mode"), flightVerticalBoostOptions, cfg.flightVerticalBoostSpectatorSprinting, value -> cfg.flightVerticalBoostSpectatorSprinting = value));
|
||||
generateLeftSideText(y, elements, text("Vertical Speed Multiplier (Sprinting)"));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Vertical Speed Multiplier when Sprinting in Creative Mode"), flightSpeedOptions, cfg.flightVerticalSpeedMpCreativeSprinting, value -> cfg.flightVerticalSpeedMpCreativeSprinting = value));
|
||||
elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Vertical Speed Multiplier when Sprinting in Spectator Mode"), flightSpeedOptions, cfg.flightVerticalSpeedMpSpectatorSprinting, value -> cfg.flightVerticalSpeedMpSpectatorSprinting = value));
|
||||
y += ROW_HEIGHT;
|
||||
|
||||
return y;
|
||||
|
@ -29,8 +29,6 @@ public abstract class HookClientPlayerVerticalFlightSpeed extends LivingEntity {
|
||||
private float modifyVerticalFlightSpeed(final Abilities abilities) {
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
final LocalPlayer me = (LocalPlayer)(Object)this;
|
||||
|
||||
final float multiplier = 1F + FlightHelper.getVerticalSpeedBoost(me);
|
||||
return abilities.getFlyingSpeed() * multiplier;
|
||||
return abilities.getFlyingSpeed() * FlightHelper.getVerticalSpeedMultiplier(me);
|
||||
}
|
||||
}
|
||||
|
@ -29,25 +29,25 @@ public final class FlightHelper {
|
||||
|
||||
public static float getHorizontalSpeedMultiplier(final LocalPlayer player) {
|
||||
if (player.isCreative()) {
|
||||
return isSprinting() ? cfg().flightSpeedMpCreativeSprinting : cfg().flightSpeedMpCreativeDefault;
|
||||
return isSprinting() ? cfg().flightHorizontalSpeedMpCreativeSprinting : cfg().flightHorizontalSpeedMpCreativeDefault;
|
||||
}
|
||||
else if (player.isSpectator()) {
|
||||
return isSprinting() ? cfg().flightSpeedMpSpectatorSprinting : cfg().flightSpeedMpSpectatorDefault;
|
||||
return isSprinting() ? cfg().flightHorizontalSpeedMpSpectatorSprinting : cfg().flightHorizontalSpeedMpSpectatorDefault;
|
||||
}
|
||||
else {
|
||||
return 1F;
|
||||
}
|
||||
}
|
||||
|
||||
public static float getVerticalSpeedBoost(final LocalPlayer player) {
|
||||
public static float getVerticalSpeedMultiplier(final LocalPlayer player) {
|
||||
if (player.isCreative()) {
|
||||
return isSprinting() ? cfg().flightVerticalBoostCreativeSprinting : cfg().flightVerticalBoostCreativeDefault;
|
||||
return isSprinting() ? cfg().flightVerticalSpeedMpCreativeSprinting : cfg().flightVerticalSpeedMpCreativeDefault;
|
||||
}
|
||||
else if (player.isSpectator()) {
|
||||
return isSprinting() ? cfg().flightVerticalBoostSpectatorSprinting : cfg().flightVerticalBoostSpectatorDefault;
|
||||
return isSprinting() ? cfg().flightVerticalSpeedMpSpectatorSprinting : cfg().flightVerticalSpeedMpSpectatorDefault;
|
||||
}
|
||||
else {
|
||||
return 0F;
|
||||
return 1F;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user