SpawnItemCommand.java
package com.hypixel.hytale.server.core.modules.item.commands;
import com.hypixel.hytale.component.AddReason;
import com.hypixel.hytale.component.Holder;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3f;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.asset.type.item.config.Item;
import com.hypixel.hytale.server.core.asset.type.model.config.Model;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandUtil;
import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.ItemUtils;
import com.hypixel.hytale.server.core.inventory.ItemStack;
import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.modules.entity.item.ItemComponent;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
com.hypixel.hytale.server.core.universe.world.World;
com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
java.util.concurrent.ThreadLocalRandom;
javax.annotation.Nonnull;
{
Message.translation();
RequiredArg<Item> itemArg;
DefaultArg<Integer> quantityArg;
OptionalArg<Integer> countArg;
DefaultArg<Float> forceArg;
{
(, );
.itemArg = .withRequiredArg(, , ArgTypes.ITEM_ASSET);
.quantityArg = .withDefaultArg(, , ArgTypes.INTEGER, , );
.countArg = (OptionalArg).withOptionalArg(, , ArgTypes.INTEGER).addAliases( []{});
.forceArg = (DefaultArg).withDefaultArg(, , ArgTypes.FLOAT, , ).addAliases( []{});
}
{
CommandUtil.requirePermission(context.sender(), HytalePermissions.fromCommand());
(Item).itemArg.get(context);
item.getId();
(Integer).quantityArg.get(context);
(Float).forceArg.get(context);
(TransformComponent)store.getComponent(ref, TransformComponent.getComponentType());
(ModelComponent)store.getComponent(ref, ModelComponent.getComponentType());
(transformComponent != && modelComponent != ) {
transformComponent.getPosition();
modelComponent.getModel();
* force;
(.countArg.provided(context)) {
(Integer).countArg.get(context);
playerPosition.clone();
throwPosition.add(, ()playerModel.getEyeHeight(ref, store), );
ThreadLocalRandom.current();
( ; i < count; ++i) {
Holder<EntityStore> itemEntityHolder = ItemComponent.generateItemDrop(store, (itemId, quantity), throwPosition, Vector3f.ZERO, ()random.nextGaussian() * throwSpeed, , ()random.nextGaussian() * throwSpeed);
(ItemComponent)itemEntityHolder.getComponent(ItemComponent.getComponentType());
(itemEntityComponent != ) {
itemEntityComponent.setPickupDelay();
}
store.addEntity(itemEntityHolder, AddReason.SPAWN);
}
count * quantity;
context.sendMessage(Message.translation().param(, count).param(, quantity).param(, totalQuantity).param(, itemId));
} {
ItemUtils.throwItem(ref, (itemId, quantity), throwSpeed, store);
context.sendMessage(Message.translation().param(, quantity).param(, itemId));
}
} {
context.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}