怎样在TileEntityRenderer中使用ModelRenderer渲染模型

宏楼


版本信息
你使用的系统:win10
你使用的IDE:IntelliJ IDEA
你使用的IDE版本:2020.1.2
Forge版本: 31.2.5
Minecraft版本: 1.15.2

出错图


错误情况简述
我想在TER中渲染一个长方体模型,模型可以显示,但贴图始终没有显示,模型是中间的那个黑色的。

**相关代码**
    private final ModelRenderer strainer;
    ......
    @Override
    public void render(WaterFilterUpTile tileEntityIn, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int combinedLightIn, int combinedOverlayIn) {
        matrixStackIn.push();
        //Render strainer
        tileEntityIn.getStrainer().ifPresent(itemStackHandler -> {
            if (!itemStackHandler.getStackInSlot(0).isEmpty() && itemStackHandler.getStackInSlot(0).getItem() instanceof StrainerItem){
                Material material = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation(WaterSource.MODID,"entity/strainer/primitive_strainer"));
                IVertexBuilder ivertexbuilder = material.getBuffer(bufferIn, RenderType::getEntityCutoutNoCull);
                this.strainer.render(matrixStackIn, ivertexbuilder, combinedLightIn, combinedOverlayIn);

            }
        });
    }
    @SubscribeEvent
    public static void onTextureStitch(TextureStitchEvent.Pre event) {
        if (!event.getMap().getTextureLocation().equals(AtlasTexture.LOCATION_BLOCKS_TEXTURE)) {
            return;
        }
        event.addSprite(new ResourceLocation(WaterSource.MODID,"entity/strainer/primitive_strainer"));
    }

FledgeXu


你的代码看上去有点奇怪。这里的Material是什么?


宏楼


net.minecraft.client.renderer.model.Material


FledgeXu


你想渲染的是什么东西?一个物品还是一个方块?
你这个渲染的方式有点「不同寻常」。


宏楼


我想渲染的东西是一个ModelRenderer模型,我参考的是原版箱子和海洋之心的渲染方式。ChestTileEntityRenderer和ConduitTileEntityRenderer


FledgeXu


让我想想。


FledgeXu


你在这里把.png加上试试。我看了一下原版好像是有加的。


FledgeXu


然后我看了一下,你的Material填入的参数好像也有问题。


宏楼


没有成功


FledgeXu


那我觉得可能就是你Material参数填的有问题……


system


该主题在最后一个回复创建后7天后自动关闭。不再允许新的回复。