aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/mixin/mixins
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/mixin/mixins')
-rw-r--r--src/main/java/kubatech/mixin/mixins/minecraft/EnchantmentHelperMixin.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/kubatech/mixin/mixins/minecraft/EnchantmentHelperMixin.java b/src/main/java/kubatech/mixin/mixins/minecraft/EnchantmentHelperMixin.java
new file mode 100644
index 0000000000..e07c0d335a
--- /dev/null
+++ b/src/main/java/kubatech/mixin/mixins/minecraft/EnchantmentHelperMixin.java
@@ -0,0 +1,40 @@
+package kubatech.mixin.mixins.minecraft;
+
+import static kubatech.loaders.MobRecipeLoader.randomEnchantmentDetectedString;
+
+import java.util.Random;
+import kubatech.api.utils.FastRandom;
+import kubatech.loaders.MobRecipeLoader;
+import net.minecraft.enchantment.EnchantmentHelper;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagInt;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.ModifyVariable;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+
+@SuppressWarnings("unused")
+@Mixin(value = EnchantmentHelper.class)
+public class EnchantmentHelperMixin {
+
+ private static final Random rnd = new FastRandom();
+
+ @Inject(method = "addRandomEnchantment", at = @At("HEAD"), require = 1)
+ private static void addRandomEnchantmentDetector(
+ Random random,
+ ItemStack itemStack,
+ int enchantabilityLevel,
+ CallbackInfoReturnable<ItemStack> callbackInfoReturnable) {
+ if (MobRecipeLoader.isInGenerationProcess && random instanceof MobRecipeLoader.fakeRand) {
+ itemStack.setTagInfo(randomEnchantmentDetectedString, new NBTTagInt(enchantabilityLevel));
+ }
+ }
+
+ @ModifyVariable(method = "addRandomEnchantment", at = @At("HEAD"), ordinal = 0, argsOnly = true, require = 1)
+ private static Random addRandomEnchantmentModifier(Random random) {
+ if (!MobRecipeLoader.isInGenerationProcess) return random;
+ if (random instanceof MobRecipeLoader.fakeRand) return rnd;
+ return random;
+ }
+}