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;
|
package electroblob.wizardry.spell;
|
||||||
|
|
||||||
|
import electroblob.wizardry.Wizardry;
|
||||||
import electroblob.wizardry.event.SpellCastEvent;
|
import electroblob.wizardry.event.SpellCastEvent;
|
||||||
import electroblob.wizardry.registry.WizardryItems;
|
import electroblob.wizardry.registry.WizardryItems;
|
||||||
import electroblob.wizardry.registry.WizardryPotions;
|
import electroblob.wizardry.registry.WizardryPotions;
|
||||||
@@ -9,6 +10,7 @@ import electroblob.wizardry.util.SpellModifiers;
|
|||||||
import electroblob.wizardry.util.WizardryUtilities;
|
import electroblob.wizardry.util.WizardryUtilities;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.monster.EntityEvoker;
|
||||||
import net.minecraft.entity.monster.EntitySpellcasterIllager;
|
import net.minecraft.entity.monster.EntitySpellcasterIllager;
|
||||||
import net.minecraft.item.EnumAction;
|
import net.minecraft.item.EnumAction;
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.PotionEffect;
|
||||||
@@ -18,12 +20,21 @@ import net.minecraft.util.math.Vec3d;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.event.entity.living.LivingEvent;
|
import net.minecraftforge.event.entity.living.LivingEvent;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
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.EventPriority;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
@Mod.EventBusSubscriber
|
@Mod.EventBusSubscriber
|
||||||
public class ArcaneJammer extends SpellRay {
|
public class ArcaneJammer extends SpellRay {
|
||||||
|
|
||||||
|
private static final Field spellTicks;
|
||||||
|
|
||||||
|
static { // Yay more reflection
|
||||||
|
spellTicks = ObfuscationReflectionHelper.findField(EntityEvoker.class, "field_193087_b");
|
||||||
|
}
|
||||||
|
|
||||||
public ArcaneJammer(){
|
public ArcaneJammer(){
|
||||||
super("arcane_jammer", false, EnumAction.NONE);
|
super("arcane_jammer", false, EnumAction.NONE);
|
||||||
this.soundValues(0.7f, 1, 0.4f);
|
this.soundValues(0.7f, 1, 0.4f);
|
||||||
@@ -68,9 +79,17 @@ public class ArcaneJammer extends SpellRay {
|
|||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onLivingUpdateEvent(LivingEvent.LivingUpdateEvent event){
|
public static void onLivingUpdateEvent(LivingEvent.LivingUpdateEvent event){
|
||||||
|
|
||||||
if(event.getEntity() instanceof EntitySpellcasterIllager
|
if(event.getEntity() instanceof EntitySpellcasterIllager
|
||||||
&& event.getEntityLiving().isPotionActive(WizardryPotions.arcane_jammer)){
|
&& event.getEntityLiving().isPotionActive(WizardryPotions.arcane_jammer)){
|
||||||
|
|
||||||
((EntitySpellcasterIllager)event.getEntity()).setSpellType(EntitySpellcasterIllager.SpellType.NONE);
|
((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