MapMarkersInViewCommand class

Пакет: com.hypixel.hytale.server.core.command.commands.utility.worldmap.marker

Файл: com/hypixel/hytale/server/core/command/commands/utility/worldmap/marker/MapMarkersInViewCommand.java

extends: AbstractPlayerCommand

Поля (15)

МодификаторыТипИмя
final float DEFAULT_FIELD_OF_VIEW
boolean var10
boolean var11
Quaterniond var11
ObjectSet var12
Matrix4d var12
String var15
boolean var16
String var17
Player var6
Transform var6
float var7
double var7
double var8
double var9

Методы (5)

МодификаторыВозвратСигнатура
static void drawViewConevoid drawViewCone(@Nonnull World var0, @Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, float var3, double var4)
abstract drawViewCone drawViewCone(var5, var3, var2, var7, var8)
if if(var11)
if if(var11)
abstract super super("inview", "server.commands.worldmap.markers.inview.desc")

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.utility.worldmap.marker;

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.protocol.DebugShape;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.modules.debug.DebugUtils;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
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 com.hypixel.hytale.server.core.universe.world.worldmap.markers.DiscoverableMapMarkers;
class="kw">import com.hypixel.hytale.server.core.util.TargetUtil;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectSet;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Matrix4d;
class="kw">import org.joml.Quaterniond;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;

class="kw">public class MapMarkersInViewCommand class="kw">extends AbstractPlayerCommand {
   class="kw">private class="kw">static class="kw">final float DEFAULT_FIELD_OF_VIEW = 70.0F;
   class="kw">private class="kw">static class="kw">final double DEFAULT_MAX_DISTANCE = 64.0;
   class="kw">private class="kw">static class="kw">final float DEBUG_SHAPE_SECONDS = 10.0F;
   class="kw">private class="kw">static class="kw">final double DEBUG_ARROW_HEIGHT = 2.0;
   class="kw">private class="kw">static class="kw">final double MAX_DEBUG_HALF_ANGLE_DEGREES = 89.0;
   @Nonnull
   class="kw">private class="kw">static class="kw">final Vector3dc CONE_AXIS = new Vector3d(0.0, 1.0, 0.0);
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Float> fieldOfViewArg = this.withOptionalArg("fov", "server.commands.worldmap.markers.inview.fov.desc", ArgTypes.FLOAT);
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Double> maxDistanceArg = this.withOptionalArg("distance", "server.commands.worldmap.markers.inview.distance.desc", ArgTypes.DOUBLE);
   @Nonnull
   class="kw">private class="kw">final FlagArg hideFlag = this.withFlagArg("hide", "server.commands.worldmap.markers.inview.hide.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg debugFlag = this.withFlagArg("debug", "server.commands.worldmap.markers.inview.debug.desc");

   class="kw">public MapMarkersInViewCommand() {
      super("inview", "server.commands.worldmap.markers.inview.desc");
      this.addAliases("cone");
   }

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
   ) {
      Player var6 = var2.getComponent(var3, Player.getComponentType());
      assert var6 != null;
      float var7 = this.fieldOfViewArg.provided(var1) ? this.fieldOfViewArg.get(var1) : 70.0F;
      double var8 = this.maxDistanceArg.provided(var1) ? this.maxDistanceArg.get(var1) : 64.0;
      boolean var10 = this.hideFlag.get(var1);
      boolean var11 = this.debugFlag.get(var1);
      if (Float.isFinite(var7) && !(var7 <= 0.0F) && !(var7 > 360.0F)) {
         if (Double.isFinite(var8) && !(var8 <= 0.0)) {
            ObjectSet var12 = DiscoverableMapMarkers.getThreadLocalMarkerIdSet();
            DiscoverableMapMarkers.collectMarkersInView(var6, var2, var7, var8, var10, var12);
            if (var11) {
               drawViewCone(var5, var3, var2, var7, var8);
            }

            if (var12.isEmpty()) {
               var1.sendMessage(Message.translation("server.commands.worldmap.markers.inview.none").param("fov", var7).param("distance", var8));
            } else {
               var1.sendMessage(
                  Message.translation("server.commands.worldmap.markers.inview.header").param("count", var12.size()).param("fov", var7).param("distance", var8)
               );

               for (BlockMarkerLookup.Match var14 : BlockMarkerLookup.findAll(var5)) {
                  String var15 = var14.data().getMarkerId();
                  if (var12.contains(var15)) {
                     boolean var16 = var10 ? DiscoverableMapMarkers.hide(var6, var15) : DiscoverableMapMarkers.reveal(var6, var15);
                     String var17 = var16
                        ? (var10 ? "server.commands.worldmap.markers.inview.state.hidden" : "server.commands.worldmap.markers.inview.state.revealed")
                        : "server.commands.worldmap.markers.inview.state.noChange";
                     var1.sendMessage(
                        Message.translation("server.commands.worldmap.markers.inview.entry")
                           .param("id", var15)
                           .param("x", var14.x())
                           .param("y", var14.y())
                           .param("z", var14.z())
                           .param("state", Message.translation(var17))
                     );
                     if (var11) {
                        DebugUtils.addArrow(
                           var5, new Vector3d(var14.x() + 0.5, var14.y() + 2.0, var14.z() + 0.5), Vector3dUtil.DOWN, DebugUtils.COLOR_MAGENTA, 10.0F, 3
                        );
                     }
                  }
               }
            }
         } else {
            var1.sendMessage(Message.translation("server.commands.worldmap.markers.inview.badDistance"));
         }
      } else {
         var1.sendMessage(Message.translation("server.commands.worldmap.markers.inview.badFov"));
      }
   }

   class="kw">private class="kw">static void drawViewCone(@Nonnull World var0, @Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, float var3, double var4) {
      Transform var6 = TargetUtil.getLook(var1, var2);
      double var7 = Math.toRadians(Math.min(var3 * 0.5, 89.0));
      double var9 = 2.0 * var4 * Math.tan(var7);
      Quaterniond var11 = new Quaterniond().rotationTo(CONE_AXIS, var6.getDirection().negate());
      Matrix4d var12 = new Matrix4d().translate(var6.getPosition()).rotate(var11).translate(0.0, -var4 * 0.5, 0.0).scale(var9, var4, var9);
      DebugUtils.add(var0, DebugShape.Cone, var12, DebugUtils.COLOR_CYAN, 10.0F, 3);
   }
}