diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml
index 38bc40a00..531359cd2 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml
@@ -8,6 +8,6 @@
v0.15.0
- 20251228235752
+ 20260101193312
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.md5 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.md5
index e79c9ed56..87ad1fc06 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.md5
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.md5
@@ -1 +1 @@
-abd9cd51fe52b72dbd56914bc664d2f4
\ No newline at end of file
+90ec5f615ee399f4c91a06101f43dcef
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha1 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha1
index aa54d6067..9ef7d9baa 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha1
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha1
@@ -1 +1 @@
-8c237978a6c32e163b16ddaa13502a38caef65e9
\ No newline at end of file
+2a787adaddfdecaa4ee4954d67fe69f45063bb11
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha256 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha256
index 6d245e42f..444902f54 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha256
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha256
@@ -1 +1 @@
-8377337c99473867a8059ee1148761acc4c0dff9c828432b77b82eaaafa17151
\ No newline at end of file
+db0bc2b03dfc1956eb1e1524c9bb28f6c8a7932920e9f6c030f3eedfd6bd482a
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha512 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha512
index 7b71cf423..1372d6cd5 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha512
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/maven-metadata.xml.sha512
@@ -1 +1 @@
-9fd1e0f602f5f1b58a8e265c3a3f23d5a74be0392923b99937000fe19d869803d58286e353fc844b9b36dd57358b424d2d1c7739befef40a1d253641cca9b747
\ No newline at end of file
+a468b484c91692ca7378cc0ea9d30fd12750b70b7785e4029716d514b743882a550039e1932bcf61f5c4c0c6fb33f7682c3097a79e0e12a3cd95b9452f8d9f32
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar
index 208b6f070..58c20363a 100644
Binary files a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar and b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar differ
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.md5 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.md5
index 8a330f9d2..f2b132a40 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.md5
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.md5
@@ -1 +1 @@
-3f08e47aa1942490da96db24870d8673
\ No newline at end of file
+3def6c33335baf99410958025ad96ab4
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha1 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha1
index fd32208a6..d93e98ecb 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha1
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha1
@@ -1 +1 @@
-729ce038b0abfa8fc0390434d65d67411a9d2312
\ No newline at end of file
+28e7e65ab2b8dc69944a7dc97bdb1f7444931b55
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha256 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha256
index 08c3f4e21..7e0141466 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha256
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha256
@@ -1 +1 @@
-e9ee9ede4b7811b0f5a54d2687d41d3857a5bf2ba0e84dd6c25865cd6b10e29c
\ No newline at end of file
+ed95cdb61e9a2739881b2da62c38b876d323f89b4892abbf7b8280a3559e8d7d
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha512 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha512
index 3e050c95d..2637a423a 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha512
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.20.1-f47.4.0/v0.15.0/Changed-m1.20.1-f47.4.0-v0.15.0.jar.sha512
@@ -1 +1 @@
-66a8220b0b2404339d2b8903b4958e8a872af7e8da0355dc2d9e1730535371927a3d54a9d41d6661672485b574c78fd84049499c37ee0d17d60b6b5202cc3ea4
\ No newline at end of file
+3a104ff40445e43b7333a7436a6b688f949016691a31a2f4fd5f1c11a9b6d0ff17e86ff86b0454453f594d8e419d31ea61d883b8d72b5846c539d20d8d2c7a19
\ No newline at end of file
diff --git a/src/main/java/net/ltxprogrammer/changed/item/AccessoryItem.java b/src/main/java/net/ltxprogrammer/changed/item/AccessoryItem.java
index 82282c5d9..f8fa0dc9d 100644
--- a/src/main/java/net/ltxprogrammer/changed/item/AccessoryItem.java
+++ b/src/main/java/net/ltxprogrammer/changed/item/AccessoryItem.java
@@ -11,6 +11,7 @@
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.*;
import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.level.block.DispenserBlock;
import net.minecraft.world.phys.AABB;
@@ -92,6 +93,36 @@ default boolean shouldDisableSlot(AccessorySlotContext> slotContext, Accessory
return false;
}
+
+ /**
+ * Allow the Accessory to be Considered by an Enchantment
+ * It Affects directly the Enchantment behavior where it will make the method considerate the item and it equivalentSlot from the slot type
+ * The main default value is false
+ * @param accessorySlotContext The Accessory Slot Context (Contains Wearer, ItemStack, etc.)
+ * @param enchantment The Enchantment to be considered
+ * @return false if the enchantment should not be considered
+ */
+ default boolean isConsideredByEnchantment(AccessorySlotContext> accessorySlotContext, Enchantment enchantment, ExecutionContext executionContext) {
+ return false;
+ }
+
+ enum ExecutionContext { //TODO: a better name
+ IDLE,
+ POST_HURT,
+ POST_ATTACK
+ }
+
+ /**
+ * It Affects directly the Entity$getAllSlots where it will make the method considerate the item and it equivalentSlot from the slot type
+ * This make the item be affected by Post Damage/Hurt Effects use with it caution
+ * The main default value is false
+ * @param context The Accessory context
+ * @return false if the enchantment should not be considered
+ */
+ default boolean isAffectedByEnchantments(AccessorySlotContext> context) {
+ return true;
+ }
+
default void accessoryEquipped(AccessorySlotContext> slotContext) {}
default void accessoryRemoved(AccessorySlotContext> slotContext) {}
diff --git a/src/main/java/net/ltxprogrammer/changed/item/ExoskeletonItem.java b/src/main/java/net/ltxprogrammer/changed/item/ExoskeletonItem.java
index faf0c8eda..20de8c979 100644
--- a/src/main/java/net/ltxprogrammer/changed/item/ExoskeletonItem.java
+++ b/src/main/java/net/ltxprogrammer/changed/item/ExoskeletonItem.java
@@ -8,10 +8,7 @@
import net.ltxprogrammer.changed.data.AccessorySlots;
import net.ltxprogrammer.changed.entity.robot.AbstractRobot;
import net.ltxprogrammer.changed.entity.robot.ChargerType;
-import net.ltxprogrammer.changed.init.ChangedAccessorySlots;
-import net.ltxprogrammer.changed.init.ChangedDamageSources;
-import net.ltxprogrammer.changed.init.ChangedSounds;
-import net.ltxprogrammer.changed.init.ChangedTags;
+import net.ltxprogrammer.changed.init.*;
import net.ltxprogrammer.changed.process.ProcessTransfur;
import net.ltxprogrammer.changed.util.Cacheable;
import net.ltxprogrammer.changed.util.EntityUtil;
@@ -79,9 +76,18 @@ public ExoskeletonItem(Properties builder, Supplier> entityType) {
@Override
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
+ if (enchantment == Enchantments.THORNS) return true;
+
return enchantment != Enchantments.MENDING && super.canApplyAtEnchantingTable(stack, enchantment);
}
+ @Override
+ public boolean isConsideredByEnchantment(AccessorySlotContext> accessorySlotContext, Enchantment enchantment, ExecutionContext executionContext) {
+ if (enchantment == Enchantments.THORNS) return true;
+
+ return AccessoryItem.super.isConsideredByEnchantment(accessorySlotContext, enchantment, executionContext);
+ }
+
@Override
public boolean allowedInSlot(ItemStack itemStack, LivingEntity wearer, AccessorySlotType slot) {
if (!canUse(itemStack)) {
diff --git a/src/main/java/net/ltxprogrammer/changed/mixin/EnchantmentMixin.java b/src/main/java/net/ltxprogrammer/changed/mixin/EnchantmentMixin.java
new file mode 100644
index 000000000..08335ab50
--- /dev/null
+++ b/src/main/java/net/ltxprogrammer/changed/mixin/EnchantmentMixin.java
@@ -0,0 +1,73 @@
+package net.ltxprogrammer.changed.mixin;
+
+import net.ltxprogrammer.changed.data.AccessorySlotContext;
+import net.ltxprogrammer.changed.data.AccessorySlots;
+import net.ltxprogrammer.changed.item.AccessoryItem;
+import net.ltxprogrammer.changed.item.AccessoryItem.ExecutionContext;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.EquipmentSlot;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.enchantment.Enchantment;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Unique;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Mixin(Enchantment.class)
+public class EnchantmentMixin {
+
+ @Inject(method = "getSlotItems", at = @At("RETURN"), cancellable = true)
+ private void accessoriesEnchantmentDetectionIdle(LivingEntity pEntity, CallbackInfoReturnable