minecraft-src/net/minecraft/world/entity/npc/InventoryCarrier.java
2025-07-04 03:45:38 +03:00

44 lines
1.4 KiB
Java

package net.minecraft.world.entity.npc;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.SimpleContainer;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.ItemStack;
public interface InventoryCarrier {
String TAG_INVENTORY = "Inventory";
SimpleContainer getInventory();
static void pickUpItem(ServerLevel level, Mob mob, InventoryCarrier carrier, ItemEntity itemEntity) {
ItemStack itemStack = itemEntity.getItem();
if (mob.wantsToPickUp(level, itemStack)) {
SimpleContainer simpleContainer = carrier.getInventory();
boolean bl = simpleContainer.canAddItem(itemStack);
if (!bl) {
return;
}
mob.onItemPickup(itemEntity);
int i = itemStack.getCount();
ItemStack itemStack2 = simpleContainer.addItem(itemStack);
mob.take(itemEntity, i - itemStack2.getCount());
if (itemStack2.isEmpty()) {
itemEntity.discard();
} else {
itemStack.setCount(itemStack2.getCount());
}
}
}
default void readInventoryFromTag(CompoundTag tag, HolderLookup.Provider levelRegistry) {
tag.getList("Inventory").ifPresent(listTag -> this.getInventory().fromTag(listTag, levelRegistry));
}
default void writeInventoryToTag(CompoundTag tag, HolderLookup.Provider levelRegistry) {
tag.put("Inventory", this.getInventory().createTag(levelRegistry));
}
}