GiveArmorCommand class

Пакет: com.hypixel.hytale.server.core.command.commands.player.inventory

Файл: com/hypixel/hytale/server/core/command/commands/player/inventory/GiveArmorCommand.java

extends: AbstractAsyncCommand

Поля (19)

МодификаторыТипИмя
final String PREFIX
World var10
List var11
CompletableFuture var12
String var13
PlayerRef var14
List var15
Map var16
ObjectArrayList var17
boolean var18
Object var2
var2
var2
var2
String var3
InventoryComponent.Armor var6
ItemContainer var7
Store var8
World var9

Методы (6)

МодификаторыВозвратСигнатура
for for(Ref var7 : var2)
for for(Ref var4 : var11)
if if(var14 == null)
if if(var6 != null)
if if(var18)
abstract super super("armor", "server.commands.givearmor.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.NameMatching;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
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.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.basecommands.AbstractAsyncCommand;
class="kw">import com.hypixel.hytale.server.core.inventory.InventoryComponent;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
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 it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceLists;
class="kw">import java.awt.Color;
class="kw">import java.util.Collection;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.stream.Collectors;
class="kw">import javax.annotation.Nonnull;

class="kw">public class GiveArmorCommand class="kw">extends AbstractAsyncCommand {
   class="kw">private class="kw">static class="kw">final String PREFIX = "Armor_";
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_GIVEARMOR_SUCCESS = Message.translation("server.commands.givearmor.success");
   @Nonnull
   class="kw">private class="kw">final OptionalArg<String> playerArg = this.withOptionalArg("player", "server.commands.givearmor.player.desc", ArgTypes.STRING)
      .setPermission(HytalePermissions.fromCommand("give.armor.other"));
   @Nonnull
   class="kw">private class="kw">final RequiredArg<String> searchStringArg = this.withRequiredArg("search", "server.commands.givearmor.search.desc", ArgTypes.STRING);
   @Nonnull
   class="kw">private class="kw">final FlagArg setFlag = this.withFlagArg("set", "server.commands.givearmor.set.desc");

   class="kw">public GiveArmorCommand() {
      super("armor", "server.commands.givearmor.desc");
      this.setPermissionGroups("hytale:Builder");
   }

   @Nonnull
   @Override
   class="kw">protected CompletableFuture<Void> executeAsync(@Nonnull CommandContext var1) {
      Object var2;
      if (this.playerArg.provided(var1)) {
         String var3 = this.playerArg.get(var1);
         if ("*".equals(var3)) {
            var2 = new ReferenceArrayList();

            for (PlayerRef var5 : Universe.get().getPlayers()) {
               var2.add(var5.getReference());
            }
         } else {
            PlayerRef var14 = Universe.get().getPlayer(var3, NameMatching.DEFAULT);
            if (var14 == null) {
               var1.sendMessage(Message.translation("server.commands.errors.noSuchPlayer").param("username", var3));
               class="kw">return CompletableFuture.completedFuture(null);
            }

            var2 = ReferenceLists.singleton(var14.getReference());
         }
      } else {
         if (!var1.isPlayer()) {
            var1.sendMessage(Message.translation("server.commands.errors.playerOrArg").param("option", "player"));
            class="kw">return CompletableFuture.completedFuture(null);
         }

         var2 = ReferenceLists.singleton(var1.senderAsPlayerRef());
      }

      if (var2.isEmpty()) {
         var1.sendMessage(Message.translation("server.commands.errors.noSuchPlayer").param("username", "*"));
         class="kw">return CompletableFuture.completedFuture(null);
      }

      String var13 = this.searchStringArg.get(var1);
      List var15 = Item.getAssetMap()
         .getAssetMap()
         .keySet()
         .stream()
         .filter(var1x -> var1x.startsWith("Armor_") && var1x.indexOf(var13, "Armor_".length()) == "Armor_".length())
         .map(ItemStack::new)
         .collect(Collectors.toList());
      if (var15.isEmpty()) {
         var1.sendMessage(Message.translation("server.commands.givearmor.typeNotFound").param("type", var13).color(Color.RED));
         class="kw">return CompletableFuture.completedFuture(null);
      }

      Map var16 = new Object2ObjectOpenHashMap();

      for (Ref var7 : var2) {
         if (var7 != null && var7.isValid()) {
            Store var8 = var7.getStore();
            World var9 = var8.getExternalData().getWorld();
            var16.computeIfAbsent(var9, var0 -> new ReferenceArrayList()).add(var7);
         }
      }

      ObjectArrayList var17 = new ObjectArrayList();
      boolean var18 = this.setFlag.provided(var1);

      for (Entry var20 : var16.entrySet()) {
         World var10 = var20.getKey();
         List var11 = var20.getValue();
         CompletableFuture var12 = this.runAsync(var1, () -> {
            for (Ref var4 : var11) {
               if (var4 != null && var4.isValid()) {
                  Store var5 = var4.getStore();
                  InventoryComponent.Armor var6 = var5.getComponent(var4, InventoryComponent.Armor.getComponentType());
                  if (var6 != null) {
                     ItemContainer var7 = var6.getInventory();
                     if (var18) {
                        var7.clear();
                     }

                     var7.addItemStacks(var15);
                  }
               }
            }
         }, var10);
         var17.add(var12);
      }

      class="kw">return CompletableFuture.allOf((CompletableFuture<?>[])var17.toArray(new CompletableFuture[0]))
         .thenRun(() -> var1.sendMessage(MESSAGE_COMMANDS_GIVEARMOR_SUCCESS));
   }
}