Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
plugins {
id "architectury-plugin" version "3.4-SNAPSHOT"
id "dev.architectury.loom" version "1.7-SNAPSHOT" apply false
id "dev.architectury.loom" version "1.11-SNAPSHOT" apply false
}



architectury {
minecraft = rootProject.minecraft_version
}
Expand Down
107 changes: 65 additions & 42 deletions common/src/main/java/gjum/minecraft/civ/snitchmod/common/Renderer.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
package gjum.minecraft.civ.snitchmod.common;

import com.mojang.blaze3d.pipeline.BlendFunction;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import com.mojang.blaze3d.platform.DepthTestFunction;
import com.mojang.blaze3d.systems.RenderPass;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.BufferBuilder;
import com.mojang.blaze3d.vertex.BufferUploader;
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.Tesselator;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.blaze3d.vertex.VertexFormat;
import com.mojang.blaze3d.vertex.*;
import gjum.minecraft.civ.snitchmod.common.Utils.Color;
import gjum.minecraft.civ.snitchmod.common.model.Snitch;
import gjum.minecraft.civ.snitchmod.common.model.SnitchFieldPreview;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.renderer.CoreShaders;
import net.minecraft.client.renderer.RenderPipelines;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.layers.RenderLayer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import org.apache.commons.lang3.StringUtils;
Expand All @@ -25,6 +26,7 @@

import java.util.ArrayList;
import java.util.List;
import java.util.OptionalInt;

import static gjum.minecraft.civ.snitchmod.common.SnitchMod.getMod;

