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

[1.2.5](Forge 3.4.9.171) Entity Invisible in SMP


jezkyl33
 Share

Recommended Posts

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!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • i would really appreciate help on this. i just can't figure out how to deobf my api module / prevent the api module from being obfuscated in the dev env.
    • I want to debug in intellij but when i click the debug icon it runs like normal, and if you go to top right(Gradle icon), normally i use runClient but if i try runServer minecraft doesnt open, or runServer with debug(https://imgur.com/a/KuSUqwt), (the eula.txt file has eula=true just in case) before minecraft window open it close with no errors, like if i closed it on purpose
    • By looking at the log output for command 'gradlew --debug runData', it appears that the Standard Library jars get passed to Forge via the '-cp' command line parameter correctly in both versions. Trying to create a workaround earlier revealed that the module resolver is aware of the Standard Library's exports, and therefore conflicts with any attempt to manually copy stdlib over to 'build/classes/kotlin/main'. This means I cannot create a workaround that way. I have also switched to 1.18, and this issue still persists. This is most likely an issue regarding JVM options, which I do not have enough knowledge about. The build.gradle snippets shown above (remember switching jvmTarget in kotlinOptions to 17 when building for 1.18), alongside with the following piece of code for a mod class, should be enough to reproduce: File: src/main/kotlin/com/example/examplemod/ExampleMod.kt package com.example.examplemod import net.minecraftforge.fml.common.Mod import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger @Mod("examplemod") class ExampleMod { init { LOGGER.info("Hello World!") } companion object { private val LOGGER: Logger = LogManager.getLogger() } } Note that removing the explicit type Logger (so it becomes 'private val LOGGER = LogManager.getLogger()') loads successfully, because when there is no explicit type specified, Koltin implicitly infers a so-called platform type, shown in IDE as 'Logger!' (note the exclamation mark). This platform type is not null checked by default, so there are no references to 'kotlin.jvm.internal.Intrinsics' for null checks. Specifying the type explicitly as not null however creates a null check under the hood, because in Kotlin, for a type to be nullable, it has to be suffixed with a question mark (Logger?). Otherwise it is guaranteed to be not null. Explanation for those not knowing Kotlin: The 'init' block is essentially a constructor block. The Java equivalent would be 'public ExampleMod() { LOGGER.info("Hello World!"); }'. Declarations inside 'companion object' basically behave like static declarations, so the Java equivalent would be 'private static Logger LOGGER = LogManager.getLogger();'. Looking forward to a fix! Thank you for your time.
    • affter a bit of time this worked: @SubscribeEvent public static void renderPlayerPre(RenderPlayerEvent.Pre event) { //here i was canceling the pre event so... event.getRenderer().getEntityModel().bipedLeftArm.showModel = false; } @SubscribeEvent public static void renderPlayerPost(RenderPlayerEvent.Post event) { PlayerEntity player = event.getPlayer(); PlayerModel<AbstractClientPlayerEntity> model = event.getRenderer().getEntityModel(); ModelRenderer rightArm = model.bipedLeftArm; rightArm.showModel = true; rightArm.render( event.getMatrixStack(), event.getBuffers().getBuffer(RenderType.getEntitySolid(((AbstractClientPlayerEntity)player).getLocationSkin())), Minecraft.getInstance().getRenderManager().getPackedLight(player, 1f), OverlayTexture.NO_OVERLAY); } But just one more thing, i promess no more questions..., the hand is like this: https://imgur.com/a/KTVudC3, and there is no offsetX, Y, or Z, do i need arm.rotationPointSOMETHING to move the hand wherever i want?
    • 1.12 is no longer supported on this forum. Please update to a modern version of Minecraft to receive support.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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