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);
}
}
}