개인 자료란 (JE)

  서버 커뮤니티

Profile HAN1110 대표칭호 없음

HAN1110 9899e780ba984d89824a90ee8deb7cb2

Profile

질문하기 Java

마크 입출력 질문

2021.09.23 조회 수 115 추천 수 0
이해도 프로그램 

제가 클라이언트를 만드는중 , 설정을 위해 어쩔수 없이 TabGUI 를 만들었죠.

위로가는 버튼 , 아래로 가는 버튼 , 왼쪽 오른쪽으로 가는 버튼을 눌르면 효과가 나게 해놨어요

이때 버튼은 -> 버튼 , <- 버튼 이런겁니다.

근데 그 버튼이 전혀 작동을 하지 않더라고요.

if (code == Keyboard.KEY_RIGHT) {
                    expanded = true;
                    System.out.println(Color.GREEN + "[MCMultiPlayer]" + Color.WHITE + ": KEY_RIGHT 누름");
                }

이 코드를 눌러놓고 , KEY_RIGHT 을 눌러보았죠.

아무 효과도 없는겁니다(KEY RIGHT 은 -> 버튼일겁니다)

무슨 문제인가요?

추가로 오류가 없다고 나옵니다

전체 소스는


package Hack.Modules.Visual;


import java.util.List;


import org.lwjgl.input.Keyboard;
import org.lwjgl.util.Color;

(직접 만든 클래스들)
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import optifine.IFileDownloadListener;




public class TabGUI extends Module {
    
    public int currentTab, ModuleIndex;
    public boolean expanded;
    
    public TabGUI() {
        super("TabGUI", Keyboard.KEY_Z, Category.VISUAL);
        toggled = true;
    }
    
    public FontRenderer fr = mc.fontRendererObj;
    
    public void onEvent(Event e) {
        if (e instanceof EventRenderGUI) {
            Gui.drawRect(5, 30.5, 70, 30 + Module.Category.values().length * 16 + 1.5, 0x90000000);
            Gui.drawRect(7, 33 + currentTab * 16, 7 + 61, 33 + currentTab * 16 + 12, 0xff0090ff);
            
            int count = 0;
            for (Category c : Module.Category.values()) {
                fr.drawString(c.name, 11, 35 + count*16, -1);
                count++;
            }
            
            if (expanded) {    
                List<Module> modules = Client.getModulesByCategory(Module.Category.values()[currentTab]);
                        
                if (modules.size() == 0) {
                    return;
                }
                Gui.drawRect(70, 30.5, 70 + 70, 30 + Module.Category.values().length * 16 + 1.5, 0x90000000);
                Gui.drawRect(72, 33 + ModuleIndex * 16, 7 + 61 + 70, 36 + ModuleIndex * 16 + 12, 0xff0090ff);
        
                count = 0;
                for (Module m : modules){
                    fr.drawString(m.name, 11 + 70, 35 + count*16, -1);
                    count++;
                }
            }
    
            if (e instanceof EventKey) {
                int code = ((EventKey)e).code;
                List<Module> modules = Client.getModulesByCategory(Module.Category.values()[currentTab]);
                
                if (code == Keyboard.KEY_UP) {
                    if (expanded = true) {
                        if (ModuleIndex >= modules.size() - 1) {
                            ModuleIndex = 0;
                        } else
                            ModuleIndex--;
                    } else {
                        if (currentTab <= 0) {
                            currentTab = Module.Category.values().length - 1;
                        } else
                            currentTab--;
                    }
                }
                
                if (code == Keyboard.KEY_DOWN) {
                    if (expanded = true) {
                        if (ModuleIndex >= modules.size() - 1) {
                            ModuleIndex = 0;
                        } else
                            ModuleIndex++;
                    } else {
                        if (currentTab >= Module.Category.values().length -1) {
                            currentTab = 0;
                        } else
                            currentTab++;
                    }
                }
                
                if (code == Keyboard.KEY_RIGHT) {
                    expanded = true;
                    System.out.println(Color.GREEN + "[MCMultiPlayer]" + Color.WHITE + ": KEY_RIGHT 누름");
                }
                
                if (code == Keyboard.KEY_LEFT) {
                    expanded = false;
                }
            }
        }
    }
}

5개의 댓글

허두
2021.09.24

e instanceof EventKey 조건문 내부까지는 잘 진입이 되나요?

+ 게시글이 [질문 포럼(그외의 질문) -> 개발자 질문(Java)]로 이동되었으니 참고해주세요 :)

HAN1110
2021.09.24
@허두

https://www.youtube.com/watch?v=8F9KuHkb5_U

해당 영상의 34:35초 부분을 보면 정상작동하는것을 볼수 있습니다.

다만 저는 , 위아래조차 작동을 안하네요.

HAN1110
2021.09.24
@허두

예외가 발생한거같아 Try Catch 문을 이용해 에러가 일어날시 '에러' 라는 글자가 콘솔에 출력되게 해보았으나

키를 눌러보니 이건 제가 키를 잘 모르고 있거나 , 아니면 currentTab 의 문제등일거같아요

HAN1110
2021.09.24
@허두

제가 바보였네요 ㅋㅋㅋㅋ

분명 영상에서는 저게 다른 조건문으로 나오는데

제 말은 EventRenderGUI 가 들어가는 조건문이랑 EventKey 가 들어가는 조건문이랑 다른곳에 넣어놔야하는데 그걸 같은곳에 넣어놨다닠ㅋㅋㅋㅋ

허두
2021.09.24
@HAN1110

무슨뜻인지 아직 이해는 못했지만..ㅋㅋㅋㅋㅋ

아무튼 해결되셨다니 다행입니다 :)