ModelSystems class

Пакет: com.hypixel.hytale.server.core.modules.entity.system

Файл: com/hypixel/hytale/server/core/modules/entity/system/ModelSystems.java

Поля (77)

МодификаторыТипИмя
public static final Set<Dependency<EntityStore>> DEPENDENCIES
private final ComponentType<EntityStore, ActiveAnimationComponent> activeAnimationComponentType
private final ComponentType<EntityStore, BoundingBox> boundingBoxComponentType
private final ComponentType<EntityStore, BoundingBox> boundingBoxComponentType
private final ComponentType<EntityStore, BoundingBox> boundingBoxComponentType
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, ModelRotateBoundingBoxComponent> modelRotateBoundingBoxComponentType
private final ComponentType<EntityStore, MovementStatesComponent> movementStatesComponentType
private final ComponentType<EntityStore, MovementStatesComponent> movementStatesComponentType
private final ComponentType<EntityStore, NetworkId> networkIdComponentType
private final ComponentType<EntityStore, PersistentModel> persistentModelComponentType
private final ComponentType<EntityStore, PersistentModel> persistentModelComponentType
private final ComponentType<EntityStore, Player> playerComponentType
private final ComponentType<EntityStore, Player> playerComponentType
private final ComponentType<EntityStore, PropComponent> propComponentType
private final ComponentType<EntityStore, PropComponent> propComponentType
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
private final ComponentType<EntityStore, ApplyRandomSkinPersistedComponent> randomSkinComponent
Rotation3f var10
Model var10
boolean var10
boolean var11
boolean var12
ModelComponent var13
Model var14
BoundingBox var15
MovementManager var2
ActiveAnimationsUpdate var3
Box var3
var3
PlayerSkin var4
ModelComponent var4
Player var4
PersistentModel var4
Model var5
DefaultAssetMap var5
Model var5
BoundingBox var5
BoundingBox var5
EntityTrackerSystems.Visible var6
PersistentModel var6
Box var6
String var6
ModelComponent var6
MovementStatesComponent var6
BoundingBox var6
MovementStatesComponent var6
ActiveAnimationComponent var7
BoundingBox var7
var7
ModelAsset var7
MovementStatesComponent var7
MovementStates var7
Ref var8
ModelRotateBoundingBoxComponent var8
ModelAsset var8
MovementStates var8
TransformComponent var9
Model var9
boolean var9
private final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType

Методы (71)

МодификаторыВозвратСигнатура
public AnimationEntityTrackerUpdatepublic AnimationEntityTrackerUpdate()
public ApplyRandomSkinpublic ApplyRandomSkin()
public AssignNetworkIdToPropspublic AssignNetworkIdToProps()
public EnsurePropsPrefabCopyablepublic EnsurePropsPrefabCopyable()
public ModelChangepublic ModelChange()
public ModelSpawnedpublic ModelSpawned()
public PlayerConnectpublic PlayerConnect()
public PlayerUpdateMovementManagerpublic PlayerUpdateMovementManager()
public SetRenderedModelpublic SetRenderedModel()
public UpdateBoundingBoxpublic UpdateBoundingBox()
public UpdateMovementStateBoundingBoxpublic UpdateMovementStateBoundingBox()
public ComponentType<EntityStore, ModelComponent> componentTypepublic ComponentType<EntityStore, ModelComponent> componentType()
public ComponentType<EntityStore, ModelComponent> componentTypepublic ComponentType<EntityStore, ModelComponent> componentType()
public ComponentType<EntityStore, ModelComponent> componentTypepublic ComponentType<EntityStore, ModelComponent> componentType()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var5 == null)
if if(var6 == null)
if if(var7 == null)
if if(var7 != null)
if if(var8 != null)
if if(var5 != null)
if if(var3 == null)
if if(var9 || var10 || var11 || var12)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, ModelComponent var2, @Nonnull ModelComponent var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, ModelComponent var2, @Nonnull ModelComponent var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, ModelComponent var2, @Nonnull ModelComponent var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
private static void queueUpdatesForprivate static void queueUpdatesFor(@Nonnull Ref<EntityStore> var0, @Nonnull ActiveAnimationComponent var1, @Nonnull Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var2)
abstract queueUpdatesFor queueUpdatesFor(var8, var7, var6.visibleTo)
abstract queueUpdatesFor queueUpdatesFor(var8, var7, var6.newlyVisibleTo)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
protected static void updateBoundingBoxprotected static void updateBoundingBox(@Nonnull Model var0, @Nonnull BoundingBox var1, @Nullable MovementStatesComponent var2)
protected static void updateBoundingBoxprotected static void updateBoundingBox(@Nonnull Model var0, @Nonnull BoundingBox var1, @Nullable MovementStates var2)
private static void updateMovementControllerprivate static void updateMovementController(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1)
abstract updateMovementController updateMovementController(var1, var4)
abstract updateMovementController updateMovementController(var1, var5)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.entity.system;

