• 0

    posted a message on Backlytra — Elytra for 1.7.10 and 1.8.9 & Elytra Sounds for 1.9

    Um why does it do this? Is this normal glitch at the moment?



    EDIT: So I found out it is the Aether mod causing this rendering issue, which makes it incompatible to it unfortunately


    If you could look into it when you can that would be appreciated, love this mod

    Posted in: Minecraft Mods
  • 1

    posted a message on Et Futurum - Brings the future to now!

    Well if you can get some more experienced modders on to the GitHub repo, they might be able to sort the issues I'm currently having with implementing them

    Posted in: Minecraft Mods
  • 3

    posted a message on Et Futurum - Brings the future to now!

    Attention all modders and coders, I've used 1.8 code to create a bases of the Guardian mob algorithm for this mod. However, some elements of the behaviour do not seem to work. I've posted a public GitHub repo for people to experiment. I contacted gany awhile ago but unfortunately he hasn't been active so I'm reaching to the Et Futurum community to take a look. The problems are listed in the issues tab. Thanks guys


    GitHub link: https://github.com/naitdog15/Guardian-1.7.10

    Posted in: Minecraft Mods
  • 1

    posted a message on Putting Guardians into 1.7.10 (AI path-finding failure)

    Okay so I managed to get the problem down to the onLivingUpdate().


    I got the mob moving, adjusting where necessary but still can not get the mob to swim properly, floating to the surface every tick.


    Anyone know how to get an EntityMob() to not float in water?

    Posted in: Modification Development
  • 1

    posted a message on Putting Guardians into 1.7.10 (AI path-finding failure)

    I'm still heavy into to the 1.7.10 code, with my modpack design and majority of the mods still staying there. However I have started recently to learn how to code.


    After learning the basics, I decided to incorporate some 1.8 elements into 1.7.10. Guardians included and the ones that became the most difficult.


    I've so far been copying and pasting 1.8 code across to 1.7.10. Downgrading where necessary and using 'extenders' for additional code.

    I'd successfully made the model and render, however, the AI system just simply doesn't work and the mob just says in one spot.


    Just looking for assistance with trying to work the ai system of the guardian, since its so unique and different to other modded mobs. If you can spot the problem please let me know. (the EntityGuardian.class code is below)



    **I'd also be willing to support someone with $, if they can sit and carefully fix this problem. Please contact me if you're willing.**



    public class EntityGuardian extends EntityMob 
    {   
    	
    	private EntityExtender EExtender;
        private EntityLivingExtender ELExtender;
        private WorldExtender WExtender;
        private EntityLivingBaseExtender ELBExtender;
        
    	private EntityCreature entityCreature;
    	private EntityGuardian theEntity;
    	private PathEntity path;
        protected EntityMoveHelper moveHelper;
    	private float field_175482_b;
        private float field_175484_c;
        private float field_175483_bk;
        private float field_175485_bl;
        private float field_175486_bm;
        private EntityLivingBase targetedEntity;
        private int field_175479_bo;
        private boolean field_175480_bp;
        private EntityAIWander wander;
        private EntityAIWanderExtender wanderExtender;
    	private int tickCounter;
    
    	public EntityGuardian(World worldIn)
        {
            super(worldIn);
            this.experienceValue = 10;
            this.setSize(0.85F, 0.85F);
            this.tasks.addTask(4, new EntityGuardian.AIGuardianAttack(this));
            EntityAIMoveTowardsRestriction entityaimovetowardsrestriction;
            this.tasks.addTask(5, entityaimovetowardsrestriction = new EntityAIMoveTowardsRestriction(this, 1.0D));
            this.tasks.addTask(7, this.wander = new EntityAIWander(this, 1.0D));
            this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
            this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityGuardian.class, 12.0F, 0.01F));
            this.tasks.addTask(9, new EntityAILookIdle(this));
            this.wander.setMutexBits(3);
            entityaimovetowardsrestriction.setMutexBits(3);
            this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityLivingBase.class, 10, true, false, new EntityGuardian.GuardianTargetSelector(this)));
            this.moveHelper = new EntityGuardian.GuardianMoveHelper(this);
            this.field_175484_c = this.field_175482_b = this.rand.nextFloat();
        }
    	
    	protected void applyEntityAttributes()
        {
            super.applyEntityAttributes();
            this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(6.0D);
            this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5D);
            this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(16.0D);
            this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(30.0D);
        }
    	
    	/**
         * (abstract) Protected helper method to read subclass entity data from NBT.
         */
        public void readEntityFromNBT(NBTTagCompound tagCompund)
        {
            super.readEntityFromNBT(tagCompund);
            this.setElder(tagCompund.getBoolean("Elder"));
        }
        
        /**
         * (abstract) Protected helper method to write subclass entity data to NBT.
         */
        public void writeEntityToNBT(NBTTagCompound tagCompound)
        {
            super.writeEntityToNBT(tagCompound);
            tagCompound.setBoolean("Elder", this.isElder());
        }
        
        /**
         * Returns new PathNavigateGround instance
         */
        public PathNavigate getNewNavigator(World worldIn)
        {
            return new PathNavigateSwimmer(this, worldIn);
        }
        
        public void entityInit()
        {
            super.entityInit();
            this.dataWatcher.addObject(16, Integer.valueOf(0));
            this.dataWatcher.addObject(17, Integer.valueOf(0));
        }
        
        /**
         * Returns true if given flag is set
         */
        private boolean isSyncedFlagSet(int flagId)
        {
            return (this.dataWatcher.getWatchableObjectInt(16) & flagId) != 0;
        }
    
        /**
         * Sets a flag state "on/off" on both sides (client/server) by using DataWatcher
         */
        private void setSyncedFlag(int flagId, boolean state)   {
            int i = this.dataWatcher.getWatchableObjectInt(16);
    
            if (state)
            {
                this.dataWatcher.updateObject(16, Integer.valueOf(i | flagId));
            }
            else
            {
                this.dataWatcher.updateObject(16, Integer.valueOf(i & ~flagId));
            }
        }
        
        public boolean func_175472_n()
        {
            return this.isSyncedFlagSet(2);
        }
    
        private void func_175476_l(boolean p_175476_1_)
        {
            this.setSyncedFlag(2, p_175476_1_);
        }
        public int func_175464_ck()
        {
            return this.isElder() ? 60 : 80;
        }
    
        public boolean isElder()
        {
            return this.isSyncedFlagSet(4);
        }
        
        protected Entity findPlayerToAttack()
        {
            return targetedEntity;
        }
        
        /**
        * sets the EntityCreature's walk path
        */
       public void setPathToEntity(PathEntity AIGuardianAttack)
       {
           this.path = AIGuardianAttack;
       }
       
        /**
         * Sets this Guardian to be an elder or not.
         */
        public void setElder(boolean elder)
        {
            this.setSyncedFlag(4, elder);
    
            if (elder)
            {
                this.setSize(1.9975F, 1.9975F);
                this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.30000001192092896D);
                this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(8.0D);
                this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(80.0D);
                ((EntityAIWanderExtender) this.wander).setExecutionChance(400);
            }
        }
        
        @SideOnly(Side.CLIENT)
        public void setElder()
        {
            this.setElder(true);
            this.field_175486_bm = this.field_175485_bl = 1.0F;
        }
        
        private void setTargetedEntity(int entityId)
        {
            this.dataWatcher.updateObject(17, Integer.valueOf(entityId));
        }
      
        public boolean hasTargetedEntity()
        {
            return this.dataWatcher.getWatchableObjectInt(17) != 0;
        }
    
        public EntityLivingBase getTargetedEntity()
        {
            if (!this.hasTargetedEntity())
            {
                return null;
            }
            else if (this.worldObj.isRemote)
            {
                if (this.targetedEntity != null)
                {
                    return this.targetedEntity;
                }
                else
                {
                    Entity entity = this.worldObj.getEntityByID(this.dataWatcher.getWatchableObjectInt(17));
    
                    if (entity instanceof EntityLivingBase)
                    {
                        this.targetedEntity = (EntityLivingBase)entity;
                        return this.targetedEntity;
                    }
                    else
                    {
                        return null;
                    }
                }
            }
            else
            {
                return this.getAttackTarget();
            }
        }
        
        public void onDataWatcherUpdate(int dataID)
        {
    
            if (dataID == 16)
            {
                if (this.isElder() && this.width < 1.0F)
                {
                    this.setSize(1.9975F, 1.9975F);
                }
            }
            else if (dataID == 17)
            {
                this.field_175479_bo = 0;
                this.targetedEntity = null;
            }
        }
        
        /**
         * Get number of ticks, at least during which the living entity will be silent.
         */
        public int getTalkInterval()
        {
            return 160;
        }
        
        /**
         * Returns the sound this mob makes while it's alive.
         */
        protected String getLivingSound()
        {
            return !this.isInWater() ? "TemogAesthetics:land_idle" : (this.isElder() ? "TemogAesthetics:elder_idle" : "TemogAesthetics:guardian_idle");
        }
        
        /**
         * Returns the sound this mob makes when it is hurt.
         */
        protected String getHurtSound()
        {
            return !this.isInWater() ? "TemogAesthetics:land_hit" : (this.isElder() ? "TemogAesthetics:elder_hit" : "TemogAesthetics:guardian_hit");
        }
    
        /**
         * Returns the sound this mob makes on death.
         */
        protected String getDeathSound()
        {
            return !this.isInWater() ? "TemogAesthetics:land_death" : (this.isElder() ? "TemogAesthetics:elder_death" : "TemogAesthetics:guardian_death");
        }
        
        /**
         * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to
         * prevent them from trampling crops
         */
        protected boolean canTriggerWalking()
        {
            return false;
        }
        
        public float getEyeHeight()
        {
            return this.height * 0.5F;
        }
        
        public float getBlockPathWeight(BlockPos pos)
        {
            return ((WorldExtender) this.worldObj).getBlockState(pos).getBlock().getMaterial() == Material.water ? 10.0F + this.WExtender.getLightBrightness(pos) - 0.5F : super.getBlockPathWeight(pos);
        }
        
        
        /**
         * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons
         * use this to react to sunlight and start to burn.
         */
        public void onLivingUpdate()
        {
            if (this.worldObj.isRemote)
            {
                this.field_175484_c = this.field_175482_b;
    
                if (!this.isInWater())
                {
                    this.field_175483_bk = 2.0F;
    
     
                    {
                        this.worldObj.playSound(this.posX, this.posY, this.posZ, "TemogAesthetics:flop", 1.0F, 1.0F, false);
                    }
    
                }
                else if (this.func_175472_n())
                {
                    if (this.field_175483_bk < 0.5F)
                    {
                        this.field_175483_bk = 4.0F;
                    }
                    else
                    {
                        this.field_175483_bk += (0.5F - this.field_175483_bk) * 0.1F;
                    }
                }
                else
                {
                    this.field_175483_bk += (0.125F - this.field_175483_bk) * 0.2F;
                }
    
                this.field_175482_b += this.field_175483_bk;
                this.field_175486_bm = this.field_175485_bl;
    
                if (!this.isInWater())
                {
                    this.field_175485_bl = this.rand.nextFloat();
                }
                else if (this.func_175472_n())
                {
                    this.field_175485_bl += (0.0F - this.field_175485_bl) * 0.25F;
                }
                else
                {
                    this.field_175485_bl += (1.0F - this.field_175485_bl) * 0.06F;
                }
    
                if (this.func_175472_n() && this.isInWater())
                {
                    Vec3 vec3 = this.getLook(0.0F);
    
                    for (int i = 0; i < 2; ++i)
                    {
                    	this.worldObj.spawnParticle("bubble", this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width - vec3.xCoord * 1.5D, this.posY + this.rand.nextDouble() * (double)this.height - vec3.yCoord * 1.5D, this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width - vec3.zCoord * 1.5D, 0.0D, 0.0D, 0.0D);
                    }
                }
    
                if (this.hasTargetedEntity())
                {
                    if (this.field_175479_bo < this.func_175464_ck())
                    {
                        ++this.field_175479_bo;
                    }
    
                    EntityLivingBase entitylivingbase = this.getTargetedEntity();
    
                    if (entitylivingbase != null)
                    {
                        this.getLookHelper().setLookPositionWithEntity(entitylivingbase, 90.0F, 90.0F);
                        this.getLookHelper().onUpdateLook();
                        double d5 = (double)this.func_175477_p(0.0F);
                        double d0 = entitylivingbase.posX - this.posX;
                        double d1 = entitylivingbase.posY + (double)(entitylivingbase.height * 0.5F) - (this.posY + (double)this.getEyeHeight());
                        double d2 = entitylivingbase.posZ - this.posZ;
                        double d3 = Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2);
                        d0 = d0 / d3;
                        d1 = d1 / d3;
                        d2 = d2 / d3;
                        double d4 = this.rand.nextDouble();
    
                        while (d4 < d3)
                        {
                            d4 += 1.8D - d5 + this.rand.nextDouble() * (1.7D - d5);
                            this.worldObj.spawnParticle("bubble", this.posX + d0 * d4, this.posY + d1 * d4 + (double)this.getEyeHeight(), this.posZ + d2 * d4, 0.0D, 0.0D, 0.0D);
                        }
                    }
                }
            }
    
            if (this.inWater)
            {
                this.setAir(300);
            }
            else if (this.onGround)
            {
                this.motionY += 0.5D;
                this.motionX += (double)((this.rand.nextFloat() * 2.0F - 1.0F) * 0.4F);
                this.motionZ += (double)((this.rand.nextFloat() * 2.0F - 1.0F) * 0.4F);
                this.rotationYaw = this.rand.nextFloat() * 360.0F;
                this.onGround = false;
                this.isAirBorne = true;
            }
    
            if (this.hasTargetedEntity())
            {
                this.rotationYaw = this.rotationYawHead;
            }
    
        }
        
        @SideOnly(Side.CLIENT)
        public float func_175471_a(float p_175471_1_)
        {
            return this.field_175484_c + (this.field_175482_b - this.field_175484_c) * p_175471_1_;
        }
        
        @SideOnly(Side.CLIENT)
        public float func_175469_o(float p_175469_1_)
        {
            return this.field_175486_bm + (this.field_175485_bl - this.field_175486_bm) * p_175469_1_;
        }
        
        public float func_175477_p(float p_175477_1_)
        {
            return ((float)this.field_175479_bo + p_175477_1_) / (float)this.func_175464_ck();
        }
        
      
    
        public void updateAITasks()
        {
            super.updateAITasks();
    
            if (this.isElder())
            {
                int i = 1200;
                int j = 1200;
                int k = 6000;
                int l = 2;
    
                if ((this.ticksExisted + this.getEntityId()) % 1200 == 0)
                {
                    Potion potion = Potion.digSlowdown;
    
                    for (EntityPlayerMP entityplayermp : this.worldObj.getPlayers(EntityPlayerMP.class, new Predicate<EntityPlayerMP>()
                {
                    public boolean apply(EntityPlayerMP p_apply_1_)
                        {
    
                            return EntityGuardian.this.getDistanceSqToEntity(p_apply_1_) < 2500.0D && p_apply_1_.theItemInWorldManager.getGameType().isSurvivalOrAdventure();
                        }
     
                    }))
                    {
                        if (!entityplayermp.isPotionActive(potion) || entityplayermp.getActivePotionEffect(potion).getAmplifier() < 2 || entityplayermp.getActivePotionEffect(potion).getDuration() < 1200)
                        {
                            entityplayermp.playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(10, 0.0F));
                            entityplayermp.addPotionEffect(new PotionEffect(potion.id, 6000, 2));
                        }
                    }
                }
    
                if (!this.hasHome())
                {
                    this.entityCreature.getHomePosition();
                }
            }
        }
        
    
    	/**
         * Drop 0-2 items of this living's type
         */
        protected void dropFewItems(boolean p_70628_1_, int p_70628_2_)
        {
            int i = this.rand.nextInt(3) + this.rand.nextInt(p_70628_2_ + 1);
    
            if (i > 0)
            {
                this.entityDropItem(new ItemStack(TemogAesthetics.prismaItem, i, 0), 1.0F);
            }
    
            if (this.rand.nextInt(3 + p_70628_2_) > 1)
            {
                this.entityDropItem(new ItemStack(Items.fish, 1), 1.0F);
            }
            else if (this.rand.nextInt(3 + p_70628_2_) > 1)
            {
                this.entityDropItem(new ItemStack(TemogAesthetics.prismaItem, 1, 1), 1.0F);
            }
    
            if (p_70628_1_ && this.isElder())
            {
                this.entityDropItem(new ItemStack(Blocks.sponge, 1, 1), 1.0F);
            }
        }
        
        /**
         * Causes this Entity to drop a random item.
         */
       public static List<WeightedRandomFishable> func_174855_j()
        {
            return EntityFishHook.field_146036_f;
        }
        protected void addRandomDrop()
        {
            ItemStack itemstack = ((WeightedRandomFishable)WeightedRandom.getRandomItem(this.rand, func_174855_j())).getItemStack(this.rand);
            this.entityDropItem(itemstack, 1.0F);
        }
        
        
        /**
        * Checks to make sure the light is not too bright where the mob is spawning
        */
       protected boolean isValidLightLevel()
       {
           return true;
       }
       
       /**
        * Checks that the entity is not colliding with any blocks / liquids
        */
       public boolean isNotColliding()
       {
           return this.worldObj.checkNoEntityCollision(this.getBoundingBox(), this) && this.worldObj.getCollidingBoundingBoxes(this, this.getBoundingBox()).isEmpty();
       }
       
       /**
        * Checks if the entity's current position is a valid location to spawn this entity.
        */
       public boolean getCanSpawnHere()
       {
           return (this.rand.nextInt(20) == 0);
       }
       
       /**
        * Called when the entity is attacked.
        */
       public boolean attackEntityFrom(DamageSource source, float amount)
       {
           if (!this.func_175472_n() && !source.isMagicDamage() && source.getSourceOfDamage() instanceof EntityLivingBase)
           {
               EntityLivingBase entitylivingbase = (EntityLivingBase)source.getSourceOfDamage();
    
               if (!source.isExplosion())
               {
                   entitylivingbase.attackEntityFrom(DamageSource.causeThornsDamage(this), 2.0F);
                   entitylivingbase.playSound("TemogAesthetics:thorns", 0.5F, 1.0F);
               }
           }
    
           return super.attackEntityFrom(source, amount);
       }
       
       /**
        * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently
        * use in wolves.
        */
       public int getVerticalFaceSpeed()
       {
           return 180;
       }
       
       /**
        * Moves the entity based on the specified heading.  Args: strafe, forward
        */
       public void moveEntityWithHeading(float strafe, float forward)
       {
           if (this.ELBExtender.isServerWorld())
           {
               if (this.isInWater())
               {
                   this.moveFlying(strafe, forward, 0.1F);
                   this.moveEntity(this.motionX, this.motionY, this.motionZ);
                   this.motionX *= 0.8999999761581421D;
                   this.motionY *= 0.8999999761581421D;
                   this.motionZ *= 0.8999999761581421D;
    
                   if (!this.func_175472_n() && this.getAttackTarget() == null)
                   {
                       this.motionY -= 0.005D;
                   }
               }
               else
               {
                   super.moveEntityWithHeading(strafe, forward);
               }
           }
           else
           {
               super.moveEntityWithHeading(strafe, forward);
           }
       }
       
       
       public class AIGuardianAttack extends EntityAIBase {
    		private EntityGuardian theEntity;
    	    private int tickCounter;
    
    
    		public AIGuardianAttack(EntityGuardian p_i45833_1_)
    	    {
    	        this.theEntity = p_i45833_1_;
    	        this.setMutexBits(3);
    	    }
    
    	    /**
    	     * Returns whether the EntityAIBase should begin execution.
    	     */
    	    public boolean shouldExecute()
    	    {
    	        EntityLivingBase entitylivingbase = this.theEntity.getAttackTarget();
    	        return entitylivingbase != null && entitylivingbase.isEntityAlive();
    	    }
    
    	    /**
    	     * Returns whether an in-progress EntityAIBase should continue executing
    	     */
    	    public boolean continueExecuting()
    	    {
    	        return super.continueExecuting() && (this.theEntity.isElder() || this.theEntity.getDistanceSqToEntity(this.theEntity.getAttackTarget()) > 9.0D);
    	    }
    
    	    /**
    	     * Execute a one shot task or start executing a continuous task
    	     */
    	    public void startExecuting()
    	    {
    	        this.tickCounter = -10;
    	        this.theEntity.getNavigator().clearPathEntity();
    	        this.theEntity.getLookHelper().setLookPositionWithEntity(this.theEntity.getAttackTarget(), 90.0F, 90.0F);
    	        this.theEntity.isAirBorne = true;
    	    }
    	    
    	    
    	}
       
       /**
        * Resets the task
        */
       public void resetTask()
       {
           this.theEntity.setTargetedEntity(0);
           this.theEntity.setAttackTarget((EntityLivingBase)null);
           this.theEntity.wanderExtender.makeUpdate();
       }
       
       /**
        * Updates the task
        */
       public void updateTask()
       {
    	   
           EntityLivingBase entitylivingbase = this.theEntity.getAttackTarget();
           this.theEntity.getNavigator().clearPathEntity();
           this.theEntity.getLookHelper().setLookPositionWithEntity(entitylivingbase, 90.0F, 90.0F);
    
           if (!this.theEntity.canEntityBeSeen(entitylivingbase))
           {
               this.theEntity.setAttackTarget((EntityLivingBase)null);
           }
           else
           {
               ++this.tickCounter;
    
               if (this.tickCounter == 0)
               {
                   this.theEntity.setTargetedEntity(this.theEntity.getAttackTarget().getEntityId());
                   this.theEntity.worldObj.setEntityState(this.theEntity, (byte)21);
               }
               else if (this.tickCounter >= this.theEntity.func_175464_ck())
               {
                   float f = 1.0F;
    
                   if (this.theEntity.worldObj.difficultySetting == EnumDifficulty.HARD)
                   {
                       f += 2.0F;
                   }
    
                   if (this.theEntity.isElder())
                   {
                       f += 2.0F;
                   }
    
                   entitylivingbase.attackEntityFrom(DamageSource.causeIndirectMagicDamage(this.theEntity, this.theEntity), f);
                   entitylivingbase.attackEntityFrom(DamageSource.causeMobDamage(this.theEntity), (float)this.theEntity.getEntityAttribute(SharedMonsterAttributes.attackDamage).getAttributeValue());
                   this.theEntity.setAttackTarget((EntityLivingBase)null);
               }
               else if (this.tickCounter >= 60 && this.tickCounter % 20 == 0)
               {
                   ;
               }
    
               this.updateTask();
           }
           
       }
       
        static class GuardianTargetSelector implements Predicate<EntityLivingBase>, IEntitySelector
        {
            private EntityGuardian parentEntity;
    
            public GuardianTargetSelector(EntityGuardian p_i45832_1_)
            {
                this.parentEntity = p_i45832_1_;
            }
    
            public boolean apply(EntityLivingBase p_apply_1_)
            {
                return (p_apply_1_ instanceof EntityPlayer || p_apply_1_ instanceof EntitySquid) && p_apply_1_.getDistanceSqToEntity(this.parentEntity) > 9.0D;
            }
    
    		@Override
    		public boolean isEntityApplicable(Entity p_82704_1_) {
    			return false;
    		}
        }
        
        static class GuardianMoveHelper extends EntityMoveHelper
        {
            private EntityGuardian entityGuardian;
            private EntityMoveHelperExtender EMHextender;
            private EntityLookHelperExtender ELHextender; 
            /** The EntityLiving that is being moved */
            protected EntityLiving entity;
            protected double posX;
            protected double posY;
            protected double posZ;
            /** The speed at which the entity should move */
            protected double speed;
            protected boolean update;
    
            public GuardianMoveHelper(EntityGuardian p_i45831_1_)
            {
                super(p_i45831_1_);
                this.entityGuardian = p_i45831_1_;
            }
            public void onUpdateMoveHelper()
            {
                if (this.update && !this.entityGuardian.getNavigator().noPath())
                {
                    double d0 = this.posX - this.entityGuardian.posX;
                    double d1 = this.posY - this.entityGuardian.posY;
                    double d2 = this.posZ - this.entityGuardian.posZ;
                    double d3 = d0 * d0 + d1 * d1 + d2 * d2;
                    d3 = (double)MathHelper.sqrt_double(d3);
                    d1 = d1 / d3;
                    float f = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F;
                    this.entityGuardian.rotationYaw = this.EMHextender.limitAngle(this.entityGuardian.rotationYaw, f, 30.0F);
                    this.entityGuardian.renderYawOffset = this.entityGuardian.rotationYaw;
                    float f1 = (float)(this.speed * this.entityGuardian.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue());
                    this.entityGuardian.setAIMoveSpeed(this.entityGuardian.getAIMoveSpeed() + (f1 - this.entityGuardian.getAIMoveSpeed()) * 0.125F);
                    double d4 = Math.sin((double)(this.entityGuardian.ticksExisted + this.entityGuardian.getEntityId()) * 0.5D) * 0.05D;
                    double d5 = Math.cos((double)(this.entityGuardian.rotationYaw * (float)Math.PI / 180.0F));
                    double d6 = Math.sin((double)(this.entityGuardian.rotationYaw * (float)Math.PI / 180.0F));
                    this.entityGuardian.motionX += d4 * d5;
                    this.entityGuardian.motionZ += d4 * d6;
                    d4 = Math.sin((double)(this.entityGuardian.ticksExisted + this.entityGuardian.getEntityId()) * 0.75D) * 0.05D;
                    this.entityGuardian.motionY += d4 * (d6 + d5) * 0.25D;
                    this.entityGuardian.motionY += (double)this.entityGuardian.getAIMoveSpeed() * d1 * 0.1D;
                    EntityLookHelper entitylookhelper = this.entityGuardian.getLookHelper();
                    double d7 = this.entityGuardian.posX + d0 / d3 * 2.0D;
                    double d8 = (double)this.entityGuardian.getEyeHeight() + this.entityGuardian.posY + d1 / d3 * 1.0D;
                    double d9 = this.entityGuardian.posZ + d2 / d3 * 2.0D;
                    double d10 = this.ELHextender.getLookPosX();
                    double d11 = this.ELHextender.getLookPosY();
                    double d12 = this.ELHextender.getLookPosZ();
    
                    if (!this.ELHextender.getIsLooking())
                    {
                        d10 = d7;
                        d11 = d8;
                        d12 = d9;
                    }
    
                    this.entityGuardian.getLookHelper().setLookPosition(d10 + (d7 - d10) * 0.125D, d11 + (d8 - d11) * 0.125D, d12 + (d9 - d12) * 0.125D, 10.0F, 40.0F);
                    this.entityGuardian.func_175476_l(true);
                }
                else
                {
                    this.entityGuardian.setAIMoveSpeed(0.0F);
                    this.entityGuardian.func_175476_l(false);
                }
            }
        }
        
    
    
    }
    


    Posted in: Modification Development
  • 0

    posted a message on [REQUEST] Guardian and Elder Guardian Mod for 1.7.10.

    Please someone do this. Vastatio I'd be will to help you. I tried bring bulks of the 1.8 guardian class code across to 1.7.10 however the best I can do is get the model loaded. Renders and entity ai classes are a little more complex and something not to my liking. However I'd be happy to do textures bases for you!

    Posted in: Requests / Ideas For Mods
  • 0

    posted a message on Assistance with removing fire render from fireball entity

    This is great thanks for the response!


    Unfortunately tried both of these didn't seem to help, the override onUpdate() didn't seem do anything.


    Also tried the none extend, with copies from Fireball and SmallFireball, however it never gets shown in the firing process even with the resource locator command.


    Not sure on what else to do.

    Posted in: Modification Development
  • 0

    posted a message on Assistance with removing fire render from fireball entity

    Hey, I'm fairly new to modding, and started at 1.7.10 (yet to move onto later updates). I've made an entity a lot similar to Blaze, however rather than the "fire" aesthetic, I've made the entity more of the opposite to Blaze (ice,water).


    Although I have majorly figured the base stuff out including creating my custom fireball entity with slowness and snow placing on blocks. The main issues I'm having are the fireball render still showing the 'fire' animation.

    I've tried countless ways to change or even remove the render, however I have not been successful.


    I was wondering if this is possible or does the extended fireball entity require the fire?


    I hope this makes sense. Code for the custom fireball below. Forge 1.7.10-10.13.4.1448.


    package temog.temogaesthetics.entity.projectile;
    
    import net.minecraft.block.Block;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.projectile.EntityFireball;
    import net.minecraft.entity.projectile.EntitySmallFireball;
    import net.minecraft.init.Blocks;
    import net.minecraft.potion.Potion;
    import net.minecraft.potion.PotionEffect;
    import net.minecraft.util.DamageSource;
    import net.minecraft.util.MovingObjectPosition;
    import net.minecraft.util.MovingObjectPosition.MovingObjectType;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.world.World;
    import temog.temogaesthetics.entity.EntityGlaze;
    
    public class EntityNewSnowball extends EntitySmallFireball{
    	private static final String __OBFID = "CL_00001721";
    	
    	public EntityNewSnowball(World p_i1770_1_)
        {
            super(p_i1770_1_);
            this.setSize(0.3125F, 0.3125F);
        }
    
        public EntityNewSnowball(World p_i1771_1_, EntityLivingBase p_i1771_2_, double p_i1771_3_, double p_i1771_5_, double p_i1771_7_)
        {
            super(p_i1771_1_, p_i1771_2_, p_i1771_3_, p_i1771_5_, p_i1771_7_);
            this.setSize(0.3125F, 0.3125F);
        }
    
        public EntityNewSnowball(World p_i1772_1_, double p_i1772_2_, double p_i1772_4_, double p_i1772_6_, double p_i1772_8_, double p_i1772_10_, double p_i1772_12_)
        {
            super(p_i1772_1_, p_i1772_2_, p_i1772_4_, p_i1772_6_, p_i1772_8_, p_i1772_10_, p_i1772_12_);
            this.setSize(0.3125F, 0.3125F);
        }
    
    	private static final ResourceLocation mobTextures = new ResourceLocation("TemogAesthetics:textures/entity/projectile/iceball.png");
    	private static int fire = 0;
    	protected ResourceLocation getEntityTexture(EntityNewSnowball entity) {
    		// TODO Auto-generated method stub
    		return mobTextures;
    	}
    	
    	protected ResourceLocation getEntityTexture(Entity entity){
    		return this.getEntityTexture((EntityNewSnowball)entity);
    	}
        @Override
        public boolean isBurning()
        {
            boolean flag = this.worldObj != null && this.worldObj.isRemote;
            return false;
        }
    
        /**
         * Removes fire from entity.
         * 
         */
        @Override
        public void extinguish()
        {
        	this.fire = 0;
        }
        
        /**
         * Called when this EntityFireball hits a block or entity.
         */
        protected void onImpact(MovingObjectPosition p_70227_1_)
        {
            if (!this.worldObj.isRemote)
            {
                if (p_70227_1_.entityHit != null)
                {
                    if (!p_70227_1_.entityHit.isImmuneToFire() && p_70227_1_.entityHit.attackEntityFrom(DamageSource.causeFireballDamage(this, this.shootingEntity), 4.0F))
                    {
                    	((EntityLivingBase) p_70227_1_.entityHit).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 360, 2));
                    }
                }
                else
                {
                    int i = p_70227_1_.blockX;
                    int j = p_70227_1_.blockY;
                    int k = p_70227_1_.blockZ;
    
                    switch (p_70227_1_.sideHit)
                    {
                        case 0:
                            --j;
                            break;
                        case 1:
                            ++j;
                            break;
                        case 2:
                            --k;
                            break;
                        case 3:
                            ++k;
                            break;
                        case 4:
                            --i;
                            break;
                        case 5:
                            ++i;
                    }
    
                    if (this.worldObj.isAirBlock(i, j, k))
                    {
                        this.worldObj.setBlock(i, j, k, Blocks.snow_layer, 1, getEntityId());
                    }
                }
    
                this.setDead();
            }
        }
    
        /**
         * Returns true if other Entities should be prevented from moving through this Entity.
         */
        public boolean canBeCollidedWith()
        {
            return Blocks.flowing_water != Blocks.ice;
        }
    
        /**
         * Called when the entity is attacked.
         */
        public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_)
        {
            return false;
        }
    
    
    }
    Posted in: Modification Development
  • 0

    posted a message on The Ultimate Pun Mod! Updated Aug 2015

    The weapons in this mod are way to unbalanced and strong. The config has nothing to adjust this, nor a source code.

    Posted in: Minecraft Mods
  • 0

    posted a message on Atum 2: Return to the Sands

    I think it worked, I could only find one testing structure at 'chance = 1' but I can work with it, thank you, you are genius!

    Posted in: Minecraft Mods
  • 0

    posted a message on Atum 2: Return to the Sands

    Is this mod generation incompatible with Chocolate Quest? I'm making custom dungeons, and no matter what I do they refuse to spawn naturally in the Atum. This is the only dimension in my modpack (others include Aether, Hardcore End, Pun Mod Dimension, & Runic) that does not spawn Chocolate Quest dungeons. Is this fact or am I not trying something I should be?


    If someone knows how to fix this please let me know. Thanks

    Posted in: Minecraft Mods
  • 1

    posted a message on Harken Scythe: Reap -What- You Sow *Biomass Blocks and Adjustments*[V2.1.6 UPD: MAY 14]

    sadly I think this project has been abandoned

    Posted in: Minecraft Mods
  • 0

    posted a message on The Ultimate Pun Mod! Updated Aug 2015

    Thanks that would be great! Let me know how you go. Great mod by the way

    Posted in: Minecraft Mods
  • 0

    posted a message on The Ultimate Pun Mod! Updated Aug 2015

    tried to run this mod on a modpack server but did not work, assistance would appreciated I would love to start using this mod




    ---- Minecraft Crash Report ----
    // Don't be sad, have a hug! <3

    Time: 8/9/15 11:43 AM
    Description: Exception in server tick loop

    cpw.mods.fml.common.LoaderException: cpw.mods.fml.common.LoaderException: Attempted to load a proxy type com.gibby.pun.commonProxy into com.gibby.pun.PunMod.proxy, but the types don't match
    at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:76)
    at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:512)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
    at cpw.mods.fml.common.Loader.loadMods(Loader.java:513)
    at cpw.mods.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:87)
    at cpw.mods.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:314)
    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:117)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:387)
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685)
    Caused by: cpw.mods.fml.common.LoaderException: Attempted to load a proxy type com.gibby.pun.commonProxy into com.gibby.pun.PunMod.proxy, but the types don't match
    at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:69)
    ... 27 more

    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------

    -- System Details --
    Details:
    Minecraft Version: 1.7.10
    Operating System: Linux (amd64) version 3.13.0-30-generic
    Java Version: 1.7.0_76, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 660800344 bytes (630 MB) / 1012727808 bytes (965 MB) up to 4233953280 bytes (4037 MB)
    JVM Flags: 8 total; -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=7 -XX:+AggressiveOpts -XX:MaxPermSize=256M -Xms1G -Xmx4G
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 72 mods loaded, 72 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    UC mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
    UC FML{7.10.99.99} [Forge Mod Loader] (executable.jar)
    UC Forge{10.13.4.1448} [Minecraft Forge] (executable.jar)
    UC CodeChickenCore{1.0.6.43} [CodeChicken Core] (minecraft.jar)
    UC NotEnoughItems{1.0.4.107} [Not Enough Items] (NotEnoughItems-1.7.10-1.0.4.107-universal.jar)
    UC <CoFH ASM>{000} [CoFH ASM] (minecraft.jar)
    UC mod_ThreadedLighting{1.7.10-1.0} [Threaded Lighting] (minecraft.jar)
    UC FamiliarsAPI{1.7.10} [Familiars API] (_FamiliarsAPI-1.7.10.jar)
    UC gilded-games-util{1.7.10-1.1} [Gilded Games Utility] (gilded-games-util.jar)
    UC battlegear2{1.7.10} [Mine & Blade Battlegear 2 - Bullseye] (1.7.10-MB_Battlegear2-Bullseye-1.0.8.0.jar)
    UC simplecore{1.1.0} [SimpleCore API] ([1.7.10] SimpleCore API v1.1.0.jar)
    UC netherrocks{1.3.0} [Netherrocks] ([1.7.10] Netherrocks v1.3.0.jar)
    UC simpleores{1.6.0} [SimpleOres 2] ([1.7.10] SimpleOres 2 v1.6.0.jar)
    UC bspkrsCore{6.16} [bspkrsCore] ([1.7.10]bspkrsCore-universal-6.16.jar)
    UC Treecapitator{1.7.10} [Treecapitator] ([1.7.10]Treecapitator-universal-2.0.4.jar)
    UC DefaultMobPack{1.7.10} [DefaultMobPack] (_FamiliarsDefaultMobPack-1.7.10.jar)
    UC ExtendedFamPack{1.7.10} [ExtendedFamPack] (_FamiliarsExtendedFamPack-1.7.10.jar)
    UC HerobrineFamPack{1.7.10} [HerobrineFamPack] (_FamiliarsHerobrineFamPack-1.7.10.jar)
    UC IC2{2.2.756-experimental} [IndustrialCraft 2] (industrialcraft-2-2.2.756-experimental.jar)
    UC AdvancedMachines{1.1.3} [IC2 Advanced Machines Addon] (AdvancedMachinesAS-1.7.10.jar)
    UC AdvancedSolarPanel{1.7.10-3.5.1} [Advanced Solar Panels] (AdvancedSolarPanel-1.7.10-3.5.1.jar)
    UC aether{Alpha 1.7.10-1.4} [Aether II] (aether II 1.7.10 1.4.jar)
    UC AnimationAPI{1.2.4} [AnimationAPI] (AnimationAPI-1.7.10-1.2.4.jar)
    UC atum{0.6} [Atum] (Atum-1.7.10-0.6.60.jar)
    UC Backpack{2.0.1} [Backpack] (backpack-2.0.1-1.7.x.jar)
    UC BattleTowers{1.5.2} [Battle Towers] (BattleTowers-1.7.10.jar)
    UC Baubles{1.0.1.10} [Baubles] (Baubles-1.7.10-1.0.1.10.jar)
    UC CoFHCore{1.7.10R3.0.3} [CoFH Core] (CoFHCore-[1.7.10]3.0.3-303.jar)
    UC BuildCraft|Core{7.0.17} [BuildCraft] (buildcraft-7.0.17.jar)
    UC BuildCraft|Factory{7.0.17} [BC Factory] (buildcraft-7.0.17.jar)
    UC BuildCraft|Energy{7.0.17} [BC Energy] (buildcraft-7.0.17.jar)
    UC BuildCraft|Silicon{7.0.17} [BC Silicon] (buildcraft-7.0.17.jar)
    UC BuildCraft|Builders{7.0.17} [BC Builders] (buildcraft-7.0.17.jar)
    UC BuildCraft|Robotics{7.0.17} [BC Robotics] (buildcraft-7.0.17.jar)
    UC BuildCraft|Transport{7.0.17} [BC Transport] (buildcraft-7.0.17.jar)
    UC ChickenChunks{1.3.4.19} [ChickenChunks] (ChickenChunks-1.7.10-1.3.4.19-universal.jar)
    UC chocolateQuest{1.0} [Chocolate Quest] (chocolateQuest-1.7.10-1.1c.jar)
    UC eplus{3.0.2-d} [Enchanting Plus] (EnchantingPlus-1.7.10-3.0.2-d.jar)
    UC EnderIO{1.7.10-2.2.8.381} [Ender IO] (EnderIO-1.7.10-2.2.8.381.jar)
    UC ExtrabiomesXL{3.16.2} [ExtrabiomesXL] (extrabiomesxl_1.7.10-3.16.2.jar)
    UC iChunUtil{4.2.2} [iChunUtil] (iChunUtil-4.2.2.jar)
    UC GraviGun{4.0.0-beta} [GraviGun] (GravityGun-4.0.0-beta.jar)
    UC Growthcraft{2.1.0a} [Growthcraft] (growthcraft-core-1.7.10-2.1.0a.jar)
    UC Growthcraft|Cellar{2.1.0a} [Growthcraft Cellar] (growthcraft-cellar-1.7.10-2.1.0b.jar)
    UC Growthcraft|Bees{2.1.0} [Growthcraft Bees] (growthcraft-bees-1.7.10-2.1.0.jar)
    UC Growthcraft|Fishtrap{2.1.0a} [Growthcraft Fishtrap] (growthcraft-fishtrap-1.7.10-2.1.0a.jar)
    UC Growthcraft|Grapes{2.1.0} [Growthcraft Grapes] (growthcraft-grapes-1.7.10-2.1.0.jar)
    UC Growthcraft|Hops{2.1.0} [Growthcraft Hops] (growthcraft-hops-1.7.10-2.1.0.jar)
    UC Growthcraft|Rice{2.1.0a} [Growthcraft Rice] (growthcraft-rice-1.7.10-2.1.0a.jar)
    UC Hats{4.0.1} [Hats] (Hats-4.0.1.jar)
    UC kloudspacekloudgear{1.7.10build1.1} [Hexxit Gear Revisited] (Hexxit Gear Revisited-1.7.10-build1.1.jar)
    UC InfernalMobs{1.6.1} [Infernal Mobs] (InfernalMobs-1.7.10.jar)
    UC inventorytweaks{1.58-147-645ca10} [Inventory Tweaks] (Inventory-Tweaks-Mod-1.7.10.jar)
    UC JASCompatability{1.2.0} [Just Another Spawner Compatibility Addon] (JustAnotherSpawnerCompatibilityAddon-1.2.0.jar)
    UC legendgear{2.b.2.1} [LegendGear 2] (legendgear-1.7.10-2.b.2.1.jar)
    UC meteors{2.14.3} [Falling Meteors] (meteors-1.7.10-2.14.3.jar)
    UC MineTweaker3{3.0.9B} [MineTweaker 3] (MineTweaker3-1.7.10-3.0.9C.jar)
    UC MutantCreatures{1.4.8} [Mutant Creatures] (MutantCreatures-1.7.10-1.4.8.jar)
    UC Mantle{1.7.10-0.3.2.jenkins184} [Mantle] (Mantle-1.7.10-0.3.2.jar)
    UC Natura{2.2.0} [Natura] (natura-1.7.10-2.2.0.1.jar)
    UC primitivemobs{1.0} [Primitive Mobs] (primitivemobs-1.0c-1.7.10.jar)
    UC ProjectZulu|Core{1.7.10-1.4c2} [Project Zulu] (ProjectZulu-1.7.10-1.4c2.jar)
    UE gibby_pun{1.5} [The Ultimate Pun Mod!] (PunMod 1.7.10-1.5.2.jar)
    UC AetherCraft{1.5.0.82} [AetherCraft] (Quintessences(AetherCraft-1.7.10-1.5.0.82).jar)
    UC AS_Ruins{15.1} [Ruins Spawning System] (Ruins15.1-1.7.10.jar)
    UC runicdungeons{1.1.5} [Runic Dungeons] (runicdungeons-1.1.5.jar)
    UC TConstruct{1.7.10-1.8.5.build957} [Tinkers' Construct] (TConstruct-1.7.10-1.8.5.jar)
    UC TML{4.0.0} [TooMuchLoot] (TooMuchLoot-1.7.10-4.0.0.B25.jar)
    UC TwilightForest{2.3.7} [The Twilight Forest] (twilightforest-1.7.10-2.3.7.jar)
    UC AS_UpdateCheck{1.1.6} [AtomicStryker Update Check Mod] (UpdateCheckerMod-1.7.10.jar)
    UC JustAnotherSpawner{0.17.2} [Just Another Spawner] (JustAnotherSpawner-0.17.2.jar)
    UC zzzzzcustomconfigs{2.3.0} [ZZZZZ Custom Configs] (ZZZZZ Custom Configs-2.3.0.jar)
    CoFHCore: -[1.7.10]3.0.3-303
    Mantle Environment: Environment healthy.
    TConstruct Environment: Environment healthy.
    Profiler Position: N/A (disabled)
    Is Modded: Definitely; Server brand changed to 'fml,forge'
    Type: Dedicated Server (map_server.txt)

    Posted in: Minecraft Mods
  • 0

    posted a message on [WIP] Runic Dungeons v1.1.6a - A Whole New Dimension to Explore!

    That'll be fantastic thanks, love your work!

    Posted in: Minecraft Mods
  • To post a comment, please .