• 0

    posted a message on [1.2.2] MCAnimator | Windows, Mac & Linux | Important fixes! | Create your models, animate them, paint your textures

    the code gets underlined with a red line as it doesnt like me changing static variables to non static. Is there any code that looks like it could be causing all the animations to run the same animations between 2 enemies?

    Posted in: Minecraft Tools
  • 0

    posted a message on [1.2.2] MCAnimator | Windows, Mac & Linux | Important fixes! | Create your models, animate them, paint your textures

    I can't see where its declared. Some things in my animhandler are declared static but changing them causes errors.


    Here are my files:


    AnimHandler:


    .

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    import net.minecraft.entity.Entity;
    
    import fisherman77.paleocraft.client.MCAClientLibrary.MCAModelRenderer;
    import fisherman77.paleocraft.common.MCACommonLibrary.IMCAnimatedEntity;
    import fisherman77.paleocraft.common.MCACommonLibrary.math.Quaternion;
    import fisherman77.paleocraft.common.MCACommonLibrary.math.Vector3f;
    
    import cpw.mods.fml.common.FMLCommonHandler;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    public abstract class AnimationHandler {
    	public AnimTickHandler animTickHandler;
    	/** Owner of this handler. */
    	private IMCAnimatedEntity animatedEntity;
    	/** List of all the activate animations of this Entity. */
    	public ArrayList<Channel> animCurrentChannels = new ArrayList();
    	/** Previous time of every active animation. */
    	public HashMap<String, Long> animPrevTime = new HashMap<String, Long>();
    	/** Current frame of every active animation. */
    	public HashMap<String, Float> animCurrentFrame = new HashMap<String, Float>();
    	/** Contains the unique names of the events that have been already fired during each animation.
    	 * It becomes empty at the end of every animation. The key is the animation name and the value is the list of already-called events. */
    	private HashMap<String, ArrayList<String>> animationEvents = new HashMap<String, ArrayList<String>>();
    
    	public AnimationHandler(IMCAnimatedEntity entity) {
    		if(animTickHandler == null) {
    			animTickHandler = new AnimTickHandler();
    		}
    		animTickHandler.addEntity(entity);
    
    		animatedEntity = entity;
    	}
    	
    	public IMCAnimatedEntity getEntity() {
    		return animatedEntity;
    	}
    
    	public void activateAnimation(HashMap<String, Channel> animChannels, String name, float startingFrame) {
    		if(animChannels.get(name) != null)
    		{
    			Channel selectedChannel = animChannels.get(name);
    			int indexToRemove = animCurrentChannels.indexOf(selectedChannel);
    			if(indexToRemove != -1)
    			{
    				animCurrentChannels.remove(indexToRemove);
    			}
    
    			animCurrentChannels.add(selectedChannel);
    			animPrevTime.put(name, System.nanoTime());
    			animCurrentFrame.put(name, startingFrame);
    			if(animationEvents.get(name) == null){
    				animationEvents.put(name, new ArrayList<String>());
    			}
    		} else {
    			System.out.println("The animation called "+name+" doesn't exist!");
    		}
    	}
    
    	public abstract void activateAnimation(String name, float startingFrame);
    
    	public void stopAnimation(HashMap<String, Channel> animChannels, String name) {
    		Channel selectedChannel = animChannels.get(name);
    		if(selectedChannel != null)
    		{
    			int indexToRemove = animCurrentChannels.indexOf(selectedChannel);
    			if(indexToRemove != -1)
    			{
    				animCurrentChannels.remove(indexToRemove);
    				animPrevTime.remove(name);
    				animCurrentFrame.remove(name);
    				animationEvents.get(name).clear();
    			}
    		} else {
    			System.out.println("The animation called "+name+" doesn't exist!");
    		}
    	}
    
    	public abstract void stopAnimation(String name);
    
    	public void animationsUpdate() {
    		for(Iterator<Channel> it = animCurrentChannels.iterator(); it.hasNext();)
    		{
    			Channel anim = it.next();
    			float prevFrame = animCurrentFrame.get(anim.name);
    			boolean animStatus = updateAnimation(animatedEntity, anim, animPrevTime, animCurrentFrame);
    			if(animCurrentFrame.get(anim.name) != null)
    			{
    				fireAnimationEvent(anim, prevFrame, animCurrentFrame.get(anim.name));
    			}
    			if(!animStatus)
    			{
    				it.remove();
    				animPrevTime.remove(anim.name);
    				animCurrentFrame.remove(anim.name);
    				animationEvents.get(anim.name).clear();
    			}
    		}
    	}
    
    	public boolean isAnimationActive(String name) {
    		boolean animAlreadyUsed = false;
    		for(Channel anim : animatedEntity.getAnimationHandler().animCurrentChannels)
    		{
    			if(anim.name.equals(name))
    			{
    				animAlreadyUsed = true;
    				break;
    			}
    		}
    
    		return animAlreadyUsed;
    	}
    
    	private void fireAnimationEvent(Channel anim, float prevFrame, float frame)
    	{
    		if(isWorldRemote(animatedEntity))
    		{
    			fireAnimationEventClientSide(anim, prevFrame, frame);
    		} else {
    			fireAnimationEventServerSide(anim, prevFrame, frame);
    		}
    	}
    
    	@SideOnly(Side.CLIENT)
    	public abstract void fireAnimationEventClientSide(Channel anim, float prevFrame, float frame);
    
    	public abstract void fireAnimationEventServerSide(Channel anim, float prevFrame, float frame);
    	
    	/** Check if the animation event has already been called. */
    	public boolean alreadyCalledEvent(String animName, String eventName) {
    		if(animationEvents.get(animName) == null) {
    			System.out.println("Cannot check for event "+eventName+"! Animation "+animName+"does not exist or is not active.");
    			return true;
    		}
    		return animationEvents.get(animName).contains(eventName);
    	}
    	
    	/** Set the animation event as "called", so it won't be fired again. */
    	public void setCalledEvent(String animName, String eventName) {
    		if(animationEvents.get(animName) != null) {
    			animationEvents.get(animName).add(eventName);
    		} else {
    			System.out.println("Cannot set event "+eventName+"! Animation "+animName+"does not exist or is not active.");
    		}
    	}
    
    	/** Update animation values. Return false if the animation should stop. */
    	public boolean updateAnimation(IMCAnimatedEntity entity, Channel channel, HashMap<String, Long> prevTimeAnim, HashMap<String, Float> prevFrameAnim)
    	{
    		if(FMLCommonHandler.instance().getEffectiveSide().isServer() || (FMLCommonHandler.instance().getEffectiveSide().isClient() && !isGamePaused()))
    		{
    			if(!(channel.mode == Channel.CUSTOM))
    			{
    				long prevTime = prevTimeAnim.get(channel.name);
    				float prevFrame = prevFrameAnim.get(channel.name);
    
    				long currentTime = System.nanoTime();
    				double deltaTime = (currentTime-prevTime) / 1000000000.0;
    				float numberOfSkippedFrames = (float) (deltaTime * channel.fps);
    
    				float currentFrame = prevFrame + numberOfSkippedFrames;
    
    				if(currentFrame < channel.totalFrames-1) //-1 as the first frame mustn't be "executed" as it is the starting situation
    				{
    					prevTimeAnim.put(channel.name, currentTime);
    					prevFrameAnim.put(channel.name, currentFrame);
    					return true;
    				} else {
    					if(channel.mode == Channel.LOOP)
    					{
    						prevTimeAnim.put(channel.name, currentTime);
    						prevFrameAnim.put(channel.name, 0F);
    						return true;
    					}
    					return false;
    				}
    			} else {
    				return true;
    			}
    		} else {
    			long currentTime = System.nanoTime();
    			prevTimeAnim.put(channel.name, currentTime);
    			return true;
    		}
    	}
    
    	@SideOnly(Side.CLIENT)
    	private static boolean isGamePaused() {
    		net.minecraft.client.Minecraft MC = net.minecraft.client.Minecraft.getMinecraft();
    		return MC.isSingleplayer() && MC.currentScreen != null && MC.currentScreen.doesGuiPauseGame() && !MC.getIntegratedServer().getPublic();
    	}
    
    	/** Apply animations if running or apply initial values.
    	 * Must be called only by the model class.
    	 */
    	@SideOnly(Side.CLIENT)
    	public static void performAnimationInModel(HashMap<String, MCAModelRenderer> parts, IMCAnimatedEntity entity)
    	{
    		for (Map.Entry<String, MCAModelRenderer> entry : parts.entrySet()) {
    			String boxName = entry.getKey();
    			MCAModelRenderer box = entry.getValue();
    
    			boolean anyRotationApplied = false;
    			boolean anyTranslationApplied = false;
    			boolean anyCustomAnimationRunning = false;
    
    			for(Channel channel : entity.getAnimationHandler().animCurrentChannels)
    			{
    				if(channel.mode != Channel.CUSTOM) {
    					float currentFrame = entity.getAnimationHandler().animCurrentFrame.get(channel.name);
    
    					//Rotations
    					KeyFrame prevRotationKeyFrame = channel.getPreviousRotationKeyFrameForBox(boxName, entity.getAnimationHandler().animCurrentFrame.get(channel.name));
    					int prevRotationKeyFramePosition = prevRotationKeyFrame != null ? channel.getKeyFramePosition(prevRotationKeyFrame) : 0;
    
    					KeyFrame nextRotationKeyFrame = channel.getNextRotationKeyFrameForBox(boxName, entity.getAnimationHandler().animCurrentFrame.get(channel.name));
    					int nextRotationKeyFramePosition = nextRotationKeyFrame != null ? channel.getKeyFramePosition(nextRotationKeyFrame) : 0;
    
    					float SLERPProgress = (currentFrame - (float)prevRotationKeyFramePosition) / ((float)(nextRotationKeyFramePosition - prevRotationKeyFramePosition));
    					if(SLERPProgress > 1F || SLERPProgress < 0F)
    					{
    						SLERPProgress = 1F;
    					}
    
    					if(prevRotationKeyFramePosition == 0 && prevRotationKeyFrame == null  && !(nextRotationKeyFramePosition == 0))
    					{
    						Quaternion currentQuat = new Quaternion();
    						currentQuat.slerp(parts.get(boxName).getDefaultRotationAsQuaternion(), nextRotationKeyFrame.modelRenderersRotations.get(boxName), SLERPProgress);
    						box.getRotationMatrix().set(currentQuat).transpose();
    
    						anyRotationApplied = true;
    					} else if(prevRotationKeyFramePosition == 0 && prevRotationKeyFrame != null && !(nextRotationKeyFramePosition == 0))
    					{
    						Quaternion currentQuat = new Quaternion();
    						currentQuat.slerp(prevRotationKeyFrame.modelRenderersRotations.get(boxName), nextRotationKeyFrame.modelRenderersRotations.get(boxName), SLERPProgress);
    						box.getRotationMatrix().set(currentQuat).transpose();
    
    						anyRotationApplied = true;
    					} else if(!(prevRotationKeyFramePosition == 0) && !(nextRotationKeyFramePosition == 0))
    					{
    						Quaternion currentQuat = new Quaternion();
    						currentQuat.slerp(prevRotationKeyFrame.modelRenderersRotations.get(boxName), nextRotationKeyFrame.modelRenderersRotations.get(boxName), SLERPProgress);
    						box.getRotationMatrix().set(currentQuat).transpose();
    
    						anyRotationApplied = true;
    					}
    
    
    					//Translations
    					KeyFrame prevTranslationKeyFrame = channel.getPreviousTranslationKeyFrameForBox(boxName, entity.getAnimationHandler().animCurrentFrame.get(channel.name));
    					int prevTranslationsKeyFramePosition = prevTranslationKeyFrame != null ? channel.getKeyFramePosition(prevTranslationKeyFrame) : 0;
    
    					KeyFrame nextTranslationKeyFrame = channel.getNextTranslationKeyFrameForBox(boxName, entity.getAnimationHandler().animCurrentFrame.get(channel.name));
    					int nextTranslationsKeyFramePosition = nextTranslationKeyFrame != null ? channel.getKeyFramePosition(nextTranslationKeyFrame) : 0;
    
    					float LERPProgress = (currentFrame - (float)prevTranslationsKeyFramePosition) / ((float)(nextTranslationsKeyFramePosition - prevTranslationsKeyFramePosition));
    					if(LERPProgress > 1F)
    					{
    						LERPProgress = 1F;
    					}
    
    					if(prevTranslationsKeyFramePosition == 0 && prevTranslationKeyFrame == null && !(nextTranslationsKeyFramePosition == 0))
    					{
    						Vector3f startPosition = parts.get(boxName).getPositionAsVector();
    						Vector3f endPosition = nextTranslationKeyFrame.modelRenderersTranslations.get(boxName);
    						Vector3f currentPosition = new Vector3f(startPosition);
    						currentPosition.interpolate(endPosition, LERPProgress);
    						box.setRotationPoint(currentPosition.x, currentPosition.y, currentPosition.z);
    
    						anyTranslationApplied = true;
    					} else if(prevTranslationsKeyFramePosition == 0 && prevTranslationKeyFrame != null && !(nextTranslationsKeyFramePosition == 0))
    					{
    						Vector3f startPosition = prevTranslationKeyFrame.modelRenderersTranslations.get(boxName);
    						Vector3f endPosition = nextTranslationKeyFrame.modelRenderersTranslations.get(boxName);
    						Vector3f currentPosition = new Vector3f(startPosition);
    						currentPosition.interpolate(endPosition, LERPProgress);
    						box.setRotationPoint(currentPosition.x, currentPosition.y, currentPosition.z);
    					} else if(!(prevTranslationsKeyFramePosition == 0) && !(nextTranslationsKeyFramePosition == 0))
    					{
    						Vector3f startPosition = prevTranslationKeyFrame.modelRenderersTranslations.get(boxName);
    						Vector3f endPosition = nextTranslationKeyFrame.modelRenderersTranslations.get(boxName);
    						Vector3f currentPosition = new Vector3f(startPosition);
    						currentPosition.interpolate(endPosition, LERPProgress);
    						box.setRotationPoint(currentPosition.x, currentPosition.y, currentPosition.z);
    
    						anyTranslationApplied = true;
    					}
    				} else {
    					anyCustomAnimationRunning = true;
    
    					((CustomChannel)channel).update(parts, entity);
    				}
    			}
    
    			//Set the initial values for each box if necessary
    			if(!anyRotationApplied && !anyCustomAnimationRunning)
    			{
    				box.resetRotationMatrix();
    			}
    			if(!anyTranslationApplied && !anyCustomAnimationRunning)
    			{
    				box.resetRotationPoint();				
    			}
    		}
    	}
    
    	public boolean isWorldRemote(IMCAnimatedEntity animatedEntity) {
    		return ((Entity)animatedEntity).worldObj.isRemote;
    	}
    }




    Entity file:


    import java.util.Random;
    
    import fisherman77.paleocraft.common.MCACommonLibrary.IMCAnimatedEntity;
    import fisherman77.paleocraft.common.MCACommonLibrary.animation.AnimationHandler;
    import fisherman77.paleocraft.common.animations.EntityCitipati.AnimationHandlerCitipati;
    import fisherman77.paleocraft.common.animations.EntityDimorphLand.AnimationHandlerDimorphLand;
    
    import net.minecraft.enchantment.EnchantmentHelper;
    import net.minecraft.enchantment.EnchantmentThorns;
    import net.minecraft.entity.ai.EntityAIAttackOnCollide;
    import net.minecraft.entity.ai.EntityAIAvoidEntity;
    import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
    import net.minecraft.entity.ai.EntityAIPanic;
    import net.minecraft.entity.ai.EntityAISwimming;
    import net.minecraft.entity.ai.EntityAIWander;
    import net.minecraft.entity.ai.EntityAIWatchClosest;
    import net.minecraft.entity.monster.EntityMob;
    import net.minecraft.entity.passive.EntityAnimal;
    import net.minecraft.entity.passive.EntityChicken;
    import net.minecraft.entity.passive.EntityVillager;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityAgeable;
    import net.minecraft.entity.EntityCreature;
    import net.minecraft.entity.EntityLiving;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.EnumCreatureAttribute;
    import net.minecraft.entity.SharedMonsterAttributes;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.potion.Potion;
    import net.minecraft.potion.PotionEffect;
    import net.minecraft.util.ChatComponentTranslation;
    import net.minecraft.util.DamageSource;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.World;
    
    
    public class EntityCitipati extends EntityAnimal implements IMCAnimatedEntity
    {
    	protected AnimationHandler animHandler = new AnimationHandlerCitipati(this);
     public EntityCitipati(World world) 
     {
    	 super(world);
      
      this.setSize(1.0F, 1.0F);
      
      this.getNavigator().setAvoidsWater(true);
      
      this.tasks.addTask(0, new EntityAIAttackOnCollide(this, EntityChicken.class, 1.0D, false));
      this.tasks.addTask(1, new EntityAIPanic(this, 1.25D));
      this.tasks.addTask(2, new EntityAIWander(this, 0.5D));
      this.tasks.addTask(3, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
      this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityChicken.class, 0, true));
      this.tasks.addTask(1, new EntityAIAvoidEntity(this, EntityBaryonyx.class, 8.0F, 0.8D, 0.8D));
      this.tasks.addTask(1, new EntityAIAvoidEntity(this, EntitySpino.class, 8.0F, 0.8D, 0.8D));
     // this.tasks.addTask(1, new EntityAIAvoidEntity(this, EntityDromaeosaurus.class, 8.0F, 0.6D, 0.6D));
      this.tasks.addTask(1, new EntityAIAvoidEntity(this, EntityMegalodon.class, 8.0F, 0.8D, 0.8D));
      this.tasks.addTask(1, new EntityAIAvoidEntity(this, EntityTylo.class, 8.0F, 0.8D, 0.8D));
      this.tasks.addTask(1, new EntityAIAvoidEntity(this, EntityQuetzalcoatlus.class, 8.0F, 0.8D, 0.8D));
      this.tasks.addTask(1, new EntityAIAvoidEntity(this, EntityCryo.class, 8.0F, 0.8D, 0.8D));
      this.tasks.addTask(0, new EntityAISwimming(this));
     }
     
    	@Override
    	protected void applyEntityAttributes() {
    	    super.applyEntityAttributes();
    	    
    	    getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5); // moveSpeed
    	    getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(4.5); // maxHealth
    	}
     
     
    
    	protected boolean isAIEnabled()
    	{
    	    return true;
    	}
    
    /**
     * Returns the sound this mob makes while it's alive.
     */
    @Override
    	protected String getLivingSound()
    {
    	playSound("Paleocraft:mob.citipati.citiliving", getSoundVolume(), getSoundPitch());
    	return null;
    }
    
    /**
     * Returns the sound this mob makes when it is hurt.
     */
    @Override
    protected String getHurtSound()
    {
    	playSound("Paleocraft:mob.citipati.citihurt", getSoundVolume(), getSoundPitch());
    	return null;
    }
    
    /**
     * Returns the sound this mob makes on death.
     */
    @Override
    protected String getDeathSound()
    {
    	playSound("Paleocraft:mob.other.smallherbdeath", getSoundVolume(), getSoundPitch());
    	return null;
    }
    
    protected boolean canDespawn()
    {
    return false;
    }
    
    @Override
    public EntityAgeable createChild(EntityAgeable entityageable) {
    	// TODO Auto-generated method stub
    	return null;
    }
    public void onUpdate() {
    	super.onUpdate();
    	   if(!this.getAnimationHandler().isAnimationActive("lookAt")) {
    	        this.getAnimationHandler().activateAnimation("lookAt", 0);
    	    }
        if(!this.getAnimationHandler().isAnimationActive("Idle")) {
            this.getAnimationHandler().activateAnimation("Idle", 0);
        }
    
    }
    	
    
    @Override
    public void moveEntityWithHeading(float strafe, float forward)
    {
    	//if (this.motionX > 0.05 || this.motionZ > 0.05 || this.motionX < -0.05 || this.motionZ < -0.05) // .05 threshold for detecting enough movement to play the animation
    	if (this.motionX > 0.05 || this.motionZ > 0.05) 
    	{
    if (!animHandler.isAnimationActive("Walk"))
    {
    animHandler.activateAnimation("Walk", 0);
    }
    }
    super.moveEntityWithHeading(strafe, forward);
    }
    
    
    
    
    //ATTACKING OTHER MOBS - OVERRIDING ENTITYANIMAL
    	/**
    	 * Basic mob attack. Default to touch of death in EntityCreature. Overridden by each mob to define their attack.
    	 */
    	protected void attackEntity(Entity par1Entity, float par2)
    	{
    	    if (this.attackTime <= 0 && par2 < 2.0F && par1Entity.boundingBox.maxY > this.boundingBox.minY && par1Entity.boundingBox.minY < this.boundingBox.maxY)
    	    {
    	        this.attackTime = 20;
    	        this.attackEntityAsMob(par1Entity);
    	    }
    	}
    	
    	public boolean attackEntityAsMob(Entity par1Entity)
    	{
    		int i = 10; //attackStrength
    	    return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float)i);
    	}
    	public  boolean interact(EntityPlayer par1EntityPlayer)
    
    	 {
    	 	ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem();
    	 	
    	 if	(itemstack != null && itemstack.getItem() == Items.chicken)
    	 	 
    	 {
    		 
    	if (!par1EntityPlayer.capabilities.isCreativeMode)
    	 					 
    	 				{
    	 					--itemstack.stackSize;
    	 				}
    	 	
    	 				if (itemstack.stackSize <= 0)
    	 				{
    	 				
    	 				}
    	 				
    	 				if (!this.worldObj.isRemote)
    	 				{
    	 					
    	 					 EntityBaryonyx entitybaryonyx = new EntityBaryonyx(worldObj);
    	 	                //this.setHealth((this.getHealth())*1);
    	 					 this.setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch);
    	 	             //   ((EntityPlayer) par1EntityPlayer).addChatComponentMessage(new ChatComponentTranslation("tile.feeding.quetz", new Object[0]));
    	 	               this.playTameEffect(true);
    	 	               worldObj.spawnParticle("largeexplode", posX, posY + (double)(height / 2.0F), posZ, 0.0D, 0.0D, 0.0D);
    	 	            //  this.setHealth(2);
    	 	        	 this.playTameEffect(true);
    	 	        	this.playSound("random.eat", 1.0F, (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F);
    	 	        	 return true;
    	 				}
    	 				 this.playTameEffect(true);
    	 				this.addPotionEffect(new PotionEffect(Potion.heal.id, 1, 4));
    	 
    	 }
    	return false;
    	 }
    
    protected void playTameEffect(boolean p_70908_1_)
    {
        String s = "heart";
    
        if (!p_70908_1_)
        {
            s = "smoke";
        }
    
        for (int i = 0; i < 7; ++i)
        {
            double d0 = this.rand.nextGaussian() * 0.02D;
            double d1 = this.rand.nextGaussian() * 0.02D;
            double d2 = this.rand.nextGaussian() * 0.02D;
            this.worldObj.spawnParticle(s, this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + 0.5D + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, d0, d1, d2);
        }
    }
    
    
    
    @Override
    		public AnimationHandler getAnimationHandler() {
    			return animHandler;
    		}
    
    
    }





    Entity Model file:


    import java.util.HashMap;
    
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.entity.Entity;
    
    import fisherman77.paleocraft.client.MCAClientLibrary.MCAModelRenderer;
    import fisherman77.paleocraft.common.MCACommonLibrary.MCAVersionChecker;
    import fisherman77.paleocraft.common.MCACommonLibrary.animation.AnimationHandler;
    import fisherman77.paleocraft.common.MCACommonLibrary.math.Matrix4f;
    import fisherman77.paleocraft.common.MCACommonLibrary.math.Quaternion;
    //import fisherman77.paleocraft.common.entities.mobs.EntityNew;
    
    public class ModelCitipatiAnim extends ModelBase {
    public final int MCA_MIN_REQUESTED_VERSION = 5;
    public HashMap<String, MCAModelRenderer> parts = new HashMap<String, MCAModelRenderer>();
    
    MCAModelRenderer leftArm1;
    MCAModelRenderer rightArm1;
    MCAModelRenderer neck1;
    MCAModelRenderer body;
    MCAModelRenderer tail1;
    MCAModelRenderer leftThigh;
    MCAModelRenderer rightThigh;
    MCAModelRenderer leftArm2;
    MCAModelRenderer rightArm2;
    MCAModelRenderer neck2;
    MCAModelRenderer tail2;
    MCAModelRenderer leftLeg;
    MCAModelRenderer leftFoot;
    MCAModelRenderer rightFoot;
    MCAModelRenderer rightLeg;
    MCAModelRenderer wattle2;
    MCAModelRenderer wattle1;
    MCAModelRenderer head;
    MCAModelRenderer tail3;
    MCAModelRenderer beak;
    MCAModelRenderer crest2;
    MCAModelRenderer crest1;
    MCAModelRenderer crest3;
    MCAModelRenderer crest4;
    MCAModelRenderer tailFan3;
    MCAModelRenderer tail4;
    MCAModelRenderer tailFan4;
    MCAModelRenderer tail5;
    MCAModelRenderer tailFan5;
    
    public ModelCitipatiAnim()
    {
    MCAVersionChecker.checkForLibraryVersion(getClass(), MCA_MIN_REQUESTED_VERSION);
    
    textureWidth = 200;
    textureHeight = 104;
    
    leftArm1 = new MCAModelRenderer(this, "LeftArm1", 107, 72);
    leftArm1.mirror = false;
    leftArm1.addBox(0.0F, -3.0F, -3.0F, 1, 3, 4);
    leftArm1.setInitialRotationPoint(3.0F, -9.0F, 6.0F);
    leftArm1.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.2079117F, 0.0F, 0.0F, 0.9781476F)).transpose());
    leftArm1.setTextureSize(200, 104);
    parts.put(leftArm1.boxName, leftArm1);
    
    rightArm1 = new MCAModelRenderer(this, "RightArm1", 107, 72);
    rightArm1.mirror = false;
    rightArm1.addBox(-1.0F, -3.0F, -3.0F, 1, 3, 4);
    rightArm1.setInitialRotationPoint(-3.0F, -9.0F, 6.0F);
    rightArm1.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.2079117F, 0.0F, 0.0F, 0.9781476F)).transpose());
    rightArm1.setTextureSize(200, 104);
    parts.put(rightArm1.boxName, rightArm1);
    
    neck1 = new MCAModelRenderer(this, "Neck1", 72, 41);
    neck1.mirror = false;
    neck1.addBox(-2.0F, -2.0F, 0.0F, 4, 4, 3);
    neck1.setInitialRotationPoint(0.0F, -7.0F, 6.0F);
    neck1.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(-0.25881904F, 0.0F, 0.0F, 0.9659258F)).transpose());
    neck1.setTextureSize(200, 104);
    parts.put(neck1.boxName, neck1);
    
    body = new MCAModelRenderer(this, "Body", 45, 58);
    body.mirror = false;
    body.addBox(-3.0F, -5.0F, -12.0F, 6, 8, 12);
    body.setInitialRotationPoint(0.0F, -7.0F, 7.0F);
    body.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    body.setTextureSize(200, 104);
    parts.put(body.boxName, body);
    
    tail1 = new MCAModelRenderer(this, "Tail1", 17, 69);
    tail1.mirror = false;
    tail1.addBox(-2.5F, -4.0F, -4.0F, 5, 6, 4);
    tail1.setInitialRotationPoint(0.0F, -6.0F, -5.0F);
    tail1.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    tail1.setTextureSize(200, 104);
    parts.put(tail1.boxName, tail1);
    
    leftThigh = new MCAModelRenderer(this, "Left Thigh", 10, 42);
    leftThigh.mirror = false;
    leftThigh.addBox(0.0F, -7.0F, -2.0F, 2, 9, 4);
    leftThigh.setInitialRotationPoint(2.0F, -8.0F, -3.0F);
    leftThigh.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    leftThigh.setTextureSize(200, 104);
    parts.put(leftThigh.boxName, leftThigh);
    
    rightThigh = new MCAModelRenderer(this, "Right Thigh", 3, 28);
    rightThigh.mirror = false;
    rightThigh.addBox(-2.0F, -7.0F, -2.0F, 2, 9, 4);
    rightThigh.setInitialRotationPoint(-2.0F, -8.0F, -3.0F);
    rightThigh.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    rightThigh.setTextureSize(200, 104);
    parts.put(rightThigh.boxName, rightThigh);
    
    leftArm2 = new MCAModelRenderer(this, "LeftArm2", 105, 87);
    leftArm2.mirror = false;
    leftArm2.addBox(0.0F, -8.0F, -2.0F, 1, 5, 6);
    leftArm2.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    leftArm2.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    leftArm2.setTextureSize(200, 104);
    parts.put(leftArm2.boxName, leftArm2);
    leftArm1.addChild(leftArm2);
    
    rightArm2 = new MCAModelRenderer(this, "RightArm2", 105, 87);
    rightArm2.mirror = false;
    rightArm2.addBox(-1.0F, -8.0F, -2.0F, 1, 5, 6);
    rightArm2.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    rightArm2.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    rightArm2.setTextureSize(200, 104);
    parts.put(rightArm2.boxName, rightArm2);
    rightArm1.addChild(rightArm2);
    
    neck2 = new MCAModelRenderer(this, "Neck2", 15, 52);
    neck2.mirror = false;
    neck2.addBox(-1.0F, -1.5F, 0.0F, 2, 3, 10);
    neck2.setInitialRotationPoint(0.0F, 0.0F, 2.0F);
    neck2.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(-0.1391731F, 0.0F, 0.0F, 0.99026805F)).transpose());
    neck2.setTextureSize(200, 104);
    parts.put(neck2.boxName, neck2);
    neck1.addChild(neck2);
    
    tail2 = new MCAModelRenderer(this, "Tail2", 37, 82);
    tail2.mirror = false;
    tail2.addBox(-2.0F, -3.0F, -5.0F, 4, 5, 5);
    tail2.setInitialRotationPoint(0.0F, -0.5F, -4.0F);
    tail2.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    tail2.setTextureSize(200, 104);
    parts.put(tail2.boxName, tail2);
    tail1.addChild(tail2);
    
    leftLeg = new MCAModelRenderer(this, "Left Leg", 42, 41);
    leftLeg.mirror = false;
    leftLeg.addBox(0.0F, -13.0F, -3.0F, 2, 7, 2);
    leftLeg.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    leftLeg.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    leftLeg.setTextureSize(200, 104);
    parts.put(leftLeg.boxName, leftLeg);
    leftThigh.addChild(leftLeg);
    
    leftFoot = new MCAModelRenderer(this, "Left Foot", 51, 41);
    leftFoot.mirror = false;
    leftFoot.addBox(0.0F, -14.0F, -3.0F, 2, 1, 4);
    leftFoot.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    leftFoot.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    leftFoot.setTextureSize(200, 104);
    parts.put(leftFoot.boxName, leftFoot);
    leftThigh.addChild(leftFoot);
    
    rightFoot = new MCAModelRenderer(this, "Right Foot", 51, 41);
    rightFoot.mirror = true;
    rightFoot.addBox(-2.0F, -14.0F, -3.0F, 2, 1, 4);
    rightFoot.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    rightFoot.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    rightFoot.setTextureSize(200, 104);
    parts.put(rightFoot.boxName, rightFoot);
    rightThigh.addChild(rightFoot);
    
    rightLeg = new MCAModelRenderer(this, "Right Leg", 42, 41);
    rightLeg.mirror = true;
    rightLeg.addBox(-2.0F, -13.0F, -3.0F, 2, 7, 2);
    rightLeg.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    rightLeg.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    rightLeg.setTextureSize(200, 104);
    parts.put(rightLeg.boxName, rightLeg);
    rightThigh.addChild(rightLeg);
    
    wattle2 = new MCAModelRenderer(this, "Wattle2", 32, 34);
    wattle2.mirror = false;
    wattle2.addBox(-0.5F, -3.0F, 2.0F, 1, 5, 1);
    wattle2.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    wattle2.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.39073113F, 0.0F, 0.0F, 0.92050487F)).transpose());
    wattle2.setTextureSize(200, 104);
    parts.put(wattle2.boxName, wattle2);
    neck2.addChild(wattle2);
    
    wattle1 = new MCAModelRenderer(this, "Wattle1", 21, 33);
    wattle1.mirror = false;
    wattle1.addBox(-0.5F, -1.0F, 4.0F, 1, 5, 2);
    wattle1.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    wattle1.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.39073113F, 0.0F, 0.0F, 0.92050487F)).transpose());
    wattle1.setTextureSize(200, 104);
    parts.put(wattle1.boxName, wattle1);
    neck2.addChild(wattle1);
    
    head = new MCAModelRenderer(this, "Head", 27, 6);
    head.mirror = false;
    head.addBox(-1.5F, -3.0F, 0.0F, 3, 5, 6);
    head.setInitialRotationPoint(0.0F, 0.5F, 8.5F);
    head.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.39073113F, 0.0F, 0.0F, 0.92050487F)).transpose());
    head.setTextureSize(200, 104);
    parts.put(head.boxName, head);
    neck2.addChild(head);
    
    tail3 = new MCAModelRenderer(this, "Tail3", 15, 85);
    tail3.mirror = false;
    tail3.addBox(-1.0F, -2.0F, -5.0F, 2, 4, 5);
    tail3.setInitialRotationPoint(0.0F, -0.5F, -5.0F);
    tail3.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    tail3.setTextureSize(200, 104);
    parts.put(tail3.boxName, tail3);
    tail2.addChild(tail3);
    
    beak = new MCAModelRenderer(this, "Beak", 17, 21);
    beak.mirror = false;
    beak.addBox(-1.5F, -3.0F, 6.0F, 3, 4, 1);
    beak.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    beak.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    beak.setTextureSize(200, 104);
    parts.put(beak.boxName, beak);
    head.addChild(beak);
    
    crest2 = new MCAModelRenderer(this, "Crest2", 53, 12);
    crest2.mirror = false;
    crest2.addBox(-0.5F, 2.0F, 0.0F, 1, 1, 6);
    crest2.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    crest2.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    crest2.setTextureSize(200, 104);
    parts.put(crest2.boxName, crest2);
    head.addChild(crest2);
    
    crest1 = new MCAModelRenderer(this, "Crest1", 45, 27);
    crest1.mirror = false;
    crest1.addBox(-0.5F, 1.0F, 6.0F, 1, 1, 1);
    crest1.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    crest1.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    crest1.setTextureSize(200, 104);
    parts.put(crest1.boxName, crest1);
    head.addChild(crest1);
    
    crest3 = new MCAModelRenderer(this, "Crest3", 73, 2);
    crest3.mirror = false;
    crest3.addBox(-0.5F, 3.0F, 1.0F, 1, 1, 5);
    crest3.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    crest3.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    crest3.setTextureSize(200, 104);
    parts.put(crest3.boxName, crest3);
    head.addChild(crest3);
    
    crest4 = new MCAModelRenderer(this, "Crest4", 76, 14);
    crest4.mirror = false;
    crest4.addBox(-0.5F, 4.0F, 2.0F, 1, 1, 3);
    crest4.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    crest4.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    crest4.setTextureSize(200, 104);
    parts.put(crest4.boxName, crest4);
    head.addChild(crest4);
    
    tailFan3 = new MCAModelRenderer(this, "TailFan3", 67, 27);
    tailFan3.mirror = false;
    tailFan3.addBox(-5.0F, -0.5F, -5.0F, 10, 1, 5);
    tailFan3.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    tailFan3.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    tailFan3.setTextureSize(200, 104);
    parts.put(tailFan3.boxName, tailFan3);
    tail3.addChild(tailFan3);
    
    tail4 = new MCAModelRenderer(this, "Tail4", 75, 55);
    tail4.mirror = false;
    tail4.addBox(-1.0F, -1.5F, -6.0F, 2, 3, 6);
    tail4.setInitialRotationPoint(0.0F, 0.0F, -5.0F);
    tail4.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    tail4.setTextureSize(200, 104);
    parts.put(tail4.boxName, tail4);
    tail3.addChild(tail4);
    
    tailFan4 = new MCAModelRenderer(this, "TailFan4", 104, 28);
    tailFan4.mirror = false;
    tailFan4.addBox(-4.0F, -0.5F, -6.0F, 8, 1, 6);
    tailFan4.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    tailFan4.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    tailFan4.setTextureSize(200, 104);
    parts.put(tailFan4.boxName, tailFan4);
    tail4.addChild(tailFan4);
    
    tail5 = new MCAModelRenderer(this, "Tail5", 66, 88);
    tail5.mirror = false;
    tail5.addBox(-1.0F, -1.0F, -6.0F, 2, 2, 6);
    tail5.setInitialRotationPoint(0.0F, 0.0F, -6.0F);
    tail5.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    tail5.setTextureSize(200, 104);
    parts.put(tail5.boxName, tail5);
    tail4.addChild(tail5);
    
    tailFan5 = new MCAModelRenderer(this, "TailFan5", 107, 52);
    tailFan5.mirror = false;
    tailFan5.addBox(-5.0F, -0.5F, -15.0F, 10, 1, 15);
    tailFan5.setInitialRotationPoint(0.0F, 0.0F, 0.0F);
    tailFan5.setInitialRotationMatrix(new Matrix4f().set(new Quaternion(0.0F, 0.0F, 0.0F, 1.0F)).transpose());
    tailFan5.setTextureSize(200, 104);
    parts.put(tailFan5.boxName, tailFan5);
    tail5.addChild(tailFan5);
    
    }
    
    @Override
    public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) 
    {
    EntityCitipati entity = (EntityCitipati)par1Entity;
    
    AnimationHandler.performAnimationInModel(parts, entity);
    
    //Render every non-child part
    leftArm1.render(par7);
    rightArm1.render(par7);
    neck1.render(par7);
    body.render(par7);
    tail1.render(par7);
    leftThigh.render(par7);
    rightThigh.render(par7);
    
    
    /*if(par3 >= 0.01F)
    {
        if(!((EntityCitipati) par1Entity).getAnimationHandler().isAnimationActive("Walk")){
            ((EntityCitipati) par1Entity).getAnimationHandler().activateAnimation("Walk", 0);
        }
    } else {
        if(((EntityCitipati) par1Entity).getAnimationHandler().isAnimationActive("Walk")){
            ((EntityCitipati) par1Entity).getAnimationHandler().stopAnimation("Walk");
        }
    }*/
    
    if(entity.attackEntityAsMob(par1Entity))
    {
    	if(!((EntityCitipati) entity).getAnimationHandler().isAnimationActive("Attack")){
            ((EntityCitipati) entity).getAnimationHandler().activateAnimation("Attack", 0);
            ((EntityCitipati) entity).getAnimationHandler().stopAnimation("Walk");
    	}
    }
    
    if(par3 >= 0.01F)
    {
        if(!((EntityCitipati) par1Entity).getAnimationHandler().isAnimationActive("Walk")){
            ((EntityCitipati) par1Entity).getAnimationHandler().activateAnimation("Walk", 0);
        }
    } else {
        if(((EntityCitipati) par1Entity).getAnimationHandler().isAnimationActive("Walk")){
            ((EntityCitipati) par1Entity).getAnimationHandler().stopAnimation("Walk");
        }
    }
    }
    @Override
    public void setRotationAngles(float par1, float par2, float par3, float par4, float par5, float par6, Entity par7Entity) {}
    
    public MCAModelRenderer getModelRendererFromName(String name)
    {
    return parts.get(name);
    }
    }





    Mob Animation Handler:


    import java.util.HashMap;
    
    import fisherman77.paleocraft.common.MCACommonLibrary.IMCAnimatedEntity;
    import fisherman77.paleocraft.common.MCACommonLibrary.animation.AnimationHandler;
    import fisherman77.paleocraft.common.MCACommonLibrary.animation.Channel;
    import fisherman77.paleocraft.common.animations.EntityCryo.CustomChannelCryoLookAt;
    
    public class AnimationHandlerCitipati extends AnimationHandler {
    	/** Map with all the animations. */
    	public  HashMap<String, Channel> animChannels = new HashMap<String, Channel>();
    
    {
    animChannels.put("Attack", new ChannelAttack("Attack", 10.0F, 5, Channel.LINEAR));
    animChannels.put("Walk", new ChannelWalk("Walk", 10.0F, 13, Channel.LOOP));
    animChannels.put("Idle", new ChannelIdle("Idle", 5.0F, 13, Channel.LOOP));
    animChannels.put("lookAt", new CustomChannelCitiLookAt("lookAt"));
    }
    	public AnimationHandlerCitipati(IMCAnimatedEntity entity) {
    		super(entity);
    	}
    
    	@Override
    	public void activateAnimation(String name, float startingFrame) {
    		super.activateAnimation(animChannels, name, startingFrame);
    	}
    
    	@Override
    	public void stopAnimation(String name) {
    		super.stopAnimation(animChannels, name);
    	}
    
    	@Override
    	public void fireAnimationEventClientSide(Channel anim, float prevFrame, float frame) {
    	}
    
    	@Override
    	public void fireAnimationEventServerSide(Channel anim, float prevFrame, float frame) {
    	}}


    Posted in: Minecraft Tools
  • 0

    posted a message on [1.2.2] MCAnimator | Windows, Mac & Linux | Important fixes! | Create your models, animate them, paint your textures

    when ever the walking animations run it plays it for all entities even if they're not walking.


    for example i spawn 2 of the same mob and one starts walking the 1 thats idle will play the walking animation aswell.

    Posted in: Minecraft Tools
  • 0

    posted a message on [1.2.2] MCAnimator | Windows, Mac & Linux | Important fixes! | Create your models, animate them, paint your textures

    Thanks but I know about that I was confused on where I should put it.

    Posted in: Minecraft Tools
  • 0

    posted a message on [1.2.2] MCAnimator | Windows, Mac & Linux | Important fixes! | Create your models, animate them, paint your textures

    How would you activate the look at animation or an attack animation?


    I'm a bit confused sorry

    Posted in: Minecraft Tools
  • 0

    posted a message on JurassiCraft - Bringing dinosaurs to life

    Wow this looks really cool!

    :D

    Posted in: Minecraft Mods
  • 0

    posted a message on [1.7.10] Mob not spawning particles [solved]

    nevermind i fixed it myself but thank you :D

    Posted in: Modification Development
  • 0

    posted a message on [1.7.10] Mob not spawning particles [solved]

    My mob is suppose to spawn the heart particles when right clicked with fish but it doesn't seem to spawn them. I tested to see if the code was working and it does it just doesnt spawn the particles.


    code:

    public boolean interact(EntityPlayer par1EntityPlayer)

    {
    ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem();

    if (itemstack != null && itemstack.getItem() == Items.fish)

    {

    if (!par1EntityPlayer.capabilities.isCreativeMode)

    {
    --itemstack.stackSize;
    }

    if (itemstack.stackSize <= 0)
    {

    }

    if (!this.worldObj.isRemote)
    {


    // this.setHealth(20);

    ((EntityPlayer) par1EntityPlayer).addChatComponentMessage(new ChatComponentTranslation("tile.feeding.quetz", new Object[0]));
    this.playTameEffect(true);


    return true;
    }
    }

    return true;
    }

    Posted in: Modification Development
  • 0

    posted a message on PaleoCraft -- Realistic Dinosaurs in Minecraft!

    Released beta 2.


    Fixed the following:

    -Quetzalcoatlus causing a crash when landing

    -Quetzalcoatlus and Dimorphodon's land models are registered properly

    -Masso runs from swimming spinosaurus

    -Quetzalcoatlus doesn't take fall damage


    Download here:

    http://paleocraftofficial.weebly.com/downloads.html

    Posted in: Minecraft Mods
  • 0

    posted a message on PaleoCraft -- Realistic Dinosaurs in Minecraft!

    you might have installed it wrong or may have an outdated forge version.


    link to forge version:


    http://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.7.10.html


    10.13.2.1277 is the version the main release uses. all forge versions above should also work for it.


    Beta update uses forge version:

    10.13.4.1472


    you can also check our installation guide on our website:

    http://paleocraftofficial.weebly.com/installation-guide.html


    if you find the solution and post it here it will be very helpful aswell.

    Posted in: Minecraft Mods
  • 0

    posted a message on PaleoCraft -- Realistic Dinosaurs in Minecraft!

    Check out the official website for a new beta release!:

    http://paleocraftofficial.weebly.com/


    Please note this is a beta update so its kinda untested and buggy.


    You can view this version's changelog here:

    http://pastebin.com/V9xLrpBJ


    Also this version is missing the flying animations as they are still being worked on. The tail animations still need changes aswell.

    Posted in: Minecraft Mods
  • 0

    posted a message on PaleoCraft -- Realistic Dinosaurs in Minecraft!

    New website better then my old website:


    http://paleocraftofficial.weebly.com/



    still W.I.P. I plan on starting releasing beta updates of new versions soon.


    I'm also planning on stopping being lazy and working on the mod more. All that's left is the animations and the new version will be out. I'm sorry for the long waits as it really shouldn't take this long but I've had things such as work (well really just some experience), exams and stuff like that. I've also lost interest in minecraft since last year but modding still seems fun to me.


    New version out soon! keep watch on the website for prereleases.

    Posted in: Minecraft Mods
  • 0

    posted a message on PaleoCraft -- Realistic Dinosaurs in Minecraft!

    Download is fixed guys so u can play the stable 1.7.10 if you want on MY WEBSITE :P


    Don't use fish's website for now on since it seems like someone redirected his website to virus websites.


    Remember to run a scan if you've been on his website.

    Posted in: Minecraft Mods
  • 1

    posted a message on PaleoCraft -- Realistic Dinosaurs in Minecraft!
    Quote from Witchmitch»

    I am putting together a modpack for a server for my players. The modpack will be put on

    technic. What are your requirements on modpacks? I didn't see anything on the thread.

    Plus when I tried it with the mods I already have put together I got this error


    game

    java.lang.IllegalArgumentException: Failed to register dimension for id 20, One is already registered


    So I looked into the folder that was for Paleo saw configs but there was nothing in it. Pleases help.


    Thank you


    not sure what version you are using but you may have to try changing a config for a different mod with a dimension and change that one. Also I'm not sure what our requirements for modpacks are but before you publish it, ask Dan_Wallace about using paleocraft for it.

    Posted in: Minecraft Mods
  • 0

    posted a message on Item Right Click on certain block
    Hi I made a item that when right clicked on a certain block will give me a different item. It doesn't seem to work because when I right click on the block with it it does nothing.




     
    
    public boolean onItemUse(World world, int x, int y, int z, EntityPlayer entityPlayer, int par6, float par7, float par8, float par9, Block var1)
     {
     if(!world.isRemote)
     
     if(var1 == Paleocraft.nest)
     {
     ItemStack myItemStack = new ItemStack(Paleocraft.nestbaby, 1);
     EntityItem entityitem = new EntityItem(world, x, y, z, myItemStack);
     entityitem.delayBeforeCanPickup = 0;
     world.spawnEntityInWorld(entityitem); 
     }
     
     return false;
     } 


    Posted in: Modification Development
  • To post a comment, please .