Skip to content

Commit 107588f

Browse files
committed
- fixed enchantment transformers on forge
1 parent 20148ba commit 107588f

File tree

7 files changed

+58
-22
lines changed

7 files changed

+58
-22
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
- improved armor compatibility
66
- fixed heavy attack not multiplying damage
77
- actually enabled NBT Property
8-
- fixed crash with minecolonies
8+
- fixed crash with minecolonies
9+
- fixed enchantment transformers

common/src/main/java/smartin/miapi/mixin/EnchantmentHelperMixin.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.spongepowered.asm.mixin.injection.Inject;
1919
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2020
import smartin.miapi.events.MiapiEvents;
21-
import smartin.miapi.item.FakeEnchantment;
2221
import smartin.miapi.item.modular.ModularItem;
2322
import smartin.miapi.modules.properties.ChannelingProperty;
2423
import smartin.miapi.modules.properties.EnchantAbilityProperty;
@@ -131,17 +130,6 @@ public class EnchantmentHelperMixin {
131130
return original;
132131
}
133132

134-
@ModifyReturnValue(
135-
method = "getLevel(Lnet/minecraft/enchantment/Enchantment;Lnet/minecraft/item/ItemStack;)I",
136-
at = @At("RETURN")
137-
)
138-
private static int miapi$modifyPossibleEntries(int original, Enchantment enchantment, ItemStack stack) {
139-
if (stack.getItem() instanceof ModularItem) {
140-
return FakeEnchantment.getFakeLevel(enchantment, stack, original);
141-
}
142-
return original;
143-
}
144-
145133
private static List<EnchantmentLevelEntry> getLevels(int power, ItemStack stack, boolean treasureAllowed) {
146134
ArrayList<EnchantmentLevelEntry> list = Lists.newArrayList();
147135
if (stack.getItem() instanceof ModularItem) {
@@ -158,12 +146,4 @@ private static List<EnchantmentLevelEntry> getLevels(int power, ItemStack stack,
158146
}
159147
return list;
160148
}
161-
162-
@Inject(
163-
method = "forEachEnchantment(Lnet/minecraft/enchantment/EnchantmentHelper$Consumer;Lnet/minecraft/item/ItemStack;)V",
164-
at = @At("TAIL"),
165-
cancellable = true)
166-
private static void miapi$addFakeEnchants(EnchantmentHelper.Consumer consumer, ItemStack stack, CallbackInfo ci) {
167-
FakeEnchantment.addEnchantments(consumer, stack);
168-
}
169149
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package smartin.miapi.fabric.mixin;
2+
3+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
4+
import net.minecraft.enchantment.Enchantment;
5+
import net.minecraft.enchantment.EnchantmentHelper;
6+
import net.minecraft.item.ItemStack;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Inject;
10+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
11+
import smartin.miapi.item.FakeEnchantment;
12+
import smartin.miapi.item.modular.ModularItem;
13+
14+
@Mixin(value = EnchantmentHelper.class, priority = 700)
15+
public class EnchantmentHelperMixin {
16+
17+
@ModifyReturnValue(
18+
method = "getLevel(Lnet/minecraft/enchantment/Enchantment;Lnet/minecraft/item/ItemStack;)I",
19+
at = @At("RETURN")
20+
)
21+
private static int miapi$modifyPossibleEntries(int original, Enchantment enchantment, ItemStack stack) {
22+
if (stack.getItem() instanceof ModularItem) {
23+
return FakeEnchantment.getFakeLevel(enchantment, stack, original);
24+
}
25+
return original;
26+
}
27+
28+
@Inject(
29+
method = "forEachEnchantment(Lnet/minecraft/enchantment/EnchantmentHelper$Consumer;Lnet/minecraft/item/ItemStack;)V",
30+
at = @At("TAIL"),
31+
cancellable = true)
32+
private static void miapi$addFakeEnchants(EnchantmentHelper.Consumer consumer, ItemStack stack, CallbackInfo ci) {
33+
FakeEnchantment.addEnchantments(consumer, stack);
34+
}
35+
}

fabric/src/main/resources/miapi.mixins.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"compatibilityLevel": "JAVA_17",
66
"mixins": [
77
"LivingEntityMixin",
8-
"PlatformModularItemMethodsMixin"
8+
"PlatformModularItemMethodsMixin",
9+
"EnchantmentHelperMixin"
910
],
1011
"client": [
1112
"EntityMixin",

forge/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ dependencies {
4949
// Remove the next line if you don't want to depend on the API
5050
modApi "dev.architectury:architectury-forge:${rootProject.architectury_version}"
5151

52+
forgeRuntimeLibrary("com.ezylang:EvalEx:${rootProject.eval_ex_version}")
5253
forgeRuntimeLibrary(include("com.ezylang:EvalEx:${rootProject.eval_ex_version}"))
5354
modApi("top.theillusivec4.caelus:caelus-forge:${rootProject.forge_caelus_version}")
5455

forge/src/main/java/smartin/miapi/forge/TrulyModularForge.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import dev.architectury.registry.ReloadListenerRegistry;
77
import net.minecraft.client.MinecraftClient;
88
import net.minecraft.client.gui.DrawContext;
9+
import net.minecraft.enchantment.EnchantmentHelper;
910
import net.minecraft.entity.attribute.EntityAttributes;
1011
import net.minecraft.entity.player.PlayerEntity;
1112
import net.minecraft.item.Item;
@@ -63,6 +64,7 @@ public TrulyModularForge() {
6364
Miapi.LOGGER.info("couldnt load quark compat",e);
6465
}
6566
}
67+
EnchantmentHelper helper;
6668
bus.register(new ModEvents());
6769
MinecraftForge.EVENT_BUS.register(new ServerEvents());
6870
Miapi.init();

forge/src/main/java/smartin/miapi/forge/mixin/item/ModularItemMixin.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.google.common.collect.Multimap;
44
import net.minecraft.block.BlockState;
5+
import net.minecraft.enchantment.Enchantment;
6+
import net.minecraft.enchantment.EnchantmentHelper;
57
import net.minecraft.entity.EquipmentSlot;
68
import net.minecraft.entity.LivingEntity;
79
import net.minecraft.entity.attribute.EntityAttribute;
@@ -10,8 +12,12 @@
1012
import net.minecraftforge.common.ToolAction;
1113
import org.spongepowered.asm.mixin.Mixin;
1214
import smartin.miapi.forge.compat.ModularItemInject;
15+
import smartin.miapi.item.FakeEnchantment;
1316
import smartin.miapi.item.modular.items.*;
1417

18+
import java.util.HashMap;
19+
import java.util.Map;
20+
1521
@Mixin(
1622
value = {
1723
ExampleModularItem.class,
@@ -63,6 +69,16 @@ public int getEnchantmentValue(ItemStack stack) {
6369
return getEnchantmentValueModular(stack);
6470
}
6571

72+
public int getEnchantmentLevel(ItemStack stack, Enchantment enchantment) {
73+
return FakeEnchantment.getFakeLevel(enchantment, stack, EnchantmentHelper.getTagEnchantmentLevel(enchantment, stack));
74+
}
75+
76+
public Map<Enchantment, Integer> getAllEnchantments(ItemStack stack) {
77+
Map<Enchantment, Integer> enchants = new HashMap<>(EnchantmentHelper.fromNbt(stack.getEnchantments()));
78+
FakeEnchantment.addEnchantments((enchants::put), stack);
79+
return enchants;
80+
}
81+
6682
public Multimap<EntityAttribute, EntityAttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
6783
return getAttributeModifiersModular(slot, stack);
6884
}

0 commit comments

Comments
 (0)