NPCCombatActionEvaluatorPlugin class

Пакет: com.hypixel.hytale.builtin.npccombatactionevaluator

Файл: com/hypixel/hytale/builtin/npccombatactionevaluator/NPCCombatActionEvaluatorPlugin.java

extends: JavaPlugin

Поля (1)

МодификаторыТипИмя
instance

Методы (7)

МодификаторыВозвратСигнатура
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException("Not implemented")
static NPCCombatActionEvaluatorPlugin getNPCCombatActionEvaluatorPlugin get()
public ComponentType<EntityStore, CombatActionEvaluator> getCombatActionEvaluatorComponentTypeComponentType<EntityStore, CombatActionEvaluator> getCombatActionEvaluatorComponentType()
public ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> getCombatConstructionDataComponentTypeComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> getCombatConstructionDataComponentType()
public ComponentType<EntityStore, DamageMemory> getDamageMemoryComponentTypeComponentType<EntityStore, DamageMemory> getDamageMemoryComponentType()
public ComponentType<EntityStore, TargetMemory> getTargetMemoryComponentTypeComponentType<EntityStore, TargetMemory> getTargetMemoryComponentType()
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.conditions.RecentSustainedDamageCondition;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.conditions.TargetMemoryCountCondition;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.conditions.TotalSustainedDamageCondition;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.config.CombatBalanceAsset;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.corecomponents.builders.BuilderActionAddToTargetMemory;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.corecomponents.builders.BuilderActionCombatAbility;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.corecomponents.builders.BuilderCombatTargetCollector;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.corecomponents.builders.BuilderSensorCombatActionEvaluator;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.corecomponents.builders.BuilderSensorHasHostileTargetMemory;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.evaluator.CombatActionEvaluator;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.evaluator.combatactions.CombatActionOption;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.memory.DamageMemory;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.memory.DamageMemorySystems;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.memory.TargetMemory;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.memory.TargetMemorySystems;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.server.core.asset.HytaleAssetStore;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPlugin;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.config.balancing.BalanceAsset;
class="kw">import com.hypixel.hytale.server.npc.decisionmaker.core.conditions.base.Condition;
class="kw">import javax.annotation.Nonnull;

class="kw">public class NPCCombatActionEvaluatorPlugin class="kw">extends JavaPlugin {
   @Nonnull
   class="kw">public class="kw">static class="kw">final String CAE_MARKED_TARGET_SLOT = "CAETargetSlot";
   @Nonnull
   class="kw">public class="kw">static class="kw">final String CAE_MIN_RANGE_PARAMETER = "CAEMinRange";
   @Nonnull
   class="kw">public class="kw">static class="kw">final String CAE_MAX_RANGE_PARAMETER = "CAEMaxRange";
   @Nonnull
   class="kw">public class="kw">static class="kw">final String CAE_POSITIONING_ANGLE_PARAMETER = "CAEPositioningAngle";
   class="kw">private class="kw">static NPCCombatActionEvaluatorPlugin instance;
   class="kw">private ComponentType<EntityStore, TargetMemory> targetMemoryComponentType;
   class="kw">private ComponentType<EntityStore, CombatActionEvaluator> combatActionEvaluatorComponentType;
   class="kw">private ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> combatConstructionDataComponentType;
   class="kw">private ComponentType<EntityStore, DamageMemory> damageMemoryComponentType;

   class="kw">public class="kw">static NPCCombatActionEvaluatorPlugin get() {
      class="kw">return instance;
   }

   class="kw">public NPCCombatActionEvaluatorPlugin(@Nonnull JavaPluginInit var1) {
      super(var1);
   }

   @Override
   class="kw">protected void setup() {
      instance = this;
      BalanceAsset.CODEC.register("CombatActionEvaluator", CombatBalanceAsset.class, CombatBalanceAsset.CODEC);
      AssetRegistry.register(
         ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
                                 CombatActionOption.class, new IndexedLookupTableAssetMap<>(CombatActionOption[]::new)
                              )
                              .setPath("NPC/DecisionMaking/CombatActions"))
                           .setCodec(CombatActionOption.CODEC))
                        .setKeyFunction(CombatActionOption::getId))
                     .setReplaceOnRemove(CombatActionOption::getNothingFor))
                  .loadsAfter(Item.class, Condition.class, RootInteraction.class))
               .loadsBefore(BalanceAsset.class))
            .build()
      );
      NPCPlugin.get()
         .registerCoreComponentType("CombatActionEvaluator", BuilderSensorCombatActionEvaluator::new)
         .registerCoreComponentType("CombatTargets", BuilderCombatTargetCollector::new)
         .registerCoreComponentType("HasHostileTargetMemory", BuilderSensorHasHostileTargetMemory::new)
         .registerCoreComponentType("CombatAbility", BuilderActionCombatAbility::new)
         .registerCoreComponentType("AddToHostileTargetMemory", BuilderActionAddToTargetMemory::new);
      this.targetMemoryComponentType = this.getEntityStoreRegistry().registerComponent(TargetMemory.class, () -> {
         throw new UnsupportedOperationException("Not implemented");
      });
      this.combatActionEvaluatorComponentType = this.getEntityStoreRegistry().registerComponent(CombatActionEvaluator.class, () -> {
         throw new UnsupportedOperationException("Not implemented");
      });
      this.combatConstructionDataComponentType = this.getEntityStoreRegistry()
         .registerComponent(CombatActionEvaluatorSystems.CombatConstructionData.class, CombatActionEvaluatorSystems.CombatConstructionData::new);
      this.damageMemoryComponentType = this.getEntityStoreRegistry().registerComponent(DamageMemory.class, DamageMemory::new);
      this.getEntityStoreRegistry().registerSystem(new TargetMemorySystems.Ticking(this.targetMemoryComponentType));
      this.getEntityStoreRegistry()
         .registerSystem(
            new CombatActionEvaluatorSystems.EvaluatorTick(
               this.combatActionEvaluatorComponentType, this.targetMemoryComponentType, this.damageMemoryComponentType
            )
         );
      this.getEntityStoreRegistry().registerSystem(new DamageMemorySystems.CollectDamage(this.damageMemoryComponentType));
      this.getEntityStoreRegistry().registerSystem(new CombatActionEvaluatorSystems.OnAdded(this.combatConstructionDataComponentType));
      Condition.CODEC.register("RecentSustainedDamage", RecentSustainedDamageCondition.class, RecentSustainedDamageCondition.CODEC);
      Condition.CODEC.register("TotalSustainedDamage", TotalSustainedDamageCondition.class, TotalSustainedDamageCondition.CODEC);
      Condition.CODEC.register("KnownTargetCount", TargetMemoryCountCondition.class, TargetMemoryCountCondition.CODEC);
   }

   class="kw">public ComponentType<EntityStore, TargetMemory> getTargetMemoryComponentType() {
      class="kw">return this.targetMemoryComponentType;
   }

   class="kw">public ComponentType<EntityStore, CombatActionEvaluator> getCombatActionEvaluatorComponentType() {
      class="kw">return this.combatActionEvaluatorComponentType;
   }

   class="kw">public ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> getCombatConstructionDataComponentType() {
      class="kw">return this.combatConstructionDataComponentType;
   }

   class="kw">public ComponentType<EntityStore, DamageMemory> getDamageMemoryComponentType() {
      class="kw">return this.damageMemoryComponentType;
   }
}