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