예제 #1
0
 public static BossAttack getRandom(EntityFinalBoss boss, Random rand) {
   int totalWeight = 0;
   for (BossAttack ba : values()) {
     if (ba.canBeUsed(boss)) totalWeight += ba.weight;
   }
   int w = rand.nextInt(totalWeight);
   for (BossAttack ba : values()) {
     if (ba.canBeUsed(boss))
       if ((w -= ba.weight) < 0) {
         return ba;
       }
   }
   return null;
 }
예제 #2
0
  public void setState(BossState state) {
    dataWatcher.updateObject(STATE, state.ordinal());

    if (state == BossState.CHARGING) {
      getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.00001);
    } else {
      if (getState() == BossState.ATTACKING) {
        setCharge(0);
        setCurrentAttack(BossAttack.getRandom(this, rand));
      }
      getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.075);
    }
  }
예제 #3
0
  @Override
  public void readEntityFromNBT(NBTTagCompound data) {
    super.readEntityFromNBT(data);

    setState(BossState.values()[data.getInteger("state")]);

    setCharge(data.getInteger("charge"));

    setCurrentAttack(
        data.getInteger("curattack") == -1
            ? null
            : BossAttack.values()[data.getInteger("curattack")]);
  }
예제 #4
0
 public void setCurrentAttack(BossAttack attk) {
   dataWatcher.updateObject(CURATTACK, attk.ordinal());
 }
예제 #5
0
 public BossAttack getCurrentAttack() {
   return BossAttack.values()[dataWatcher.getWatchableObjectInt(CURATTACK)];
 }