class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.common.util.RandomUtil;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
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.component.SystemGroup;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
class="kw">import com.hypixel.hytale.component.system.RefChangeSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.shape.Box;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.ActiveAnimationsUpdate;
class="kw">import com.hypixel.hytale.protocol.MovementStates;
class="kw">import com.hypixel.hytale.protocol.PlayerSkin;
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.cosmetics.CosmeticsModule;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.movement.MovementManager;
class="kw">import com.hypixel.hytale.server.core.entity.movement.MovementStatesComponent;
class="kw">import com.hypixel.hytale.server.core.entity.movement.MovementStatesSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ActiveAnimationComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.BoundingBox;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelRotateBoundingBoxComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentModel;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PropComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.ApplyRandomSkinPersistedComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.PlayerSkinComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabCopyableComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.Collections;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ModelSystems {
   @Nonnull
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();

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

   class="kw">public class="kw">static class AnimationEntityTrackerUpdate class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType = EntityTrackerSystems.Visible.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ActiveAnimationComponent> activeAnimationComponentType = ActiveAnimationComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.visibleComponentType, this.activeAnimationComponentType);

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return EntityTrackerSystems.QUEUE_UPDATE_GROUP;
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         EntityTrackerSystems.Visible var6 = var3.getComponent(var2, this.visibleComponentType);
         assert var6 != null;
         ActiveAnimationComponent var7 = var3.getComponent(var2, this.activeAnimationComponentType);
         assert var7 != null;
         Ref var8 = var3.getReferenceTo(var2);
         if (var7.consumeNetworkOutdated()) {
            queueUpdatesFor(var8, var7, var6.visibleTo);
         } else if (!var6.newlyVisibleTo.isEmpty()) {
            queueUpdatesFor(var8, var7, var6.newlyVisibleTo);
         }
      }

      class="kw">private class="kw">static void queueUpdatesFor(
         @Nonnull Ref<EntityStore> var0, @Nonnull ActiveAnimationComponent var1, @Nonnull Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var2
      ) {
         ActiveAnimationsUpdate var3 = new ActiveAnimationsUpdate((String[])var1.getActiveAnimations().clone());

         for (Entry var5 : var2.entrySet()) {
            var5.getValue().queueUpdate(var0, var3);
         }
      }
   }

   class="kw">public class="kw">static class ApplyRandomSkin class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ApplyRandomSkinPersistedComponent> randomSkinComponent = ApplyRandomSkinPersistedComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.randomSkinComponent, this.modelComponentType);

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         PlayerSkin var4 = CosmeticsModule.get().generateRandomSkin(RandomUtil.getSecureRandom());
         var1.putComponent(PlayerSkinComponent.getComponentType(), new PlayerSkinComponent(var4));
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }
   }

   class="kw">public class="kw">static class AssignNetworkIdToProps class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PropComponent> propComponentType = PropComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NetworkId> networkIdComponentType = NetworkId.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.propComponentType, Query.not(this.networkIdComponentType));

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         var1.addComponent(this.networkIdComponentType, new NetworkId(var3.getExternalData().takeNextNetworkId()));
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }
   }

   class="kw">public class="kw">static class EnsurePropsPrefabCopyable class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PropComponent> propComponentType = PropComponent.getComponentType();

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         var1.ensureComponent(PrefabCopyableComponent.getComponentType());
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.propComponentType;
      }
   }

   class="kw">public class="kw">static class ModelChange class="kw">extends RefChangeSystem<EntityStore, ModelComponent> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PersistentModel> persistentModelComponentType = PersistentModel.getComponentType();

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

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.persistentModelComponentType;
      }

      @Nonnull
      @Override
      class="kw">public ComponentType<EntityStore, ModelComponent> componentType() {
         class="kw">return this.modelComponentType;
      }

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
      }

      class="kw">public void onComponentSet(
         @Nonnull Ref<EntityStore> var1,
         ModelComponent var2,
         @Nonnull ModelComponent var3,
         @Nonnull Store<EntityStore> var4,
         @Nonnull CommandBuffer<EntityStore> var5
      ) {
         PersistentModel var6 = var4.getComponent(var1, this.persistentModelComponentType);
         assert var6 != null;
         var6.setModelReference(var3.getModel().toReference());
      }

      class="kw">public void onComponentRemoved(
         @Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         var4.removeComponent(var1, this.persistentModelComponentType);
      }
   }

   class="kw">public class="kw">static class ModelSpawned class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelRotateBoundingBoxComponent> modelRotateBoundingBoxComponentType = ModelRotateBoundingBoxComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, BoundingBox> boundingBoxComponentType = BoundingBox.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, ModelSystems.SetRenderedModel.class));

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         ModelComponent var4 = var1.getComponent(this.modelComponentType);
         assert var4 != null;
         Model var5 = var4.getModel();
         if (var5 == null) {
            ((HytaleLogger.Api)ModelSystems.LOGGER.atWarning()).log("Failed to set bounding box for entity as model is null");
         } else {
            Box var6 = var5.getBoundingBox();
            if (var6 == null) {
               ((HytaleLogger.Api)ModelSystems.LOGGER.atWarning())
                  .log("Failed to set bounding box for entity as model bounding box is null: %s", var5.getModel());
            } else {
               BoundingBox var7 = var1.getComponent(this.boundingBoxComponentType);
               if (var7 == null) {
                  var7 = new BoundingBox();
                  var1.addComponent(this.boundingBoxComponentType, var7);
               }

               var7.setBoundingBox(var6);
               var7.setBaseModelBox(var6);
               var7.setDetailBoxes(var5.getDetailBoxes());
               ModelRotateBoundingBoxComponent var8 = var1.getComponent(this.modelRotateBoundingBoxComponentType);
               TransformComponent var9 = var1.getComponent(TransformComponent.getComponentType());
               if (var9 != null && var8 != null && var8.isEnableRotation()) {
                  Rotation3f var10 = var9.getRotation();
                  var7.applyRotation(var10.pitch(), var10.yaw(), var10.roll());
               }
            }
         }
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.modelComponentType;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return this.dependencies;
      }
   }

   class="kw">public class="kw">static class PlayerConnect class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Player> playerComponentType = Player.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.playerComponentType, Query.not(this.modelComponentType));
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.BEFORE, ModelSystems.ModelSpawned.class));

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         Player var4 = var1.getComponent(this.playerComponentType);
         assert var4 != null;
         DefaultAssetMap var5 = ModelAsset.getAssetMap();
         String var6 = var4.getPlayerConfigData().getPreset();
         ModelAsset var7 = var6 != null ? var5.getAsset(var6) : null;
         if (var7 != null) {
            Model var10 = Model.createUnitScaleModel(var7);
            var1.addComponent(this.modelComponentType, new ModelComponent(var10));
         } else {
            ModelAsset var8 = var5.getAsset("Player");
            if (var8 != null) {
               Model var9 = Model.createUnitScaleModel(var8);
               var1.addComponent(this.modelComponentType, new ModelComponent(var9));
            }
         }
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return this.dependencies;
      }
   }

   class="kw">public class="kw">static class PlayerUpdateMovementManager class="kw">extends RefChangeSystem<EntityStore, ModelComponent> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Player> playerComponentType = Player.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.playerComponentType, MovementManager.getComponentType());
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, ModelSystems.UpdateBoundingBox.class));

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

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return this.dependencies;
      }

      @Nonnull
      @Override
      class="kw">public ComponentType<EntityStore, ModelComponent> componentType() {
         class="kw">return this.modelComponentType;
      }

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         updateMovementController(var1, var4);
      }

      class="kw">public void onComponentSet(
         @Nonnull Ref<EntityStore> var1,
         ModelComponent var2,
         @Nonnull ModelComponent var3,
         @Nonnull Store<EntityStore> var4,
         @Nonnull CommandBuffer<EntityStore> var5
      ) {
         updateMovementController(var1, var5);
      }

      class="kw">public void onComponentRemoved(
         @Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         updateMovementController(var1, var4);
      }

      class="kw">private class="kw">static void updateMovementController(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) {
         MovementManager var2 = var1.getComponent(var0, MovementManager.getComponentType());
         assert var2 != null;
         var2.resetDefaultsAndUpdate(var0, var1);
      }
   }

   class="kw">public class="kw">static class SetRenderedModel class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PersistentModel> persistentModelComponentType = PersistentModel.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.persistentModelComponentType, Query.not(this.modelComponentType));

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         PersistentModel var4 = var1.getComponent(this.persistentModelComponentType);
         assert var4 != null;
         Model var5 = var4.getModelReference().toModel();
         if (var5 != null) {
            ModelComponent var6 = new ModelComponent(var5);
            var1.putComponent(this.modelComponentType, var6);
         } else {
            ((HytaleLogger.Api)ModelSystems.LOGGER.atWarning()).log("Failed to load model for entity with PersistentModel: %s", var4.getModelReference());
         }
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }
   }

   class="kw">public class="kw">static class UpdateBoundingBox class="kw">extends RefChangeSystem<EntityStore, ModelComponent> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, BoundingBox> boundingBoxComponentType = BoundingBox.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MovementStatesComponent> movementStatesComponentType = MovementStatesComponent.getComponentType();

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

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.boundingBoxComponentType;
      }

      @Nonnull
      @Override
      class="kw">public ComponentType<EntityStore, ModelComponent> componentType() {
         class="kw">return this.modelComponentType;
      }

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         BoundingBox var5 = var4.getComponent(var1, this.boundingBoxComponentType);
         assert var5 != null;
         MovementStatesComponent var6 = var4.getComponent(var1, this.movementStatesComponentType);
         assert var6 != null;
         updateBoundingBox(var2.getModel(), var5, var6);
      }

      class="kw">public void onComponentSet(
         @Nonnull Ref<EntityStore> var1,
         ModelComponent var2,
         @Nonnull ModelComponent var3,
         @Nonnull Store<EntityStore> var4,
         @Nonnull CommandBuffer<EntityStore> var5
      ) {
         BoundingBox var6 = var5.getComponent(var1, this.boundingBoxComponentType);
         assert var6 != null;
         MovementStatesComponent var7 = var5.getComponent(var1, this.movementStatesComponentType);
         assert var7 != null;
         updateBoundingBox(var3.getModel(), var6, var7);
      }

      class="kw">public void onComponentRemoved(
         @Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         BoundingBox var5 = var4.getComponent(var1, this.boundingBoxComponentType);
         assert var5 != null;
         var5.setBoundingBox(new Box());
      }

      class="kw">protected class="kw">static void updateBoundingBox(@Nonnull Model var0, @Nonnull BoundingBox var1, @Nullable MovementStatesComponent var2) {
         updateBoundingBox(var0, var1, var2 != null ? var2.getMovementStates() : null);
      }

      class="kw">protected class="kw">static void updateBoundingBox(@Nonnull Model var0, @Nonnull BoundingBox var1, @Nullable MovementStates var2) {
         Box var3 = var0.getBoundingBox(var2);
         if (var3 == null) {
            var3 = new Box();
         }

         var1.setBoundingBox(var3);
         var1.setBaseModelBox(var3);
      }
   }

   class="kw">public class="kw">static class UpdateMovementStateBoundingBox class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">public class="kw">static class="kw">final Set<Dependency<EntityStore>> DEPENDENCIES = Collections.singleton(
         new SystemDependency<>(Order.BEFORE, MovementStatesSystems.TickingSystem.class)
      );
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MovementStatesComponent> movementStatesComponentType = MovementStatesComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, BoundingBox> boundingBoxComponentType = BoundingBox.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.movementStatesComponentType, this.boundingBoxComponentType, this.modelComponentType);

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

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return DEPENDENCIES;
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         MovementStatesComponent var6 = var3.getComponent(var2, this.movementStatesComponentType);
         assert var6 != null;
         MovementStates var7 = var6.getMovementStates();
         MovementStates var8 = var6.getSentMovementStates();
         boolean var9 = var7.crouching != var8.crouching || var7.forcedCrouching != var8.forcedCrouching;
         boolean var10 = var7.sliding != var8.sliding;
         boolean var11 = var7.sitting != var8.sitting;
         boolean var12 = var7.sleeping != var8.sleeping;
         if (var9 || var10 || var11 || var12) {
            ModelComponent var13 = var3.getComponent(var2, this.modelComponentType);
            assert var13 != null;
            Model var14 = var13.getModel();
            BoundingBox var15 = var3.getComponent(var2, this.boundingBoxComponentType);
            assert var15 != null;
            ModelSystems.UpdateBoundingBox.updateBoundingBox(var14, var15, var7);
         }
      }
   }
}