diff --git a/src/main/java/electroblob/wizardry/spell/ArcaneJammer.java b/src/main/java/electroblob/wizardry/spell/ArcaneJammer.java index 7f4be44a..a91ace77 100644 --- a/src/main/java/electroblob/wizardry/spell/ArcaneJammer.java +++ b/src/main/java/electroblob/wizardry/spell/ArcaneJammer.java @@ -1,5 +1,6 @@ package electroblob.wizardry.spell; +import electroblob.wizardry.Wizardry; import electroblob.wizardry.event.SpellCastEvent; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryPotions; @@ -9,6 +10,7 @@ import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityEvoker; import net.minecraft.entity.monster.EntitySpellcasterIllager; import net.minecraft.item.EnumAction; import net.minecraft.potion.PotionEffect; @@ -18,12 +20,21 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import java.lang.reflect.Field; + @Mod.EventBusSubscriber public class ArcaneJammer extends SpellRay { + private static final Field spellTicks; + + static { // Yay more reflection + spellTicks = ObfuscationReflectionHelper.findField(EntityEvoker.class, "field_193087_b"); + } + public ArcaneJammer(){ super("arcane_jammer", false, EnumAction.NONE); this.soundValues(0.7f, 1, 0.4f); @@ -68,9 +79,17 @@ public class ArcaneJammer extends SpellRay { @SubscribeEvent public static void onLivingUpdateEvent(LivingEvent.LivingUpdateEvent event){ + if(event.getEntity() instanceof EntitySpellcasterIllager && event.getEntityLiving().isPotionActive(WizardryPotions.arcane_jammer)){ + ((EntitySpellcasterIllager)event.getEntity()).setSpellType(EntitySpellcasterIllager.SpellType.NONE); + + try{ + spellTicks.set(event.getEntity(), 10); + }catch(IllegalAccessException e){ + Wizardry.logger.error("Error setting evoker spell timer:", e); + } } }