MFF

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

    Dynamite qui explose trop

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    5 Messages 4 Publieurs 364 Vues 3 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.
    • HybrideeeH Hors-ligne
      Hybrideee
      dernière édition par

      Bonjour, j’ai créer une dynamite en m’aidant du tuto qui est sur le forum, elle fonctionne mais elle ne fais pas qu’une seule explosion, elle en fais énormément ( donc fais des trous énormes). Comment je peux modifier ça ?

      La class EntityDynamite:

      package com.hybride.mod.init;
      
      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 {
      	
      	private int fuseTime = 20;
      
      	public EntityDynamite(World world) {
      		super(world);
      		
      	}
      	public EntityDynamite(World world, EntityLivingBase thrower) {
      		super(world,thrower);
      	}
      	
      	protected void onImpact(MovingObjectPosition mop) {
      		this.motionX = 0;
      		this.motionY = 0;
      		this.motionZ = 0;
      	}
      	
      	public void onUpdate() {
      	super.onUpdate();
      	if(fuseTime > 0) {
      		this.fuseTime --;
      	}
      	else if (!this.worldObj.isRemote) {
      		this.worldObj.newExplosion(this, this.posX, this.posY, this.posZ, 2.0F, false, true);
      	}
      
      }
      	@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();	
      	}
      
      }
      

      La class DynamiteRender:

      package com.hybride.mod.items;
      
      import net.minecraft.client.renderer.entity.Render;
      import net.minecraft.client.renderer.texture.TextureMap;
      import net.minecraft.entity.Entity;
      import net.minecraft.item.Item;
      import net.minecraft.util.IIcon;
      import net.minecraft.util.ResourceLocation;
      
      public class DynamiteRender extends Render{
      	private Item Dynamite;
      	private int renderDynamite;
      
      public DynamiteRender(Item Dynamite, int RenderDynamite) {
      	this.Dynamite = Dynamite;
      	this.renderDynamite = RenderDynamite;
      }
      public DynamiteRender(Item Dynamite){
          this(Dynamite,0);
      }
      
      @Override
      public void doRender(Entity entity, double x, double y, double z, float p_76986_8_,
      		float p_76986_9_) {
      	IIcon icon = this.Dynamite.getIconFromDamage(this.renderDynamite);
      	
      }
      
      @Override
      protected ResourceLocation getEntityTexture(Entity entity) {
      	return TextureMap.locationItemsTexture;
      
      }
      }
      

      Et la class Dynamite:

      package com.hybride.mod.init;
      
      import com.hybride.mod.HybrideMod;
      
      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 Dynamite() {
      	    this.setMaxStackSize(64);
      	    this.setCreativeTab(HybrideMod.HybrideMod);
      	}
      	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, player));
      	        stack.stackSize--;
      	    }
      	    return stack;
      	}
      }
      

      merci.

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

        Mets ta ligne d’explosion à l’impact.
        C’est plus cohérent non ?

        Car là c’est normal que ça explose plein de fois c’est dans une fonction d’update…

        Et puis baisse la valeur de puissance de ton explosion aussi.

        Si je t'ai filé un coup de main n'oublie pas le + / -
        Par contre évite les demandes d'aides en MP, tu sera sympa'

        La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

        Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

        1 réponse Dernière réponse Répondre Citer 1
        • D Hors-ligne
          Drastic
          dernière édition par Drastic

          en fait, utilise ce code pour la classe de ton entité:

          public class DynamiteEntity extends EntityThrowable
          {
              private static final String __OBFID = "CL_00001722";
          
              public DynamiteEntity(World p_i1773_1_)
              {
                  super(p_i1773_1_);
              }
          
              public DynamiteEntity(World p_i1774_1_, EntityLivingBase p_i1774_2_)
              {
                  super(p_i1774_1_, p_i1774_2_);
              }
          
              public DynamiteEntity(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_)
              {
                  super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_);
              }
          
              /**
               * Called when this EntityThrowable hits a block or entity.
               */
              protected void onImpact(MovingObjectPosition p_70227_1_)
              {
                      this.worldObj.spawnParticle("smoke", this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D);
                      this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 2.0F, true);
                      
                  if (!this.worldObj.isRemote)
                  {
                      this.setDead();
                  }
                  
                  
                  
              }
          }
          

          le 2.0F est la valeur a modif pour la taille

          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

            Bonsoir, s’il veut une tnt qui explose au bout d’un certains temps et non à l’impacte c’est normal d’avoir l’explosion dans update. Ce qui manque, c’est la fonction setDeath pour supprimer l’entité de dynamite lors de l’explosion …

            1 réponse Dernière réponse Répondre Citer 1
            • HybrideeeH Hors-ligne
              Hybrideee
              dernière édition par

              Oui c’est bon. Je l’ai rajouté. Merci

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

              MINECRAFT FORGE FRANCE © 2024

              Powered by NodeBB