LocateRegionCommand class

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

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

extends: AbstractLocateSubcommand

Поля (12)

МодификаторыТипИмя
final SingleArgumentType<String> REGION_NAME
String var10
String var10
String var11
String var12
Vector3i var13
int var14
LinkedHashSet var15
UUID var6
World var7
String var8
int var9

Методы (11)

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

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.locate.SpiralSearchUtil;
class="kw">import com.hypixel.hytale.common.util.StringUtil;
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.modules.i18n.I18nModule;
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.Arrays;
class="kw">import java.util.LinkedHashSet;
class="kw">import java.util.Objects;
class="kw">import java.util.UUID;
class="kw">import java.util.stream.Collectors;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;

class="kw">public class LocateRegionCommand class="kw">extends AbstractLocateSubcommand {
   class="kw">private class="kw">static class="kw">final SingleArgumentType<String> REGION_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 StringUtil.stripQuotes(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) {
                     String var10 = var5.getLanguage();
                     Arrays.stream(var9.getZonePatternProvider().getZones())
                        .map(var1x -> I18nModule.get().getMessage(var10, "server.map.region." + var1x.name()))
                        .filter(Objects::nonNull)
                        .forEach(var1x -> var4.suggest("\"" + var1x + "\""));
                  }
               }
            }
         }
      }

      @Override
      class="kw">public int getSuggestionValueCount() {
         class="kw">return 1;
      }
   };
   @Nonnull
   class="kw">private class="kw">final RequiredArg<String> regionNameArg = this.withRequiredArg("name", "server.commands.locate.region.name.desc", REGION_NAME);
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Integer> radiusArg = this.withOptionalArg("radius", "server.commands.locate.radius.desc", ArgTypes.INTEGER);

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

   @Nullable
   class="kw">private class="kw">static String resolveZoneName(@Nonnull ChunkGenerator var0, @Nonnull String var1, @Nonnull String var2) {
      class="kw">return Arrays.stream(var0.getZonePatternProvider().getZones())
         .filter(var2x -> var2.equalsIgnoreCase(I18nModule.get().getMessage(var1, "server.map.region." + var2x.name())))
         .map(var0x -> var0x.name())
         .findFirst()
         .orElse(null);
   }

   @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.regionNameArg);
      int var9 = resolveRadius(var1, this.radiusArg);
      if (var9 >= 0) {
         String var10 = var1.senderAs(PlayerRef.class).getLanguage();
         String var11 = resolveZoneName(var2, var10, var8);
         if (var11 == null) {
            var1.sendMessage(Message.translation("server.commands.locate.notFoundInWorld").param("type", "region").param("name", var8));
            LinkedHashSet var15 = Arrays.stream(var2.getZonePatternProvider().getZones()).map(var1x -> {
               String var2 = I18nModule.get().getMessage(var10, "server.map.region." + var1x.name());
               class="kw">return var2 != null ? var2 : var1x.name();
            }).collect(Collectors.toCollection(LinkedHashSet::new));
            sendDidYouMean(var1, var8, var15);
         } else {
            String var12 = var11;
            Vector3i var13 = SpiralSearchUtil.search(var2, var3, var4, var5, var9, var1x -> var12.equalsIgnoreCase(var1x.getZoneResult().getZone().name()));
            if (var13 == null) {
               var1.sendMessage(
                  Message.translation("server.commands.locate.notFoundInRadius").param("type", "region").param("name", var8).param("radius", var9)
               );
            } else {
               int var14 = horizontalDistance(var4, var5, var13.x, var13.z);
               var1.sendMessage(
                  Message.translation("server.commands.locate.found2d")
                     .param("type", "region")
                     .param("name", var8)
                     .param("x", var13.x)
                     .param("z", var13.z)
                     .param("distance", var14)
               );
               this.teleportIfRequested(var1, var6, var7, var13.x, var13.z);
            }
         }
      }
   }
}