TrackerUpdate class
Пакет: com.hypixel.hytale.builtin.mounts
Файл: com/hypixel/hytale/builtin/mounts/MountSystems.java
extends: EntityTickingSystem<EntityStore>
Поля (23)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final ComponentType<EntityStore, MountedComponent> |
mountedComponentType |
|
private final Query<EntityStore> |
query |
|
|
return |
|
|
return |
|
|
return |
|
Vector3d |
var10 |
|
Rotation3f |
var11 |
|
BlockMount |
var12 |
|
NetworkId |
var13 |
|
int |
var15 |
|
Ref |
var3 |
|
Ref |
var4 |
|
Vector3fc |
var5 |
|
EntityTrackerSystems.Visible |
var6 |
|
MountedUpdate |
var6 |
|
|
var6 |
|
|
var6 |
|
MountedComponent |
var7 |
|
BlockMountComponent |
var7 |
|
Ref |
var8 |
|
BlockMountPoint |
var8 |
|
BlockType |
var9 |
|
private final ComponentType<EntityStore, EntityTrackerSystems.Visible> |
visibleComponentType |
Методы (12)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
UnsupportedOperationExceptionthrow new UnsupportedOperationException("Couldn't create MountedUpdate packet for MountedComponent") |
|
public SystemGroup<EntityStore> |
getGrouppublic SystemGroup<EntityStore> getGroup() |
|
public Query<EntityStore> |
getQuerypublic Query<EntityStore> getQuery() |
|
|
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) |
|
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) |
Исходный код
Показать/скрыть
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);
}
}
}
}