TickingSystem class

Пакет: com.hypixel.hytale.builtin.adventure.objectives.markers.objectivelocation

Файл: com/hypixel/hytale/builtin/adventure/objectives/markers/objectivelocation/ObjectiveLocationMarkerSystems.java

extends: EntityTickingSystem<EntityStore>

Поля (50)

МодификаторыТипИмя
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, ObjectiveLocationMarker> objectiveLocationMarkerComponentType
private final ComponentType<EntityStore, PlayerRef> playerRefComponentType
private final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> playerSpatialComponent
private final Query<EntityStore> query
return
return
private final ComponentType<EntityStore, TransformComponent> transformComponentType
private final ComponentType<EntityStore, UUIDComponent> uuidComponentType
Objective var10
UUIDComponent var11
PlayerRef var11
UUID var12
ObjectiveLocationMarkerAsset var12
UUID var12
HashSet var13
World var13
PlayerRef[] var14
Objective var14
int var15
PlayerRef var18
UUIDComponent var19
ObjectiveDataStore var2
TransformComponent var20
WeatherTracker var21
SpatialResource var22
List var23
Set var24
Set var25
String var26
World var4
HytaleLogger var4
int var4
Iterator var5
ObjectiveLocationMarker var6
TrackOrUpdateObjective var6
var6
Universe var6
TransformComponent var7
SpatialResource var7
ObjectivePlugin var7
UUID var7
Ref var8
HytaleLogger var8
PlayerRef var8
var8
String var8
Vector3d var9
ObjectiveDataStore var9
private final ComponentType<EntityStore, WeatherTracker> weatherTrackerComponentType

Методы (29)

