簡體   English   中英

紋理不在我的世界mod中出現

[英]Textures not appearing in minecraft mod

我正在嘗試在Eclipse中修改Minecraft 1.11.2,並將所有texure文件放在正確的位置,但它們不會加載。 我嘗試重寫某些Java,以查看是否犯了錯誤,但沒有任何更改。 這是我的錯誤代碼:

[11:22:57] [Client thread/INFO]: Created: 16x16 textures-atlas
[11:23:00] [Client thread/ERROR] [FML]: Exception loading model for variant wowkcraft:itemobsidianingot#inventory for item "wowkcraft:itemobsidianingot", normal location exception: 
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model wowkcraft:item/itemobsidianingot with loader VanillaLoader.INSTANCE, skipping
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:323) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:153) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:122) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.io.FileNotFoundException: wowkcraft:models/item/itemobsidianingot.json
    at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.access$1600(ModelLoader.java:124) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:923) ~[ModelLoader$VanillaLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
    ... 20 more
[11:23:00] [Client thread/ERROR] [FML]: Exception loading model for variant wowkcraft:itemobsidianingot#inventory for item "wowkcraft:itemobsidianingot", blockstate location exception: 
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model wowkcraft:itemobsidianingot#inventory with loader VariantLoader.INSTANCE, skipping
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:331) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:153) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:122) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:78) ~[ModelBlockDefinition.class:?]
    at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1239) ~[ModelLoader$VariantLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
    ... 20 more

造成原因:java.io.FileNotFoundException:wowkcraft:models / item / itemobsidianingot.json

您缺少項目模型json。 該錯誤被深深地掩蓋了,因為有幾種可能的錯誤導致無法加載模型,因此初始錯誤(“無法加載模型”)位於基礎錯誤(在本例中為“文件”)之上未找到”)。

摘自我在該主題上撰寫的文檔條目,其中進行了一些較小的更改和更新:

與積木一樣,物品也需要模型。

{
    "parent": "item/generated",
    "textures": {
        "layer0": "example:items/basic"
    }
}

注冊該項目后,它幾乎可以正常工作。 唯一重要的是文件名必須與用於注冊該塊的注冊表名稱匹配,並且應全部使用小寫字母(1.11+文件名必須小寫,然后再區分大小寫)。

命名與注冊表名稱匹配的模型JSON文件,並將其保存在src\\main\\resources\\assets\\example\\models\\item\\ (其中example是在主mod類的@Mod批注中指定的mod ID)。

此外,為您的商品創建一個紋理,將其命名為basic.png並將其保存到src\\main\\resources\\assets\\example\\textures\\items\\ (模型通過"layer0": "example:items/basic"引用該文件"layer0": "example:items/basic"表示“在資源位置exampleitems文件夾中找到名為'basic'的.png文件”)

此處的物品模型使用item/generated Generated的父對象,這意味着將使用單個提供的紋理(與大多數非方塊物品一樣),並將其以默認方向握在玩家的手中。 還有用於指定不同顯示方向(用於工具)的item/handheld 項也可以提供自己的“顯示”屬性,以覆蓋父項中的屬性,但在99.9%的使用中不需要。

注冊項目:

Item item = new CustomItem();
string registryname = "my_item";
item.setRegistryName(registryname);
item.setUnlocalizedName(item.getRegistryName().toString());
GameRegistry.register(item);

使用item.setUnlocalizedName(item.getRegistryName().toString());是一個重要原因item.setUnlocalizedName(item.getRegistryName().toString()); 以及! 它可以確保項目的未本地化名稱包含您的mod ID,以避免mod之間的語言文件沖突。 這不太可能,但完全可以避免。

注冊項目模型:

final ModelResourceLocation fullModelLocation = new ModelResourceLocation(item.getRegistryName().toString(), "inventory");
ModelBakery.registerItemVariants(item, fullModelLocation);
ModelLoader.setCustomMeshDefinition(item, new ItemMeshDefinition()
    {
        public ModelResourceLocation getModelLocation(ItemStack stack)
        {
            return fullModelLocation;
        }
    });

請注意,此部分只能位於客戶端(即客戶端代理),因為專用服務器上不存在許多引用的類。

使用ModelLoader.setCustomModelResourceLocation(item, metadata, resourceLocation)注冊帶有變體(例如ModelLoader.setCustomModelResourceLocation(item, metadata, resourceLocation)必須以不同的方式完成ModelLoader.setCustomModelResourceLocation(item, metadata, resourceLocation)盡管它允許我們使用Blockstate文件來指定我們的變體(這是替代方法的首選)。

對於1.12+修改器:

這在1.11中也有效,但在1.12及更高版本中是必需的

GameRegistry.register()現在是private 相反,您必須通過事件處理程序在RegistryEvent.Register<T>事件中注冊事物。 只需訂閱RegistryEvent.Register<Item>RegistryEvent.Register<Block>事件(以及其他事件:每個注冊表類型都會觸發一個事件)以注冊項目和塊。 只需為每個需要注冊的對象調用event.getRegistry().add(...)event.getRegistry().addAll(...) addAll將接受數組或列表。 您可以在這里看到一個示例。

對於模型,您執行與上述相同的操作,但是在ModelRegistryEvent 您可以在此處看到一個示例,盡管對其進行了重大修改以允許此處未討論的模型有其他變化(支持自定義MeshDefinitions和StateMappers)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM