TerraFirmaCraft

TerraFirmaCraft

2M Downloads

Rubidium breaks custom sky colors

alcatrazEscapee opened this issue ยท 1 comments

commented

Brief description from discord:

The strangest thing is when I tp I first see the skycolour blue and then it shades up to the turqoise again eveytime. I wonder if the issue is on my end.
Just confirmed it's TFC with out shaders. When you tp somewhere you can see it happen. It would be cool if it kept those first shades you see for a couple seconds bfore going straight to that same really light teal.
Yes confirmed it was Rubidium and Oculus . TFC perfect. Gonna re work shader set up.
Yup it's Rubidium. It's gotta go. No option I see to change it. I only need to get sildurs going on. Optifine didn't work but I'll keep working.

commented

Caused by Rubidium's MixinClientWorld as part of fast_biome_colors feature, here:

Link

    @Redirect(method = "getSkyColor", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/CubicSampler;sampleColor(Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/CubicSampler$RgbFetcher;)Lnet/minecraft/util/math/Vec3d;"))
    private Vec3d redirectSampleColor(Vec3d pos, CubicSampler.RgbFetcher rgbFetcher) {
        World world = (World) (Object) this;

        return FastCubicSampler.sampleColor(pos, (x, y, z) -> world.getBiomeForNoiseGen(x, y, z).value().getSkyColor(), Function.identity());
    }

Rubidium comments out / disables the API which allows other mods to enable/disable certain mixin features, and does not provide an alternative. (filed an issue Rubidium#393, likely to go nowhere.)

In theory, it's possible for the user to disable this themselves, by adding:

mixin.features.fast_biome_colors=false

to .minecraft/config/rubidium-mixins.properties.

... except this crashes.

... so that's filed as an issue to Sodium (Sodium#1577), as that still occurs on 1.19.3 on Fabric. And that's really the only hope of this getting fixed upstream.


So where does that leave us? We can't get Rubidium to disable this mixin, we can't get ask users to disable it themselves, and it requires a whole lot of invasive mixins to stop Rubidium from overwriting ours that I'm not sure we even want to do because it's a whole lot of invasive mixins that are basically designed to conflict and win.

Which, notably, may crash in it's own right because Rubidium has defaultRequire set to 1 in their mixins.json