Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ dependencies {
modInclude(fabricApi.module("fabric-resource-loader-v1", fapiVersion))

// Compat fixes
// modCompileOnly(fabricApi.module("fabric-renderer-indigo", fapiVersion)) TODO: re-enable when available
modCompileOnly(fabricApi.module("fabric-renderer-indigo", fapiVersion))
modCompileOnly(libs.sodium) { isTransitive = false }
modCompileOnly(libs.lithium) { isTransitive = false }
modCompileOnly(libs.iris) { isTransitive = false }
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
minecraft = "1.21.11"
yarn-mappings = "1.21.11+build.3"
fabric-loader = "0.18.2"
fabric-api = "0.139.5+1.21.11"
fabric-api = "0.140.0+1.21.11"

# Plugins
# Loom (https://github.com/FabricMC/fabric-loom)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,42 +1,41 @@
///*
// * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
// * Copyright (c) Meteor Development.
// */
//
//package meteordevelopment.meteorclient.mixin.indigo;
//
//import meteordevelopment.meteorclient.systems.modules.render.Xray;
//import net.fabricmc.fabric.impl.client.indigo.renderer.mesh.MutableQuadViewImpl;
//import net.fabricmc.fabric.impl.client.indigo.renderer.render.AbstractTerrainRenderContext;
//import net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderInfo;
//import org.spongepowered.asm.mixin.Final;
//import org.spongepowered.asm.mixin.Mixin;
//import org.spongepowered.asm.mixin.Shadow;
//import org.spongepowered.asm.mixin.Unique;
//import org.spongepowered.asm.mixin.injection.At;
//import org.spongepowered.asm.mixin.injection.Inject;
//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//
//@SuppressWarnings("UnstableApiUsage")
//@Mixin(AbstractTerrainRenderContext.class)
//public abstract class AbstractTerrainRenderContextMixin {
// @Final @Shadow(remap = false)
// protected BlockRenderInfo blockInfo;
//
// @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)
// private void onBufferQuad(MutableQuadViewImpl quad, CallbackInfo ci) {
// int alpha = Xray.getAlpha(blockInfo.blockState, blockInfo.blockPos);
//
// if (alpha == 0) ci.cancel();
// else if (alpha != -1) {
// for (int i = 0; i < 4; i++) {
// quad.color(i, rewriteQuadAlpha(quad.color(i), alpha));
// }
// }
// }
//
// @Unique
// private int rewriteQuadAlpha(int color, int alpha) {
// return ((alpha & 0xFF) << 24) | (color & 0x00FFFFFF);
// }
//}
/*
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
* Copyright (c) Meteor Development.
*/

package meteordevelopment.meteorclient.mixin.indigo;

import meteordevelopment.meteorclient.systems.modules.render.Xray;
import net.fabricmc.fabric.impl.client.indigo.renderer.mesh.MutableQuadViewImpl;
import net.fabricmc.fabric.impl.client.indigo.renderer.render.AbstractTerrainRenderContext;
import net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderInfo;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(AbstractTerrainRenderContext.class)
public abstract class AbstractTerrainRenderContextMixin {
@Final @Shadow(remap = false)
protected BlockRenderInfo blockInfo;

@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)
private void onBufferQuad(MutableQuadViewImpl quad, CallbackInfo ci) {
int alpha = Xray.getAlpha(blockInfo.blockState, blockInfo.blockPos);

if (alpha == 0) ci.cancel();
else if (alpha != -1) {
for (int i = 0; i < 4; i++) {
quad.color(i, rewriteQuadAlpha(quad.color(i), alpha));
}
}
}

@Unique
private int rewriteQuadAlpha(int color, int alpha) {
return ((alpha & 0xFF) << 24) | (color & 0x00FFFFFF);
}
}
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
///*
// * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
// * Copyright (c) Meteor Development.
// */
//
//package meteordevelopment.meteorclient.mixin.indigo;
//
//import com.llamalad7.mixinextras.injector.ModifyReturnValue;
//import meteordevelopment.meteorclient.systems.modules.Modules;
//import meteordevelopment.meteorclient.systems.modules.render.Xray;
//import net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderInfo;
//import net.minecraft.block.BlockState;
//import net.minecraft.util.math.BlockPos;
//import net.minecraft.util.math.Direction;
//import net.minecraft.world.BlockRenderView;
//import org.spongepowered.asm.mixin.Mixin;
//import org.spongepowered.asm.mixin.Shadow;
//import org.spongepowered.asm.mixin.injection.At;
//
//@Mixin(BlockRenderInfo.class)
//public class BlockRenderInfoMixin {
// @Shadow
// public BlockState blockState;
//
// @Shadow
// public BlockRenderView blockView;
//
// @Shadow
// public BlockPos blockPos;
//
// @ModifyReturnValue(method = "shouldDrawSide", at = @At("RETURN"))
// private boolean modifyShouldDrawSide(boolean original, Direction side) {
// Xray xray = Modules.get().get(Xray.class);
//
// if (xray.isActive()) {
// return xray.modifyDrawSide(blockState, blockView, blockPos, side, original);
// }
//
// return original;
// }
//}
/*
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
* Copyright (c) Meteor Development.
*/

package meteordevelopment.meteorclient.mixin.indigo;

import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.render.Xray;
import net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderInfo;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.BlockRenderView;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(BlockRenderInfo.class)
public abstract class BlockRenderInfoMixin {
@Shadow
public BlockState blockState;

@Shadow
public BlockRenderView blockView;

@Shadow
public BlockPos blockPos;

@ModifyReturnValue(method = "shouldDrawSide", at = @At("RETURN"))
private boolean modifyShouldDrawSide(boolean original, Direction side) {
Xray xray = Modules.get().get(Xray.class);

if (xray.isActive()) {
return xray.modifyDrawSide(blockState, blockView, blockPos, side, original);
}

return original;
}
}
5 changes: 4 additions & 1 deletion src/main/resources/meteor-client-indigo.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
"package": "meteordevelopment.meteorclient.mixin.indigo",
"compatibilityLevel": "JAVA_21",
"plugin": "meteordevelopment.meteorclient.MixinPlugin",
"client": [],
"client": [
"AbstractTerrainRenderContextMixin",
"BlockRenderInfoMixin"
],
"injectors": {
"defaultRequire": 1
}
Expand Down