OpenGl по клавише

Версия Minecraft
1.19.4
API
Forge
привет, где то неделю-две назад я спрашивал в дискорде про gui в майнкрафте, а точнее как его рисовать. Тогда мне ответили, что нужно юзать OpenGl, я написал код, который по идее должен рисовать квадрат, когда нажимается кнопка, но код выдает ошибку при нажатии кнопки. И так вопрос - Что я сделал не правильно?(код gl я содрал с этой статьи, возможно я что то недопонял)

ClientEvents:
package net.requiem.pathogen.event;

import jdk.jfr.Registered;
import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.Component;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.requiem.pathogen.PathOGen;
import net.requiem.pathogen.util.keyBinding;

import javax.swing.text.JTextComponent;

import static org.lwjgl.opengl.GL11.*;

public class ClientEvents {
    @Mod.EventBusSubscriber(modid = PathOGen.MODID, value = Dist.CLIENT)
    public static class ClientForgeEvents {

        @SubscribeEvent
        public static void onKeyRegister(RegisterKeyMappingsEvent event) {
            event.register(keyBinding.OPENGUIKEY);
        }

        @SubscribeEvent
        public static void onKeyInput(InputEvent.Key event) {
            if (keyBinding.OPENGUIKEY.consumeClick())
            {
                glPushMatrix();
                glTranslatef(0, 0, 0);
                glBegin(GL_QUADS);
                glVertex3f(0.0F, 0.0F, 0.0F);
                glVertex3f(0.0F, 0.0F, 1.0F);
                glVertex3f(1.0F, 0.0F, 1.0F);
                glVertex3f(1.0F, 0.0F, 0.0F);
                glEnd();
                glPopMatrix();
            }
        }

    }

    @Mod.EventBusSubscriber(modid = PathOGen.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)
    public static class ClientModBusEvents {
        @SubscribeEvent
        public static void onKeyRegister(RegisterKeyMappingsEvent event) {
            event.register(keyBinding.OPENGUIKEY);
        }
    }
}
 
Решение
полный флуд, но у меня андроид уже кучу лет переводит картинки, вероятность того шо яндекс что угодно уникальное в себе содержит крайне мала, и даже думать про то чтобы установить эту, кгм, программу, на чей угодно пк мерзко

Энивей, это опять открытый вопрос из разряда "как построить ракету, я посмотрел видос по сбору бумажных самолётиков", сложно взять и однозначно ответить, учись, ищи, шо
я что то недопонял
Ну немного да, код с OpenGl надо вызывать в определённом месте, при чём когда отрисовывается каждый кадр, даже если бы бред (соре но так и есть) с вызовом его из обработчика кейбинда сработал бы, то видно было бы тот квадрат аж один кадр.

Самое простое что можно сделать это вызывать его в RenderWorldLastEvent (и то там куча заморочек будет, удачи с тем всем разобраться), а в обработчике кейбинда ставить значение переменной, в зависимости от которой в том коде ты будешь через OpenGl рисовать тот крадрат, или нет)
 
В поток рендеринга надо код поместить и проверять, нажата ли клавиша в данный момент или нет. Код в потоке рендеринга вызывается на отрисовку каждого кадра, потому чтобы убрать свой нарисованный объект - нужно всего лишь не вызывать код его отрисовки.
 
В поток рендеринга надо код поместить и проверять, нажата ли клавиша в данный момент или нет. Код в потоке рендеринга вызывается на отрисовку каждого кадра, потому чтобы убрать свой нарисованный объект - нужно всего лишь не вызывать код его отрисовки.
Я создал флаг по кнопке, но у меня есть дилемма, я не понимаю, как рисовать через OpenGl? В плане мне надо сразу начинать с glBegin?
 
Последнее редактирование модератором:
В плане мне надо сразу начинать с glBegin?
нет, тебе нужно в начале привязать к какому то событию отрисовки. поищи по форуму отрисовка блока например, отрисовка в GameOverlay, RenderWorldLastEvent
в гугле попробуй, вбивай эти слова и смотри что пишут, как они это пишут.
ЧАТ спроси про них.
не понимаешь анг, поставь яндекс браузер и переводи на русский.
 
не понимаешь анг, поставь яндекс браузер и переводи на русский.
Самый херовый совет на этом форуме - ставить помойку ради переводчика, коих существует овердохрена.
 
коих существует овердохрена.
Сколько из них при этом переводит текст на картинках на сайтах и даже видео?
Ты понимаешь, он даже японо-маму переводит (где яб точно голову сломал).
Тут зависит от нужды, есть ли желание ко всему прочему ещё учить анг. или там китайский или там японский (а именно последние хорошие программисты и часто делятся ништяками бесплатно)
 
переводит текст на картинках
Если человек не может перевести банальные фразы с картинки в текстовом переводчике ручками (очень сомневаюсь что туда лепят целые абзацы текста по коду.) - ему нечего делать в программировании. Не говоря уже о том, что вообще не зная языка пытаться лезть сюда является глупой мыслью.
даже японо-маму переводит
Ну и привет ему передавай в таком случае. К текущей теме не особо соотносится =\

По поводу перевода видео - есть такая замечательная вещь (еще со времён обезьян), называется: "повторяй за мной" работает безотказно в 50% случаях (шанс повышается по мере понимания общего процесса работы рассматриваемой вещи)
 
полный флуд, но у меня андроид уже кучу лет переводит картинки, вероятность того шо яндекс что угодно уникальное в себе содержит крайне мала, и даже думать про то чтобы установить эту, кгм, программу, на чей угодно пк мерзко

Энивей, это опять открытый вопрос из разряда "как построить ракету, я посмотрел видос по сбору бумажных самолётиков", сложно взять и однозначно ответить, учись, ищи, шо
 
Назад
Сверху