StorageTarget enum

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

Файл: com/hypixel/hytale/server/npc/corecomponents/items/ActionPickUpItem.java

implements: Supplier<String>

Поля (1)

МодификаторыТипИмя
private final String description

Методы (2)

МодификаторыВозвратСигнатура
abstract Destroy Destroy("Destroy the item")
public String getpublic String get()

Исходный код

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

class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.inventory.InventoryComponent;
class="kw">import com.hypixel.hytale.server.core.inventory.container.CombinedItemContainer;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.item.ItemComponent;
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.ActionWithDelay;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.items.builders.BuilderActionPickUpItem;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import com.hypixel.hytale.server.npc.util.InventoryHelper;
class="kw">import java.util.List;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class ActionPickUpItem class="kw">extends ActionWithDelay {
   class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, ItemComponent> ITEM_COMPONENT_TYPE = ItemComponent.getComponentType();
   class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
   class="kw">protected class="kw">final double range;
   class="kw">protected class="kw">final ActionPickUpItem.StorageTarget storageTarget;
   class="kw">protected class="kw">final boolean hoover;
   @Nullable
   class="kw">protected class="kw">final List<String> hooverItems;

   class="kw">public ActionPickUpItem(@Nonnull BuilderActionPickUpItem var1, @Nonnull BuilderSupport var2) {
      super(var1, var2);
      this.range = var1.getRange(var2);
      this.storageTarget = var1.getStorageTarget(var2);
      this.hoover = var1.getHoover();
      String[] var3 = var1.getItems(var2);
      this.hooverItems = var3 != null ? List.of(var3) : null;
   }

   @Override
   class="kw">public void registerWithSupport(@Nonnull ExecutionSupport var1) {
      var1.getPositionCache().requireDroppedItemDistance(this.range);
   }

   @Override
   class="kw">public boolean canExecute(
      @Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
   ) {
      if (!super.canExecute(var1, var2, var3, var4, var6)) {
         class="kw">return false;
      }

      if (!this.hoover) {
         if (var3 == null || !var3.hasPosition()) {
            class="kw">return false;
         }

         Ref var7 = var3.getPositionProvider().getTarget();
         if (var7 == null) {
            class="kw">return false;
         }

         ItemComponent var8 = var6.getComponent(var7, ITEM_COMPONENT_TYPE);
         if (var8 == null || !var8.canPickUp()) {
            class="kw">return false;
         }

         TransformComponent var9 = var6.getComponent(var1, TRANSFORM_COMPONENT_TYPE);
         assert var9 != null;
         Vector3d var10 = var9.getPosition();
         TransformComponent var11 = var6.getComponent(var7, TRANSFORM_COMPONENT_TYPE);
         assert var11 != null;
         Vector3d var12 = var11.getPosition();
         double var13 = var10.distanceSquared(var12);
         if (var13 > this.range * this.range) {
            class="kw">return false;
         }
      } else if (var2.getPositionCache().getDroppedItemList().isEmpty()) {
         class="kw">return false;
      }

      class="kw">return !this.isDelaying();
   }

   @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);
      Ref var7 = null;
      if (!this.hoover) {
         if (var3 != null) {
            var7 = var3.getPositionProvider().getTarget();
         }
      } else {
         var7 = var2.getPositionCache().getClosestDroppedItemInRange(var1, 0.0, this.range, ActionPickUpItem::filterItem, this, var6);
      }

      this.prepareDelay();
      this.startDelay(var2.getEntitySupport());
      if (var7 == null) {
         class="kw">return false;
      }

      class="kw">switch (this.storageTarget) {
         case Hotbar:
            CombinedItemContainer var9 = InventoryComponent.getCombined(var6, var1, InventoryComponent.HOTBAR_FIRST);
            ItemComponent.addToItemContainer(var6, var7, var9);
            break;
         case Inventory:
            CombinedItemContainer var8 = InventoryComponent.getCombined(var6, var1, InventoryComponent.STORAGE_FIRST);
            ItemComponent.addToItemContainer(var6, var7, var8);
            break;
         case Destroy:
            var6.removeEntity(var7, RemoveReason.REMOVE);
      }

      class="kw">return true;
   }

   class="kw">protected boolean filterItem(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2) {
      if (!var1.isValid()) {
         class="kw">return false;
      }

      if (this.hooverItems == null) {
         class="kw">return true;
      }

      ItemComponent var3 = var2.getComponent(var1, ITEM_COMPONENT_TYPE);
      assert var3 != null;
      class="kw">return InventoryHelper.matchesItem(this.hooverItems, var3.getItemStack());
   }

   class="kw">public enum StorageTarget class="kw">implements Supplier<String> {
      Hotbar("Prioritise hotbar"),
      Inventory("Prioritise inventory"),
      Destroy("Destroy the item");

      class="kw">private class="kw">final String description;

      StorageTarget(String nullxx) {
         this.description = nullxx;
      }

      class="kw">public String get() {
         class="kw">return this.description;
      }
   }
}