Jump to content

[1.8] all items and blocks rendering as missing model texture.


Cleverpanda

Recommended Posts

All of my items and blocks are rendering as blocks with the "missing texture" texture. I read that when Items do this, it's a model issue but I cant see anything.

I'm going to focus on one item and see if you guys can see anything I've missed.

 

My item model is in src/main/resources/assets.minefantasy2.models.item/bluesteel_pick.json

It contains:

 

{

    "parent": "items/iron_pickaxe",

    "textures": {

        "layer0": "minefantasy2:items/Tool/bluesteel_pick"

    }

}

 

The texture is in src/main/resources/assets.minefantasy2.textures.items.Tool/bluesteel_pick.png

 

Both of these packages and files show up in my package window in eclipse.

 

Inside the class that registers tools in Init(): http://pastebin.com/w576pEC2

 

Item class: http://pastebin.com/ntyGpFct

 

My log doesn't have any "Model definition for location X not found" errors or "domain" Texture errors for this.

 

What It looks like in-game:

E4VN2Fk.png

I've been trying to figure this out for days now, please help guys!

Link to comment
Share on other sites

change your model file to this:

{
    "parent": "builtin/generated",
    "textures": {
        "layer0": "minefantasy2:items/Tool/bluesteel_pick"
    },
    "display": {
        "thirdperson": {
            "rotation": [ 0, 90, -35 ],
            "translation": [ 0, 1.25, -3.5 ],
            "scale": [ 0.85, 0.85, 0.85 ]
        },
        "firstperson": {
            "rotation": [ 0, -135, 25 ],
            "translation": [ 0, 4, 2 ],
            "scale": [ 1.7, 1.7, 1.7 ]
        }
    }
}

Link to comment
Share on other sites

hand write out this instead to rule out an issue in your text manipulation

 

    renderItem.getItemModelMesher().register(item, 0, new ModelResourceLocation(MODID + ":" +      item.getMaterial().name()+"_pick", "inventory"));

 

 

I notice in your path to the texture you have a capital.  From your code, thinking your modid does as well.  Change to all lower caps as well.

 

Those are always things I do first.

 

Lastlly, in eclipse, you have clicked on the project and chosen 'refresh' right?  If you don't eclipse won't always recognize any file changes.  Do that anytime you add a texture, json, edit, ect.

Long time Bukkit & Forge Programmer

Happy to try and help

Link to comment
Share on other sites

@delpi Okay results: (I totally forgot to refresh...) Still not working however, I'm now getting a "Model definition for location minefantasy2:bluesteel_pick#inventory not found" error in the log and I /did/ change the location in the json file to lowercase and refreshed the project. Aditionally, I noticed that when I drop the Item, I get a "Item entity ##### has no item?!" error.

 

Manually specifying as much as possible: I changed the line to

ItemPickMF bpick = new ItemPickMF("bluesteel_pick", BaseMaterialMF.bluesteel.getToolConversion(), 0);
    		 renderItem.getItemModelMesher().register(bpick, 0, new ModelResourceLocation(MODID + ":" + "bluesteel_pick", "inventory"));

"Model definition for location minefantasy2:bluesteel_pick#inventory not found"

"Item entity ##### has no item?!"

Link to comment
Share on other sites

Hi

 

Unfortunately I don't see the problem, but something you could try:

A useful breakpoint to solve registration problems is to set a breakpoint at

ItemModelMesher::

public IBakedModel getItemModel(ItemStack stack)

{

    Item item = stack.getItem();

    IBakedModel ibakedmodel = this.getItemModel(item, this.getMetadata(stack));

}

 

You can then trace in, to compare 1) the model that your item is looking for, against 2) the contents of the registry.  Where they don't match, you can usually see why immediately.

 

-TGG

Link to comment
Share on other sites

Based upon your json, I think it should be

 

renderItem.getItemModelMesher().register(bpick, 0, new ModelResourceLocation(MODID + ":" + "items/Tool/bluesteel_pick", "inventory"));

 

or

 

renderItem.getItemModelMesher().register(bpick, 0, new ModelResourceLocation(MODID + ":" + "items/tool/bluesteel_pick", "inventory"));

 

