OnRemove class

Пакет: com.hypixel.hytale.server.core.universe.world.meta.state

Файл: com/hypixel/hytale/server/core/universe/world/meta/state/RespawnBlock.java

extends: RefSystem<ChunkStore>

Поля (16)

МодификаторыТипИмя
public static final ComponentType<ChunkStore, BlockModule.BlockStateInfo> COMPONENT_TYPE_BLOCK_STATE_INFO
public static final ComponentType<ChunkStore, RespawnBlock> COMPONENT_TYPE_RESPAWN_BLOCK
private static final HytaleLogger LOGGER
public static final Query<ChunkStore> QUERY
return
World var10
PlayerWorldData var11
PlayerRespawnPointData[] var12
ChunkSection var13
Vector3i var14
PlayerRespawnPointData var16
RespawnBlock var5
BlockModule.BlockStateInfo var6
PlayerRef var7
Player var8
Ref var9

Методы (9)

МодификаторыВозвратСигнатура
for for(int var15 = 0; var15 < var12.length; var15++)
public Query<ChunkStore> getQuerypublic Query<ChunkStore> getQuery()
if if(var2 != RemoveReason.UNLOAD)
if if(var5.ownerUUID != null)
if if(var7 == null)
if if(var8 == null)
if if(var12 == null)
public void onEntityAddedpublic void onEntityAdded(@Nonnull Ref<ChunkStore> var1, @Nonnull AddReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4)
public void onEntityRemovepublic void onEntityRemove(@Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.meta.state;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentType;
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.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.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.data.PlayerRespawnPointData;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.data.PlayerWorldData;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
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.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">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;

class="kw">public class RespawnBlock class="kw">implements Component<ChunkStore> {
   class="kw">public class="kw">static class="kw">final BuilderCodec<RespawnBlock> CODEC = BuilderCodec.builder(RespawnBlock.class, RespawnBlock::new)
      .append(new KeyedCodec<>("OwnerUUID", Codec.UUID_BINARY), (var0, var1) -> var0.ownerUUID = var1, var0 -> var0.ownerUUID)
      .add()
      .build();
   @Nullable
   class="kw">private UUID ownerUUID;

   class="kw">public class="kw">static ComponentType<ChunkStore, RespawnBlock> getComponentType() {
      class="kw">return BlockModule.get().getRespawnBlockComponentType();
   }

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

   class="kw">public RespawnBlock(@Nullable UUID var1) {
      this.ownerUUID = var1;
   }

   @Nullable
   class="kw">public UUID getOwnerUUID() {
      class="kw">return this.ownerUUID;
   }

   class="kw">public void setOwnerUUID(@Nullable UUID var1) {
      this.ownerUUID = var1;
   }

   @Nullable
   @Override
   class="kw">public Component<ChunkStore> clone() {
      class="kw">return new RespawnBlock(this.ownerUUID);
   }

   class="kw">public class="kw">static class OnRemove class="kw">extends RefSystem<ChunkStore> {
      @Nonnull
      class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
      class="kw">public class="kw">static class="kw">final ComponentType<ChunkStore, RespawnBlock> COMPONENT_TYPE_RESPAWN_BLOCK = RespawnBlock.getComponentType();
      class="kw">public class="kw">static class="kw">final ComponentType<ChunkStore, BlockModule.BlockStateInfo> COMPONENT_TYPE_BLOCK_STATE_INFO = BlockModule.BlockStateInfo.getComponentType();
      @Nonnull
      class="kw">public class="kw">static class="kw">final Query<ChunkStore> QUERY = Query.and(COMPONENT_TYPE_RESPAWN_BLOCK, COMPONENT_TYPE_BLOCK_STATE_INFO);

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

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

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
      ) {
         if (var2 != RemoveReason.UNLOAD) {
            RespawnBlock var5 = var4.getComponent(var1, COMPONENT_TYPE_RESPAWN_BLOCK);
            assert var5 != null;
            if (var5.ownerUUID != null) {
               BlockModule.BlockStateInfo var6 = var4.getComponent(var1, COMPONENT_TYPE_BLOCK_STATE_INFO);
               assert var6 != null;
               PlayerRef var7 = Universe.get().getPlayer(var5.ownerUUID);
               if (var7 == null) {
                  LOGGER.at(Level.WARNING).log("Failed to fetch player ref during removal of respawn block entity.");
               } else {
                  Player var8 = var7.getComponent(Player.getComponentType());
                  if (var8 == null) {
                     LOGGER.at(Level.WARNING).log("Failed to fetch player component during removal of respawn block entity.");
                  } else {
                     Ref var9 = var6.getSectionRef();
                     if (var9.isValid()) {
                        World var10 = var4.getExternalData().getWorld();
                        PlayerWorldData var11 = var8.getPlayerConfigData().getPerWorldData(var10.getName());
                        PlayerRespawnPointData[] var12 = var11.getRespawnPoints();
                        if (var12 == null) {
                           LOGGER.at(Level.WARNING)
                              .log("Failed to find valid respawn points for player %s during removal of respawn block entity.", var5.ownerUUID);
                        } else {
                           ChunkSection var13 = var4.getComponent(var9, ChunkSection.getComponentType());
                           assert var13 != null;
                           Vector3i var14 = new Vector3i(
                              ChunkUtil.worldCoordFromLocalCoord(var13.getX(), ChunkUtil.xFromIndex(var6.getIndex())),
                              ChunkUtil.worldCoordFromLocalCoord(var13.getY(), ChunkUtil.yFromIndex(var6.getIndex())),
                              ChunkUtil.worldCoordFromLocalCoord(var13.getZ(), ChunkUtil.zFromIndex(var6.getIndex()))
                           );

                           for (int var15 = 0; var15 < var12.length; var15++) {
                              PlayerRespawnPointData var16 = var12[var15];
                              if (var16.getBlockPosition().equals(var14)) {
                                 LOGGER.at(Level.INFO)
                                    .log("Removing respawn point for player %s at position %s due to respawn block removal.", var5.ownerUUID, var14);
                                 var11.setRespawnPoints(ArrayUtil.remove(var12, var15));
                                 class="kw">return;
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }

      @Nullable
      @Override
      class="kw">public Query<ChunkStore> getQuery() {
         class="kw">return QUERY;
      }
   }
}