Jump to content

[1.8] anoing bug / features founded at setting item textures


perromercenary00

Recommended Posts

good days

 

changes to this version at first seemed to me to give me an easy way to do complex things,  but now I'm pretty annoyed with what and found

 

 

well to set a texture to an item you must first create the class without the this.settexture tag, second you must create a file  .json pointing to the texture file you want to mount, third must create texture in png format, for you must register this texture whith this item seting the metadata number zero for default whith

Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.potato , 0 , new ModelResourceLocation("modmercenario:"+"potato" , "inventory"));

and this must be done in the init() section of the principal class of the mod , not preinit but init don´t posinit

 

but wen you create  multiplex items the textures get  mixed and the you have the pala_carbon_carbon spade whit the texture of the charcoalCompreso  and thus for the rest.

 

i discovered that the order in which the objects in the itemmodfile  affects the order in which the texture is loaded, so i create a custom tab then send all my items to that custom tab to see the order in which minecraft  hass establish the ids and then put the objects in that order in my modItems class.

witch solves the problem of textures mixed.

 

the second feature / bug I found is that for minecraft accept a .json a png texture must be a registered item with exactly the same name as the json which means that for minecraft accept the potato.json must be an item named exactly potato

I wanted to create a meta potato with different textures implying different json file named potato0.json potato1.json potato2.json pointing to the three textures  but minecraft  just get  the texture from potato.json ignoring the others.

 

 

adding mi moditemsfile to clarificate the thing whit the textures mixed

 

 

 

package mercenarymod.items;

 

import net.minecraft.block.Block;

import net.minecraft.init.Blocks;

import net.minecraft.init.Items;

import net.minecraft.item.Item;

import net.minecraft.item.Item.ToolMaterial;

import net.minecraft.item.ItemStack;

import net.minecraftforge.common.util.EnumHelper;

import net.minecraft.block.material.Material;

import net.minecraft.creativetab.CreativeTabs;

import mercenarymod.blocks.MercenaryModBlocks;

import mercenarymod.Mercenary;

 

 

public final class MercenaryModItems{

 

//materiales 9

 

public static Item carbonoMercenario;

public static Item inertebarradeCarbon;

public static Item hierroAlrojo;

public static Item nokiaMercenaria;

public static Item obsidianaMercenaria;

public static Item coalCompreso;

public static Item charcoalCompreso;

 

public static Item aceroMercenario;

public static Item barradeAcero;

 

public static Item espada_carbon_carbon;

public static Item hacha_carbon_carbon;

public static Item pica_carbon_carbon;

public static Item hoe_carbon_carbon;

public static Item pala_carbon_carbon;

 

public static Item multitextura;

 

public static Item papa;

 

public  static void init(){

 

// if this is not the order in which minecraft set the id numbers the textures get mixed 

 

 

aceroMercenario = new mercenarymod.items.materiales.aceroMercenario(); // Item Id=4096

barradeAcero = new mercenarymod.items.materiales.barradeAcero(); // Item Id=4097

 

inertebarradeCarbon= new mercenarymod.items.materiales.inertebarradeCarbon(); // Item Id=4098

hierroAlrojo = new mercenarymod.items.materiales.hierroAlrojo(); // Item Id=4099

 

coalCompreso = new mercenarymod.items.materiales.coalCompreso(); // Item Id=4100

charcoalCompreso = new mercenarymod.items.materiales.charcoalCompreso(); // Item Id=4101

 

obsidianaMercenaria = new mercenarymod.items.materiales.obsidianaMercenaria(); // Item Id=4102

 

nokiaMercenaria = new mercenarymod.items.materiales.nokiaMercenaria(); // Item Id=4103

carbonoMercenario = new mercenarymod.items.materiales.carbonoMercenario(); // Item Id=4104

 

espada_carbon_carbon = new mercenarymod.items.espadas.espada_carbon_carbon(); // Item Id=4105

hacha_carbon_carbon = new mercenarymod.items.hachas.hacha_carbon_carbon(); // Item Id=4106

 

pica_carbon_carbon = new mercenarymod.items.picas.pica_carbon_carbon(); // Item Id=4107

hoe_carbon_carbon = new mercenarymod.items.hoe.hoe_carbon_carbon(); // Item Id=4108

 

pala_carbon_carbon = new mercenarymod.items.palas.pala_carbon_carbon(); // Item Id=4109

 

multitextura = new mercenarymod.items.multitextura.multitextura(); // Item Id=4110

 

papa = new mercenarymod.items.alimentos.papa(3); // Item Id=4111

                          }

 

 

//################################################################################################################################################################################################

}//fin de la classe

