MountSystems class

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

Файл: com/hypixel/hytale/builtin/mounts/MountSystems.java

Поля (107)

МодификаторыТипИмя
private static final Duration HIT_RESET_TIME
private static final int NUMBER_OF_HITS
private final ComponentType<ChunkStore, BlockMountComponent> blockMountComponentType
continue
private final ComponentType<EntityStore, DeathComponent> deathComponentType
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> deps
private final ComponentType<EntityStore, Interactable> interactableComponentType
private final ComponentType<EntityStore, MinecartComponent> minecartComponentType
private final ComponentType<EntityStore, MinecartComponent> minecartComponentType
private final ComponentType<EntityStore, MountedByComponent> mountedByComponentType
private final ComponentType<EntityStore, MountedByComponent> mountedByComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MountedComponent> mountedComponentType
private final ComponentType<EntityStore, MovementStatesComponent> movementStatesComponentType
private final ComponentType<EntityStore, NetworkId> networkIdComponentType
private final ComponentType<EntityStore, NetworkId> networkIdComponentType
private final ComponentType<EntityStore, Player> playerComponentType
private final ComponentType<EntityStore, PlayerInput> playerInputComponentType
private final ComponentType<EntityStore, PlayerInput> playerInputComponentType
private final ComponentType<EntityStore, PrefabCopyableComponent> prefabCopyableComponentType
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
return
return
return
private final ComponentType<EntityStore, Teleport> teleportComponentType
private final ResourceType<EntityStore, TimeResource> timeResourceType
private final ComponentType<EntityStore, TransformComponent> transformComponentType
private final ComponentType<EntityStore, TransformComponent> transformComponentType
List var10
Vector3d var10
Holder var11
Rotation3f var11
PlayerInput.InputUpdate var12
TransformComponent var12
BlockMount var12
Ref var13
Player var13
NetworkId var13
Vector3d var14
int var15
MovementStates var19
MovementStatesComponent var20
TransformComponent var22
TransformComponent var23
MovementStates var24
TransformComponent var25
MovementStatesComponent var26
Ref var3
Ref var3
MountedByComponent var4
Ref var4
Store var5
MountedComponent var5
PlayerInput var5
BlockMountComponent var5
MountedComponent var5
MountedByComponent var5
Ref var5
EntityTrackerSystems.Visible var5
Vector3fc var5
BlockMountComponent var6
MountedComponent var6
MinecartComponent var6
PlayerInput var6
ObjectArrayList var6
MountedByComponent var6
EntityTrackerSystems.Visible var6
MountedUpdate var6
var6
var6
Ref var7
PlayerInput var7
Instant var7
Ref var7
World var7
MountedComponent var7
BlockMountComponent var7
MountController var8
boolean var8
var8
NetworkId var8
ObjectListIterator var8
MountedComponent var8
Ref var8
BlockMountPoint var8
Ref var9
int var9
Ref var9
Ref var9
BlockType var9
private final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType
private final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType

Методы (94)

