Skip to content

Commit eda9d95

Browse files
committed
Merge branch '1.21/dev' into 1.21/stable
2 parents be7125c + d6a7018 commit eda9d95

12 files changed

Lines changed: 118 additions & 69 deletions

File tree

build.gradle.kts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ plugins {
33
id("fabric-loom") version ("1.10-SNAPSHOT") apply (false)
44
}
55

6-
val MINECRAFT_VERSION by extra { "1.21.5" }
7-
val NEOFORGE_VERSION by extra { "21.5.4-beta" }
8-
val FABRIC_LOADER_VERSION by extra { "0.16.10" }
9-
val FABRIC_API_VERSION by extra { "0.119.5+1.21.5" }
6+
val MINECRAFT_VERSION by extra { "1.21.6" }
7+
val NEOFORGE_VERSION by extra { "21.6.4-beta" }
8+
val FABRIC_LOADER_VERSION by extra { "0.16.14" }
9+
val FABRIC_API_VERSION by extra { "0.127.0+1.21.6" }
1010

1111
// This value can be set to null to disable Parchment.
1212
val PARCHMENT_VERSION by extra { null }
1313

1414
// https://semver.org/
1515
val MAVEN_GROUP by extra { "me.flashyreese.mods" }
1616
val ARCHIVE_NAME by extra { "sodium-extra" }
17-
val MOD_VERSION by extra { "0.6.3" }
18-
val SODIUM_VERSION by extra { "mc1.21.5-0.6.12" }
17+
val MOD_VERSION by extra { "0.6.4" }
18+
val SODIUM_VERSION by extra { "mc1.21.6-0.6.13" }
1919

