Defer Indigo item rendering ()

- Move ItemRenderer injection point from head to before isBuiltin check to allow model replacement to run
This commit is contained in:
PepperCode1 2022-06-19 11:18:26 -07:00 committed by modmuss50
parent c85f2e3889
commit 0ca3bd2b78
2 changed files with 3 additions and 7 deletions
fabric-renderer-indigo/src/main/java/net/fabricmc/fabric
impl/client/indigo/renderer/render
mixin/client/indigo/renderer

View file

@ -106,16 +106,11 @@ public class ItemRenderContext extends AbstractRenderContext {
this.vanillaHandler = vanillaHandler;
computeOutputInfo();
matrixStack.push();
model.getTransformation().getTransformation(transformMode).apply(invert, matrixStack);
matrixStack.translate(-0.5D, -0.5D, -0.5D);
matrix = matrixStack.peek().getPositionMatrix();
normalMatrix = matrixStack.peek().getNormalMatrix();
((FabricBakedModel) model).emitItemQuads(itemStack, randomSupplier, this);
matrixStack.pop();
this.itemStack = null;
this.matrixStack = null;
this.vanillaHandler = null;

View file

@ -52,10 +52,11 @@ public abstract class MixinItemRenderer implements AccessItemRenderer {
@Shadow
protected abstract void renderBakedItemModel(BakedModel model, ItemStack stack, int light, int overlay, MatrixStack matrixStack, VertexConsumer buffer);
@Inject(at = @At("HEAD"), method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformation$Mode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", cancellable = true)
@Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/model/BakedModel;isBuiltin()Z"), method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformation$Mode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;)V", cancellable = true)
public void hook_renderItem(ItemStack stack, ModelTransformation.Mode transformMode, boolean invert, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, int overlay, BakedModel model, CallbackInfo ci) {
if (!stack.isEmpty() && !((FabricBakedModel) model).isVanillaAdapter()) {
if (!((FabricBakedModel) model).isVanillaAdapter()) {
fabric_contexts.get().renderModel(stack, transformMode, invert, matrixStack, vertexConsumerProvider, light, overlay, model, fabric_vanillaHandler);
matrixStack.pop();
ci.cancel();
}
}