Probleme résolu + explication a bush à XP
-
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

-
Oui je sais, 2 sec
-
C’est ce que fait le code que BrokenSwing t’a donné, tu veux miner dans quelles directions ?
-
désolé

-
Peut toujours être amélioré, j’ai ajouté des trucs et changé d’autres pour être + cohérent
@Override public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) { if(!world.isRemote) { for(int i = -1; i <= 1; i++) { for(int k = -1; k <= 1; k++) { for(int l = -1; l <= 1; l++) { int blockX = x + i; int blockY = y + l; int blockZ = z + k; Vec3 look = entity.getLookVec(); double direction = Math.max(Math.max(Math.abs(look.xCoord), Math.abs(look.yCoord)), Math.abs(look.zCoord)); if(direction == Math.abs(look.xCoord)) { blockX = x; } else if(direction == Math.abs(look.yCoord)) { blockY = y; } else { blockZ = z; } Block blockBreakingIn = world.getBlock(blockX, blockY, blockZ); int meta = world.getBlockMetadata(blockX, blockY, blockZ); if(!(stack.getItemDamage() > stack.getMaxDamage())) { List <itemstack>drops = blockBreakingIn.getDrops(world, blockX, blockY, blockZ, meta, 0); int exp = blockBreakingIn.getExpDrop(world, meta, 0); world.setBlockToAir(blockX, blockY, blockZ); for(int j = 0; j < drops.size(); j++) { EntityItem item = new EntityItem(world, blockX, blockY, blockZ, drops.get(j)); world.spawnEntityInWorld(item); } if(exp > 0) { EntityXPOrb expOrb = new EntityXPOrb(world, blockX, blockY, blockZ, exp); world.spawnEntityInWorld(expOrb); } stack.damageItem(i, entity); } } } } } return true; } ```</itemstack> -
Super ! Merci beaucoup ! Comment je peux te remercier ?
-
+2 ? ^^
EDIT : Mais comme je l’ai dit tu peux améliorer le code surtout au niveau des directions