Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Bug au niveau du timer

    Sans suite
    1.5.2
    3
    7
    2723
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Nolan-XX
      Nolan-XX last edited by robin4002

      Salut a tous !
      vous vous souvenez sans doute qu’il y a quelques temps , j’ai fais une demande sur comment faire un timer .
      Donc , grâce a jglrxavpok et Robin4002 , j’ai réussi.
      Mais maintenant , un autre problème ce pose !
      Mes balles font plus de dégâts :s !
      Voila les codes :

      Le fusil

      package mods.nono.MGSmod.weapons;
      
      import mods.nono.MGSmod.ShotsType.EntityShoot;
      import mods.nono.MGSmod.ShotsType.EntityShootSimple;
      import mods.nono.MGSmod.common.Main;
      import net.minecraft.client.renderer.texture.IconRegister;
      import net.minecraft.enchantment.Enchantment;
      import net.minecraft.enchantment.EnchantmentHelper;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.world.World;
      
      public class W_SOCOM extends Item {
          private int shootTimer;
      
          public W_SOCOM(int par1) {
              super(par1);
              this.maxStackSize = 1; // dit qu'il ne peut avoir que 1 pistolet
              this.setCreativeTab(Main.MGSTAB);
          }
      
          public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
      
          {
              boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0;
      
              if (flag || par3EntityPlayer.inventory.hasItem(Main.SOammo.itemID)) {
      
                  if (shootTimer == 0) {
                      par2World.spawnEntityInWorld(new EntityShootSimple(par2World, par3EntityPlayer, 1));
                      par3EntityPlayer.inventory.consumeInventoryItem(Main.SOammo.itemID);
                      shootTimer = 20;
                  }
      
              }
              return par1ItemStack;
          }
      
          public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean hasItemInHand)
          {
              if(shootTimer > 0)
              {
                  shootTimer--;
              }
          }
      
          @Override
          public void registerIcons(IconRegister iconRegister) {
              itemIcon = iconRegister.registerIcon("nono/MGSmod:SOCOM");
          }
      }
      

      L’entité de la balle

      package mods.nono.MGSmod.ShotsType;
      
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.EntityLiving;
      import net.minecraft.entity.projectile.EntityThrowable;
      import net.minecraft.util.DamageSource;
      import net.minecraft.util.MathHelper;
      import net.minecraft.util.MovingObjectPosition;
      import net.minecraft.world.World;
      
      public class EntityShootSimple extends EntityThrowable {
      
          private static final Entity thrower = null;
          private int ticksInGround;
      
          public EntityShootSimple(World par1World, EntityLiving par2EntityLiving, float speed) {
      
              super(par1World, par2EntityLiving);
      
              this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, speed, 1.0F);
      
          }
      
          public void setThrowableHeading(double par1, double par3, double par5, float par7, float par8) {
              float f2 = MathHelper.sqrt_double(par1 * par1 + par3 * par3 + par5 * par5);
              par1 /= (double) f2;
              par3 /= (double) f2;
              par5 /= (double) f2;
              par1 += this.rand.nextGaussian() * (double) (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double) par8;
              par3 += this.rand.nextGaussian() * (double) (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double) par8;
              par5 += this.rand.nextGaussian() * (double) (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double) par8;
              par1 *= (double) par7;
              par3 *= (double) par7;
              par5 *= (double) par7;
              this.motionX = par1;
              this.motionY = par3;
              this.motionZ = par5;
              float f3 = MathHelper.sqrt_double(par1 * par1 + par5 * par5);
              this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(par1, par5) * 180.0D / Math.PI);
              this.prevRotationPitch = this.rotationPitch = (float) (Math.atan2(par3, (double) f3) * 180.0D / Math.PI);
              this.ticksInGround = 0;
          }
      
          /*
           * if(var1.entityHit !=null){
           * 
           * if(var1.entityHit !=null){
           * 
           */
      
          @Override
      
          protected void onImpact(MovingObjectPosition var1) {
      
              if (var1.entityHit != null) {
      
                  var1.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.thrower), 5);
                  this.setDead();
              }
              else
              {
                  this.setDead();
              }
      
          }
      
          public void onUpdate() {
      
              super.onUpdate();
              if (this.ticksExisted == 175)
                  ;
          }
      
          protected float getGravityVelocity() {
              return 0;
          }
      }
      

      Le render de la balle

      package mods.nono.MGSmod.ShotsType;
      
      import net.minecraft.client.renderer.Tessellator;
      import net.minecraft.client.renderer.entity.Render;
      import net.minecraft.entity.Entity;
      
      import org.lwjgl.opengl.GL11;
      import org.lwjgl.opengl.GL12;
      
      public class RenderEntityShootSimple extends Render {
      
          private float size;
      
          public RenderEntityShootSimple(float size) {
              this.size = size;
          }
      
          @Override
      
          public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) {
      
              this.doRenderMonProjectile((EntityShootSimple) var1, var2, var4, var6, var8, var9);
      
          }
      
          public void doRenderMonProjectile(EntityShootSimple par1EntityMonProjectile, double par2, double par4, double par6, float par8, float par9) {
      
              GL11.glPushMatrix();
      
              GL11.glTranslatef((float) par2, (float) par4, (float) par6);
      
              GL11.glEnable(GL12.GL_RESCALE_NORMAL);
      
              float var10 = this.size;
      
              GL11.glScalef(var10 / 1.0F, var10 / 1.0F, var10 / 1.0F);
      
              byte var11 = 0;
      
              this.loadTexture("/nono/MGSmod/textures/items/Shot.png");
      
              Tessellator var12 = Tessellator.instance;
      
              float var13 = (float) (var11 % 16 * 16 + 0) / 16.0F;
      
              float var14 = (float) (var11 % 16 * 16 + 16) / 16.0F;
      
              float var15 = (float) (var11 / 16 * 16 + 0) / 16.0F;
      
              float var16 = (float) (var11 / 16 * 16 + 16) / 16.0F;
      
              float var17 = 1.0F;
      
              float var18 = 0.5F;
      
              float var19 = 0.25F;
      
              GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
      
              GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
      
              var12.startDrawingQuads();
      
              var12.setNormal(0.0F, 1.0F, 0.0F);
      
              var12.addVertexWithUV((double) (0.0F - var18), (double) (0.0F - var19), 0.0D, (double) var13, (double) var16);
      
              var12.addVertexWithUV((double) (var17 - var18), (double) (0.0F - var19), 0.0D, (double) var14, (double) var16);
      
              var12.addVertexWithUV((double) (var17 - var18), (double) (1.0F - var19), 0.0D, (double) var14, (double) var15);
      
              var12.addVertexWithUV((double) (0.0F - var18), (double) (1.0F - var19), 0.0D, (double) var13, (double) var15);
      
              var12.draw();
      
              GL11.glDisable(GL12.GL_RESCALE_NORMAL);
      
              GL11.glPopMatrix();
          }
      }
      

      Merci d’avance pour vos réponses …

      1 Reply Last reply Reply Quote 0
      • jglrxavpok
        jglrxavpok Modérateurs last edited by

        Je ne comprends pas bien la question. Les balles ne font plus ou font + de dégâts ?

        Aussi, je te conseille que la classe de ton render soit une classe fille de RenderEntity, pour que ce soit plus cohérent.
        De plus, je ne comprends pas trop l’intérêt de la ligne (dans update() de l’entity):

        if (this.ticksExisted == 175);
        
        1 Reply Last reply Reply Quote 0
        • Nolan-XX
          Nolan-XX last edited by

          Elle ne font plus aucun dégâts

          Cette ligne donne la durée de vie de la balle avant quelle disparaisse “naturellement”

          1 Reply Last reply Reply Quote 0
          • jglrxavpok
            jglrxavpok Modérateurs last edited by

            La balle ne disparaît pas “naturellement” avec cette ligne. C’est ce que j’appelle une “condition vide”, il n’y a absolument aucune instruction avec elle, donc pas de disparition magique 😕

            Sinon, pour le problème, je ne vois pas trop d’où ça peut venir 😕
            La balle apparaît-elle bien à l’écran ?

            1 Reply Last reply Reply Quote 0
            • Nolan-XX
              Nolan-XX last edited by

              Oui elle apparait bien …

              1 Reply Last reply Reply Quote 0
              • Nolan-XX
                Nolan-XX last edited by

                Up
                Personne ne peut m’aider ?

                1 Reply Last reply Reply Quote 0
                • Gugu
                  Gugu last edited by

                  Je ne vois pas la raison 😞

                  1 Reply Last reply Reply Quote 0
                  • 1 / 1
                  • First post
                    Last post
                  Design by Woryk
                  Contact / Mentions Légales / Faire un don

                  MINECRAFT FORGE FRANCE © 2018

                  Powered by NodeBB