Skip to content

Commit

Permalink
Start 1.21 update
Browse files Browse the repository at this point in the history
  • Loading branch information
Minecraftschurli committed Aug 3, 2024
1 parent d7feca0 commit 36d6720
Show file tree
Hide file tree
Showing 14 changed files with 117 additions and 46 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ jobs:
build:
uses: MinecraftschurliMods/.github/.github/workflows/build-library.yml@main
with:
java-version: 21
maven-url: ${{ vars.MAVEN_URL }}
maven-user: ${{ vars.MAVEN_USER }}
publish-to-maven: true
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ on:
jobs:
build:
uses: MinecraftschurliMods/.github/.github/workflows/build-library.yml@main
with:
java-version: 21
10 changes: 9 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
plugins {
id ("com.github.minecraftschurlimods.helperplugin")
id("net.neoforged.gradle.userdev")
id("com.github.minecraftschurlimods.helperplugin")
}

helper.withTestSourceSet()

dependencies {
implementation(helper.neoforge())
compileOnly("org.jetbrains:annotations:23.0.0")
}

helper.withCommonRuns()
runs.configureEach {
programArguments("--fml.mixin", "betterhudlib.mixins.json")
}

helper.publication.pom {
organization {
name = "Minecraftschurli Mods"
Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ lib.name=betterhudlib
lib.version=1.0
lib.vendor=Minecraftschurli

java_version=17
java_version=21

github.owner=MinecraftschurliMods
github.repo=BetterHUDLib
Expand All @@ -18,8 +18,8 @@ license.name=MIT
license.url=https://opensource.org/licenses/MIT
license.file=LICENSE

neogradle.subsystems.parchment.minecraftVersion=1.20.3
neogradle.subsystems.parchment.mappingsVersion=2023.12.31
neogradle.subsystems.parchment.minecraftVersion=1.21
neogradle.subsystems.parchment.mappingsVersion=2024.07.28

mc_version=1.20.4
neo_version=20.4.80-beta
mc_version=1.21
neo_version=21.0.148
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.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
5 changes: 2 additions & 3 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
pluginManagement {
plugins {
id("org.ec4j.editorconfig") version "0.0.3"
id("net.neoforged.gradle.userdev") version "7.0.80"
id("com.github.minecraftschurlimods.helperplugin") version "1.6"
id("net.neoforged.gradle.userdev") version "7.0.153"
id("com.github.minecraftschurlimods.helperplugin") version "1.14"
}
repositories {
mavenLocal()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.github.minecraftschurlimods.betterhudlib;

import net.minecraft.client.DeltaTracker;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.neoforged.neoforge.client.gui.overlay.ExtendedGui;
import net.neoforged.neoforge.client.gui.overlay.IGuiOverlay;
import net.minecraft.client.gui.LayeredDraw;

import java.util.function.IntSupplier;
import java.util.function.Supplier;

public abstract class HUDElement implements IGuiOverlay {
public abstract class HUDElement implements LayeredDraw.Layer {
private final Supplier<AnchorX> defaultAnchorX;
private final Supplier<AnchorY> defaultAnchorY;
private final IntSupplier defaultX;
Expand Down Expand Up @@ -36,11 +37,13 @@ protected HUDElement(Supplier<AnchorX> anchorX, Supplier<AnchorY> anchorY, IntSu
}

@Override
public void render(ExtendedGui gui, GuiGraphics graphics, float partialTick, int screenWidth, int screenHeight) {
applyDefaults();
public void render(GuiGraphics graphics, DeltaTracker deltaTracker) {
int screenWidth = Minecraft.getInstance().getWindow().getGuiScaledWidth();
int screenHeight = Minecraft.getInstance().getWindow().getGuiScaledHeight();
graphics.pose().pushPose();
graphics.pose().translate(getNormalizedX(screenWidth), getNormalizedY(screenHeight), 0);
draw(gui, graphics, partialTick);
applyDefaults();
draw(graphics, deltaTracker);
graphics.pose().popPose();
}

Expand Down Expand Up @@ -79,7 +82,7 @@ private int getNormalizedY(int screenHeight) {
return y;
}

public abstract void draw(ExtendedGui gui, GuiGraphics graphics, float partialTick);
public abstract void draw(GuiGraphics graphics, DeltaTracker deltaTracker);

protected final int getX(int screenWidth) {
return switch (anchorX) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package com.github.minecraftschurlimods.betterhudlib;

import com.github.minecraftschurlimods.betterhudlib.mixin.GuiAccessor;
import com.github.minecraftschurlimods.betterhudlib.mixin.GuiLayerManagerAccessor;
import net.minecraft.Util;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.LayeredDraw;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.Renderable;
import net.minecraft.client.gui.components.events.GuiEventListener;
Expand All @@ -11,13 +16,13 @@
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.sounds.SoundManager;
import net.minecraft.network.chat.Component;
import net.neoforged.neoforge.client.gui.overlay.ExtendedGui;
import net.neoforged.neoforge.client.gui.overlay.GuiOverlayManager;
import net.neoforged.neoforge.client.gui.overlay.IGuiOverlay;
import net.neoforged.neoforge.client.gui.overlay.NamedGuiOverlay;
import net.neoforged.neoforge.client.gui.GuiLayerManager;
import org.jetbrains.annotations.Nullable;
import org.lwjgl.glfw.GLFW;

import java.util.List;

@SuppressWarnings("UnstableApiUsage")
public final class HUDManagerScreen extends Screen {

HUDManagerScreen() {
Expand All @@ -27,15 +32,20 @@ public final class HUDManagerScreen extends Screen {
@Override
protected void init() {
super.init();
for (NamedGuiOverlay entry : GuiOverlayManager.getOverlays()) {
if (entry.overlay() instanceof HUDElement element) {
addRenderableWidget(new HUDElementWrapper(Component.translatable(Util.makeDescriptionId("hud_element", entry.id())), element));
if (minecraft == null) return;
for (GuiLayerManager.NamedLayer entry : getGuiLayers(minecraft.gui)) {
if (entry.layer() instanceof HUDElement element) {
addRenderableWidget(new HUDElementWrapper(Component.translatable(Util.makeDescriptionId("hud_element", entry.name())), element));
} else {
addRenderableOnly(new StandardHUDElement(entry));
}
}
}

private List<GuiLayerManager.NamedLayer> getGuiLayers(Gui gui) {
return ((GuiLayerManagerAccessor) ((GuiAccessor) gui).getLayerManager()).getLayers();
}

@Override
public void onClose() {
for (GuiEventListener child : children()) {
Expand All @@ -50,23 +60,31 @@ private interface HUDWidget extends Renderable {

@Override
default void render(GuiGraphics graphics, int pMouseX, int pMouseY, float pPartialTick) {
Minecraft minecraft = Minecraft.getInstance();
getHUDElement().render(
((ExtendedGui) minecraft.gui),
graphics,
pPartialTick,
minecraft.getWindow().getGuiScaledWidth(),
minecraft.getWindow().getGuiScaledHeight()
);
getHUDElement().render(graphics, new DeltaTracker() {
@Override
public float getGameTimeDeltaTicks() {
return pPartialTick;
}

@Override
public float getGameTimeDeltaPartialTick(boolean b) {
return pPartialTick;
}

@Override
public float getRealtimeDeltaTicks() {
return pPartialTick;
}
});
}

IGuiOverlay getHUDElement();
LayeredDraw.Layer getHUDElement();
}

private record StandardHUDElement(NamedGuiOverlay entry) implements HUDWidget {
private record StandardHUDElement(GuiLayerManager.NamedLayer entry) implements HUDWidget {
@Override
public IGuiOverlay getHUDElement() {
return entry.overlay();
public LayeredDraw.Layer getHUDElement() {
return entry.layer();
}
}

Expand All @@ -92,7 +110,8 @@ protected void updateWidgetNarration(NarrationElementOutput pNarrationElementOut
}

@Override
public void onClick(double pMouseX, double pMouseY) {
public void onClick(double pMouseX, double pMouseY, int pButton) {
if (pButton != GLFW.GLFW_MOUSE_BUTTON_LEFT) return;
this.holdX = pMouseX - this.getX();
this.holdY = pMouseY - this.getY();
}
Expand Down Expand Up @@ -150,7 +169,7 @@ private void setElementPosition(int newX, int newY) {
public void playDownSound(SoundManager pHandler) {}

@Override
public IGuiOverlay getHUDElement() {
public LayeredDraw.Layer getHUDElement() {
return element;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.github.minecraftschurlimods.betterhudlib.mixin;

import net.minecraft.client.gui.Gui;
import net.neoforged.neoforge.client.gui.GuiLayerManager;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(Gui.class)
public interface GuiAccessor {
@Accessor
GuiLayerManager getLayerManager();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.github.minecraftschurlimods.betterhudlib.mixin;

import net.neoforged.neoforge.client.gui.GuiLayerManager;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

import java.util.List;

@Mixin(GuiLayerManager.class)
public interface GuiLayerManagerAccessor {
@Accessor
List<GuiLayerManager.NamedLayer> getLayers();
}
1 change: 1 addition & 0 deletions src/main/resources/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MixinConfigs: betterhudlib.mixins.json
13 changes: 13 additions & 0 deletions src/main/resources/betterhudlib.mixins.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"required": true,
"minVersion": "0.8.5",
"package": "com.github.minecraftschurlimods.betterhudlib.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"GuiAccessor",
"GuiLayerManagerAccessor"
],
"injectors": {
"defaultRequire": 1
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,26 @@

import com.github.minecraftschurlimods.betterhudlib.HUDElement;
import com.github.minecraftschurlimods.betterhudlib.HUDManager;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.resources.ResourceLocation;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.client.event.RegisterGuiOverlaysEvent;
import net.neoforged.neoforge.client.gui.overlay.ExtendedGui;
import net.neoforged.neoforge.client.event.RegisterGuiLayersEvent;

public class ClientInit {
public static void init(IEventBus modBus) {
HUDManager.initialize();
HUDManager.enableKeybind(modBus);
modBus.addListener((RegisterGuiOverlaysEvent evt) -> {
evt.registerAboveAll(new ResourceLocation("betterhudlibtest", "test_hud"), new HUDElement(HUDElement.AnchorX.CENTER, HUDElement.AnchorY.CENTER, 0, 0, 100, 100) {
modBus.addListener((RegisterGuiLayersEvent evt) -> {
evt.registerAboveAll(ResourceLocation.fromNamespaceAndPath("betterhudlibtest", "test_hud"), new HUDElement(HUDElement.AnchorX.CENTER, HUDElement.AnchorY.CENTER, 0, 0, 100, 100) {
@Override
public void draw(ExtendedGui gui, GuiGraphics graphics, float partialTick) {
public void draw(GuiGraphics graphics, DeltaTracker deltaTracker) {
graphics.fill(0, 0, getHeight(), getWidth(), 0xFF00FF00);
}
});
evt.registerAboveAll(new ResourceLocation("betterhudlibtest", "test_hud2"), new HUDElement(HUDElement.AnchorX.CENTER, HUDElement.AnchorY.BOTTOM, 100, 0, 100, 100) {
evt.registerAboveAll(ResourceLocation.fromNamespaceAndPath("betterhudlibtest", "test_hud2"), new HUDElement(HUDElement.AnchorX.CENTER, HUDElement.AnchorY.BOTTOM, 100, 0, 100, 100) {
@Override
public void draw(ExtendedGui gui, GuiGraphics graphics, float partialTick) {
public void draw(GuiGraphics graphics, DeltaTracker deltaTracker) {
graphics.fill(0, 0, getHeight(), getWidth(), 0xFFFF0000);
}
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
modLoader="javafml"
loaderVersion="[28,)"
loaderVersion="[2,)"
license="MIT"

[[mods]]
Expand Down

0 comments on commit 36d6720

Please sign in to comment.