DeployablesUtils class

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

Файл: com/hypixel/hytale/builtin/deployables/DeployablesUtils.java

Поля (23)

МодификаторыТипИмя
AudioComponent var10
float var10
UIComponentList var11
int var12
HitboxCollisionConfig var13
EntityStatMap var15
DeployableComponent var16
TransformComponent var17
HeadRotation var18
long var19
Map var2
PlayAnimation var4
DeployableConfig.StatConfig var5
Player var5
int var6
Holder var7
EntityStatValue var7
Model var7
Vector3d var8
EntityStatType var8
PlayAnimation var8
Model var9
StaticModifier var9

Методы (13)

МодификаторыВозвратСигнатура
if if(var12 != -1)
if if(var19 > 0L)
if if(var2 != null)
if if(var7 != null)
if if(var8 != null)
if if(var10 == Float.MAX_VALUE)
if if(var2 != 0 && var5 != null)
if if(var3 != 0)
static void playAnimationvoid playAnimation(@Nonnull Store<EntityStore> var0, int var1, @Nonnull Ref<EntityStore> var2, @Nonnull DeployableConfig var3, @Nonnull AnimationSlot var4, @Nullable String var5, @Nonnull String var6)
static void playSoundEventsAtEntityvoid playSoundEventsAtEntity(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, int var2, int var3, @Nonnull Vector3d var4)
static void populateStatsvoid populateStats(@Nonnull DeployableConfig var0, @Nonnull EntityStatMap var1)
abstract populateStats populateStats(var2, var15)
static void stopAnimationvoid stopAnimation(@Nonnull Store<EntityStore> var0, int var1, @Nonnull Ref<EntityStore> var2, @Nonnull AnimationSlot var3)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.deployables.component.DeployableComponent;
class="kw">import com.hypixel.hytale.builtin.deployables.component.DeployableOwnerComponent;
class="kw">import com.hypixel.hytale.builtin.deployables.config.DeployableConfig;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.AnimationSlot;
class="kw">import com.hypixel.hytale.protocol.SoundCategory;
class="kw">import com.hypixel.hytale.protocol.packets.entities.PlayAnimation;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.modules.entity.DespawnComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.AudioComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.BoundingBox;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Invulnerable;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentModel;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.hitboxcollision.HitboxCollision;
class="kw">import com.hypixel.hytale.server.core.modules.entity.hitboxcollision.HitboxCollisionConfig;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatValue;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.modifier.Modifier;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.modifier.StaticModifier;
class="kw">import com.hypixel.hytale.server.core.modules.entityui.UIComponentList;
class="kw">import com.hypixel.hytale.server.core.modules.time.TimeResource;
class="kw">import com.hypixel.hytale.server.core.universe.world.PlayerUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.SoundUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.time.Duration;
class="kw">import java.util.Map;
class="kw">import java.util.UUID;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class DeployablesUtils {
   @Nonnull
   class="kw">private class="kw">static class="kw">final String DEPLOYABLE_MAX_STAT_MODIFIER = "DEPLOYABLE_MAX";

   class="kw">public DeployablesUtils() {
   }

