Probleme résolu + explication a bush à XP
-
Je te conseille de faire ton propre code, celui-ci utilise d’autres classes du mod que tu ne possède pas (même si il te serait possible de les récupérer vu que tu as les sources mais ce serai du plagia dans ce cas)
-
Oki j’essayerais
je vous le montrerais haha -
Bon bah je reviens parce que je suis complètement perdu !
package fr.xperiaonline.xperiamod.common; import net.minecraft.item.ItemPickaxe; public class ItemXperiteHammer extends ItemPickaxe { protected ItemXperiteHammer(ToolMaterial material) { super(material); } }Je ne sais pas du tout ou mettre : [font=monospace ][font=monospacepublic][font=monospace ][font=monospaceboolean][font=monospace ][font=monospaceonBlockDestroyed]font=monospace
-
onBlockDestroyed est une fonction qui appartient à la classe Item, ainsi toutes classe héritants de Item possèdent cette fonction, ce qui est le cas de ta classe ItemXperiteHammer (Item-> ItemTool -> ItemPickaxe -> ItemXperiteHammer) ainsi il te faut réécrire cette fonction dans ta classe :
package fr.xperiaonline.xperiamod.common; import net.minecraft.item.ItemPickaxe; public class ItemXperiteHammer extends ItemPickaxe { public ItemXperiteHammer(ToolMaterial material) { super(material); } public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) { //Tu met ton code ici, ça va ressembler à un truc avec 2 boucles et un gestion de la direction return false; } } -
Le truc c’est que je ne sais pas du tout quoi mettre dedans et je ne trouve aucune doc je cherche depuis pas mal de temps… même mon ancien codeur trouvais pas

-
Je n’ai pas de code près pour toi, désolé mais on va y aller par étape.
Premièrement on va oublier l’histoire de direction, on va faire deux boucles qui parcours les 9 blocs et qui les détruient@Override public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) { for(int i = -1; i <= 1; i++) { for(int k = -1; k <= 1; k++) { Block b = world.getBlock(i, y, k); int meta = world.getBlockMetadata(i, y, k); if(this.canHarvestBlock(block, stack) && stack.getItemDamage() > 0) { world.setBlockToAir(i, y, k); EntityItem item = new EntityItem(world, i, y, k, new ItemStack(b, 1, meta)); world.spawnEntityInWorld(item); stack.damageItem(i, entity); } } } return true; }Ce code devrait détruire les blocs dans une zone de 3x3 sur le sol (je l’espère)
-
Et non ça ne fait rien juste comme une pioche de base…
-
Essai d’enlever la condition if(this.canHarvestBlock(block, stack) && stack.getItemDamage() > 0) et si ça marche essai et mettant seulement canHarvest
-
Aucune des 2 solutions que tu me propose ne marche

-
Ce n’est pas normal, ça devrait marcher, mets des System.out.println(“Quelque chose”); un peu partout dans la fonction et vérifies que ça s’affiche dans les consoles, en double à chaque fois (une fois avec [Client thread/INFO] et une autre fois avec [Server thread/INFO], si il y en a qui manquent dis lesquels.
-
Je vais tester de mon côté
-
Par contre la je n’arrive pas a suivre

-
Perso j’ai un problème avec l’EntityItem, je vais régler ça
-
J’ai aucune erreur dans la console et le hammer a le meme comportement qu’une pioche
-
Je sais … OMG
public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) { for(int i = -1; i <= 1; i++) { for(int k = -1; k <= 1; k++) { Block b = world.getBlock(x + i, y, z + k); int meta = world.getBlockMetadata(x + i, y, z + k); if(stack.getItemDamage() > 0) { world.setBlockToAir(x + i, y, z + k); EntityItem item = new EntityItem(world, x + i, y, z + k, new ItemStack(b, 1, meta)); world.spawnEntityInWorld(item); stack.damageItem(i, entity); } } } return true; } -
Je vais essayer en tout cas merci les gars

EDIT : Marche toujours pas
-
Fait ça ```java
public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) {for(int i = -1; i <= 1; i++) {
for(int k = -1; k <= 1; k++) {
System.out.println(Math.addExact(x, i) + " " + y + " " + Math.addExact(z, k));
Block b = world.getBlock(x + i, y, z + k);
int meta = world.getBlockMetadata(x + i, y, z + k);
System.out.println(stack.getItemDamage());
if(stack.getItemDamage() > 0) {
System.out.println("Breaking " + b.getLocalizedName());
world.setBlockToAir(x + i, y, z + k);
EntityItem item = new EntityItem(world, x + i, y, z + k, new ItemStack(b, 1, meta));
world.spawnEntityInWorld(item);
stack.damageItem(i, entity);
}
}
}
return true;
} -
Tien voila :
[17:25:34] [Server thread/INFO]: Player443 has just earned the achievement [Taking Inventory] [17:25:34] [Client thread/INFO]: [CHAT] Player443 has just earned the achievement [Taking Inventory] [17:25:40] [Client thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -275 74 359 0 [17:25:40] [Client thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -275 74 360 0 [17:25:40] [Client thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -275 74 361 0 [17:25:40] [Client thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -274 74 359 0 [17:25:40] [Client thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -274 74 360 0 [17:25:40] [Client thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -274 74 361 0 [17:25:40] [Client thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -273 74 359 0 [17:25:40] [Client thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -273 74 360 0 [17:25:40] [Client thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -273 74 361 0 [17:25:40] [Server thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -275 74 359 0 [17:25:40] [Server thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -275 74 360 0 [17:25:40] [Server thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -275 74 361 0 [17:25:40] [Server thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -274 74 359 0 [17:25:40] [Server thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -274 74 360 0 [17:25:40] [Server thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -274 74 361 0 [17:25:40] [Server thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -273 74 359 0 [17:25:40] [Server thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -273 74 360 0 [17:25:40] [Server thread/INFO] [STDOUT]: [fr.xperiaonline.xperiamod.common.ItemXperiteHammer:onBlockDestroyed:25]: -273 74 361 0 -
Remplace ```java
if(stack.getItemDamage() > 0)Par ```java if(!stack.getItemDamage() > stack.getMaxDamage()) -
Sa marche ! mais pas de direction lol sa mine de façon horizontale
