ActionBlockHitInteraction class

Пакет: com.hypixel.hytale.server.npc.corecomponents.combat

Файл: com/hypixel/hytale/server/npc/corecomponents/combat/ActionBlockHitInteraction.java

extends: ActionBase

Поля (9)

МодификаторыТипИмя
final InteractionType INTERACTION_TYPE
World var10
int var11
BlockHit var13
BlockPosition var14
InteractionContext var15
InteractionChain var16
InteractionManager var8
RootInteraction var9

Методы (4)

МодификаторыВозвратСигнатура
for for(int var12 = 0; var12 < var11; var12++)
if if(this.interactionId == null)
if if(var8 == null)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.combat;

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.BlockPosition;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionChain;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionManager;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.ActionBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.combat.builders.BuilderActionBlockHitInteraction;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.BlockHit;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.BlockCollisionProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ActionBlockHitInteraction class="kw">extends ActionBase {
   class="kw">private class="kw">static class="kw">final InteractionType INTERACTION_TYPE = InteractionType.Collision;
   @Nullable
   class="kw">protected class="kw">final String interactionId;

   class="kw">public ActionBlockHitInteraction(@Nonnull BuilderActionBlockHitInteraction var1, @Nonnull BuilderSupport var2) {
      super(var1);
      this.interactionId = var1.getInteraction(var2);
   }

   @Override
   class="kw">public boolean canExecute(
      @Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
   ) {
      class="kw">return super.canExecute(var1, var2, var3, var4, var6)
         && this.interactionId != null
         && var3 class="kw">instanceof BlockCollisionProvider var7
         && var7.getHitCount() > 0;
   }

   @Override
   class="kw">public boolean execute(
      @Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
   ) {
      super.execute(var1, var2, var3, var4, var6);
      if (!(var3 class="kw">instanceof BlockCollisionProvider var7)) {
         class="kw">return true;
      } else {
         if (this.interactionId == null) {
            class="kw">return true;
         }

         InteractionManager var8 = var6.getComponent(var1, InteractionModule.get().getInteractionManagerComponent());
         if (var8 == null) {
            class="kw">return true;
         }

         RootInteraction var9 = RootInteraction.getRootInteractionOrUnknown(this.interactionId);
         World var10 = var6.getExternalData().getWorld();
         int var11 = var7.getHitCount();

         for (int var12 = 0; var12 < var11; var12++) {
            BlockHit var13 = var7.getHit(var12);
            BlockPosition var14 = new BlockPosition(var13.blockX, var13.blockY, var13.blockZ);
            InteractionContext var15 = InteractionContext.forInteraction(var8, var1, INTERACTION_TYPE, var6);
            var15.getMetaStore().putMetaObject(Interaction.TARGET_BLOCK_RAW, var14);
            var15.getMetaStore().putMetaObject(Interaction.TARGET_BLOCK, var10.getBaseBlock(var14));
            InteractionChain var16 = var8.initChain(INTERACTION_TYPE, var15, var9, -1, var14, false);
            var8.queueExecuteChain(var16);
         }

         class="kw">return true;
      }
   }
}