   @Nonnull
   class="kw">public class="kw">static Ref<EntityStore> spawnDeployable(
      @Nonnull CommandBuffer<EntityStore> var0,
      @Nonnull Store<EntityStore> var1,
      @Nonnull DeployableConfig var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull Vector3d var4,
      @Nonnull Rotation3f var5,
      @Nonnull String var6
   ) {
      Holder var7 = EntityStore.REGISTRY.newHolder();
      Vector3d var8 = new Vector3d(var4.x, var4.y, var4.z);
      Model var9 = var2.getModel();
      AudioComponent var10 = new AudioComponent();
      if (var2.getAmbientSoundEventIndex() != 0) {
         var10.addSound(var2.getAmbientSoundEventIndex());
      }

      var7.addComponent(DeployableComponent.getComponentType(), new DeployableComponent());
      var7.addComponent(TransformComponent.getComponentType(), new TransformComponent());
      var7.addComponent(HeadRotation.getComponentType(), new HeadRotation(Rotation3f.IDENTITY));
      var7.addComponent(UUIDComponent.getComponentType(), new UUIDComponent(UUID.randomUUID()));
      var7.addComponent(EntityStatMap.getComponentType(), new EntityStatMap());
      var7.addComponent(ModelComponent.getComponentType(), new ModelComponent(var9));
      var7.addComponent(PersistentModel.getComponentType(), new PersistentModel(var9.toReference()));
      var7.addComponent(BoundingBox.getComponentType(), new BoundingBox(var9.getBoundingBox()));
      var7.addComponent(AudioComponent.getComponentType(), var10);
      var7.addComponent(NetworkId.getComponentType(), new NetworkId(var1.getExternalData().takeNextNetworkId()));
      var7.ensureComponent(DeployableComponent.getComponentType());
      var7.ensureComponent(EntityModule.get().getVisibleComponentType());
      var7.ensureComponent(EntityStore.REGISTRY.getNonSerializedComponentType());
      UIComponentList var11 = var7.ensureAndGetComponent(UIComponentList.getComponentType());
      var11.update();
      if (var2.getInvulnerable()) {
         var7.ensureComponent(Invulnerable.getComponentType());
      }

      int var12 = var2.getHitboxCollisionConfigIndex();
      if (var12 != -1) {
         HitboxCollisionConfig var13 = HitboxCollisionConfig.getAssetMap().getAsset(var12);
         var7.addComponent(HitboxCollision.getComponentType(), new HitboxCollision(var13));
      }

      long var19 = var2.getLiveDurationInMillis();
      if (var19 > 0L) {
         var7.addComponent(
            DespawnComponent.getComponentType(), new DespawnComponent(var1.getResource(TimeResource.getResourceType()).getNow().plus(Duration.ofMillis(var19)))
         );
      }

      EntityStatMap var15 = var7.ensureAndGetComponent(EntityStatMap.getComponentType());
      var15.update();
      populateStats(var2, var15);
      DeployableComponent var16 = var7.ensureAndGetComponent(DeployableComponent.getComponentType());
      var16.init(var3, var1, var2, var1.getResource(TimeResource.getResourceType()).getNow(), var6);
      TransformComponent var17 = var7.ensureAndGetComponent(TransformComponent.getComponentType());
      var17.setRotation(var5);
      var17.setPosition(new Vector3d(var8));
      HeadRotation var18 = var7.ensureAndGetComponent(HeadRotation.getComponentType());
      var18.setRotation(var5);
      var0.ensureComponent(var3, DeployableOwnerComponent.getComponentType());
      class="kw">return var0.addEntity(var7, AddReason.SPAWN);
   }

   class="kw">static void populateStats(@Nonnull DeployableConfig var0, @Nonnull EntityStatMap var1) {
      Map var2 = var0.getStatValues();
      if (var2 != null) {
         for (Entry var4 : var2.entrySet()) {
            DeployableConfig.StatConfig var5 = var4.getValue();
            int var6 = EntityStatType.getAssetMap().getIndex(var4.getKey());
            EntityStatValue var7 = var1.get(var6);
            if (var7 != null) {
               EntityStatType var8 = EntityStatType.getAssetMap().getAsset(var6);
               if (var8 != null) {
                  StaticModifier var9 = new StaticModifier(Modifier.ModifierTarget.MAX, StaticModifier.CalculationType.ADDITIVE, var5.getMax() - var8.getMax());
                  var1.putModifier(var6, "DEPLOYABLE_MAX", var9);
                  float var10 = var5.getInitial();
                  if (var10 == Float.MAX_VALUE) {
                     var1.maximizeStatValue(var6);
                  } else {
                     var1.setStatValue(var6, var10);
                  }
               }
            }
         }
      }
   }

   class="kw">public class="kw">static void playAnimation(
      @Nonnull Store<EntityStore> var0,
      int var1,
      @Nonnull Ref<EntityStore> var2,
      @Nonnull DeployableConfig var3,
      @Nonnull AnimationSlot var4,
      @Nullable String var5,
      @Nonnull String var6
   ) {
      Model var7 = var3.getModel();
      if (var4 == AnimationSlot.Action || var7 == null || var7.getAnimationSetMap().containsKey(var6)) {
         PlayAnimation var8 = new PlayAnimation(var1, var5, var6, var4);
         PlayerUtil.forEachPlayerThatCanSeeEntity(var2, (var1x, var2x, var3x) -> var2x.getPacketHandler().write(var8), var0);
      }
   }

   class="kw">public class="kw">static void stopAnimation(@Nonnull Store<EntityStore> var0, int var1, @Nonnull Ref<EntityStore> var2, @Nonnull AnimationSlot var3) {
      PlayAnimation var4 = new PlayAnimation(var1, null, null, var3);
      PlayerUtil.forEachPlayerThatCanSeeEntity(var2, (var1x, var2x, var3x) -> var2x.getPacketHandler().write(var4), var0);
   }

   class="kw">public class="kw">static void playSoundEventsAtEntity(
      @Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, int var2, int var3, @Nonnull Vector3d var4
   ) {
      Player var5 = var1.getComponent(var0, Player.getComponentType());
      if (var2 != 0 && var5 != null) {
         SoundUtil.playSoundEvent2d(var0, var2, SoundCategory.SFX, var1);
      }

      if (var3 != 0) {
         SoundUtil.playSoundEvent3d(var3, SoundCategory.SFX, var4, var1);
      }
   }
}