45 lines
1.7 KiB
Java
45 lines
1.7 KiB
Java
package net.minecraft.world.entity.npc;
|
|
|
|
import net.minecraft.core.HolderLookup;
|
|
import net.minecraft.nbt.CompoundTag;
|
|
import net.minecraft.nbt.ListTag;
|
|
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 p_361504_, Mob p_219612_, InventoryCarrier p_219613_, ItemEntity p_219614_) {
|
|
ItemStack itemstack = p_219614_.getItem();
|
|
if (p_219612_.wantsToPickUp(p_361504_, itemstack)) {
|
|
SimpleContainer simplecontainer = p_219613_.getInventory();
|
|
boolean flag = simplecontainer.canAddItem(itemstack);
|
|
if (!flag) {
|
|
return;
|
|
}
|
|
|
|
p_219612_.onItemPickup(p_219614_);
|
|
int i = itemstack.getCount();
|
|
ItemStack itemstack1 = simplecontainer.addItem(itemstack);
|
|
p_219612_.take(p_219614_, i - itemstack1.getCount());
|
|
if (itemstack1.isEmpty()) {
|
|
p_219614_.discard();
|
|
} else {
|
|
itemstack.setCount(itemstack1.getCount());
|
|
}
|
|
}
|
|
}
|
|
|
|
default void readInventoryFromTag(CompoundTag p_253699_, HolderLookup.Provider p_331899_) {
|
|
p_253699_.getList("Inventory").ifPresent(p_394888_ -> this.getInventory().fromTag(p_394888_, p_331899_));
|
|
}
|
|
|
|
default void writeInventoryToTag(CompoundTag p_254428_, HolderLookup.Provider p_328974_) {
|
|
p_254428_.put("Inventory", this.getInventory().createTag(p_328974_));
|
|
}
|
|
} |