Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

jezkyl33

Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by jezkyl33

  1. Hi, I made a mod with gun & ammo, and in Eclipse everything is OK in Client and Server sides.

    I'm recompiling -- OK

    I'm reobf -- OK

    I'm trying the Client.bat -- OK but my FML version in Minecraft menu is vnull.null.null.null

    [/img]

    But when i put Forge Client 3.4.9.171 in my .jar (and only Forge) and my Gun mod in the folder "mods" the launcher show me:

    1 mod loaded
    Minecraft Forge 3.4.9.171
    FML v2.2.106.176
    Forge Mod Loader version 2.2.106.176 for Minecraft 1.2.5
    mod_MinecraftForge : Loaded (minecraft.jar)
    
    
          Minecraft has crashed!      
          ----------------------      
    
    Minecraft has stopped running because it encountered a problem.
    
    
    
    
    --- BEGIN ERROR REPORT ad2e1cec --------
    Generated 17/09/12 15:44
    
    Minecraft: Minecraft 1.2.5
    OS: Windows 7 (amd64) version 6.1
    Java: 1.7.0_07, Oracle Corporation
    VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    LWJGL: 2.4.2
    OpenGL: GeForce GT 240M/PCIe/SSE2 version 3.3.0, NVIDIA Corporation
    
    java.lang.NullPointerException
    at cpw.mods.fml.common.modloader.ModLoaderModContainer.init(ModLoaderModContainer.java:356)
    at cpw.mods.fml.common.Loader.modInit(Loader.java:273)
    at cpw.mods.fml.common.Loader.initializeMods(Loader.java:628)
    at cpw.mods.fml.client.FMLClientHandler.onLoadComplete(FMLClientHandler.java:223)
    at net.minecraft.client.Minecraft.a(Minecraft.java:429)
    at net.minecraft.client.Minecraft.run(Minecraft.java:738)
    at java.lang.Thread.run(Unknown Source)
    --- END ERROR REPORT 465f4fe3 ----------
    
    

    What does it mean???

    Thx for your help and sorry for my English

  2. Hi, i'm a french noob in modding!

    I make my first mod with gun and ammos, and everything works in clientside.

    But when I rightclick on my gun my Entity is invisible in serverside.

    I know then I forgot a lot of things but what?

    I show you:

     

    ClientSide

     

    mod_Gun

     

    package net.minecraft.src.gun;

    import net.minecraft.src.Block;

    import net.minecraft.src.Item;

    import net.minecraft.src.ItemStack;

    import net.minecraft.src.ModLoader;

    import net.minecraft.src.forge.*;

    import java.util.Map;

     

     

    public class mod_Gun extends NetworkMod

    {

    public static String textureSprite1 = "/gui/mods/items2.png";

        public static final Item Weapon = (new ItemWeapon(2051)).setItemName("Weapon").setIconIndex(144);

        public static final Item Ammo = (new ItemAmmo(2052)).setItemName("Ammo").setIconIndex(145);

     

    public void load()

        {

    ModLoader.addName(Weapon, "Weapon");

    ModLoader.addName(Ammo, "Ammo");

    MinecraftForgeClient.preloadTexture(textureSprite1);

    ModLoader.addRecipe(new ItemStack (Weapon, 1), new Object[]{

    " # "," # ","# #", Character.valueOf('#'), Block.dirt});

    ModLoader.registerEntityID(EntityAmmo.class, "Ammo", ModLoader.getUniqueEntityId());

    ModLoader.addRecipe(new ItemStack (Ammo, 5), new Object[]{

    "###","###"," # ", Character.valueOf('#'), Block.sand});

    }

     

    public void addRenderer(Map map)

        {

            map.put(EntityAmmo.class, new RenderAmmo(Ammo.iconIndex));

           

        }

     

     

        public String getVersion()

        {

              return "gun mod V 1.0.0";

        }

    public boolean clientSideRequired()

        {

            return false;

        }

     

        public boolean serverSideRequired()

        {

            return false;

        }

    }

     

     

     

    ItemWeapon

     

    package net.minecraft.src.gun;

    import java.util.ArrayList;

    import net.minecraft.src.EntityPlayer;

    import net.minecraft.src.Item;

    import net.minecraft.src.ItemStack;

    import net.minecraft.src.World;

     

    public class ItemWeapon extends Item

    {

            public ItemWeapon(int i)

           

            {

                    super(i);

                    maxStackSize = 64;           

                    this.setTextureFile(mod_Gun.textureSprite1);

                               

            }

            public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)

            {

                if(entityplayer.inventory.consumeInventoryItem(mod_Gun.Ammo.shiftedIndex))

                {

                if(!world.isRemote)

                    {

                        world.joinEntityInSurroundings(new EntityAmmo(world, entityplayer));

                    }

                }

                return itemstack;

            }

                    public void addCreativeItems(ArrayList itemList)

                    {

                    itemList.add(new ItemStack(this));

                    }

    }

     

     

     

     

    ItemAmmo

     

    package net.minecraft.src.gun;

    import java.util.ArrayList;

    import net.minecraft.src.EntityPlayer;

    import net.minecraft.src.Item;

    import net.minecraft.src.ItemStack;

    import net.minecraft.src.World;

     

    public class ItemAmmo extends Item

    {

            public ItemAmmo(int i)

           

           

            {

                    super(i);

            maxStackSize = 64;}

                   

                 

                    {

                             

                 

                    this.setTextureFile(mod_Gun.textureSprite1);

                   

            }

                    public void addCreativeItems(ArrayList itemList)

                    {

                    itemList.add(new ItemStack(this));

                    }

    }

     

     

     

     

    EntityAmmo

     

    package net.minecraft.src.gun;

    import java.util.List;

    import java.util.Random;

    import net.minecraft.src.AxisAlignedBB;

    import net.minecraft.src.DamageSource;

    import net.minecraft.src.Entity;

    import net.minecraft.src.EntityLiving;

    import net.minecraft.src.EntityPlayer;

    import net.minecraft.src.EntityThrowable;

    import net.minecraft.src.Item;

    import net.minecraft.src.ItemStack;

    import net.minecraft.src.MathHelper;

    import net.minecraft.src.MovingObjectPosition;

    import net.minecraft.src.NBTTagCompound;

    import net.minecraft.src.Vec3D;

    import net.minecraft.src.World;

     

    public class EntityAmmo extends EntityThrowable

    {

     

        public EntityAmmo(World par2World)

        {

            super(par2World);

            xTileAmmo = -1;

            yTileAmmo = -1;

            zTileAmmo = -1;

            inTileAmmo = 0;

            inGroundAmmo = false;

            shakeAmmo = 0;

            ticksInAirAmmo = 0;

            setSize(0.25F, 0.25F);

        }

     

        protected void entityInit()

        {

        }

     

        public boolean isInRangeToRenderDist(double d)

        {

            double d1 = boundingBox.getAverageEdgeLength() * 4D;

            d1 *= 64D;

            return d < d1 * d1;

        }

     

        public EntityAmmo(World world, EntityLiving entityliving)

        {

            super(world);

            xTileAmmo = -1;

            yTileAmmo = -1;

            zTileAmmo = -1;

            inTileAmmo = 0;

            inGroundAmmo = false;

            shakeAmmo = 0;

            ticksInAirAmmo = 0;

            shootingEntity = entityliving;

            setSize(0.25F, 0.25F);

            setLocationAndAngles(entityliving.posX, entityliving.posY + (double)entityliving.getEyeHeight(), entityliving.posZ, entityliving.rotationYaw, entityliving.rotationPitch);

            posX -= MathHelper.cos((rotationYaw / 180F) * 3.141593F) * 0.16F;

            posY -= 0.10000000149011612D;

            posZ -= MathHelper.sin((rotationYaw / 180F) * 3.141593F) * 0.16F;

            setPosition(posX, posY, posZ);

            yOffset = 0.0F;

            float f = 0.4F;

            motionX = -MathHelper.sin((rotationYaw / 180F) * 3.141593F) * MathHelper.cos((rotationPitch / 180F) * 3.141593F) * f;

            motionZ = MathHelper.cos((rotationYaw / 180F) * 3.141593F) * MathHelper.cos((rotationPitch / 180F) * 3.141593F) * f;

            motionY = -MathHelper.sin((rotationPitch / 180F) * 3.141593F) * f;

            setAmmoHeading(motionX, motionY, motionZ, 1.5F, 1.0F);

        }

     

        public EntityAmmo(World world, double d, double d1, double d2)

        {

            super(world);

            xTileAmmo = -1;

            yTileAmmo = -1;

            zTileAmmo = -1;

            inTileAmmo = 0;

            inGroundAmmo = false;

            shakeAmmo = 0;

            ticksInAirAmmo = 0;

            ticksInGroundAmmo = 0;

            setSize(0.25F, 0.25F);

            setPosition(d, d1, d2);

            yOffset = 0.0F;

        }

     

        public void setAmmoHeading(double d, double d1, double d2, float f,

                float f1)

        {

            float f2 = MathHelper.sqrt_double(d * d + d1 * d1 + d2 * d2);

            d /= f2;

            d1 /= f2;

            d2 /= f2;

            d += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;

            d1 += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;

            d2 += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;

            d *= f;

            d1 *= f;

            d2 *= f;

            motionX = d;

            motionY = d1;

            motionZ = d2;

            float f3 = MathHelper.sqrt_double(d * d + d2 * d2);

            prevRotationYaw = rotationYaw = (float)((Math.atan2(d, d2) * 180D) / 3.1415927410125732D);

            prevRotationPitch = rotationPitch = (float)((Math.atan2(d1, f3) * 180D) / 3.1415927410125732D);

            ticksInGroundAmmo = 0;

        }

     

        public void setVelocity(double d, double d1, double d2)

        {

            motionX = d;

            motionY = d1;

            motionZ = d2;

            if(prevRotationPitch == 0.0F && prevRotationYaw == 0.0F)

            {

                float f = MathHelper.sqrt_double(d * d + d2 * d2);

                prevRotationYaw = rotationYaw = (float)((Math.atan2(d, d2) * 180D) / 3.1415927410125732D);

                prevRotationPitch = rotationPitch = (float)((Math.atan2(d1, f) * 180D) / 3.1415927410125732D);

            }

        }

     

        public void onUpdate()

        {

            lastTickPosX = posX;

            lastTickPosY = posY;

            lastTickPosZ = posZ;

            super.onUpdate();

            if(shakeAmmo > 0)

            {

                shakeAmmo--;

            }

            if(inGroundAmmo)

            {

                int i = worldObj.getBlockId(xTileAmmo, yTileAmmo, zTileAmmo);

                if(i != inTileAmmo)

                {

                    inGroundAmmo = false;

                    motionX *= rand.nextFloat() * 0.2F;

                    motionY *= rand.nextFloat() * 0.2F;

                    motionZ *= rand.nextFloat() * 0.2F;

                    ticksInGroundAmmo = 0;

                    ticksInAirAmmo = 0;

                } else

                {

                    ticksInGroundAmmo++;

                    if(ticksInGroundAmmo == 1200)

                    {

                        setDead();

                    }

                    return;

                }

            } else

            {

                ticksInAirAmmo++;

            }

            Vec3D vec3d = Vec3D.createVector(posX, posY, posZ);

            Vec3D vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ + motionZ);

            MovingObjectPosition movingobjectposition = worldObj.rayTraceBlocks(vec3d, vec3d1);

            vec3d = Vec3D.createVector(posX, posY, posZ);

            vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ + motionZ);

            if(movingobjectposition != null)

            {

                vec3d1 = Vec3D.createVector(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);

            }

            if(!worldObj.isRemote)

            {

                Entity entity = null;

                List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.addCoord(motionX, motionY, motionZ).expand(1.0D, 1.0D, 1.0D));

                double d = 0.0D;

                for(int l = 0; l < list.size(); l++)

                {

                    Entity entity1 = (Entity)list.get(l);

                    if(!entity1.canBeCollidedWith() || entity1 == shootingEntity && ticksInAirAmmo < 5)

                    {

                        continue;

                    }

                    float f4 = 0.3F;

                    AxisAlignedBB axisalignedbb = entity1.boundingBox.expand(f4, f4, f4);

                    MovingObjectPosition movingobjectposition1 = axisalignedbb.calculateIntercept(vec3d, vec3d1);

                    if(movingobjectposition1 == null)

                    {

                        continue;

                    }

                    double d1 = vec3d.distanceTo(movingobjectposition1.hitVec);

                    if(d1 < d || d == 0.0D)

                    {

                        entity = entity1;

                        d = d1;

                    }

                }

     

                if(entity != null)

                {

                    movingobjectposition = new MovingObjectPosition(entity);

                }

            }

            if(movingobjectposition != null)

            {

                if(movingobjectposition.entityHit != null)

                {

                    if(!movingobjectposition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, shootingEntity), 4));

                }

     

                setDead();

            }

            posX += motionX;

            posY += motionY;

            posZ += motionZ;

            float f = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);

            rotationYaw = (float)((Math.atan2(motionX, motionZ) * 180D) / 3.1415927410125732D);

            for(rotationPitch = (float)((Math.atan2(motionY, f) * 180D) / 3.1415927410125732D); rotationPitch - prevRotationPitch < -180F; prevRotationPitch -= 360F) { }

            for(; rotationPitch - prevRotationPitch >= 180F; prevRotationPitch += 360F) { }

            for(; rotationYaw - prevRotationYaw < -180F; prevRotationYaw -= 360F) { }

            for(; rotationYaw - prevRotationYaw >= 180F; prevRotationYaw += 360F) { }

            rotationPitch = prevRotationPitch + (rotationPitch - prevRotationPitch) * 0.2F;

            rotationYaw = prevRotationYaw + (rotationYaw - prevRotationYaw) * 0.2F;

            float f1 = 0.99F;

            float f2 = 0.03F;

            if(isInWater())

            {

                for(int k = 0; k < 4; k++)

                {

                    float f3 = 0.25F;

                    worldObj.spawnParticle("bubble", posX - motionX * (double)f3, posY - motionY * (double)f3, posZ - motionZ * (double)f3, motionX, motionY, motionZ);

                }

     

                f1 = 0.8F;

            }

            motionX *= f1;

            motionY *= f1;

            motionZ *= f1;

            motionY -= f2;

            setPosition(posX, posY, posZ);

        }

     

        public void writeEntityToNBT(NBTTagCompound nbttagcompound)

        {

            nbttagcompound.setShort("xTile", (short)xTileAmmo);

            nbttagcompound.setShort("yTile", (short)yTileAmmo);

            nbttagcompound.setShort("zTile", (short)zTileAmmo);

            nbttagcompound.setByte("inTile", (byte)inTileAmmo);

            nbttagcompound.setByte("shake", (byte)shakeAmmo);

            nbttagcompound.setByte("inGround", (byte)(inGroundAmmo ? 1 : 0));

        }

     

        public void readEntityFromNBT(NBTTagCompound nbttagcompound)

        {

            xTileAmmo = nbttagcompound.getShort("xTile");

            yTileAmmo = nbttagcompound.getShort("yTile");

            zTileAmmo = nbttagcompound.getShort("zTile");

            inTileAmmo = nbttagcompound.getByte("inTile") & 0xff;

            shakeAmmo = nbttagcompound.getByte("shake") & 0xff;

            inGroundAmmo = nbttagcompound.getByte("inGround") == 1;

        }

     

        public void onCollideWithPlayer(EntityPlayer entityplayer)

        {

            if(inGroundAmmo && shootingEntity == entityplayer && shakeAmmo <= 0 && entityplayer.inventory.addItemStackToInventory(new ItemStack(Item.arrow, 1)))

            {

                worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((rand.nextFloat() - rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);

                entityplayer.onItemPickup(this, 1);

                setDead();

            }

        }

     

        public float getShadowSize()

        {

            return 0.0F;

        }

     

        private int xTileAmmo;

        private int yTileAmmo;

        private int zTileAmmo;

        private int inTileAmmo;

        private boolean inGroundAmmo;

        public int shakeAmmo;

        private EntityLiving shootingEntity;

        private int ticksInGroundAmmo;

        private int ticksInAirAmmo;

    @Override

    protected void onImpact(MovingObjectPosition var1) {

    // TODO Auto-generated method stub

     

    }

    }

     

     

     

     

    RenderAmmo

     

    package net.minecraft.src.gun;

    import net.minecraft.src.Entity;

    import net.minecraft.src.Render;

    import net.minecraft.src.Tessellator;

    import org.lwjgl.opengl.GL11;

     

    public class RenderAmmo extends Render

    {

     

           

        public RenderAmmo(int i)

            {

                itemIconIndex = i;

            }

     

           

     

    public void doRender(Entity entity, double d, double d1, double d2,

                    float f, float f1)

            {

                GL11.glPushMatrix();

                GL11.glTranslatef((float)d, (float)d1, (float)d2);

                GL11.glEnable(32826 /*GL_RESCALE_NORMAL_EXT*/);

                GL11.glScalef(0.5F, 0.5F, 0.5F);

                loadTexture("/gui/mods/items2.png");

                Tessellator tessellator = Tessellator.instance;

                float f2 = (float)((itemIconIndex % 16) * 16 + 0) / 256F;

                float f3 = (float)((itemIconIndex % 16) * 16 + 16) / 256F;

                float f4 = (float)((itemIconIndex / 16) * 16 + 0) / 256F;

                float f5 = (float)((itemIconIndex / 16) * 16 + 16) / 256F;

                float f6 = 1.0F;

                float f7 = 0.5F;

                float f8 = 0.25F;

                GL11.glRotatef(180F - renderManager.playerViewY, 0.0F, 1.0F, 0.0F);

                GL11.glRotatef(-renderManager.playerViewX, 1.0F, 0.0F, 0.0F);

                tessellator.startDrawingQuads();

                tessellator.setNormal(0.0F, 1.0F, 0.0F);

                tessellator.addVertexWithUV(0.0F - f7, 0.0F - f8, 0.0D, f2, f5);

                tessellator.addVertexWithUV(f6 - f7, 0.0F - f8, 0.0D, f3, f5);

                tessellator.addVertexWithUV(f6 - f7, 1.0F - f8, 0.0D, f3, f4);

                tessellator.addVertexWithUV(0.0F - f7, 1.0F - f8, 0.0D, f2, f4);

                tessellator.draw();

                GL11.glDisable(32826 /*GL_RESCALE_NORMAL_EXT*/);

                GL11.glPopMatrix();

            }

     

            private int itemIconIndex;

        }

     

     

     

    ServerSide

     

    mod_Gun

     

    package net.minecraft.src.gun;

    import net.minecraft.src.Block;

    import net.minecraft.src.Item;

    import net.minecraft.src.ItemStack;

    import net.minecraft.src.ModLoader;

    import net.minecraft.src.forge.*;

    import java.util.Map;

     

     

    public class mod_Gun extends NetworkMod

    {

    public static String textureSprite1 = "/gui/mods/items2.png";

        public static final Item Weapon = (new ItemWeapon(2051)).setItemName("Weapon").setIconIndex(144);

        public static final Item Ammo = (new ItemAmmo(2052)).setItemName("Ammo").setIconIndex(145);

       

       

    public void load()

        {

    ModLoader.addName(Weapon, "Weapon");

    ModLoader.addName(Ammo, "Ammo");

    MinecraftForgeClient.preloadTexture(textureSprite1);

    ModLoader.addRecipe(new ItemStack (Weapon, 1), new Object[]{

    " # "," # ","# #", Character.valueOf('#'), Block.dirt});

    ModLoader.registerEntityID(EntityAmmo.class, "Ammo", ModLoader.getUniqueEntityId());

    ModLoader.addRecipe(new ItemStack (Ammo, 5), new Object[]{

    "###","###"," # ", Character.valueOf('#'), Block.sand});

    }

     

     

     

        public String getVersion()

        {

              return "gun mod V 1.0.0";

        }

    public boolean clientSideRequired()

        {

            return false;

        }

     

        public boolean serverSideRequired()

        {

            return false;

        }

    }

     

     

     

    ItemWeapon

     

    package net.minecraft.src.gun;

    import java.util.ArrayList;

    import net.minecraft.src.EntityPlayer;

    import net.minecraft.src.EntitySnowball;

    import net.minecraft.src.Item;

    import net.minecraft.src.ItemStack;

    import net.minecraft.src.World;

     

    public class ItemWeapon extends Item

    {

            public ItemWeapon(int j)

           

            {

                    super(j);

                    maxStackSize = 64;           

                    this.setTextureFile(mod_Gun.textureSprite1);

                               

            }

            public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)

            {

                if (!par3EntityPlayer.capabilities.isCreativeMode)

                {

                    --par1ItemStack.stackSize;

                }

     

                par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));

     

                if (!par2World.isRemote)

                {

                    par2World.spawnEntityInWorld(new EntityAmmo(par2World, par3EntityPlayer));

                }

     

                return par1ItemStack;

            }

       

           

                    public void addCreativeItems(ArrayList itemList)

                    {

                    itemList.add(new ItemStack(this));

                    }

    }

     

     

     

     

    ItemAmmo

     

    package net.minecraft.src.gun;

    import java.util.ArrayList;

    import net.minecraft.src.EntityPlayer;

    import net.minecraft.src.Item;

    import net.minecraft.src.ItemStack;

    import net.minecraft.src.World;

     

    public class ItemAmmo extends Item

    {

            public ItemAmmo(int i)

           

           

            {

                    super(i);

            maxStackSize = 64;

            }

                   

                 

                    {

                             

                 

                    this.setTextureFile(mod_Gun.textureSprite1);

                   

            }

                    public void addCreativeItems(ArrayList itemList)

                    {

                    itemList.add(new ItemStack(this));

                    }

    }

     

     

     

     

    EntityAmmo

     

    package net.minecraft.src.gun;

    import java.util.List;

    import java.util.Random;

    import net.minecraft.src.AxisAlignedBB;

    import net.minecraft.src.DamageSource;

    import net.minecraft.src.Entity;

    import net.minecraft.src.EntityLiving;

    import net.minecraft.src.EntityPlayer;

    import net.minecraft.src.EntityThrowable;

    import net.minecraft.src.Item;

    import net.minecraft.src.ItemStack;

    import net.minecraft.src.MathHelper;

    import net.minecraft.src.MovingObjectPosition;

    import net.minecraft.src.NBTTagCompound;

    import net.minecraft.src.Vec3D;

    import net.minecraft.src.World;

     

    public class EntityAmmo extends EntityThrowable

    {

     

        public EntityAmmo(World par2World)

        {

            super(par2World);

            xTileAmmo = -1;

            yTileAmmo = -1;

            zTileAmmo = -1;

            inTileAmmo = 0;

            inGroundAmmo = false;

            shakeAmmo = 0;

            ticksInAirAmmo = 0;

            setSize(0.25F, 0.25F);

        }

     

        protected void entityInit()

        {

        }

     

        public boolean isInRangeToRenderDist(double d)

        {

            double d1 = boundingBox.getAverageEdgeLength() * 4D;

            d1 *= 64D;

            return d < d1 * d1;

        }

     

        public EntityAmmo(World world, EntityLiving entityliving)

        {

            super(world);

            xTileAmmo = -1;

            yTileAmmo = -1;

            zTileAmmo = -1;

            inTileAmmo = 0;

            inGroundAmmo = false;

            shakeAmmo = 0;

            ticksInAirAmmo = 0;

            shootingEntity = entityliving;

            setSize(0.25F, 0.25F);

            setLocationAndAngles(entityliving.posX, entityliving.posY + (double)entityliving.getEyeHeight(), entityliving.posZ, entityliving.rotationYaw, entityliving.rotationPitch);

            posX -= MathHelper.cos((rotationYaw / 180F) * 3.141593F) * 0.16F;

            posY -= 0.10000000149011612D;

            posZ -= MathHelper.sin((rotationYaw / 180F) * 3.141593F) * 0.16F;

            setPosition(posX, posY, posZ);

            yOffset = 0.0F;

            float f = 0.4F;

            motionX = -MathHelper.sin((rotationYaw / 180F) * 3.141593F) * MathHelper.cos((rotationPitch / 180F) * 3.141593F) * f;

            motionZ = MathHelper.cos((rotationYaw / 180F) * 3.141593F) * MathHelper.cos((rotationPitch / 180F) * 3.141593F) * f;

            motionY = -MathHelper.sin((rotationPitch / 180F) * 3.141593F) * f;

            setAmmoHeading(motionX, motionY, motionZ, 1.5F, 1.0F);

        }

     

        public EntityAmmo(World world, double d, double d1, double d2)

        {

            super(world);

            xTileAmmo = -1;

            yTileAmmo = -1;

            zTileAmmo = -1;

            inTileAmmo = 0;

            inGroundAmmo = false;

            shakeAmmo = 0;

            ticksInAirAmmo = 0;

            ticksInGroundAmmo = 0;

            setSize(0.25F, 0.25F);

            setPosition(d, d1, d2);

            yOffset = 0.0F;

        }

     

        public void setAmmoHeading(double d, double d1, double d2, float f,

                float f1)

        {

            float f2 = MathHelper.sqrt_double(d * d + d1 * d1 + d2 * d2);

            d /= f2;

            d1 /= f2;

            d2 /= f2;

            d += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;

            d1 += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;

            d2 += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;

            d *= f;

            d1 *= f;

            d2 *= f;

            motionX = d;

            motionY = d1;

            motionZ = d2;

            float f3 = MathHelper.sqrt_double(d * d + d2 * d2);

            prevRotationYaw = rotationYaw = (float)((Math.atan2(d, d2) * 180D) / 3.1415927410125732D);

            prevRotationPitch = rotationPitch = (float)((Math.atan2(d1, f3) * 180D) / 3.1415927410125732D);

            ticksInGroundAmmo = 0;

        }

     

        public void setVelocity(double d, double d1, double d2)

        {

            motionX = d;

            motionY = d1;

            motionZ = d2;

            if(prevRotationPitch == 0.0F && prevRotationYaw == 0.0F)

            {

                float f = MathHelper.sqrt_double(d * d + d2 * d2);

                prevRotationYaw = rotationYaw = (float)((Math.atan2(d, d2) * 180D) / 3.1415927410125732D);

                prevRotationPitch = rotationPitch = (float)((Math.atan2(d1, f) * 180D) / 3.1415927410125732D);

            }

        }

     

        public void onUpdate()

        {

            lastTickPosX = posX;

            lastTickPosY = posY;

            lastTickPosZ = posZ;

            super.onUpdate();

            if(shakeAmmo > 0)

            {

                shakeAmmo--;

            }

            if(inGroundAmmo)

            {

                int i = worldObj.getBlockId(xTileAmmo, yTileAmmo, zTileAmmo);

                if(i != inTileAmmo)

                {

                    inGroundAmmo = false;

                    motionX *= rand.nextFloat() * 0.2F;

                    motionY *= rand.nextFloat() * 0.2F;

                    motionZ *= rand.nextFloat() * 0.2F;

                    ticksInGroundAmmo = 0;

                    ticksInAirAmmo = 0;

                } else

                {

                    ticksInGroundAmmo++;

                    if(ticksInGroundAmmo == 1200)

                    {

                        setDead();

                    }

                    return;

                }

            } else

            {

                ticksInAirAmmo++;

            }

            Vec3D vec3d = Vec3D.createVector(posX, posY, posZ);

            Vec3D vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ + motionZ);

            MovingObjectPosition movingobjectposition = worldObj.rayTraceBlocks(vec3d, vec3d1);

            vec3d = Vec3D.createVector(posX, posY, posZ);

            vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ + motionZ);

            if(movingobjectposition != null)

            {

                vec3d1 = Vec3D.createVector(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);

            }

            if(!worldObj.isRemote)

            {

                Entity entity = null;

                List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.addCoord(motionX, motionY, motionZ).expand(1.0D, 1.0D, 1.0D));

                double d = 0.0D;

                for(int l = 0; l < list.size(); l++)

                {

                    Entity entity1 = (Entity)list.get(l);

                    if(!entity1.canBeCollidedWith() || entity1 == shootingEntity && ticksInAirAmmo < 5)

                    {

                        continue;

                    }

                    float f4 = 0.3F;

                    AxisAlignedBB axisalignedbb = entity1.boundingBox.expand(f4, f4, f4);

                    MovingObjectPosition movingobjectposition1 = axisalignedbb.calculateIntercept(vec3d, vec3d1);

                    if(movingobjectposition1 == null)

                    {

                        continue;

                    }

                    double d1 = vec3d.distanceTo(movingobjectposition1.hitVec);

                    if(d1 < d || d == 0.0D)

                    {

                        entity = entity1;

                        d = d1;

                    }

                }

     

                if(entity != null)

                {

                    movingobjectposition = new MovingObjectPosition(entity);

                }

            }

            if(movingobjectposition != null)

            {

                if(movingobjectposition.entityHit != null)

                {

                    if(!movingobjectposition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, shootingEntity), 4));

                }

     

                setDead();

            }

            posX += motionX;

            posY += motionY;

            posZ += motionZ;

            float f = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);

            rotationYaw = (float)((Math.atan2(motionX, motionZ) * 180D) / 3.1415927410125732D);

            for(rotationPitch = (float)((Math.atan2(motionY, f) * 180D) / 3.1415927410125732D); rotationPitch - prevRotationPitch < -180F; prevRotationPitch -= 360F) { }

            for(; rotationPitch - prevRotationPitch >= 180F; prevRotationPitch += 360F) { }

            for(; rotationYaw - prevRotationYaw < -180F; prevRotationYaw -= 360F) { }

            for(; rotationYaw - prevRotationYaw >= 180F; prevRotationYaw += 360F) { }

            rotationPitch = prevRotationPitch + (rotationPitch - prevRotationPitch) * 0.2F;

            rotationYaw = prevRotationYaw + (rotationYaw - prevRotationYaw) * 0.2F;

            float f1 = 0.99F;

            float f2 = 0.03F;

            if(isInWater())

            {

                for(int k = 0; k < 4; k++)

                {

                    float f3 = 0.25F;

                    worldObj.spawnParticle("bubble", posX - motionX * (double)f3, posY - motionY * (double)f3, posZ - motionZ * (double)f3, motionX, motionY, motionZ);

                }

     

                f1 = 0.8F;

            }

            motionX *= f1;

            motionY *= f1;

            motionZ *= f1;

            motionY -= f2;

            setPosition(posX, posY, posZ);

        }

     

        public void writeEntityToNBT(NBTTagCompound nbttagcompound)

        {

            nbttagcompound.setShort("xTile", (short)xTileAmmo);

            nbttagcompound.setShort("yTile", (short)yTileAmmo);

            nbttagcompound.setShort("zTile", (short)zTileAmmo);

            nbttagcompound.setByte("inTile", (byte)inTileAmmo);

            nbttagcompound.setByte("shake", (byte)shakeAmmo);

            nbttagcompound.setByte("inGround", (byte)(inGroundAmmo ? 1 : 0));

        }

     

        public void readEntityFromNBT(NBTTagCompound nbttagcompound)

        {

            xTileAmmo = nbttagcompound.getShort("xTile");

            yTileAmmo = nbttagcompound.getShort("yTile");

            zTileAmmo = nbttagcompound.getShort("zTile");

            inTileAmmo = nbttagcompound.getByte("inTile") & 0xff;

            shakeAmmo = nbttagcompound.getByte("shake") & 0xff;

            inGroundAmmo = nbttagcompound.getByte("inGround") == 1;

        }

     

        public void onCollideWithPlayer(EntityPlayer entityplayer)

        {

            if(inGroundAmmo && shootingEntity == entityplayer && shakeAmmo <= 0 && entityplayer.inventory.addItemStackToInventory(new ItemStack(Item.arrow, 1)))

            {

                worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((rand.nextFloat() - rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);

                entityplayer.onItemPickup(this, 1);

                setDead();

            }

        }

     

        public float getShadowSize()

        {

            return 0.0F;

        }

     

        private int xTileAmmo;

        private int yTileAmmo;

        private int zTileAmmo;

        private int inTileAmmo;

        private boolean inGroundAmmo;

        public int shakeAmmo;

        private EntityLiving shootingEntity;

        private int ticksInGroundAmmo;

        private int ticksInAirAmmo;

    @Override

    protected void onImpact(MovingObjectPosition var1) {

    // TODO Auto-generated method stub

     

    }

    }

     

     

     

     

    I know then I ask a lot but I'm searching for a week and it makes me  :-X

    Thx for reading and sorry for my english!

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.