OpenTreasureContainerInteraction class

Пакет: com.hypixel.hytale.builtin.adventure.objectives.interactions

Файл: com/hypixel/hytale/builtin/adventure/objectives/interactions/OpenTreasureContainerInteraction.java

extends: SimpleBlockInteraction

Поля (28)

МодификаторыТипИмя
final BuilderCodec<OpenTreasureContainerInteraction> CODEC
return
return
Player var10
BlockType var10
ChunkStore var11
BlockType var11
Ref var12
int var12
ItemContainerBlock var13
int var13
TreasureChestBlock var14
Vector3d var14
PlayerRef var15
UUIDComponent var16
UUID var17
WorldChunk var18
ContainerBlockWindow var19
Map var20
BlockType var21
int var22
int var23
Vector3d var24
BlockType var25
boolean var26
BlockModule.BlockStateInfo var27
Ref var8
Store var9

Методы (10)

МодификаторыВозвратСигнатура
if if(var10 != null)
if if(var12 != null)
if if(var13 != null && var14 != null)
if if(var11 != null)
if if(var12 != 0)
if if(var21 == null)
if if(var22 == 0)
if if(!var26)
if if(var27 != null)
if if(var15 != null)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.adventure.objectives.blockstates.TreasureChestBlock;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
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.math.util.ChunkUtil;
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.Message;
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.entity.entities.player.windows.ContainerBlockWindow;
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.block.components.ItemContainerBlock;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.client.SimpleBlockInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.SoundUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
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.Map;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class OpenTreasureContainerInteraction class="kw">extends SimpleBlockInteraction {
   class="kw">public class="kw">static class="kw">final BuilderCodec<OpenTreasureContainerInteraction> CODEC = BuilderCodec.builder(
         OpenTreasureContainerInteraction.class, OpenTreasureContainerInteraction::new, SimpleBlockInteraction.CODEC
      )
      .documentation("Opens the container of the block currently being interacted with.")
      .build();

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

   @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) {
         ChunkStore var11 = var1.getChunkStore();
         Ref var12 = BlockModule.getBlockEntity(var1, var6.x, var6.y, var6.z);
         if (var12 != null) {
            ItemContainerBlock var13 = var11.getStore().getComponent(var12, ItemContainerBlock.getComponentType());
            TreasureChestBlock var14 = var11.getStore().getComponent(var12, TreasureChestBlock.getComponentType());
            if (var13 != null && var14 != null) {
               BlockType var25 = var1.getBlockType(var6.x, var6.y, var6.z);
               if (var14.canOpen(var8, var2)) {
                  UUIDComponent var16 = var2.getComponent(var8, UUIDComponent.getComponentType());
                  assert var16 != null;
                  UUID var17 = var16.getUuid();
                  WorldChunk var18 = var1.getChunk(ChunkUtil.indexChunkFromBlock(var6.x, var6.z));
                  ContainerBlockWindow var19 = new ContainerBlockWindow(
                     var6.x, var6.y, var6.z, var18.getRotationIndex(var6.x, var6.y, var6.z), var25, var13.getItemContainer()
                  );
                  Map var20 = var13.getWindows();
                  if (var20.putIfAbsent(var17, var19) == null) {
                     if (var10.getPageManager().setPageWithWindows(var8, var9, Page.Bench, true, var19)) {
                        var19.registerCloseEvent(var9x -> {
                           var20.remove(var17, var19);
                           BlockType var10 = var1.getBlockType(var6);
                           if (var20.isEmpty()) {
                              var1.setBlockInteractionState(var6, var10, "CloseWindow");
                           }

                           BlockType var11 = var10.getBlockForState("CloseWindow");
                           if (var11 != null) {
                              int var12 = var11.getInteractionSoundEventIndex();
                              if (var12 != 0) {
                                 int var13 = var18.getRotationIndex(var6.x, var6.y, var6.z);
                                 Vector3d var14 = new Vector3d();
                                 var25.getBlockCenter(var13, var14);
                                 var14.add(var6.x, var6.y, var6.z);
                                 SoundUtil.playSoundEvent3d(var8, var12, var14, var2);
                              }
                           }
                        });
                        if (var20.size() == 1) {
                           var1.setBlockInteractionState(var6, var25, "OpenWindow");
                        }

                        BlockType var21 = var25.getBlockForState("OpenWindow");
                        if (var21 == null) {
                           class="kw">return;
                        }

                        int var22 = var21.getInteractionSoundEventIndex();
                        if (var22 == 0) {
                           class="kw">return;
                        }

                        int var23 = var18.getRotationIndex(var6.x, var6.y, var6.z);
                        Vector3d var24 = new Vector3d();
                        var25.getBlockCenter(var23, var24);
                        var24.add(var6.x, var6.y, var6.z);
                        SoundUtil.playSoundEvent3d(var8, var22, var24, var2);
                     } else {
                        var20.remove(var17, var19);
                     }
                  }

                  boolean var26 = var14.isOpened();
                  var14.onOpen(var8, var1, var9);
                  if (!var26) {
                     BlockModule.BlockStateInfo var27 = var11.getStore().getComponent(var12, BlockModule.BlockStateInfo.getComponentType());
                     if (var27 != null) {
                        var27.markNeedsSaving();
                     }
                  }
               }
            } else {
               PlayerRef var15 = var2.getComponent(var8, PlayerRef.getComponentType());
               if (var15 != null) {
                  var15.sendMessage(
                     Message.translation("server.interactions.invalidBlockState")
                        .param("interaction", this.getClass().getSimpleName())
                        .param("blockState", var11.getStore().getArchetype(var12).toString())
                  );
               }
            }
         }
      }
   }

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