Skip to content
Merged
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
29 changes: 19 additions & 10 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
plugins {
id 'fabric-loom' version '1.9-SNAPSHOT'
id 'fabric-loom' version '1.10-SNAPSHOT'
id 'maven-publish'
}

version = project.mod_version
group = project.maven_group

base {
archivesName = project.archives_base_name
}

allprojects {
apply plugin: "java"
apply plugin: "maven-publish"

archivesBaseName = rootProject.archives_base_name
version = rootProject.mod_version
group = rootProject.maven_group
}

repositories {
Expand All @@ -23,7 +28,6 @@ repositories {
name 'Xander Maven'
url 'https://maven.isxander.dev/releases'
}
maven { url "https://maven.terraformersmc.com/releases" }
}

dependencies {
Expand All @@ -38,14 +42,17 @@ dependencies {

processResources {
inputs.property "version", project.version
inputs.property "minecraft_version", project.minecraft_version
inputs.property "loader_version", project.loader_version
filteringCharset "UTF-8"
inputs.property "minecraft_version", project.minecraft_version
inputs.property "yacl_version", project.yacl_version

filesMatching("fabric.mod.json") {
expand "version": project.version,
"minecraft_version": project.minecraft_version,
"loader_version": project.loader_version
expand([
"version": inputs.properties.version,
"loader_version": inputs.properties.loader_version,
"minecraft_version": inputs.properties.minecraft_version,
"yacl_version": inputs.properties.yacl_version
])
}
}

Expand All @@ -65,8 +72,10 @@ java {
}

jar {
inputs.property "archivesName", project.base.archivesName

from("LICENSE") {
rename { "${it}_${project.archivesBaseName}"}
rename { "${it}_${inputs.properties.archivesName}"}
}
}

Expand Down
12 changes: 6 additions & 6 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ org.gradle.parallel=true

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.21.4
yarn_mappings=1.21.4+build.1
loader_version=0.16.9
minecraft_version=1.21.5
yarn_mappings=1.21.5+build.1
loader_version=0.16.10

# Mod Properties
# need versioning system
mod_version = 3.0.0
mod_version = 3.1.0
maven_group = com.tanishisherewith
archives_base_name = dynamichud

# Dependencies
fabric_version=0.111.0+1.21.4
yacl_version=3.6.6+1.21.4-fabric
fabric_version=0.119.5+1.21.5
yacl_version=3.6.6+1.21.5-fabric
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
35 changes: 21 additions & 14 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 13 additions & 11 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.tanishisherewith.dynamichud;

import com.tanishisherewith.dynamichud.config.GlobalConfig;
import com.tanishisherewith.dynamichud.helpers.MouseColorQuery;
import com.tanishisherewith.dynamichud.integration.IntegrationManager;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.minecraft.client.MinecraftClient;
import org.slf4j.Logger;
Expand Down Expand Up @@ -35,6 +38,7 @@ public void onInitializeClient() {
IntegrationManager.integrate();

//In game screen render.
HudRenderCallback.EVENT.register(new HudRender());
HudLayerRegistrationCallback.EVENT.register(new HudRender());
ClientTickEvents.END_CLIENT_TICK.register(mc-> MouseColorQuery.processIfPending());
}
}
23 changes: 16 additions & 7 deletions src/main/java/com/tanishisherewith/dynamichud/HudRender.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,29 @@

import com.tanishisherewith.dynamichud.integration.IntegrationManager;
import com.tanishisherewith.dynamichud.widget.WidgetRenderer;
import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.fabricmc.fabric.api.client.rendering.v1.IdentifiedLayer;
import net.fabricmc.fabric.api.client.rendering.v1.LayeredDrawerWrapper;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderTickCounter;
import net.minecraft.util.Identifier;

/**
* Using the fabric event {@link HudRenderCallback} to render widgets in the game HUD.
* Using the fabric event {@link HudLayerRegistrationCallback} to render widgets in the game HUD.
* Mouse positions are passed in the negatives even though theoretically it's in the centre of the screen.
*/
public class HudRender implements HudRenderCallback {

public class HudRender implements HudLayerRegistrationCallback {
@Override
public void onHudRender(DrawContext drawContext, RenderTickCounter tickCounter) {
for (WidgetRenderer widgetRenderer : IntegrationManager.getWidgetRenderers()) {
widgetRenderer.renderWidgets(drawContext, -120, -120);
}
public void register(LayeredDrawerWrapper layeredDrawer) {
layeredDrawer.attachLayerAfter(
IdentifiedLayer.MISC_OVERLAYS,
IdentifiedLayer.of(Identifier.of("dynamichud","hudrender_callback"),
(context, tickCounter) -> {
for (WidgetRenderer widgetRenderer : IntegrationManager.getWidgetRenderers()) {
widgetRenderer.renderWidgets(context, -120, -120);
}
})
);
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.tanishisherewith.dynamichud.helpers;

import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gl.Framebuffer;
import net.minecraft.client.util.Window;
import net.minecraft.util.math.MathHelper;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL30;

Expand Down Expand Up @@ -174,47 +176,8 @@ public static Color changeAlpha(Color color, int alpha) {
return new Color(0);
}

public static int[] getMousePixelColor(double mouseX, double mouseY) {
MinecraftClient client = MinecraftClient.getInstance();
Framebuffer framebuffer = client.getFramebuffer();
Window window = client.getWindow();

// Get the window and framebuffer dimensions
int windowWidth = window.getWidth();
int windowHeight = window.getHeight();
int framebufferWidth = framebuffer.textureWidth;
int framebufferHeight = framebuffer.textureHeight;

// Calculate scaling factors
double scaleX = (double) framebufferWidth / windowWidth;
double scaleY = (double) framebufferHeight / windowHeight;

// Convert mouse coordinates to framebuffer coordinates
int x = (int) (mouseX * scaleX);
int y = (int) ((windowHeight - mouseY) * scaleY);

// Ensure the coordinates are within the framebuffer bounds
if (x < 0 || x >= framebufferWidth || y < 0 || y >= framebufferHeight) {
System.err.println("Mouse coordinates are out of bounds");
return null;
}

// Allocate a buffer to store the pixel data
ByteBuffer buffer = ByteBuffer.allocateDirect(4); // 4 bytes for RGBA

// Bind the framebuffer for reading
GL30.glBindFramebuffer(GL30.GL_READ_FRAMEBUFFER, framebuffer.fbo);

// Read the pixel at the mouse position
GL11.glReadPixels(x, y, 1, 1, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buffer);

// Extract the color components from the buffer
int red = buffer.get(0) & 0xFF;
int green = buffer.get(1) & 0xFF;
int blue = buffer.get(2) & 0xFF;
int alpha = buffer.get(3) & 0xFF;

return new int[]{red, green, blue, alpha};
public static Color changeAlpha(int color, int alpha) {
return changeAlpha(new Color(color),alpha);
}

public static int fromRGBA(int r, int g, int b, int a) {
Expand Down
Loading