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);
}
}
}