60 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
| 	}
 | |
| }
 |