Skip to content

Commit a0e90e1

Browse files
Big-Iron-CheemsWide-Cat
authored andcommitted
Re-enable fabric-renderer-indigo module and mixins
Xray tested in singleplayer, seems to work fine in both modes.
1 parent df68cb0 commit a0e90e1

5 files changed

Lines changed: 88 additions & 86 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ dependencies {
8181
modInclude(fabricApi.module("fabric-resource-loader-v1", fapiVersion))
8282

8383
// Compat fixes
84-
// modCompileOnly(fabricApi.module("fabric-renderer-indigo", fapiVersion)) TODO: re-enable when available
84+
modCompileOnly(fabricApi.module("fabric-renderer-indigo", fapiVersion))
8585
modCompileOnly(libs.sodium) { isTransitive = false }
8686
modCompileOnly(libs.lithium) { isTransitive = false }
8787
modCompileOnly(libs.iris) { isTransitive = false }

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
minecraft = "1.21.11"
44
yarn-mappings = "1.21.11+build.3"
55
fabric-loader = "0.18.2"
6-
fabric-api = "0.139.5+1.21.11"
6+
fabric-api = "0.140.0+1.21.11"
77

88
# Plugins
99
# Loom (https://github.com/FabricMC/fabric-loom)
Lines changed: 41 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,41 @@
1-
///*
2-
// * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
3-
// * Copyright (c) Meteor Development.
4-
// */
5-
//
6-
//package meteordevelopment.meteorclient.mixin.indigo;
7-
//
8-
//import meteordevelopment.meteorclient.systems.modules.render.Xray;
9-
//import net.fabricmc.fabric.impl.client.indigo.renderer.mesh.MutableQuadViewImpl;
10-
//import net.fabricmc.fabric.impl.client.indigo.renderer.render.AbstractTerrainRenderContext;
11-
//import net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderInfo;
12-
//import org.spongepowered.asm.mixin.Final;
13-
//import org.spongepowered.asm.mixin.Mixin;
14-
//import org.spongepowered.asm.mixin.Shadow;
15-
//import org.spongepowered.asm.mixin.Unique;
16-
//import org.spongepowered.asm.mixin.injection.At;
17-
//import org.spongepowered.asm.mixin.injection.Inject;
18-
//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
19-
//
20-
//@SuppressWarnings("UnstableApiUsage")
21-
//@Mixin(AbstractTerrainRenderContext.class)
22-
//public abstract class AbstractTerrainRenderContextMixin {
23-
// @Final @Shadow(remap = false)
24-
// protected BlockRenderInfo blockInfo;
25-
//
26-
// @Inject(method = "bufferQuad", at = @At(value = "INVOKE", target = "Lnet/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractTerrainRenderContext;bufferQuad(Lnet/fabricmc/fabric/impl/client/indigo/renderer/mesh/MutableQuadViewImpl;Lnet/minecraft/client/render/VertexConsumer;)V"), cancellable = true)
27-
// private void onBufferQuad(MutableQuadViewImpl quad, CallbackInfo ci) {
28-
// int alpha = Xray.getAlpha(blockInfo.blockState, blockInfo.blockPos);
29-
//
30-
// if (alpha == 0) ci.cancel();
31-
// else if (alpha != -1) {
32-
// for (int i = 0; i < 4; i++) {
33-
// quad.color(i, rewriteQuadAlpha(quad.color(i), alpha));
34-
// }
35-
// }
36-
// }
37-
//
38-
// @Unique
39-
// private int rewriteQuadAlpha(int color, int alpha) {
40-
// return ((alpha & 0xFF) << 24) | (color & 0x00FFFFFF);
41-
// }
42-
//}
1+
/*
2+
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
3+
* Copyright (c) Meteor Development.
4+
*/
5+
6+
package meteordevelopment.meteorclient.mixin.indigo;
7+
8+
import meteordevelopment.meteorclient.systems.modules.render.Xray;
9+
import net.fabricmc.fabric.impl.client.indigo.renderer.mesh.MutableQuadViewImpl;
10+
import net.fabricmc.fabric.impl.client.indigo.renderer.render.AbstractTerrainRenderContext;
11+
import net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderInfo;
12+
import org.spongepowered.asm.mixin.Final;
13+
import org.spongepowered.asm.mixin.Mixin;
14+
import org.spongepowered.asm.mixin.Shadow;
15+
import org.spongepowered.asm.mixin.Unique;
16+
import org.spongepowered.asm.mixin.injection.At;
17+
import org.spongepowered.asm.mixin.injection.Inject;
18+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
19+
20+
@Mixin(AbstractTerrainRenderContext.class)
21+
public abstract class AbstractTerrainRenderContextMixin {
22+
@Final @Shadow(remap = false)
23+
protected BlockRenderInfo blockInfo;
24+
25+
@Inject(method = "bufferQuad", at = @At(value = "INVOKE", target = "Lnet/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractTerrainRenderContext;bufferQuad(Lnet/fabricmc/fabric/impl/client/indigo/renderer/mesh/MutableQuadViewImpl;Lnet/minecraft/client/render/VertexConsumer;)V"), cancellable = true)
26+
private void onBufferQuad(MutableQuadViewImpl quad, CallbackInfo ci) {
27+
int alpha = Xray.getAlpha(blockInfo.blockState, blockInfo.blockPos);
28+
29+
if (alpha == 0) ci.cancel();
30+
else if (alpha != -1) {
31+
for (int i = 0; i < 4; i++) {
32+
quad.color(i, rewriteQuadAlpha(quad.color(i), alpha));
33+
}
34+
}
35+
}
36+
37+
@Unique
38+
private int rewriteQuadAlpha(int color, int alpha) {
39+
return ((alpha & 0xFF) << 24) | (color & 0x00FFFFFF);
40+
}
41+
}
Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,41 @@
1-
///*
2-
// * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
3-
// * Copyright (c) Meteor Development.
4-
// */
5-
//
6-
//package meteordevelopment.meteorclient.mixin.indigo;
7-
//
8-
//import com.llamalad7.mixinextras.injector.ModifyReturnValue;
9-
//import meteordevelopment.meteorclient.systems.modules.Modules;
10-
//import meteordevelopment.meteorclient.systems.modules.render.Xray;
11-
//import net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderInfo;
12-
//import net.minecraft.block.BlockState;
13-
//import net.minecraft.util.math.BlockPos;
14-
//import net.minecraft.util.math.Direction;
15-
//import net.minecraft.world.BlockRenderView;
16-
//import org.spongepowered.asm.mixin.Mixin;
17-
//import org.spongepowered.asm.mixin.Shadow;
18-
//import org.spongepowered.asm.mixin.injection.At;
19-
//
20-
//@Mixin(BlockRenderInfo.class)
21-
//public class BlockRenderInfoMixin {
22-
// @Shadow
23-
// public BlockState blockState;
24-
//
25-
// @Shadow
26-
// public BlockRenderView blockView;
27-
//
28-
// @Shadow
29-
// public BlockPos blockPos;
30-
//
31-
// @ModifyReturnValue(method = "shouldDrawSide", at = @At("RETURN"))
32-
// private boolean modifyShouldDrawSide(boolean original, Direction side) {
33-
// Xray xray = Modules.get().get(Xray.class);
34-
//
35-
// if (xray.isActive()) {
36-
// return xray.modifyDrawSide(blockState, blockView, blockPos, side, original);
37-
// }
38-
//
39-
// return original;
40-
// }
41-
//}
1+
/*
2+
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
3+
* Copyright (c) Meteor Development.
4+
*/
5+
6+
package meteordevelopment.meteorclient.mixin.indigo;
7+
8+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
9+
import meteordevelopment.meteorclient.systems.modules.Modules;
10+
import meteordevelopment.meteorclient.systems.modules.render.Xray;
11+
import net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderInfo;
12+
import net.minecraft.block.BlockState;
13+
import net.minecraft.util.math.BlockPos;
14+
import net.minecraft.util.math.Direction;
15+
import net.minecraft.world.BlockRenderView;
16+
import org.spongepowered.asm.mixin.Mixin;
17+
import org.spongepowered.asm.mixin.Shadow;
18+
import org.spongepowered.asm.mixin.injection.At;
19+
20+
@Mixin(BlockRenderInfo.class)
21+
public abstract class BlockRenderInfoMixin {
22+
@Shadow
23+
public BlockState blockState;
24+
25+
@Shadow
26+
public BlockRenderView blockView;
27+
28+
@Shadow
29+
public BlockPos blockPos;
30+
31+
@ModifyReturnValue(method = "shouldDrawSide", at = @At("RETURN"))
32+
private boolean modifyShouldDrawSide(boolean original, Direction side) {
33+
Xray xray = Modules.get().get(Xray.class);
34+
35+
if (xray.isActive()) {
36+
return xray.modifyDrawSide(blockState, blockView, blockPos, side, original);
37+
}
38+
39+
return original;
40+
}
41+
}

src/main/resources/meteor-client-indigo.mixins.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
"package": "meteordevelopment.meteorclient.mixin.indigo",
44
"compatibilityLevel": "JAVA_21",
55
"plugin": "meteordevelopment.meteorclient.MixinPlugin",
6-
"client": [],
6+
"client": [
7+
"AbstractTerrainRenderContextMixin",
8+
"BlockRenderInfoMixin"
9+
],
710
"injectors": {
811
"defaultRequire": 1
912
}

0 commit comments

Comments
 (0)