aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2019-12-21 15:54:06 +0800
committershedaniel <daniel@shedaniel.me>2019-12-21 15:54:06 +0800
commit144f0c0576c1a0ac1204ec5970a133ebc44eaa02 (patch)
tree083913b3ffc1fd4416604b63f67f3ede3d1f1ce8 /src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java
parent2d065ca9272ce28c9d4342cd127184b46881ce2e (diff)
downloadRoughlyEnoughItems-144f0c0576c1a0ac1204ec5970a133ebc44eaa02.tar.gz
RoughlyEnoughItems-144f0c0576c1a0ac1204ec5970a133ebc44eaa02.tar.bz2
RoughlyEnoughItems-144f0c0576c1a0ac1204ec5970a133ebc44eaa02.zip
3.2.28
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/ItemEntryStack.java73
1 files changed, 58 insertions, 15 deletions
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<Settings, Object> entry : getSettings().entrySet()) {
+ for(Map.Entry<Settings, Object> 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);
+ }
}
}
}