mirror of
https://github.com/FatherToast/SpecialMobs.git
synced 2025-08-08 11:21:22 +00:00
Spitfire mobs
This commit is contained in:
parent
30df52a0e2
commit
214bd23b92
4 changed files with 61 additions and 7 deletions
|
@ -55,11 +55,11 @@ public class MobFamily<T extends LivingEntity> {
|
|||
|
||||
public static final MobFamily<AbstractSkeletonEntity> SKELETON = new MobFamily<>(
|
||||
"Skeleton", "skeletons", 0xC1C1C1, new EntityType[] { EntityType.SKELETON, EntityType.STRAY },
|
||||
"Brute", "Fire", "Gatling", "Giant", "Knight", "Ninja", "Poison", "Sniper", /*"Spitfire",*/ "Stray"
|
||||
"Brute", "Fire", "Gatling", "Giant", "Knight", "Ninja", "Poison", "Sniper", "Spitfire", "Stray"
|
||||
);
|
||||
public static final MobFamily<AbstractSkeletonEntity> WITHER_SKELETON = new MobFamily<>(
|
||||
"WitherSkeleton", "wither skeletons", 0x141414, new EntityType[] { EntityType.WITHER_SKELETON },
|
||||
"Brute", "Gatling", "Giant", "Knight", "Ninja", "Sniper"//, "Spitfire"
|
||||
"Brute", "Gatling", "Giant", "Knight", "Ninja", "Sniper", "Spitfire"
|
||||
);
|
||||
|
||||
public static final MobFamily<SlimeEntity> SLIME = new MobFamily<>(
|
||||
|
|
|
@ -12,8 +12,10 @@ import net.minecraft.entity.EntityType;
|
|||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifierMap;
|
||||
import net.minecraft.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.entity.projectile.SmallFireballEntity;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
@ -73,9 +75,12 @@ public class SpitfireSkeletonEntity extends _SpecialSkeletonEntity {
|
|||
@Override
|
||||
protected void registerVariantGoals() {
|
||||
getSpecialData().rangedAttackDamage += 2.0F;
|
||||
getSpecialData().rangedAttackSpread *= 0.5F;
|
||||
}
|
||||
|
||||
/** Override to change this entity's chance to spawn with a melee weapon. */
|
||||
@Override
|
||||
protected double getVariantMeleeChance() { return 0.0; }
|
||||
|
||||
/** Override to apply effects when this entity hits a target with a melee attack. */
|
||||
@Override
|
||||
protected void onVariantAttack( Entity target ) {
|
||||
|
@ -85,9 +90,29 @@ public class SpitfireSkeletonEntity extends _SpecialSkeletonEntity {
|
|||
/** Called to attack the target with a ranged attack. */
|
||||
@Override
|
||||
public void performRangedAttack( LivingEntity target, float damageMulti ) {
|
||||
//TODO
|
||||
if( !isSilent() ) level.levelEvent( null, 1018, blockPosition(), 0 );
|
||||
|
||||
final float accelVariance = MathHelper.sqrt( distanceTo( target ) ) * 0.5F * getSpecialData().rangedAttackSpread;
|
||||
|
||||
for( int i = 0; i < 3; i++ ) {
|
||||
final double dX = target.getX() - getX() + getRandom().nextGaussian() * accelVariance;
|
||||
final double dY = target.getEyeY() - getEyeY();
|
||||
final double dZ = target.getZ() - getZ() + getRandom().nextGaussian() * accelVariance;
|
||||
|
||||
final SmallFireballEntity fireball = new SmallFireballEntity( level, this, dX, dY, dZ );
|
||||
fireball.setPos( fireball.getX(), getEyeY() - 0.1, fireball.getZ() );
|
||||
level.addFreshEntity( fireball );
|
||||
}
|
||||
}
|
||||
|
||||
/** Sets this entity as a baby. */
|
||||
@Override
|
||||
public void setBaby( boolean value ) { }
|
||||
|
||||
/** @return True if this entity is a baby. */
|
||||
@Override
|
||||
public boolean isBaby() { return false; }
|
||||
|
||||
private static final ResourceLocation[] TEXTURES = {
|
||||
GET_TEXTURE_PATH( "fire" )
|
||||
};
|
||||
|
|
|
@ -12,8 +12,10 @@ import net.minecraft.entity.EntityType;
|
|||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifierMap;
|
||||
import net.minecraft.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.entity.projectile.SmallFireballEntity;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
@ -62,7 +64,7 @@ public class SpitfireWitherSkeletonEntity extends _SpecialWitherSkeletonEntity {
|
|||
|
||||
public SpitfireWitherSkeletonEntity( EntityType<? extends _SpecialWitherSkeletonEntity> entityType, World world ) {
|
||||
super( entityType, world );
|
||||
getSpecialData().setBaseScale( 1.5F );
|
||||
getSpecialData().setBaseScale( 1.8F );
|
||||
getSpecialData().setDamagedByWater( true );
|
||||
maxUpStep = 1.0F;
|
||||
xpReward += 2;
|
||||
|
@ -72,9 +74,12 @@ public class SpitfireWitherSkeletonEntity extends _SpecialWitherSkeletonEntity {
|
|||
@Override
|
||||
protected void registerVariantGoals() {
|
||||
getSpecialData().rangedAttackDamage += 2.0F;
|
||||
getSpecialData().rangedAttackSpread *= 0.5F;
|
||||
}
|
||||
|
||||
/** Override to change this entity's chance to spawn with a bow. */
|
||||
@Override
|
||||
protected double getVariantBowChance() { return 1.0; }
|
||||
|
||||
/** Override to apply effects when this entity hits a target with a melee attack. */
|
||||
@Override
|
||||
protected void onVariantAttack( Entity target ) {
|
||||
|
@ -84,9 +89,29 @@ public class SpitfireWitherSkeletonEntity extends _SpecialWitherSkeletonEntity {
|
|||
/** Called to attack the target with a ranged attack. */
|
||||
@Override
|
||||
public void performRangedAttack( LivingEntity target, float damageMulti ) {
|
||||
//TODO
|
||||
if( !isSilent() ) level.levelEvent( null, 1018, blockPosition(), 0 );
|
||||
|
||||
final float accelVariance = MathHelper.sqrt( distanceTo( target ) ) * 0.5F * getSpecialData().rangedAttackSpread;
|
||||
|
||||
for( int i = 0; i < 4; i++ ) {
|
||||
final double dX = target.getX() - getX() + getRandom().nextGaussian() * accelVariance;
|
||||
final double dY = target.getEyeY() - getEyeY();
|
||||
final double dZ = target.getZ() - getZ() + getRandom().nextGaussian() * accelVariance;
|
||||
|
||||
final SmallFireballEntity fireball = new SmallFireballEntity( level, this, dX, dY, dZ );
|
||||
fireball.setPos( fireball.getX(), getEyeY() - 0.1, fireball.getZ() );
|
||||
level.addFreshEntity( fireball );
|
||||
}
|
||||
}
|
||||
|
||||
/** Sets this entity as a baby. */
|
||||
@Override
|
||||
public void setBaby( boolean value ) { }
|
||||
|
||||
/** @return True if this entity is a baby. */
|
||||
@Override
|
||||
public boolean isBaby() { return false; }
|
||||
|
||||
private static final ResourceLocation[] TEXTURES = {
|
||||
GET_TEXTURE_PATH( "fire" )
|
||||
};
|
||||
|
|
|
@ -75,6 +75,10 @@ public class FireZombieEntity extends _SpecialZombieEntity {
|
|||
return arrow;
|
||||
}
|
||||
|
||||
/** @return True if this entity should appear to be on fire. */
|
||||
@Override
|
||||
public boolean isOnFire() { return isAlive() && !isInWaterRainOrBubble(); }
|
||||
|
||||
/** @return The sound this entity makes idly. */
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() { return SoundEvents.HUSK_AMBIENT; }
|
||||
|
|
Loading…
Add table
Reference in a new issue