CountOnly class

Пакет: com.hypixel.hytale.server.spawning.world

Файл: com/hypixel/hytale/server/spawning/world/WorldNPCSpawnStat.java

extends: WorldNPCSpawnStat

Методы (4)

МодификаторыВозвратСигнатура
public int getAvailableSlotspublic int getAvailableSlots()
public double getMissingCountpublic double getMissingCount(@Nonnull ComponentAccessor<EntityStore> var1)
public double getWeightpublic double getWeight(int var1)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.spawning.world;

class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.flock.config.FlockAsset;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderInfo;
class="kw">import com.hypixel.hytale.server.spawning.SpawnRejection;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawns.config.RoleSpawnParameters;
class="kw">import com.hypixel.hytale.server.spawning.world.manager.WorldSpawnWrapper;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
class="kw">import java.lang.ref.WeakReference;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class WorldNPCSpawnStat {
   class="kw">private class="kw">final int roleIndex;
   @Nullable
   class="kw">private class="kw">final World world;
   @Nullable
   class="kw">private WeakReference<BuilderInfo> builderInfoReference;
   class="kw">private int minSpawnSize;
   class="kw">private double expected;
   class="kw">private int actual;
   class="kw">private boolean unspawnable;
   @Nullable
   class="kw">private class="kw">final WorldSpawnWrapper spawnWrapper;
   @Nullable
   class="kw">private class="kw">final RoleSpawnParameters spawnParams;
   class="kw">private int spansTried;
   class="kw">private class="kw">final Object2IntMap<SpawnRejection> rejections = new Object2IntOpenHashMap();
   class="kw">private int spansSuccess;
   class="kw">private int successfulJobCount;
   class="kw">private int successfulJobTotalBudget;
   class="kw">private int failedJobCount;
   class="kw">private int failedJobTotalBudget;
   class="kw">private class="kw">final double weight;

   class="kw">public WorldNPCSpawnStat(int var1, WorldSpawnWrapper var2, @Nonnull RoleSpawnParameters var3, World var4) {
      this.roleIndex = var1;
      this.world = var4;
      this.builderInfoReference = new WeakReference<>(NPCPlugin.get().getRoleBuilderInfo(var1));
      this.weight = var3.getWeight();
      this.spawnWrapper = var2;
      this.spawnParams = var3;
   }

   class="kw">private WorldNPCSpawnStat(int var1) {
      this.roleIndex = var1;
      this.world = null;
      this.weight = 0.0;
      this.spawnWrapper = null;
      this.spawnParams = null;
   }

   class="kw">public int getRoleIndex() {
      class="kw">return this.roleIndex;
   }

   class="kw">public double getExpected() {
      class="kw">return this.expected;
   }

   class="kw">public void setExpected(double var1) {
      this.expected = var1;
   }

   class="kw">public int getActual() {
      class="kw">return this.actual;
   }

   class="kw">public void adjustActual(int var1) {
      this.actual += var1;
   }

   class="kw">public boolean isUnspawnable() {
      class="kw">return this.unspawnable;
   }

   class="kw">public void setUnspawnable(boolean var1) {
      this.unspawnable = var1;
   }

   @Nullable
   class="kw">public WorldSpawnWrapper getSpawnWrapper() {
      class="kw">return this.spawnWrapper;
   }

   @Nullable
   class="kw">public RoleSpawnParameters getSpawnParams() {
      class="kw">return this.spawnParams;
   }

   class="kw">public int getSpansTried() {
      class="kw">return this.spansTried;
   }

   class="kw">public int getSpansSuccess() {
      class="kw">return this.spansSuccess;
   }

   class="kw">public int getSuccessfulJobCount() {
      class="kw">return this.successfulJobCount;
   }

   class="kw">public int getSuccessfulJobTotalBudget() {
      class="kw">return this.successfulJobTotalBudget;
   }

   class="kw">public int getFailedJobCount() {
      class="kw">return this.failedJobCount;
   }

   class="kw">public int getFailedJobTotalBudget() {
      class="kw">return this.failedJobTotalBudget;
   }

   class="kw">public double getWeight(int var1) {
      class="kw">return this.weight * this.spawnWrapper.getMoonPhaseWeightModifier(var1);
   }

   class="kw">public double getMissingCount(@Nonnull ComponentAccessor<EntityStore> var1) {
      if (!this.unspawnable && this.spawnWrapper.spawnParametersMatch(var1) && this.isSpawnable()) {
         double var2 = Math.max(this.expected - this.actual, 0.0);
         class="kw">return MathUtil.fastCeil(var2) < this.minSpawnSize ? 0.0 : var2;
      } else {
         class="kw">return 0.0;
      }
   }

   class="kw">public int getAvailableSlots() {
      class="kw">return Math.max((int)MathUtil.fastCeil(this.expected - this.actual), 0);
   }

   class="kw">public int getRejectionCount(SpawnRejection var1) {
      class="kw">return this.rejections.getInt(var1);
   }

   class="kw">public void updateSpawnStats(int var1, int var2, int var3, @Nonnull Object2IntMap<SpawnRejection> var4, boolean var5) {
      this.spansTried += var1;
      this.spansSuccess += var2;

      for (SpawnRejection var9 : SpawnRejection.VALUES) {
         this.rejections.mergeInt(var9, var4.getInt(var9), Integer::sum);
      }

      if (var5) {
         this.successfulJobCount++;
         this.successfulJobTotalBudget += var3;
      } else {
         this.failedJobCount++;
         this.failedJobTotalBudget += var3;
      }
   }

   class="kw">public void resetUnspawnable() {
      this.unspawnable = false;
      if (this.builderInfoReference == null || this.builderInfoReference.get() != null) {
         this.builderInfoReference = new WeakReference<>(null);
      }
   }

   class="kw">private boolean isSpawnable() {
      if (this.builderInfoReference == null) {
         class="kw">return false;
      }

      BuilderInfo var1 = this.builderInfoReference.get();
      NPCPlugin var2 = NPCPlugin.get();
      if (var1 != null && !var1.isRemoved()) {
         class="kw">return var2.testAndValidateRole(var1);
      }

      var1 = var2.getRoleBuilderInfo(this.roleIndex);
      if (var1 == null) {
         this.builderInfoReference = null;
         class="kw">return false;
      }

      this.builderInfoReference = new WeakReference<>(var1);
      if (!var2.testAndValidateRole(var1)) {
         class="kw">return false;
      }

      this.recomputeSpawnSize();
      class="kw">return true;
   }

   class="kw">private void recomputeSpawnSize() {
      FlockAsset var1 = this.spawnParams.getFlockDefinition();
      if (var1 == null) {
         this.minSpawnSize = 1;
      } else {
         this.minSpawnSize = var1.getMinFlockSize();
      }
   }

   class="kw">public class="kw">static class CountOnly class="kw">extends WorldNPCSpawnStat {
      class="kw">public CountOnly(int var1) {
         super(var1);
      }

      @Override
      class="kw">public double getWeight(int var1) {
         class="kw">return 0.0;
      }

      @Override
      class="kw">public double getMissingCount(@Nonnull ComponentAccessor<EntityStore> var1) {
         class="kw">return 0.0;
      }

      @Override
      class="kw">public int getAvailableSlots() {
         class="kw">return 0;
      }
   }
}