Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

I have made a monster entity with high movement speed. I have set up basic mobs goals and everything works as planned, except for one thing.

When my entity walks around randomly just like most other vanilla living entities, the movement speed is way too slow, much slower than the movement speed attribute. But as soon as the entity sees a mob or a player to kill, the movement speed works just fine.

I have also made an entity that extends the vanilla zombie, and for that mob, it works just fine, the random walking uses the fast movement speed I gave the mob.

Any ideas as to why this happens ?

public class AlternateEntity extends Monster {

    public AlternateEntity(EntityType<AlternateEntity> entityType, Level level) {
        super(entityType, level);
        
        this.xpReward = 25;
        this.setMaxUpStep(2.0F);

    }
    
    @Override
    protected void registerGoals() {
        
        super.registerGoals();
        this.goalSelector.addGoal(0, new FloatGoal(this));
        this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 0.4D));
        this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 8.0F));
        this.goalSelector.addGoal(9, new RandomLookAroundGoal(this));
        this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F));
        this.addBehaviourGoals();
    }
    
    protected void addBehaviourGoals() {
          this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, false));
          this.targetSelector.addGoal(2, new HurtByTargetGoal(this));
          this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true));
          this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false));
          this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));

       }
     
     public static AttributeSupplier.Builder createAttributes() {
         return Monster.createMobAttributes()
                 .add(Attributes.MAX_HEALTH, 100.0D)
                 .add(Attributes.MOVEMENT_SPEED, 0.38F)
                 .add(Attributes.ATTACK_DAMAGE, 13.0D)
                 .add(Attributes.KNOCKBACK_RESISTANCE, 0.5D) 
                 .add(Attributes.FOLLOW_RANGE, 40.0D);
     }
     
     public static boolean canSpawn(EntityType<AlternateEntity> entityType, LevelAccessor level, MobSpawnType spawnType, BlockPos position, RandomSource random) {
            return HardmodeRequiemFunctions.isHardmode((ServerLevel)level);
     }
    
    // Inflicts blindness on attack and plays sound
     public boolean doHurtTarget(Entity entity) {
          boolean flag = super.doHurtTarget(entity);
          if (flag && entity instanceof LivingEntity) {
              ((LivingEntity)entity).addEffect(new MobEffectInstance(MobEffects.BLINDNESS, 200, 0));
              this.playSound(SoundInit.ALTERNATE_ATTACK.get());
          }

          return flag;
     }
     
    @Override
    protected SoundEvent getAmbientSound() {
        
        return SoundInit.ALTERNATE_AMBIENT.get();
    }
     
    @Override
    protected SoundEvent getDeathSound() {
    
        return SoundInit.ALTERNATE_DEATH.get();
    }
     
    @Override
    protected SoundEvent getHurtSound(DamageSource p_33034_) {
         
        return SoundInit.ALTERNATE_HURT.get();
    }
    
    @Override
    protected void playStepSound(BlockPos pos, BlockState blockIn) {
        
        this.playSound(SoundInit.ALTERNATE_STEP.get(), 0.20F, 0.5F);
     }

}

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.