Skip to content

Commit 6b3fe3e

Browse files
committed
Add oldWaterColorEffects config setting
1 parent e03f7d7 commit 6b3fe3e

File tree

9 files changed

+157
-28
lines changed

9 files changed

+157
-28
lines changed

src/main/java/org/visuals/legacy/animatium/config/AnimatiumConfig.java

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,32 @@
3030
import dev.isxander.yacl3.config.v2.api.SerialEntry;
3131
import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder;
3232
import dev.isxander.yacl3.platform.YACLPlatform;
33+
import net.minecraft.client.Minecraft;
3334
import net.minecraft.client.gui.screens.Screen;
35+
import net.minecraft.client.renderer.texture.OverlayTexture;
3436
import net.minecraft.network.chat.Component;
3537
import org.jetbrains.annotations.Nullable;
3638
import org.visuals.legacy.animatium.config.category.*;
39+
import org.visuals.legacy.animatium.mixins.accessor.GameRendererAccessor;
3740

3841
public final class AnimatiumConfig {
3942
private static final ConfigClassHandler<AnimatiumConfig> CONFIG = ConfigClassHandler.createBuilder(AnimatiumConfig.class)
4043
.serializer((config) -> GsonConfigSerializerBuilder.create(config)
4144
.setPath(YACLPlatform.getConfigDir().resolve("animatium.json"))
4245
.build()
4346
).build();
47+
@SerialEntry
48+
public MovementConfigCategory movement = new MovementConfigCategory();
49+
@SerialEntry
50+
public ItemsConfigCategory items = new ItemsConfigCategory();
51+
@SerialEntry
52+
public ScreenConfigCategory screen = new ScreenConfigCategory();
53+
@SerialEntry
54+
public FixesConfigCategory fixes = new FixesConfigCategory();
55+
@SerialEntry
56+
public OtherConfigCategory other = new OtherConfigCategory();
57+
@SerialEntry
58+
public ExtrasConfigCategory extras = new ExtrasConfigCategory();
4459

4560
public static Screen getConfigScreen(@Nullable Screen parent) {
4661
return YetAnotherConfigLib.create(CONFIG, (defaults, config, builder) -> {
@@ -51,6 +66,14 @@ public static Screen getConfigScreen(@Nullable Screen parent) {
5166
builder.category(FixesConfigCategory.create(defaults.fixes, config.fixes));
5267
builder.category(OtherConfigCategory.create(defaults.other, config.other));
5368
builder.category(ExtrasConfigCategory.create(defaults.extras, config.extras));
69+
builder.save(() -> {
70+
final Minecraft minecraft = Minecraft.getInstance();
71+
((GameRendererAccessor) minecraft.gameRenderer).animatium$setOverlayTexture(new OverlayTexture());
72+
minecraft.reloadResourcePacks();
73+
if (minecraft.level != null) {
74+
minecraft.level.clearTintCaches();
75+
}
76+
});
5477
return builder;
5578
}).generateScreen(parent);
5679
}
@@ -66,22 +89,4 @@ public static void save() {
6689
public static AnimatiumConfig instance() {
6790
return CONFIG.instance();
6891
}
69-
70-
@SerialEntry
71-
public MovementConfigCategory movement = new MovementConfigCategory();
72-
73-
@SerialEntry
74-
public ItemsConfigCategory items = new ItemsConfigCategory();
75-
76-
@SerialEntry
77-
public ScreenConfigCategory screen = new ScreenConfigCategory();
78-
79-
@SerialEntry
80-
public FixesConfigCategory fixes = new FixesConfigCategory();
81-
82-
@SerialEntry
83-
public OtherConfigCategory other = new OtherConfigCategory();
84-
85-
@SerialEntry
86-
public ExtrasConfigCategory extras = new ExtrasConfigCategory();
8792
}

src/main/java/org/visuals/legacy/animatium/config/category/ExtrasConfigCategory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class ExtrasConfigCategory extends Category {
4949
public boolean disableFirstPersonParticles = false;
5050
public boolean dontClearChat = false;
5151
public boolean dontCloseChat = false;
52-
public boolean disableBiomeWaterColor = false;
52+
public boolean oldWaterColorEffects = false;
5353
public float itemSwingSpeed = 0.0F;
5454
public float hasteSwingSpeed = 0.0F;
5555
public float miningFatigueSwingSpeed = 0.0F;
@@ -80,7 +80,7 @@ public static ConfigCategory create(final ExtrasConfigCategory defaults, final E
8080
category.option(booleanOption("disableFirstPersonParticles", defaults, config));
8181
category.option(booleanOption("dontClearChat", defaults, config));
8282
category.option(booleanOption("dontCloseChat", defaults, config));
83-
category.option(booleanOption("disableBiomeWaterColor", defaults, config));
83+
category.option(booleanOption("oldWaterColorEffects", defaults, config));
8484

8585
{
8686
final OptionGroup.Builder itemSwingCategory = OptionGroup.createBuilder();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/**
2+
* Animatium
3+
* The all-you-could-want legacy animations mod for modern minecraft versions.
4+
* Brings back animations from the 1.7/1.8 era and more.
5+
* <p>
6+
* Copyright (C) 2024-2025 lowercasebtw
7+
* Copyright (C) 2024-2025 mixces
8+
* Copyright (C) 2024-2025 Contributors to the project retain their copyright
9+
* <p>
10+
* This program is free software: you can redistribute it and/or modify
11+
* it under the terms of the GNU General Public License as published by
12+
* the Free Software Foundation, either version 3 of the License, or
13+
* (at your option) any later version.
14+
* <p>
15+
* This program is distributed in the hope that it will be useful,
16+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18+
* GNU General Public License for more details.
19+
* <p>
20+
* You should have received a copy of the GNU General Public License
21+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22+
* <p>
23+
* "MINECRAFT" LINKING EXCEPTION TO THE GPL
24+
*/
25+
26+
package org.visuals.legacy.animatium.mixins.v1.rendering.blocks;
27+
28+
import com.llamalad7.mixinextras.expression.Definition;
29+
import com.llamalad7.mixinextras.expression.Expression;
30+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
31+
import net.minecraft.util.ARGB;
32+
import net.minecraft.world.level.biome.BiomeSpecialEffects;
33+
import org.spongepowered.asm.mixin.Final;
34+
import org.spongepowered.asm.mixin.Mixin;
35+
import org.spongepowered.asm.mixin.Shadow;
36+
import org.spongepowered.asm.mixin.injection.At;
37+
import org.visuals.legacy.animatium.Animatium;
38+
import org.visuals.legacy.animatium.config.AnimatiumConfig;
39+
40+
@Mixin(BiomeSpecialEffects.class)
41+
public abstract class MixinBiomeSpecialEffects_DisableWaterBiomeTint {
42+
@Shadow
43+
@Final
44+
private int waterColor;
45+
46+
@Definition(id = "waterColor", field = "Lnet/minecraft/world/level/biome/BiomeSpecialEffects;waterColor:I")
47+
@Expression("this.waterColor")
48+
@ModifyExpressionValue(method = "getWaterColor", at = @At("MIXINEXTRAS:EXPRESSION"))
49+
private int animatium$oldWaterColor(int original) {
50+
if (Animatium.isEnabled() && AnimatiumConfig.instance().extras.oldWaterColorEffects) {
51+
if (this.waterColor == 6388580/*Swamp Water Color*/) {
52+
return ARGB.color(224, 255, 174);
53+
} else {
54+
return ARGB.white(1.0F);
55+
}
56+
} else {
57+
return original;
58+
}
59+
}
60+
}

src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/sky/fog/MixinAirBasedFogEnvironment_OldRenderDistance.java renamed to src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/fog/MixinAirBasedFogEnvironment_OldRenderDistance.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* "MINECRAFT" LINKING EXCEPTION TO THE GPL
2424
*/
2525

26-
package org.visuals.legacy.animatium.mixins.v1.rendering.sky.fog;
26+
package org.visuals.legacy.animatium.mixins.v1.rendering.fog;
2727

2828
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
2929
import net.minecraft.client.renderer.fog.environment.AirBasedFogEnvironment;

src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/sky/fog/MixinFogRenderer_OldMinY.java renamed to src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/fog/MixinFogRenderer_OldMinY.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* "MINECRAFT" LINKING EXCEPTION TO THE GPL
2424
*/
2525

26-
package org.visuals.legacy.animatium.mixins.v1.rendering.sky.fog;
26+
package org.visuals.legacy.animatium.mixins.v1.rendering.fog;
2727

2828
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2929
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;

src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/sky/fog/MixinFogRenderer_VoidFog.java renamed to src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/fog/MixinFogRenderer_VoidFog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* "MINECRAFT" LINKING EXCEPTION TO THE GPL
2424
*/
2525

26-
package org.visuals.legacy.animatium.mixins.v1.rendering.sky.fog;
26+
package org.visuals.legacy.animatium.mixins.v1.rendering.fog;
2727

2828
import com.llamalad7.mixinextras.expression.Definition;
2929
import com.llamalad7.mixinextras.expression.Expression;

src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/sky/fog/MixinSkyRenderer_PlanarFogSky.java renamed to src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/fog/MixinSkyRenderer_PlanarFogSky.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* "MINECRAFT" LINKING EXCEPTION TO THE GPL
2424
*/
2525

26-
package org.visuals.legacy.animatium.mixins.v1.rendering.sky.fog;
26+
package org.visuals.legacy.animatium.mixins.v1.rendering.fog;
2727

2828
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2929
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/**
2+
* Animatium
3+
* The all-you-could-want legacy animations mod for modern minecraft versions.
4+
* Brings back animations from the 1.7/1.8 era and more.
5+
* <p>
6+
* Copyright (C) 2024-2025 lowercasebtw
7+
* Copyright (C) 2024-2025 mixces
8+
* Copyright (C) 2024-2025 Contributors to the project retain their copyright
9+
* <p>
10+
* This program is free software: you can redistribute it and/or modify
11+
* it under the terms of the GNU General Public License as published by
12+
* the Free Software Foundation, either version 3 of the License, or
13+
* (at your option) any later version.
14+
* <p>
15+
* This program is distributed in the hope that it will be useful,
16+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18+
* GNU General Public License for more details.
19+
* <p>
20+
* You should have received a copy of the GNU General Public License
21+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22+
* <p>
23+
* "MINECRAFT" LINKING EXCEPTION TO THE GPL
24+
*/
25+
26+
package org.visuals.legacy.animatium.mixins.v1.rendering.fog;
27+
28+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
29+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
30+
import net.minecraft.client.Camera;
31+
import net.minecraft.client.multiplayer.ClientLevel;
32+
import net.minecraft.client.renderer.fog.environment.WaterFogEnvironment;
33+
import net.minecraft.util.ARGB;
34+
import net.minecraft.world.effect.MobEffects;
35+
import net.minecraft.world.entity.LivingEntity;
36+
import net.minecraft.world.item.enchantment.EnchantmentHelper;
37+
import net.minecraft.world.item.enchantment.Enchantments;
38+
import net.minecraft.world.level.biome.Biome;
39+
import org.spongepowered.asm.mixin.Mixin;
40+
import org.spongepowered.asm.mixin.injection.At;
41+
import org.visuals.legacy.animatium.Animatium;
42+
import org.visuals.legacy.animatium.config.AnimatiumConfig;
43+
44+
@Mixin(WaterFogEnvironment.class)
45+
public abstract class MixinWaterFogEnvironment_OldWaterColor {
46+
@WrapOperation(method = "getBaseColor", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/biome/Biome;getWaterFogColor()I"))
47+
private int animatium$oldWaterFogColor(Biome instance, Operation<Integer> original, ClientLevel level, Camera camera, int renderDistance, float partialTick) {
48+
if (Animatium.isEnabled() && AnimatiumConfig.instance().extras.oldWaterColorEffects) {
49+
float value = 0.0F;
50+
if (camera.getEntity() instanceof LivingEntity livingEntity) {
51+
value = EnchantmentHelper.getEnchantmentLevel(level.registryAccess().getOrThrow(Enchantments.RESPIRATION), livingEntity) * 0.2F;
52+
if (livingEntity.hasEffect(MobEffects.WATER_BREATHING)) {
53+
value *= 0.9F;
54+
}
55+
}
56+
57+
return ARGB.colorFromFloat(1.0F, 0.02F + value, 0.02F + value, 0.2F + value);
58+
} else {
59+
return original.call(instance);
60+
}
61+
}
62+
}

src/main/resources/animatium.mixins.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,13 @@
8686
"v1.gui.toasts.MixinToastManager_DisableToastSounds",
8787
"v1.gui.toasts.MixinTutorialToast_DisableToast",
8888
"v1.rendering.MixinGameRenderer_OldDepthFar",
89+
"v1.rendering.blocks.MixinBiomeSpecialEffects_DisableWaterBiomeTint",
8990
"v1.rendering.blocks.MixinBlockRenderDispatcher_FastGrassSide",
91+
"v1.rendering.fog.MixinAirBasedFogEnvironment_OldRenderDistance",
92+
"v1.rendering.fog.MixinFogRenderer_OldMinY",
93+
"v1.rendering.fog.MixinFogRenderer_VoidFog",
94+
"v1.rendering.fog.MixinSkyRenderer_PlanarFogSky",
95+
"v1.rendering.fog.MixinWaterFogEnvironment_OldWaterColor",
9096
"v1.rendering.items.MixinItem",
9197
"v1.rendering.items.MixinItemInHandLayer",
9298
"v1.rendering.items.MixinItemInHandRenderer",
@@ -108,10 +114,6 @@
108114
"v1.rendering.outlines.MixinLevelRenderer_EntityOutlines",
109115
"v1.rendering.sky.MixinLevelRenderer_OldSkyRenderingCheck",
110116
"v1.rendering.sky.cloud_height.MixinLevelRenderer_LegacyCloudHeight",
111-
"v1.rendering.sky.fog.MixinAirBasedFogEnvironment_OldRenderDistance",
112-
"v1.rendering.sky.fog.MixinFogRenderer_OldMinY",
113-
"v1.rendering.sky.fog.MixinFogRenderer_VoidFog",
114-
"v1.rendering.sky.fog.MixinSkyRenderer_PlanarFogSky",
115117
"v1.rendering.sky.horizon_height.MixinClientLevel_ClientLevelData_OldMinY",
116118
"v1.rendering.sky.the_void.MixinClientLevel_VoidParticles",
117119
"v1.rendering.sky.the_void.MixinLevelRenderer_BlueVoidDisc",

0 commit comments

Comments
 (0)