PortalWorld class

Пакет: com.hypixel.hytale.builtin.portals.resources

Файл: com/hypixel/hytale/builtin/portals/resources/PortalWorld.java

implements: Resource<EntityStore>

Поля (21)

МодификаторыТипИмя
private String portalTypeId
PortalType var1
PortalWorld var1
GameplayConfig var2
PortalType var2
double var2
PortalWorld var3
PortalGameplayConfig var3
int var3
var3
var3
double var4
int var4
var4
var4
VoidEventConfig var4
boolean var5
PortalType var5
VoidEventConfig var6
int var6
PortalDef var7

Методы (20)

МодификаторыВозвратСигнатура
public boolean existsboolean exists()
public Set<UUID> getDiedInWorldSet<UUID> getDiedInWorld()
public double getElapsedSecondsdouble getElapsedSeconds(@Nonnull World var1)
public PortalGameplayConfig getGameplayConfigPortalGameplayConfig getGameplayConfig()
public double getRemainingSecondsdouble getRemainingSeconds(@Nonnull World var1)
static ResourceType<EntityStore, PortalWorld> getResourceTypeResourceType<EntityStore, PortalWorld> getResourceType()
public Set<UUID> getSeesUiSet<UUID> getSeesUi()
public int getTimeLimitSecondsint getTimeLimitSeconds()
if if(!var3.isTimeLimitActive)
if if(this.isTimeLimitActive)
if if(var1 == null)
if if(var5)
if if(var4 != null && var5 != null)
public void initvoid init(@Nonnull PortalType var1, int var2, @Nonnull PortalRemovalCondition var3, @Nonnull PortalGameplayConfig var4)
public boolean isTimeLimitActiveboolean isTimeLimitActive()
public boolean isVoidEventActiveboolean isVoidEventActive()
static void setRemainingSecondsvoid setRemainingSeconds(@Nonnull World var0, double var1)
public void setSpawnPointvoid setSpawnPoint(Transform var1)
public void setVoidEventRefvoid setVoidEventRef(@Nullable Ref<EntityStore> var1)
public boolean toggleTimeLimitboolean toggleTimeLimit(@Nonnull World var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.portals.resources;

class="kw">import com.hypixel.hytale.builtin.portals.PortalsPlugin;
class="kw">import com.hypixel.hytale.builtin.portals.components.voidevent.config.VoidEventConfig;
class="kw">import com.hypixel.hytale.builtin.portals.integrations.PortalGameplayConfig;
class="kw">import com.hypixel.hytale.builtin.portals.integrations.PortalRemovalCondition;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Resource;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.PortalDef;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.PortalState;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.UpdatePortal;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.GameplayConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.portalworld.PortalType;
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 java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class PortalWorld class="kw">implements Resource<EntityStore> {
   class="kw">private String portalTypeId;
   class="kw">private int initialTimeLimitSeconds;
   class="kw">private int timeLimitSeconds;
   class="kw">private PortalRemovalCondition worldRemovalCondition;
   class="kw">private PortalGameplayConfig storedGameplayConfig;
   class="kw">private Set<UUID> diedInWorld;
   class="kw">private Set<UUID> seesUi;
   class="kw">private boolean isTimeLimitActive = true;
   class="kw">private double pausedRemainingSeconds;
   class="kw">private Transform spawnPoint;
   @Nullable
   class="kw">private Ref<EntityStore> voidEventRef;

   class="kw">public PortalWorld() {
   }

   class="kw">public class="kw">static ResourceType<EntityStore, PortalWorld> getResourceType() {
      class="kw">return PortalsPlugin.getInstance().getPortalResourceType();
   }

   class="kw">public void init(@Nonnull PortalType var1, int var2, @Nonnull PortalRemovalCondition var3, @Nonnull PortalGameplayConfig var4) {
      this.portalTypeId = var1.getId();
      this.initialTimeLimitSeconds = var2;
      this.timeLimitSeconds = var2;
      this.worldRemovalCondition = var3;
      this.storedGameplayConfig = var4;
      this.diedInWorld = ConcurrentHashMap.newKeySet();
      this.seesUi = ConcurrentHashMap.newKeySet();
      this.isTimeLimitActive = true;
      this.pausedRemainingSeconds = 0.0;
   }

   @Nullable
   class="kw">public PortalType getPortalType() {
      class="kw">return this.portalTypeId == null ? null : PortalType.getAssetMap().getAsset(this.portalTypeId);
   }

   class="kw">public boolean exists() {
      class="kw">return this.getPortalType() != null;
   }

   class="kw">public int getTimeLimitSeconds() {
      class="kw">return this.timeLimitSeconds;
   }

   class="kw">public double getElapsedSeconds(@Nonnull World var1) {
      class="kw">return Math.max(0.0, this.timeLimitSeconds - this.getRemainingSeconds(var1));
   }

   class="kw">public double getRemainingSeconds(@Nonnull World var1) {
      class="kw">return this.isTimeLimitActive ? this.worldRemovalCondition.getRemainingSeconds(var1) : this.pausedRemainingSeconds;
   }

   class="kw">public class="kw">static void setRemainingSeconds(@Nonnull World var0, double var1) {
      PortalWorld var3 = var0.getEntityStore().getStore().getResource(getResourceType());
      double var4 = Math.min(var1, var3.initialTimeLimitSeconds);
      if (!var3.isTimeLimitActive) {
         var3.pausedRemainingSeconds = Math.max(0.0, var4);
      } else {
         PortalRemovalCondition.setRemainingSeconds(var0, var4);
      }
   }

   class="kw">public Set<UUID> getDiedInWorld() {
      class="kw">return this.diedInWorld;
   }

   class="kw">public Set<UUID> getSeesUi() {
      class="kw">return this.seesUi;
   }

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

   class="kw">public boolean toggleTimeLimit(@Nonnull World var1) {
      if (this.isTimeLimitActive) {
         this.pausedRemainingSeconds = this.worldRemovalCondition.getRemainingSeconds(var1);
      } else {
         PortalRemovalCondition.setRemainingSeconds(var1, this.pausedRemainingSeconds);
      }

      this.isTimeLimitActive = !this.isTimeLimitActive;
      class="kw">return this.isTimeLimitActive;
   }

   class="kw">public PortalGameplayConfig getGameplayConfig() {
      PortalType var1 = this.getPortalType();
      if (var1 == null) {
         class="kw">return this.storedGameplayConfig;
      }

      GameplayConfig var2 = this.getPortalType().getGameplayConfig();
      PortalGameplayConfig var3 = var2 == null ? null : var2.getPluginConfig().get(PortalGameplayConfig.class);
      class="kw">return var3 != null ? var3 : this.storedGameplayConfig;
   }

   @Nullable
   class="kw">public VoidEventConfig getVoidEventConfig() {
      class="kw">return this.getGameplayConfig().getVoidEvent();
   }

   @Nullable
   class="kw">public Transform getSpawnPoint() {
      class="kw">return this.spawnPoint;
   }

   class="kw">public void setSpawnPoint(Transform var1) {
      this.spawnPoint = var1;
   }

   @Nullable
   class="kw">public Ref<EntityStore> getVoidEventRef() {
      if (this.voidEventRef != null && !this.voidEventRef.isValid()) {
         this.voidEventRef = null;
      }

      class="kw">return this.voidEventRef;
   }

   class="kw">public boolean isVoidEventActive() {
      class="kw">return this.getVoidEventRef() != null;
   }

   class="kw">public void setVoidEventRef(@Nullable Ref<EntityStore> var1) {
      this.voidEventRef = var1;
   }

   @Nonnull
   class="kw">public UpdatePortal createFullPacket(@Nonnull World var1) {
      PortalType var2 = this.getPortalType();
      boolean var5 = var2.isVoidInvasionEnabled();
      int var3;
      int var4;
      if (var5) {
         VoidEventConfig var6 = this.getGameplayConfig().getVoidEvent();
         var4 = var6.getDurationSeconds();
         var3 = this.timeLimitSeconds - var4;
      } else {
         var3 = this.timeLimitSeconds;
         var4 = 0;
      }

      PortalDef var7 = new PortalDef(var2.getDescription().getDisplayNameKey(), var3, var4);
      class="kw">return new UpdatePortal(this.createStateForPacket(var1), var7);
   }

   @Nonnull
   class="kw">public UpdatePortal createUpdatePacket(@Nonnull World var1) {
      class="kw">return new UpdatePortal(this.createStateForPacket(var1), null);
   }

   @Nonnull
   class="kw">private PortalState createStateForPacket(@Nonnull World var1) {
      double var2 = this.getRemainingSeconds(var1);
      VoidEventConfig var4 = this.getVoidEventConfig();
      PortalType var5 = this.getPortalType();
      if (var4 != null && var5 != null) {
         int var6 = var4.getDurationSeconds();
         if (var5.isVoidInvasionEnabled() && var2 > var6) {
            var2 -= var6;
         }
      }

      class="kw">return new PortalState((int)Math.ceil(var2), this.isVoidEventActive());
   }

   @Override
   class="kw">public Resource<EntityStore> clone() {
      PortalWorld var1 = new PortalWorld();
      var1.portalTypeId = this.portalTypeId;
      var1.initialTimeLimitSeconds = this.initialTimeLimitSeconds;
      var1.timeLimitSeconds = this.timeLimitSeconds;
      var1.worldRemovalCondition = this.worldRemovalCondition;
      var1.storedGameplayConfig = this.storedGameplayConfig;
      var1.diedInWorld = this.diedInWorld;
      var1.seesUi = this.seesUi;
      var1.spawnPoint = this.spawnPoint;
      var1.voidEventRef = this.voidEventRef;
      var1.isTimeLimitActive = this.isTimeLimitActive;
      var1.pausedRemainingSeconds = this.pausedRemainingSeconds;
      class="kw">return var1;
   }
}