소스 검색

add minimum value config option

TheIllusiveC4 6 년 전
부모
커밋
5feac9d246

+ 6 - 0
docs/CHANGELOG.md

@@ -4,5 +4,11 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project does not adhere to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
 This project uses MCVERSION-MAJORMOD.MAJORAPI.MINOR.PATCH.
 
+## [Unreleased]
+### Added
+- Minimum FoV modifier value configuration option
+### Changed
+- Released bottom limits on maximum value configuration option
+
 ## [0.1] - 2018.09.30
 Initial beta release

+ 32 - 16
src/main/java/c4/customfov/core/ConfigHandler.java

@@ -31,26 +31,34 @@ public class ConfigHandler {
 
         @Name("Modifier")
         @Comment("The modifier to multiply by the original FoV modifier")
-        @RangeDouble(min = 0.0D)
         public double modifier = 1.0D;
 
         @Name("Maximum Value")
-        @Comment("The maximum FoV flying modifier value, -1 for no maximum")
-        @RangeDouble(min = -1.0D)
-        public double maxValue = -1.0D;
+        @Comment("The maximum FoV flying modifier value")
+        @RangeDouble(min = -Double.MAX_VALUE)
+        public double maxValue = 10.0D;
+
+        @Name("Minimum Value")
+        @Comment("The minimum FoV flying modifier value")
+        @RangeDouble(min = -Double.MAX_VALUE)
+        public double minValue = -10.0D;
     }
 
     public static class Aiming {
 
         @Name("Modifier")
         @Comment("The modifier to multiply by the original FoV modifier")
-        @RangeDouble(min = 0.0D)
         public double modifier = 1.0D;
 
         @Name("Maximum Value")
-        @Comment("The maximum FoV aiming modifier value, -1 for no maximum")
-        @RangeDouble(min = -1.0D)
-        public double maxValue = -1.0D;
+        @Comment("The maximum FoV aiming modifier value")
+        @RangeDouble(min = -Double.MAX_VALUE)
+        public double maxValue = 10.0D;
+
+        @Name("Minimum Value")
+        @Comment("The minimum FoV aiming modifier value")
+        @RangeDouble(min = -Double.MAX_VALUE)
+        public double minValue = -10.0D;
     }
 
     public static class Speed {
@@ -67,26 +75,34 @@ public class ConfigHandler {
 
             @Name("Modifier")
             @Comment("The modifier to multiply by the original FoV modifier")
-            @RangeDouble(min = 0.0D)
             public double modifier = 1.0D;
 
             @Name("Maximum Value")
-            @Comment("The maximum FoV sprinting modifier value, -1 for no maximum")
-            @RangeDouble(min = -1.0D)
-            public double maxValue = -1.0D;
+            @Comment("The maximum FoV sprinting modifier value")
+            @RangeDouble(min = -Double.MAX_VALUE)
+            public double maxValue = 10.0D;
+
+            @Name("Minimum Value")
+            @Comment("The minimum FoV sprinting modifier value")
+            @RangeDouble(min = -Double.MAX_VALUE)
+            public double minValue = -10.0D;
         }
 
         public class Effects {
 
             @Name("Modifier")
             @Comment("The modifier to multiply by the original FoV modifier")
-            @RangeDouble(min = 0.0D)
             public double modifier = 1.0D;
 
             @Name("Maximum Value")
-            @Comment("The maximum FoV effects modifier value, -1 for no maximum")
-            @RangeDouble(min = -1.0D)
-            public double maxValue = -1.0D;
+            @Comment("The maximum FoV effects modifier value")
+            @RangeDouble(min = -Double.MAX_VALUE)
+            public double maxValue = 10.0D;
+
+            @Name("Minimum Value")
+            @Comment("The minimum FoV effects modifier value")
+            @RangeDouble(min = -Double.MAX_VALUE)
+            public double minValue = -10.0D;
         }
     }
 

+ 9 - 7
src/main/java/c4/customfov/core/EventHandlerClient.java

@@ -5,6 +5,7 @@ import net.minecraft.entity.SharedMonsterAttributes;
 import net.minecraft.entity.ai.attributes.IAttributeInstance;
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.init.Items;
+import net.minecraft.util.math.MathHelper;
 import net.minecraftforge.client.event.FOVUpdateEvent;
 import net.minecraftforge.fml.common.eventhandler.EventPriority;
 import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@@ -26,7 +27,7 @@ public class EventHandlerClient {
 
         if (player.capabilities.isFlying) {
             modifier *= 1.0F + getConfiguredValue(0.1F, ConfigHandler.flying.modifier,
-                    ConfigHandler.flying.maxValue);
+                    ConfigHandler.flying.maxValue, ConfigHandler.flying.minValue);
         }
 
         IAttributeInstance iattributeinstance = player.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED);
