LegacySpawnBeaconEntity class

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

Файл: com/hypixel/hytale/server/spawning/beacons/LegacySpawnBeaconEntity.java

extends: Entity

Поля (42)

МодификаторыТипИмя
Duration[] var10
Message var10
double[] var11
InitialBeaconDelay var12
String var13
LegacySpawnBeaconEntity var2
LegacySpawnBeaconEntity var2
BeaconNPCSpawn var3
Dirty var3
LegacySpawnBeaconEntity var3
LegacySpawnBeaconEntity var3
Player var4
FlockMembership var4
boolean var4
WorldTimeResource var4
SpawnBeaconReference var4
Holder var4
BeaconNPCSpawn var4
Ref var5
Duration[] var5
Dirty var5
NPCEntity var5
Ref var5
String var5
EntityGroup var6
Duration var6
FloodFillPositionSelector var6
Role var6
LegacySpawnBeaconEntity var6
String var6
Duration var7
BeaconNPCSpawn var7
ModelAsset var7
var7
WorldTimeResource var8
String var8
Model var8
var8
var8
FloodFillPositionSelector var9
Dirty var9
Holder var9

Методы (33)

МодификаторыВозвратСигнатура
static void clearDespawnTimervoid clearDespawnTimer(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1)
static Holder<EntityStore> createHolderHolder<EntityStore> createHolder(@Nonnull BeaconSpawnWrapper var0, @Nonnull Vector3dc var1, @Nonnull Rotation3fc var2)
public int getLastPlayerCountint getLastPlayerCount()
public Instant getNextSpawnAfterInstant getNextSpawnAfter()
public int getSpawnAttemptsint getSpawnAttempts()
public String getSpawnConfigIdString getSpawnConfigId()
public BeaconSpawnController getSpawnControllerBeaconSpawnController getSpawnController()
public BeaconSpawnWrapper getSpawnWrapperBeaconSpawnWrapper getSpawnWrapper()
if if(var4)
if if(var9 != null)
if if(var2.despawnSelfAfter != null)
if if(var3 != null)
if if(var1 != null && var3.despawnSelfAfter == null)
if if(var5 != null)
if if(var8 != null)
if if(var7 == null)
if if(var11 != null)
public boolean isNextSpawnAfterRealtimeboolean isNextSpawnAfterRealtime()
public void markNPCUnspawnablevoid markNPCUnspawnable(int var1)
public void notifyFailedSpawnvoid notifyFailedSpawn()
public void notifySpawnvoid notifySpawn(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3)
static void prepareNextSpawnTimervoid prepareNextSpawnTimer(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1)
public boolean prepareSpawnContextboolean prepareSpawnContext(@Nonnull Vector3d var1, int var2, int var3, @Nonnull SpawningContext var4, @Nonnull CommandBuffer<EntityStore> var5)
private void processSpawnvoid processSpawn(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3)
public void setLastPlayerCountvoid setLastPlayerCount(int var1)
public void setObjectiveUUIDvoid setObjectiveUUID(@Nullable UUID var1)
public void setSpawnAttemptsvoid setSpawnAttempts(int var1)
private void setSpawnConfigIdvoid setSpawnConfigId(String var1)
private void setSpawnConfigurationvoid setSpawnConfiguration(BeaconSpawnWrapper var1)
public void setSpawnControllervoid setSpawnController(@Nonnull BeaconSpawnController var1)
public void setSpawnWrappervoid setSpawnWrapper(BeaconSpawnWrapper var1)
static void setToDespawnAftervoid setToDespawnAfter(@Nonnull Ref<EntityStore> var0, @Nullable Duration var1, @Nonnull ComponentAccessor<EntityStore> var2)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.random.RandomExtra;
class="kw">import com.hypixel.hytale.math.vector.Rotation3fc;
class="kw">import com.hypixel.hytale.protocol.GameMode;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
class="kw">import com.hypixel.hytale.server.core.entity.Dirty;
class="kw">import com.hypixel.hytale.server.core.entity.Entity;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.group.EntityGroup;
class="kw">import com.hypixel.hytale.server.core.entity.nameplate.Nameplate;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.DisplayNameComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HiddenFromAdventurePlayers;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentDisplayName;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentModel;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
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.FlockMembership;
class="kw">import com.hypixel.hytale.server.npc.components.SpawnBeaconReference;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.role.Role;
class="kw">import com.hypixel.hytale.server.npc.role.support.MarkedEntitySupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.StateSupport;
class="kw">import com.hypixel.hytale.server.spawning.SpawningContext;
class="kw">import com.hypixel.hytale.server.spawning.SpawningPlugin;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawns.config.BeaconNPCSpawn;
class="kw">import com.hypixel.hytale.server.spawning.controllers.BeaconSpawnController;
class="kw">import com.hypixel.hytale.server.spawning.suppression.component.SpawnSuppressionComponent;
class="kw">import com.hypixel.hytale.server.spawning.util.FloodFillPositionSelector;
class="kw">import com.hypixel.hytale.server.spawning.wrappers.BeaconSpawnWrapper;
class="kw">import it.unimi.dsi.fastutil.Pair;
class="kw">import java.time.Duration;
class="kw">import java.time.Instant;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;

