OpenContainerInteraction class

Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.server

Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/server/OpenContainerInteraction.java

extends: SimpleBlockInteraction

Поля (34)

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

Методы (13)

МодификаторыВозвратСигнатура
if if(var10 != null)
if if(var11 != null)
if if(var15 != null)
if if(var16 == null)
if if(var17 != null)
if if(var19 != null)
if if(var25 == null)
if if(var26 == 0)
if if(var11 != null)
if if(var12 != null)
if if(var17 != null)
if if(var18 != 0)
static void onWindowClosevoid onWindowClose(@Nonnull World var0, @Nonnull Ref<EntityStore> var1, @Nonnull UUID var2, @Nonnull Vector3i var3, @Nonnull BlockType var4, @Nonnull ContainerBlockWindow var5, @Nonnull Map<UUID, ContainerBlockWindow> var6, @Nonnull CommandBuffer<EntityStore> var7)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config.server;

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.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.BlockOperations;
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.Map;
class="kw">import java.util.Objects;
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 OpenContainerInteraction class="kw">extends SimpleBlockInteraction {
   class="kw">public class="kw">static class="kw">final BuilderCodec<OpenContainerInteraction> CODEC = BuilderCodec.builder(
         OpenContainerInteraction.class, OpenContainerInteraction::new, SimpleBlockInteraction.CODEC
      )
      .documentation("Opens the container of the block currently being interacted with.")
      .build();
   class="kw">public class="kw">static class="kw">final String OPEN_WINDOW = "OpenWindow";
   class="kw">public class="kw">static class="kw">final String CLOSE_WINDOW = "CloseWindow";

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

   @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) {
         PlayerRef var11 = var2.getComponent(var8, PlayerRef.getComponentType());
         if (var11 != null) {
            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) {
                  ItemContainerBlock var16 = var14.getComponent(var15, ItemContainerBlock.getComponentType());
                  if (var16 == null) {
                     var11.sendMessage(
                        Message.translation("server.interactions.invalidBlockState")
                           .param("interaction", this.getClass().getSimpleName())
                           .param("blockState", var14.getArchetype(var15).toString())
                     );
                  } else {
                     BlockSection var17 = var14.getComponent(var13, BlockSection.getComponentType());
                     if (var17 != null) {
                        int var18 = var17.get(var6.x, var6.y, var6.z);
                        BlockType var19 = BlockType.getAssetMap().getAsset(var18);
                        if (var19 != null) {
                           int var20 = var17.getRotationIndex(var6.x, var6.y, var6.z);
                           ContainerBlockWindow var21 = new ContainerBlockWindow(var6.x, var6.y, var6.z, var20, var19, var16.getItemContainer());
                           Map var22 = var16.getWindows();
                           UUIDComponent var23 = var2.getComponent(var8, UUIDComponent.getComponentType());
                           assert var23 != null;
                           UUID var24 = var23.getUuid();
                           if (var22.putIfAbsent(var24, var21) == null) {
                              if (var10.getPageManager().setPageWithWindows(var8, var9, Page.Bench, true, var21)) {
                                 var21.registerCloseEvent(var8x -> onWindowClose(var1, var8, var24, var6, var19, var21, var22, var2));
                                 if (var22.size() == 1) {
                                    BlockOperations.setBlockInteractionState(var12, var13, var6.x, var6.y, var6.z, var19, "OpenWindow", false);
                                 }

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

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

                                 Vector3d var27 = new Vector3d();
                                 var19.getBlockCenter(var20, var27);
                                 var27.add(var6.x, var6.y, var6.z);
                                 SoundUtil.playSoundEvent3d(var8, var26, var27, var2);
                              } else {
                                 var22.remove(var24, var21);
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   }

   class="kw">private class="kw">static void onWindowClose(
      @Nonnull World var0,
      @Nonnull Ref<EntityStore> var1,
      @Nonnull UUID var2,
      @Nonnull Vector3i var3,
      @Nonnull BlockType var4,
      @Nonnull ContainerBlockWindow var5,
      @Nonnull Map<UUID, ContainerBlockWindow> var6,
      @Nonnull CommandBuffer<EntityStore> var7
   ) {
      var6.remove(var2, var5);
      ChunkStore var8 = var0.getChunkStore();
      Ref var9 = var8.getChunkSectionReferenceAtBlock(var3.x, var3.y, var3.z);
      if (var9 != null && var9.isValid()) {
         Store var10 = var8.getStore();
         BlockSection var11 = var10.getComponent(var9, BlockSection.getComponentType());
         if (var11 != null) {
            BlockType var12 = BlockType.getAssetMap().getAsset(var11.get(var3.x, var3.y, var3.z));
            if (var12 != null) {
               if (var6.isEmpty()) {
                  String var13 = Objects.requireNonNullElse(var4.getDefaultStateKey(), var4.getId());
                  String var14 = Objects.requireNonNullElse(var12.getDefaultStateKey(), var12.getId());
                  if (Objects.equals(var14, var13)) {
                     BlockOperations.setBlockInteractionState(var8, var9, var3.x, var3.y, var3.z, var12, "CloseWindow", false);
                  }
               }

               BlockType var17 = var12.getBlockForState("CloseWindow");
               if (var17 != null) {
                  int var18 = var17.getInteractionSoundEventIndex();
                  if (var18 != 0) {
                     int var15 = var11.getRotationIndex(var3.x, var3.y, var3.z);
                     Vector3d var16 = new Vector3d();
                     var4.getBlockCenter(var15, var16);
                     var16.add(var3.x, var3.y, var3.z);
                     SoundUtil.playSoundEvent3d(var1, var18, var16, var7);
                  }
               }
            }
         }
      }
   }

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