In the last try I did it this way:
That is parts of
my entity class
protected NBTTagCompound compound = new NBTTagCompound();
@Override
public void compoundInit()
{
compound.setByte("attackTime", (byte)0);
compound.setBoolean("isAttacking", false);
}
public void setAttacking(Boolean attacking)
{
compound.setBoolean("isAttacking", attacking);
if(attacking) setAttackTimer((byte)ATTACK_TIME);
syncEntityOnClient();
}
public boolean isAttacking()
{
return compound.getBoolean("isAttacking");
}
public void setAttackTimer(byte value)
{
compound.setByte("attackTime", value);
syncEntityOnClient();
}
public void decreaseAttackTimer()
{
compound.setByte("attackTime", (byte)(getAttackTimer() - 1));
syncEntityOnClient();
}
public byte getAttackTimer()
{
return compound.getByte("attackTime");
}
@Override
public void setCompound(NBTTagCompound setTo)
{
compound = setTo;
}
@Override
public NBTTagCompound getCompound()
{
return compound;
}
@Override
public void syncEntityOnClient()
{
Sync.sendEntitySyncToClient(this);
}
my AI class
public boolean shouldExecute()
{
EntityLivingBase target = this.entityHost.getAttackTarget();
if (target == null)
{
return false;
}
else
{
if(this.entityHost.getDistanceSq(target) < this.maxAttackDistance && this.entityHost.getDistance(target) > 4 && target.getHealth() > 5)
{
this.attackTarget = target;
this.entityHost.setAttacking(true);
return true;
}
else
{
this.entityHost.setAttacking(false);
return false;
}
}
}
public boolean shouldContinueExecuting()
{
if (entityHost.getAttackTimer() > 0)
{
entityHost.decreaseAttackTimer();
}
return this.shouldExecute() || !this.entityHost.getNavigator().noPath();
}
my model class
@Override
public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTickTime)
{
float phase[] = {0.1F, 0.2F, 0.1F, -0.1F, -0.3F, -0.4F, -0.3F, -0.2F, -0.1F, 0.0F};
boolean attacking = ((EntityThrower)entitylivingbaseIn).isAttacking();
int time = ((EntityThrower)entitylivingbaseIn).getAttackTimer();
if(attacking)
{
if(time > 0)
{
this.jawL.rotateAngleX = -0.81F + phase[time - 1];
this.jawR.rotateAngleX = -0.81F + phase[time - 1];
}
}
}
So, I tried using NBTTagCompound to save and load information about my entities, but it still doesn't work.
What am I doing wrong?