SpawnItemCommand class

Пакет: com.hypixel.hytale.server.core.modules.item.commands

Файл: com/hypixel/hytale/server/core/modules/item/commands/SpawnItemCommand.java

extends: AbstractPlayerCommand

Поля (16)

МодификаторыТипИмя
final PermissionQuery SPAWN_ITEM
TransformComponent var10
ModelComponent var11
Vector3d var12
Model var13
float var14
int var15
Vector3d var16
ThreadLocalRandom var17
Holder var19
ItemComponent var20
int var21
Item var6
String var7
int var8
float var9

Методы (4)

МодификаторыВозвратСигнатура
for for(int var18 = 0; var18 < var15; var18++)
if if(var10 != null && var11 != null)
if if(var20 != null)
abstract super super("spawnitem", "server.commands.spawnitem.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
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.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandUtil;
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.entity.ItemUtils;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.item.ItemComponent;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
class="kw">import com.hypixel.hytale.server.core.permissions.PermissionQuery;
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 java.util.concurrent.ThreadLocalRandom;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class SpawnItemCommand class="kw">extends AbstractPlayerCommand {
   class="kw">private class="kw">static class="kw">final PermissionQuery SPAWN_ITEM = PermissionQuery.of(HytalePermissions.fromCommand("spawnitem"));
   @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<Item> itemArg = this.withRequiredArg("item", "server.commands.spawnitem.item.desc", ArgTypes.ITEM_ASSET);
   @Nonnull
   class="kw">private class="kw">final DefaultArg<Integer> quantityArg = this.withDefaultArg("qty", "server.commands.spawnitem.quantity.desc", ArgTypes.INTEGER, 1, "1");
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Integer> countArg = this.withOptionalArg("count", "server.commands.spawnitem.count.desc", ArgTypes.INTEGER).addAliases("n");
   @Nonnull
   class="kw">private class="kw">final DefaultArg<Float> forceArg = this.withDefaultArg("force", "server.commands.spawnitem.force.desc", ArgTypes.FLOAT, 1.0F, "1.0").addAliases("x");

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

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
   ) {
      CommandUtil.requirePermission(var1.sender(), SPAWN_ITEM);
      Item var6 = this.itemArg.get(var1);
      String var7 = var6.getId();
      int var8 = this.quantityArg.get(var1);
      float var9 = this.forceArg.get(var1);
      TransformComponent var10 = var2.getComponent(var3, TransformComponent.getComponentType());
      ModelComponent var11 = var2.getComponent(var3, ModelComponent.getComponentType());
      if (var10 != null && var11 != null) {
         Vector3d var12 = var10.getPosition();
         Model var13 = var11.getModel();
         float var14 = 6.0F * var9;
         if (this.countArg.provided(var1)) {
            int var15 = this.countArg.get(var1);
            Vector3d var16 = new Vector3d(var12);
            var16.add(0.0, var13.getEyeHeight(var3, var2), 0.0);
            ThreadLocalRandom var17 = ThreadLocalRandom.current();

            for (int var18 = 0; var18 < var15; var18++) {
               Holder var19 = ItemComponent.generateItemDrop(
                  var2, new ItemStack(var7, var8), var16, Rotation3f.IDENTITY, (float)var17.nextGaussian() * var14, 0.5F, (float)var17.nextGaussian() * var14
               );
               ItemComponent var20 = var19.getComponent(ItemComponent.getComponentType());
               if (var20 != null) {
                  var20.setPickupDelay(1.5F);
               }

               var2.addEntity(var19, AddReason.SPAWN);
            }

            int var21 = var15 * var8;
            var1.sendMessage(
               Message.translation("server.commands.spawnitem.spawnedMultiple")
                  .param("count", var15)
                  .param("quantity", var8)
                  .param("total", var21)
                  .param("item", var7)
            );
         } else {
            ItemUtils.throwItem(var3, new ItemStack(var7, var8), var14, var2);
            var1.sendMessage(Message.translation("server.commands.spawnitem.spawned").param("quantity", var8).param("item", var7));
         }
      } else {
         var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
      }
   }
}