Заморозка игрока

Версия Minecraft
1.12.2
85
3
3
Как можно заморозить игрока ?
Отключить управление камерой и самим игроком.
 

Icosider

Kotliner
Администратор
3,603
99
664
Твой мотион только на клиенте, на сервере он будет 0. И да, обездвижится камера и передвижение.

Хотя на счёт камеры хз, но всегда можно дописать последние два аргумента: yaw и pitch
 

CumingSoon

Местный стендапер
1,634
12
269
@implicit, и? Я так и не получил ответа на свой вопрос. Что мне помешает использовать хук и вообще не открывать ваше гуи?
Помешает то, что автору это не нужно. Не преследовалось цели оградить игрока от чего-то:
Ничего страшного ,глупо будет с его стороны вырезать эту проверку ,потому что я отключаю движение не ради защиты чего то )
 
5,020
47
784
Писать античиты надо против нубов. Тот, кто умеет кодить и знает как обойти античит, все равно его обойдет. Только как правило это будет уже бородатый дядя, которому читерить или в принципе, играть, будет уже не нужно.
 
25
3
Есть же годный ответ - включить пустое GuiScreen на вроде такого:

Java:
public class FreezeGui
extends GuiScreen
{
    @Override
    protected void keyTyped(char typedChar, int keyCode) throws IOException {
        if (keyCode==1) { return; }
    }
}

Причины всего и вся:
В основе класса Minecraft есть метод -> runTick(),
в котором есть условие -> if (this.currentScreen == null || this.currentScreen.allowUserInput) {}
где и происходит обработка события Мыши и Клавиатуры.

Без Хуков в это место не залесть, так что проще всего пустой ГУИ открывать и закрывать в событии, скажем TickEvent.PlayerTickEvent
на стороне клиента чекая любые ваши условия.
 
25
3
Хмм, я не знаю годных способов отменить нажатие клавиш клавиатуры. И тем более при определённых условиях, но отменить мышь несложно. Её просто нужно разрушить |Mouse.destroy()| и создать |Mouse.create()| заново в событии MouseEvent
(отмена самого события просто исключает нажатие кнопок мыши, но не вращение камеры)
 
15
0
25
3
Не стесняйся, смотри в классе net.minecraft.client.Minecraft условие, и увидишь, что оно запусчает 2 метода:
runTickMouse() и runTickKeyboard();
Рассмотрев их оба ты увидишь какие действия происходят с ingameGUI и currentScreen (+gameSettings)
Только тебе ито ничего не даст. Ну только если ты насильно не изменишь сие код самостоятельно.
 
Сверху