Link to comment
Share on other sites

well i have pictures to show its happend

 

this is the rigth order whit the rigth textures loaded notese the firsitem name modmercenario_aceroMercenario which i take the icon for the tab

https://www.dropbox.com/s/20x37i8l10ovt8q/texturaBien.png?dl=0

 

then i exchange positions in the MercenaryModItems class  to look like this

 

  barradeAcero = new mercenarymod.items.materiales.barradeAcero();              // Item Id=4097

  aceroMercenario  = new mercenarymod.items.materiales.aceroMercenario();            // Item Id=4096

 

and now the textures are exchanged even the tab icon is afected  barradeAcero has now the texture of aceroMercenario , and aceroMercenario has the texture for barradeAcero

https://www.dropbox.com/s/y1wuajmzkxlfogk/texturaInterCambiada.png?dl=0

 

Link to comment
Share on other sites

I wanted to create a meta potato with different textures implying different json file named potato0.json potato1.json potato2.json pointing to the three textures  but minecraft  just get  the texture from potato.json ignoring the others.

 

That's because the metadata is handled INSIDE the json file.

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

Having not worked with 1.8, I unfortunately can't tell you.  I'm basing my information off what I've gleaned from reading the forums and maybe I'm wrong.

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

if i have a set of items created in the forge i have like nine,

 

and then you remove some of this  then ids get messed up in the world,

 

the relation texture <==> itemid get messed up and or you get mixed items whit wrong texture or  some items will not load any texture  although everithing is rigth whit the json the textures and the testuse register class

 

how do you solved ?

 

dont now, but if you fireup the minecraft and  create another world  in this world the textures go back to work normal 

Link to comment
Share on other sites

this is another feature /bug founded

and the reason for many post on the forum say mi iteblock dont load texture.

 

let say a create an item named  unlocalizated name = "aceromercenario" and do create it in a class named aceroMercenario.java

so i created a json named aceroMercenario.json to load aceromercenario.png 

 

as you can see now the spotable trouble are the names.

 

minecraft base its search in the unlocalizated name, in this case it shall not load the texture because it is lokking for a json named exactly whit the unlocalizated name of the item

but i name my json whith the item whith a case diferent name.

 

the easy way to solve this is set everything to lowercase names  the other thing you can do is register the wrong_named.json whith the item using ModelBakery class

 

example

my unlocalizated name is "aceromercenario"

but my item is register in my modItems class like "aceroMercenario"                    aceroMercenario = new mercenarymod.items.materiales.aceroMercenario();

the wrong_named json is  aceroMercenario.json

 

 

so i do register the wrong_named json whith my item in the textures class or the preinit of main class using modelbakery

 

 

ModelBakery.addVariantName(MercenaryModItems.aceroMercenario, new String[]{"modmercenario:aceroMercenario"});

then,

Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.aceroMercenario, 0, new ModelResourceLocation("modmercenario:aceroMercenario" , "inventory"));

 

and now the texture loads

 

 

 

 

 

I must add for the blocks you can set manualy the texture to use in the inventory,

for the block in the world il will always look for a json whit the unlocalizated name of the block 

 

so if a i  do

 

Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(MercenaryModBlocks.multicara), 0, new ModelResourceLocation("apple" , "inventory"));

it loads the apple texture and shows the block in inventory whit the apple, but when you put the block on the world it still take the textures from models/block/multicara.json

 

there must be somewhere a method to force the block to load a custom json whit diferent name. 

 

Link to comment
Share on other sites

Thanks for sharing your insights, I did not use the same resourcelocation / variant name for getItemModelMesher().register() and ModelBakery.addVariantName()

 

After using the same name for both, it actually did load the texture, but only the same texture for all my 15 metadata-variant blocks -_-

 

[Edit:] Ok all the same texture was my error. It's working now \o/ Thanks!

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.



×
×
  • Create New...

Important Information

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