CarryBlockInteraction class

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

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

extends: SimpleBlockInteraction

Поля (10)

МодификаторыТипИмя
final BuilderCodec<CarryBlockInteraction> CODEC
Ref var10
BlockSection var11
BlockType var12
Holder var13
var13
BlockComponentSection var14
Ref var15
ChunkStore var8
Store var9

Методы (3)

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

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.codec.ContainedAssetCodec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
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.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockEntity;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.BlockHarvestUtils;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.components.CarriedBlock;
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.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.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 org.checkerframework.checker.nullness.compatqual.NonNullDecl;
class="kw">import org.checkerframework.checker.nullness.compatqual.NullableDecl;
class="kw">import org.joml.Vector3i;

class="kw">public class CarryBlockInteraction class="kw">extends SimpleBlockInteraction {
   class="kw">public class="kw">static class="kw">final BuilderCodec<CarryBlockInteraction> CODEC = BuilderCodec.builder(
         CarryBlockInteraction.class, CarryBlockInteraction::new, SimpleBlockInteraction.CODEC
      )
      .documentation("Carry the block being interacted with.")
      .<String>appendInherited(
         new KeyedCodec<>("EntityEffectId", new ContainedAssetCodec<>(EntityEffect.class, EntityEffect.CODEC)),
         (var0, var1) -> var0.entityEffectId = var1,
         var0 -> var0.entityEffectId,
         (var0, var1) -> var0.entityEffectId = var1.entityEffectId
      )
      .addValidatorLate(() -> EntityEffect.VALIDATOR_CACHE.getValidator().late())
      .add()
      .build();
   class="kw">private String entityEffectId;

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

   @Override
   class="kw">protected void interactWithBlock(
      @NonNullDecl World var1,
      @NonNullDecl CommandBuffer<EntityStore> var2,
      @NonNullDecl InteractionType var3,
      @NonNullDecl InteractionContext var4,
      @NullableDecl ItemStack var5,
      @NonNullDecl Vector3i var6,
      @NonNullDecl CooldownHandler var7
   ) {
      if (var2.getComponent(var4.getEntity(), CarriedBlock.getComponentType()) != null) {
         var4.getState().state = InteractionState.Failed;
      } else {
         ChunkStore var8 = var1.getChunkStore();
         Store var9 = var8.getStore();
         Ref var10 = var8.getChunkSectionReferenceAtBlock(var6.x, var6.y, var6.z);
         if (var10 != null && var10.isValid()) {
            BlockSection var11 = var9.getComponent(var10, BlockSection.getComponentType());
            if (var11 == null) {
               var4.getState().state = InteractionState.Failed;
            } else {
               BlockType var12 = BlockType.getAssetMap().getAsset(var11.get(var6.x, var6.y, var6.z));
               if (var12 == null) {
                  var4.getState().state = InteractionState.Failed;
               } else {
                  Holder var13 = null;
                  BlockComponentSection var14 = var9.getComponent(var10, BlockComponentSection.getComponentType());
                  if (var14 != null) {
                     var13 = BlockEntity.takeBlockEntity(var9, var14, var6.x, var6.y, var6.z);
                  }

                  Ref var15 = var4.getEntity();
                  var2.addComponent(var15, CarriedBlock.getComponentType(), new CarriedBlock(var12.getId(), var13, this.entityEffectId));
                  BlockHarvestUtils.performBlockBreak(var15, var5, var6, 2048, var10, var2, var9);
               }
            }
         } else {
            var4.getState().state = InteractionState.Failed;
         }
      }
   }

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