I've been using IntelliJ IDEA for my recent coding in java, especially Minecraft.
I tried extending the class AbstractSkeletonEntity which is an abstract class with one particular method that has been trouble for me recently:
abstract SoundEvent getStepSound();
in my own code, I try overriding the method:
public class SkeletonKnightEntity extends AbstractSkeletonEntity {
public boolean SkeletonCanSpawn = true;
public SkeletonKnightEntity(EntityType<? extends AbstractSkeletonEntity> entityType, World world) {
super(entityType, world);
}
protected SoundEvent getAmbientSound() {
return SoundEvents.ENTITY_WITHER_SKELETON_AMBIENT;
}
protected SoundEvent getHurtSound(DamageSource source) {
return SoundEvents.ENTITY_WITHER_SKELETON_HURT;
}
protected SoundEvent getDeathSound() {
return SoundEvents.ENTITY_WITHER_SKELETON_DEATH;
}
@Override
protected void playStepSound(BlockPos pos, BlockState state) {
this.playSound(this.getStepSound(), 0.15F, 1.0F);
}
@Override
protected SoundEvent getStepSound() { return SoundEvents.ENTITY_WITHER_SKELETON_STEP;}
//^ here is the error
@Override
public void attack(LivingEntity target, float pullProgress) {
}
@Override
public void tickMovement() {
super.tickMovement();
}
public static DefaultAttributeContainer.Builder createSKnightAttributes(){
return HostileEntity.createHostileAttributes()
.add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.25D)
.add(EntityAttributes.GENERIC_FOLLOW_RANGE, 30)
.add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 1)
;
}
@Override
protected void initGoals() {
this.goalSelector.add(3, new FleeEntityGoal(this, WolfEntity.class, 6.0F, 1.0D, 1.2D));
this.goalSelector.add(5, new WanderAroundFarGoal(this, 1.0D));
this.goalSelector.add(6, new LookAtEntityGoal(this, PlayerEntity.class, 8.0F));
this.goalSelector.add(6, new LookAroundGoal(this));
this.targetSelector.add(1, new RevengeGoal(this, new Class[0]));
this.targetSelector.add(2, new FollowTargetGoal(this, PlayerEntity.class, true));
this.targetSelector.add(3, new FollowTargetGoal(this, IronGolemEntity.class, true));
this.targetSelector.add(3, new FollowTargetGoal(this, TurtleEntity.class, 10, true, false, TurtleEntity.BABY_TURTLE_ON_LAND_FILTER));
}
protected void dropEquipment(DamageSource source, int lootingMultiplier, boolean allowDrops) {
super.dropEquipment(source, lootingMultiplier, allowDrops);
Entity entity = source.getAttacker();
if (entity instanceof CreeperEntity) {
CreeperEntity creeperEntity = (CreeperEntity)entity;
if (creeperEntity.shouldDropHead()) {
creeperEntity.onHeadDropped();
this.dropItem(Items.SKELETON_SKULL);
}
}
}
}
the IDE tells me for the code to work, I have to declare SkeletonKnightEntity abstract or implement the abstract method getStepSound() which I already did. when I try overriding the getStepSound() method, it tells me it's not overriding anything from the superclass. does anyone know what could be causing this?