ActionModelAttachment class

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

Файл: com/hypixel/hytale/server/npc/corecomponents/audiovisual/ActionModelAttachment.java

extends: ActionBase

Поля (8)

МодификаторыТипИмя
Role var10
ModelComponent var4
NPCEntity var5
Model var6
var6
float var7
ModelAsset var8
Map var9

Методы (5)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Slot must be specified!")
if if(var10 != null)
static void setModelAttachmentvoid setModelAttachment(@Nonnull Ref<EntityStore> var0, @Nonnull String var1, @Nullable String var2, @Nonnull ComponentAccessor<EntityStore> var3)
abstract setModelAttachment setModelAttachment(var1, this.slot, this.attachment, var6)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
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.audiovisual.builders.BuilderActionModelAttachment;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.role.Role;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ActionModelAttachment class="kw">extends ActionBase {
   @Nonnull
   class="kw">protected class="kw">final String slot;
   @Nonnull
   class="kw">protected class="kw">final String attachment;

   class="kw">public ActionModelAttachment(@Nonnull BuilderActionModelAttachment var1, @Nonnull BuilderSupport var2) {
      super(var1);
      this.slot = var1.getSlot(var2);
      this.attachment = var1.getAttachment(var2);
   }

   @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);
      setModelAttachment(var1, this.slot, this.attachment, var6);
      class="kw">return true;
   }

   class="kw">private class="kw">static void setModelAttachment(
      @Nonnull Ref<EntityStore> var0, @Nonnull String var1, @Nullable String var2, @Nonnull ComponentAccessor<EntityStore> var3
   ) {
      if (var1.isEmpty()) {
         throw new IllegalArgumentException("Slot must be specified!");
      }

      ModelComponent var4 = var3.getComponent(var0, ModelComponent.getComponentType());
      assert var4 != null;
      NPCEntity var5 = var3.getComponent(var0, NPCEntity.getComponentType());
      assert var5 != null;
      Model var6 = var4.getModel();
      float var7 = var6.getScale();
      ModelAsset var8 = ModelAsset.getAssetMap().getAsset(var6.getModelAssetId());
      Map var9 = var6.getRandomAttachmentIds() != null ? new HashMap<>(var6.getRandomAttachmentIds()) : new HashMap<>();
      if (var2 != null && !var2.isEmpty()) {
         var9.put(var1, var2);
      } else {
         var9.remove(var1);
      }

      var6 = Model.createScaledModel(var8, var7, var9);
      var3.putComponent(var0, ModelComponent.getComponentType(), new ModelComponent(var6));
      Role var10 = var5.getRole();
      if (var10 != null) {
         var10.updateMotionControllers(var0, var6, var6.getBoundingBox(), var3);
      }
   }
}