瀏覽代碼

port to 1.14.4

TheIllusiveC4 5 年之前
父節點
當前提交
84406bb369

+ 8 - 8
src/main/java/top/theillusivec4/customfov/CustomFoV.java

@@ -31,14 +31,14 @@ import top.theillusivec4.customfov.core.FoVConfig;
 @Mod(CustomFoV.MODID)
 public class CustomFoV {
 
-    public static final String MODID = "customfov";
+  public static final String MODID = "customfov";
 
-    public CustomFoV() {
-        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setupClient);
-        ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, FoVConfig.spec);
-    }
+  public CustomFoV() {
+    FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setupClient);
+    ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, FoVConfig.spec);
+  }
 
-    private void setupClient(final FMLClientSetupEvent evt) {
-        MinecraftForge.EVENT_BUS.register(new EventHandlerFoV());
-    }
+  private void setupClient(final FMLClientSetupEvent evt) {
+    MinecraftForge.EVENT_BUS.register(new EventHandlerFoV());
+  }
 }

+ 82 - 76
src/main/java/top/theillusivec4/customfov/core/EventHandlerFoV.java

@@ -19,14 +19,13 @@
 
 package top.theillusivec4.customfov.core;
 
+import net.minecraft.block.BlockState;
 import net.minecraft.block.material.Material;
-import net.minecraft.block.state.IBlockState;
 import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.ActiveRenderInfo;
 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.entity.player.PlayerEntity;
+import net.minecraft.item.Items;
 import net.minecraft.util.math.MathHelper;
 import net.minecraftforge.client.event.EntityViewRenderEvent;
 import net.minecraftforge.client.event.FOVUpdateEvent;
