Как отключить все клавиши, ЛКМ и ПКМ у игрока?

Версия Minecraft
1.7.10
37
1
0
Идея такая: зелье, которое "замораживает" игрока и он ничего не может делать - ходить, ставить/ломать блоки, использовать предметы, открывать гуи(кроме игрового меню) и т.д. Короче говоря отключить все что может делать игрок. Похожий эффект получается если убить игрока на клиенте но не на сервере.
 

timaxa007

Модератор
5,831
409
672
К сожалению по нормальному отключить, кнопки мыши и клавиши клавиатуры, не получиться.
Можно сделать:
Java:
@SubscribeEvent
public void onClientTick(TickEvent.ClientTickEvent event) {
    KeyBinding.unPressAllKeys();
}
Но в один тик при нажатии кнопки и/или мыши, можно что-то сделать. Но двигаться толком не получиться.
К примеру так:
Java:
@SubscribeEvent
public void onKeyInputEvent(TickEvent.PlayerTickEvent event) {
    IAttributeInstance iattributeinstance = event.player.getEntityAttribute(SharedMonsterAttributes.movementSpeed);
    iattributeinstance.setBaseValue(0);
//else
    //iattributeinstance.setBaseValue(event.player.capabilities.getWalkSpeed());
}
ставить/ломать блоки
Вроде как:
Java:
    @SubscribeEvent
    public void unBreakeable(PlayerEvent.BreakSpeed event) {
        event.setCanceled(true);
    }

    @SubscribeEvent
    public void unPlaceable(BlockEvent.PlaceEvent event) {
        if (event.player.getCommandSenderName().equals("username"))
        event.setCanceled(true);
    }
использовать предметы
Java:
@SubscribeEvent
public void onPlayerUseItemEvent(PlayerUseItemEvent.Start event) {
    event.setCanceled(true);
}

//Так-же и блоки открывать
@SubscribeEvent
public void onPlayerInteractEvent(PlayerInteractEvent event) {
    event.setCanceled(true);
}
Так-же не по забывай поставить для каждого эвента условие на твой эффект.
 

timaxa007

Модератор
5,831
409
672
а как можно убрать частицы эффектов?
Если даёшь через свой код, то
Java:
player.addPotionEffect(new PotionEffect(potionID, duration, amplifier, isAmbient));
isAmbient - должен быть true.
и так же у блоков и предмета например еды когда ешь частицы разлетаюся
Если еда своя, просто можно место EnumAction.eat дать EnumAction.drink. Если не своя, то тут не знаю как сделать проще.
 
Последнее редактирование:
Сверху