Jump to content

[1.9] Cannot get texture/model to work


Adversary

Recommended Posts

I am trying to get my texture that I made and a basic model to work. I am new to modding Minecraft. I have the item made in game (Showing purple and black block). Just can't get the texture to work.

 

Here is where I plan to do all the registering of items. I saw somewhere that you can't register textures in a file like this and only can do it in the client proxy. Let me know if that is true.

package adversary.advancedskills.init;

import adversary.advancedskills.common.items.ASItem;
import adversary.advancedskills.common.items.RustySword;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderItem;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class ModItems {
    public static ClientProxy proxy;
    public static void init() {
        //TODO: Register all items
        RustySword.init();
        //TODO: Register all items textures

    }
    public static Item registerItem(Item item, String name){
        //TODO: Fix Argument list (CUSTOMIZATION: TABS)
        return registerItem(item,name,null);
    }
    public static Item registerItem(Item item, String name, CreativeTabs tab){
        item.setUnlocalizedName(name);
        GameRegistry.register(item);
        return item;
    }
}

 

Here is my client proxy where I am attempting to register my textures.

package adversary.advancedskills.init;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class ClientProxy extends CommonProxy{
    @Override
    public void preInit(FMLPreInitializationEvent event){
    }

    @Override
    public void init(FMLInitializationEvent event){
        super.init(event);
    }

    @Override
    public void postInit(FMLPostInitializationEvent event){
    }
    public static void registerRenders(Item item){
        ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(AdvancedSkills.MODID + ":" + item.getUnlocalizedName(), "inventory"));
    }
}

 

Here is the item I am trying to make:

package adversary.advancedskills.common.items;

import adversary.advancedskills.init.ClientProxy;
import adversary.advancedskills.init.ModItems;
import net.minecraft.client.Minecraft;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class RustySword extends ASItem{
    public RustySword(){
        super();
        this.setUnlocalizedName("rustySword");
    }

    public static void init() {
        RustySword rustySword = new RustySword();
        rustySword.setUnlocalizedName("rustySword");
        ModItems.registerItem(rustySword, "rustySword");
        ClientProxy.registerRenders(rustySword);
    }
}

 

Let me know if you need anything else and I will be happy to supply it.

Link to comment
Share on other sites

I am trying to get my texture that I made and a basic model to work. I am new to modding Minecraft. I have the item made in game (Showing purple and black block). Just can't get the texture to work.

 

Here is where I plan to do all the registering of items. I saw somewhere that you can't register textures in a file like this and only can do it in the client proxy. Let me know if that is true.

package adversary.advancedskills.init;

import adversary.advancedskills.common.items.ASItem;
import adversary.advancedskills.common.items.RustySword;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderItem;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class ModItems {
    public static ClientProxy proxy;
    public static void init() {
        //TODO: Register all items
        RustySword.init();
        //TODO: Register all items textures

    }
    public static Item registerItem(Item item, String name){
        //TODO: Fix Argument list (CUSTOMIZATION: TABS)
        return registerItem(item,name,null);
    }
    public static Item registerItem(Item item, String name, CreativeTabs tab){
        item.setUnlocalizedName(name);
        GameRegistry.register(item);
        return item;
    }
}

 

Here is my client proxy where I am attempting to register my textures.

package adversary.advancedskills.init;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class ClientProxy extends CommonProxy{
    @Override
    public void preInit(FMLPreInitializationEvent event){
    }

    @Override
    public void init(FMLInitializationEvent event){
        super.init(event);
    }

    @Override
    public void postInit(FMLPostInitializationEvent event){
    }
    public static void registerRenders(Item item){
        ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(AdvancedSkills.MODID + ":" + item.getUnlocalizedName(), "inventory"));
    }
}

 

Here is the item I am trying to make:

package adversary.advancedskills.common.items;

import adversary.advancedskills.init.ClientProxy;
import adversary.advancedskills.init.ModItems;
import net.minecraft.client.Minecraft;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class RustySword extends ASItem{
    public RustySword(){
        super();
        this.setUnlocalizedName("rustySword");
    }

    public static void init() {
        RustySword rustySword = new RustySword();
        rustySword.setUnlocalizedName("rustySword");
        ModItems.registerItem(rustySword, "rustySword");
        ClientProxy.registerRenders(rustySword);
    }
}

 