МодификаторыВозвратСигнатура
for for(Ref var17 : var23)
for for(ObjectiveLocationTriggerCondition var11 : var2.triggerConditions)
for for(int var10 = 0; var10 < var1; var10++)
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var10 == null)
if if(var18 != null)
if if(var19 != null)
if if(var20 != null)
if if(var2.triggerConditions != null && var2.triggerConditions.length > 0)
if if(var12 == null)
if if(var14 == null)
if if(var0.length != 0)
if if(var6 == null)
if if(var16 instanceof UseEntityObjectiveTask)
if if(var8 != null)
if if(var0.environmentIndexes == null)
if if(var6 instanceof UseEntityObjectiveTask var7)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
private static boolean isPlayerInSpecificEnvironmentprivate static boolean isPlayerInSpecificEnvironment(@Nonnull ObjectiveLocationMarker var0, @Nonnull WeatherTracker var1, @Nonnull TransformComponent var2, @Nonnull ComponentAccessor<EntityStore> var3)
private void setupMarkerprivate void setupMarker(@Nonnull Store<EntityStore> var1, @Nonnull ObjectiveLocationMarker var2, @Nonnull Ref<EntityStore> var3, @Nonnull Vector3d var4, @Nonnull UUID var5, @Nonnull CommandBuffer<EntityStore> var6)
public void tickpublic void tick(float var1, int var2, @Nonnull Store<EntityStore> var3)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
private static void untrackEntityObjectiveForPlayerprivate static void untrackEntityObjectiveForPlayer(@Nonnull ObjectiveLocationMarker var0, @Nonnull UUID var1)
abstract untrackEntityObjectiveForPlayer untrackEntityObjectiveForPlayer(var1, var7)
private static void updateIncomingPlayersprivate static void updateIncomingPlayers(@Nonnull PlayerRef[] var0, int var1, @Nonnull ObjectiveLocationMarker var2, @Nonnull Set<UUID> var3, @Nonnull Set<UUID> var4, @Nonnull String var5)
abstract updateIncomingPlayers updateIncomingPlayers(var14, var15, var6, var24, var25, var26)
private static void updateOutgoingPlayersprivate static void updateOutgoingPlayers(@Nonnull Set<UUID> var0, @Nonnull ObjectiveLocationMarker var1, @Nullable Set<UUID> var2, @Nonnull String var3)
abstract updateOutgoingPlayers updateOutgoingPlayers(var13, var6, var25, var26)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.adventure.objectives.Objective;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.ObjectiveDataStore;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.ObjectivePlugin;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.config.ObjectiveLocationMarkerAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.config.triggercondition.ObjectiveLocationTriggerCondition;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.task.ObjectiveTask;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.task.UseEntityObjectiveTask;
class="kw">import com.hypixel.hytale.builtin.weather.components.WeatherTracker;
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.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.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
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.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
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.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.packets.assets.TrackOrUpdateObjective;
class="kw">import com.hypixel.hytale.protocol.packets.assets.UntrackObjective;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.system.PlayerSpatialSystem;
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.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.Arrays;
class="kw">import java.util.HashSet;
class="kw">import java.util.Iterator;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

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

   class="kw">public class="kw">static class EnsureNetworkSendableSystem class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NetworkId> networkIdComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public EnsureNetworkSendableSystem(@Nonnull ComponentType<EntityStore, ObjectiveLocationMarker> var1, @Nonnull ComponentType<EntityStore, NetworkId> var2) {
         this.networkIdComponentType = var2;
         this.query = Query.and(var1, Query.not(var2));
      }

      @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 InitSystem class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ObjectiveLocationMarker> objectiveLocationMarkerComponent;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PrefabCopyableComponent> prefabCopyableComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public InitSystem(
         @Nonnull ComponentType<EntityStore, ObjectiveLocationMarker> var1,
         @Nonnull ComponentType<EntityStore, ModelComponent> var2,
         @Nonnull ComponentType<EntityStore, TransformComponent> var3,
         @Nonnull ComponentType<EntityStore, PrefabCopyableComponent> var4
      ) {
         this.objectiveLocationMarkerComponent = var1;
         this.modelComponentType = var2;
         this.transformComponentType = var3;
         this.prefabCopyableComponentType = var4;
         this.query = Query.and(var1, var2, var3);
      }

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

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         ObjectiveLocationMarker var5 = var3.getComponent(var1, this.objectiveLocationMarkerComponent);
         assert var5 != null;
         ObjectiveLocationMarkerAsset var6 = ObjectiveLocationMarkerAsset.getAssetMap().getAsset(var5.objectiveLocationMarkerId);
         if (var6 == null) {
            ObjectivePlugin.get()
               .getLogger()
               .at(Level.WARNING)
               .log("Failed to find ObjectiveLocationMarker '%s'. Entity removed!", var5.objectiveLocationMarkerId);
            var4.removeEntity(var1, RemoveReason.REMOVE);
         } else {
            if (var5.activeObjectiveUUID != null) {
               Objective var7 = ObjectivePlugin.get().getObjectiveDataStore().loadObjective(var5.activeObjectiveUUID, var3);
               if (var7 == null) {
                  ObjectivePlugin.get().getLogger().at(Level.WARNING).log("Failed to load Objective with UUID '%s'. Entity removed!", var5.activeObjectiveUUID);
                  var4.removeEntity(var1, RemoveReason.REMOVE);
                  class="kw">return;
               }

               var5.setActiveObjective(var7);
               var5.setUntrackPacket(new UntrackObjective(var5.activeObjectiveUUID));
            }

            TransformComponent var11 = var3.getComponent(var1, this.transformComponentType);
            assert var11 != null;
            Rotation3f var8 = var11.getRotation();
            var5.updateLocationMarkerValues(var6, var8.yaw(), var3);
            ModelComponent var9 = var3.getComponent(var1, this.modelComponentType);
            assert var9 != null;
            Model var10 = var9.getModel();
            var4.putComponent(
               var1,
               this.modelComponentType,
               new ModelComponent(
                  new Model(
                     var10.getModelAssetId(),
                     var10.getScale(),
                     var10.getRandomAttachmentIds(),
                     var10.getAttachments(),
                     var5.getArea().getBoxForEntryArea(),
                     var10.getModel(),
                     var10.getTexture(),
                     var10.getGradientSet(),
                     var10.getGradientId(),
                     var10.getEyeHeight(),
                     var10.getCrouchOffset(),
                     var10.getSittingOffset(),
                     var10.getSleepingOffset(),
                     var10.getAnimationSetMap(),
                     var10.getCamera(),
                     var10.getLight(),
                     var10.getParticles(),
                     var10.getTrails(),
                     var10.getPhysicsValues(),
                     var10.getDetailBoxes(),
                     var10.getPhobia(),
                     var10.getPhobiaModelAssetId()
                  )
               )
            );
            var4.ensureComponent(var1, this.prefabCopyableComponentType);
         }
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         ObjectiveLocationMarker var5 = var3.getComponent(var1, this.objectiveLocationMarkerComponent);
         assert var5 != null;
         Objective var6 = var5.getActiveObjective();
         if (var6 != null) {
            ObjectiveDataStore var7 = ObjectivePlugin.get().getObjectiveDataStore();
            var7.saveToDisk(var5.activeObjectiveUUID.toString(), var6);
            var7.unloadObjective(var5.activeObjectiveUUID);
            if (var2 == RemoveReason.REMOVE) {
               var4.run(var1x -> ObjectivePlugin.get().cancelObjective(var5.activeObjectiveUUID, var1x));
            }
         }
      }
   }

   class="kw">public class="kw">static class TickingSystem class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ObjectiveLocationMarker> objectiveLocationMarkerComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PlayerRef> playerRefComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, WeatherTracker> weatherTrackerComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, UUIDComponent> uuidComponentType;
      @Nonnull
      class="kw">private class="kw">final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> playerSpatialComponent;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;

      class="kw">public TickingSystem(
         @Nonnull ComponentType<EntityStore, ObjectiveLocationMarker> var1,
         @Nonnull ComponentType<EntityStore, PlayerRef> var2,
         @Nonnull ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> var3,
         @Nonnull ComponentType<EntityStore, TransformComponent> var4,
         @Nonnull ComponentType<EntityStore, WeatherTracker> var5,
         @Nonnull ComponentType<EntityStore, UUIDComponent> var6
      ) {
         this.objectiveLocationMarkerComponentType = var1;
         this.playerRefComponentType = var2;
         this.transformComponentType = var4;
         this.weatherTrackerComponentType = var5;
         this.uuidComponentType = var6;
         this.playerSpatialComponent = var3;
         this.query = Archetype.of(var1, var4, var6);
         this.dependencies = Set.of(new SystemDependency<>(Order.AFTER, PlayerSpatialSystem.class, OrderPriority.CLOSEST));
      }

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

      @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 false;
      }

      @Override
      class="kw">public void tick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
         World var4 = var3.getExternalData().getWorld();
         if (var4.getWorldConfig().isObjectiveMarkersEnabled()) {
            var3.tick(this, var1, var2);
         }
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         ObjectiveLocationMarker var6 = var3.getComponent(var2, this.objectiveLocationMarkerComponentType);
         assert var6 != null;
         TransformComponent var7 = var3.getComponent(var2, this.transformComponentType);
         assert var7 != null;
         Ref var8 = var3.getReferenceTo(var2);
         Vector3d var9 = var7.getPosition();
         Objective var10 = var6.getActiveObjective();
         if (var10 == null) {
            UUIDComponent var11 = var3.getComponent(var2, this.uuidComponentType);
            assert var11 != null;
            UUID var12 = var11.getUuid();
            this.setupMarker(var4, var6, var8, var9, var12, var5);
         } else if (!var10.isCompleted()) {
            SpatialResource var22 = var4.getResource(this.playerSpatialComponent);
            List var23 = SpatialResource.getThreadLocalReferenceList();
            var6.area.getPlayersInExitArea(var22, var23, var9);
            HashSet var13 = new HashSet<>(var23.size());
            PlayerRef[] var14 = new PlayerRef[var23.size()];
            int var15 = 0;

            for (Ref var17 : var23) {
               PlayerRef var18 = var5.getComponent(var17, this.playerRefComponentType);
               if (var18 != null) {
                  UUIDComponent var19 = var5.getComponent(var17, this.uuidComponentType);
                  if (var19 != null) {
                     TransformComponent var20 = var5.getComponent(var17, this.transformComponentType);
                     if (var20 != null) {
                        WeatherTracker var21 = var5.getComponent(var17, this.weatherTrackerComponentType);
                        if (var21 != null && isPlayerInSpecificEnvironment(var6, var21, var20, var5)) {
                           var13.add(var19.getUuid());
                           if (var6.area.isPlayerInEntryArea(var20.getPosition(), var9)) {
                              var14[var15++] = var18;
                           }
                        }
                     }
                  }
               }
            }

            Set var24 = var10.getPlayerUUIDs();
            Set var25 = var10.getActivePlayerUUIDs();
            String var26 = var10.getObjectiveId();
            updateIncomingPlayers(var14, var15, var6, var24, var25, var26);
            updateOutgoingPlayers(var13, var6, var25, var26);
         } else {
            var5.removeEntity(var8, RemoveReason.REMOVE);
         }
      }

      class="kw">private void setupMarker(
         @Nonnull Store<EntityStore> var1,
         @Nonnull ObjectiveLocationMarker var2,
         @Nonnull Ref<EntityStore> var3,
         @Nonnull Vector3d var4,
         @Nonnull UUID var5,
         @Nonnull CommandBuffer<EntityStore> var6
      ) {
         if (var2.triggerConditions != null && var2.triggerConditions.length > 0) {
            SpatialResource var7 = var1.getResource(this.playerSpatialComponent);
            if (!var2.area.hasPlayerInExitArea(var7, this.playerRefComponentType, var4, var6)) {
               class="kw">return;
            }

            for (ObjectiveLocationTriggerCondition var11 : var2.triggerConditions) {
               if (!var11.isConditionMet(var6, var3, var2)) {
                  class="kw">return;
               }
            }
         }

         ObjectiveLocationMarkerAsset var12 = ObjectiveLocationMarkerAsset.getAssetMap().getAsset(var2.objectiveLocationMarkerId);
         if (var12 == null) {
            ObjectivePlugin.get()
               .getLogger()
               .at(Level.WARNING)
               .log("Could not find ObjectiveLocationMarker '%s'. Entity removed!", var2.objectiveLocationMarkerId);
            var6.removeEntity(var3, RemoveReason.REMOVE);
         } else {
            World var13 = var1.getExternalData().getWorld();
            Objective var14 = var12.getObjectiveTypeSetup().setup(new HashSet<>(), var13.getWorldConfig().getUuid(), var5, var1);
            if (var14 == null) {
               ObjectivePlugin.get()
                  .getLogger()
                  .at(Level.WARNING)
                  .log("Objective failed to setup for ObjectiveLocationMarker '%s'. Entity removed!", var2.objectiveLocationMarkerId);
               var6.removeEntity(var3, RemoveReason.REMOVE);
            } else {
               var2.setActiveObjective(var14);
               var2.activeObjectiveUUID = var14.getObjectiveUUID();
               var2.setUntrackPacket(new UntrackObjective(var2.activeObjectiveUUID));
            }
         }
      }

      class="kw">private class="kw">static void updateIncomingPlayers(
         @Nonnull PlayerRef[] var0, int var1, @Nonnull ObjectiveLocationMarker var2, @Nonnull Set<UUID> var3, @Nonnull Set<UUID> var4, @Nonnull String var5
      ) {
         if (var0.length != 0) {
            TrackOrUpdateObjective var6 = null;
            ObjectivePlugin var7 = ObjectivePlugin.get();
            HytaleLogger var8 = var7.getLogger();
            ObjectiveDataStore var9 = var7.getObjectiveDataStore();

            for (int var10 = 0; var10 < var1; var10++) {
               PlayerRef var11 = var0[var10];
               UUID var12 = var11.getUuid();
               if (var4.add(var12)) {
                  var3.add(var12);
                  var8.at(Level.FINE)
                     .log(
                        "Player '%s' joined the objective area for marker '%s', current objective '%s' with UUID '%s'",
                        var11.getUsername(),
                        var2.objectiveLocationMarkerId,
                        var5,
                        var2.activeObjectiveUUID
                     );
                  if (var6 == null) {
                     var6 = new TrackOrUpdateObjective(var2.getActiveObjective().toPacket());
                  }

                  var11.getPacketHandler().writeNoCache(var6);

                  for (ObjectiveTask var16 : var2.getActiveObjective().getCurrentTasks()) {
                     if (var16 class="kw">instanceof UseEntityObjectiveTask) {
                        var9.addEntityTaskForPlayer(var12, ((UseEntityObjectiveTask)var16).getAsset().getTaskId(), var2.activeObjectiveUUID);
                     }
                  }
               }
            }
         }
      }

      class="kw">private class="kw">static void updateOutgoingPlayers(@Nonnull Set<UUID> var0, @Nonnull ObjectiveLocationMarker var1, @Nullable Set<UUID> var2, @Nonnull String var3) {
         if (var2 != null && !var2.isEmpty()) {
            HytaleLogger var4 = ObjectivePlugin.get().getLogger();
            Iterator var5 = var2.iterator();
            Universe var6 = Universe.get();

            while (var5.hasNext()) {
               UUID var7 = var5.next();
               if (!var0.contains(var7)) {
                  var5.remove();
                  untrackEntityObjectiveForPlayer(var1, var7);
                  PlayerRef var8 = var6.getPlayer(var7);
                  var4.at(Level.FINE)
                     .log(
                        "Player '%s' left the objective area for marker '%s', current objective '%s' with UUID '%s'",
                        var8 == null ? var7 : var8.getUsername(),
                        var1.objectiveLocationMarkerId,
                        var3,
                        var1.activeObjectiveUUID
                     );
                  if (var8 != null) {
                     var8.getPacketHandler().write(var1.getUntrackPacket());
                  }
               }
            }
         }
      }

      class="kw">private class="kw">static boolean isPlayerInSpecificEnvironment(
         @Nonnull ObjectiveLocationMarker var0, @Nonnull WeatherTracker var1, @Nonnull TransformComponent var2, @Nonnull ComponentAccessor<EntityStore> var3
      ) {
         if (var0.environmentIndexes == null) {
            class="kw">return true;
         }

         var1.updateEnvironment(var2, var3);
         int var4 = var1.getEnvironmentId();
         class="kw">return Arrays.binarySearch(var0.environmentIndexes, var4) >= 0;
      }

      class="kw">private class="kw">static void untrackEntityObjectiveForPlayer(@Nonnull ObjectiveLocationMarker var0, @Nonnull UUID var1) {
         ObjectiveDataStore var2 = ObjectivePlugin.get().getObjectiveDataStore();

         for (ObjectiveTask var6 : var0.getActiveObjective().getCurrentTasks()) {
            if (var6 class="kw">instanceof UseEntityObjectiveTask var7) {
               String var8 = var7.getAsset().getTaskId();
               var2.removeEntityTaskForPlayer(var0.activeObjectiveUUID, var8, var1);
            }
         }
      }
   }
}