GiveOtherCommand class

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

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

extends: CommandBase

Поля (24)

МодификаторыТипИмя
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD
private final OptionalArg<Double> durabilityArg
private final RequiredArg<Item> itemArg
private final OptionalArg<String> metadataArg
private final RequiredArg<PlayerRef> playerArg
private final DefaultArg<Integer> quantityArg
return
BsonDocument var11
var11
String var12
ItemStackTransaction var13
ItemStack var14
Message var15
ItemStack var17
PlayerRef var2
Ref var3
Store var4
World var5
Player var5
PlayerRef var6
Item var7
Integer var8
double var9
var9

Методы (3)

МодификаторыВозвратСигнатура
protected void executeSyncprotected void executeSync(@Nonnull CommandContext var1)
if if(var5 == null)
abstract super super("server.commands.give.other.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.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.DefaultArg;
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.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ItemStackTransaction;
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.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonDocument;

class="kw">public class GiveCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">final RequiredArg<Item> itemArg = this.withRequiredArg("item", "server.commands.give.item.desc", ArgTypes.ITEM_ASSET);
   @Nonnull
   class="kw">private class="kw">final DefaultArg<Integer> quantityArg = this.withDefaultArg("quantity", "server.commands.give.quantity.desc", ArgTypes.INTEGER, 1, "1");
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Double> durabilityArg = this.withOptionalArg("durability", "server.commands.give.durability.desc", ArgTypes.DOUBLE);
   @Nonnull
   class="kw">private class="kw">final OptionalArg<String> metadataArg = this.withOptionalArg("metadata", "server.commands.give.metadata.desc", ArgTypes.STRING);

   class="kw">public GiveCommand() {
      super("give", "server.commands.give.desc");
      this.requirePermission(HytalePermissions.fromCommand("give.self"));
      this.setPermissionGroups("hytale:Builder");
      this.addUsageVariant(new GiveCommand.GiveOtherCommand());
      this.addSubCommand(new GiveArmorCommand());
   }

   @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;
      Item var7 = this.itemArg.get(var1);
      Integer var8 = this.quantityArg.get(var1);
      double var9 = Double.MAX_VALUE;
      if (this.durabilityArg.provided(var1)) {
         var9 = this.durabilityArg.get(var1);
      }

      BsonDocument var11 = null;
      if (this.metadataArg.provided(var1)) {
         String var12 = this.metadataArg.get(var1);

         try {
            var11 = BsonDocument.parse(var12);
         } catch (Exception var16) {
            var1.sendMessage(Message.translation("server.commands.give.invalidMetadata").param("error", var16.getMessage()));
            class="kw">return;
         }
      }

      ItemStack var17 = new ItemStack(var7.getId(), var8, var11).withDurability(var9);
      ItemStackTransaction var13 = Player.giveItem(var17, var3, var2);
      ItemStack var14 = var13.getRemainder();
      Message var15 = var7.getTranslationMessage();
      if (var14 != null && !var14.isEmpty()) {
         var1.sendMessage(Message.translation("server.commands.give.insufficientInvSpace").param("quantity", var8).param("item", var15));
      } else {
         var1.sendMessage(Message.translation("server.commands.give.received").param("quantity", var8).param("item", var15));
      }
   }

   class="kw">private class="kw">static class GiveOtherCommand class="kw">extends CommandBase {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
      @Nonnull
      class="kw">private class="kw">final RequiredArg<PlayerRef> playerArg = this.withRequiredArg("player", "server.commands.argtype.player.desc", ArgTypes.PLAYER_REF);
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Item> itemArg = this.withRequiredArg("item", "server.commands.give.item.desc", ArgTypes.ITEM_ASSET);
      @Nonnull
      class="kw">private class="kw">final DefaultArg<Integer> quantityArg = this.withDefaultArg("quantity", "server.commands.give.quantity.desc", ArgTypes.INTEGER, 1, "1");
      @Nonnull
      class="kw">private class="kw">final OptionalArg<Double> durabilityArg = this.withOptionalArg("durability", "server.commands.give.durability.desc", ArgTypes.DOUBLE);
      @Nonnull
      class="kw">private class="kw">final OptionalArg<String> metadataArg = this.withOptionalArg("metadata", "server.commands.give.metadata.desc", ArgTypes.STRING);

      GiveOtherCommand() {
         super("server.commands.give.other.desc");
         this.requirePermission(HytalePermissions.fromCommand("give.other"));
         this.setPermissionGroups("hytale:WorldEditor");
      }

      @Override
      class="kw">protected void executeSync(@Nonnull CommandContext var1) {
         PlayerRef var2 = this.playerArg.get(var1);
         Ref var3 = var2.getReference();
         if (var3 != null && var3.isValid()) {
            Store var4 = var3.getStore();
            World var5 = var4.getExternalData().getWorld();
            var5.execute(
               () -> {
                  Player var5 = var4.getComponent(var3, Player.getComponentType());
                  if (var5 == null) {
                     var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
                  } else {
                     PlayerRef var6 = var4.getComponent(var3, PlayerRef.getComponentType());
                     assert var6 != null;
                     Item var7 = this.itemArg.get(var1);
                     Integer var8 = this.quantityArg.get(var1);
                     double var9 = Double.MAX_VALUE;
                     if (this.durabilityArg.provided(var1)) {
                        var9 = this.durabilityArg.get(var1);
                     }

                     BsonDocument var11 = null;
                     if (this.metadataArg.provided(var1)) {
                        String var12 = this.metadataArg.get(var1);

                        try {
                           var11 = BsonDocument.parse(var12);
                        } catch (Exception var16) {
                           var1.sendMessage(Message.translation("server.commands.give.invalidMetadata").param("error", var16.getMessage()));
                           class="kw">return;
                        }
                     }

                     ItemStack var17 = new ItemStack(var7.getId(), var8, var11).withDurability(var9);
                     ItemStackTransaction var13 = Player.giveItem(var17, var3, var4);
                     ItemStack var14 = var13.getRemainder();
                     Message var15 = var7.getTranslationMessage();
                     if (var14 != null && !var14.isEmpty()) {
                        var1.sendMessage(Message.translation("server.commands.give.insufficientInvSpace").param("quantity", var8).param("item", var15));
                     } else {
                        var1.sendMessage(
                           Message.translation("server.commands.give.gave")
                              .param("targetUsername", var2.getUsername())
                              .param("quantity", var8)
                              .param("item", var15)
                        );
                     }
                  }
               }
            );
         } else {
            var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
         }
      }
   }
}