From 14100213737b0fdab0fcdedb1e5b3126f893717d Mon Sep 17 00:00:00 2001 From: Sollace Date: Sun, 30 Apr 2023 00:51:15 +0100 Subject: [PATCH] Added a gamerule to adjust weather effects intensity --- src/main/java/com/minelittlepony/unicopia/UGameRules.java | 2 ++ .../minelittlepony/unicopia/entity/player/PlayerPhysics.java | 5 +++-- src/main/resources/unicopia.aw | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/UGameRules.java b/src/main/java/com/minelittlepony/unicopia/UGameRules.java index aa06c2dc..275b2f89 100644 --- a/src/main/java/com/minelittlepony/unicopia/UGameRules.java +++ b/src/main/java/com/minelittlepony/unicopia/UGameRules.java @@ -2,10 +2,12 @@ package com.minelittlepony.unicopia; import net.minecraft.world.GameRules; import net.minecraft.world.GameRules.BooleanRule; +import net.minecraft.world.GameRules.IntRule; public interface UGameRules { GameRules.Key SWAP_TRIBE_ON_DEATH = GameRules.register("swapTribeOnDeath", GameRules.Category.SPAWNING, BooleanRule.create(false)); GameRules.Key ANNOUNCE_TRIBE_JOINS = GameRules.register("announceTribeJoins", GameRules.Category.SPAWNING, BooleanRule.create(false)); + GameRules.Key WEATHER_EFFECTS_STRENGTH = GameRules.register("weatherEffectsStrength", GameRules.Category.MISC, IntRule.create(100)); static void bootstrap() { } } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java index 0ec25cc7..401470bb 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java @@ -577,8 +577,9 @@ public class PlayerPhysics extends EntityPhysics implements Tickab } private void applyTurbulance(MutableVector velocity) { - float effectStrength = Math.min(1, (float)ticksInAir / MAX_TICKS_TO_WEATHER_EFFECTS); - Vec3d gust = WeatherConditions.getGustStrength(entity.world, entity.getBlockPos()); + int globalEffectStrength = MathHelper.clamp(entity.getWorld().getGameRules().getInt(UGameRules.WEATHER_EFFECTS_STRENGTH), 0, 100); + float effectStrength = Math.min(1, (float)ticksInAir / MAX_TICKS_TO_WEATHER_EFFECTS) * (globalEffectStrength / 100F); + Vec3d gust = WeatherConditions.getGustStrength(entity.world, entity.getBlockPos()).multiply(globalEffectStrength / 100D); if (effectStrength * gust.getX() >= 1) { SoundEmitter.playSoundAt(entity, USounds.AMBIENT_WIND_GUST, SoundCategory.AMBIENT, 3, 1); diff --git a/src/main/resources/unicopia.aw b/src/main/resources/unicopia.aw index 06f93b39..d25f58d3 100644 --- a/src/main/resources/unicopia.aw +++ b/src/main/resources/unicopia.aw @@ -3,4 +3,5 @@ accessible class net/minecraft/client/render/RenderLayer$MultiPhaseP accessible method net/minecraft/client/render/RenderLayer of (Ljava/lang/String;Lnet/minecraft/client/render/VertexFormat;Lnet/minecraft/client/render/VertexFormat$DrawMode;IZZLnet/minecraft/client/render/RenderLayer$MultiPhaseParameters;)Lnet/minecraft/client/render/RenderLayer$MultiPhase; accessible class net/minecraft/client/render/item/HeldItemRenderer$HandRenderType accessible method net/minecraft/world/GameRules register (Ljava/lang/String;Lnet/minecraft/world/GameRules$Category;Lnet/minecraft/world/GameRules$Type;)Lnet/minecraft/world/GameRules$Key; -accessible method net/minecraft/world/GameRules$BooleanRule create (Z)Lnet/minecraft/world/GameRules$Type; \ No newline at end of file +accessible method net/minecraft/world/GameRules$BooleanRule create (Z)Lnet/minecraft/world/GameRules$Type; +accessible method net/minecraft/world/GameRules$IntRule create (I)Lnet/minecraft/world/GameRules$Type; \ No newline at end of file