Замедление игрока.

Версия Minecraft
1.12.2
Решение
В 1.12.2 так же, как и в 1.7.10 (проверено)

Результаты раскопок:

Из блока паутины:
Java:
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
    {
        entity.setInWeb();
    }

Из абстрактного энтити:
Java:
public void setInWeb()
    {
        this.isInWeb = true;
        this.fallDistance = 0.0F;
    }

Из moveEntity:
Java:
if (this.isInWeb)
            {
                this.isInWeb = false;
                x *= 0.25D;
                y *= 0.05000000074505806D;
                z *= 0.25D;
                this.motionX = 0.0D;
                this.motionY = 0.0D;
                this.motionZ = 0.0D;
            }

А если по русски, то пока энтити находится в блоке паутины, каждый тик его текущую...
В 1.12.2 так же, как и в 1.7.10 (проверено)

Результаты раскопок:

Из блока паутины:
Java:
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
    {
        entity.setInWeb();
    }

Из абстрактного энтити:
Java:
public void setInWeb()
    {
        this.isInWeb = true;
        this.fallDistance = 0.0F;
    }

Из moveEntity:
Java:
if (this.isInWeb)
            {
                this.isInWeb = false;
                x *= 0.25D;
                y *= 0.05000000074505806D;
                z *= 0.25D;
                this.motionX = 0.0D;
                this.motionY = 0.0D;
                this.motionZ = 0.0D;
            }

А если по русски, то пока энтити находится в блоке паутины, каждый тик его текущую скорость делит на 4.

Вариант для впихивания в потиковые события (1.12.2):
Java:
public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state,  Entity entity) {
        entity.motionX *= 0.25D;
        entity.motionY *= 0.05000000074505806D;
        entity.motionZ *= 0.25D;
    }
 
Последнее редактирование:
Назад
Сверху