- 67
- 1
- 0
Как запретить игрокам садится на шифт? Тоесть игрок нажимает на шифт и ничего не происходит.
Только вот данный ивент не отменяемыйInputEvent - > при GuiScreen.isShiftKeyDown() отменяй ивент
@SubscribeEvent
public void onEntityJoinWorld(PlayerEvent.PlayerLoggedInEvent event) {
Entity entity = event.player;
if (!entity.world.isRemote && entity instanceof EntityPlayerMP) {
List<KeyBinding> toRemove = new ArrayList<>();
GameSettings gs = Minecraft.getMinecraft().gameSettings;;
toRemove.add(gs.keyBindSneak);
removeKeyBindings(toRemove);
}
}
public static void removeKeyBindings(List<KeyBinding> toRemove) {
List<KeyBinding> keyBindingsList = new ArrayList<>(Arrays.asList(Minecraft.getMinecraft().gameSettings.keyBindings));
Set<String> categories = new HashSet<>();
Iterator<KeyBinding> iterator = keyBindingsList.iterator();
KeyBinding keyBinding;
while (iterator.hasNext()) {
keyBinding = iterator.next();
if (toRemove.contains(keyBinding)) {
keyBinding.setKeyCode(0);
iterator.remove();
} else
categories.add(keyBinding.getKeyCategory());
}
KeyBinding.getKeybinds().retainAll(categories);
Minecraft.getMinecraft().gameSettings.keyBindings = keyBindingsList.toArray(new KeyBinding[keyBindingsList.size()]);
}
Только ты не учел, что вырезание биндов - это онли клиентская часть, поэтому создание проверок и действий на стороне сервера может привести вот к таким результатам.@SubscribeEvent public void onEntityJoinWorld(PlayerEvent.PlayerLoggedInEvent event) { Entity entity = event.player; if (!entity.world.isRemote && entity instanceof EntityPlayerMP) { List<KeyBinding> toRemove = new ArrayList<>(); GameSettings gs = Minecraft.getMinecraft().gameSettings;; toRemove.add(gs.keyBindSneak); removeKeyBindings(toRemove); } }