Skip to content

Commit

Permalink
Support for Sodium
Browse files Browse the repository at this point in the history
* [Sodium] Fix leaf colours being to bright
* [Sodium] Leaves won't turn snowy
  • Loading branch information
StartsMercury committed Nov 10, 2024
1 parent 965cd5d commit 2b71a3c
Show file tree
Hide file tree
Showing 11 changed files with 87 additions and 30 deletions.
12 changes: 12 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,24 @@ loom {
}
}

repositories {
maven {
name = "Modrinth Maven"
url = uri("https://api.modrinth.com/maven")
content {
includeGroup("maven.modrinth")
}
}
}

dependencies {
minecraft("com.mojang:minecraft:${Constants.VERSION_MINECRAFT}")
mappings(loom.officialMojangMappings())
modImplementation("net.fabricmc:fabric-loader:0.16.9")

modImplementation(fabricApi.module("fabric-resource-loader-v0", "0.92.2+1.20.1"))

modCompileOnly("maven.modrinth:sodium:mc1.20.1-0.5.11")
}

tasks.withType<ProcessResources> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.startsmercury.visual_snowy_leaves.mixin.client;
package io.github.startsmercury.visual_snowy_leaves.mixin.client.minecraft;

import net.minecraft.client.color.block.BlockColor;
import net.minecraft.client.color.block.BlockColors;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.startsmercury.visual_snowy_leaves.mixin.client;
package io.github.startsmercury.visual_snowy_leaves.mixin.client.minecraft;

import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
Expand All @@ -8,7 +8,6 @@
import io.github.startsmercury.visual_snowy_leaves.impl.client.ModelBakeryExtension;
import io.github.startsmercury.visual_snowy_leaves.impl.client.MultipliedBlockColor;
import io.github.startsmercury.visual_snowy_leaves.impl.client.VisualSnowyLeavesImpl;
import net.minecraft.client.color.block.BlockColor;
import net.minecraft.client.color.block.BlockColors;
import net.minecraft.client.renderer.block.model.BlockModel;
import net.minecraft.client.renderer.block.model.BlockModelDefinition;
Expand All @@ -19,7 +18,6 @@
import net.minecraft.client.resources.model.AtlasSet;
import net.minecraft.client.resources.model.Material;
import net.minecraft.client.resources.model.ModelBakery;
import net.minecraft.core.IdMapper;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.FastColor;
Expand Down Expand Up @@ -92,17 +90,14 @@ private void captureModels(

@Override
public void visual_snowy_leaves$modifySprites(final AtlasSet.StitchResult atlas) {
final var blockColors = ((BlockColorsAccessor) this.blockColors).getBlockColors();

for (final var block : this.visual_snowy_leaves$models.keySet()) {
visual_snowy_leaves$modifySpritesOf(atlas, blockColors, block);
visual_snowy_leaves$modifySpritesOf(atlas, block);
}
}

@Unique
private void visual_snowy_leaves$modifySpritesOf(
final AtlasSet.StitchResult atlas,
final IdMapper<BlockColor> blockColors,
final ResourceLocation block
) {
final var contentsCollection = Set.copyOf(this.visual_snowy_leaves$models.get(block))
Expand Down Expand Up @@ -146,12 +141,15 @@ private void captureModels(
);

final var id = BuiltInRegistries.BLOCK.getId(BuiltInRegistries.BLOCK.get(block));
final var blockColor = blockColors.byId(id);
final var blockColor = ((BlockColorsAccessor) this.blockColors).getBlockColors().byId(id);
if (blockColor == null) {
return;
}

blockColors.addMapping(MultipliedBlockColor.setMultiplier(blockColor, _rgbMultiplier), id);
this.blockColors.register(
MultipliedBlockColor.setMultiplier(blockColor, _rgbMultiplier),
BuiltInRegistries.BLOCK.get(block)
);
}

@Unique
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.startsmercury.visual_snowy_leaves.mixin.client;
package io.github.startsmercury.visual_snowy_leaves.mixin.client.minecraft;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.startsmercury.visual_snowy_leaves.mixin.client;
package io.github.startsmercury.visual_snowy_leaves.mixin.client.minecraft;

import com.llamalad7.mixinextras.sugar.Local;
import io.github.startsmercury.visual_snowy_leaves.impl.client.ModelBakeryExtension;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.startsmercury.visual_snowy_leaves.mixin.client;
package io.github.startsmercury.visual_snowy_leaves.mixin.client.minecraft;

import net.minecraft.client.renderer.chunk.RenderChunkRegion;
import net.minecraft.world.level.Level;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.startsmercury.visual_snowy_leaves.mixin.client;
package io.github.startsmercury.visual_snowy_leaves.mixin.client.minecraft;

import com.mojang.blaze3d.platform.NativeImage;
import net.minecraft.client.renderer.texture.SpriteContents;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.startsmercury.visual_snowy_leaves.mixin.client;
package io.github.startsmercury.visual_snowy_leaves.mixin.client.minecraft;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package io.github.startsmercury.visual_snowy_leaves.mixin.client.sodium;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;
import io.github.startsmercury.visual_snowy_leaves.impl.client.VisualSnowyLeavesImpl;
import me.jellysquid.mods.sodium.client.model.color.ColorProvider;
import me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderContext;
import me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer;
import net.minecraft.world.level.block.state.BlockState;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(BlockRenderer.class)
public class BlockRendererMixin {
@ModifyExpressionValue(
method = "getVertexColors",
at = @At(
value = "INVOKE",
target = "Lme/jellysquid/mods/sodium/client/model/quad/BakedQuadView;hasColor()Z"
),
remap = false
)
private boolean modifyColor(
final boolean original,
final @Local(ordinal = 0, argsOnly = true) BlockRenderContext ctx,
final @Local(ordinal = 0, argsOnly = true) ColorProvider<BlockState> provider
) {
final var blockPos = ctx.pos();
final var blockState = ctx.state();
final var world = ((WorldSliceAccessor) (Object) ctx.world()).getWorld();
return !VisualSnowyLeavesImpl.isSnowyAt(world, blockState, blockPos);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package io.github.startsmercury.visual_snowy_leaves.mixin.client.sodium;

import me.jellysquid.mods.sodium.client.world.WorldSlice;
import net.minecraft.client.multiplayer.ClientLevel;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(WorldSlice.class)
public interface WorldSliceAccessor {
@Accessor
ClientLevel getWorld();
}
32 changes: 17 additions & 15 deletions src/client/resources/visual-snowy-leaves.mixins.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
{
"required": true,
"package": "io.github.startsmercury.visual_snowy_leaves.mixin.client",
"compatibilityLevel": "JAVA_17",
"client": [
"BlockColorsAccessor",
"ModelBakeryMixin",
"ModelBlockRendererMixin",
"ModelManagerMixin",
"RenderChunkRegionAccessor",
"SpriteContentsAccessor",
"TerrainParticleMixin"
],
"injectors": {
"defaultRequire": 1
}
"required": true,
"package": "io.github.startsmercury.visual_snowy_leaves.mixin.client",
"compatibilityLevel": "JAVA_17",
"client": [
"minecraft.BlockColorsAccessor",
"minecraft.ModelBakeryMixin",
"minecraft.ModelBlockRendererMixin",
"minecraft.ModelManagerMixin",
"minecraft.RenderChunkRegionAccessor",
"minecraft.SpriteContentsAccessor",
"minecraft.TerrainParticleMixin",
"sodium.BlockRendererMixin",
"sodium.WorldSliceAccessor"
],
"injectors": {
"defaultRequire": 1
}
}

0 comments on commit 2b71a3c

Please sign in to comment.