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
+ "}";
}
}