53 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.world.inventory;
 | |
| 
 | |
| import net.minecraft.server.level.ServerPlayer;
 | |
| import net.minecraft.world.Container;
 | |
| import net.minecraft.world.entity.player.Player;
 | |
| import net.minecraft.world.item.ItemStack;
 | |
| import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity;
 | |
| 
 | |
| public class FurnaceResultSlot extends Slot {
 | |
| 	private final Player player;
 | |
| 	private int removeCount;
 | |
| 
 | |
| 	public FurnaceResultSlot(Player player, Container container, int slot, int xPosition, int yPosition) {
 | |
| 		super(container, slot, xPosition, yPosition);
 | |
| 		this.player = player;
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public boolean mayPlace(ItemStack stack) {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public ItemStack remove(int amount) {
 | |
| 		if (this.hasItem()) {
 | |
| 			this.removeCount = this.removeCount + Math.min(amount, this.getItem().getCount());
 | |
| 		}
 | |
| 
 | |
| 		return super.remove(amount);
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public void onTake(Player player, ItemStack stack) {
 | |
| 		this.checkTakeAchievements(stack);
 | |
| 		super.onTake(player, stack);
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	protected void onQuickCraft(ItemStack stack, int amount) {
 | |
| 		this.removeCount += amount;
 | |
| 		this.checkTakeAchievements(stack);
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	protected void checkTakeAchievements(ItemStack stack) {
 | |
| 		stack.onCraftedBy(this.player, this.removeCount);
 | |
| 		if (this.player instanceof ServerPlayer serverPlayer && this.container instanceof AbstractFurnaceBlockEntity abstractFurnaceBlockEntity) {
 | |
| 			abstractFurnaceBlockEntity.awardUsedRecipesAndPopExperience(serverPlayer);
 | |
| 		}
 | |
| 
 | |
| 		this.removeCount = 0;
 | |
| 	}
 | |
| }
 |