TheIllusiveC4 4 rokov pred
rodič
commit
946b6ec61f

+ 6 - 0
docs/CHANGELOG.md

@@ -4,6 +4,12 @@ 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.
 
+## [1.16.5-5.1.0.1] - 2021.02.14
+### Changed
+- Updated to 1.16.5
+### Fixed
+- Fixed sprinting and effects interlacing modifiers
+
 ## [1.16.4-5.1.0.0] - 2020.11.15
 ### Changed
 - Updated to 1.16.4

+ 3 - 3
gradle.properties

@@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx3G
 org.gradle.daemon=false
 
 # Mod
-mod_version=1.16.4-5.1.0.0
+mod_version=1.16.5-5.1.0.1
 mod_group=top.theillusivec4.customfov
 mod_id=customfov
 mod_name=Custom FoV
@@ -13,8 +13,8 @@ mod_description=Allows customization of various field of view settings.
 mod_icon=customfov_icon.png
 
 # Dependencies
-version_minecraft=1.16.4
-version_forge=1.16.4-35.0.17
+version_minecraft=1.16.5
+version_forge=1.16.5-36.0.22
 version_mcp=20201028-1.16.3
 
 # Curse

+ 20 - 15
src/main/java/top/theillusivec4/customfov/CustomFoVEventHandler.java

@@ -96,23 +96,28 @@ public class CustomFoVEventHandler {
     ModifiableAttributeInstance attribute = player.getAttribute(Attributes.MOVEMENT_SPEED);
 
     if (attribute != null) {
-      float speedModifier = (float) (
-          (attribute.getValue() / (double) player.abilities.getWalkSpeed() + 1.0D) / 2.0D);
       float value = (float) attribute.getValue();
-      float effPercent = Math.abs(
-          (value / (player.isSprinting() ? 1.3F : 1.0F) - player.abilities.getWalkSpeed()) / (value
-              - player.abilities.getWalkSpeed()));
-      float configModifier = getConfiguredValue(effPercent * (speedModifier - 1),
-          CustomFoVConfig.effectsModifier, CustomFoVConfig.effectsMax, CustomFoVConfig.effectsMin);
-
-      if (player.isSprinting()) {
-        float sprintPercent = 1.0F - effPercent;
-        float sprintModifier = getConfiguredValue(sprintPercent * (speedModifier - 1),
-            CustomFoVConfig.sprintingModifier, CustomFoVConfig.sprintingMax,
-            CustomFoVConfig.sprintingMin);
-        configModifier += sprintModifier;
+      float walkingSpeed = player.abilities.getWalkSpeed();
+
+      if (value != walkingSpeed) {
+
+        if (player.isSprinting()) {
+          float effects = (value / 1.30000001192092896F) - walkingSpeed;
+          float sprint = 0.30000001192092896F;
+          effects = getConfiguredValue(effects, CustomFoVConfig.effectsModifier,
+              CustomFoVConfig.effectsMax, CustomFoVConfig.effectsMin);
+          sprint = getConfiguredValue(sprint, CustomFoVConfig.sprintingModifier,
+              CustomFoVConfig.sprintingMax, CustomFoVConfig.sprintingMin);
+          double modified = (walkingSpeed + effects) * (1.0F + sprint);
+          modifier = (float) ((double) modifier * (modified / walkingSpeed + 1.0F) / 2.0F);
+        } else {
+          float effects = getConfiguredValue(value - walkingSpeed, CustomFoVConfig.effectsModifier,
+              CustomFoVConfig.effectsMax, CustomFoVConfig.effectsMin);
+          modifier =
+              (float) ((double) modifier * ((effects + walkingSpeed) / walkingSpeed + 1.0F) /
+                  2.0F);
+        }
       }
-      modifier = (float) ((double) modifier * (1.0D + configModifier));
     }
 
     if (player.abilities.getWalkSpeed() == 0.0F || Float.isNaN(modifier) || Float