LocateDungeonCommand class

Пакет: com.hypixel.hytale.builtin.locate.command

Файл: com/hypixel/hytale/builtin/locate/command/LocateDungeonCommand.java

extends: AbstractLocateSubcommand

Поля (8)

МодификаторыТипИмя
final SingleArgumentType<String> DUNGEON_NAME
ArrayList var10
CaveDungeonSearchUtil.SearchOutcome var13
CaveDungeonSearchUtil.DungeonResult var14
UUID var6
World var7
String var8
int var9

Методы (8)

МодификаторыВозвратСигнатура
if if(var1 instanceof PlayerRef var5)
if if(var6 != null)
if if(var7 != null)
if if(var9 >= 0)
if if(var14 == null)
public String parsepublic String parse(String var1, ParseResult var2)
public void suggestpublic void suggest(@Nonnull CommandSender var1, @Nonnull String var2, int var3, @Nonnull SuggestionResult var4)
abstract super super("dungeon", "server.commands.locate.dungeon.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.locate.CaveDungeonSearchUtil;
class="kw">import com.hypixel.hytale.component.Ref;
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.CommandSender;
class="kw">import com.hypixel.hytale.server.core.command.system.ParseResult;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.SingleArgumentType;
class="kw">import com.hypixel.hytale.server.core.command.system.suggestion.SuggestionResult;
class="kw">import com.hypixel.hytale.server.core.command.system.suggestion.SuggestionUtil;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
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 com.hypixel.hytale.server.worldgen.chunk.ChunkGenerator;
class="kw">import java.util.ArrayList;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;

class="kw">public class LocateDungeonCommand class="kw">extends AbstractLocateSubcommand {
   class="kw">private class="kw">static class="kw">final SingleArgumentType<String> DUNGEON_NAME = new SingleArgumentType<String>(
      "server.commands.parsing.argtype.string.name", "server.commands.parsing.argtype.string.usage"
   ) {
      class="kw">public String parse(String var1, ParseResult var2) {
         class="kw">return var1;
      }

      @Override
      class="kw">public void suggest(@Nonnull CommandSender var1, @Nonnull String var2, int var3, @Nonnull SuggestionResult var4) {
         if (var1 class="kw">instanceof PlayerRef var5) {
            UUID var6 = var5.getWorldUuid();
            if (var6 != null) {
               World var7 = Universe.get().getWorld(var6);
               if (var7 != null) {
                  if (var7.getChunkStore().getGenerator() class="kw">instanceof ChunkGenerator var9) {
                     SuggestionUtil.suggestFiltered(CaveDungeonSearchUtil.collectDungeonNames(var9), var2, var4);
                  }
               }
            }
         }
      }
   };
   @Nonnull
   class="kw">private class="kw">final RequiredArg<String> dungeonNameArg = this.withRequiredArg("name", "server.commands.locate.dungeon.name.desc", DUNGEON_NAME);
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Integer> radiusArg = this.withOptionalArg("radius", "server.commands.locate.radius.desc", ArgTypes.INTEGER);

   class="kw">public LocateDungeonCommand() {
      super("dungeon", "server.commands.locate.dungeon.desc");
      this.requirePermission(HytalePermissions.fromCommand("locate.dungeon"));
   }

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1, @Nonnull ChunkGenerator var2, int var3, int var4, int var5, @Nonnull World var6, @Nonnull Ref<EntityStore> var7
   ) {
      String var8 = var1.get(this.dungeonNameArg);
      int var9 = resolveRadius(var1, this.radiusArg);
      if (var9 >= 0) {
         ArrayList var10 = new ArrayList<>();

         for (CaveDungeonSearchUtil.DungeonTarget var12 : CaveDungeonSearchUtil.collectTargets(var2)) {
            if (var12.displayName().equalsIgnoreCase(var8)) {
               var10.add(var12);
            }
         }

         if (var10.isEmpty()) {
            var1.sendMessage(Message.translation("server.commands.locate.notFoundInWorld").param("type", "dungeon").param("name", var8));
            sendDidYouMean(var1, var8, CaveDungeonSearchUtil.collectDungeonNames(var2));
         } else {
            CaveDungeonSearchUtil.SearchOutcome var13 = CaveDungeonSearchUtil.findNearest(var2, var3, var4, var5, var9, var10);
            CaveDungeonSearchUtil.DungeonResult var14 = var13.nearest();
            if (var14 == null) {
               if (var13.materializationCapped()) {
                  var1.sendMessage(Message.translation("server.commands.locate.dungeon.searchCapped").param("name", var8));
               } else {
                  var1.sendMessage(
                     Message.translation("server.commands.locate.notFoundInRadius").param("type", "dungeon").param("name", var8).param("radius", var9)
                  );
               }
            } else {
               var1.sendMessage(
                  Message.translation("server.commands.locate.found3d")
                     .param("type", "dungeon")
                     .param("name", var14.displayName())
                     .param("x", var14.x())
                     .param("y", var14.y())
                     .param("z", var14.z())
                     .param("distance", horizontalDistance(var4, var5, var14.x(), var14.z()))
               );
               this.teleportIfRequested(var1, var6, var7, var14.x(), var14.y(), var14.z());
            }
         }
      }
   }
}