2020
allprojects {
2121
apply(plugin = "java")

common/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ dependencies {
3838
addDependentFabricModule("fabric-api-base")
3939
addDependentFabricModule("fabric-block-view-api-v2")
4040
addDependentFabricModule("fabric-renderer-api-v1")
41-
addDependentFabricModule("fabric-rendering-data-attachment-v1")
4241

4342
modImplementation("maven.modrinth:sodium:$SODIUM_VERSION-fabric")
4443
}

common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/cloud/MixinDimensionEffectsOverworld.java

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package me.flashyreese.mods.sodiumextra.mixin.cloud;
2+
3+
import me.flashyreese.mods.sodiumextra.client.SodiumExtraClientMod;
4+
import net.minecraft.world.level.dimension.DimensionType;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.injection.At;
7+
import org.spongepowered.asm.mixin.injection.Inject;
8+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
9+
10+
import java.util.Optional;
11+
12+
@Mixin(DimensionType.class)
13+
public class MixinDimensionType {
14+
@Inject(method = "cloudHeight", at = @At(value = "TAIL"), cancellable = true)
15+
public void cloudHeight(CallbackInfoReturnable<Optional<Integer>> cir) {
16+
if (cir.getReturnValue().isPresent()) {
17+
cir.setReturnValue(Optional.of(SodiumExtraClientMod.options().extraSettings.cloudHeight));
18+
}
19+
}
20+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package me.flashyreese.mods.sodiumextra.mixin.fog;
2+
3+
import me.flashyreese.mods.sodiumextra.client.SodiumExtraClientMod;
4+
import net.minecraft.client.DeltaTracker;
5+
import net.minecraft.client.multiplayer.ClientLevel;
6+
import net.minecraft.client.renderer.fog.FogData;
7+
import net.minecraft.client.renderer.fog.environment.AtmosphericFogEnvironment;
8+
import net.minecraft.core.BlockPos;
9+
import net.minecraft.world.entity.Entity;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
import org.spongepowered.asm.mixin.injection.Inject;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
14+
15+
@Mixin(AtmosphericFogEnvironment.class)
16+
public class MixinAtmosphericFogEnvironment {
17+
18+
@Inject(method = "setupFog", at = @At("TAIL"))
19+
public void onSetupFog(FogData fogData, Entity entity, BlockPos blockPos, ClientLevel level, float viewDistance, DeltaTracker deltaTracker, CallbackInfo ci) {
20+
// Get fog distance from global or dimension-specific config
21+
int fogDistance = SodiumExtraClientMod.options().renderSettings.multiDimensionFogControl
22+
? SodiumExtraClientMod.options().renderSettings.dimensionFogDistanceMap.getOrDefault(level.dimensionType().effectsLocation(), 0)
23+
: SodiumExtraClientMod.options().renderSettings.fogDistance;
24+
25+
// Skip if no override
26+
if (fogDistance == 0 || fogDistance == 33) return;
27+
28+
// Fog start percentage
29+
float fogStartPercent = SodiumExtraClientMod.options().renderSettings.fogStart / 100.0F;
30+
31+
float start = fogDistance * 16 * fogStartPercent;
32+
float end = (fogDistance + 1) * 16;
33+
34+
fogData.environmentalStart = start;
35+
fogData.environmentalEnd = end;
36+
}
37+
}
Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,60 @@
11
package me.flashyreese.mods.sodiumextra.mixin.fog;
22

3+
import com.mojang.blaze3d.buffers.GpuBuffer;
4+
import com.mojang.blaze3d.buffers.GpuBufferSlice;
35
import me.flashyreese.mods.sodiumextra.client.SodiumExtraClientMod;
4-
import net.minecraft.client.Camera;
5-
import net.minecraft.client.renderer.FogParameters;
6-
import net.minecraft.client.renderer.FogRenderer;
7-
import net.minecraft.world.entity.Entity;
8-
import net.minecraft.world.level.material.FogType;
9-
import org.jetbrains.annotations.Nullable;
10-
import org.joml.Vector4f;
6+
import net.minecraft.client.Minecraft;
7+
import net.minecraft.client.renderer.fog.FogRenderer;
8+
import org.spongepowered.asm.mixin.Final;
119
import org.spongepowered.asm.mixin.Mixin;
1210
import org.spongepowered.asm.mixin.Shadow;
1311
import org.spongepowered.asm.mixin.injection.At;
1412
import org.spongepowered.asm.mixin.injection.Inject;
1513
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1614

1715
@Mixin(FogRenderer.class)
18-
public abstract class MixinFogRenderer {
16+
public class MixinFogRenderer {
17+
1918
@Shadow
20-
@Nullable
21-
private static FogRenderer.MobEffectFogFunction getPriorityFogFunction(Entity entity, float f) {
22-
return null;
23-
}
19+
@Final
20+
public static int FOG_UBO_SIZE;
21+
@Shadow
22+
@Final
23+
private GpuBuffer emptyBuffer;
2424

25-
@Inject(method = "setupFog", at = @At(value = "TAIL"), cancellable = true)
26-
private static void applyFog(Camera camera, FogRenderer.FogMode fogMode, Vector4f vector4f, float f, boolean thickFog, float tickDelta, CallbackInfoReturnable<FogParameters> cir) {
27-
Entity entity = camera.getEntity();
28-
SodiumExtraClientMod.options().renderSettings.dimensionFogDistanceMap.putIfAbsent(entity.level().dimensionType().effectsLocation(), 0);
29-
int fogDistance = SodiumExtraClientMod.options().renderSettings.multiDimensionFogControl ? SodiumExtraClientMod.options().renderSettings.dimensionFogDistanceMap.get(entity.level().dimensionType().effectsLocation()) : SodiumExtraClientMod.options().renderSettings.fogDistance;
30-
FogRenderer.MobEffectFogFunction mobEffectFogFunction = getPriorityFogFunction(entity, tickDelta);
31-
if (fogDistance == 0 || mobEffectFogFunction != null) {
32-
return;
33-
}
34-
if (camera.getFluidInCamera() == FogType.NONE && (thickFog || fogMode == FogRenderer.FogMode.FOG_TERRAIN)) {
35-
float fogStart = (float) SodiumExtraClientMod.options().renderSettings.fogStart / 100;
36-
if (fogDistance == 33) {
37-
cir.setReturnValue(FogParameters.NO_FOG);
38-
} else {
39-
FogParameters ci = cir.getReturnValue();
40-
if (ci != null) {
41-
FogParameters newFogParameters = new FogParameters(fogDistance * 16 * fogStart, (fogDistance + 1) * 16, ci.shape(), ci.red(), ci.green(), ci.blue(), ci.alpha());
42-
cir.setReturnValue(newFogParameters);
43-
}
44-
}
25+
@Inject(method = "getBuffer", at = @At(value = "HEAD"), cancellable = true)
26+
public void getBuffer(FogRenderer.FogMode fogMode, CallbackInfoReturnable<GpuBufferSlice> cir) {
27+
int fogDistance = SodiumExtraClientMod.options().renderSettings.multiDimensionFogControl
28+
? SodiumExtraClientMod.options().renderSettings.dimensionFogDistanceMap.getOrDefault(Minecraft.getInstance().level.dimensionType().effectsLocation(), 0)
29+
: SodiumExtraClientMod.options().renderSettings.fogDistance;
30+
if (fogDistance == 33) {
31+
cir.setReturnValue(this.emptyBuffer.slice(0, FOG_UBO_SIZE));
4532
}
4633
}
34+
35+
/*@ModifyVariable(method = "updateBuffer(Ljava/nio/ByteBuffer;ILorg/joml/Vector4f;FFFFFF)V",
36+
at = @At("HEAD"), ordinal = 2, argsOnly = true)
37+
private float overrideEnvironmentalStart(float original) {
38+
System.out.println("rd start: " + original);
39+
if (SodiumExtraClientMod.options().renderSettings.fogDistance == 0) return original;
40+
41+
int fogDistance = SodiumExtraClientMod.options().renderSettings.multiDimensionFogControl
42+
? SodiumExtraClientMod.options().renderSettings.dimensionFogDistanceMap.getOrDefault(Minecraft.getInstance().level.dimensionType().effectsLocation(), 0)
43+
: SodiumExtraClientMod.options().renderSettings.fogDistance;
44+
float fogStart = SodiumExtraClientMod.options().renderSettings.fogStart / 100.0F;
45+
46+
return fogDistance * 0.16F * fogStart;
47+
}
48+
49+
@ModifyVariable(method = "updateBuffer(Ljava/nio/ByteBuffer;ILorg/joml/Vector4f;FFFFFF)V",
50+
at = @At("HEAD"), ordinal = 3, argsOnly = true)
51+
private float overrideEnvironmentalEnd(float original) {
52+
System.out.println("rd end: " + original);
53+
if (SodiumExtraClientMod.options().renderSettings.fogDistance == 0) return original;
54+
55+
int fogDistance = SodiumExtraClientMod.options().renderSettings.multiDimensionFogControl
56+
? SodiumExtraClientMod.options().renderSettings.dimensionFogDistanceMap.getOrDefault(Minecraft.getInstance().level.dimensionType().effectsLocation(), 0)
57+
: SodiumExtraClientMod.options().renderSettings.fogDistance;
58+
return (fogDistance + 1) * 0.16F;
59+
}*/
4760
}
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package me.flashyreese.mods.sodiumextra.mixin.fog_falloff;
22

33
import me.flashyreese.mods.sodiumextra.client.SodiumExtraClientMod;
4-
import net.minecraft.client.renderer.FogRenderer;
54
import org.spongepowered.asm.mixin.Mixin;
65
import org.spongepowered.asm.mixin.injection.At;
76
import org.spongepowered.asm.mixin.injection.ModifyArg;
87

9-
@Mixin(FogRenderer.class)
8+
@Mixin(net.minecraft.client.renderer.fog.FogRenderer.class)
109
public class MixinFogRenderer {
11-
@ModifyArg(method = "setupFog", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/FogParameters;<init>(FFLcom/mojang/blaze3d/shaders/FogShape;FFFF)V"), index = 0)
12-
private static float setupFog(float fogStart) {
10+
@ModifyArg(method = "setupFog", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/fog/FogRenderer;updateBuffer(Ljava/nio/ByteBuffer;ILorg/joml/Vector4f;FFFFFF)V"), index = 5)
11+
private float setupFog(float fogStart) {
1312
return fogStart * ((float) SodiumExtraClientMod.options().renderSettings.fogStart / 100);
1413
}
1514
}

common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/sky/MixinSkyRenderer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.mojang.blaze3d.vertex.PoseStack;
44
import me.flashyreese.mods.sodiumextra.client.SodiumExtraClientMod;
5-
import net.minecraft.client.renderer.FogParameters;
65
import net.minecraft.client.renderer.MultiBufferSource;
76
import net.minecraft.client.renderer.SkyRenderer;
87
import org.spongepowered.asm.mixin.Mixin;
@@ -44,7 +43,7 @@ private void renderMoon(int i, float f, MultiBufferSource multiBufferSource, Pos
4443
}
4544

4645
@Inject(method = "renderStars", at = @At(value = "HEAD"), cancellable = true)
47-
private void renderStars(FogParameters fogParameters, float f, PoseStack poseStack, CallbackInfo ci) {
46+
private void renderStars(float f, PoseStack poseStack, CallbackInfo ci) {
4847
if (!SodiumExtraClientMod.options().detailSettings.stars) {
4948
ci.cancel();
5049
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
accessWidener v1 named
2-
accessible class net/minecraft/client/renderer/FogRenderer$MobEffectFogFunction
1+
accessWidener v1 named

common/src/main/resources/sodium-extra.mixins.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@
1111
"adaptive_sync.MixinWindow",
1212
"animation.MixinSpriteAtlasTexture",
1313
"biome_colors.MixinBiomeColors",
14-
"cloud.MixinDimensionEffectsOverworld",
14+
"cloud.MixinDimensionType",
1515
"compat.MixinSodiumOptionsGUI",
16+
"fog.MixinAtmosphericFogEnvironment",
1617
"fog.MixinFogRenderer",
1718
"fog_falloff.MixinFogRenderer",
1819
"gui.MinecraftClientAccessor",

0 commit comments

Comments
 (0)