RemovalSystem class
Пакет: com.hypixel.hytale.builtin.instances.removal
Файл: com/hypixel/hytale/builtin/instances/removal/RemovalSystem.java
extends: TickingSystem<ChunkStore>
implements: RunWhenPausedSystem<ChunkStore>
Поля (13)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
float |
REMOVAL_DELAY_SECONDS |
|
World |
var1 |
|
String |
var2 |
|
InstanceWorldConfig |
var2 |
|
Store |
var3 |
|
RemovalCondition[] |
var3 |
|
InstanceDataResource |
var4 |
|
boolean |
var4 |
|
World |
var5 |
|
InstanceWorldConfig |
var6 |
|
Ref |
var6 |
|
Player |
var7 |
|
HudManager |
var8 |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(RemovalCondition var8 : var3) |
|
|
if if(var2 != null) |
|
|
if if(var7 != null) |
|
|
if if(var2 == null) |
|
|
if if(var3.length == 0) |
static |
void |
setupInstanceRemovalvoid setupInstanceRemoval(@Nonnull World var0, @Nonnull InstanceWorldConfig var1) |
abstract |
|
setupInstanceRemoval setupInstanceRemoval(var5, var6) |
static |
boolean |
shouldRemoveWorldboolean shouldRemoveWorld(@Nonnull Store<ChunkStore> var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.instances.removal;
class="kw">import com.hypixel.hytale.builtin.instances.config.InstanceWorldConfig;
class="kw">import com.hypixel.hytale.builtin.instances.hud.InstanceRemovalHud;
class="kw">import com.hypixel.hytale.common.util.CompletableFutureUtil;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.system.tick.RunWhenPausedSystem;
class="kw">import com.hypixel.hytale.component.system.tick.TickingSystem;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.hud.HudManager;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;
class="kw">public class RemovalSystem class="kw">extends TickingSystem<ChunkStore> class="kw">implements RunWhenPausedSystem<ChunkStore> {
class="kw">private class="kw">static class="kw">final float REMOVAL_DELAY_SECONDS = 5.0F;
class="kw">public RemovalSystem() {
}
@Override
class="kw">public void tick(float var1, int var2, @Nonnull Store<ChunkStore> var3) {
InstanceDataResource var4 = var3.getResource(InstanceDataResource.getResourceType());
if (!var4.isRemoving() && shouldRemoveWorld(var3)) {
var4.setRemoving(true);
World var5 = var3.getExternalData().getWorld();
InstanceWorldConfig var6 = InstanceWorldConfig.get(var5.getWorldConfig());
if (var6 != null && var6.getDocumentDisplayOnRemoval() != null) {
setupInstanceRemoval(var5, var6);
} else {
CompletableFutureUtil._catch(CompletableFuture.runAsync(() -> Universe.get().removeWorld(var5.getName())));
}
}
}
class="kw">public class="kw">static void setupInstanceRemoval(@Nonnull World var0, @Nonnull InstanceWorldConfig var1) {
String var2 = var1.getDocumentDisplayOnRemoval();
if (var2 != null) {
Store var3 = var0.getEntityStore().getStore();
for (PlayerRef var5 : var0.getPlayerRefs()) {
Ref var6 = var5.getReference();
if (var6 != null && var6.isValid()) {
Player var7 = var3.getComponent(var6, Player.getComponentType());
if (var7 != null) {
HudManager var8 = var7.getHudManager();
if (var8.getCustomHud("InstanceRemoval") == null) {
var8.addCustomHud(var5, new InstanceRemovalHud(var5, var2));
}
}
}
}
}
var0.scheduleAfter(
() -> CompletableFutureUtil._catch(CompletableFuture.runAsync(() -> Universe.get().removeWorld(var0.getName()))), 5000L, TimeUnit.MILLISECONDS
);
}
class="kw">public class="kw">static boolean shouldRemoveWorld(@Nonnull Store<ChunkStore> var0) {
World var1 = var0.getExternalData().getWorld();
InstanceWorldConfig var2 = InstanceWorldConfig.get(var1.getWorldConfig());
if (var2 == null) {
class="kw">return false;
}
RemovalCondition[] var3 = var2.getRemovalConditions();
if (var3.length == 0) {
class="kw">return false;
}
boolean var4 = true;
for (RemovalCondition var8 : var3) {
var4 &= var8.shouldRemoveWorld(var0);
}
class="kw">return var4;
}
}