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 项目块渲染问题的主要内容,如果未能解决你的问题,请参考以下文章