44 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.world.entity.npc;
 | |
| 
 | |
| 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;
 | |
| import net.minecraft.world.level.storage.ValueInput;
 | |
| import net.minecraft.world.level.storage.ValueOutput;
 | |
| 
 | |
| 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(ValueInput input) {
 | |
| 		input.list("Inventory", ItemStack.CODEC).ifPresent(typedInputList -> this.getInventory().fromItemList(typedInputList));
 | |
| 	}
 | |
| 
 | |
| 	default void writeInventoryToTag(ValueOutput output) {
 | |
| 		this.getInventory().storeAsItemList(output.list("Inventory", ItemStack.CODEC));
 | |
| 	}
 | |
| }
 |