Set evoker spell timer as well as spell type when under the arcane jammer effect, fixes #244
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user