【问题标题】:How to fix "loading model for blockstate variant '#normal' exception" in minecraft forge?如何在 minecraft forge 中修复“方块状态变体 '#normal' 异常的加载模型”?
【发布时间】:2019-01-03 20:15:55
【问题描述】:

在成功使项目具有纹理后,在过去的几个小时里,我一直在努力使纹理加载对块起作用(解释我的错误消息,这是我遇到的模型加载问题)

到目前为止,我遵循了cubicoders 教程(https://cubicoder.wordpress.com/2018/06/20/basic-block/)的进度。因为他创建块的解决方案引发了错误,所以我查看了其他教程。虽然我的错误日志坚持认为问题在于模型加载(特别是变体 #normal 的变体加载),但这部分与我能找到的每个教程完全相同。
还有什么可能触发此类异常?

我的完整项目代码可以在这里找到:https://github.com/harlekintiger/modding
这实际上只是基本设置,一个项目和这个破碎的块。


最重要的部分如下:

“basic_block.json”位于“resources/assets/MODID/blockstate”:

{
   "forge_marker": 1,
   "defaults": {
      "model": "firstforgemod:basic_block"
   },
      "variants": {
         "normal": [{}],
         "inventory": [{}]
   }
}

“basic_block.json”位于“resources/assets/MODID/models/block”:

{
   "parent": "block/cube_all",
   "textures": {
      "all": "firstforgemod:blocks/basic_block"
   }
}

实际块的类:

public class BlockBasic extends Block{

    public BlockBasic(Material material, String unlocalizedName, String registryName){
        this(material, SoundType.STONE, unlocalizedName, registryName);
    }

    public BlockBasic(Material material, SoundType sound, String unlocalizedName, String registryName){
        super(material);
        setUnlocalizedName(FirstForgeMod.MODID + "." + unlocalizedName);
        setRegistryName(registryName);
        setCreativeTab(FirstForgeMod.TUTORIAL_TAB);
        setSoundType(sound);
    }
}

收集方块的类:

@ObjectHolder(FirstForgeMod.MODID)
public class TutorialBlocks {

    public static final Block BASIC_BLOCK = null;
}

ModelRegistryHandler 类:(我猜这里缺少什么)

@EventBusSubscriber(Side.CLIENT)
public class ModelRegistryHandler {

    @SubscribeEvent
    public static void registerModels(ModelRegistryEvent event){
        registerModel(TutorialItems.BASIC_ITEM);
        registerModel(Item.getItemFromBlock(TutorialBlocks.BASIC_BLOCK));
    }

    private static void registerModel(Item item) {
        ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
    }
}

RegistryHandler 类:

@EventBusSubscriber
public class RegistryHandler {

    @SubscribeEvent
    public static void registerBlocks(Register<Block> event){
        final Block[] blocks ={
            new BlockBasic(Material.ROCK, "blockBasic", "basic_block")
        };

        event.getRegistry().registerAll(blocks);
    }

    @SubscribeEvent
    public  static  void registerItems(Register<Item> event){
        final Item[] items = {
                new ItemBasic("itemBasic", "basic_item")
        };

        final Item[] itemBlocks = {
                new ItemBlock(TutorialBlocks.BASIC_BLOCK).setRegistryName(TutorialBlocks.BASIC_BLOCK.getRegistryName())
        };

        event.getRegistry().registerAll(items);
        event.getRegistry().registerAll(itemBlocks);
    }
}

Minecraft 启动(带有错误消息)和关闭的日志文件:
https://pastebin.com/Ff7NuFSk


我得到了什么: 游戏开始并且在游戏中可以放置块,但在世界和库存中完全没有纹理(缺少纹理纹理)。

【问题讨论】:

  • 你能发布完整的日志文件吗?如果必须,请使用 pastebin。 “无法加载模型”是一个非常广泛的错误,其下方将是另一个错误(真正的来源),其中包含更多信息。
  • @Draco18s 感谢您的建议,我确实添加了日志文件
  • 为了完整起见,Cubicoder(教程作者)发现我写了“blockstate”而不是“blockstates”作为文件夹名称。因此,如果您有相同的错误,请四重检查您的拼写。如果它仍然存在,看看 Draco18 的回答,它的字符数以公斤为单位是值得的!

标签: minecraft minecraft-forge


【解决方案1】:
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 14 column 2 path $

这是你的潜在错误。

https://github.com/harlekintiger/modding/blob/master/src/main/resources/assets/firstforgemod/blockstates/basic_block.json#L14

JSON 是一种数据格式,它不允许在文件中的任何位置使用 cmets(任何类型)。

【讨论】:

  • 你有一些严重的错误信息分析技巧!现在它就像一个魅力,非常感谢你:)
  • @harlekintiger 这是因为我已经使用系统足够长的时间知道要寻找什么。 “错误加载模型”是一个系统抛出的错误,以响应一个或多个其他系统通过的大约六个错误中的任何一个。 JSON 本身的错误,缺少块状态文件,a缺少模型文件、缺少纹理文件、缺少方块状态条目(即你说“我有一个带有朝向的方块”然后你的方块状态没有所有朝向的方向)等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
相关资源
最近更新 更多