|
@@ -0,0 +1,49 @@
|
|
|
|
|
+package com.hexdragon.corere.renderer;
|
|
|
|
|
+import com.mojang.blaze3d.matrix.MatrixStack;
|
|
|
|
|
+import com.mojang.blaze3d.platform.GlStateManager;
|
|
|
|
|
+import com.mojang.blaze3d.systems.RenderSystem;
|
|
|
|
|
+import net.minecraft.client.Minecraft;
|
|
|
|
|
+import net.minecraft.client.renderer.IRenderTypeBuffer;
|
|
|
|
|
+import net.minecraft.client.renderer.ItemRenderer;
|
|
|
|
|
+import net.minecraft.client.renderer.RenderHelper;
|
|
|
|
|
+import net.minecraft.client.renderer.model.IBakedModel;
|
|
|
|
|
+import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
|
|
|
|
+import net.minecraft.client.renderer.texture.AtlasTexture;
|
|
|
|
|
+import net.minecraft.client.renderer.texture.OverlayTexture;
|
|
|
|
|
+import net.minecraft.item.ItemStack;
|
|
|
|
|
+
|
|
|
|
|
+public class ItemRendererRe {
|
|
|
|
|
+
|
|
|
|
|
+ // 将缩放后的 ItemStack 渲染进 GUI
|
|
|
|
|
+ public static void renderItemModelIntoGUIScaled(ItemRenderer renderer, ItemStack stack, int x, int y, int size) {
|
|
|
|
|
+ // 获取相关参数
|
|
|
|
|
+ Minecraft minecraft = Minecraft.getInstance();
|
|
|
|
|
+ IBakedModel bakedmodel = renderer.getItemModelWithOverrides(stack, null, minecraft.player);
|
|
|
|
|
+ // 以下代码来自 ItemRenderer.renderItemModelIntoGUI
|
|
|
|
|
+ RenderSystem.pushMatrix();
|
|
|
|
|
+ minecraft.textureManager.bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
|
|
|
|
+ minecraft.textureManager.getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE).setBlurMipmapDirect(false, false);
|
|
|
|
|
+ RenderSystem.enableRescaleNormal();
|
|
|
|
|
+ RenderSystem.enableAlphaTest();
|
|
|
|
|
+ RenderSystem.defaultAlphaFunc();
|
|
|
|
|
+ RenderSystem.enableBlend();
|
|
|
|
|
+ RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
|
|
|
|
|
+ RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
|
|
|
|
+ RenderSystem.translatef((float) x, (float) y, 200.0F);
|
|
|
|
|
+ RenderSystem.translatef(8.0F, 8.0F, 0.0F);
|
|
|
|
|
+ RenderSystem.scalef(1.0F, -1.0F, 1.0F);
|
|
|
|
|
+ RenderSystem.scalef(size, size, size); // 主要就改了这句
|
|
|
|
|
+ MatrixStack matrixstack = new MatrixStack();
|
|
|
|
|
+ IRenderTypeBuffer.Impl irendertypebuffer$impl = Minecraft.getInstance().getRenderTypeBuffers().getBufferSource();
|
|
|
|
|
+ boolean flag = !bakedmodel.isSideLit();
|
|
|
|
|
+ if (flag) RenderHelper.setupGuiFlatDiffuseLighting();
|
|
|
|
|
+ renderer.renderItem(stack, ItemCameraTransforms.TransformType.GUI, false, matrixstack, irendertypebuffer$impl, 15728880, OverlayTexture.NO_OVERLAY, bakedmodel);
|
|
|
|
|
+ irendertypebuffer$impl.finish();
|
|
|
|
|
+ RenderSystem.enableDepthTest();
|
|
|
|
|
+ if (flag) RenderHelper.setupGui3DDiffuseLighting();
|
|
|
|
|
+ RenderSystem.disableAlphaTest();
|
|
|
|
|
+ RenderSystem.disableRescaleNormal();
|
|
|
|
|
+ RenderSystem.popMatrix();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|