• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Non résolu Dynamite ayant aucun effet

    Support pour les moddeurs
    1.7.10
    2
    3
    175
    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.
    • OverSquid
      OverSquid dernière édition par

      Hey, j’ai suivi le tuto sur comment créer une dynamite mais lorsque je la lance rien ne se passe une idée ?

      La classe Dynamite:

      package com.hypala.hypalacore.common;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.world.World;
      
      public class Dynamite extends Item
      {
          public ItemStack onItemRightClick(ItemStack stack ,World world, EntityPlayer player){
              world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));
              if(!world.isRemote){
                  world.spawnEntityInWorld(new EntityDynamite(world)); 
              }
              return stack;
          }
      }
      

      La classe EntityDynamite :

      package com.hypala.hypalacore.common;
      
      import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData;
      import io.netty.buffer.ByteBuf;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.projectile.EntityThrowable;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.util.MovingObjectPosition;
      import net.minecraft.world.World;
      
      public class EntityDynamite extends EntityThrowable implements IEntityAdditionalSpawnData{
          
          
         public EntityDynamite(World world, EntityLivingBase thrower){
              super(world,thrower);
          }
         private int fuseTime = 50;
         public EntityDynamite(World world){
             super(world);
         }
        
         @Override
         public void onUpdate() {
            super.onUpdate();
            if(fuseTime > 0){  //si fuseTime est supérieur à 0 alors
                this.fuseTime --; // retire 1 a la variable fuseTime
            }
            else if(!this.worldObj.isRemote){ //si le monde n'est pas distant, on est sur le monde serveur uniquement
                this.worldObj.newExplosion(this, this.posX, this.posY, this.posZ, 7.0F, true, true);  //(l'entité que l'on veut utiliser, x, y, z, puissance de l'explosion,  si l'explosion met le feux, si l'explosion casse les blocs)
                this.setDead();//On tue l'entité, on l'enlève
            }
         }
         @Override
         public void writeSpawnData(ByteBuf buffer) {
             buffer.writeInt(this.fuseTime);
             buffer.writeDouble(this.motionX);
             buffer.writeDouble(this.motionY);
             buffer.writeDouble(this.motionZ);
         }
         @Override
         public void readSpawnData(ByteBuf additionalData) {
                 this.fuseTime = additionalData.readInt();
                     
                 this.motionX = additionalData.readDouble();
             this.motionY = additionalData.readDouble();
             this.motionZ = additionalData.readDouble();
         }
      @Override
      protected void onImpact(MovingObjectPosition mop){
          this.motionX = 0;
          this.motionY = 0;
          this.motionZ = 0;
      }
      }
      

      Et la classe RenderDynamite :

      package com.hypala.hypalacore.common;
      
      import com.sun.prism.TextureMap;
      
      import net.minecraft.client.renderer.entity.Render;
      import net.minecraft.entity.Entity;
      import net.minecraft.item.Item;
      import net.minecraft.util.IIcon;
      import net.minecraft.util.ResourceLocation;
      
      public class renderDynamite extends Render
      {
          private Item dynamite;
          private int renderdynamite;
      
          public void doRender(Entity player, double x, double y, double z, float p_76986_8_ , float p_76986_9_){
              IIcon icon = this.dynamite.getIconFromDamage(this.renderdynamite);
          }
          
          public void DynamiteRender(Item Dynamite, int RenderDynamite){
              this.dynamite = Dynamite;
              this.renderdynamite = RenderDynamite;
          }
          public void DynamiteRender(Item Dynamite){
              this.DynamiteRender(Dynamite,0);
          }
      
          @Override
          protected ResourceLocation getEntityTexture(Entity p_110775_1_)
          {
              return null;
          }
      }
      
      

      Merci pour votre aide 😉

      1 réponse Dernière réponse Répondre Citer 0
      • SpyMan
        SpyMan dernière édition par SpyMan

        Yo, as tu compris ce que tu as fait au moins ? car la methode onImpect de la class de ton Entity n’est pas rempli correctement, rien dans le code qui est present dans cette methode ne fait allusion a une eventuelle création d’explosion
        pour rappel la fonction onImpact est appelé lorsque l’entity touche un surface solide.

        Le rendu a été lui aussi mal programmer, car la methode doRender contient seulement une var local qui est inutilisé :

        public void doRender(Entity player, double x, double y, double z, float p_76986_8_ , float p_76986_9_){
                IIcon icon = this.dynamite.getIconFromDamage(this.renderdynamite);
        }
        
        1 réponse Dernière réponse Répondre Citer 0
        • OverSquid
          OverSquid dernière édition par

          J’ai essayé de rajouter une explosion dans onImpact mais ça fait rien et pour le rendu je vois pas trop comment faire

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

          MINECRAFT FORGE FRANCE © 2018

          Powered by NodeBB