Hammer



  • Bonjour , j'ai suivi le post hammer et j'en suis venue a sa mais j'aimerais le mettre en 3x3x1 alors que la il est en 5x3x1 et je sais pas comment faire merci d'avance.

    public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) {
    if(entity instanceof EntityPlayer) {
    
    EntityPlayer player = (EntityPlayer)entity;
    
    Vec3 lookVec = player.getLookVec();
    double xLook = Math.abs(lookVec.xCoord);
    double yLook = Math.abs(lookVec.yCoord);
    double zLook = Math.abs(lookVec.zCoord);
    
    //Ici accorder un peu moins d'importance à yLook peut-être, à voir …
    //L'idéal serait de savoir sur quelle face le joueur casse le bloc
    double max = Math.max(xLook, Math.max(yLook, zLook));
    
    //Ici si vous avez une meilleur façon de ne faire tourner que sur deux boucle
    //en fonction de la direction, je suis preneur
    
    int addX = 1;
    int addY = 1;
    int addZ = 1;
    
    if(max == xLook) {
    y -= 2;
    z -= 2;
    addX = 5;
    } else if(max == yLook) {
    x -= 2;
    z -= 2;
    addY = 5;
    } else if(max == zLook) {
    x -= 2;
    y -= 2;
    addZ = 5;
    }
    
    for(int xOffset = 0; xOffset < 5; xOffset += addX) {
    for(int yOffset = 0; yOffset < 5; yOffset += addY) {
    for(int zOffset = 0; zOffset < 5; zOffset += addZ) {
    
    Block currentBlock = world.getBlock(x + xOffset, y + yOffset, z + zOffset);
    int blockMetadata = world.getBlockMetadata(x + xOffset, y + yOffset, z + zOffset);
    
    BreakEvent event = new BreakEvent(x + xOffset, y + yOffset, x + zOffset, world, currentBlock, blockMetadata, (EntityPlayer)player);
    event.setCanceled(!player.capabilities.isCreativeMode);
    
    if(currentBlock.getBlockHardness(world, x + xOffset, y + yOffset, z + zOffset) >= 0) {
    event.setCanceled(false);
    }
    
    MinecraftForge.EVENT_BUS.post(event);
    
    if(!event.isCanceled()) {
    currentBlock.harvestBlock(world, (EntityPlayer)player, x + xOffset, y + yOffset, z + zOffset, blockMetadata);
    world.setBlockToAir(x + xOffset, y + yOffset, z + zOffset);
    
    boolean hasSilk = EnchantmentHelper.getSilkTouchModifier(player);
    boolean canSilk = currentBlock.canSilkHarvest(world, (EntityPlayer)player, x + xOffset, y + yOffset, z + zOffset, blockMetadata);
    if(ForgeHooks.canHarvestBlock(currentBlock, (EntityPlayer)player, blockMetadata) && (!hasSilk || hasSilk && !canSilk)) {
    
    //Ici on spawn de l'exp à chaque bloc, peut-être faire un total de l'expérience
    //et n'en faire spawn qu'un à la fin ?
    int exp = currentBlock.getExpDrop(world, blockMetadata, EnchantmentHelper.getFortuneModifier(player));
    currentBlock.dropXpOnBlockBreak(world, x + xOffset, y + yOffset, z + zOffset, exp);
    }
    }
    }
    }
    }
    return true;
    }
    return false;
    }
    
    

  • Rédacteurs

    Premièrement tu n'en est pas venu à ça, t'as trouvé ce code. Deuxièmement, là il est en 551 et non en 531. Troisièmement il te faut modifier le les valeurs des boucles et celle dans les conditions if(maxLook == xLook) { …} else if (...) { ...} else if (...) { ...}



  • @'BrokenSwing':

    Premièrement tu n'en est pas venu à ça, t'as trouvé ce code. Deuxièmement, là il est en 551 et non en 531. Troisièmement il te faut modifier le les valeurs des boucles et celle dans les conditions if(maxLook == xLook) { …} else if (...) { ...} else if (...) { ...}

    J'ai pas envie de faire l'assister mais je n'ai aucune idée de quoi mettre pourrais-tu éclairer ma lanterne?

    Sachant que j'ai été désagréable dans le temps j'ai envie de changer 😄

    Merci , comme même


  • Rédacteurs

    Remplace les 5 par des 3 et les 2 par le résultat de (3 - 1) / 2, soit 1.