AssignNetworkIdToProps class

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

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

extends: HolderSystem<EntityStore>

Поля (3)

МодификаторыТипИмя
private final ComponentType<EntityStore, NetworkId> networkIdComponentType
private final ComponentType<EntityStore, PropComponent> propComponentType
private final Query<EntityStore> query

Методы (3)

МодификаторыВозвратСигнатура
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
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)

Исходный код

Показать/скрыть
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);
         }
      }
   }
}