RemainingDistanceResolver interface

Пакет: com.hypixel.hytale.server.npc.movement.controllers

Файл: com/hypixel/hytale/server/npc/movement/controllers/RailPathRefreshResolver.java

Методы (1)

МодификаторыВозвратСигнатура
abstract double resolvedouble resolve(@Nonnull Vector3dc var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.movement.controllers;

class="kw">import java.util.function.BooleanSupplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;

class="kw">public class="kw">final class RailPathRefreshResolver {
   class="kw">private RailPathRefreshResolver() {
   }

   @Nonnull
   class="kw">public class="kw">static RailPathRefreshResolver.RefreshDecision resolve(
      @Nonnull RailPath var0,
      @Nonnull RailPath var1,
      @Nonnull Vector3dc var2,
      double var3,
      double var5,
      @Nonnull Vector3d var7,
      @Nonnull RailPathRefreshResolver.RemainingDistanceResolver var8,
      @Nonnull RailPathRefreshResolver.CandidateRailProbe var9,
      @Nonnull BooleanSupplier var10,
      @Nonnull BooleanSupplier var11
   ) {
      RailPath.SegmentCommitType var12 = var0.getActiveSegmentCommitType();
      Vector3dc var13 = var2;
      boolean var14 = false;
      if (var0.isOnCommittedSegment()) {
         int var15 = var0.getCommittedSegmentEndWaypointIndex();
         if (var15 >= 0 && var15 < var0.getWaypointCount()) {
            var7.set(var0.getWaypoint(var15));
            var13 = var7;
            var14 = true;
            var3 = var8.resolve(var13);
         }
      }

      if (var3 <= 1.0E-6) {
         class="kw">return new RailPathRefreshResolver.RefreshDecision(false, false, false, var14, var12);
      }

      var9.probe(var13, var3);
      boolean var18 = var10.getAsBoolean();
      if (var14) {
         class="kw">return new RailPathRefreshResolver.RefreshDecision(false, var18, false, var14, var12);
      }

      if (var18 && var1.getWaypointCount() <= 1) {
         class="kw">return new RailPathRefreshResolver.RefreshDecision(true, true, false, false, var12);
      }

      if (!var11.getAsBoolean()) {
         class="kw">return new RailPathRefreshResolver.RefreshDecision(false, var18, false, false, var12);
      }

      boolean var16 = var0.remainingEquivalentTo(var1, var2, var5);
      boolean var17 = false;
      if (!var16) {
         var0.capture(var1);
         var17 = true;
      }

      class="kw">return new RailPathRefreshResolver.RefreshDecision(false, var18, var17, false, var12);
   }

   @FunctionalInterface
   class="kw">public class="kw">interface CandidateRailProbe {
      void probe(@Nonnull Vector3dc var1, double var2);
   }

   class="kw">public record RefreshDecision(
      boolean blocked, boolean unreachable, boolean replaced, boolean committedAnchor, @Nonnull RailPath.SegmentCommitType commitType
   ) {
      class="kw">public RefreshDecision {
      }
   }

   @FunctionalInterface
   class="kw">public class="kw">interface RemainingDistanceResolver {
      double resolve(@Nonnull Vector3dc var1);
   }
}