From 144f0c0576c1a0ac1204ec5970a133ebc44eaa02 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 21 Dec 2019 15:54:06 +0800 Subject: 3.2.28 --- .../java/me/shedaniel/rei/impl/ItemEntryStack.java | 73 +++++++++++++++++----- 1 file changed, 58 insertions(+), 15 deletions(-) (limited to 'src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java') diff --git a/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java b/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java index 87fd2daab..ab8d0a498 100644 --- a/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java +++ b/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java @@ -6,21 +6,28 @@ package me.shedaniel.rei.impl; import com.google.common.collect.Lists; +import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.math.api.Rectangle; -import me.shedaniel.rei.api.ClientHelper; -import me.shedaniel.rei.api.ConfigObject; -import me.shedaniel.rei.api.EntryStack; -import me.shedaniel.rei.api.ItemStackRenderOverlayHook; +import me.shedaniel.rei.api.*; import me.shedaniel.rei.gui.widget.QueuedTooltip; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.*; +import net.minecraft.client.render.item.BuiltinModelItemRenderer; import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.texture.SpriteAtlasTexture; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import javax.annotation.Nullable; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; @Deprecated @@ -60,7 +67,7 @@ public class ItemEntryStack extends AbstractEntryStack { @Override public EntryStack copy() { EntryStack stack = EntryStack.create(getItemStack().copy()); - for (Map.Entry entry : getSettings().entrySet()) { + for(Map.Entry entry : getSettings().entrySet()) { stack.setting(entry.getKey(), entry.getValue()); } return stack; @@ -125,7 +132,7 @@ public class ItemEntryStack extends AbstractEntryStack { if (getSetting(Settings.TOOLTIP_APPEND_MOD).value().get() && ConfigObject.getInstance().shouldAppendModNames()) { final String modString = ClientHelper.getInstance().getFormattedModFromItem(getItem()); boolean alreadyHasMod = false; - for (String s : toolTip) + for(String s : toolTip) if (s.equalsIgnoreCase(modString)) { alreadyHasMod = true; break; @@ -140,15 +147,51 @@ public class ItemEntryStack extends AbstractEntryStack { public void render(Rectangle bounds, int mouseX, int mouseY, float delta) { if (!isEmpty() && getSetting(Settings.RENDER).value().get()) { ItemStack stack = getItemStack(); - ((ItemStackRenderOverlayHook) (Object) stack).rei_setRenderEnchantmentGlint(getSetting(Settings.Item.RENDER_ENCHANTMENT_GLINT).value().get()); - ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); - itemRenderer.zOffset = getZ(); - int i1 = bounds.getCenterX() - 8; - int i2 = bounds.getCenterY() - 8; - itemRenderer.renderGuiItemIcon(stack, i1, i2); - itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, stack, i1, i2, getSetting(Settings.RENDER_COUNTS).value().get() ? getSetting(Settings.COUNTS).value().apply(this) : ""); - itemRenderer.zOffset = 0.0F; - ((ItemStackRenderOverlayHook) (Object) stack).rei_setRenderEnchantmentGlint(true); + if (ConfigObject.getInstance().doesFastEntryRendering()) { + ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + BakedModel model = itemRenderer.getModels().getModel(stack); + if (stack.getItem().hasPropertyGetters()) + model = model.getItemPropertyOverrides().apply(model, stack, null, null); + if (model != null) { + GlStateManager.pushMatrix(); + MinecraftClient.getInstance().getTextureManager().bindTexture(SpriteAtlasTexture.BLOCK_ATLAS_TEX); + GlStateManager.enableRescaleNormal(); + GlStateManager.translatef(bounds.getCenterX(), bounds.getCenterY(), 100.0F + getZ()); + GlStateManager.scalef(16.0F, -16.0F, 16.0F); + MatrixStack matrices = new MatrixStack(); + VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); + Item item = stack.getItem(); + boolean bl = !model.hasDepthInGui() || item == Items.SHIELD || item == Items.TRIDENT; + if (bl) + GlStateManager.method_24221(); + model.getTransformation().getTransformation(ModelTransformation.Type.GUI).apply(false, matrices); + matrices.translate(-0.5D, -0.5D, -0.5D); + if (!model.isBuiltin()) { + RenderLayer renderLayer = RenderLayers.getItemLayer(stack); + if (Objects.equals(renderLayer, TexturedRenderLayers.getEntityTranslucent())) + renderLayer = TexturedRenderLayers.getEntityTranslucentCull(); + VertexConsumer vertexConsumer = stack.hasEnchantmentGlint() && getSetting(Settings.Item.RENDER_ENCHANTMENT_GLINT).value().get() ? VertexConsumers.dual(immediate.getBuffer(RenderLayer.getGlint()), immediate.getBuffer(renderLayer)) : immediate.getBuffer(renderLayer); + ((ItemRendererHooks) itemRenderer).rei_renderBakedItemModel(model, stack, 15728880, OverlayTexture.DEFAULT_UV, matrices, vertexConsumer); + } else { + BuiltinModelItemRenderer.INSTANCE.render(stack, matrices, immediate, 15728880, OverlayTexture.DEFAULT_UV); + } + immediate.draw(); + if (bl) + GlStateManager.method_24222(); + GlStateManager.disableRescaleNormal(); + GlStateManager.popMatrix(); + } + } else { + ((ItemStackHook) (Object) stack).rei_setRenderEnchantmentGlint(getSetting(Settings.Item.RENDER_ENCHANTMENT_GLINT).value().get()); + ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + itemRenderer.zOffset = getZ(); + int i1 = bounds.getCenterX() - 8; + int i2 = bounds.getCenterY() - 8; + itemRenderer.renderGuiItemIcon(stack, i1, i2); + itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, stack, i1, i2, getSetting(Settings.RENDER_COUNTS).value().get() ? getSetting(Settings.COUNTS).value().apply(this) : ""); + itemRenderer.zOffset = 0.0F; + ((ItemStackHook) (Object) stack).rei_setRenderEnchantmentGlint(true); + } } } } -- cgit