package mekanism.common.entity; import java.util.UUID; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.ai.attributes.IAttributeInstance; import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.datasync.DataParameter; import net.minecraft.network.datasync.DataSerializers; import net.minecraft.network.datasync.EntityDataManager; import net.minecraft.world.World; public class EntityBabySkeleton extends EntitySkeleton { private static final UUID babySpeedBoostUUID = UUID.fromString("B9766B59-9566-4402-BC1F-2EE2A276D836"); private static final AttributeModifier babySpeedBoostModifier = new AttributeModifier(babySpeedBoostUUID, "Baby speed boost", 0.5D, 1); private static final DataParameter<Boolean> IS_CHILD = EntityDataManager.<Boolean>createKey(EntityBabySkeleton.class, DataSerializers.BOOLEAN); public EntityBabySkeleton(World world) { super(world); dataManager.register(IS_CHILD, false); setChild(true); } public void setChild(boolean child) { dataManager.set(IS_CHILD, child); if(worldObj != null && !worldObj.isRemote) { IAttributeInstance iattributeinstance = this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED); iattributeinstance.removeModifier(babySpeedBoostModifier); if(child) { iattributeinstance.applyModifier(babySpeedBoostModifier); } } updateChildSize(child); } @Override public boolean isChild() { return dataManager.get(IS_CHILD); } @Override protected int getExperiencePoints(EntityPlayer p_70693_1_) { if(isChild()) { experienceValue = (int)((float)experienceValue * 2.5F); } return super.getExperiencePoints(p_70693_1_); } public void updateChildSize(boolean child) { updateSize(child ? 0.5F : 1.0F); } protected final void updateSize(float size) { super.setSize(size, size+0.4F); } }