HyCodeYourTale
classpublicabstractPriority 3

KillObjectiveTask

com.hypixel.hytale.builtin.adventure.npcobjectives.task.KillObjectiveTask

extends CountObjectiveTask

implements KillTask

1

Methods

1

Public Methods

0

Fields

2

Constructors

Constants

BuilderCodec<KillObjectiveTask>CODEC= BuilderCodec.abstractBuilder(KillObjectiveTask.class, CountObjectiveTask.CODEC).build()

Constructors

protected
KillObjectiveTask()
public
KillObjectiveTask(KillObjectiveTaskAsset asset, int taskSetIndex, int taskIndex)

Methods

Public Methods (1)

public
KillObjectiveTaskAsset getAsset()
@Nonnull

Inheritance

Parent
Current
Interface
Child

Use mouse wheel to zoom, drag to pan. Click nodes to navigate.

Related Classes

Source Code

package com.hypixel.hytale.builtin.adventure.npcobjectives.task;

import com.hypixel.hytale.builtin.adventure.npcobjectives.assets.KillObjectiveTaskAsset;
import com.hypixel.hytale.builtin.adventure.objectives.Objective;
import com.hypixel.hytale.builtin.adventure.objectives.task.CountObjectiveTask;
import com.hypixel.hytale.builtin.tagset.TagSetPlugin;
import com.hypixel.hytale.builtin.tagset.config.NPCGroup;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.entity.Entity;
import com.hypixel.hytale.server.core.entity.EntityUtils;
import com.hypixel.hytale.server.core.entity.UUIDComponent;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.damage.Damage;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.npc.entities.NPCEntity;
import javax.annotation.Nonnull;

public abstract class KillObjectiveTask extends CountObjectiveTask implements KillTask {
   public static final BuilderCodec<KillObjectiveTask> CODEC = BuilderCodec.abstractBuilder(KillObjectiveTask.class, CountObjectiveTask.CODEC).build();

   public KillObjectiveTask(@Nonnull KillObjectiveTaskAsset asset, int taskSetIndex, int taskIndex) {
      super(asset, taskSetIndex, taskIndex);
   }

   protected KillObjectiveTask() {
   }

   @Nonnull
   public KillObjectiveTaskAsset getAsset() {
      return (KillObjectiveTaskAsset)super.getAsset();
   }

   @Override
   public void checkKilledEntity(
      @Nonnull Store<EntityStore> store, @Nonnull Ref<EntityStore> npcRef, @Nonnull Objective objective, @Nonnull NPCEntity npc, @Nonnull Damage info
   ) {
      String key = this.getAsset().getNpcGroupId();
      int index = NPCGroup.getAssetMap().getIndex(key);
      if (index == -2147483648) {
         throw new IllegalArgumentException("Unknown npc group! " + key);
      } else if (TagSetPlugin.get(NPCGroup.class).tagInSet(index, npc.getNPCTypeIndex())) {
         if (info.getSource() instanceof Damage.EntitySource) {
            Ref<EntityStore> attackerEntityRef = ((Damage.EntitySource)info.getSource()).getRef();
            Entity attackerEntity = EntityUtils.getEntity(attackerEntityRef, attackerEntityRef.getStore());
            if (attackerEntity instanceof Player) {
               UUIDComponent attackerUuidComponent = store.getComponent(attackerEntityRef, UUIDComponent.getComponentType());

               assert attackerUuidComponent != null;

               if (objective.getActivePlayerUUIDs().contains(attackerUuidComponent.getUuid())) {
                  this.increaseTaskCompletion(store, npcRef, 1, objective);
               }
            }
         }
      }
   }
}