Minecraft Forge 项目块渲染问题

Posted

技术标签:

【中文标题】Minecraft Forge 项目块渲染问题【英文标题】:Minecraft Forge Item Block Render Issue 【发布时间】:2016-01-08 06:02:23 【问题描述】:

我遇到了一个项目块渲染问题,当我放置块时,它可以正确渲染,但是当我把它拿在手中时,它缺少纹理/模型。

我在链接中看到的图片:http://i.stack.imgur.com/atq1L.png

原因我查了很多遍,控制台没有报错信息,JSON格式似乎没有问题,代码似乎也没有问题。

*顺便说一句,block类的代码并不太重要,因为它只是一个扩展*Block.class的类,然后给super加上Material.stone

这是我的积木类代码:

package com.kraftymods.luckyblocks.init;

import com.kraftymods.luckyblocks.blocks.LuckyBlock;
import com.kraftymods.luckyblocks.blocks.itemblocks.LuckyBlockItem;
import com.kraftymods.luckyblocks.main.Reference;

import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class Blocks 

    public static Block luckyblock;

    public static void init()
        luckyblock = new LuckyBlock().setUnlocalizedName("luckyblock")[enter image description here][1].setCreativeTab(CreativeTabs.tabMisc);
    

    public static void register()
        GameRegistry.registerBlock(luckyblock, LuckyBlockItem.class, luckyblock.getUnlocalizedName().substring(5));
    

    public static void registerRenders()
        registerRender(luckyblock);
    

    private static void registerRender(Block block)
        Item item = Item.getItemFromBlock(block);
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MODID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
    


这是我的 JSON 文件的代码:

块数据:


    "variants": 
        "normal":  "model": "luckyblocks:luckyblock" 
    

块模型:


    "parent": "block/cube_all",
    "textures": 
        "all": "luckyblocks:blocks/luckyblock"
    

物品型号:


    "parent": "luckyblocks:block/luckyblock",
    "display": 
        "thirdperson": 
            "rotation": [ 10, -45, 170 ],
            "translation": [ 0, 1.5, -2.75 ],
            "scale": [ 0.375, 0.375, 0.375 ]
        
    

感谢您花时间阅读本文

【问题讨论】:

看到我的第一个 Minecraft 帖子真是太酷了。抱歉,我无法回答,但您可以使用另一个堆栈交换来进行游戏开发调用“游戏开发”。 确保您直接在 forge 文件夹中进行改装。不要将文件复制到另一个文件夹。这会导致大多数渲染问题 我直接修改到forge文件夹中,一切都在各自的assets文件夹中,blockstate文件在modid/blockstates中,models文件夹也在它们各自的位置 【参考方案1】:

请为您注册渲染器的客户端目的创建一个类

我有这个例子:

public final class BlockRenderRegister 
    public static void registerBlockRenderer() 
        register(BlocksLibrary.blockDarkStone);
    
    public static void register(Block block) 
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher()
                .register(Item.getItemFromBlock(block), 
                          0, 
                          new ModelResourceLocation(
                                ModHooks.MODID.toLowerCase() + ":" + BlocksLibrary.DARKSTONE, 
                                "inventory"
                                 )
                          );
    

为了加载你的块,我还建议一个单独的类(仅用于维护目的

public class BlockLoader 
    /**
     * Loads all blocks into memory
     * and populates the BlocksLibary
     * with decent values.
     */
    public static void loadBlocks() 
        GameRegistry.registerBlock(
                BlocksLibrary.blockDarkStone = new BlockDarkStone(Material.rock),
                BlocksLibrary.DARKSTONE
                );
    

我在 PreInit 事件中注册积木,以便游戏知道我的积木。

@EventHandler
public void preInit(FMLPreInitializationEvent e) 
    BlockLoader.loadBlocks();
 

我从我的主 mod 类中的 FMLInitializationEvent 调用它来注册渲染器。

@EventHandler
    public void init(FMLInitializationEvent event) 
        BlockRenderRegister.registerBlockRenderer();
    

【讨论】:

等我回来再看看,但看起来你在暗示同样的事情,但格式不同(如你所说)

以上是关于Minecraft Forge 项目块渲染问题的主要内容,如果未能解决你的问题,请参考以下文章

Minecraft 修改块构造器错误

使用自定义块边界渲染故障我的世界

minecraft xray如何安装及使用?详细!!!

minecraft你的主机中的软件中止了一个已建立的连接

在 Autodesk Forge 中使用 Corona 渲染器渲染模型

将块添加到 Minecraft Mod (1.15.2) 的问题