Une Pioche avec 2 modes de vitesse
-
heuu… Vous devez pas être à jour sur la version de Forge alors, je l’ai toujours vue deobfusquée cette fonction… (et ceux depuis 1.6.4)
-
Je le place ou exactement parce que j’ai essayer de le placer un peu n’importe ou toujours la meme erreur
-
Dans ta class de l’objet, au même niveau que “onItemRightClick” et tout le reste.
C’est une des fonctions de base d’un item (disponible dans la class Item que tu hérite). -
package fr.yahoo.mehdiboussalem.mehdmod.common; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; public class ItemMehdriumPickaxe extends ItemPickaxe { protected ItemMehdriumPickaxe(ToolMaterial material) { super(material); } public boolean getIsRepairable(ItemStack imput, ItemStack repair) { if(repair.getItem() == MehdMod.itemMehdrium) { return true; } return false; } public float func_150893_a(ItemStack stack, Block block) { return 5; } public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { if (player.isSneaking()){ if(!stack.hasTagCompound()) { stack.setTagCompound(new NBTTagCompound()); } byte mode = stack.getTagCompound().getByte("mode"); mode++; if(mode ==2) { mode=0; } stack.getTagCompound().setByte("mode", mode); if(!world.isRemote) { player.addChatMessage(new ChatComponentTranslation(mode == 0 ?"pickaxe.mode.message.0" : "pickaxe.mode.message.1" )); } } else { super.onItemRightClick(stack, world, player); } return stack; } public float getStrVsBlock(ItemStack stack, IBlockState state)// erreur a IBlockState { float speed = super.getStrVsBlock(stack, state); byte mode = stack.getTagCompound().getByte("mode"); if(mode == 1) return speed*2; else return speed*3; } }Comme ça j’ai encorre la meme erreur
-
Sur Eclipse :
Ctrl + clic gauche sur ‘ItemPickaxe’. Ça vas t’ouvrir la class. Tu fait la même chose sur le mot qui apparaît à la place (ItemTool je crois), et tu continue jusqu’à arrivé sur la class Item
OU
tu cherche la classe Item manuellement dans net.minecraft.item qui s’appelle item.classUne fois dessus, Ctrl+f et tu cherche ‘return 1.0F;’ Tu a normalement UNE occurrence. Tu copie la fonction, et tu la colle dans ta classe. C’est cette fonction qui gère la résistance du block.
-
@‘Jodge’:
Sur Eclipse :
Ctrl + clic gauche sur ‘ItemPickaxe’. Ça vas t’ouvrir la class. Tu fait la même chose sur le mot qui apparaît à la place (ItemTool je crois), et tu continue jusqu’à arrivé sur la class Item
OU
tu cherche la classe Item manuellement dans net.minecraft.item qui s’appelle item.classUne fois dessus, Ctrl+f et tu cherche ‘return 1.0F;’ Tu a normalement UNE occurrence. Tu copie la fonction, et tu la colle dans ta classe. C’est cette fonction qui gère la résistance du block.
package fr.yahoo.mehdiboussalem.mehdmod.common; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; public class ItemMehdriumPickaxe extends ItemPickaxe { protected ItemMehdriumPickaxe(ToolMaterial material) { super(material); } public boolean getIsRepairable(ItemStack imput, ItemStack repair) { if(repair.getItem() == MehdMod.itemMehdrium) { return true; } return false; } public float func_150893_a(ItemStack stack, Block block) { return 1.0F; } public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { if (player.isSneaking()){ if(!stack.hasTagCompound()) { stack.setTagCompound(new NBTTagCompound()); } byte mode = stack.getTagCompound().getByte("mode"); mode++; if(mode ==2) { mode=0; } stack.getTagCompound().setByte("mode", mode); if(!world.isRemote) { player.addChatMessage(new ChatComponentTranslation(mode == 0 ?"pickaxe.mode.message.0" : "pickaxe.mode.message.1" )); } } else { super.onItemRightClick(stack, world, player); } return stack; } public float getStrVsBlock(ItemStack stack, IBlockState state) { float speed = super.getStrVsBlock(stack, state); byte mode = stack.getTagCompound().getByte("mode"); if(mode == 1) return speed*2; else return speed*3; } }comme ça ? mais j’ai toujours l’erreur
-
Qu’elle erreur précisément ? (log)
Et a tu bien changer la fonction par celle de la 1.7.10 ? (Donc celle qui n’utilise pas IBlockStats)EDIT : Bon, j’ai re-re-re-re-setup un projet en 1.7.10 (vive les maj eclipse qui bousille tous ^^" En même temps passer de Indigo à Luna, voila voila x) )
public float func_150893_a(ItemStack p_150893_1_, Block p_150893_2_) { return 1.0F; }voila la fonction sur la dernier version de Forge en 1.7.10, dans la classe Item (elle est re-écrite ensuite sur la class ItemPickaxe)
Il faut que tu l’Override comme ceci :
public float func_150893_a(ItemStack stack, Block block) { float speed = super.func_150893_a(stack, block); // vitesse originel tirer de la classe ItemPickaxe // adapte ton switch en fonction des résultats possibles de ta variable (si tu n'as que deux mode, mais un if else, se sera peu être plus simple) switch(stack.getTagCompound().getByte("mode")) { case 1: return speed*2; case 2: return speed*3; default: return speed; } } -
@‘Jodge’:
Qu’elle erreur précisément ? (log)
Et a tu bien changer la fonction par celle de la 1.7.10 ? (Donc celle qui n’utilise pas IBlockStats)EDIT : Bon, j’ai re-re-re-re-setup un projet en 1.7.10 (vive les maj eclipse qui bousille tous ^^" En même temps passer de Indigo à Luna, voila voila x) )
public float func_150893_a(ItemStack p_150893_1_, Block p_150893_2_) { return 1.0F; }voila la fonction sur la dernier version de Forge en 1.7.10, dans la classe Item (elle est re-écrite ensuite sur la class ItemPickaxe)
Il faut que tu l’Override comme ceci :
public float func_150893_a(ItemStack stack, Block block) { float speed = super.func_150893_a(stack, block); // vitesse originel tirer de la classe ItemPickaxe // adapte ton switch en fonction des résultats possibles de ta variable (si tu n'as que deux mode, mais un if else, se sera peu être plus simple) switch(stack.getTagCompound().getByte("mode")) { case 1: return speed*2; case 2: return speed*3; default: return speed; } }Merci beaucoup sa marche parfaitement mais derniere question comment je met le topic en resolus

-
C’est écrit dans le post important : https://www.minecraftforgefrance.fr/showthread.php?tid=7
-
@‘robin4002’:
C’est écrit dans le post important : https://www.minecraftforgefrance.fr/showthread.php?tid=7
je trouve pas le bouton editer de mon topic
-
il y a sur la première page, en dessous de ton premier message.