class="kw">public class LegacySpawnBeaconEntity class="kw">extends Entity {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<LegacySpawnBeaconEntity> CODEC = BuilderCodec.builder(
         LegacySpawnBeaconEntity.class, LegacySpawnBeaconEntity::new, Entity.CODEC
      )
      .append(new KeyedCodec<>("SpawnConfiguration", Codec.STRING), (var0, var1) -> var0.spawnConfigId = var1, var0 -> var0.spawnConfigId)
      .add()
      .append(new KeyedCodec<>("NextSpawnAfter", Codec.INSTANT), (var0, var1) -> var0.nextSpawnAfter = var1, var0 -> var0.nextSpawnAfter)
      .add()
      .append(
         new KeyedCodec<>("NextSpawnAfterRealtime", Codec.BOOLEAN), (var0, var1) -> var0.nextSpawnAfterRealtime = var1, var0 -> var0.nextSpawnAfterRealtime
      )
      .add()
      .append(new KeyedCodec<>("DespawnSelfAfter", Codec.INSTANT), (var0, var1) -> var0.despawnSelfAfter = var1, var0 -> var0.despawnSelfAfter)
      .add()
      .append(new KeyedCodec<>("LastPlayerCount", Codec.INTEGER), (var0, var1) -> var0.lastPlayerCount = var1, var0 -> var0.lastPlayerCount)
      .add()
      .append(new KeyedCodec<>("ObjectiveUUID", Codec.UUID_BINARY), (var0, var1) -> var0.objectiveUUID = var1, var0 -> var0.objectiveUUID)
      .add()
      .build();
   class="kw">private BeaconSpawnController spawnController;
   @Nullable
   class="kw">protected UUID objectiveUUID;
   class="kw">private BeaconSpawnWrapper spawnWrapper;
   class="kw">private String spawnConfigId;
   class="kw">private Instant nextSpawnAfter;
   class="kw">private boolean nextSpawnAfterRealtime;
   @Nullable
   class="kw">private Instant despawnSelfAfter;
   class="kw">private int spawnAttempts;
   class="kw">private int lastPlayerCount;

   @Nullable
   class="kw">public class="kw">static ComponentType<EntityStore, LegacySpawnBeaconEntity> getComponentType() {
      class="kw">return EntityModule.get().getComponentType(LegacySpawnBeaconEntity.class);
   }

   class="kw">public LegacySpawnBeaconEntity(@Nullable World var1) {
      super(var1);
   }

   class="kw">private LegacySpawnBeaconEntity() {
   }

   class="kw">public String getSpawnConfigId() {
      class="kw">return this.spawnConfigId;
   }

   class="kw">public BeaconSpawnController getSpawnController() {
      class="kw">return this.spawnController;
   }

   class="kw">public void setSpawnController(@Nonnull BeaconSpawnController var1) {
      this.spawnController = var1;
   }

   class="kw">public Instant getNextSpawnAfter() {
      class="kw">return this.nextSpawnAfter;
   }

   class="kw">public boolean isNextSpawnAfterRealtime() {
      class="kw">return this.nextSpawnAfterRealtime;
   }

   @Nullable
   class="kw">public Instant getDespawnSelfAfter() {
      class="kw">return this.despawnSelfAfter;
   }

   class="kw">public void setSpawnAttempts(int var1) {
      this.spawnAttempts = var1;
   }

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

   class="kw">public void setSpawnWrapper(BeaconSpawnWrapper var1) {
      this.spawnWrapper = var1;
   }

   class="kw">public int getSpawnAttempts() {
      class="kw">return this.spawnAttempts;
   }

   class="kw">public int getLastPlayerCount() {
      class="kw">return this.lastPlayerCount;
   }

   class="kw">public void setLastPlayerCount(int var1) {
      this.lastPlayerCount = var1;
   }

   class="kw">private void setSpawnConfiguration(BeaconSpawnWrapper var1) {
      this.spawnWrapper = var1;
   }

   class="kw">private void setSpawnConfigId(String var1) {
      this.spawnConfigId = var1;
   }

   @Nullable
   class="kw">public UUID getObjectiveUUID() {
      class="kw">return this.objectiveUUID;
   }

