Оцепенение на блоке

Версия Minecraft
1.12.2
API
Forge
38
0
Всем привет, хочу сделать такой блок, который не дает двигаться, когда ты стоишь на нем...
Подсказали посмотреть исходники магма блока, и обнулять в них вектор движения...
Собсна я сделал вот так:
Мой блок:
public void onEntityWalk(World worldIn, BlockPos pos, Entity entityIn) {
        if (!entityIn.isImmuneToFire() && entityIn instanceof EntityLivingBase && !EnchantmentHelper.hasFrostWalkerEnchantment((EntityLivingBase)entityIn)) {
            entityIn.motionX = 0;
            entityIn.motionY = 0;
            entityIn.motionZ = 0;
        }
    }
но, когда я прохожу по своему блоку, меня просто замедляет (причем не очень сильно)....
Буду рад любой помощи и совету!
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Просто movement обнулять недостаточно, ты его в одном месте обнуляешь, но потом он меняется из-за того что ты пытаешься идти и к координатам прибавляется, и всё в один и тот же тик (необязательно в таком порядке).
Так что тебе надо будет ещё фиксировать позицию (и то наверн дёрганно будет).

Или другой вариант - при entity update ивенте чекаешь блок под ногами и там делаешь вышеописанное, в какой-то конфигурации должно быть норм
 
Сверху