WorldNPCSpawnStat class

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

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

Поля (6)

МодификаторыТипИмя
final int roleIndex
BuilderInfo var1
var1
FlockAsset var1
double var2
NPCPlugin var2

Методы (31)

МодификаторыВозвратСигнатура
public CountOnlypublic CountOnly(int var1)
public void adjustActualvoid adjustActual(int var1)
for for(SpawnRejection var9 : SpawnRejection.VALUES)
public int getActualint getActual()
public int getAvailableSlotsint getAvailableSlots()
public int getAvailableSlotspublic int getAvailableSlots()
public double getExpecteddouble getExpected()
public int getFailedJobCountint getFailedJobCount()
public int getFailedJobTotalBudgetint getFailedJobTotalBudget()
public double getMissingCountdouble getMissingCount(@Nonnull ComponentAccessor<EntityStore> var1)
public double getMissingCountpublic double getMissingCount(@Nonnull ComponentAccessor<EntityStore> var1)
public int getRejectionCountint getRejectionCount(SpawnRejection var1)
public int getRoleIndexint getRoleIndex()
public int getSpansSuccessint getSpansSuccess()
public int getSpansTriedint getSpansTried()
public int getSuccessfulJobCountint getSuccessfulJobCount()
public int getSuccessfulJobTotalBudgetint getSuccessfulJobTotalBudget()
public double getWeightdouble getWeight(int var1)
public double getWeightpublic double getWeight(int var1)
if if(var5)
if if(this.builderInfoReference == null)
if if(var1 == null)
if if(var1 == null)
private boolean isSpawnableboolean isSpawnable()
public boolean isUnspawnableboolean isUnspawnable()
private void recomputeSpawnSizevoid recomputeSpawnSize()
public void resetUnspawnablevoid resetUnspawnable()
public void setExpectedvoid setExpected(double var1)
public void setUnspawnablevoid setUnspawnable(boolean var1)
abstract super super(var1)
public void updateSpawnStatsvoid updateSpawnStats(int var1, int var2, int var3, @Nonnull Object2IntMap<SpawnRejection> var4, boolean var5)

Исходный код

Показать/скрыть
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;
      }
   }
}