   class="kw">public void setObjectiveUUID(@Nullable UUID var1) {
      this.objectiveUUID = var1;
   }

   @Override
   class="kw">public boolean isHiddenFromLivingEntity(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull ComponentAccessor<EntityStore> var3) {
      Player var4 = var3.getComponent(var2, Player.getComponentType());
      class="kw">return var4 == null || var4.getGameMode() != GameMode.Creative;
   }

   @Override
   class="kw">public boolean isCollidable() {
      class="kw">return false;
   }

   @Override
   class="kw">public void moveTo(@Nonnull Ref<EntityStore> var1, double var2, double var4, double var6, @Nonnull ComponentAccessor<EntityStore> var8) {
      super.moveTo(var1, var2, var4, var6, var8);
      FloodFillPositionSelector var9 = var8.getComponent(var1, FloodFillPositionSelector.getComponentType());
      assert var9 != null;
      var9.setCalculatePositionsAfter(SpawnBeaconSystems.POSITION_CALCULATION_DELAY_RANGE[1]);
      var9.forceRebuildCache();
      this.spawnController.clearUnspawnableNPCs();
   }

   class="kw">public void notifyFailedSpawn() {
      this.spawnAttempts++;
   }

   class="kw">public void notifySpawn(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3) {
      this.processSpawn(var2, var1, var3);
      FlockMembership var4 = var3.getComponent(var2, FlockMembership.getComponentType());
      Ref var5 = var4 != null ? var4.getFlockRef() : null;
      if (var5 != null && var5.isValid()) {
         EntityGroup var6 = var3.getComponent(var5, EntityGroup.getComponentType());
         var6.forEachMemberExcludingSelf((var1x, var2x, var3x, var4x) -> {
            if (var3.getArchetype(var1x).contains(NPCEntity.getComponentType())) {
               var3x.processSpawn(var1x, var4x, var3);
            }
         }, var2, this, var1);
      }

      this.spawnController.onJobFinished(var3);
   }

   class="kw">public class="kw">static void prepareNextSpawnTimer(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) {
      LegacySpawnBeaconEntity var2 = var1.getComponent(var0, getComponentType());
      assert var2 != null;
      BeaconNPCSpawn var3 = var2.spawnWrapper.getSpawn();
      boolean var4 = var3.isRespawnRealtime();
      if (var4) {
         Duration[] var5 = var3.getSpawnAfterRealTimeRange();
         Duration var6 = RandomExtra.randomDuration(var5[0], var5[1]);
         var2.nextSpawnAfter = Instant.now().plus(var6);
         var2.nextSpawnAfterRealtime = true;
      } else {
         WorldTimeResource var8 = var1.getResource(WorldTimeResource.getResourceType());
         Duration[] var10 = var3.getSpawnAfterGameTimeRange();
         Duration var7 = RandomExtra.randomDuration(var10[0], var10[1]);
         var2.nextSpawnAfter = var8.getGameTime().plus(var7);
         var2.nextSpawnAfterRealtime = false;
      }

      Dirty var9 = var1.getComponent(var0, Dirty.getComponentType());
      if (var9 != null) {
         var9.markDirty();
      }
   }

   class="kw">public class="kw">static void clearDespawnTimer(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) {
      LegacySpawnBeaconEntity var2 = var1.getComponent(var0, getComponentType());
      assert var2 != null;
      if (var2.despawnSelfAfter != null) {
         var2.despawnSelfAfter = null;
         Dirty var3 = var1.getComponent(var0, Dirty.getComponentType());
         if (var3 != null) {
            var3.markDirty();
         }
      }
   }

   class="kw">public class="kw">static void setToDespawnAfter(@Nonnull Ref<EntityStore> var0, @Nullable Duration var1, @Nonnull ComponentAccessor<EntityStore> var2) {
      LegacySpawnBeaconEntity var3 = var2.getComponent(var0, getComponentType());
      assert var3 != null;
      if (var1 != null && var3.despawnSelfAfter == null) {
         WorldTimeResource var4 = var2.getResource(WorldTimeResource.getResourceType());
         var3.despawnSelfAfter = var4.getGameTime().plus(var1);
         Dirty var5 = var2.getComponent(var0, Dirty.getComponentType());
         if (var5 != null) {
            var5.markDirty();
         }
      }
   }

   class="kw">public void markNPCUnspawnable(int var1) {
      this.spawnController.markNPCUnspawnable(var1);
   }

