33import net .minecraft .world .entity .EquipmentSlot ;
44import net .minecraft .world .entity .player .Inventory ;
55import net .minecraft .world .entity .player .Player ;
6- import net .minecraft .world .item .ArmorItem ;
76import net .minecraft .world .item .ItemStack ;
7+ import net .minecraft .world .item .enchantment .EnchantmentEffectComponents ;
8+ import net .minecraft .world .item .enchantment .EnchantmentHelper ;
89
910import appeng .menu .slot .AppEngSlot ;
1011
@@ -22,9 +23,13 @@ public ArmorSlot(Inventory playerInventory, Armor armor) {
2223
2324 public boolean mayPlace (ItemStack stack ) {
2425 return armor == Armor .OFFHAND
25- || (playerInventory .canPlaceItem (armor .armor .invSlot , stack )
26- && stack .getItem () instanceof ArmorItem aItem
27- && aItem .getEquipmentSlot ().equals (armor .armor .equipmentSlot ));
26+ || stack .canEquip (armor .armor .equipmentSlot (), playerInventory .player );
27+ }
28+
29+ @ Override
30+ public boolean mayPickup (Player player ) {
31+ return super .mayPickup (player ) && (player .isCreative ()
32+ || !EnchantmentHelper .has (getItem (), EnchantmentEffectComponents .PREVENT_ARMOR_CHANGE ));
2833 }
2934
3035 public Icon icon () {
@@ -36,7 +41,7 @@ public enum Armor {
3641 LEGS (new ArmorValue (EquipmentSlot .LEGS , 37 , Icon .EMPTY_ARMOR_SLOT_LEGGINGS )),
3742 CHEST (new ArmorValue (EquipmentSlot .CHEST , 38 , Icon .EMPTY_ARMOR_SLOT_CHESTPLATE )),
3843 HEAD (new ArmorValue (EquipmentSlot .HEAD , 39 , Icon .EMPTY_ARMOR_SLOT_HELMET )),
39- OFFHAND (new ArmorValue (EquipmentSlot .HEAD , Inventory .SLOT_OFFHAND , Icon .EMPTY_ARMOR_SLOT_SHIELD ));
44+ OFFHAND (new ArmorValue (EquipmentSlot .OFFHAND , Inventory .SLOT_OFFHAND , Icon .EMPTY_ARMOR_SLOT_SHIELD ));
4045
4146 public final ArmorValue armor ;
4247
0 commit comments