TeleporterSettingsPageSupplier class

Пакет: com.hypixel.hytale.builtin.adventure.teleporter.page

Файл: com/hypixel/hytale/builtin/adventure/teleporter/page/TeleporterSettingsPageSupplier.java

implements: OpenCustomUIInteraction.CustomPageSupplier

Поля (11)

МодификаторыТипИмя
Ref var10
BlockComponentSection var11
int var12
Ref var13
var13
Holder var14
BlockPosition var5
Store var6
World var7
ChunkStore var8
Store var9

Методы (3)

МодификаторыВозвратСигнатура
if if(var5 == null)
if if(var11 == null)
if if(!this.create)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.component.Teleporter;
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.component.AddReason;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.protocol.BlockPosition;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.CustomUIPage;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.OpenCustomUIInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockComponentSection;
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 javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class TeleporterSettingsPageSupplier class="kw">implements OpenCustomUIInteraction.CustomPageSupplier {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<TeleporterSettingsPageSupplier> CODEC = BuilderCodec.builder(
         TeleporterSettingsPageSupplier.class, TeleporterSettingsPageSupplier::new
      )
      .appendInherited(
         new KeyedCodec<>("Create", Codec.BOOLEAN), (var0, var1) -> var0.create = var1, var0 -> var0.create, (var0, var1) -> var0.create = var1.create
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("Mode", TeleporterSettingsPage.Mode.CODEC),
         (var0, var1) -> var0.mode = var1,
         var0 -> var0.mode,
         (var0, var1) -> var0.mode = var1.mode
      )
      .add()
      .build();
   class="kw">private boolean create = true;
   class="kw">private TeleporterSettingsPage.Mode mode = TeleporterSettingsPage.Mode.FULL;

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

   @Nullable
   @Override
   class="kw">public CustomUIPage tryCreate(
      @Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2, @Nonnull PlayerRef var3, @Nonnull InteractionContext var4
   ) {
      BlockPosition var5 = var4.getTargetBlock();
      if (var5 == null) {
         class="kw">return null;
      }

      Store var6 = var1.getStore();
      World var7 = var6.getExternalData().getWorld();
      ChunkStore var8 = var7.getChunkStore();
      Store var9 = var8.getStore();
      Ref var10 = var8.getChunkSectionReferenceAtBlock(var5.x, var5.y, var5.z);
      BlockComponentSection var11 = var10 != null && var10.isValid() ? var9.getComponent(var10, BlockComponentSection.getComponentType()) : null;
      if (var11 == null) {
         class="kw">return null;
      }

      int var12 = ChunkUtil.indexBlock(var5.x, var5.y, var5.z);
      Ref var13 = var11.getBlockReference(var12);
      if (var13 == null || !var13.isValid()) {
         if (!this.create) {
            class="kw">return null;
         }

         Holder var14 = ChunkStore.REGISTRY.newHolder();
         var14.putComponent(BlockModule.BlockStateInfo.getComponentType(), new BlockModule.BlockStateInfo(var12, var10));
         var14.ensureComponent(Teleporter.getComponentType());
         var13 = var9.addEntity(var14, AddReason.SPAWN);
      }

      class="kw">return var13 != null && var13.isValid() ? new TeleporterSettingsPage(var3, var13, this.mode) : null;
   }
}