- 16
- 1
- 0
Здраствуйте, хочу убрать вид от второго и третьего лица, оставить только от первого, пытался убрать бинд. Если знаете как что-то подобное сделать прошу помочь, буду очень благодарен.
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Кратко опишу принцип работы - в главном классе майна, есть некоторый список кнопок (который хранится как массив), и прямой модификацией этого массива (1 элемент убрать, другой добавить) можно сделать такое.Здраствуйте, хочу убрать вид от второго и третьего лица, оставить только от первого, пытался убрать бинд. Если знаете как что-то подобное сделать прошу помочь, буду очень благодарен.
@SideOnly(Side.CLIENT)
public class KeyHandler extends KeyBinding {
//инстансируй это на стороне клиента где-то
public KeyHandler(String group, String lore, int i, boolean modify){
super(lore, i, group)...
Кратко опишу принцип работы - в главном классе майна, есть некоторый список кнопок (который хранится как массив), и прямой модификацией этого массива (1 элемент убрать, другой добавить) можно сделать такое.Здраствуйте, хочу убрать вид от второго и третьего лица, оставить только от первого, пытался убрать бинд. Если знаете как что-то подобное сделать прошу помочь, буду очень благодарен.
@SideOnly(Side.CLIENT)
public class KeyHandler extends KeyBinding {
//инстансируй это на стороне клиента где-то
public KeyHandler(String group, String lore, int i, boolean modify){
super(lore, i, group);
if(modify){
modifyKeyBind(this);
}
ClientRegistry.registerKeyBinding(this);
MinecraftForge.EVENT_BUS.register(this);
}
//тут модификация кнопки
private static void modifyKeyBind(KeyHandler openKey){
for(int i = 0; i< Minecraft.getMinecraft().gameSettings.keyBindings.length; i++){
KeyBinding defKeyBind = Minecraft.getMinecraft().gameSettings.keyBindings[i];
if(defKeyBind.getKeyCodeDefault()==openKey.getKeyCodeDefault()){
defKeyBind.setKeyCode(0); //<- в этом случае, она никогда не включится
Minecraft.getMinecraft().gameSettings.keyBindings[i] = openKey;
return;
}
}
}
@SubscribeEvent
public void onKey(InputEvent.KeyInputEvent event) {
if(isPressed()){
//логика при жмяке
}
}
}
Не совсем понял что мне стоит сделать тут, и надо ли добавлять его Main P.S я еще зеленый в этом по этому могли бы об этом более подробно, нечего особо не умею еще. Где указать нужный мне бинд?Кратко опишу принцип работы - в главном классе майна, есть некоторый список кнопок (который хранится как массив), и прямой модификацией этого массива (1 элемент убрать, другой добавить) можно сделать такое.
На 1.7 кода у меня нет, поделюсь своим решением на 1.12 (принцип тот-же), лень переписывать класс, кину как есть
Java:@SideOnly(Side.CLIENT) public class KeyHandler extends KeyBinding { //инстансируй это на стороне клиента где-то public KeyHandler(String group, String lore, int i, boolean modify){ super(lore, i, group); if(modify){ modifyKeyBind(this); } ClientRegistry.registerKeyBinding(this); MinecraftForge.EVENT_BUS.register(this); } //тут модификация кнопки private static void modifyKeyBind(KeyHandler openKey){ for(int i = 0; i< Minecraft.getMinecraft().gameSettings.keyBindings.length; i++){ KeyBinding defKeyBind = Minecraft.getMinecraft().gameSettings.keyBindings[i]; if(defKeyBind.getKeyCodeDefault()==openKey.getKeyCodeDefault()){ defKeyBind.setKeyCode(0); //<- в этом случае, она никогда не включится Minecraft.getMinecraft().gameSettings.keyBindings[i] = openKey; return; } } } @SubscribeEvent public void onKey(InputEvent.KeyInputEvent event) { if(isPressed()){ //логика при жмяке } } }
Вот иди и изучай java.Main P.S я еще зеленый
Исправить ошибки совместимости (если есть) и инстансировать где-то, не важно где (главное что на стороне клиента), и (скорее всего) не важно в какое время. (попробуй в инит-е) И все. (9, 10 и 27 строка) делают всю остальную работу за тебя. Даже сохранять в переменную не надо (если обратного не требует задача), тупо вызывай new.Не совсем понял что мне стоит сделать тут
.. Ладно.как и где инстанировать
new KeyHandler("группа", "описание", Keyboard.КНОПКА, true \*если истинно - то оно переопределит Keyboard.КНОПКА, иначе создаст новую*\)
где инстанировать
Единственное - не советую в статическом контексте - лишние проблемыне важно где (главное что на стороне клиента ... И все. (9, 10 и 27 строка) делают всю остальную работу за тебя. Даже сохранять в переменную не надо (если обратного не требует задача), тупо вызывай new.
Спасибо, сейчас буду пытаться что-то да сделать.. Ладно.new KeyBinding("группа", "описание", Keyboard.КНОПКА, true \*если истинно - то оно переопределит Keyboard.КНОПКА, иначе создаст новую*\)
Единственное - не советую в статическом контексте - лишние проблемы
Могли бы показать пример?че вы городите, в тикере проверяешь на какой щас вид стоит
если не от 1 лица, то сетаешь обратно тот который нужен
пара строк епта
Ну ладно, три, еще одну на регание слушателя событий по шине, не помню какой, на тикэвент
Иди учить Java. Тут тебе не клуб нянечек.
А ты учел, что в твоем случае перспектива все равно будет переключаться, пусть и всего на несколько кадров?че вы городите, в тикере проверяешь на какой щас вид стоит
@SubscribeEvent
public void onKeyInput(InputEvent.KeyInputEvent event) {
if (Keyboard.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindTogglePerspective.getKeyCode())) {
Minecraft.getMinecraft().gameSettings.thirdPersonView = 0;
}
}
почему то у меня ничего не переключаетсяА ты учел, что в твоем случае перспектива все равно будет переключаться, пусть и всего на несколько кадров?
Выглядит поганенько, скажу тебе