2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
5.8 KiB
Java

package com.zivilon.cinder_loe.mixins;
import com.zivilon.cinder_loe.enchants.LOTREnchantmentExtraSpecial;
import com.zivilon.cinder_loe.enchants.LOTREnchantmentWeakProtectionRanged;
import com.zivilon.cinder_loe.enchants.LOTREnchantmentArmorSpecial;
import com.zivilon.cinder_loe.util.Utilities;
import lotr.common.enchant.*;
import lotr.common.entity.npc.LOTREntityNPC;
import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.lang.reflect.Field;
import java.util.Map;
@Mixin(LOTREnchantment.class)
public class MixinLOTREnchantment {
@Shadow
private boolean bypassAnvilLimit;
@Inject(method = "<clinit>", at = @At("TAIL"))
private static void onStaticInit(CallbackInfo ci) {
// Add your new enchantments here
try {
LOTREnchantment protectRangedWeak1 = new LOTREnchantmentWeakProtectionRanged("protectRangedWeak1", -1).setEnchantWeight(0);
LOTREnchantment protectRangedWeak2 = new LOTREnchantmentWeakProtectionRanged("protectRangedWeak2", -2).setEnchantWeight(0);
LOTREnchantment rangedWeak3 = new LOTREnchantmentRangedDamage("rangedWeak3", 0.25f);
LOTREnchantment weak4 = new LOTREnchantmentDamage("weak4", -3.0f).setEnchantWeight(0);
//LOTREnchantment chill = new LOTREnchantmentExtraSpecial("strong5", 1.0f).setEnchantWeight(0);
LOTREnchantment chill = new LOTREnchantmentDamage("strong5", 3.25f).setEnchantWeight(0);
LOTREnchantment rangedStrong4 = new LOTREnchantmentRangedDamage("rangedStrong4", 1.4f).setEnchantWeight(0).setSkilful();
LOTREnchantment meleeReach2 = new LOTREnchantmentMeleeReach("meleeReach2", 1.33f).setEnchantWeight(0).setSkilful();
LOTREnchantment meleeSpeed2 = new LOTREnchantmentMeleeSpeed("meleeSpeed2", 1.33f).setEnchantWeight(0).setSkilful();
LOTREnchantment swiftness = new LOTREnchantmentArmorSpecial("swiftness").setEnchantWeight(0).setSkilful();
LOTREnchantment fireRepair = new LOTREnchantmentArmorSpecial("fireRepair").setEnchantWeight(0).setSkilful();
LOTREnchantment mountArmor = new LOTREnchantmentArmorSpecial("mountArmor").setEnchantWeight(0).setSkilful();
LOTREnchantment stealth = new LOTREnchantmentArmorSpecial("stealth").setEnchantWeight(0).setSkilful();
LOTREnchantment meleeSturdy = new LOTREnchantmentWeaponSpecial("meleeSturdy").setEnchantWeight(0).setValueModifier(1);
LOTREnchantment armorSturdy = new LOTREnchantmentArmorSpecial("armorSturdy").setEnchantWeight(0).setValueModifier(1);
LOTREnchantment baneNPC = new LOTREnchantmentBane("baneNPC", 4.0f, LOTREntityNPC.class).setEnchantWeight(0);
LOTREnchantment wrath = new LOTREnchantmentWeaponSpecial("wrath").setEnchantWeight(0);
LOTREnchantment.allEnchantments.add(baneNPC);
LOTREnchantment.allEnchantments.add(protectRangedWeak1);
LOTREnchantment.allEnchantments.add(protectRangedWeak2);
rangedWeak3.allEnchantments.add(rangedWeak3);
LOTREnchantment.allEnchantments.add(weak4);
LOTREnchantment.allEnchantments.add(chill);
LOTREnchantment.allEnchantments.add(rangedStrong4);
LOTREnchantment.allEnchantments.add(meleeReach2);
LOTREnchantment.allEnchantments.add(meleeSpeed2);
LOTREnchantment.allEnchantments.add(meleeSturdy);
LOTREnchantment.allEnchantments.add(armorSturdy);
LOTREnchantment.allEnchantments.add(swiftness);
LOTREnchantment.allEnchantments.add(fireRepair);
LOTREnchantment.allEnchantments.add(mountArmor);
LOTREnchantment.allEnchantments.add(stealth);
LOTREnchantment.allEnchantments.add(wrath);
Field enchantsByNameField = LOTREnchantment.class.getDeclaredField("enchantsByName");
enchantsByNameField.setAccessible(true);
@SuppressWarnings("unchecked")
Map<String, LOTREnchantment> enchantsByName = (Map<String, LOTREnchantment>) enchantsByNameField.get(null);
enchantsByName.put(baneNPC.enchantName, baneNPC);
enchantsByName.put(protectRangedWeak1.enchantName, protectRangedWeak1);
enchantsByName.put(protectRangedWeak2.enchantName, protectRangedWeak2);
enchantsByName.put(rangedWeak3.enchantName, rangedWeak3);
enchantsByName.put(weak4.enchantName, weak4);
enchantsByName.put(chill.enchantName, chill);
enchantsByName.put(rangedStrong4.enchantName, rangedStrong4);
enchantsByName.put(meleeReach2.enchantName, meleeReach2);
enchantsByName.put(meleeSpeed2.enchantName, meleeSpeed2);
enchantsByName.put(meleeSturdy.enchantName, meleeSturdy);
enchantsByName.put(armorSturdy.enchantName, armorSturdy);
enchantsByName.put(swiftness.enchantName, swiftness);
enchantsByName.put(fireRepair.enchantName, fireRepair);
enchantsByName.put(mountArmor.enchantName, mountArmor);
enchantsByName.put(stealth.enchantName, stealth);
enchantsByName.put(wrath.enchantName, wrath);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
/**
* @author MrJeep20
* @reason Bad enchantments will not count towards 3 modifier limit now
**/
@Overwrite(remap = false)
public boolean bypassAnvilLimit() {
if (Utilities.isBadEnch((LOTREnchantment)(Object)this))
return true;
return this.bypassAnvilLimit;
}
}