if you changed it to all lower case.

Long time Bukkit & Forge Programmer

Happy to try and help

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Post logs as per https://forums.minecraftforge.net/topic/125488-rules-and-frequently-asked-questions-faq/ They may have information that will answer these questions.
    • I was left reeling when a glitch on a cryptocurrency exchange caused me to lose $166,000 worth of my hard-earned savings. It felt like my entire world had crumbled in the blink of an eye, leaving me with a sense of hopelessness. Determined not to give up, I delved into research on recovery options, unsure of what to expect. That's when I stumbled upon I was left reeling when a glitch on a cryptocurrency exchange caused me to lose $166,000 worth of my hard-earned savings. It felt like my entire world had crumbled in the blink of an eye, leaving me with a sense of hopelessness. Determined not to give up, I delved into research on recovery options, unsure of what to expect. That's when I stumbled upon DIGITAL HACK RECOVERY, a beacon of hope in my darkest hour. Despite my initial doubts, I decided to take a leap of faith and give them a shot as a final lifeline. The experts at DIGITAL HACK RECOVERY proved to be masters of their craft, guiding me through their exclusive process with precision and expertise. Utilizing cutting-edge blockchain analysis methods, they were able to track down the elusive trail of my missing funds and identify the exact point of failure. Their forensic talents were unparalleled as they tirelessly combed through the intricate web of blockchain data to locate my cryptocurrency. With each step they took, they kept me informed of their progress, never wavering in their belief that my funds could be rescued. After several painstaking weeks, DIGITAL HACK RECOVERY finally located and restored my $166,000 worth of cryptocurrency. I was awestruck that they were able to salvage what I had thought was lost forever. The whole experience restored my faith in the crypto space and proved that even in the worst situations, recovery is possible with the right experts on your side. I will be forever grateful to DIGITAL HACK RECOVERY for giving me back my life savings when I needed it most. Their tireless efforts and technical mastery turned what could have been a devastating loss into an uplifting success story. Book a time with DIGITAL HACK RECOVERY through: digital hack recovery @ techie . com &  +12018871705
    • public class ParticleReboundRecipe implements Recipe<CraftingContainer> { private List<ParticleReboundIngredient> inputs; private ParticleReboundFuel fuel; private ItemStack output; public ParticleReboundRecipe(List<ParticleReboundIngredient> inputs, ParticleReboundFuel fuel, ItemStack output) { this.inputs = inputs; this.fuel = fuel; this.output = output; } // TODO: Implement interface ... // TODO: Move to separate file if desired public record ParticleReboundIngredient(Ingredient ingredient, int count) { public static final Codec<ParticleReboundIngredient> CODEC = RecordCodecBuilder.create( builder -> builder.group( Ingredient.CODEC.fieldOf("ingredient").forGetter((i) -> i.ingredient), Codec.INT.fieldOf("count").forGetter(i -> i.count) ).apply(builder, ParticleReboundIngredient::new) ); } // TODO: Move to separate file if desired public record ParticleReboundFuel(String tag) { public static final Codec<ParticleReboundFuel> CODEC = RecordCodecBuilder.create( builder -> builder.group(Codec.STRING.fieldOf("tag").forGetter(f -> f.tag)).apply(builder, ParticleReboundFuel::new) ); public boolean isFuel(ItemStack stack) { // TODO: Check if fuel item matches the tag } } public class Serializer implements RecipeSerializer<ParticleReboundRecipe> { public static final Codec<ParticleReboundRecipe> CODEC = RecordCodecBuilder.create( builder -> builder.group( ParticleReboundIngredient.CODEC.listOf().fieldOf("inputs").forGetter(r -> r.inputs), ParticleReboundFuel.CODEC.fieldOf("fuel").forGetter(r -> r.fuel), ItemStack.CODEC.fieldOf("output").forGetter(r -> r.output) ).apply(builder, ParticleReboundRecipe::new) ); @Override public @NotNull Codec<ParticleReboundRecipe> codec() { return CODEC; } // TODO: The rest ... } }   ?
    • I'm sure load and SaveAdditional are what you are looking for, probably. Mind sharing your BE class code? You also need to override onLoad method if you haven't
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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