MFF

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

    Quelques bugs sur mes mobs

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.8
    22 Messages 4 Publieurs 4.7k 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.
    • SCAREXS Hors-ligne
      SCAREX
      dernière édition par

      Est-tu sûr que le rendu de ton model est bien appelé ? Rajoute des logs dans la fonction de render du model (dans la classe du model, pas celle du render). Pour ton entité qui ne supporte pas la gravité : si tu ne mets rien dans la fonction onUpdate ta balle risque pas de faire grand chose. Je te conseille d’aller voir le code de EntityThrowable (je te conseille de le recopier plutôt d’extends EntityThrowable, car (comme d’habitude) Mojang la codée avec les pieds : tout est en private).

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

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

        Je ne veut pas extends mon entity bullet_casing EntityTrowable, car le rôle de l’entité est juste de tomber à tes pieds lors d’un tir (une douille quoi) et je ne vais pas me faire chier avec plein de.méthode inutile.

        Sinon, mon ordinateur à décider.que.mon clavier écrivent plus, mais ouvrent les raccourcis. J’ai su le redémarrer, donc le print du modèle va devoir attendre

        Envoyé de mon SM-G357FZ en utilisant Tapatalk

        Membre fantôme
        Je développe maintenant un jeu sur UnrealEngine4


        Contact :…

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

          Je n’ai pas dis d’extends EntityThrowable justement. Mais de recopier la classe pour la ré-écrire proprement. Histoire d’avoir une base solide (plus ou moins solide) sur laquelle démarrer.

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

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

            Bon, je reprend ce topic, maintenant que je peut coder avec mon nouvel ordi
            J’ai recopié la classe EntityThrowable, et la douille est maintenant entrainée par la gravité, mais passe a travers les blocs
            j’ai tenté de mettre la gravité a 0 lors d’un contact bloc, rien n’y fait
            Et mon entité Bullet n’a toujours pas son model, mais celui de la flèche

            #Classe du render de la balle(Classe du render de la balle)

            package eryah.usefulthings.client.render;
            
            import net.minecraft.client.Minecraft;
            import net.minecraft.client.model.ModelBase;
            import net.minecraft.client.renderer.GlStateManager;
            import net.minecraft.client.renderer.Tessellator;
            import net.minecraft.client.renderer.WorldRenderer;
            import net.minecraft.client.renderer.entity.Render;
            import net.minecraft.client.renderer.entity.RenderManager;
            import net.minecraft.entity.Entity;
            import net.minecraft.util.MathHelper;
            import net.minecraft.util.ResourceLocation;
            import net.minecraftforge.fml.relauncher.Side;
            import net.minecraftforge.fml.relauncher.SideOnly;
            
            import org.lwjgl.opengl.GL11;
            
            import eryah.usefulthings.client.models.ModelBullet;
            import eryah.usefulthings.entity.projectile.EBullet;
            
            @SideOnly(Side.CLIENT)
            public class RenderBullet extends Render
            {
                private static final ResourceLocation Textures = new ResourceLocation("ut:textures/entity/bullet.png");
                /** instance of ModelBoat for rendering */
                protected ModelBase modelBullet = new ModelBullet();
            
                public RenderBullet(RenderManager p_i46193_1_, ModelBullet model, float shadow)
                {
                    super(Minecraft.getMinecraft().getRenderManager());
                }
            
                public void doRender(EBullet p_180551_1_, double p_180551_2_, double p_180551_4_, double p_180551_6_, float p_180551_8_, float p_180551_9_)
                {
                    this.bindEntityTexture(p_180551_1_);
                    GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
                    GlStateManager.pushMatrix();
                    GlStateManager.translate((float)p_180551_2_, (float)p_180551_4_, (float)p_180551_6_);
                    GlStateManager.rotate(p_180551_1_.prevRotationYaw + (p_180551_1_.rotationYaw - p_180551_1_.prevRotationYaw) * p_180551_9_ - 90.0F, 0.0F, 1.0F, 0.0F);
                    GlStateManager.rotate(p_180551_1_.prevRotationPitch + (p_180551_1_.rotationPitch - p_180551_1_.prevRotationPitch) * p_180551_9_, 0.0F, 0.0F, 1.0F);
                    Tessellator tessellator = Tessellator.getInstance();
                    WorldRenderer worldrenderer = tessellator.getWorldRenderer();
                    byte b0 = 0;
                    float f2 = 0.0F;
                    float f3 = 0.5F;
                    float f4 = (float)(0 + b0 * 10) / 32.0F;
                    float f5 = (float)(5 + b0 * 10) / 32.0F;
                    float f6 = 0.0F;
                    float f7 = 0.15625F;
                    float f8 = (float)(5 + b0 * 10) / 32.0F;
                    float f9 = (float)(10 + b0 * 10) / 32.0F;
                    float f10 = 0.05625F;
                    GlStateManager.enableRescaleNormal();
                    float f11 = (float)p_180551_1_.arrowShake - p_180551_9_;
            
                    if (f11 > 0.0F)
                    {
                        float f12 = -MathHelper.sin(f11 * 3.0F) * f11;
                        GlStateManager.rotate(f12, 0.0F, 0.0F, 1.0F);
                    }
            
                    GlStateManager.rotate(45.0F, 1.0F, 0.0F, 0.0F);
                    GlStateManager.scale(f10, f10, f10);
                    GlStateManager.translate(-4.0F, 0.0F, 0.0F);
                    GL11.glNormal3f(f10, 0.0F, 0.0F);
                    worldrenderer.startDrawingQuads();
                    worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f8);
                    worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f8);
                    worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f9);
                    worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f9);
                    tessellator.draw();
                    GL11.glNormal3f(-f10, 0.0F, 0.0F);
                    worldrenderer.startDrawingQuads();
                    worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f8);
                    worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f8);
                    worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f9);
                    worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f9);
                    tessellator.draw();
            
                    for (int i = 0; i < 4; ++i)
                    {
                        GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
                        GL11.glNormal3f(0.0F, 0.0F, f10);
                        worldrenderer.startDrawingQuads();
                        worldrenderer.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)f2, (double)f4);
                        worldrenderer.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)f3, (double)f4);
                        worldrenderer.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)f3, (double)f5);
                        worldrenderer.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)f2, (double)f5);
                        tessellator.draw();
                    }
            
                    GlStateManager.disableRescaleNormal();
                    this.modelBullet.render(p_180551_1_, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
                    GlStateManager.popMatrix();
            
                }
            
                protected ResourceLocation getEntityTexture(EBullet p_180550_1_)
                {
                    return Textures;
                }
            
                /**
                 * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
                 */
                protected ResourceLocation getEntityTexture(Entity entity)
                {
                    return this.getEntityTexture((EBullet)entity);
                }
            
                /**
                 * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
                 * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
                 * (Render<t extends="" entity="">) and this method has signature public void func_76986_a(T entity, double d, double d1,
                 * double d2, float f, float f1). But JAD is pre 1.5 so doe
                 */
                public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float partialTicks)
                {
                    this.doRender((EBullet)entity, x, y, z, p_76986_8_, partialTicks);
                }
            }
            

            #Classe de la douille(Classe de la douille)

            package eryah.usefulthings.entity.item;
            
            import java.util.List;
            
            import net.minecraft.block.Block;
            import net.minecraft.entity.Entity;
            import net.minecraft.entity.EntityLivingBase;
            import net.minecraft.entity.player.EntityPlayer;
            import net.minecraft.entity.projectile.EntityThrowable;
            import net.minecraft.init.Blocks;
            import net.minecraft.init.Items;
            import net.minecraft.item.ItemStack;
            import net.minecraft.nbt.NBTTagCompound;
            import net.minecraft.util.AxisAlignedBB;
            import net.minecraft.util.BlockPos;
            import net.minecraft.util.EnumParticleTypes;
            import net.minecraft.util.MathHelper;
            import net.minecraft.util.MovingObjectPosition;
            import net.minecraft.util.ResourceLocation;
            import net.minecraft.util.Vec3;
            import net.minecraft.world.World;
            import net.minecraftforge.fml.relauncher.Side;
            import net.minecraftforge.fml.relauncher.SideOnly;
            
            public class BulletCasing extends Entity{
            
            private int xTile = -1;
                private int yTile = -1;
                private int zTile = -1;
                private Block inTile;
                protected boolean inGround;
                public int throwableShake;
                /** The entity that threw this throwable item. */
                private EntityLivingBase thrower;
                private String throwerName;
                private int ticksInGround;
                private int ticksInAir;
                private static final String __OBFID = "CL_00001723";
            
            public BulletCasing(World worldIn)
                {
                    super(worldIn);
            
                }
            
            public void onCollideWithPlayer(EntityPlayer entityIn)
               {
                           entityIn.inventory.addItemStackToInventory(new ItemStack(Items.arrow, 1));
                           this.playSound("random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);
                           entityIn.onItemPickup(this, 1);
                           this.setDead();            
               }
            
            @SideOnly(Side.CLIENT)
               public boolean isInRangeToRenderDist(double distance)
               {
                   double d1 = this.getEntityBoundingBox().getAverageEdgeLength() * 4.0D;
                   d1 *= 64.0D;
                   return distance < d1 * d1;
               }
            
               public BulletCasing(World worldIn, EntityLivingBase throwerIn)
               {
                   super(worldIn);
                   this.thrower = throwerIn;
                   this.setSize(0.25F, 0.25F);
                   this.setLocationAndAngles(throwerIn.posX, throwerIn.posY + (double)throwerIn.getEyeHeight(), throwerIn.posZ, throwerIn.rotationYaw, throwerIn.rotationPitch);
                   this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
                   this.posY -= 0.10000000149011612D;
                   this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
                   this.setPosition(this.posX, this.posY, this.posZ);
                   float f = 0.4F;
                   this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
                   this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
                   this.motionY = (double)(-MathHelper.sin((this.rotationPitch + this.getInaccuracy()) / 180.0F * (float)Math.PI) * f);
                   this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, this.getVelocity(), 1.0F);
               }
            
               public BulletCasing(World worldIn, double x, double y, double p_i1778_6_)
               {
                   super(worldIn);
                   this.ticksInGround = 0;
                   this.setSize(0.25F, 0.25F);
                   this.setPosition(x, y, p_i1778_6_);
               }
            
               protected float getVelocity()
               {
                   return 1.5F;
               }
            
               protected float getInaccuracy()
               {
                   return 0.0F;
               }
            
               /**
                * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction.
                *  
                * @param inaccuracy Higher means more error.
                */
               public void setThrowableHeading(double x, double y, double z, float velocity, float inaccuracy)
               {
                   float f2 = MathHelper.sqrt_double(x * x + y * y + z * z);
                   x /= (double)f2;
                   y /= (double)f2;
                   z /= (double)f2;
                   x += this.rand.nextGaussian() * 0.007499999832361937D * (double)inaccuracy;
                   y += this.rand.nextGaussian() * 0.007499999832361937D * (double)inaccuracy;
                   z += this.rand.nextGaussian() * 0.007499999832361937D * (double)inaccuracy;
                   x *= (double)velocity;
                   y *= (double)velocity;
                   z *= (double)velocity;
                   this.motionX = x;
                   this.motionY = y;
                   this.motionZ = z;
                   float f3 = MathHelper.sqrt_double(x * x + z * z);
                   this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(x, z) * 180.0D / Math.PI);
                   this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(y, (double)f3) * 180.0D / Math.PI);
                   this.ticksInGround = 0;
               }
            
               /**
                * Sets the velocity to the args. Args: x, y, z
                */
               @SideOnly(Side.CLIENT)
               public void setVelocity(double x, double y, double z)
               {
                   this.motionX = x;
                   this.motionY = y;
                   this.motionZ = z;
            
                   if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F)
                   {
                       float f = MathHelper.sqrt_double(x * x + z * z);
                       this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(x, z) * 180.0D / Math.PI);
                       this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(y, (double)f) * 180.0D / Math.PI);
                   }
               }
            
               /**
                * Called to update the entity's position/logic.
                */
               public void onUpdate()
               {
                   this.lastTickPosX = this.posX;
                   this.lastTickPosY = this.posY;
                   this.lastTickPosZ = this.posZ;
                   super.onUpdate();
            
                   if (this.throwableShake > 0)
                   {
                       –this.throwableShake;
                   }
            
                   if (this.inGround)
                   {
                       if (this.worldObj.getBlockState(new BlockPos(this.xTile, this.yTile, this.zTile)).getBlock() == this.inTile)
                       {
                           ++this.ticksInGround;
            
                           if (this.ticksInGround == 1200)
                           {
                               this.setDead();
                           }
            
                           return;
                       }
            
                       this.inGround = false;
                       this.motionX *= (double)(this.rand.nextFloat() * 0.2F);
                       this.motionY *= (double)(this.rand.nextFloat() * 0.2F);
                       this.motionZ *= (double)(this.rand.nextFloat() * 0.2F);
                       this.ticksInGround = 0;
                       this.ticksInAir = 0;
                   }
                   else
                   {
                       ++this.ticksInAir;
                   }
            
                   Vec3 vec3 = new Vec3(this.posX, this.posY, this.posZ);
                   Vec3 vec31 = new Vec3(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
                   MovingObjectPosition movingobjectposition = this.worldObj.rayTraceBlocks(vec3, vec31);
                   vec3 = new Vec3(this.posX, this.posY, this.posZ);
                   vec31 = new Vec3(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
            
                   if (movingobjectposition != null)
                   {
                       vec31 = new Vec3(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
                   }
            
                   if (!this.worldObj.isRemote)
                   {
                       Entity entity = null;
                       List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.getEntityBoundingBox().addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D));
                       double d0 = 0.0D;
                       EntityLivingBase entitylivingbase = this.getThrower();
            
                       for (int j = 0; j < list.size(); ++j)
                       {
                           Entity entity1 = (Entity)list.get(j);
            
                           if (entity1.canBeCollidedWith() && (entity1 != entitylivingbase || this.ticksInAir >= 5))
                           {
                               float f = 0.3F;
                               AxisAlignedBB axisalignedbb = entity1.getEntityBoundingBox().expand((double)f, (double)f, (double)f);
                               MovingObjectPosition movingobjectposition1 = axisalignedbb.calculateIntercept(vec3, vec31);
            
                               if (movingobjectposition1 != null)
                               {
                                   double d1 = vec3.distanceTo(movingobjectposition1.hitVec);
            
                                   if (d1 < d0 || d0 == 0.0D)
                                   {
                                       entity = entity1;
                                       d0 = d1;
                                   }
                               }
                           }
                       }
            
                       if (entity != null)
                       {
                           movingobjectposition = new MovingObjectPosition(entity);
                       }
                   }
            
                   if (movingobjectposition != null)
                   {
                       if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && this.worldObj.getBlockState(movingobjectposition.getBlockPos()).getBlock() == Blocks.portal)
                       {
                           this.setInPortal();
                       }
                       else
                       {
                           this.onImpact(movingobjectposition);
                       }
                   }
            
                   this.posX += this.motionX;
                   this.posY += this.motionY;
                   this.posZ += this.motionZ;
                   float f1 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
                   this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
            
                   for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f1) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F)
                   {
                       ;
                   }
            
                   while (this.rotationPitch - this.prevRotationPitch >= 180.0F)
                   {
                       this.prevRotationPitch += 360.0F;
                   }
            
                   while (this.rotationYaw - this.prevRotationYaw < -180.0F)
                   {
                       this.prevRotationYaw -= 360.0F;
                   }
            
                   while (this.rotationYaw - this.prevRotationYaw >= 180.0F)
                   {
                       this.prevRotationYaw += 360.0F;
                   }
            
                   this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
                   this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
                   float f2 = 0.99F;
                   float f3 = this.getGravityVelocity();
            
                   if (this.isInWater())
                   {
                       for (int i = 0; i < 4; ++i)
                       {
                           float f4 = 0.25F;
                           this.worldObj.spawnParticle(EnumParticleTypes.WATER_BUBBLE, this.posX - this.motionX * (double)f4, this.posY - this.motionY * (double)f4, this.posZ - this.motionZ * (double)f4, this.motionX, this.motionY, this.motionZ, new int[0]);
                       }
            
                       f2 = 0.8F;
                   }
            
                   this.motionX *= (double)f2;
                   this.motionY *= (double)f2;
                   this.motionZ *= (double)f2;
                   this.motionY -= (double)f3;
                   this.setPosition(this.posX, this.posY, this.posZ);
               }
            
               /**
                * Gets the amount of gravity to apply to the thrown entity with each tick.
                */
               protected float getGravityVelocity()
               {
                   return 0.03F;
               }
            
               /**
                * Called when this EntityThrowable hits a block or entity.
                */
               protected void onImpact(MovingObjectPosition p_70184_1_) {
            }
            
               /**
                * (abstract) Protected helper method to write subclass entity data to NBT.
                */
               public void writeEntityToNBT(NBTTagCompound tagCompound)
               {
                   tagCompound.setShort("xTile", (short)this.xTile);
                   tagCompound.setShort("yTile", (short)this.yTile);
                   tagCompound.setShort("zTile", (short)this.zTile);
                   ResourceLocation resourcelocation = (ResourceLocation)Block.blockRegistry.getNameForObject(this.inTile);
                   tagCompound.setString("inTile", resourcelocation == null ? "" : resourcelocation.toString());
                   tagCompound.setByte("shake", (byte)this.throwableShake);
                   tagCompound.setByte("inGround", (byte)(this.inGround ? 1 : 0));
            
                   if ((this.throwerName == null || this.throwerName.length() == 0) && this.thrower instanceof EntityPlayer)
                   {
                       this.throwerName = this.thrower.getName();
                   }
            
                   tagCompound.setString("ownerName", this.throwerName == null ? "" : this.throwerName);
               }
            
               /**
                * (abstract) Protected helper method to read subclass entity data from NBT.
                */
               public void readEntityFromNBT(NBTTagCompound tagCompund)
               {
                   this.xTile = tagCompund.getShort("xTile");
                   this.yTile = tagCompund.getShort("yTile");
                   this.zTile = tagCompund.getShort("zTile");
            
                   if (tagCompund.hasKey("inTile", 8))
                   {
                       this.inTile = Block.getBlockFromName(tagCompund.getString("inTile"));
                   }
                   else
                   {
                       this.inTile = Block.getBlockById(tagCompund.getByte("inTile") & 255);
                   }
            
                   this.throwableShake = tagCompund.getByte("shake") & 255;
                   this.inGround = tagCompund.getByte("inGround") == 1;
                   this.throwerName = tagCompund.getString("ownerName");
            
                   if (this.throwerName != null && this.throwerName.length() == 0)
                   {
                       this.throwerName = null;
                   }
               }
            
               public EntityLivingBase getThrower()
               {
                   if (this.thrower == null && this.throwerName != null && this.throwerName.length() > 0)
                   {
                       this.thrower = this.worldObj.getPlayerEntityByName(this.throwerName);
                   }
            
                   return this.thrower;
               }
            
            @Override
            protected void entityInit() {
            // TODO Auto-generated method stub
            
            }
            
            }
            
            

            #Classe du render de la douille(Classe du render de la douille)

            package eryah.usefulthings.client.render;
            
            import net.minecraft.client.Minecraft;
            import net.minecraft.client.model.ModelBase;
            import net.minecraft.client.renderer.GlStateManager;
            import net.minecraft.client.renderer.entity.Render;
            import net.minecraft.client.renderer.entity.RenderManager;
            import net.minecraft.entity.Entity;
            import net.minecraft.util.ResourceLocation;
            import net.minecraftforge.fml.relauncher.Side;
            import net.minecraftforge.fml.relauncher.SideOnly;
            import eryah.usefulthings.client.models.ModelBulletCasing;
            import eryah.usefulthings.entity.item.BulletCasing;
            
            @SideOnly(Side.CLIENT)
            public class RenderBulletCasing extends Render
            {
            private static final ResourceLocation Textures = new ResourceLocation("ut:textures/entity/bullet_casing.png");
            protected ModelBase model = new ModelBulletCasing();
            
                public RenderBulletCasing(RenderManager p_i46185_1_, ModelBulletCasing model, float shadow)
                {
                    super(Minecraft.getMinecraft().getRenderManager());
                }
            
                /**
                 * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
                 * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
                 * (Render<t extends="" entity="">) and this method has signature public void func_76986_a(T entity, double d, double d1,
                 * double d2, float f, float f1). But JAD is pre 1.5 so doe
                 */
                public void doRender(BulletCasing entity, double x, double y, double z, float p_76986_8_, float partialTicks)
                {
                    GlStateManager.pushMatrix();
                    renderOffsetAABB(entity.getEntityBoundingBox(), x - entity.lastTickPosX, y - entity.lastTickPosY, z - entity.lastTickPosZ);
                    this.model.render(entity, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
                    GlStateManager.popMatrix();
                }
            
                /**
                 * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
                 */
                protected ResourceLocation getEntityTexture(BulletCasing entity)
                {
                    return Textures;
                }
            
                public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float partialTicks)
                {
                    this.doRender((BulletCasing)entity, x, y, z, p_76986_8_, partialTicks);
                }
            
                protected ResourceLocation getEntityTexture(Entity entity)
                {
                    return this.getEntityTexture((BulletCasing)entity);
                }
            
            }
            ```</t></t>

            Membre fantôme
            Je développe maintenant un jeu sur UnrealEngine4


            Contact :…

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

              Ton code doit être dans la fonction onImpact qui sera appelé lorsque l’entité touchera un mob ou un bloc.

              Normal que ta balle est le rendu de la flèche, t’as mis le code du rendu de la flèche dedans

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

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

                Pour la douille qui traverse le sol : C’est ce que j’ai fait

                Le render :
                Ah ok, donc ça

                Tessellator tessellator = Tessellator.getInstance();
                       WorldRenderer worldrenderer = tessellator.getWorldRenderer();
                       byte b0 = 0;
                       float f2 = 0.0F;
                       float f3 = 0.5F;
                       float f4 = (float)(0 + b0 * 10) / 32.0F;
                       float f5 = (float)(5 + b0 * 10) / 32.0F;
                       float f6 = 0.0F;
                       float f7 = 0.15625F;
                       float f8 = (float)(5 + b0 * 10) / 32.0F;
                       float f9 = (float)(10 + b0 * 10) / 32.0F;
                       float f10 = 0.05625F;
                       GlStateManager.enableRescaleNormal();
                       float f11 = (float)p_180551_1_.arrowShake - p_180551_9_;
                
                       if (f11 > 0.0F)
                       {
                           float f12 = -MathHelper.sin(f11 * 3.0F) * f11;
                           GlStateManager.rotate(f12, 0.0F, 0.0F, 1.0F);
                       }
                
                       GlStateManager.rotate(45.0F, 1.0F, 0.0F, 0.0F);
                       GlStateManager.scale(f10, f10, f10);
                       GlStateManager.translate(-4.0F, 0.0F, 0.0F);
                       GL11.glNormal3f(f10, 0.0F, 0.0F);
                       worldrenderer.startDrawingQuads();
                       worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f8);
                       worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f8);
                       worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f9);
                       worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f9);
                       tessellator.draw();
                       GL11.glNormal3f(-f10, 0.0F, 0.0F);
                       worldrenderer.startDrawingQuads();
                       worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f8);
                       worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f8);
                       worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f9);
                       worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f9);
                       tessellator.draw();
                
                       for (int i = 0; i < 4; ++i)
                       {
                           GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
                           GL11.glNormal3f(0.0F, 0.0F, f10);
                           worldrenderer.startDrawingQuads();
                           worldrenderer.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)f2, (double)f4);
                           worldrenderer.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)f3, (double)f4);
                           worldrenderer.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)f3, (double)f5);
                           worldrenderer.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)f2, (double)f5);
                           tessellator.draw();
                       }
                

                C’est ce qui gère le modèle de la flèche ?
                Je pense que c’est ça, mais je suis pas sur de sélectioner les bonnes choses 😕
                Que faut-il garder ?

                package eryah.usefulthings.client.render;
                
                import net.minecraft.client.Minecraft;
                import net.minecraft.client.model.ModelBase;
                import net.minecraft.client.renderer.GlStateManager;
                import net.minecraft.client.renderer.Tessellator;
                import net.minecraft.client.renderer.WorldRenderer;
                import net.minecraft.client.renderer.entity.Render;
                import net.minecraft.client.renderer.entity.RenderManager;
                import net.minecraft.entity.Entity;
                import net.minecraft.util.MathHelper;
                import net.minecraft.util.ResourceLocation;
                import net.minecraftforge.fml.relauncher.Side;
                import net.minecraftforge.fml.relauncher.SideOnly;
                
                import org.lwjgl.opengl.GL11;
                
                import eryah.usefulthings.client.models.ModelBullet;
                import eryah.usefulthings.entity.projectile.EBullet;
                
                @SideOnly(Side.CLIENT)
                public class RenderBullet extends Render
                {
                   private static final ResourceLocation Textures = new ResourceLocation("ut:textures/entity/bullet.png");
                   /** instance of ModelBoat for rendering */
                   protected ModelBase modelBullet = new ModelBullet();
                
                   public RenderBullet(RenderManager p_i46193_1_, ModelBullet model, float shadow)
                   {
                       super(Minecraft.getMinecraft().getRenderManager());
                   }
                
                   public void doRender(EBullet p_180551_1_, double p_180551_2_, double p_180551_4_, double p_180551_6_, float p_180551_8_, float p_180551_9_)
                   {
                       this.bindEntityTexture(p_180551_1_);
                       GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
                       GlStateManager.pushMatrix();
                       GlStateManager.translate((float)p_180551_2_, (float)p_180551_4_, (float)p_180551_6_);
                       GlStateManager.rotate(p_180551_1_.prevRotationYaw + (p_180551_1_.rotationYaw - p_180551_1_.prevRotationYaw) * p_180551_9_ - 90.0F, 0.0F, 1.0F, 0.0F);
                       GlStateManager.rotate(p_180551_1_.prevRotationPitch + (p_180551_1_.rotationPitch - p_180551_1_.prevRotationPitch) * p_180551_9_, 0.0F, 0.0F, 1.0F);
                       Tessellator tessellator = Tessellator.getInstance();
                       WorldRenderer worldrenderer = tessellator.getWorldRenderer();
                       byte b0 = 0;
                       float f2 = 0.0F;
                       float f3 = 0.5F;
                       float f4 = (float)(0 + b0 * 10) / 32.0F;
                       float f5 = (float)(5 + b0 * 10) / 32.0F;
                       float f6 = 0.0F;
                       float f7 = 0.15625F;
                       float f8 = (float)(5 + b0 * 10) / 32.0F;
                       float f9 = (float)(10 + b0 * 10) / 32.0F;
                       float f10 = 0.05625F;
                       GlStateManager.enableRescaleNormal();
                       float f11 = (float)p_180551_1_.arrowShake - p_180551_9_;
                
                       if (f11 > 0.0F)
                       {
                           float f12 = -MathHelper.sin(f11 * 3.0F) * f11;
                           GlStateManager.rotate(f12, 0.0F, 0.0F, 1.0F);
                       }
                
                       GlStateManager.rotate(45.0F, 1.0F, 0.0F, 0.0F);
                       GlStateManager.scale(f10, f10, f10);
                       GlStateManager.translate(-4.0F, 0.0F, 0.0F);
                       GL11.glNormal3f(f10, 0.0F, 0.0F);
                       worldrenderer.startDrawingQuads();
                       worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f8);
                       worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f8);
                       worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f9);
                       worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f9);
                       tessellator.draw();
                       GL11.glNormal3f(-f10, 0.0F, 0.0F);
                       worldrenderer.startDrawingQuads();
                       worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f8);
                       worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f8);
                       worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f9);
                       worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f9);
                       tessellator.draw();
                
                       for (int i = 0; i < 4; ++i)
                       {
                           GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
                           GL11.glNormal3f(0.0F, 0.0F, f10);
                           worldrenderer.startDrawingQuads();
                           worldrenderer.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)f2, (double)f4);
                           worldrenderer.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)f3, (double)f4);
                           worldrenderer.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)f3, (double)f5);
                           worldrenderer.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)f2, (double)f5);
                           tessellator.draw();
                       }
                
                       GlStateManager.disableRescaleNormal();
                       this.modelBullet.render(p_180551_1_, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
                       GlStateManager.popMatrix();
                
                   }
                
                   protected ResourceLocation getEntityTexture(EBullet p_180550_1_)
                   {
                       return Textures;
                   }
                
                   /**
                    * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
                    */
                   protected ResourceLocation getEntityTexture(Entity entity)
                   {
                       return this.getEntityTexture((EBullet)entity);
                   }
                
                   /**
                    * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
                    * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
                    * (Render<t extends="" entity="">) and this method has signature public void func_76986_a(T entity, double d, double d1,
                    * double d2, float f, float f1). But JAD is pre 1.5 so doe
                    */
                   public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float partialTicks)
                   {
                       this.doRender((EBullet)entity, x, y, z, p_76986_8_, partialTicks);
                   }
                }
                

                J’ai enlevé la bonne partie du code, mais maintenant, le model se render 2-3blocs trop haut 😕
                Et j’au aussi remarqué un  glitch, étrange. Je pensais que mes balles disparaissent au bout de 2-3 secondes, mais non, enfaite, les balles reculent Reculent, monte, décendent, avance, enfin les balles font ce quelles veulent enfaite ( et restent en l’air ) de 4 blocs environ au bout d’un moment Oo

                EDIT : C’est bon, j’ai corrigé le problème du modèle de la balle, reste le modèle de la douille, et son nocilp permanent</t>

                Membre fantôme
                Je développe maintenant un jeu sur UnrealEngine4


                Contact :…

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

                  Je comprends pas le problème avec la douille ? Le problème vient du rendu ou de l’entité ?

                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                  Pas de demandes de support par MP ni par skype SVP.
                  Je n'accepte sur skype que l…

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

                    Le problème est que l’entity passe a travers les blocs, donc c’est la classe de l’entité

                    Membre fantôme
                    Je développe maintenant un jeu sur UnrealEngine4


                    Contact :…

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

                      Renvoi la classe de l’entité

                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                      Pas de demandes de support par MP ni par skype SVP.
                      Je n'accepte sur skype que l…

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

                        Elle n’a pas changé (Classe d’EntityThrowable)

                        package eryah.usefulthings.entity.item;
                        
                        import java.util.List;
                        
                        import net.minecraft.block.Block;
                        import net.minecraft.entity.Entity;
                        import net.minecraft.entity.EntityLivingBase;
                        import net.minecraft.entity.player.EntityPlayer;
                        import net.minecraft.entity.projectile.EntityThrowable;
                        import net.minecraft.init.Blocks;
                        import net.minecraft.init.Items;
                        import net.minecraft.item.ItemStack;
                        import net.minecraft.nbt.NBTTagCompound;
                        import net.minecraft.util.AxisAlignedBB;
                        import net.minecraft.util.BlockPos;
                        import net.minecraft.util.EnumParticleTypes;
                        import net.minecraft.util.MathHelper;
                        import net.minecraft.util.MovingObjectPosition;
                        import net.minecraft.util.ResourceLocation;
                        import net.minecraft.util.Vec3;
                        import net.minecraft.world.World;
                        import net.minecraftforge.fml.relauncher.Side;
                        import net.minecraftforge.fml.relauncher.SideOnly;
                        
                        public class BulletCasing extends Entity{
                        
                        private int xTile = -1;
                           private int yTile = -1;
                           private int zTile = -1;
                           private Block inTile;
                           protected boolean inGround;
                           public int throwableShake;
                           /** The entity that threw this throwable item. */
                           private EntityLivingBase thrower;
                           private String throwerName;
                           private int ticksInGround;
                           private int ticksInAir;
                           private static final String __OBFID = "CL_00001723";
                        
                        public BulletCasing(World worldIn)
                           {
                               super(worldIn);
                        
                           }
                        
                        public void onCollideWithPlayer(EntityPlayer entityIn)
                           {
                                       entityIn.inventory.addItemStackToInventory(new ItemStack(Items.arrow, 1));
                                       this.playSound("random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);
                                       entityIn.onItemPickup(this, 1);
                                       this.setDead();            
                           }
                        
                        @SideOnly(Side.CLIENT)
                           public boolean isInRangeToRenderDist(double distance)
                           {
                               double d1 = this.getEntityBoundingBox().getAverageEdgeLength() * 4.0D;
                               d1 *= 64.0D;
                               return distance < d1 * d1;
                           }
                        
                           public BulletCasing(World worldIn, EntityLivingBase throwerIn)
                           {
                               super(worldIn);
                               this.thrower = throwerIn;
                               this.setSize(0.25F, 0.25F);
                               this.setLocationAndAngles(throwerIn.posX, throwerIn.posY + (double)throwerIn.getEyeHeight(), throwerIn.posZ, throwerIn.rotationYaw, throwerIn.rotationPitch);
                               this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
                               this.posY -= 0.10000000149011612D;
                               this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
                               this.setPosition(this.posX, this.posY, this.posZ);
                               float f = 0.4F;
                               this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
                               this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
                               this.motionY = (double)(-MathHelper.sin((this.rotationPitch + this.getInaccuracy()) / 180.0F * (float)Math.PI) * f);
                               this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, this.getVelocity(), 1.0F);
                           }
                        
                           public BulletCasing(World worldIn, double x, double y, double p_i1778_6_)
                           {
                               super(worldIn);
                               this.ticksInGround = 0;
                               this.setSize(0.25F, 0.25F);
                               this.setPosition(x, y, p_i1778_6_);
                           }
                        
                           protected float getVelocity()
                           {
                               return 1.5F;
                           }
                        
                           protected float getInaccuracy()
                           {
                               return 0.0F;
                           }
                        
                           /**
                            * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction.
                            *  
                            * @param inaccuracy Higher means more error.
                            */
                           public void setThrowableHeading(double x, double y, double z, float velocity, float inaccuracy)
                           {
                               float f2 = MathHelper.sqrt_double(x * x + y * y + z * z);
                               x /= (double)f2;
                               y /= (double)f2;
                               z /= (double)f2;
                               x += this.rand.nextGaussian() * 0.007499999832361937D * (double)inaccuracy;
                               y += this.rand.nextGaussian() * 0.007499999832361937D * (double)inaccuracy;
                               z += this.rand.nextGaussian() * 0.007499999832361937D * (double)inaccuracy;
                               x *= (double)velocity;
                               y *= (double)velocity;
                               z *= (double)velocity;
                               this.motionX = x;
                               this.motionY = y;
                               this.motionZ = z;
                               float f3 = MathHelper.sqrt_double(x * x + z * z);
                               this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(x, z) * 180.0D / Math.PI);
                               this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(y, (double)f3) * 180.0D / Math.PI);
                               this.ticksInGround = 0;
                           }
                        
                           /**
                            * Sets the velocity to the args. Args: x, y, z
                            */
                           @SideOnly(Side.CLIENT)
                           public void setVelocity(double x, double y, double z)
                           {
                               this.motionX = x;
                               this.motionY = y;
                               this.motionZ = z;
                        
                               if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F)
                               {
                                   float f = MathHelper.sqrt_double(x * x + z * z);
                                   this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(x, z) * 180.0D / Math.PI);
                                   this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(y, (double)f) * 180.0D / Math.PI);
                               }
                           }
                        
                           /**
                            * Called to update the entity's position/logic.
                            */
                           public void onUpdate()
                           {
                               this.lastTickPosX = this.posX;
                               this.lastTickPosY = this.posY;
                               this.lastTickPosZ = this.posZ;
                               super.onUpdate();
                        
                               if (this.throwableShake > 0)
                               {
                                   –this.throwableShake;
                               }
                        
                               if (this.inGround)
                               {
                                   if (this.worldObj.getBlockState(new BlockPos(this.xTile, this.yTile, this.zTile)).getBlock() == this.inTile)
                                   {
                                       ++this.ticksInGround;
                        
                                       if (this.ticksInGround == 1200)
                                       {
                                           this.setDead();
                                       }
                        
                                       return;
                                   }
                        
                                   this.inGround = false;
                                   this.motionX *= (double)(this.rand.nextFloat() * 0.2F);
                                   this.motionY *= (double)(this.rand.nextFloat() * 0.2F);
                                   this.motionZ *= (double)(this.rand.nextFloat() * 0.2F);
                                   this.ticksInGround = 0;
                                   this.ticksInAir = 0;
                               }
                               else
                               {
                                   ++this.ticksInAir;
                               }
                        
                               Vec3 vec3 = new Vec3(this.posX, this.posY, this.posZ);
                               Vec3 vec31 = new Vec3(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
                               MovingObjectPosition movingobjectposition = this.worldObj.rayTraceBlocks(vec3, vec31);
                               vec3 = new Vec3(this.posX, this.posY, this.posZ);
                               vec31 = new Vec3(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
                        
                               if (movingobjectposition != null)
                               {
                                   vec31 = new Vec3(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
                               }
                        
                               if (!this.worldObj.isRemote)
                               {
                                   Entity entity = null;
                                   List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.getEntityBoundingBox().addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D));
                                   double d0 = 0.0D;
                                   EntityLivingBase entitylivingbase = this.getThrower();
                        
                                   for (int j = 0; j < list.size(); ++j)
                                   {
                                       Entity entity1 = (Entity)list.get(j);
                        
                                       if (entity1.canBeCollidedWith() && (entity1 != entitylivingbase || this.ticksInAir >= 5))
                                       {
                                           float f = 0.3F;
                                           AxisAlignedBB axisalignedbb = entity1.getEntityBoundingBox().expand((double)f, (double)f, (double)f);
                                           MovingObjectPosition movingobjectposition1 = axisalignedbb.calculateIntercept(vec3, vec31);
                        
                                           if (movingobjectposition1 != null)
                                           {
                                               double d1 = vec3.distanceTo(movingobjectposition1.hitVec);
                        
                                               if (d1 < d0 || d0 == 0.0D)
                                               {
                                                   entity = entity1;
                                                   d0 = d1;
                                               }
                                           }
                                       }
                                   }
                        
                                   if (entity != null)
                                   {
                                       movingobjectposition = new MovingObjectPosition(entity);
                                   }
                               }
                        
                               if (movingobjectposition != null)
                               {
                                   if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && this.worldObj.getBlockState(movingobjectposition.getBlockPos()).getBlock() == Blocks.portal)
                                   {
                                       this.setInPortal();
                                   }
                                   else
                                   {
                                       this.onImpact(movingobjectposition);
                                   }
                               }
                        
                               this.posX += this.motionX;
                               this.posY += this.motionY;
                               this.posZ += this.motionZ;
                               float f1 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
                               this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
                        
                               for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f1) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F)
                               {
                                   ;
                               }
                        
                               while (this.rotationPitch - this.prevRotationPitch >= 180.0F)
                               {
                                   this.prevRotationPitch += 360.0F;
                               }
                        
                               while (this.rotationYaw - this.prevRotationYaw < -180.0F)
                               {
                                   this.prevRotationYaw -= 360.0F;
                               }
                        
                               while (this.rotationYaw - this.prevRotationYaw >= 180.0F)
                               {
                                   this.prevRotationYaw += 360.0F;
                               }
                        
                               this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
                               this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
                               float f2 = 0.99F;
                               float f3 = this.getGravityVelocity();
                        
                               if (this.isInWater())
                               {
                                   for (int i = 0; i < 4; ++i)
                                   {
                                       float f4 = 0.25F;
                                       this.worldObj.spawnParticle(EnumParticleTypes.WATER_BUBBLE, this.posX - this.motionX * (double)f4, this.posY - this.motionY * (double)f4, this.posZ - this.motionZ * (double)f4, this.motionX, this.motionY, this.motionZ, new int[0]);
                                   }
                        
                                   f2 = 0.8F;
                               }
                        
                               this.motionX *= (double)f2;
                               this.motionY *= (double)f2;
                               this.motionZ *= (double)f2;
                               this.motionY -= (double)f3;
                               this.setPosition(this.posX, this.posY, this.posZ);
                           }
                        
                           /**
                            * Gets the amount of gravity to apply to the thrown entity with each tick.
                            */
                           protected float getGravityVelocity()
                           {
                               return 0.03F;
                           }
                        
                           /**
                            * Called when this EntityThrowable hits a block or entity.
                            */
                           protected void onImpact(MovingObjectPosition p_70184_1_) {
                        }
                        
                           /**
                            * (abstract) Protected helper method to write subclass entity data to NBT.
                            */
                           public void writeEntityToNBT(NBTTagCompound tagCompound)
                           {
                               tagCompound.setShort("xTile", (short)this.xTile);
                               tagCompound.setShort("yTile", (short)this.yTile);
                               tagCompound.setShort("zTile", (short)this.zTile);
                               ResourceLocation resourcelocation = (ResourceLocation)Block.blockRegistry.getNameForObject(this.inTile);
                               tagCompound.setString("inTile", resourcelocation == null ? "" : resourcelocation.toString());
                               tagCompound.setByte("shake", (byte)this.throwableShake);
                               tagCompound.setByte("inGround", (byte)(this.inGround ? 1 : 0));
                        
                               if ((this.throwerName == null || this.throwerName.length() == 0) && this.thrower instanceof EntityPlayer)
                               {
                                   this.throwerName = this.thrower.getName();
                               }
                        
                               tagCompound.setString("ownerName", this.throwerName == null ? "" : this.throwerName);
                           }
                        
                           /**
                            * (abstract) Protected helper method to read subclass entity data from NBT.
                            */
                           public void readEntityFromNBT(NBTTagCompound tagCompund)
                           {
                               this.xTile = tagCompund.getShort("xTile");
                               this.yTile = tagCompund.getShort("yTile");
                               this.zTile = tagCompund.getShort("zTile");
                        
                               if (tagCompund.hasKey("inTile", 8))
                               {
                                   this.inTile = Block.getBlockFromName(tagCompund.getString("inTile"));
                               }
                               else
                               {
                                   this.inTile = Block.getBlockById(tagCompund.getByte("inTile") & 255);
                               }
                        
                               this.throwableShake = tagCompund.getByte("shake") & 255;
                               this.inGround = tagCompund.getByte("inGround") == 1;
                               this.throwerName = tagCompund.getString("ownerName");
                        
                               if (this.throwerName != null && this.throwerName.length() == 0)
                               {
                                   this.throwerName = null;
                               }
                           }
                        
                           public EntityLivingBase getThrower()
                           {
                               if (this.thrower == null && this.throwerName != null && this.throwerName.length() > 0)
                               {
                                   this.thrower = this.worldObj.getPlayerEntityByName(this.throwerName);
                               }
                        
                               return this.thrower;
                           }
                        
                        @Override
                        protected void entityInit() {
                        // TODO Auto-generated method stub
                        
                        }
                        
                        }
                        
                        

                        Membre fantôme
                        Je développe maintenant un jeu sur UnrealEngine4


                        Contact :…

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

                          Tu n’as toujours pas mis le code au bon endroit : le code dans onEntityCollideWithPlayer doit aller dans le onImpact

                          Site web contenant mes scripts : http://SCAREXgaming.github.io

                          Pas de demandes de support par MP ni par skype SVP.
                          Je n'accepte sur skype que l…

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

                          MINECRAFT FORGE FRANCE © 2024

                          Powered by NodeBB