   class="kw">public boolean prepareSpawnContext(@Nonnull Vector3d var1, int var2, int var3, @Nonnull SpawningContext var4, @Nonnull CommandBuffer<EntityStore> var5) {
      FloodFillPositionSelector var6 = var5.getComponent(this.reference, FloodFillPositionSelector.getComponentType());
      assert var6 != null;
      if (!var6.hasPositionsForRole(var3)) {
         this.markNPCUnspawnable(var3);
         class="kw">return false;
      } else if (!var6.hasValidMovementModeWeights(var3, var4)) {
         this.markNPCUnspawnable(var3);
         class="kw">return false;
      } else {
         class="kw">return var6.prepareSpawnContext(var1, var2, var3, var4, this.spawnWrapper);
      }
   }

   class="kw">private void processSpawn(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3) {
      SpawnBeaconReference var4 = var3.ensureAndGetComponent(var1, SpawnBeaconReference.getComponentType());
      var4.getReference().setEntity(this.reference, var3);
      var4.refreshTimeoutCounter();
      this.spawnController.notifySpawnedEntityExists(var1, var3);
      NPCEntity var5 = var3.getComponent(var1, NPCEntity.getComponentType());
      assert var5 != null;
      Role var6 = var5.getRole();
      BeaconNPCSpawn var7 = this.spawnWrapper.getSpawn();
      MarkedEntitySupport.get(var1, var3).setMarkedEntity(var7.getTargetSlot(), var2);
      String var8 = var7.getNpcSpawnState();
      if (var8 != null) {
         StateSupport.get(var1, var3).setState(var1, var8, var7.getNpcSpawnSubState(), var3);
      }
   }

   @Nonnull
   class="kw">public class="kw">static Pair<Ref<EntityStore>, LegacySpawnBeaconEntity> create(
      @Nonnull BeaconSpawnWrapper var0, @Nonnull Vector3dc var1, @Nonnull Rotation3fc var2, @Nonnull ComponentAccessor<EntityStore> var3
   ) {
      Holder var4 = createHolder(var0, var1, var2);
      Ref var5 = var3.addEntity(var4, AddReason.SPAWN);
      LegacySpawnBeaconEntity var6 = var4.getComponent(getComponentType());
      class="kw">return Pair.of(var5, var6);
   }

   class="kw">public class="kw">static Holder<EntityStore> createHolder(@Nonnull BeaconSpawnWrapper var0, @Nonnull Vector3dc var1, @Nonnull Rotation3fc var2) {
      LegacySpawnBeaconEntity var3 = new LegacySpawnBeaconEntity();
      var3.spawnWrapper = var0;
      BeaconNPCSpawn var4 = var0.getSpawn();
      String var5 = var4.getId();
      var3.spawnConfigId = var5;
      String var6 = var4.getModel();
      ModelAsset var7 = null;
      if (var6 != null && !var6.isEmpty()) {
         var7 = ModelAsset.getAssetMap().getAsset(var6);
      }

      Model var8;
      if (var7 == null) {
         var8 = SpawningPlugin.get().getSpawnMarkerModel();
      } else {
         var8 = Model.createUnitScaleModel(var7);
      }

      Holder var9 = EntityStore.REGISTRY.newHolder();
      var9.addComponent(getComponentType(), var3);
      var9.addComponent(TransformComponent.getComponentType(), new TransformComponent(var1, var2));
      var9.ensureComponent(UUIDComponent.getComponentType());
      var9.addComponent(ModelComponent.getComponentType(), new ModelComponent(var8));
      var9.addComponent(PersistentModel.getComponentType(), new PersistentModel(var8.toReference()));
      Message var10 = Message.raw(var5);
      var9.addComponent(PersistentDisplayName.getComponentType(), new PersistentDisplayName(var10));
      var9.addComponent(DisplayNameComponent.getComponentType(), new DisplayNameComponent(var10));
      var9.addComponent(Nameplate.getComponentType(), new Nameplate(var5));
      double[] var11 = var4.getInitialSpawnDelay();
      if (var11 != null) {
         InitialBeaconDelay var12 = var9.ensureAndGetComponent(InitialBeaconDelay.getComponentType());
         var12.setupInitialSpawnDelay(var11);
      }

      String var13 = var4.getSpawnSuppression();
      if (var13 != null && !var13.isEmpty()) {
         var9.addComponent(SpawnSuppressionComponent.getComponentType(), new SpawnSuppressionComponent(var13));
      }

      var9.ensureComponent(HiddenFromAdventurePlayers.getComponentType());
      class="kw">return var9;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "LegacySpawnBeaconEntity{nextSpawnAfter="
         + this.nextSpawnAfter
         + ", nextSpawnAfterRealtime="
         + this.nextSpawnAfterRealtime
         + ", despawnSelfAfter="
         + this.despawnSelfAfter
         + ", spawnAttempts="
         + this.spawnAttempts
         + ", lastPlayerCount="
         + this.lastPlayerCount
         + "}";
   }
}