Through the Grass

Версия Minecraft
1.12.2

sk9zist :l

Исправился
981
18
157
Как “телепортировать" игрока в землю. Ну, как бы чтобы он плавно в нее уходил полностью. Пробовал телепортировать, только вот получалось не правильно.
 

sk9zist :l

Исправился
981
18
157
что-то вроде зыбучего песка?
Ну, нет. Должен сказать, что я не настолько предсказуемый. Ктому-же такой мод уже есть. И даже если его нет на 1.12.2, я делаю немного другое.
Я делаю что-то вроде телепорта, когда ты уходишь в землю, - потом выходишь из земли но уже в другом месте. Но зыбучий песок, думаю здесь можно использовать, ускорив только проваливание в траву.
Надеюсь ты меня понял.
 
7,099
324
1,510
1) Блокируешь управление движением игрока самим игроком
2) Возможно, нужно отключить коллизии с этим игроком
3) Двигаешь игрока под землю сам
4) Телепортируешь
5) Двигаешь из-под земли
6) Если на шаге 2 выключал коллизию - то ее нужно включить
7) Возвращаешь игроку управление

Без отключения коллизий игрока, возможно, будет все время выталкивать из блоков.
Как отключить коллизии Агравэйн ниже написал
 
Последнее редактирование:

sk9zist :l

Исправился
981
18
157
Ам, дело в том что пробую делать playerIn.moveEntity в onItemRightClick но такого метода попросту нет.
Версия forge 2816
 

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
по наводке искать
Я знаю. Я уже пробовал делать с методом move но там нужен какой-то MoverType, игрока в него преобразовать нельзя поэтому я сделал так:
Java:
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
{
    playerIn.noClip = true;
    Entity entity = ((Entity) playerIn);
    entity.move(MoverType.SELF, 0, -2, 0);
    playerIn.noClip = false;
    return new ActionResult<ItemStack>(EnumActionResult.PASS, playerIn.getHeldItem(handIn));
}
Но игрок летит не останавливаясь вниз, похоже я ещё непонимаю какие параметры нужно указывать в данном методе.
 

sk9zist :l

Исправился
981
18
157
Нет, не нашел. Подскажете?
 

sk9zist :l

Исправился
981
18
157
Помогите пожалуйста
 
7,099
324
1,510
586
32
136
Возможно так. Но, я не думаю, что move() выполняется за 1 тик
Java:
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
{
    playerIn.noClip = true;
    playerIn.move(MoverType.SELF, player.posX, player.posY-2, player.posZ);
    playerIn.noClip = false;
    return new ActionResult<ItemStack>(EnumActionResult.PASS, playerIn.getHeldItem(handIn));
}
 

sk9zist :l

Исправился
981
18
157
Это телепортирует меня куда-то очень далеко, прибавляя к моим координатам мои координаты. Я сделал так:
playerIn.move(MoverType.SELF, 0, player.posY-2, 0);
но игрок будто прыгает вверх на два блока, делал так:
playerIn.move(MoverType.SELF, 0, player.posY+2, 0);
но игрок прыгал уже на четыре блока.
А, понял, если я нахожусь на 16 Y и он вычитает из неё 2 и получаеться 14 Y и меня телепортирует вверх на 14
(хотя нет не понял но всё равно это не работает)
 

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
Java:
    @Override
    public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
    {
        playerIn.noClip = true;
        Entity entity = ((Entity) playerIn);
        double f = worldIn.getTotalWorldTime()+2;
        if(f >= worldIn.getTotalWorldTime())
        {
            entity.move(MoverType.SELF, 0, -2, 0);
        }
        playerIn.noClip = false;
        return new ActionResult<ItemStack>(EnumActionResult.PASS, playerIn.getHeldItem(handIn));
    }
оно телепортирует меня на -2 блока
Только вот слишком быстро, можно как нибудь сделать этот процесс плавнее и не будто телепортация?
Помню @hohserg1 или кто, говорил что в CodeChickenCore можно найти подобную функцию?
 
Последнее редактирование:
586
32
136
Entity entity = ((Entity) playerIn); <-- Зачем игрока кастить в энтити, которым он и так является?

Java:
double f = worldIn.getTotalWorldTime()+2;
if(f >= worldIn.getTotalWorldTime()){ //<-- Тоже самое, что if(true), смысла в этой проверке не будет
    ...
}
 
Последнее редактирование:

sk9zist :l

Исправился
981
18
157
которым он и так является?
Ты говоришь мне советы, которые никак не помогают, сам бы зашёл в eclipse и протестил.
У меня сначала не работало playerIn.move если ставить просто playerIn, я сам знаю что он ентити но не работало.
Ладно, спасибо, напомнил убрать лишнюю строку :/
 
Сверху