Expand All @@ -40,6 +42,8 @@ public class Renderer {
private final static Color ORANGE = new Color(0xEE8140);
private final static Color PINK = new Color(0xFC66CC);

private static int matcount = 0;

public static void renderOverlays(Matrix4f matrixArg) {
if (mc.player == null) return;
if (mc.level == null) return;
Expand All @@ -49,38 +53,48 @@ public static void renderOverlays(Matrix4f matrixArg) {

Vec3 camPos = mc.gameRenderer.getMainCamera().getPosition();
Matrix4fStack modelViewStack = RenderSystem.getModelViewStack();
matcount += 1;
modelViewStack.pushMatrix();
modelViewStack.mul(matrixArg);
modelViewStack.translate((float) -camPos.x, (float) -camPos.y, (float) -camPos.z);

if (getMod().rangeOverlayVisible) {
int fieldDist = 260;
getMod().streamNearbySnitches(mc.player.position(), fieldDist)
// but still show culled/gone snitches
.filter(s -> !s.wasBroken())
.limit(100)
.forEach(Renderer::renderSnitch);
}

if (getMod().placementHelperVisible) {
int placeHelperDist = 50;
getMod().streamNearbySnitches(mc.player.position(), placeHelperDist)
.filter(Snitch::isAlive)
.limit(10)
.forEach(Renderer::renderPlacementHelper);
}

if (getMod().snitchFieldToPreview != null) {
renderSnitchFieldPreview(getMod().snitchFieldToPreview);
}

try {
modelViewStack.mul(matrixArg);
modelViewStack.translate((float) -camPos.x, (float) -camPos.y, (float) -camPos.z);

if (getMod().rangeOverlayVisible) {
int fieldDist = 260;
getMod().streamNearbySnitches(mc.player.position(), fieldDist)
// but still show culled/gone snitches
.filter(s -> !s.wasBroken())
.limit(100)
.forEach(Renderer::renderSnitch);
}

if (getMod().placementHelperVisible) {
int placeHelperDist = 50;
getMod().streamNearbySnitches(mc.player.position(), placeHelperDist)
.filter(Snitch::isAlive)
.limit(10)
.forEach(Renderer::renderPlacementHelper);
}

if (getMod().snitchFieldToPreview != null) {
renderSnitchFieldPreview(getMod().snitchFieldToPreview);
}
/*
RenderSystem.enableDepthTest();
RenderSystem.depthMask(true);
RenderSystem.enableCull();
RenderSystem.lineWidth(1.0F);
RenderSystem.clearColor(1, 1, 1, 1);
*/
} catch (Exception e) {
e.printStackTrace();
} finally {
modelViewStack.popMatrix();
matcount -= 1;
if (matcount > 0) System.err.println("ALERT MATCOUNT " + matcount);
}


modelViewStack.popMatrix();
}

private static void renderSnitchFieldPreview(SnitchFieldPreview preview) {
Expand All @@ -89,9 +103,11 @@ private static void renderSnitchFieldPreview(SnitchFieldPreview preview) {
final boolean playerInRange = range.contains(mc.player.position());
AABB rangeBox = playerInRange ? range.inflate(-.01) : range.inflate(.01);

/*
RenderSystem.enableDepthTest();
RenderSystem.enableBlend();
RenderSystem.disableCull();
*/

final Color color = PINK;
final float boxAlpha = 0.2f;
Expand All @@ -104,7 +120,8 @@ private static void renderSnitchFieldPreview(SnitchFieldPreview preview) {

final int blockHlDist = 64;
if (preview.field().pos.distSqr(mc.player.blockPosition()) < blockHlDist * blockHlDist) {
RenderSystem.disableDepthTest();
//lmao??????
//RenderSystem.disableDepthTest();

// inflate so it isn't obstructed by the snitch block
final AABB blockBox = new AABB(preview.field().pos).inflate(.01);
Expand Down Expand Up @@ -191,9 +208,11 @@ enum SnitchLiveliness {
/*
* Render the snitch range box.
*/
/*
RenderSystem.enableDepthTest();
RenderSystem.enableBlend();
RenderSystem.disableCull();
*/

renderFilledBox(rangeBox, snitchLiveliness.color, boxAlpha);

Expand All @@ -210,7 +229,8 @@ enum SnitchLiveliness {
*/
final int blockHlDist = 64;
if (snitch.pos.distSqr(mc.player.blockPosition()) < blockHlDist * blockHlDist) {
RenderSystem.disableDepthTest();
//lmao???
//RenderSystem.disableDepthTest();

// inflate so it isn't obstructed by the snitch block
final AABB blockBox = new AABB(snitch.pos).inflate(.01);
Expand Down Expand Up @@ -359,9 +379,11 @@ private static void renderPlacementHelper(Snitch snitch) {
if (playerInRange) return; // only render helper for snitches the player isn't inside of
final AABB helperBox = new AABB(snitch.pos).inflate(22.3);

/*
RenderSystem.enableDepthTest();
RenderSystem.enableBlend();
RenderSystem.disableCull();
*/

Color color = BLUE;
float alpha = 0.2f;
Expand All @@ -372,7 +394,8 @@ private static void renderBoxOutline(AABB box, Color color, float a, float lineW
RenderSystem.lineWidth(lineWidth);

Tesselator tesselator = Tesselator.getInstance();
BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
//used to be DEBUG_LINES
BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.DEBUG_LINE_STRIP, DefaultVertexFormat.POSITION_COLOR);

GL11.glEnable(GL11.GL_LINE_SMOOTH);

Expand Down Expand Up @@ -411,13 +434,12 @@ private static void renderBoxOutline(AABB box, Color color, float a, float lineW
bufferBuilder.addVertex(maxX, maxY, minZ).setColor(r, g, b, a);
bufferBuilder.addVertex(maxX, maxY, maxZ).setColor(r, g, b, a);

BufferUploader.drawWithShader(bufferBuilder.buildOrThrow());
RenderType.debugLineStrip(lineWidth).draw(bufferBuilder.buildOrThrow());
}

private static void renderFilledBox(AABB box, Color color, float a) {
Tesselator tesselator = Tesselator.getInstance();
BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.TRIANGLE_STRIP, DefaultVertexFormat.POSITION_COLOR);
RenderSystem.setShader(CoreShaders.POSITION_COLOR);

float r = color.r;
float g = color.g;
Expand Down Expand Up @@ -460,15 +482,15 @@ private static void renderFilledBox(AABB box, Color color, float a) {
bufferBuilder.addVertex(maxX, maxY, maxZ).setColor(r, g, b, a);
bufferBuilder.addVertex(maxX, maxY, maxZ).setColor(r, g, b, a);

BufferUploader.drawWithShader(bufferBuilder.buildOrThrow());
RenderType.debugFilledBox().draw(bufferBuilder.buildOrThrow());
}

private static void renderBoxGuides(AABB box, Color color, float a, float lineWidth) {
RenderSystem.lineWidth(lineWidth);

Tesselator tesselator = Tesselator.getInstance();
BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
RenderSystem.setShader(CoreShaders.POSITION_COLOR);
//used to be DEBUG_LINES
BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.DEBUG_LINE_STRIP, DefaultVertexFormat.POSITION_COLOR);

GL11.glEnable(GL11.GL_LINE_SMOOTH);

Expand All @@ -494,7 +516,7 @@ private static void renderBoxGuides(AABB box, Color color, float a, float lineWi
addVertex(bufferBuilder, center.x, center.y, center.z - 1).setColor(r, g, b, a);
addVertex(bufferBuilder, center.x, center.y, center.z - radius).setColor(r, g, b, a);

BufferUploader.drawWithShader(bufferBuilder.buildOrThrow());
RenderType.debugLineStrip(lineWidth).draw(bufferBuilder.buildOrThrow());
}

// does the double->float cast for us
Expand All @@ -507,6 +529,7 @@ private static VertexConsumer addVertex(VertexConsumer bufferBuilder, double x,
*/
private static void renderTextFacingCamera(Component text, Vec3 pos, float offset, float scale, int colorAlphaHex) {
var poseStack = new PoseStack();
poseStack.pushPose();
poseStack.translate(pos.x, pos.y, pos.z);
poseStack.mulPose(mc.gameRenderer.getMainCamera().rotation());
scale *= 0.005f * (mc.player.position().distanceTo(pos) / 2.4);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ protected void onHandleContainerContent(ClientboundContainerSetContentPacket pac
return; // continue method normally
}
try {
getMod().handleWindowItems(packetIn.getItems());
getMod().handleWindowItems(packetIn.items());
} catch (Throwable e) {
e.printStackTrace();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ public static SnitchAlert fromChat(

String group = null;
final HoverEvent hoverEvent = message.getSiblings().get(0).getStyle().getHoverEvent();
if (hoverEvent != null && hoverEvent.getAction() == HoverEvent.Action.SHOW_TEXT) {
if (hoverEvent != null && hoverEvent.action() == HoverEvent.Action.SHOW_TEXT) {
@SuppressWarnings("ConstantConditions")
String hoverText = hoverEvent.getValue(HoverEvent.Action.SHOW_TEXT).getString().replaceAll("§.", "");
String hoverText = ((HoverEvent.ShowText)hoverEvent).value().getString().replaceAll("§.", "");

Matcher hoverMatch = hoverPattern.matcher(hoverText);
if (hoverMatch.matches()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@ public SnitchRename(
String snitchOldName = textMatch.group(2);

final HoverEvent hoverEvent = message.getSiblings().get(0).getStyle().getHoverEvent();
if (hoverEvent == null || hoverEvent.getAction() != HoverEvent.Action.SHOW_TEXT) return null;
if (hoverEvent == null || hoverEvent.action() != HoverEvent.Action.SHOW_TEXT) return null;

@SuppressWarnings("ConstantConditions")
String hoverText = hoverEvent.getValue(HoverEvent.Action.SHOW_TEXT).getString().replaceAll("§.", "");
String hoverText = ((HoverEvent.ShowText)hoverEvent).value().getString().replaceAll("§.", "");

Matcher hoverMatch = hoverPattern.matcher(hoverText);
if (!hoverMatch.matches()) return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import net.minecraft.client.renderer.RenderPipelines;
import net.minecraft.core.registries.BuiltInRegistries;

public class FabricSnitchMod extends SnitchMod implements ClientModInitializer {
@Override
Expand All @@ -22,7 +24,7 @@ public void onInitializeClient() {
e.printStackTrace();
}
});
WorldRenderEvents.AFTER_TRANSLUCENT.register(((context) -> {
WorldRenderEvents.LAST.register(((context) -> {
try {
handleRenderBlockOverlay(context.matrixStack().last().pose());
} catch (Exception e) {
Expand Down
14 changes: 5 additions & 9 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,11 @@ org.gradle.jvmargs=-Xmx2048M
maven_group=gjum.minecraft.snitchmod
archives_base_name=snitchmod

mod_version=1.4.6-mc1.21.3
mod_version=1.4.7-mc1.21.8

minecraft_version=1.21.3
enabled_platforms=fabric,forge,neoforge
minecraft_version=1.21.8
enabled_platforms=fabric

# https://fabricmc.net/versions.html
fabric_loader_version=0.16.9
fabric_api_version=0.112.1+1.21.3

forge_version=53.0.25

neoforge_version=21.3.58
fabric_loader_version=0.17.3
fabric_api_version=0.112.1+1.21.3
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
4 changes: 2 additions & 2 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pluginManagement {

include("common")
include("fabric")
include("forge")
include("neoforge")
// include("forge")
// include("neoforge")

rootProject.name = "snitchmod"