Résolu Item à metadata en 1.7 ?
-
Bonsoir ! Voilà, je me retrouve ici pour savoir si il était encore possible de créer des items à metadata en 1.7 car les ID ne marchent plus …
Si oui pouvez vous me donner la solution, si non y a t’il un autre moyen ?Merci d’avance à tous et bonne soirée
-
Même principe que pour les blocs : ```java
private String[] type = new String[]{“item1”, “item2”, “item3”, “item4”};Bien Sûr les .blockID ont disparus, même ça ne change rien au système (le changement du système de metadata c'est en 1.8)
-
@‘Phenix246’:
Même principe que pour les blocs :
private String[] type = new String[]{"item1", "item2", "item3", "item4"};
Bien Sûr les .blockID ont disparus, même ça ne change rien au système (le changement du système de metadata c’est en 1.8)
Merci je vais tester tous ça !
Je reviens ici si j’ai un autre problème, merci encore ! -
@‘Phenix246’:
Même principe que pour les blocs :
private String[] type = new String[]{"item1", "item2", "item3", "item4"};
Bien Sûr les .blockID ont disparus, même ça ne change rien au système (le changement du système de metadata c’est en 1.8)
De retour, après avoir placé le tableau et essayer plusieurs fois plusieurs choses pour éviter de revenir ici et d’encore embêter je n’y arrive pas, je ne sais pas comment il faut faire, n’aurais tu pas un tutoriel ou autre ?
Merci pour ta patience
-
envoie ton code je vais te l’arranger
-
@‘Phenix246’:
envoie ton code je vais te l’arranger
public static Item itemObsidian; @EventHandler public void preInit(FMLPreInitializationEvent event) { //Obsidian ITEMS itemObsidian = new itemObsidianMetadata().setUnlocalizedName("itemobsidian"); GameRegistry.registerItem(itemObsidian, "itemObsidian", "ObsidianPlus");
Ici j’ai essayer d’utiliser le code de la 1.6 …
Ensuite ma classe :
package com.google.bidibusteam.obsidianplus.common; import javax.swing.Icon; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class itemObsidianMetadata extends Item { public int getMetadata(int metadata) { return metadata; } public String getUnlocalizedName(ItemStack stack) { int metadata = stack.getItemDamage(); if(metadata > type.length || metadata < 0) { metadata = 0; } return super.getUnlocalizedName() + "." + type[metadata]; } private String[] type = new String[]{"item1", "item2", "item3", "item4"}; private Icon[] IconArray; public itemObsidianMetadata(int id) { super(); this.setCreativeTab(CreativeTabs.tabMaterials); this.setHasSubtypes(true); } public void registerIcons(IconRegister iconregister) { IconArray = new Icon[type.length]; for(int i = 0; i < type.length; i++) { IconArray* = iconregister.registerIcon("modtutoriel:" + type*); } } @SideOnly(Side.CLIENT) public void getSubItems(int id, CreativeTabs creativeTabs, List list) { for(int metadata = 0; metadata < type.length; metadata++) { list.add(new ItemStack(id, 1, metadata)); } } @SideOnly(Side.CLIENT) public Icon getIconFromDamage(int metadata) { return metadata < type.length && metadata >= 0 ? IconArray[metadata] : IconArray[0]; } }
Ici pareil, un peu de 1.6 mais plein d’erreur car le code et faux en lui même je pense et non finis …
-
package com.google.bidibusteam.obsidianplus.common; import net.minecraft.util.IIcon; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class itemObsidianMetadata extends Item { private String[] type = new String[]{"item1", "item2", "item3", "item4"}; private IIcon[] iconArray; public itemObsidianMetadata() { super(); this.setCreativeTab(CreativeTabs.tabMaterials); this.setHasSubtypes(true); } public int getMetadata(int metadata) { return metadata; } public String getUnlocalizedName(ItemStack stack) { int metadata = stack.getItemDamage(); if(metadata > type.length || metadata < 0) { metadata = 0; } return super.getUnlocalizedName() + "." + type[metadata]; } public void registerIcons(IIconRegister iconregister) { iconArray = new Icon[type.length]; for(int i = 0; i < type.length; i++) { iconArray* = iconregister.registerIcon("modtutoriel:" + type*); } } @SideOnly(Side.CLIENT) public void getSubItems(Item Item, CreativeTabs creativeTabs, List list) { for(int metadata = 0; metadata < type.length; metadata++) list.add(new ItemStack(Item, 1, metadata)); } @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int metadata) { return metadata < type.length && metadata >= 0 ? iconArray[metadata] : iconArray[0]; } }
Normalement là c’est bon ,oublie pas par contre d’utiliser la balise [java], ça rend le code plus facile à lire
-
@‘Phenix246’:
package com.google.bidibusteam.obsidianplus.common; import javax.swing.Icon; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class itemObsidianMetadata extends Item { private String[] type = new String[]{"item1", "item2", "item3", "item4"}; private Icon[] iconArray; public itemObsidianMetadata() { super(); this.setCreativeTab(CreativeTabs.tabMaterials); this.setHasSubtypes(true); } public int getMetadata(int metadata) { return metadata; } public String getUnlocalizedName(ItemStack stack) { int metadata = stack.getItemDamage(); if(metadata > type.length || metadata < 0) { metadata = 0; } return super.getUnlocalizedName() + "." + type[metadata]; } public void registerIcons(IconRegister iconregister) { iconArray = new Icon[type.length]; for(int i = 0; i < type.length; i++) { iconArray* = iconregister.registerIcon("modtutoriel:" + type*); } } @SideOnly(Side.CLIENT) public void getSubItems(Item Item, CreativeTabs creativeTabs, List list) { for(int metadata = 0; metadata < type.length; metadata++) list.add(new ItemStack(Item, 1, metadata)); } @SideOnly(Side.CLIENT) public Icon getIconFromDamage(int metadata) { return metadata < type.length && metadata >= 0 ? iconArray[metadata] : iconArray[0]; } }
Normalement là c’est bon ,oublie pas par contre d’utiliser la balise
, ça rend le code plus facile à lire
Oui oui pas de problème ! Un grand merci à toi ! Au niveau de ma classe principale par contre j'utilise quel code ?
-
normalement le tien est bon
-
@‘Phenix246’:
normalement le tien est bon
Par contre j’ai quelques erreurs ici :
@SideOnly(Side.CLIENT) public Icon getIconFromDamage(int metadata) { return metadata < type.length && metadata >= 0 ? iconArray[metadata] : iconArray[0]; }
Au Icon et ici aussi :
public void registerIcons(IconRegister iconregister) { iconArray = new Icon[type.length]; for(int i = 0; i < type.length; i++) { iconArray* = iconregister.registerIcon("modtutoriel:" + type*); } }
Au niveau du IconRegister, peut être que le code à changer en 1.7 ?
-
en 1.7 Icon devient IIcon
-
@‘Phenix246’:
en 1.7 Icon devient IIcon
Oui mais du coup ici en changeant Icon par IIcon tout le code devient faux :
iconArray* = iconregister.registerIcon("obsidianplus:" + type*);
Idem en bas :
return metadata < type.length && metadata >= 0 ? iconArray[metadata] : iconArray[0];
-
Il faut remplacer seulement les références à l’objet Icon, pas tout ce qui contient Icon …
Tu devrais apprendre le java, ça va t’aider à comprendre ce que tu fais. -
@‘robin4002’:
Il faut remplacer seulement les références à l’objet Icon, pas tout ce qui contient Icon …
Tu devrais apprendre le java, ça va t’aider à comprendre ce que tu fais.Okay, merci
Yeap c’est ce que je comptais faire