Sfoglia il codice sorgente

尝试让铁砧渲染物品,不过很失败

LTCatt 6 anni fa
parent
commit
4c201537e4

+ 29 - 17
src/main/java/com/hexdragon/enchrebirth/block/anvil/AnvilRenderer.java

@@ -1,10 +1,7 @@
 package com.hexdragon.enchrebirth.block.anvil;
 
 import com.mojang.blaze3d.matrix.MatrixStack;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.Blocks;
 import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.BlockRendererDispatcher;
 import net.minecraft.client.renderer.IRenderTypeBuffer;
 import net.minecraft.client.renderer.ItemRenderer;
 import net.minecraft.client.renderer.model.IBakedModel;
@@ -13,25 +10,40 @@ import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
 import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.Items;
-import net.minecraftforge.client.model.data.EmptyModelData;
+import net.minecraft.util.math.vector.Quaternion;
 
+// 渲染铁砧中存储的物品
 public class AnvilRenderer extends TileEntityRenderer<AnvilTileEntity> {
     public AnvilRenderer(TileEntityRendererDispatcher rendererDispatcherIn) { super(rendererDispatcherIn); }
 
     @Override public void render(AnvilTileEntity tileEntityIn, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int combinedLightIn, int combinedOverlayIn) {
-        matrixStackIn.push();
-        matrixStackIn.translate(1, 0, 0);
-        BlockRendererDispatcher blockRenderer = Minecraft.getInstance().getBlockRendererDispatcher();
-        BlockState state = Blocks.CHEST.getDefaultState();
-        blockRenderer.renderBlock(state, matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn, EmptyModelData.INSTANCE);
-        matrixStackIn.pop();
-
-        matrixStackIn.push();
-        matrixStackIn.translate(0, 1, 0);
+        //        matrixStackIn.push();
+        //        matrixStackIn.translate(1, 0, 0);
+        //        BlockRendererDispatcher blockRenderer = Minecraft.getInstance().getBlockRendererDispatcher();
+        //        BlockState state = Blocks.CHEST.getDefaultState();
+        //        blockRenderer.renderBlock(state, matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn, EmptyModelData.INSTANCE);
+        //        matrixStackIn.pop();
         ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer();
-        ItemStack stack = new ItemStack(Items.DIAMOND);
-        IBakedModel ibakedmodel = itemRenderer.getItemModelWithOverrides(stack, tileEntityIn.getWorld(), null);
-        itemRenderer.renderItem(stack, ItemCameraTransforms.TransformType.FIXED, true, matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn, ibakedmodel);
-        matrixStackIn.pop();
+
+        // 渲染左侧的物品
+        ItemStack stackLeft = new ItemStack(Items.DIAMOND); //tileEntityIn.inventory.getStackInSlot(0);
+        if (!stackLeft.isEmpty()) {
+            matrixStackIn.push();
+            matrixStackIn.translate(1, 3, 0);
+            IBakedModel ibakedmodel = itemRenderer.getItemModelWithOverrides(stackLeft, tileEntityIn.getWorld(), null);
+            itemRenderer.renderItem(stackLeft, ItemCameraTransforms.TransformType.FIXED, true, matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn, ibakedmodel);
+            matrixStackIn.pop();
+        }
+
+        // 渲染右侧的物品
+        ItemStack stackRight = new ItemStack(Items.ACACIA_LOG); //tileEntityIn.inventory.getStackInSlot(1);
+        if (!stackRight.isEmpty()) {
+            matrixStackIn.push();
+            matrixStackIn.translate(0, 3, 0);
+            matrixStackIn.rotate(new Quaternion(0, 0, 1, 1));
+            IBakedModel ibakedmodel = itemRenderer.getItemModelWithOverrides(stackRight, tileEntityIn.getWorld(), null);
+            itemRenderer.renderItem(stackRight, ItemCameraTransforms.TransformType.FIXED, true, matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn, ibakedmodel);
+            matrixStackIn.pop();
+        }
     }
 }