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