Fixed Leaves option

This commit is contained in:
Bogdan committed 2023-09-04 11:08:55 +03:00
1 parent 96981494a4
commit 435fd63cf5
1 file changed
+18 -10
@@ -6,15 +6,15 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.LeavesBlock;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.option.GraphicsMode;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.RenderLayers;
import net.minecraft.fluid.Fluid;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.Map;
@@ -36,11 +36,19 @@ public class MixinRenderLayers {
BLOCKS = new Reference2ReferenceOpenHashMap<>(BLOCKS);
FLUIDS = new Reference2ReferenceOpenHashMap<>(FLUIDS);
}
@Inject(method = "getBlockLayer(Lnet/minecraft/block/BlockState;)Lnet/minecraft/client/render/RenderLayer;", at = @At(value = "RETURN"), cancellable = true)
private static void redirectLeavesGraphics(BlockState state, CallbackInfoReturnable<RenderLayer> cir) {
if (state.getBlock() instanceof LeavesBlock) {
boolean fancyLeaves = SodiumClientMod.options().quality.leavesQuality.isFancy(MinecraftClient.getInstance().options.graphicsMode);
cir.setReturnValue(fancyLeaves ? RenderLayer.getCutoutMipped() : RenderLayer.getSolid());
}
@Unique
private static boolean leavesFancy;
@Redirect(
method = { "getBlockLayer", "getMovingBlockLayer", "canRenderInLayer" },
at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/RenderLayers;fancyGraphicsOrBetter:Z"))
private static boolean redirectLeavesShouldBeFancy() {
return leavesFancy;
}
@Inject(method = "setFancyGraphicsOrBetter", at = @At("RETURN"))
private static void onSetFancyGraphicsOrBetter(boolean fancyGraphicsOrBetter, CallbackInfo ci) {
leavesFancy = SodiumClientMod.options().quality.leavesQuality.isFancy(fancyGraphicsOrBetter ? GraphicsMode.FANCY : GraphicsMode.FAST);
}
}