diff --git a/gradle.properties b/gradle.properties index 3b4d505..6d3bc8f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ mapping_version=2023.09.03-1.20.1 mod_id=improved_aerodynamics mod_name=VS: Improved Aerodynamics mod_license=MIT -mod_version=0.2.0 +mod_version=0.3.0 mod_group_id=dev.lumareth.improvedaerodynamics mod_authors=Lumareth mod_description=Valkyrien Skies addon that keeps terrain streaming ahead of fast ships and smooths out Warium flight physics, with an optional flight model with real stalls and auto trim. diff --git a/src/main/java/dev/lumareth/improvedAerodynamics/Config.java b/src/main/java/dev/lumareth/improvedAerodynamics/Config.java index f3f060e..ea9440f 100644 --- a/src/main/java/dev/lumareth/improvedAerodynamics/Config.java +++ b/src/main/java/dev/lumareth/improvedAerodynamics/Config.java @@ -92,6 +92,37 @@ public final class Config { "with lift, so this only costs speed. Wings use Warium's 1.0, which also stands in for fuselage drag") .defineInRange("stabilizerDrag", 0.2D, 0.0D, 2.0D); + public static final ForgeConfigSpec.BooleanValue TRANSONIC_DRAG = BUILDER + .comment("Improved flight model: zero-lift drag rises steeply around the speed of sound, so craft can no longer", + "cruise supersonic without a lot of thrust or a clean shape. Induced and stall drag are not affected") + .define("transonicDrag", true); + + public static final ForgeConfigSpec.DoubleValue SPEED_OF_SOUND = BUILDER + .comment("Improved flight model: speed of sound in blocks per second, Mach 1 for the transonic drag") + .defineInRange("speedOfSound", 100.0D, 10.0D, 1000.0D); + + public static final ForgeConfigSpec.DoubleValue TRANSONIC_PEAK_DRAG = BUILDER + .comment("Improved flight model: multiplier for zero-lift drag at its peak, at Mach 1.05") + .defineInRange("transonicPeakDrag", 4.0D, 1.0D, 20.0D); + + public static final ForgeConfigSpec.DoubleValue SUPERSONIC_DRAG = BUILDER + .comment("Improved flight model: multiplier for zero-lift drag once fully supersonic, from Mach 1.3") + .defineInRange("supersonicDrag", 2.0D, 1.0D, 20.0D); + + public static final ForgeConfigSpec.BooleanValue VORTEX_LIFT = BUILDER + .comment("Improved flight model: wings with a low aspect ratio (delta wings) stall later and get extra lift at", + "high angles of attack from leading-edge vortices. Wings with an aspect ratio of 3 or more are not affected") + .define("vortexLift", true); + + public static final ForgeConfigSpec.DoubleValue VORTEX_STALL_BONUS = BUILDER + .comment("Improved flight model: extra stall angle of the lowest aspect ratio wings (1 or less) as a fraction of", + "the normal stall angle, 1.0 doubles it, for example from 16 to 32 degrees") + .defineInRange("vortexStallBonus", 1.0D, 0.0D, 3.0D); + + public static final ForgeConfigSpec.DoubleValue VORTEX_LIFT_STRENGTH = BUILDER + .comment("Improved flight model: multiplier for the extra lift the vortices make at high angles of attack") + .defineInRange("vortexLiftStrength", 1.0D, 0.0D, 3.0D); + public static final ForgeConfigSpec.DoubleValue TRIM_AUTHORITY = BUILDER .comment("Auto trim: largest pitch input (fraction of full deflection) the trim may hold") .defineInRange("trimAuthority", 0.5D, 0.0D, 1.0D); diff --git a/src/main/java/dev/lumareth/improvedAerodynamics/ConfigCommands.java b/src/main/java/dev/lumareth/improvedAerodynamics/ConfigCommands.java index 582ed61..01ada46 100644 --- a/src/main/java/dev/lumareth/improvedAerodynamics/ConfigCommands.java +++ b/src/main/java/dev/lumareth/improvedAerodynamics/ConfigCommands.java @@ -8,6 +8,7 @@ import com.mojang.brigadier.tree.LiteralCommandNode; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -17,6 +18,7 @@ import java.util.List; /** * /improvedaerodynamics (or /aero) to read and change the most important server config values in game. * {@code /aero} lists them, {@code /aero