MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Appliquer un son a un mob/getEntityAttribute

    Planifier Épinglé Verrouillé Déplacé Sans suite
    22 Messages 5 Publieurs 5.8k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • isadorI Hors-ligne
      isador Moddeurs confirmés Modérateurs
      dernière édition par

      Oue je pense que le bug vient de la

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        Il faut que tu enregistres les niveaux dans le tag nbt du mob. (fonction writeToNBT et readFromNBT)

        1 réponse Dernière réponse Répondre Citer 0
        • KujarothK Hors-ligne
          Kujaroth
          dernière édition par

          Ok merci… Je voie ce que tu veux dire mais c’est du chinois, j’ai jamais utilisé les writeToNBT et readFromNBT 😕

          T’aurai un tuto, gib ou quoi que se soit pour m’aider Histoire de voire comment ça marche et tout ? Car aucune idée de comment ça fonctionne et a priori la javadoc de forge n’en parle pas 😕 Ou alors la recherche windows est foireuse ^^’

          j espert que ça réglera aussi le problème de l’xp, j’ai beau mettre n’importe quoi, il prend les 5 de l’EntityMob -_-

          EDIT :

          dans le tag nbt du mob.

          Surtout ça que j’ai pas saisi ^^’

          >! Bonjour/Bonsoir,
          >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            public void writeEntityToNBT(NBTTagCompound nbtTag)
            {
            super.writeEntityToNBT(nbtTag);
            nbtTag.setTypeDeVariable("nom", this.taVariable);
            }
            
            public void readEntityFromNBT(NBTTagCompound nbtTag)
            {
            super.readEntityFromNBT(nbtTag);
            taVariable = nbtTag.getTypeDeVariable("nom");
            }
            
            1 réponse Dernière réponse Répondre Citer 0
            • KujarothK Hors-ligne
              Kujaroth
              dernière édition par

              Ha… C’est aussi “bidon” ^^ Je vais tester et j’edit mais je pense qu’il n’y aura pas de problème de se côté la 😃

              Reste toujours le problème du son pas contre… Le chemin est bon et tout, comprend pas xD

              >! Bonjour/Bonsoir,
              >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Fait voir ton code actuel ?

                1 réponse Dernière réponse Répondre Citer 0
                • KujarothK Hors-ligne
                  Kujaroth
                  dernière édition par

                  package dofusMobs.Client;
                  
                  import java.util.Random;
                  
                  import org.lwjgl.opengl.GL11;
                  
                  import net.minecraft.entity.Entity;
                  import net.minecraft.entity.EntityLivingBase;
                  import net.minecraft.entity.SharedMonsterAttributes;
                  import net.minecraft.entity.ai.EntityAISwimming;
                  import net.minecraft.entity.ai.attributes.AttributeInstance;
                  import net.minecraft.entity.ai.attributes.AttributeModifier;
                  import net.minecraft.entity.monster.EntityMob;
                  import net.minecraft.entity.player.EntityPlayer;
                  import net.minecraft.nbt.NBTTagCompound;
                  import net.minecraft.util.DamageSource;
                  import net.minecraft.world.World;
                  
                  public class EntityBouftonBlanc extends EntityMob
                  {
                  
                  int mobLevelGenerate=(int) Math.round((Math.random()*4+11)); // Genere un level
                  int maxHp = (int) this.getMaxHealth(); //affiche les HP max du mob
                  int hp = (int) this.getHealth(); // affiche les PV actuelle du mob (ne s'actualise pas ><)
                  static int mobLevel = 0; //level du mob)
                  
                  public String mobInfo = "Boufton Blanc"; // affiche le nom
                  public String infoHP = experienceValue + "/" + maxHp; // ça c'est juste pour voire ^^
                  public String lvl ="Level "+ mobLevel; // affiche le level
                  
                  public EntityBouftonBlanc(World par1World)
                  
                  {
                  
                  super(par1World);
                  this.tasks.addTask(1, new EntityAISwimming(this));
                  
                  /// Dit quelle level est le mob
                  switch (mobLevelGenerate)
                  {
                  case 11:
                  mobLevel = 11;
                  break;
                  case 12:
                  mobLevel = 12;
                  break;
                  case 13:
                  mobLevel = 13;
                  break;
                  case 14:
                  mobLevel = 14;
                  break;
                  case 15:
                  mobLevel = 15;
                  break;
                  default:
                  
                  }
                  
                  }
                  
                  @Override
                  protected void applyEntityAttributes()
                  {
                  
                  super.applyEntityAttributes();
                  
                  this.getEntityAttribute(SharedMonsterAttributes.followRange).setAttribute(1.0D);
                  this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setAttribute(0.25D);
                  this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setAttribute(10000.0D);
                  
                  if (mobLevel == 11)
                  {
                  this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute(8.0D);
                  this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(1.0D);
                  }
                  if (mobLevel == 12)
                  {
                  this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute(12.0D);
                  this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(1.5D);
                  }
                  if (mobLevel == 13)
                  {
                  this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute(14.0D);
                  this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(2.0D);
                  }
                  if (mobLevel == 14)
                  {
                  this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute(16.0D);
                  this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(2.0D);
                  }
                  if (mobLevel == 15)
                  {
                  this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute(18.0D);
                  this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(2.0D);
                  }
                  }
                  
                  public void writeEntityToNBT(NBTTagCompound nbtTag)
                  {
                  super.writeEntityToNBT(nbtTag);
                  nbtTag.setInteger("nom", mobLevel);
                  }
                  
                  public void readEntityFromNBT(NBTTagCompound nbtTag)
                  {
                  super.readEntityFromNBT(nbtTag);
                  mobLevel = nbtTag.getInteger("nom");
                  }
                  
                  protected void attackEntity(Entity par1Entity, float par2)
                  {
                  if (this.attackTime <= 0 && par2 < 2.0F && par1Entity.boundingBox.maxY > this.boundingBox.minY && par1Entity.boundingBox.minY < this.boundingBox.maxY)
                  {
                  this.attackTime = 30;
                  this.attackEntityAsMob(par1Entity);
                  }
                  }
                  
                  public boolean attackEntityFrom(DamageSource par1DamageSource, float par2)
                  
                  {
                  
                  if (this.isEntityInvulnerable())
                  {
                  return false;
                  }
                  else if (super.attackEntityFrom(par1DamageSource, par2))
                  {
                  Entity entity = par1DamageSource.getEntity();
                  
                  if (this.riddenByEntity != entity && this.ridingEntity != entity)
                  {
                  if (entity != this)
                  {
                  this.entityToAttack = entity;
                  
                  }
                  
                  return true;
                  }
                  else
                  {
                  return true;
                  }
                  }
                  else
                  {
                  return false;
                  }
                  }
                  
                  protected Entity findPlayerToAttack()
                  {
                  EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, 0.0D);
                  return entityplayer != null && this.canEntityBeSeen(entityplayer) ? entityplayer : null;
                  }
                  
                  /**
                  * Returns the sound this mob makes while it's alive.
                  */
                  protected String getLivingSound(World world, int x, int y, int z)
                  {
                  return "dofusmobs:sound.bouftou_ambiant";
                  }
                  
                  /**
                  * Returns the sound this mob makes when it is hurt.
                  */
                  protected String getHurtSound(World world, int x, int y, int z)
                  {
                  
                  return "dofusmobs:sound.bouftou_prendcoup.ogg";
                  }
                  
                  /**
                  * Returns the sound this mob makes on death.
                  * @return
                  */
                  protected String getDeathSound(World world, EntityPlayer player)
                  {
                  return "dofusmobs:sound.bouftou_meurt";
                  }
                  
                  protected String getAttackSound()
                  {
                  
                  return "dofusmobs:sound.bouftou_attaque";
                  }
                  
                  }
                  
                  

                  Voila ^^’ Désolé si c’est un peu brouillon ou mal organisé ^^’

                  >! Bonjour/Bonsoir,
                  >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    Donc comme dit sur la shoutbox, il faut enlever le static et il me faudrait la classe de l’event sound
                    dofusmobs:sound.bouftou_meurt
                    devrait être
                    dofusmobs:bouftou_meurt
                    Normalement; Idem pour les autres (d’ailleurs tu as encore un ogg)

                    1 réponse Dernière réponse Répondre Citer 0
                    • KujarothK Hors-ligne
                      Kujaroth
                      dernière édition par

                      Si j’enlève les statics les stats ne se génère pas ^^’

                      EvendSound

                      package dofusMobs.EventSound;
                      
                      import net.minecraftforge.client.event.sound.SoundLoadEvent;
                      import net.minecraftforge.event.ForgeSubscribe;
                      
                      public class EventSoundDofusMobs
                      {
                      
                      @ForgeSubscribe
                      public void onSound(SoundLoadEvent event)
                      {
                      try
                      {
                      event.manager.addSound("dofusmobs:bouftou_attaque.ogg");
                      event.manager.addSound("dofusmobs:bouftou_ambiant.ogg");
                      event.manager.addSound("dofusmobs:bouftou_meurt.ogg");
                      event.manager.addSound("dofusmobs:bouftou_prendcoup.ogg");
                      
                      }
                      catch(Exception e)
                      {
                      System.out.println("Failed to registry sound");
                      }
                      }
                      }
                      
                      

                      Oui y’a encore des .ogg car j’ai testé de multiple façon uniquement sur les 2 premières ^^

                      >! Bonjour/Bonsoir,
                      >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002R Hors-ligne
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                        dernière édition par

                        Les .ogg dans l’event sound c’est bon, il faut les mettre c’est dans le mob que c’était pas bon.
                        Sinon : http://pastebin.com/w8QbqNbz

                        1 réponse Dernière réponse Répondre Citer 0
                        • KujarothK Hors-ligne
                          Kujaroth
                          dernière édition par

                          Toujours LES mêmes problèmes, aucun sons, level et stats non généré 😕

                          EDIT : Si je remet le mobLevel en static c’est bon, mais y’a toujours le problème d’écrasement de stats…

                          >! Bonjour/Bonsoir,
                          >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                          1 réponse Dernière réponse Répondre Citer 0
                          • GuguG Hors-ligne
                            Gugu
                            dernière édition par

                            Un conseil, au lieu de faire par level les if etc… fait une fonction relative.

                            Par exemple, pour la vie tu peux faire ça si tu veux +2 hp par level :

                            30 (hp de base) + 2*level

                            Comme ça, pas de milliard de if, et le level peut être adapté pour faire une plus grande étendue de levels

                            "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                            ― Jordan B. Peterson

                            1 réponse Dernière réponse Répondre Citer 0
                            • KujarothK Hors-ligne
                              Kujaroth
                              dernière édition par

                              Le soucis c’est que la variable de level ne se charge pas si je ne la passe pas en static :s

                              C’est ce que j’avais essayer de faire un moment, mais toujours le soucis d’ecrasement de stat

                              >! Bonjour/Bonsoir,
                              >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                              1 réponse Dernière réponse Répondre Citer 0
                              • GuguG Hors-ligne
                                Gugu
                                dernière édition par

                                Et avec un this. devant mobLevel = this.worldObj.rand.nextInt(4) + 11; ?

                                Pour être sur que c’est appliqué a l’objet d’entité, et non toutes les entités

                                "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                                ― Jordan B. Peterson

                                1 réponse Dernière réponse Répondre Citer 0
                                • KujarothK Hors-ligne
                                  Kujaroth
                                  dernière édition par

                                  Les stats s’écrase…

                                  Je crois que je vais faire des level fixe au final… Ou pas du tout, t’en que j’y pense, mon expValue reste toujours 5 -_-

                                  >! Bonjour/Bonsoir,
                                  >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • 1
                                  • 2
                                  • 2 / 2
                                  • Premier message
                                    Dernier message
                                  Design by Woryk
                                  ContactMentions Légales

                                  MINECRAFT FORGE FRANCE © 2024

                                  Powered by NodeBB