@@ -35,87 +34,94 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
 
 public class EventHandlerFoV {
 
-    @SubscribeEvent(priority = EventPriority.HIGHEST)
-    public void onFoVUpdatePre(FOVUpdateEvent evt) {
+  @SubscribeEvent(priority = EventPriority.HIGHEST)
+  public void onFoVUpdatePre(FOVUpdateEvent evt) {
+    evt.setNewfov(FoVConfig.staticFoV.get() ? 1.0f : getNewFovModifier());
+  }
 
-        if (!FoVConfig.staticFoV.get()) {
-            evt.setNewfov(getNewFovModifier());
-        } else {
-            evt.setNewfov(1.0F);
-        }
+  @SubscribeEvent(priority = EventPriority.LOWEST)
+  public void onFovUpdatePost(FOVUpdateEvent evt) {
+
+    if (FoVConfig.superStaticFoV.get()) {
+      evt.setNewfov(1.0F);
     }
+  }
 
-    @SubscribeEvent(priority = EventPriority.LOWEST)
-    public void onFovUpdatePost(FOVUpdateEvent evt) {
+  @SubscribeEvent(priority = EventPriority.HIGHEST)
+  public void onFoVModifier(EntityViewRenderEvent.FOVModifier evt) {
+    BlockState blockstate = evt.getInfo().getBlockAtCamera();
 
-        if (FoVConfig.superStaticFoV.get()) {
-            evt.setNewfov(1.0F);
-        }
+    if (blockstate.getMaterial() != Material.WATER) {
+      return;
     }
 
-    @SubscribeEvent(priority = EventPriority.HIGHEST)
-    public void onFoVModifier(EntityViewRenderEvent.FOVModifier evt) {
-        IBlockState iblockstate = ActiveRenderInfo.getBlockStateAtEntityViewpoint(Minecraft.getInstance().world, evt.getEntity(),
-                (float)evt.getRenderPartialTicks());
-
-        if (iblockstate.getMaterial() == Material.WATER) {
-            float originalModifier = 60.0F / 70.0F;
-            double originalFOV = evt.getFOV() / originalModifier;
-
-            if (FoVConfig.staticFoV.get() || FoVConfig.superStaticFoV.get()) {
-                evt.setFOV(originalFOV);
-                return;
-            }
-            evt.setFOV(originalFOV * (1.0F - getConfiguredValue((1.0F - originalModifier), FoVConfig.underwaterModifier.get(),
-                    FoVConfig.underwaterMin.get(), FoVConfig.underwaterMax.get())));
-        }
+    float originalModifier = 60.0F / 70.0F;
+    double originalFOV = evt.getFOV() / originalModifier;
+
+    if (FoVConfig.staticFoV.get() || FoVConfig.superStaticFoV.get()) {
+      evt.setFOV(originalFOV);
+      return;
+    }
+
+    evt.setFOV(originalFOV * (1.0F - getConfiguredValue((1.0F - originalModifier),
+        FoVConfig.underwaterModifier.get(),
+        FoVConfig.underwaterMin.get(), FoVConfig.underwaterMax.get())));
+  }
+
+  private float getNewFovModifier() {
+    PlayerEntity player = Minecraft.getInstance().player;
+    float modifier = 1.0F;
+
+    if (player.abilities.isFlying) {
+      modifier *=
+          1.0F + getConfiguredValue(0.1F, FoVConfig.flyingModifier.get(), FoVConfig.flyingMax.get(),
+              FoVConfig.flyingMin.get());
+    }
+    IAttributeInstance iattributeinstance = player
+        .getAttribute(SharedMonsterAttributes.MOVEMENT_SPEED);
+    float speedModifier = (float) (
+        (iattributeinstance.getValue() / (double) player.abilities.getWalkSpeed() + 1.0D) / 2.0D);
+    float value = (float) iattributeinstance.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),
+        FoVConfig.effectsModifier.get(),
+        FoVConfig.effectsMax.get(), FoVConfig.effectsMin.get());
+
+    if (player.isSprinting()) {
+      float sprintPercent = 1.0F - effPercent;
+      float sprintModifier = getConfiguredValue(sprintPercent * (speedModifier - 1),
+          FoVConfig.sprintingModifier.get(),
+          FoVConfig.sprintingMax.get(), FoVConfig.sprintingMin.get());
+      configModifier += sprintModifier;
     }
 
-    private float getNewFovModifier() {
-        EntityPlayer player = Minecraft.getInstance().player;
-        float modifier = 1.0F;
-
-        if (player.abilities.isFlying) {
-            modifier *= 1.0F + getConfiguredValue(0.1F, FoVConfig.flyingModifier.get(), FoVConfig.flyingMax.get(),
-                    FoVConfig.flyingMin.get());
-        }
-        IAttributeInstance iattributeinstance = player.getAttribute(SharedMonsterAttributes.MOVEMENT_SPEED);
-        float speedModifier = (float)((iattributeinstance.getValue() / (double)player.abilities.getWalkSpeed() + 1.0D) / 2.0D);
-        float value = (float)iattributeinstance.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), FoVConfig.effectsModifier.get(),
-                FoVConfig.effectsMax.get(), FoVConfig.effectsMin.get());
-
-        if (player.isSprinting()) {
-            float sprintPercent = 1.0F - effPercent;
-            float sprintModifier = getConfiguredValue(sprintPercent * (speedModifier - 1), FoVConfig.sprintingModifier.get(),
-                    FoVConfig.sprintingMax.get(), FoVConfig.sprintingMin.get());
-            configModifier += sprintModifier;
-        }
-        modifier = (float) ((double) modifier * (1.0D + configModifier));
-
-        if (player.abilities.getWalkSpeed() == 0.0F || Float.isNaN(modifier) || Float.isInfinite(modifier)) {
-            modifier = 1.0F;
-        }
-
-        if (player.isHandActive() && player.getActiveItemStack().getItem() == Items.BOW) {
-            int i = player.getItemInUseMaxCount();
-            float f1 = (float)i / 20.0F;
-
-            if (f1 > 1.0F) {
-                f1 = 1.0F;
-            } else {
-                f1 = f1 * f1;
-            }
-            modifier *= 1.0F - getConfiguredValue(f1 * 0.15F, FoVConfig.aimingModifier.get(), FoVConfig.aimingMax.get(),
-                    FoVConfig.aimingMin.get());
-        }
-
-        return modifier;
+    modifier = (float) ((double) modifier * (1.0D + configModifier));
+
+    if (player.abilities.getWalkSpeed() == 0.0F || Float.isNaN(modifier) || Float
+        .isInfinite(modifier)) {
+      modifier = 1.0F;
     }
 
-    private float getConfiguredValue(float original, double modifier, double max, double min) {
-        return (float)MathHelper.clamp(original * modifier, min, max);
+    if (player.isHandActive() && player.getActiveItemStack().getItem() == Items.BOW) {
+      int i = player.getItemInUseMaxCount();
+      float f1 = (float) i / 20.0F;
+
+      if (f1 > 1.0F) {
+        f1 = 1.0F;
+      } else {
+        f1 = f1 * f1;
+      }
+      modifier *= 1.0F - getConfiguredValue(f1 * 0.15F, FoVConfig.aimingModifier.get(),
+          FoVConfig.aimingMax.get(),
+          FoVConfig.aimingMin.get());
     }
+
+    return modifier;
+  }
+
+  private float getConfiguredValue(float original, double modifier, double max, double min) {
+    return (float) MathHelper.clamp(original * modifier, min, max);
+  }
 }

+ 144 - 151
src/main/java/top/theillusivec4/customfov/core/FoVConfig.java

@@ -27,158 +27,151 @@ import top.theillusivec4.customfov.CustomFoV;
 
 public class FoVConfig {
 
-    static final BooleanValue staticFoV;
-    static final BooleanValue superStaticFoV;
-
-    //Flying
-    static final DoubleValue flyingModifier;
-    static final DoubleValue flyingMax;
-    static final DoubleValue flyingMin;
-
-    //Aiming
-    static final DoubleValue aimingModifier;
-    static final DoubleValue aimingMax;
-    static final DoubleValue aimingMin;
-
-    //Sprinting
-    static final DoubleValue sprintingModifier;
-    static final DoubleValue sprintingMax;
-    static final DoubleValue sprintingMin;
-
-    //Effects
-    static final DoubleValue effectsModifier;
-    static final DoubleValue effectsMax;
-    static final DoubleValue effectsMin;
-
-    //Underwater
-    static final DoubleValue underwaterModifier;
-    static final DoubleValue underwaterMax;
-    static final DoubleValue underwaterMin;
-
-    public static final ForgeConfigSpec spec;
-
-    private static final String CONFIG_PREFIX = "gui." + CustomFoV.MODID + ".config.";
-
-    static {
-        Builder builder = new Builder();
-
-        {
-            staticFoV = builder
-                    .comment("Set to true to disable all vanilla FoV modifiers")
-                    .translation(CONFIG_PREFIX + "staticFoV")
-                    .define("staticFoV", false);
-
-            superStaticFoV = builder
-                    .comment("Set to true to disable all FoV modifiers, including modded ones")
-                    .translation(CONFIG_PREFIX + "superStaticFoV")
-                    .define("superStaticFoV", false);
-        }
-
-        {
-            builder.push("Flying");
-
-            flyingModifier = builder
-                    .comment("The modifier to multiply by the original FoV modifier")
-                    .translation(CONFIG_PREFIX + "flyingModifier")
-                    .defineInRange("flyingModifier", 1.0d, 0.0d, 10.0d);
-
-            flyingMax = builder
-                    .comment("The maximum FoV flying modifier value")
-                    .translation(CONFIG_PREFIX + "flyingMax")
-                    .defineInRange("flyingMax", 10.0d, -10.0d, 10.0d);
-
-            flyingMin = builder
-                    .comment("The minimum FoV flying modifier value")
-                    .translation(CONFIG_PREFIX + "flyingMin")
-                    .defineInRange("flyingMin", -10.0d, -10.0d, 10.0d);
-
-            builder.pop();
-        }
-
-        {
-            builder.push("Aiming");
-
-            aimingModifier = builder
-                    .comment("The modifier to multiply by the original FoV modifier")
-                    .translation(CONFIG_PREFIX + "aimingModifier")
-                    .defineInRange("aimingModifier", 1.0d, 0.0d, 10.0d);
-
-            aimingMax = builder
-                    .comment("The maximum FoV aiming modifier value")
-                    .translation(CONFIG_PREFIX + "aimingMax")
-                    .defineInRange("aimingMax", 10.0d, -10.0d, 10.0d);
-
-            aimingMin = builder
-                    .comment("The minimum FoV aiming modifier value")
-                    .translation(CONFIG_PREFIX + "aimingMin")
-                    .defineInRange("aimingMin", -10.0d, -10.0d, 10.0d);
-
-            builder.pop();
-        }
-
-        {
-            builder.push("Sprinting");
-
-            sprintingModifier = builder
-                    .comment("The modifier to multiply by the original FoV modifier")
-                    .translation(CONFIG_PREFIX + "sprintingModifier")
-                    .defineInRange("sprintingModifier", 1.0d, 0.0d, 10.0d);
-
-            sprintingMax = builder
-                    .comment("The maximum FoV sprinting modifier value")
-                    .translation(CONFIG_PREFIX + "sprintingMax")
-                    .defineInRange("sprintingMax", 10.0d, -10.0d, 10.0d);
-
-            sprintingMin = builder
-                    .comment("The minimum FoV sprinting modifier value")
-                    .translation(CONFIG_PREFIX + "sprintingMin")
-                    .defineInRange("sprintingMin", -10.0d, -10.0d, 10.0d);
-
-            builder.pop();
-        }
-
-        {
-            builder.push("Speed Effects");
-
-            effectsModifier = builder
-                    .comment("The modifier to multiply by the original FoV modifier")
-                    .translation(CONFIG_PREFIX + "effectsModifier")
-                    .defineInRange("effectsModifier", 1.0d, 0.0d, 10.0d);
-
-            effectsMax = builder
-                    .comment("The maximum FoV effects modifier value")
-                    .translation(CONFIG_PREFIX + "effectsMax")
-                    .defineInRange("effectsMax", 10.0d, -10.0d, 10.0d);
+  public static final ForgeConfigSpec spec;
+  static final BooleanValue staticFoV;
+  static final BooleanValue superStaticFoV;
+  //Flying
+  static final DoubleValue flyingModifier;
+  static final DoubleValue flyingMax;
+  static final DoubleValue flyingMin;
+  //Aiming
+  static final DoubleValue aimingModifier;
+  static final DoubleValue aimingMax;
+  static final DoubleValue aimingMin;
+  //Sprinting
+  static final DoubleValue sprintingModifier;
+  static final DoubleValue sprintingMax;
+  static final DoubleValue sprintingMin;
+  //Effects
+  static final DoubleValue effectsModifier;
+  static final DoubleValue effectsMax;
+  static final DoubleValue effectsMin;
+  //Underwater
+  static final DoubleValue underwaterModifier;
+  static final DoubleValue underwaterMax;
+  static final DoubleValue underwaterMin;
+  private static final String CONFIG_PREFIX = "gui." + CustomFoV.MODID + ".config.";
+
+  static {
+    Builder builder = new Builder();
+
+    {
+      staticFoV = builder
+          .comment("Set to true to disable all vanilla FoV modifiers")
+          .translation(CONFIG_PREFIX + "staticFoV")
+          .define("staticFoV", false);
+
+      superStaticFoV = builder
+          .comment("Set to true to disable all FoV modifiers, including modded ones")
+          .translation(CONFIG_PREFIX + "superStaticFoV")
+          .define("superStaticFoV", false);
+    }
+
+    {
+      builder.push("Flying");
+
+      flyingModifier = builder
+          .comment("The modifier to multiply by the original FoV modifier")
+          .translation(CONFIG_PREFIX + "flyingModifier")
+          .defineInRange("flyingModifier", 1.0d, 0.0d, 10.0d);
+
+      flyingMax = builder
+          .comment("The maximum FoV flying modifier value")
+          .translation(CONFIG_PREFIX + "flyingMax")
+          .defineInRange("flyingMax", 10.0d, -10.0d, 10.0d);
 
-            effectsMin = builder
-                    .comment("The minimum FoV effects modifier value")
-                    .translation(CONFIG_PREFIX + "effectsMin")
-                    .defineInRange("effectsMin", -10.0d, -10.0d, 10.0d);
+      flyingMin = builder
+          .comment("The minimum FoV flying modifier value")
+          .translation(CONFIG_PREFIX + "flyingMin")
+          .defineInRange("flyingMin", -10.0d, -10.0d, 10.0d);
 
-            builder.pop();
-        }
-
-        {
-            builder.push("Underwater");
-
-            underwaterModifier = builder
-                    .comment("The modifier to multiply by the original FoV modifier")
-                    .translation(CONFIG_PREFIX + "underwaterModifier")
-                    .defineInRange("underwaterModifier", 1.0d, 0.0d, 10.0d);
-
-            underwaterMax = builder
-                    .comment("The maximum FoV underwater modifier value")
-                    .translation(CONFIG_PREFIX + "underwaterMax")
-                    .defineInRange("underwaterMax", 10.0d, -10.0d, 10.0d);
-
-            underwaterMin = builder
-                    .comment("The minimum FoV underwater modifier value")
-                    .translation(CONFIG_PREFIX + "underwaterMin")
-                    .defineInRange("underwaterMin", -10.0d, -10.0d, 10.0d);
-
-            builder.pop();
-        }
-
-        spec = builder.build();
+      builder.pop();
     }
+
+    {
+      builder.push("Aiming");
+
+      aimingModifier = builder
+          .comment("The modifier to multiply by the original FoV modifier")
+          .translation(CONFIG_PREFIX + "aimingModifier")
+          .defineInRange("aimingModifier", 1.0d, 0.0d, 10.0d);
+
+      aimingMax = builder
+          .comment("The maximum FoV aiming modifier value")
+          .translation(CONFIG_PREFIX + "aimingMax")
+          .defineInRange("aimingMax", 10.0d, -10.0d, 10.0d);
+
+      aimingMin = builder
+          .comment("The minimum FoV aiming modifier value")
+          .translation(CONFIG_PREFIX + "aimingMin")
+          .defineInRange("aimingMin", -10.0d, -10.0d, 10.0d);
+
+      builder.pop();
+    }
+
+    {
+      builder.push("Sprinting");
+
+      sprintingModifier = builder
+          .comment("The modifier to multiply by the original FoV modifier")
+          .translation(CONFIG_PREFIX + "sprintingModifier")
+          .defineInRange("sprintingModifier", 1.0d, 0.0d, 10.0d);
+
+      sprintingMax = builder
+          .comment("The maximum FoV sprinting modifier value")
+          .translation(CONFIG_PREFIX + "sprintingMax")
+          .defineInRange("sprintingMax", 10.0d, -10.0d, 10.0d);
+
+      sprintingMin = builder
+          .comment("The minimum FoV sprinting modifier value")
+          .translation(CONFIG_PREFIX + "sprintingMin")
+          .defineInRange("sprintingMin", -10.0d, -10.0d, 10.0d);
+
+      builder.pop();
+    }
+
+    {
+      builder.push("Speed Effects");
+
+      effectsModifier = builder
+          .comment("The modifier to multiply by the original FoV modifier")
+          .translation(CONFIG_PREFIX + "effectsModifier")
+          .defineInRange("effectsModifier", 1.0d, 0.0d, 10.0d);
+
+      effectsMax = builder
+          .comment("The maximum FoV effects modifier value")
+          .translation(CONFIG_PREFIX + "effectsMax")
+          .defineInRange("effectsMax", 10.0d, -10.0d, 10.0d);
+
+      effectsMin = builder
+          .comment("The minimum FoV effects modifier value")
+          .translation(CONFIG_PREFIX + "effectsMin")
+          .defineInRange("effectsMin", -10.0d, -10.0d, 10.0d);
+
+      builder.pop();
+    }
+
+    {
+      builder.push("Underwater");
+
+      underwaterModifier = builder
+          .comment("The modifier to multiply by the original FoV modifier")
+          .translation(CONFIG_PREFIX + "underwaterModifier")
+          .defineInRange("underwaterModifier", 1.0d, 0.0d, 10.0d);
+
+      underwaterMax = builder
+          .comment("The maximum FoV underwater modifier value")
+          .translation(CONFIG_PREFIX + "underwaterMax")
+          .defineInRange("underwaterMax", 10.0d, -10.0d, 10.0d);
+
+      underwaterMin = builder
+          .comment("The minimum FoV underwater modifier value")
+          .translation(CONFIG_PREFIX + "underwaterMin")
+          .defineInRange("underwaterMin", -10.0d, -10.0d, 10.0d);
+
+      builder.pop();
+    }
+
+    spec = builder.build();
+  }
 }