minecraft-src/net/minecraft/world/inventory/FurnaceResultSlot.java
2025-07-04 03:45:38 +03:00

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;
}
}