@@ -36,12 +37,14 @@ public class EventHandlerClient {
         float effPercent = Math.abs((value / (player.isSprinting() ? 1.3F : 1.0F) - player.capabilities.getWalkSpeed())
                 / (value - player.capabilities.getWalkSpeed()));
         float configModifier = getConfiguredValue(effPercent * (speedModifier - 1),
-                ConfigHandler.speed.effects.modifier, ConfigHandler.speed.effects.maxValue);
+                ConfigHandler.speed.effects.modifier, ConfigHandler.speed.effects.maxValue,
+                ConfigHandler.speed.effects.minValue);
 
         if (player.isSprinting()) {
             float sprintPercent = 1.0F - effPercent;
             float sprintModifier = getConfiguredValue(sprintPercent * (speedModifier - 1),
-                    ConfigHandler.speed.sprinting.modifier, ConfigHandler.speed.sprinting.maxValue);
+                    ConfigHandler.speed.sprinting.modifier, ConfigHandler.speed.sprinting.maxValue,
+                    ConfigHandler.speed.sprinting.minValue);
             configModifier += sprintModifier;
         }
         modifier = (float) ((double) modifier * (1.0D + configModifier));
@@ -61,14 +64,13 @@ public class EventHandlerClient {
             }
 
             modifier *= 1.0F - getConfiguredValue(f1 * 0.15F, ConfigHandler.aiming.modifier,
-                    ConfigHandler.aiming.maxValue);
+                    ConfigHandler.aiming.maxValue, ConfigHandler.aiming.minValue);
         }
 
         return modifier;
     }
 
-    private float getConfiguredValue(float original, double modifier, double max) {
-        float configured = (float)(original * modifier);
-        return max >= 0 ? (float)Math.min(configured, max) : configured;
+    private float getConfiguredValue(float original, double modifier, double max, double min) {
+        return (float)MathHelper.clamp(original * modifier, min, max);
     }
 }

+ 12 - 4
src/main/resources/assets/customfov/lang/en_us.lang

@@ -9,14 +9,18 @@ customfov.general.flying.tooltip=Configure flying FoV settings
 customfov.general.flying.modifier=Modifier
 customfov.general.flying.modifier.tooltip=The modifier to multiply by the original FoV modifier
 customfov.general.flying.maxvalue=Max Value
-customfov.general.flying.maxvalue.tooltip=The maximum FoV flying modifier value, -1 for no maximum
+customfov.general.flying.maxvalue.tooltip=The maximum FoV flying modifier value
+customfov.general.flying.minvalue=Min Value
+customfov.general.flying.minvalue.tooltip=The minimum FoV flying modifier value
 
 customfov.general.aiming=Aiming
 customfov.general.aiming.tooltip=Configure aiming FoV settings
 customfov.general.aiming.modifier=Modifier
 customfov.general.aiming.modifier.tooltip=The modifier to multiply by the original FoV modifier
 customfov.general.aiming.maxvalue=Max Value
-customfov.general.aiming.maxvalue.tooltip=The maximum FoV aiming modifier value, -1 for no maximum
+customfov.general.aiming.maxvalue.tooltip=The maximum FoV aiming modifier value
+customfov.general.aiming.minvalue=Min Value
+customfov.general.aiming.minvalue.tooltip=The minimum FoV aiming modifier value
 
 customfov.general.speed=Speed
 customfov.general.speed.tooltip=Configure speed FoV settings
@@ -26,11 +30,15 @@ customfov.general.speed.sprinting.tooltip=Configure sprinting FoV settings
 customfov.general.speed.sprinting.modifier=Modifier
 customfov.general.speed.sprinting.modifier.tooltip=The modifier to multiply by the original FoV modifier
 customfov.general.speed.sprinting.maxvalue=Max Value
-customfov.general.speed.sprinting.maxvalue.tooltip=The maximum FoV sprinting modifier value, -1 for no maximum
+customfov.general.speed.sprinting.maxvalue.tooltip=The maximum FoV sprinting modifier value
+customfov.general.speed.sprinting.minvalue=Min Value
+customfov.general.speed.sprinting.minvalue.tooltip=The minimum FoV sprinting modifier value
 
 customfov.general.speed.effects=Effects
 customfov.general.speed.effects.tooltip=Configure speed potion effects FoV settings
 customfov.general.speed.effects.modifier=Modifier
 customfov.general.speed.effects.modifier.tooltip=The modifier to multiply by the original FoV modifier
 customfov.general.speed.effects.maxvalue=Max Value
-customfov.general.speed.effects.maxvalue.tooltip=The maximum FoV effects modifier value, -1 for no maximum
+customfov.general.speed.effects.maxvalue.tooltip=The maximum FoV effects modifier value
+customfov.general.speed.effects.minvalue=Min Value
+customfov.general.speed.effects.minvalue.tooltip=The minimum FoV effects modifier value