diff --git a/src/main/java/fathertoast/specialmobs/common/entity/zombie/MadScientistZombieEntity.java b/src/main/java/fathertoast/specialmobs/common/entity/zombie/MadScientistZombieEntity.java index fbbcd57..46461a0 100644 --- a/src/main/java/fathertoast/specialmobs/common/entity/zombie/MadScientistZombieEntity.java +++ b/src/main/java/fathertoast/specialmobs/common/entity/zombie/MadScientistZombieEntity.java @@ -4,9 +4,8 @@ import fathertoast.specialmobs.common.bestiary.BestiaryInfo; import fathertoast.specialmobs.common.bestiary.SpecialMob; import fathertoast.specialmobs.common.core.register.SMItems; import fathertoast.specialmobs.common.entity.MobHelper; +import fathertoast.specialmobs.common.entity.ai.AIHelper; import fathertoast.specialmobs.common.entity.ai.SpecialInjectCreeperGoal; -import fathertoast.specialmobs.common.entity.ai.SpecialLeapAtTargetGoal; -import fathertoast.specialmobs.common.entity.spider._SpecialSpiderEntity; import fathertoast.specialmobs.common.util.AttributeHelper; import fathertoast.specialmobs.common.util.References; import fathertoast.specialmobs.datagen.loot.LootTableBuilder; @@ -16,13 +15,10 @@ import net.minecraft.entity.ai.attributes.AttributeModifierMap; import net.minecraft.entity.ai.attributes.Attributes; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.nbt.CompoundNBT; import net.minecraft.potion.EffectInstance; import net.minecraft.potion.Effects; -import net.minecraft.util.Hand; import net.minecraft.util.ResourceLocation; -import net.minecraft.world.Difficulty; import net.minecraft.world.DifficultyInstance; import net.minecraft.world.IServerWorld; import net.minecraft.world.World; @@ -45,8 +41,8 @@ public class MadScientistZombieEntity extends _SpecialZombieEntity { @SpecialMob.AttributeCreator public static AttributeModifierMap.MutableAttribute createAttributes() { - return AttributeHelper.of( _SpecialSpiderEntity.createAttributes() ) - .addAttribute( Attributes.MOVEMENT_SPEED, 1.1 ) + return AttributeHelper.of( _SpecialZombieEntity.createAttributes() ) + .multAttribute( Attributes.MOVEMENT_SPEED, 1.1 ) .build(); } @@ -74,7 +70,7 @@ public class MadScientistZombieEntity extends _SpecialZombieEntity { /** Override to change this entity's AI goals. */ @Override protected void registerVariantGoals() { - goalSelector.addGoal( 3, new SpecialInjectCreeperGoal<>( + AIHelper.insertGoal( goalSelector, 2, new SpecialInjectCreeperGoal<>( this, 1.0D, 20.0D, ( madman, creeper ) -> creeper.isAlive() && !creeper.isPowered() && madman.getSensing().canSee( creeper ) ) ); } diff --git a/src/main/java/fathertoast/specialmobs/common/entity/zombie/_SpecialZombieEntity.java b/src/main/java/fathertoast/specialmobs/common/entity/zombie/_SpecialZombieEntity.java index 4b09c46..8232324 100644 --- a/src/main/java/fathertoast/specialmobs/common/entity/zombie/_SpecialZombieEntity.java +++ b/src/main/java/fathertoast/specialmobs/common/entity/zombie/_SpecialZombieEntity.java @@ -5,7 +5,6 @@ import fathertoast.specialmobs.common.bestiary.SpecialMob; import fathertoast.specialmobs.common.core.SpecialMobs; import fathertoast.specialmobs.common.entity.ISpecialMob; import fathertoast.specialmobs.common.entity.SpecialMobData; -import fathertoast.specialmobs.common.entity.spider._SpecialSpiderEntity; import fathertoast.specialmobs.common.util.References; import fathertoast.specialmobs.datagen.loot.LootTableBuilder; import mcp.MethodsReturnNonnullByDefault; @@ -98,7 +97,7 @@ public class _SpecialZombieEntity extends ZombieEntity implements ISpecialMob<_S //--------------- Family-Specific Implementations ---------------- /** The parameter for special mob render scale. */ - private static final DataParameter SCALE = EntityDataManager.defineId( _SpecialSpiderEntity.class, DataSerializers.FLOAT ); + private static final DataParameter SCALE = EntityDataManager.defineId( _SpecialZombieEntity.class, DataSerializers.FLOAT ); /** Called from the Entity.class constructor to define data watcher variables. */ @Override diff --git a/src/main/java/fathertoast/specialmobs/common/util/AnnotationHelper.java b/src/main/java/fathertoast/specialmobs/common/util/AnnotationHelper.java index 30d9a7f..179e71b 100644 --- a/src/main/java/fathertoast/specialmobs/common/util/AnnotationHelper.java +++ b/src/main/java/fathertoast/specialmobs/common/util/AnnotationHelper.java @@ -41,7 +41,7 @@ public final class AnnotationHelper { return constructor.newInstance( entityType, world ); } catch( InstantiationException | IllegalAccessException | InvocationTargetException ex ) { - throw new RuntimeException( "Class for " + constructor.getDeclaringClass().getName() + " has invalid constructor", ex ); + throw new RuntimeException( "Caught exception during instantiation of " + constructor.getDeclaringClass().getName(), ex ); } }; } @@ -81,9 +81,9 @@ public final class AnnotationHelper { throw new RuntimeException( "Entity class for " + species.name + " has invalid language provider method", ex ); } } - + /** Gets the translations from a mod item. Throws an exception if anything goes wrong. */ - public static String[] getTranslations(Item item) { + public static String[] getTranslations( Item item ) { try { return (String[]) getMethod( item.getClass(), SpecialMob.LanguageProvider.class ) .invoke( null, item.getDescriptionId() ); @@ -92,7 +92,7 @@ public final class AnnotationHelper { throw new RuntimeException( "Item class for " + item.getRegistryName() + " has invalid language provider method", ex ); } } - + /** Builds a loot table from a special mob species. Throws an exception if anything goes wrong. */ public static LootTableBuilder buildLootTable( MobFamily.Species species ) { try {