ActionEntityHitInteraction class

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

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

extends: ActionBase

Поля (10)

МодификаторыТипИмя
final InteractionType INTERACTION_TYPE
int var10
EntityHit var12
Ref var13
NetworkId var14
int var15
InteractionContext var16
InteractionChain var17
InteractionManager var8
RootInteraction var9

Методы (5)

МодификаторыВозвратСигнатура
for for(int var11 = 0; var11 < var10; var11++)
if if(var3 instanceof EntityCollisionProvider var7)
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.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.entity.tracker.NetworkId;
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.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.BuilderActionEntityHitInteraction;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.EntityHit;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.EntityCollisionProvider;
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 ActionEntityHitInteraction 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 ActionEntityHitInteraction(@Nonnull BuilderActionEntityHitInteraction 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 EntityCollisionProvider 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 EntityCollisionProvider var7) {
         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);
         int var10 = var7.getHitCount();

         for (int var11 = 0; var11 < var10; var11++) {
            EntityHit var12 = var7.getHit(var11);
            Ref var13 = var12.entity;
            if (var13 != null && var13.isValid()) {
               NetworkId var14 = var6.getComponent(var13, NetworkId.getComponentType());
               int var15 = var14 != null ? var14.getId() : -1;
               InteractionContext var16 = InteractionContext.forInteraction(var8, var1, INTERACTION_TYPE, var6);
               var16.getMetaStore().putMetaObject(Interaction.TARGET_ENTITY, var13);
               InteractionChain var17 = var8.initChain(INTERACTION_TYPE, var16, var9, var15, null, false);
               var8.queueExecuteChain(var17);
            }
         }

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