PortalInvalidDestinationSystem class

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

Файл: com/hypixel/hytale/builtin/portals/systems/PortalInvalidDestinationSystem.java

extends: RefSystem<ChunkStore>

Поля (21)

МодификаторыТипИмя
int var10
int var11
PortalDeviceConfig var12
BlockType var13
BlockType var14
UUID var2
Store var3
Ref var3
AndQuery var4
ChunkStore var4
World var5
PortalDevice var5
Store var5
PortalDevice var6
BlockModule.BlockStateInfo var6
ChunkSection var6
BlockModule.BlockStateInfo var7
BlockSection var7
World var8
int var8
int var9

Методы (7)

МодификаторыВозвратСигнатура
if if(var2 == AddReason.LOAD)
if if(var8 == null)
if if(var6 != null && var7 != null)
if if(var13 == null)
if if(var14 == null)
static void turnOffPortalBlockvoid turnOffPortalBlock(@Nonnull World var0, @Nonnull PortalDevice var1, @Nonnull BlockModule.BlockStateInfo var2)
static void turnOffPortalsInWorldvoid turnOffPortalsInWorld(@Nonnull World var0, @Nonnull World var1)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.portals.components.PortalDevice;
class="kw">import com.hypixel.hytale.builtin.portals.components.PortalDeviceConfig;
class="kw">import com.hypixel.hytale.builtin.portals.utils.BlockTypeUtils;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.query.AndQuery;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockOperations;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.ChunkSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.UUID;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;

class="kw">public class PortalInvalidDestinationSystem class="kw">extends RefSystem<ChunkStore> {
   class="kw">public PortalInvalidDestinationSystem() {
   }

   @Override
   class="kw">public void onEntityAdded(@Nonnull Ref<ChunkStore> var1, @Nonnull AddReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4) {
      if (var2 == AddReason.LOAD) {
         World var5 = var3.getExternalData().getWorld();
         PortalDevice var6 = var4.getComponent(var1, PortalDevice.getComponentType());
         BlockModule.BlockStateInfo var7 = var4.getComponent(var1, BlockModule.BlockStateInfo.getComponentType());
         World var8 = var6.getDestinationWorld();
         if (var8 == null) {
            var5.execute(() -> turnOffPortalBlock(var5, var6, var7));
         }
      }
   }

   @Override
   class="kw">public void onEntityRemove(
      @Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
   ) {
   }

   @Override
   class="kw">public Query<ChunkStore> getQuery() {
      class="kw">return Query.and(PortalDevice.getComponentType(), BlockModule.BlockStateInfo.getComponentType());
   }

   class="kw">public class="kw">static void turnOffPortalsInWorld(@Nonnull World var0, @Nonnull World var1) {
      UUID var2 = var1.getWorldConfig().getUuid();
      Store var3 = var0.getChunkStore().getStore();
      AndQuery var4 = Query.and(PortalDevice.getComponentType(), BlockModule.BlockStateInfo.getComponentType());
      var3.forEachEntityParallel(var4, (var2x, var3x, var4x) -> {
         PortalDevice var5 = var3x.getComponent(var2x, PortalDevice.getComponentType());
         if (var5 != null && var2.equals(var5.getDestinationWorldUuid())) {
            BlockModule.BlockStateInfo var6 = var3x.getComponent(var2x, BlockModule.BlockStateInfo.getComponentType());
            var0.execute(() -> turnOffPortalBlock(var0, var5, var6));
         }
      });
   }

   class="kw">private class="kw">static void turnOffPortalBlock(@Nonnull World var0, @Nonnull PortalDevice var1, @Nonnull BlockModule.BlockStateInfo var2) {
      Ref var3 = var2.getSectionRef();
      if (var3.isValid()) {
         ChunkStore var4 = var0.getChunkStore();
         Store var5 = var4.getStore();
         ChunkSection var6 = var5.getComponent(var3, ChunkSection.getComponentType());
         BlockSection var7 = var5.getComponent(var3, BlockSection.getComponentType());
         if (var6 != null && var7 != null) {
            int var8 = var2.getIndex();
            int var9 = ChunkUtil.worldCoordFromLocalCoord(var6.getX(), ChunkUtil.xFromIndex(var8));
            int var10 = ChunkUtil.worldCoordFromLocalCoord(var6.getY(), ChunkUtil.yFromIndex(var8));
            int var11 = ChunkUtil.worldCoordFromLocalCoord(var6.getZ(), ChunkUtil.zFromIndex(var8));
            PortalDeviceConfig var12 = var1.getConfig();
            BlockType var13 = BlockType.getAssetMap().getAsset(var7.get(var9, var10, var11));
            if (var13 == null) {
               HytaleLogger.getLogger()
                  .at(Level.WARNING)
                  .log(
                     "Couldn't find portal block at expected location, either %s is misconfigured or the block changed unexpectedly",
                     var1.getBaseBlockTypeKey()
                  );
            } else {
               BlockType var14 = BlockTypeUtils.getBlockForState(var13, var12.getOffState());
               if (var14 == null) {
                  HytaleLogger.getLogger()
                     .at(Level.WARNING)
                     .log("Couldn't find/set off set for portal block, either %s is misconfigured or the block changed unexpectedly", var13.getId());
               } else {
                  BlockOperations.setBlockInteractionState(var4, var3, var9, var10, var11, var13, var12.getOffState(), false);
               }
            }
         }
      }
   }
}