МодификаторыВозвратСигнатура
public EnsureMinecartComponentspublic EnsureMinecartComponents(@Nonnull ComponentType<EntityStore, MinecartComponent> var1, @Nonnull ComponentType<EntityStore, Interactable> var2, @Nonnull ComponentType<EntityStore, NetworkId> var3, @Nonnull ComponentType<EntityStore, PrefabCopyableComponent> var4)
public HandleMountInputpublic HandleMountInput(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, PlayerInput> var2, @Nonnull ComponentType<EntityStore, MovementStatesComponent> var3, @Nonnull ComponentType<EntityStore, TransformComponent> var4)
public MountedEntityDeathpublic MountedEntityDeath(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, DeathComponent> var2)
public MountedEntitySpectatingpublic MountedEntitySpectating(@Nonnull ComponentType<EntityStore, MountedComponent> var1)
public OnMinecartHitpublic OnMinecartHit(@Nonnull ComponentType<EntityStore, MinecartComponent> var1, @Nonnull ComponentType<EntityStore, TransformComponent> var2, @Nonnull ComponentType<EntityStore, Player> var3, @Nonnull ResourceType<EntityStore, TimeResource> var4)
public PlayerMountpublic PlayerMount(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, PlayerInput> var2, @Nonnull ComponentType<EntityStore, NetworkId> var3)
public RemoveBlockSeatpublic RemoveBlockSeat(@Nonnull ComponentType<ChunkStore, BlockMountComponent> var1, @Nonnull ComponentType<EntityStore, MountedComponent> var2)
public RemoveMountedpublic RemoveMounted(@Nonnull ComponentType<EntityStore, MountedComponent> var1)
public RemoveMountedBypublic RemoveMountedBy(@Nonnull ComponentType<EntityStore, MountedByComponent> var1, @Nonnull ComponentType<EntityStore, MountedComponent> var2)
public RemoveMountedHolderpublic RemoveMountedHolder(@Nonnull ComponentType<EntityStore, MountedComponent> var1)
public TeleportMountedEntitypublic TeleportMountedEntity(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, Teleport> var2)
public TrackedMountedpublic TrackedMounted(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, MountedByComponent> var2)
public TrackerRemovepublic TrackerRemove(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, EntityTrackerSystems.Visible> var2)
public TrackerUpdatepublic TrackerUpdate(@Nonnull ComponentType<EntityStore, EntityTrackerSystems.Visible> var1, @Nonnull ComponentType<EntityStore, MountedComponent> var2)
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException("Couldn't create MountedUpdate packet for MountedComponent")
public ComponentType<EntityStore, DeathComponent> componentTypepublic ComponentType<EntityStore, DeathComponent> componentType()
public ComponentType<EntityStore, Spectating> componentTypepublic ComponentType<EntityStore, Spectating> componentType()
public ComponentType<EntityStore, MountedComponent> componentTypepublic ComponentType<EntityStore, MountedComponent> componentType()
public ComponentType<EntityStore, Teleport> componentTypepublic ComponentType<EntityStore, Teleport> componentType()
public ComponentType<EntityStore, MountedComponent> componentTypepublic ComponentType<EntityStore, MountedComponent> componentType()
public ComponentType<EntityStore, MountedComponent> componentTypepublic ComponentType<EntityStore, MountedComponent> componentType()
abstract for for(int var11 = 0; var11 < var10.size()
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<ChunkStore> getQuerypublic Query<ChunkStore> 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 void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
static void handleMountedRemovalvoid handleMountedRemoval(@Nonnull Ref<EntityStore> var0, @Nonnull CommandBuffer<EntityStore> var1, @Nonnull MountedComponent var2)
if if(var4 != null)
if if(var6 != null)
if if(var12 instanceof PlayerInput.SetRiderMovementStates var21)
if if(var20 != null)
if if(var12 instanceof PlayerInput.RelativeMovement var14)
if if(var22 != null)
if if(var23 != null)
if if(var26 != null)
if if(var25 != null)
if if(var13 != null)
if if(var11 != null)
if if(var8 != null)
if if(var8 != null)
if if(var13 == null)
if if(var4 == null)
if if(var7 == null)
if if(var8 == null)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull DeathComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull Spectating var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull DeathComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull Spectating var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, @Nullable DeathComponent var2, @Nonnull DeathComponent var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, @Nullable Spectating var2, @Nonnull Spectating var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, @Nullable MountedComponent var2, @Nonnull MountedComponent var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, @Nullable Teleport var2, @Nonnull Teleport var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, MountedComponent var2, @Nonnull MountedComponent var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, MountedComponent var2, @Nonnull MountedComponent 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 onEntityAddedpublic void onEntityAdded(@Nonnull Ref<ChunkStore> var1, @Nonnull AddReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4)
public void onEntityAddedpublic void onEntityAdded(@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onEntityAddedpublic void onEntityAdded(@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onEntityRemovepublic void onEntityRemove(@Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4)
public void onEntityRemovepublic void onEntityRemove(@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onEntityRemovepublic void onEntityRemove(@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
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 Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var1, @Nonnull MountedComponent var2)
abstract queueUpdatesFor queueUpdatesFor(var8, var6.visibleTo, var7)
abstract queueUpdatesFor queueUpdatesFor(var8, var6.newlyVisibleTo, var7)
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)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.mounts.minecart.MinecartComponent;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.Archetype;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
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.ResourceType;
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.OrderPriority;
class="kw">import com.hypixel.hytale.component.dependency.RootDependency;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.dependency.SystemGroupDependency;
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.RefSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.AnimationSlot;
class="kw">import com.hypixel.hytale.protocol.BlockMount;
class="kw">import com.hypixel.hytale.protocol.ComponentUpdateType;
class="kw">import com.hypixel.hytale.protocol.GameMode;
class="kw">import com.hypixel.hytale.protocol.MountController;
class="kw">import com.hypixel.hytale.protocol.MountedUpdate;
class="kw">import com.hypixel.hytale.protocol.MovementStates;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.mountpoints.BlockMountPoint;
class="kw">import com.hypixel.hytale.server.core.entity.AnimationUtils;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.movement.MovementStatesComponent;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Interactable;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.RespondToHit;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Spectating;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.Damage;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageEventSystem;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.item.ItemComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.PlayerInput;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.PlayerSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.TeleportSystems;
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.modules.time.TimeResource;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabCopyableComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectListIterator;
class="kw">import java.time.Duration;
class="kw">import java.time.Instant;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;
class="kw">import org.joml.Vector3fc;

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

   class="kw">private class="kw">static void handleMountedRemoval(@Nonnull Ref<EntityStore> var0, @Nonnull CommandBuffer<EntityStore> var1, @Nonnull MountedComponent var2) {
      Ref var3 = var2.getMountedToEntity();
      if (var3 != null && var3.isValid()) {
         MountedByComponent var4 = var1.getComponent(var3, MountedByComponent.getComponentType());
         if (var4 != null) {
            var4.removePassenger(var0);
         }
      }

      Ref var7 = var2.getMountedToBlock();
      if (var7 != null && var7.isValid()) {
         Store var5 = var7.getStore();
         BlockMountComponent var6 = var5.getComponent(var7, BlockMountComponent.getComponentType());
         if (var6 != null) {
            var6.removeSeatedEntity(var0);
            if (var6.isDead()) {
               var5.removeComponent(var7, BlockMountComponent.getComponentType());
            }
         }
      }
   }

   class="kw">public class="kw">static class EnsureMinecartComponents class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MinecartComponent> minecartComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Interactable> interactableComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NetworkId> networkIdComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PrefabCopyableComponent> prefabCopyableComponentType;

      class="kw">public EnsureMinecartComponents(
         @Nonnull ComponentType<EntityStore, MinecartComponent> var1,
         @Nonnull ComponentType<EntityStore, Interactable> var2,
         @Nonnull ComponentType<EntityStore, NetworkId> var3,
         @Nonnull ComponentType<EntityStore, PrefabCopyableComponent> var4
      ) {
         this.minecartComponentType = var1;
         this.interactableComponentType = var2;
         this.networkIdComponentType = var3;
         this.prefabCopyableComponentType = var4;
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         var1.ensureComponent(this.interactableComponentType);
         var1.putComponent(this.networkIdComponentType, new NetworkId(var3.getExternalData().takeNextNetworkId()));
         var1.ensureComponent(this.prefabCopyableComponentType);
         var1.ensureComponent(RespondToHit.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.minecartComponentType;
      }

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

   class="kw">public class="kw">static class HandleMountInput class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PlayerInput> playerInputComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MovementStatesComponent> movementStatesComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> deps = Set.of(new SystemDependency<>(Order.BEFORE, PlayerSystems.ProcessPlayerInput.class));

      class="kw">public HandleMountInput(
         @Nonnull ComponentType<EntityStore, MountedComponent> var1,
         @Nonnull ComponentType<EntityStore, PlayerInput> var2,
         @Nonnull ComponentType<EntityStore, MovementStatesComponent> var3,
         @Nonnull ComponentType<EntityStore, TransformComponent> var4
      ) {
         this.mountedComponentType = var1;
         this.playerInputComponentType = var2;
         this.movementStatesComponentType = var3;
         this.transformComponentType = var4;
         this.query = Query.and(var1, var2);
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         MountedComponent var6 = var3.getComponent(var2, this.mountedComponentType);
         assert var6 != null;
         PlayerInput var7 = var3.getComponent(var2, this.playerInputComponentType);
         assert var7 != null;
         MountController var8 = var6.getControllerType();
         Ref var9 = var8 == MountController.BlockMount ? var3.getReferenceTo(var2) : var6.getMountedToEntity();
         if (var9 != null && var9.isValid()) {
            List var10 = var7.getMovementUpdateQueue();

            for (int var11 = 0; var11 < var10.size(); var11++) {
               PlayerInput.InputUpdate var12 = var10.get(var11);
               if (var8 == MountController.BlockMount && (var12 class="kw">instanceof PlayerInput.RelativeMovement || var12 class="kw">instanceof PlayerInput.AbsoluteMovement)) {
                  if (var6.getMountedDurationMs() < 600L) {
                     class="kw">continue;
                  }

                  Ref var13 = var3.getReferenceTo(var2);
                  var5.tryRemoveComponent(var13, this.mountedComponentType);
               }

               if (var12 class="kw">instanceof PlayerInput.SetRiderMovementStates var21) {
                  MovementStates var19 = var21.movementStates();
                  MovementStatesComponent var20 = var3.getComponent(var2, this.movementStatesComponentType);
                  if (var20 != null) {
                     var20.setMovementStates(var19);
                  }
               } else if (!(var12 class="kw">instanceof PlayerInput.WishMovement)) {
                  if (var12 class="kw">instanceof PlayerInput.RelativeMovement var14) {
                     var14.apply(var5, var3, var2);
                     TransformComponent var22 = var5.getComponent(var9, this.transformComponentType);
                     if (var22 != null) {
                        var22.getPosition().add(var14.getX(), var14.getY(), var14.getZ());
                     }
                  } else if (var12 class="kw">instanceof PlayerInput.AbsoluteMovement var15) {
                     var15.apply(var5, var3, var2);
                     TransformComponent var23 = var5.getComponent(var9, this.transformComponentType);
                     if (var23 != null) {
                        var23.getPosition().set(var15.getX(), var15.getY(), var15.getZ());
                     }
                  } else if (var12 class="kw">instanceof PlayerInput.SetMovementStates var16) {
                     MovementStates var24 = var16.movementStates();
                     MovementStatesComponent var26 = var5.getComponent(var9, this.movementStatesComponentType);
                     if (var26 != null) {
                        var26.setMovementStates(var24);
                     }
                  } else if (var12 class="kw">instanceof PlayerInput.SetBody var17) {
                     var17.apply(var5, var3, var2);
                     TransformComponent var25 = var5.getComponent(var9, this.transformComponentType);
                     if (var25 != null) {
                        var25.getRotation().set(var17.direction().pitch, var17.direction().yaw, var17.direction().roll);
                     }
                  } else if (var12 class="kw">instanceof PlayerInput.SetHead var18) {
                     var18.apply(var5, var3, var2);
                  }
               }
            }

            var10.clear();
         }
      }

      @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.deps;
      }
   }

   class="kw">public class="kw">static class MountedEntityDeath class="kw">extends RefChangeSystem<EntityStore, DeathComponent> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, DeathComponent> deathComponentType;

      class="kw">public MountedEntityDeath(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, DeathComponent> var2) {
         this.mountedComponentType = var1;
         this.deathComponentType = var2;
      }

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

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

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

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

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

   class="kw">public class="kw">static class MountedEntitySpectating class="kw">extends RefChangeSystem<EntityStore, Spectating> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;

      class="kw">public MountedEntitySpectating(@Nonnull ComponentType<EntityStore, MountedComponent> var1) {
         this.mountedComponentType = var1;
      }

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

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

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

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

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

   class="kw">public class="kw">static class OnMinecartHit class="kw">extends DamageEventSystem {
      class="kw">private class="kw">static class="kw">final Duration HIT_RESET_TIME = Duration.ofSeconds(10L);
      class="kw">private class="kw">static class="kw">final int NUMBER_OF_HITS = 3;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MinecartComponent> minecartComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Player> playerComponentType;
      @Nonnull
      class="kw">private class="kw">final ResourceType<EntityStore, TimeResource> timeResourceType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(
         new SystemGroupDependency<>(Order.AFTER, DamageModule.get().getGatherDamageGroup()),
         new SystemGroupDependency<>(Order.AFTER, DamageModule.get().getFilterDamageGroup()),
         new SystemGroupDependency<>(Order.BEFORE, DamageModule.get().getInspectDamageGroup())
      );

      class="kw">public OnMinecartHit(
         @Nonnull ComponentType<EntityStore, MinecartComponent> var1,
         @Nonnull ComponentType<EntityStore, TransformComponent> var2,
         @Nonnull ComponentType<EntityStore, Player> var3,
         @Nonnull ResourceType<EntityStore, TimeResource> var4
      ) {
         this.minecartComponentType = var1;
         this.transformComponentType = var2;
         this.playerComponentType = var3;
         this.timeResourceType = var4;
         this.query = Archetype.of(var1, var2);
      }

      @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 void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         MinecartComponent var6 = var2.getComponent(var1, this.minecartComponentType);
         assert var6 != null;
         Instant var7 = var4.getResource(this.timeResourceType).getNow();
         if (var6.getLastHit() != null && var7.isAfter(var6.getLastHit().plus(HIT_RESET_TIME))) {
            var6.setLastHit(null);
            var6.setNumberOfHits(0);
         }

         if (!(var5.getAmount() <= 0.0F)) {
            var6.setNumberOfHits(var6.getNumberOfHits() + 1);
            var6.setLastHit(var7);
            if (var6.getNumberOfHits() == 3) {
               var4.removeEntity(var2.getReferenceTo(var1), RemoveReason.REMOVE);
               boolean var8 = true;
               if (var5.getSource() class="kw">instanceof Damage.EntitySource var9) {
                  Player var13 = var9.getRef().isValid() ? var4.getComponent(var9.getRef(), this.playerComponentType) : null;
                  if (var13 != null) {
                     var8 = var13.getGameMode() != GameMode.Creative;
                  }
               }

               if (var8 && var6.getSourceItem() != null) {
                  TransformComponent var12 = var2.getComponent(var1, this.transformComponentType);
                  assert var12 != null;
                  Vector3d var14 = var12.getPosition().add(new Vector3d(0.0, 0.5, 0.0));
                  Holder var11 = ItemComponent.generateItemDrop(var4, new ItemStack(var6.getSourceItem()), var14, var12.getRotation(), 0.0F, 1.0F, 0.0F);
                  if (var11 != null) {
                     var4.addEntity(var11, AddReason.SPAWN);
                  }
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class PlayerMount class="kw">extends RefChangeSystem<EntityStore, MountedComponent> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PlayerInput> playerInputComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NetworkId> networkIdComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public PlayerMount(
         @Nonnull ComponentType<EntityStore, MountedComponent> var1,
         @Nonnull ComponentType<EntityStore, PlayerInput> var2,
         @Nonnull ComponentType<EntityStore, NetworkId> var3
      ) {
         this.mountedComponentType = var1;
         this.playerInputComponentType = var2;
         this.networkIdComponentType = var3;
         this.query = var2;
      }

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

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

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         MountedComponent var5 = var4.getComponent(var1, this.mountedComponentType);
         assert var5 != null;
         PlayerInput var6 = var4.getComponent(var1, this.playerInputComponentType);
         assert var6 != null;
         Ref var7 = var5.getMountedToEntity();
         if (var7 != null && var7.isValid()) {
            NetworkId var8 = var4.getComponent(var7, this.networkIdComponentType);
            if (var8 != null) {
               int var9 = var8.getId();
               var6.setMountId(var9);
               var6.getMovementUpdateQueue().clear();
            }
         }
      }

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

      class="kw">public void onComponentRemoved(
         @Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         PlayerInput var5 = var4.getComponent(var1, this.playerInputComponentType);
         assert var5 != null;
         var5.setMountId(0);
      }
   }

   class="kw">public class="kw">static class RemoveBlockSeat class="kw">extends RefSystem<ChunkStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<ChunkStore, BlockMountComponent> blockMountComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;

      class="kw">public RemoveBlockSeat(@Nonnull ComponentType<ChunkStore, BlockMountComponent> var1, @Nonnull ComponentType<EntityStore, MountedComponent> var2) {
         this.blockMountComponentType = var1;
         this.mountedComponentType = var2;
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<ChunkStore> var1, @Nonnull AddReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
      ) {
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<ChunkStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<ChunkStore> var3, @Nonnull CommandBuffer<ChunkStore> var4
      ) {
         BlockMountComponent var5 = var4.getComponent(var1, this.blockMountComponentType);
         assert var5 != null;
         ObjectArrayList var6 = new ObjectArrayList(var5.getSeatedEntities());
         World var7 = var1.getStore().getExternalData().getWorld();
         ObjectListIterator var8 = var6.iterator();

         while (var8.hasNext()) {
            Ref var9 = (Ref<EntityStore>)var8.next();
            var5.removeSeatedEntity(var9);
            var7.execute(() -> {
               if (var9.isValid()) {
                  var9.getStore().tryRemoveComponent(var9, this.mountedComponentType);
               }
            });
         }
      }

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

   class="kw">public class="kw">static class RemoveMounted class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;

      class="kw">public RemoveMounted(@Nonnull ComponentType<EntityStore, MountedComponent> var1) {
         this.mountedComponentType = var1;
      }

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

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         MountedComponent var5 = var4.getComponent(var1, this.mountedComponentType);
         MountSystems.handleMountedRemoval(var1, var4, var5);
      }

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

   class="kw">public class="kw">static class RemoveMountedBy class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedByComponent> mountedByComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;

      class="kw">public RemoveMountedBy(@Nonnull ComponentType<EntityStore, MountedByComponent> var1, @Nonnull ComponentType<EntityStore, MountedComponent> var2) {
         this.mountedByComponentType = var1;
         this.mountedComponentType = var2;
      }

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

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         MountedByComponent var5 = var4.getComponent(var1, this.mountedByComponentType);
         assert var5 != null;

         for (Ref var7 : var5.getPassengers()) {
            if (var7.isValid()) {
               MountedComponent var8 = var4.getComponent(var7, this.mountedComponentType);
               if (var8 != null) {
                  Ref var9 = var8.getMountedToEntity();
                  if (var9 != null && (!var9.isValid() || var9.equals(var1))) {
                     var4.removeComponent(var7, this.mountedComponentType);
                  }
               }
            }
         }
      }

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

   class="kw">public class="kw">static class RemoveMountedHolder class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;

      class="kw">public RemoveMountedHolder(@Nonnull ComponentType<EntityStore, MountedComponent> var1) {
         this.mountedComponentType = var1;
      }

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

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

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

   class="kw">public class="kw">static class TeleportMountedEntity class="kw">extends RefChangeSystem<EntityStore, Teleport> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Teleport> teleportComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(
         new SystemDependency<>(Order.BEFORE, TeleportSystems.MoveSystem.class, OrderPriority.CLOSEST),
         new SystemDependency<>(Order.BEFORE, TeleportSystems.PlayerMoveSystem.class, OrderPriority.CLOSEST)
      );

      class="kw">public TeleportMountedEntity(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, Teleport> var2) {
         this.mountedComponentType = var1;
         this.teleportComponentType = var2;
      }

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

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

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

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

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

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

   class="kw">public class="kw">static class TrackedMounted class="kw">extends RefChangeSystem<EntityStore, MountedComponent> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedByComponent> mountedByComponentType;

      class="kw">public TrackedMounted(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, MountedByComponent> var2) {
         this.mountedComponentType = var1;
         this.mountedByComponentType = var2;
      }

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

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

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         Ref var5 = var2.getMountedToEntity();
         if (var5 != null && var5.isValid()) {
            MountedByComponent var6 = var4.ensureAndGetComponent(var5, this.mountedByComponentType);
            var6.addPassenger(var1);
         }
      }

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

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

   class="kw">public class="kw">static class TrackerRemove class="kw">extends RefChangeSystem<EntityStore, MountedComponent> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType;

      class="kw">public TrackerRemove(@Nonnull ComponentType<EntityStore, MountedComponent> var1, @Nonnull ComponentType<EntityStore, EntityTrackerSystems.Visible> var2) {
         this.mountedComponentType = var1;
         this.visibleComponentType = var2;
      }

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

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

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

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

      class="kw">public void onComponentRemoved(
         @Nonnull Ref<EntityStore> var1, @Nonnull MountedComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         if (var2.getControllerType() == MountController.BlockMount) {
            AnimationUtils.stopAnimation(var1, AnimationSlot.Movement, true, var4);
         }

         EntityTrackerSystems.Visible var5 = var3.getComponent(var1, this.visibleComponentType);
         assert var5 != null;

         for (EntityTrackerSystems.EntityViewer var7 : var5.visibleTo.values()) {
            var7.queueRemove(var1, ComponentUpdateType.Mounted);
         }
      }
   }

   class="kw">public class="kw">static class TrackerUpdate class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, MountedComponent> mountedComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public TrackerUpdate(@Nonnull ComponentType<EntityStore, EntityTrackerSystems.Visible> var1, @Nonnull ComponentType<EntityStore, MountedComponent> var2) {
         this.visibleComponentType = var1;
         this.mountedComponentType = var2;
         this.query = Query.and(var1, var2);
      }

      @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;
         MountedComponent var7 = var3.getComponent(var2, this.mountedComponentType);
         assert var7 != null;
         Ref var8 = var3.getReferenceTo(var2);
         if (var7.consumeNetworkOutdated()) {
            queueUpdatesFor(var8, var6.visibleTo, var7);
         } else if (!var6.newlyVisibleTo.isEmpty()) {
            queueUpdatesFor(var8, var6.newlyVisibleTo, var7);
         }
      }

      class="kw">private class="kw">static void queueUpdatesFor(
         @Nonnull Ref<EntityStore> var0, @Nonnull Map<Ref<EntityStore>, EntityTrackerSystems.EntityViewer> var1, @Nonnull MountedComponent var2
      ) {
         Ref var3 = var2.getMountedToEntity();
         Ref var4 = var2.getMountedToBlock();
         Vector3fc var5 = var2.getAttachmentOffset();
         MountedUpdate var6;
         if (var3 != null && var3.isValid()) {
            NetworkId var13 = var0.getStore().getComponent(var3, NetworkId.getComponentType());
            if (var13 == null) {
               class="kw">return;
            }

            int var15 = var13.getId();
            var6 = new MountedUpdate(var15, var5, var2.getControllerType(), null);
         } else {
            if (var4 == null) {
               throw new UnsupportedOperationException("Couldn't create MountedUpdate packet for MountedComponent");
            }

            BlockMountComponent var7 = var4.getStore().getComponent(var4, BlockMountComponent.getComponentType());
            if (var7 == null) {
               class="kw">return;
            }

            BlockMountPoint var8 = var7.getSeatBlockBySeatedEntity(var0);
            if (var8 == null) {
               class="kw">return;
            }

            BlockType var9 = var7.getExpectedBlockType();
            Vector3d var10 = var8.computeWorldSpacePosition(var7.getBlockPos());
            Rotation3f var11 = var8.computeRotationEuler(var7.getExpectedRotation());
            BlockMount var12 = new BlockMount(
               var7.getType(),
               new Vector3f((float)var10.x, (float)var10.y, (float)var10.z),
               new Vector3f(var11.x, var11.y, var11.z),
               BlockType.getAssetMap().getIndex(var9.getId())
            );
            var6 = new MountedUpdate(0, var5, var2.getControllerType(), var12);
         }

         for (EntityTrackerSystems.EntityViewer var16 : var1.values()) {
            var16.queueUpdate(var0, var6);
         }
      }
   }
}