OpenBenchPageInteraction class

Пакет: com.hypixel.hytale.builtin.crafting.interaction

Файл: com/hypixel/hytale/builtin/crafting/interaction/OpenBenchPageInteraction.java

extends: SimpleBlockInteraction

Поля (16)

МодификаторыТипИмя
SIMPLE_CRAFTING, DIAGRAM_CRAFTING, STRUCTURAL_CRAFTING
Player var10
CraftingManager var11
ChunkStore var12
Ref var13
Store var14
Ref var15
BenchBlock var16
BlockSection var17
BlockType var18
int var19
CraftingWindow var20
UUIDComponent var21
UUID var22
Ref var8
Store var9

Методы (8)

МодификаторыВозвратСигнатура
PageType PageType()
if if(var10 != null)
if if(var15 != null)
if if(var16 != null)
if if(var17 != null)
if if(var18 != null)
if if(var21 != null)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.crafting.component.BenchBlock;
class="kw">import com.hypixel.hytale.builtin.crafting.component.CraftingManager;
class="kw">import com.hypixel.hytale.builtin.crafting.window.CraftingWindow;
class="kw">import com.hypixel.hytale.builtin.crafting.window.DiagramCraftingWindow;
class="kw">import com.hypixel.hytale.builtin.crafting.window.SimpleCraftingWindow;
class="kw">import com.hypixel.hytale.builtin.crafting.window.StructuralCraftingWindow;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.Page;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.client.SimpleBlockInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
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.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;

class="kw">public class OpenBenchPageInteraction class="kw">extends SimpleBlockInteraction {
   @Nonnull
   class="kw">public class="kw">static class="kw">final OpenBenchPageInteraction SIMPLE_CRAFTING = new OpenBenchPageInteraction(
      "*Simple_Crafting_Default", OpenBenchPageInteraction.PageType.SIMPLE_CRAFTING
   );
   @Nonnull
   class="kw">public class="kw">static class="kw">final RootInteraction SIMPLE_CRAFTING_ROOT = new RootInteraction(SIMPLE_CRAFTING.getId(), SIMPLE_CRAFTING.getId());
   @Nonnull
   class="kw">public class="kw">static class="kw">final OpenBenchPageInteraction DIAGRAM_CRAFTING = new OpenBenchPageInteraction(
      "*Diagram_Crafting_Default", OpenBenchPageInteraction.PageType.DIAGRAM_CRAFTING
   );
   @Nonnull
   class="kw">public class="kw">static class="kw">final RootInteraction DIAGRAM_CRAFTING_ROOT = new RootInteraction(DIAGRAM_CRAFTING.getId(), DIAGRAM_CRAFTING.getId());
   @Nonnull
   class="kw">public class="kw">static class="kw">final OpenBenchPageInteraction STRUCTURAL_CRAFTING = new OpenBenchPageInteraction(
      "*Structural_Crafting_Default", OpenBenchPageInteraction.PageType.STRUCTURAL_CRAFTING
   );
   @Nonnull
   class="kw">public class="kw">static class="kw">final RootInteraction STRUCTURAL_CRAFTING_ROOT = new RootInteraction(STRUCTURAL_CRAFTING.getId(), STRUCTURAL_CRAFTING.getId());
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<OpenBenchPageInteraction> CODEC = BuilderCodec.<SimpleBlockInteraction>builder(
         OpenBenchPageInteraction.class, OpenBenchPageInteraction::new, SimpleBlockInteraction.CODEC
      )
      .documentation("Opens the given crafting bench page.")
      .<OpenBenchPageInteraction.PageType>appendInherited(
         new KeyedCodec<>("Page", new EnumCodec<>(OpenBenchPageInteraction.PageType.class)),
         (var0, var1) -> var0.pageType = var1,
         var0 -> var0.pageType,
         (var0, var1) -> var0.pageType = var1.pageType
      )
      .addValidator(Validators.nonNull())
      .add()
      .build();
   @Nonnull
   class="kw">private OpenBenchPageInteraction.PageType pageType = OpenBenchPageInteraction.PageType.SIMPLE_CRAFTING;

   class="kw">public OpenBenchPageInteraction(@Nonnull String var1, @Nonnull OpenBenchPageInteraction.PageType var2) {
      super(var1);
      this.pageType = var2;
   }

   class="kw">protected OpenBenchPageInteraction() {
   }

   @Override
   class="kw">protected void interactWithBlock(
      @Nonnull World var1,
      @Nonnull CommandBuffer<EntityStore> var2,
      @Nonnull InteractionType var3,
      @Nonnull InteractionContext var4,
      @Nullable ItemStack var5,
      @Nonnull Vector3i var6,
      @Nonnull CooldownHandler var7
   ) {
      Ref var8 = var4.getEntity();
      Store var9 = var8.getStore();
      Player var10 = var2.getComponent(var8, Player.getComponentType());
      if (var10 != null) {
         CraftingManager var11 = var2.getComponent(var8, CraftingManager.getComponentType());
         if (var11 != null && !var11.hasBenchSet()) {
            ChunkStore var12 = var1.getChunkStore();
            Ref var13 = var12.getChunkSectionReferenceAtBlock(var6.x, var6.y, var6.z);
            if (var13 != null && var13.isValid()) {
               Store var14 = var12.getStore();
               Ref var15 = BlockModule.getBlockEntity(var14, var13, var6.x, var6.y, var6.z);
               if (var15 != null) {
                  BenchBlock var16 = var14.getComponent(var15, BenchBlock.getComponentType());
                  if (var16 != null) {
                     BenchBlock.refreshGrantedAugmentTags(var12.getStore(), var15, var6);
                     if (BenchBlock.tryOpen(var8, var2, var15, var6)) {
                        BlockSection var17 = var14.getComponent(var13, BlockSection.getComponentType());
                        if (var17 != null) {
                           BlockType var18 = BlockType.getAssetMap().getAsset(var17.get(var6.x, var6.y, var6.z));
                           if (var18 != null) {
                              int var19 = var17.getRotationIndex(var6.x, var6.y, var6.z);

                              CraftingWindow var20 = class="kw">switch (this.pageType) {
                                 case SIMPLE_CRAFTING -> new SimpleCraftingWindow(var6.x, var6.y, var6.z, var19, var18, var16);
                                 case DIAGRAM_CRAFTING -> new DiagramCraftingWindow(var8, var2, var6.x, var6.y, var6.z, var19, var18, var16);
                                 case STRUCTURAL_CRAFTING -> new StructuralCraftingWindow(var6.x, var6.y, var6.z, var19, var18, var16);
                              };
                              UUIDComponent var21 = var2.getComponent(var8, UUIDComponent.getComponentType());
                              if (var21 != null) {
                                 UUID var22 = var21.getUuid();
                                 if (var16.getWindows().putIfAbsent(var22, var20) == null) {
                                    var20.registerCloseEvent(var3x -> var16.getWindows().remove(var22, var20));
                                 }

                                 var10.getPageManager().setPageWithWindows(var8, var9, Page.Bench, true, var20);
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   }

   @Override
   class="kw">protected void simulateInteractWithBlock(
      @Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nullable ItemStack var3, @Nonnull World var4, @Nonnull Vector3i var5
   ) {
   }

   class="kw">public enum PageType {
      SIMPLE_CRAFTING,
      DIAGRAM_CRAFTING,
      STRUCTURAL_CRAFTING;

      PageType() {
      }
   }
}