Unstoppable Custom Entity

Discussion in 'Plugin Development' started by MightyOne, Oct 12, 2017.

  1. Offline


    I tried to create a custom entity class in 1.12 to make a ridable cow. So basically I can control the cow but it is still a bit buggy

    1. For the first minute on a new cow I can only control it forward
    2. After that minute it gets super sanic speed, even if I tried to prevent that by multiplying the motion (motX, motZ) with backToNormalSpeed

    here is the class so far:

    public class DisabledCow extends EntityCow{
        private static final float backToNormalSpeed = 0.5f;
        public DisabledCow(World world) {
            this.P = 1f;
        //movement       x      y      z
        public void a(float f, float f1, float f2) {
            //if has passenger and its is alive
            if(isVehicle() && cV()) {
                EntityLiving entityliving = (EntityLiving)bE();
                this.lastYaw = this.yaw = entityliving.yaw;
                this.pitch = entityliving.pitch * 0.5F;
                this.setYawPitch(this.yaw, this.pitch);
                this.aQ = this.aO = this.yaw;
                //be, bg, bh - Player WASD+Space?
                f = entityliving.be * 0.5f;
                f2 = entityliving.bg;
                //slow down backwards
                if (f2 <= 0.0f)
                    f2 *= 0.25;
                //calculate in which direction cow should go
                if (f2 > 0f) {
                    float f3 = MathHelper.sin(this.yaw * 0.017453292F);
                    float f4 = MathHelper.cos(this.yaw * 0.017453292F);
                    this.motX += -0.4F * f3 * backToNormalSpeed;
                    this.motZ += 0.4F * f4 * backToNormalSpeed;
            super.a(f, f1, f2);
        //is passenger a living entity
        public boolean cV() {
            return bE() instanceof EntityLiving;
        //get passenger
        @Override @Nullable
        public Entity bE() {
            return bF().isEmpty() ? null : (Entity)bF().get(0);
    Well I copied the majority from EntityHorseAbstract as good as possible and did not change methode names. I hope the code is selfexplanatory with the comments.

    Any idea how to fix these bugs or where they come from?
    Any help would be appreciated.
    Last edited: Oct 12, 2017

Share This Page