Skip to content

Commit

Permalink
Fixed Ping menu rendering & made errors go away
Browse files Browse the repository at this point in the history
  • Loading branch information
GirafiStudios committed Jul 27, 2021
1 parent 17d129e commit 513c4c8
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 6 deletions.
1 change: 0 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ buildscript {
}
}
apply plugin: 'net.minecraftforge.gradle'
apply from: 'https://raw.githubusercontent.com/SizableShrimp/Forge-Class-Remapper/main/classremapper.gradle'

java.toolchain.languageVersion = JavaLanguageVersion.of(16)

Expand Down
5 changes: 5 additions & 0 deletions src/main/java/dmillerw/ping/client/PingHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,14 @@ public static void onRenderWorld(RenderWorldLastEvent event) {
if (clippingHelper.isVisible(ping.getAABB())) {
ping.isOffscreen = false;
if (Config.VISUAL.blockOverlay.get()) {
System.out.println("Block overlay");
renderPingOverlay(ping.pos.getX() - staticPos.x(), ping.pos.getY() - staticPos.y(), ping.pos.getZ() - staticPos.z(), event.getMatrixStack(), ping);
}
System.out.println("Icon");
renderPing(px, py, pz, event.getMatrixStack(), renderEntity, ping);
} else {
ping.isOffscreen = true;
System.out.println("Offscren");
translatePingCoordinates(px, py, pz, ping);
}
}
Expand Down Expand Up @@ -162,6 +165,7 @@ public static void renderPingOffscreen(RenderGameOverlayEvent.Post event) {
VertexConsumer vertexBuilder = buffer.getBuffer(pingType);

poseStack.translate(pingX / 2, pingY / 2, 0);
RenderSystem.setShader(GameRenderer::getPositionTexColorShader);

float min = -8;
float max = 8;
Expand Down Expand Up @@ -219,6 +223,7 @@ private static void renderPing(double px, double py, double pz, PoseStack poseSt
MultiBufferSource.BufferSource buffer = mc.renderBuffers().bufferSource();
RenderType pingType = PingRenderType.getPingIcon(TEXTURE);
VertexConsumer vertexBuilder = buffer.getBuffer(pingType);
RenderSystem.setShader(GameRenderer::getPositionTexColorShader);

float min = -0.25F - (0.25F * (float) ping.animationTimer / 20F);
float max = 0.25F + (0.25F * (float) ping.animationTimer / 20F);
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/dmillerw/ping/client/PingRenderType.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ public PingRenderType(String string, Runnable r, Runnable r1) {
super(string, r, r1);
}

public static RenderType getPingOverlay() {
RenderType.CompositeState renderTypeState = RenderType.CompositeState.builder().setTransparencyState(TRANSLUCENT_TRANSPARENCY).setTextureState(BLOCK_SHEET).setLayeringState(DISABLE_DEPTH).createCompositeState(true);
public static RenderType getPingOverlay() { //TODO ShaderState might be wrong
RenderType.CompositeState renderTypeState = RenderType.CompositeState.builder().setShaderState(POSITION_COLOR_TEX_SHADER).setTransparencyState(TRANSLUCENT_TRANSPARENCY).setTextureState(BLOCK_SHEET).setLayeringState(DISABLE_DEPTH).createCompositeState(true);
return RenderType.create("ping_overlay", DefaultVertexFormat.POSITION_TEX_COLOR, VertexFormat.Mode.QUADS, 262144, true, true, renderTypeState);
}

public static RenderType getPingIcon(ResourceLocation location) {
RenderType.CompositeState renderTypeState = RenderType.CompositeState.builder().setTextureState(new RenderStateShard.TextureStateShard(location, false, true)).setTransparencyState(TRANSLUCENT_TRANSPARENCY).setLayeringState(DISABLE_DEPTH).createCompositeState(true);
public static RenderType getPingIcon(ResourceLocation location) { //TODO ShaderState might be wrong
RenderType.CompositeState renderTypeState = RenderType.CompositeState.builder().setShaderState(POSITION_COLOR_TEX_SHADER).setTextureState(new RenderStateShard.TextureStateShard(location, false, true)).setTransparencyState(TRANSLUCENT_TRANSPARENCY).setLayeringState(DISABLE_DEPTH).createCompositeState(true);
return RenderType.create("ping_icon", DefaultVertexFormat.POSITION_TEX_COLOR, VertexFormat.Mode.QUADS, 262144, true, true, renderTypeState);
}
}
6 changes: 5 additions & 1 deletion src/main/java/dmillerw/ping/client/RenderHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import dmillerw.ping.data.PingType;
import dmillerw.ping.util.Config;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.event.TickEvent;
Expand Down Expand Up @@ -54,6 +55,7 @@ private static void renderGui(PoseStack poseStack) {
RenderSystem.disableTexture();
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.setShader(GameRenderer::getPositionColorShader);

int halfWidth = (ITEM_SIZE * (numOfItems)) - (ITEM_PADDING * (numOfItems));
int halfHeight = (ITEM_SIZE + ITEM_PADDING) / 2;
Expand All @@ -71,8 +73,9 @@ private static void renderGui(PoseStack poseStack) {
RenderSystem.enableTexture();
poseStack.popPose();
}

poseStack.pushPose();
RenderSystem.setShaderTexture(0, PingHandler.TEXTURE);
RenderSystem.setShader(GameRenderer::getPositionTexColorShader);

final double mouseX = mc.mouseHandler.xpos() * ((double) mc.getWindow().getGuiScaledWidth() / mc.getWindow().getScreenWidth());
final double mouseY = mc.mouseHandler.ypos() * ((double) mc.getWindow().getGuiScaledHeight() / mc.getWindow().getScreenHeight());
Expand Down Expand Up @@ -116,6 +119,7 @@ private static void renderGui(PoseStack poseStack) {
bufferBuilder.vertex(drawX + min, drawY + min, 0).uv(type.getMinU(), type.getMinV()).color(255, 255, 255, 255).endVertex();
tessellator.end();
}
poseStack.popPose();
}

private static void renderText(PoseStack poseStack) {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/dmillerw/ping/client/util/PingRenderHelper.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package dmillerw.ping.client.util;

import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix4f;
import dmillerw.ping.client.PingRenderType;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
Expand All @@ -17,6 +19,7 @@ public static void drawBlockOverlay(float width, float height, float length, Pos
RenderType pingOverlay = PingRenderType.getPingOverlay();
MultiBufferSource.BufferSource buffer = Minecraft.getInstance().renderBuffers().bufferSource();
VertexConsumer vertexBuilder = buffer.getBuffer(pingOverlay);
RenderSystem.setShader(GameRenderer::getPositionTexColorShader);

int r = color >> 16 & 255;
int g = color >> 8 & 255;
Expand Down

0 comments on commit 513c4c8

Please sign in to comment.