Let me know if you need anything else and I will be happy to supply it.

Link to comment
Share on other sites

Here is where I call it. Basically in my overall mod file this is where I plan to register all blocks and items.

package adversary.advancedskills.init;

import adversary.advancedskills.common.items.RustySword;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid= AdvancedSkills.MODID, name= AdvancedSkills.MODNAME, version= AdvancedSkills.MODVER)

public class AdvancedSkills {
    public static final String MODID = "advancedSkills";
    public static final String MODNAME = "Advanced Skills";
    public static final String MODVER = "0.0.0";
    public static final String CLIENTPROXY = "adversary.advancedskills.init.ClientProxy";
    public static final String COMMONPROXY = "adversary.advancedskills.init.CommonProxy";

    @SidedProxy(clientSide = AdvancedSkills.CLIENTPROXY, serverSide = AdvancedSkills.COMMONPROXY)
    public static CommonProxy proxy;

    @Instance(value = AdvancedSkills.MODID)
    public static AdvancedSkills instance;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event){
        proxy.preInit(event);
        //Register Blocks
        ModItems.init();
    }

    @EventHandler
    public void init(FMLInitializationEvent event){
        proxy.init(event);
        //registerRenders(RustySword.rustySword);
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event){
        proxy.postInit(event);
    }


}

Link to comment
Share on other sites

Here is where I call it. Basically in my overall mod file this is where I plan to register all blocks and items.

package adversary.advancedskills.init;

import adversary.advancedskills.common.items.RustySword;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid= AdvancedSkills.MODID, name= AdvancedSkills.MODNAME, version= AdvancedSkills.MODVER)

public class AdvancedSkills {
    public static final String MODID = "advancedSkills";
    public static final String MODNAME = "Advanced Skills";
    public static final String MODVER = "0.0.0";
    public static final String CLIENTPROXY = "adversary.advancedskills.init.ClientProxy";
    public static final String COMMONPROXY = "adversary.advancedskills.init.CommonProxy";

    @SidedProxy(clientSide = AdvancedSkills.CLIENTPROXY, serverSide = AdvancedSkills.COMMONPROXY)
    public static CommonProxy proxy;

    @Instance(value = AdvancedSkills.MODID)
    public static AdvancedSkills instance;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event){
        proxy.preInit(event);
        //Register Blocks
        ModItems.init();
    }

    @EventHandler
    public void init(FMLInitializationEvent event){
        proxy.init(event);
        //registerRenders(RustySword.rustySword);
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event){
        proxy.postInit(event);
    }


}

Link to comment
Share on other sites

Also intelliJ is telling me not to use @SidedProxy above where I call the function

ClientProxy.registerRenders(rustySword);

 

I am getting a few errors. Seems to be relating to my .json file about not being able to find it?

Exception loading model for variant advancedskills:rustySword#inventory for item "advancedskills:rustySword", normal location exception
Caused by: java.io.FileNotFoundException: advancedskills:models/item/rustySword.json

Exception loading model for variant advancedskills:rustySword#inventory for item "advancedskills:rustySword", blockstate location exception

 

Here is a picture of my package structure:

7glBfOw.png

 

Also here is my .json file

{
  "parent": "builtin/generated",
  "textures": {
    "layer0": "advancedskills:items/rustySword"
  },
  "display": {
    "thirdperson": {
      "rotation": [ -90, 0, 0 ],
      "translation": [ 0, 1, -3 ],
      "scale": [ 0.55, 0.55, 0.55 ]
    },
    "firstperson": {
      "rotation": [ 0, -135, 25 ],
      "translation": [ 0, 4, 2 ],
      "scale": [ 1.7, 1.7, 1.7 ]
    }
  }
}

Link to comment
Share on other sites

Maybe I am looking in a different place, but in my updated structure it has it as main/java/resources/assets/advancedskills/models/items. Isn't that right or am I looking in the wrong place?

 

The path to item models is

models/item

, not

models/items

.

 

item != items

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.