Skip to content

Commit 54557db

Browse files
committed
Patch in the LivingEntity.isEquippableInSlot ItemInstance` overload
1 parent fdc6f67 commit 54557db

2 files changed

Lines changed: 13 additions & 20 deletions

File tree

patches/net/minecraft/world/entity/LivingEntity.java.patch

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,7 @@
694694
}
695695

696696
private static byte entityEventForEquipmentBreak(EquipmentSlot equipmentSlot) {
697-
@@ -3781,15 +_,16 @@
697+
@@ -3781,15 +_,26 @@
698698
}
699699

700700
public final EquipmentSlot getEquipmentSlotForItem(ItemStack itemStack) {
@@ -704,14 +704,23 @@
704704
return equippable != null && this.canUseSlot(equippable.slot()) ? equippable.slot() : EquipmentSlot.MAINHAND;
705705
}
706706

707-
+ /// @deprecated Neo: Use [net.neoforged.neoforge.common.extensions.ILivingEntityExtension#isEquippableInSlot(ItemInstance, EquipmentSlot)] instead
707+
+ /// @deprecated Neo: Use [#isEquippableInSlot(ItemInstance, EquipmentSlot)] instead
708708
+ @Deprecated
709709
public final boolean isEquippableInSlot(ItemStack itemStack, EquipmentSlot slot) {
710710
- Equippable equippable = itemStack.get(DataComponents.EQUIPPABLE);
711-
- return equippable == null
711+
+ return isEquippableInSlot((ItemInstance) itemStack, slot);
712+
+ }
713+
+
714+
+ /// [ItemInstance] sensetive version of [#isEquippableInSlot(ItemStack, EquipmentSlot)]
715+
+ ///
716+
+ /// Prefer calling via [net.neoforged.neoforge.common.extensions.ItemInstanceExtension#canEquip(EquipmentSlot, LivingEntity)] where possible
717+
+ public final boolean isEquippableInSlot(ItemInstance item, EquipmentSlot slot) {
718+
+ var equippable = item.get(DataComponents.EQUIPPABLE);
719+
return equippable == null
712720
- ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND)
713721
- : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.typeHolder());
714-
+ return isEquippableInSlot((ItemInstance) itemStack, slot);
722+
+ ? slot == EquipmentSlot.MAINHAND && self().canUseSlot(EquipmentSlot.MAINHAND)
723+
+ : slot == equippable.slot() && self().canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(self().typeHolder());
715724
}
716725

717726
private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot equipmentSlot) {

src/main/java/net/neoforged/neoforge/common/extensions/ILivingEntityExtension.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,13 @@
55

66
package net.neoforged.neoforge.common.extensions;
77

8-
import net.minecraft.core.component.DataComponents;
98
import net.minecraft.world.damagesource.DamageSource;
10-
import net.minecraft.world.entity.EquipmentSlot;
119
import net.minecraft.world.entity.LivingEntity;
12-
import net.minecraft.world.item.ItemInstance;
13-
import net.minecraft.world.item.ItemStack;
1410
import net.minecraft.world.level.material.FluidState;
1511
import net.minecraft.world.phys.Vec3;
1612
import net.neoforged.neoforge.common.NeoForgeMod;
1713
import net.neoforged.neoforge.common.damagesource.DamageContainer;
1814
import net.neoforged.neoforge.fluids.FluidType;
19-
import org.jetbrains.annotations.ApiStatus;
2015

2116
public interface ILivingEntityExtension extends IEntityExtension {
2217
default LivingEntity self() {
@@ -86,15 +81,4 @@ default boolean moveInFluid(FluidState state, Vec3 movementVector, double gravit
8681
* includes changes made to the damage sequence by events.
8782
*/
8883
default void onDamageTaken(DamageContainer damageContainer) {}
89-
90-
/// [ItemInstance] sensetive version of [LivingEntity#isEquippableInSlot(ItemStack, EquipmentSlot)]
91-
///
92-
/// Prefer calling via [ItemInstanceExtension#canEquip(EquipmentSlot, LivingEntity)] where possible
93-
@ApiStatus.NonExtendable
94-
default boolean isEquippableInSlot(ItemInstance item, EquipmentSlot slot) {
95-
var equippable = item.get(DataComponents.EQUIPPABLE);
96-
return equippable == null
97-
? slot == EquipmentSlot.MAINHAND && self().canUseSlot(EquipmentSlot.MAINHAND)
98-
: slot == equippable.slot() && self().canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(self().typeHolder());
99-
}
10084
}

0 commit comments

Comments
 (0)