Начинающий
- Статус
- Оффлайн
- Регистрация
- 22 Ноя 2024
- Сообщения
- 7
- Реакции
- 0
крч вот код:
в чем собственно проблема? почему то кнопки исчезают (сс:
самое интересное если если каждую менюшку перечислять, то такой хуйни нету.
помогите пж
миксин:
package vs.vsa.screen.mixin;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import com.mojang.blaze3d.systems.RenderSystem;
import vs.vsa.screen.shader.ShaderManager;
@Mixin(Screen.class)
public abstract class ScreenMixin {
@Shadow
protected MinecraftClient client;
@Inject(method = "render", at = @At("HEAD"))
private void vsa$renderShader(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (this.client == null || this.client.world != null) {
return;
}
context.getMatrices().push();
ShaderManager.renderTitleBackground(context, mouseX, mouseY);
context.draw();
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
context.getMatrices().pop();
}
@Inject(method = "renderBackground", at = @At("HEAD"), cancellable = true)
private void vsa$cancelBackground(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (this.client == null || this.client.world != null) {
return;
}
ci.cancel();
}
@Inject(method = "renderInGameBackground", at = @At("HEAD"), cancellable = true)
private void vsa$cancelInGameBackground(DrawContext context, CallbackInfo ci) {
if (this.client == null || this.client.world != null) {
return;
}
ci.cancel();
}
}
GLSLShader:
package vs.vsa.screen.shader;
import net.minecraft.client.gl.Defines;
import net.minecraft.client.gl.ShaderProgram;
import net.minecraft.client.gl.ShaderProgramKey;
import net.minecraft.client.render.VertexFormat;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.util.Identifier;
public final class GLSLShader {
private final ShaderProgramKey key;
public GLSLShader(Identifier identifier, VertexFormat vertexFormat) {
this.key = new ShaderProgramKey(identifier, vertexFormat, Defines.EMPTY);
}
public ShaderProgram use() {
return RenderSystem.setShader(this.key);
}
}
ShaderManager:
package vs.vsa.screen.shader;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gl.ShaderProgram;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.BufferRenderer;
import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexFormat.DrawMode;
import net.minecraft.client.render.VertexFormats;
import net.minecraft.util.Identifier;
import org.joml.Matrix4f;
import vs.vsa.Vsa;
public final class ShaderManager {
private static final GLSLShader TITLE_BACKGROUND = new GLSLShader(
Identifier.of(Vsa.MOD_ID, "core/title_background"),
VertexFormats.POSITION
);
private static final long START_NANOS = System.nanoTime();
private ShaderManager() {
}
public static void renderTitleBackground(DrawContext context, int mouseX, int mouseY) {
MinecraftClient client = MinecraftClient.getInstance();
int framebufferWidth = client.getWindow().getFramebufferWidth();
int framebufferHeight = client.getWindow().getFramebufferHeight();
int scaledWidth = client.getWindow().getScaledWidth();
int scaledHeight = client.getWindow().getScaledHeight();
if (framebufferWidth <= 0 || framebufferHeight <= 0 || scaledWidth <= 0 || scaledHeight <= 0) {
return;
}
float scaleX = (float) framebufferWidth / (float) scaledWidth;
float scaleY = (float) framebufferHeight / (float) scaledHeight;
float mouseXFb = mouseX * scaleX;
float mouseYFb = mouseY * scaleY;
float normMouseX = (mouseXFb / (float) framebufferWidth) - 0.5f;
float normMouseY = 0.5f - (mouseYFb / (float) framebufferHeight);
float timeSeconds = (System.nanoTime() - START_NANOS) / 1_000_000_000.0f;
RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.disableCull();
ShaderProgram shader = TITLE_BACKGROUND.use();
shader.getUniform("time").set(timeSeconds);
shader.getUniform("resolution").set((float) framebufferWidth, (float) framebufferHeight);
shader.getUniform("mouse").set(normMouseX, normMouseY);
Matrix4f matrix = context.getMatrices().peek().getPositionMatrix();
BufferBuilder builder = Tessellator.getInstance().begin(DrawMode.QUADS, VertexFormats.POSITION);
builder.vertex(matrix, 0.0f, scaledHeight, 0.0f);
builder.vertex(matrix, scaledWidth, scaledHeight, 0.0f);
builder.vertex(matrix, scaledWidth, 0.0f, 0.0f);
builder.vertex(matrix, 0.0f, 0.0f, 0.0f);
BufferRenderer.drawWithGlobalProgram(builder.end());
RenderSystem.enableCull();
RenderSystem.disableBlend();
RenderSystem.depthMask(true);
RenderSystem.enableDepthTest();
}
}
в чем собственно проблема? почему то кнопки исчезают (сс:
Пожалуйста, авторизуйтесь для просмотра ссылки.
(no add).самое интересное если если каждую менюшку перечислять, то такой хуйни нету.
помогите пж