PickupItemInteraction class
Пакет: com.hypixel.hytale.builtin.buildertools.interactions
Файл: com/hypixel/hytale/builtin/buildertools/interactions/PickupItemInteraction.java
extends: SimpleInstantInteraction
Поля (15)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<PickupItemInteraction> |
CODEC |
|
ItemStack |
var10 |
|
Vector3d |
var11 |
|
ItemStack |
var12 |
|
ItemStackTransaction |
var13 |
|
ItemStack |
var14 |
|
Holder |
var15 |
|
Holder |
var16 |
|
int |
var17 |
|
Ref |
var4 |
|
CommandBuffer |
var5 |
|
Player |
var6 |
|
Ref |
var7 |
|
ItemComponent |
var8 |
|
TransformComponent |
var9 |
Методы (7)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var6 == null) |
|
|
if if(var8 == null) |
|
|
if if(var9 == null) |
|
|
if if(var15 != null) |
|
|
if if(var16 != null) |
|
|
if if(var17 > 0) |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.interactions;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
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.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.item.ItemComponent;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class PickupItemInteraction class="kw">extends SimpleInstantInteraction {
class="kw">public class="kw">static class="kw">final BuilderCodec<PickupItemInteraction> CODEC = BuilderCodec.<SimpleInstantInteraction>builder(
PickupItemInteraction.class, PickupItemInteraction::new, SimpleInstantInteraction.CODEC
)
.documentation("Picks up an item entity and adds it to the player's inventory.")
.build();
class="kw">public class="kw">static class="kw">final String DEFAULT_ID = "*PickupItem";
class="kw">public class="kw">static class="kw">final RootInteraction DEFAULT_ROOT = new RootInteraction("*PickupItem", "*PickupItem");
class="kw">public PickupItemInteraction(String var1) {
super(var1);
}
class="kw">protected PickupItemInteraction() {
}
@Override
class="kw">protected class="kw">final void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
Ref var4 = var2.getEntity();
CommandBuffer var5 = var2.getCommandBuffer();
Player var6 = var5.getComponent(var4, Player.getComponentType());
if (var6 == null) {
var2.getState().state = InteractionState.Failed;
} else {
Ref var7 = var2.getTargetEntity();
if (var7 != null && var7.isValid()) {
ItemComponent var8 = var5.getComponent(var7, ItemComponent.getComponentType());
if (var8 == null) {
var2.getState().state = InteractionState.Failed;
} else {
TransformComponent var9 = var5.getComponent(var7, TransformComponent.getComponentType());
if (var9 == null) {
var2.getState().state = InteractionState.Failed;
} else {
ItemStack var10 = var8.getItemStack();
if (!ItemStack.isEmpty(var10)) {
Vector3d var11 = var9.getPosition();
ItemStack var12 = var10.cleanCopy();
ItemStackTransaction var13 = Player.giveItem(var12, var4, var5);
ItemStack var14 = var13.getRemainder();
if (ItemStack.isEmpty(var14)) {
var8.setRemovedByPlayerPickup(true);
var5.removeEntity(var7, RemoveReason.REMOVE);
Player.notifyPickupItem(var4, var12, var11, var5);
Holder var15 = ItemComponent.generatePickedUpItem(var12, var11, var5, var4);
if (var15 != null) {
var5.addEntity(var15, AddReason.SPAWN);
}
} else if (!var14.equals(var10)) {
int var17 = var10.getQuantity() - var14.getQuantity();
var8.setItemStack(var14);
Holder var16 = ItemComponent.generatePickedUpItem(var7, var5, var4, var11);
if (var16 != null) {
var5.addEntity(var16, AddReason.SPAWN);
}
if (var17 > 0) {
Player.notifyPickupItem(var4, var10.withQuantity(var17), var11, var5);
}
}
}
}
}
} else {
var2.getState().state = InteractionState.Failed;
}
}
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "PickupItemInteraction{} " + super.toString();
}
}