mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-21 20:33:10 +01:00
Fix crash rendering hidden item stacks
This commit is contained in:
parent
449862ca7e
commit
b9e878fb63
1 changed files with 37 additions and 20 deletions
|
@ -22,11 +22,15 @@ import com.minelittlepony.unicopia.container.SpellbookState;
|
|||
import net.minecraft.client.render.item.ItemRenderer;
|
||||
import net.minecraft.client.render.model.json.ModelTransformationMode;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.component.DataComponentTypes;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.tooltip.TooltipType;
|
||||
import net.minecraft.screen.ScreenTexts;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Util;
|
||||
import net.minecraft.util.crash.CrashException;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
|
||||
public class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder {
|
||||
private static final List<Text> EMPTY_LINES = List.of(ScreenTexts.EMPTY);
|
||||
|
@ -274,31 +278,44 @@ public class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder {
|
|||
|
||||
@Override
|
||||
protected void drawItem(DrawContext context, int x, int y) {
|
||||
var model = itemRenderer.getModel(stack, null, null, 0);
|
||||
if (stack.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
var model = itemRenderer.getModel(stack, MinecraftClient.getInstance().world, MinecraftClient.getInstance().player, 0);
|
||||
|
||||
MatrixStack matrices = context.getMatrices();
|
||||
matrices.push();
|
||||
matrices.translate(x, y, 100);
|
||||
matrices.translate(8, 8, 0);
|
||||
matrices.scale(1, -1, 1);
|
||||
matrices.scale(8, 8, 8);
|
||||
VertexConsumerProvider.Immediate immediate = context.getVertexConsumers();
|
||||
matrices.translate(x + 8, y + 8, 150);
|
||||
|
||||
try {
|
||||
matrices.scale(16, -16, 16);
|
||||
|
||||
boolean bl = !model.isSideLit();
|
||||
if (bl) {
|
||||
DiffuseLighting.disableGuiDepthLighting();
|
||||
}
|
||||
RenderSystem.disableDepthTest();
|
||||
itemRenderer.renderItem(stack, ModelTransformationMode.GUI, false, matrices, layer -> {
|
||||
return immediate.getBuffer(RenderLayerUtil.getTexture(layer).map(texture -> {
|
||||
return RenderLayers.getMagicColored(texture, 0x09000000);
|
||||
}).orElse(RenderLayers.getMagicColored(0x09000000)));
|
||||
}, 0, OverlayTexture.DEFAULT_UV, model);
|
||||
immediate.draw();
|
||||
|
||||
VertexConsumerProvider.Immediate immediate = context.getVertexConsumers();
|
||||
stack.set(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, false);
|
||||
itemRenderer.renderItem(stack, ModelTransformationMode.GUI, false, matrices, layer -> {
|
||||
return immediate.getBuffer(RenderLayerUtil.getTexture(layer)
|
||||
.map(texture -> RenderLayers.getMagicColored(texture, 0x09000000))
|
||||
.orElse(RenderLayers.getMagicColored(0x09000000)));
|
||||
}, 0, OverlayTexture.DEFAULT_UV, model);
|
||||
|
||||
RenderSystem.disableDepthTest();
|
||||
context.draw();
|
||||
RenderSystem.enableDepthTest();
|
||||
|
||||
if (bl) {
|
||||
DiffuseLighting.enableGuiDepthLighting();
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
throw new CrashException(Util.make(CrashReport.create(t, "Rendering item"), report -> report.addElement("Item being rendered")
|
||||
.add("Item Type", () -> String.valueOf(stack.getItem()))
|
||||
.add("Item Components", () -> String.valueOf(stack.getComponents()))
|
||||
.add("Item Foil", () -> String.valueOf(stack.hasGlint()))));
|
||||
}
|
||||
matrices.pop();
|
||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue