Le son ne se joue pas



  • Bonjour/Bonsoir, après avoir abandonné le projet d'un mod beaucoup trop complexe j'ai décider d'en recommencer un nouveau plus simple en 1.7.10 mais voilà que je commence à peine et que je rencontre un gros problème, je souhaite créer un item (Pacte avec le démon) qui, quand le joueur fait clic droit avec, se fait retirer une très grosse partie de sa vie (il ne lui restera plus qu'un demi cœur et si il le fait alors que sa vie n'est pas full il meurt), consomme l'item et donne un nouvel item en échange.

    Je voudrais en plus qu'un son se joue lors de l'utilisation de l'item mais il ne se joue pas et ça marque dans la console "Unable to play unknown soundEvent: cwm:other.pact"
    J'ai essayer plusieurs chose, regarder tout les recoins du forum, visiter plusieurs site, avant d'en arriver à vous demander de l'aide.

    Sachant que j'ai mis le fichier son dans un dossier appelé "other" qui est dans le dossier sounds.

    Voilà les codes :

    La class de l'item

    
    package com.nicoking60.cwm.common;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.DamageSource;
    import net.minecraft.world.World;
    
    public class DevilPact extends Item {
    
    public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entity){
    float var4 = 1.0F;
    int i = (int)(entity.prevPosX + (entity.posX - entity.prevPosX) * (double)var4);
    int j = (int)(entity.prevPosY + (entity.posY - entity.prevPosY) * (double)var4 + 1.62D - (double)entity.yOffset);
    int k = (int)(entity.prevPosZ + (entity.posZ - entity.prevPosZ) * (double)var4);
    
    if(true){
    if(entity instanceof EntityPlayer)((EntityPlayer)entity).inventory.addItemStackToInventory(new ItemStack(MainCWM.bloodGem, 1));
    }
    
    if(true){
    entity.attackEntityFrom(DamageSource.generic, 19);
    }
    
    if(true){
    if(entity instanceof EntityPlayer)((EntityPlayer)entity).inventory.consumeInventoryItem(MainCWM.devilPact);
    }
    
    if(true){
    world.playSoundEffect((double)i + 0.5D, (double)j + 0.5D, (double)k + 0.5D, "cwm:other.pact", 1.0F, 1.0F);
    }
    
    return itemstack;
    }
    }
    

    Le fichier sounds.json

    
    {
    
      "other.pact": {
        "category": "player",
        "sounds": [
          {
            "other/pact",
          }
        ]
      }
    

    Merci d'avance.


  • Administrateurs

    Ton fichier sounds.json est erroné, il manque une fermeture d'accolade à la fin.



  • Pour mettre la vie du joueur à un demie coeur voici le code, il te suffit juste de mettre ceci dans ta méthode du clic droit (bref je pense que tu sais) :

    
    entity.setHealth(1);
    


  • Merci Robin effectivement j'avais oublier une accolade  :s

    Mais malgré avoir réparer cette erreur la son ne se jouais toujours pas alors j'ai modifié encore une fois le .json pour donner ceci :

    
    {
    
      "other.pact": {
        "category": "player",
        "sounds": [
          {
            "name": "other/pact",
            "stream": false
          }
        ]
      }
    }
    
    

    Et après ça a marcher !

    Désoler de t'avoir déranger pour ça, la prochaine fois je nettoierai mes lunettes pour vérifier les bugs 🆒

    Julot je ne connaissais pas ce code merci de m'en faire part mais ce n'est pas ça que je veux, sinon le joueur pourrai spamer les pactes sans danger de mort.



  • player.setHealth(player.getHealth() - 19);
    

    (en supposant que setHealth supporte les valeurs négatives, si ce n'est pas le cas, calcule la valeur avant et fait un test par rapport à 0)



  • @'NicoKing60':

    Merci Robin effectivement j'avais oublier une accolade  :s

    Mais malgré avoir réparer cette erreur la son ne se jouais toujours pas alors j'ai modifié encore une fois le .json pour donner ceci :

    
    {
    
      "other.pact": {
        "category": "player",
        "sounds": [
          {
            "name": "other/pact",
            "stream": false
          }
        ]
      }
    }
    

    Et après ça a marcher !

    Désoler de t'avoir déranger pour ça, la prochaine fois je nettoierai mes lunettes pour vérifier les bugs 🆒

    Julot je ne connaissais pas ce code merci de m'en faire part mais ce n'est pas ça que je veux, sinon le joueur pourrai spamer les pactes sans danger de mort.

    Oui autant pour moi je n'avais pas réfléchi