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