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

60 lines
1.7 KiB
Java

package net.minecraft.world.inventory;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.Container;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantmentEffectComponents;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import org.jetbrains.annotations.Nullable;
class ArmorSlot extends Slot {
private final LivingEntity owner;
private final EquipmentSlot slot;
@Nullable
private final ResourceLocation emptyIcon;
public ArmorSlot(Container container, LivingEntity owner, EquipmentSlot slot, int slotIndex, int x, int y, @Nullable ResourceLocation emptyIcon) {
super(container, slotIndex, x, y);
this.owner = owner;
this.slot = slot;
this.emptyIcon = emptyIcon;
}
@Override
public void setByPlayer(ItemStack newStack, ItemStack oldStack) {
this.owner.onEquipItem(this.slot, oldStack, newStack);
super.setByPlayer(newStack, oldStack);
}
@Override
public int getMaxStackSize() {
return 1;
}
@Override
public boolean mayPlace(ItemStack stack) {
return this.owner.isEquippableInSlot(stack, this.slot);
}
@Override
public boolean isActive() {
return this.owner.canUseSlot(this.slot);
}
@Override
public boolean mayPickup(Player player) {
ItemStack itemStack = this.getItem();
return !itemStack.isEmpty() && !player.isCreative() && EnchantmentHelper.has(itemStack, EnchantmentEffectComponents.PREVENT_ARMOR_CHANGE)
? false
: super.mayPickup(player);
}
@Nullable
@Override
public ResourceLocation getNoItemIcon() {
return this.emptyIcon;
}
}