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.item.ItemRenderer;
|
||||||
import net.minecraft.client.render.model.json.ModelTransformationMode;
|
import net.minecraft.client.render.model.json.ModelTransformationMode;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
import net.minecraft.component.DataComponentTypes;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.tooltip.TooltipType;
|
import net.minecraft.item.tooltip.TooltipType;
|
||||||
import net.minecraft.screen.ScreenTexts;
|
import net.minecraft.screen.ScreenTexts;
|
||||||
import net.minecraft.text.Text;
|
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 {
|
public class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder {
|
||||||
private static final List<Text> EMPTY_LINES = List.of(ScreenTexts.EMPTY);
|
private static final List<Text> EMPTY_LINES = List.of(ScreenTexts.EMPTY);
|
||||||
|
@ -274,30 +278,43 @@ public class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawItem(DrawContext context, int x, int y) {
|
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();
|
MatrixStack matrices = context.getMatrices();
|
||||||
matrices.push();
|
matrices.push();
|
||||||
matrices.translate(x, y, 100);
|
matrices.translate(x + 8, y + 8, 150);
|
||||||
matrices.translate(8, 8, 0);
|
|
||||||
matrices.scale(1, -1, 1);
|
|
||||||
matrices.scale(8, 8, 8);
|
|
||||||
VertexConsumerProvider.Immediate immediate = context.getVertexConsumers();
|
|
||||||
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();
|
|
||||||
|
|
||||||
RenderSystem.enableDepthTest();
|
try {
|
||||||
if (bl) {
|
matrices.scale(16, -16, 16);
|
||||||
DiffuseLighting.enableGuiDepthLighting();
|
|
||||||
|
boolean bl = !model.isSideLit();
|
||||||
|
if (bl) {
|
||||||
|
DiffuseLighting.disableGuiDepthLighting();
|
||||||
|
}
|
||||||
|
|
||||||
|
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();
|
matrices.pop();
|
||||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||||
|
|
Loading…
Reference in a new issue