Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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: 2 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
plugins {
id 'java'
id 'fabric-loom' version '1.11.4'
id 'net.fabricmc.fabric-loom' version "${loom_version}"
}

dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
}

version = "${project.mod_version}+${project.minecraft_version}"
Expand Down
24 changes: 14 additions & 10 deletions gradle.properties
Comment thread
rh4htr marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# Mod version
mod_version=2.0.0
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G
org.gradle.parallel=true

# Minecraft/Java version
# Also hardcoded in fabric.mod.json and *.mixin.json
minecraft_version=1.21.6
java_version=21
# IntelliJ IDEA is not yet fully compatible with configuration cache, see: https://github.com/FabricMC/fabric-loom/issues/1349
org.gradle.configuration-cache=false

# Fabric versions -- check these on https://fabricmc.net/develop
# Also hardcoded in fabric.mod.json
yarn_mappings=1.21.6+build.1
loader_version=0.16.14
# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=26.1
java_version=25
loader_version=0.19.0
loom_version=1.16-SNAPSHOT

# Mod Properties
mod_version=2.0.0
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.14-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
package se.icus.mag.statuseffecttimer;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.util.math.MathHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphicsExtractor;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.util.Mth;

public class StatusEffectTimerRenderer {
public void drawStatusEffectOverlay(MinecraftClient client, DrawContext context, StatusEffectInstance statusEffectInstance, int x, int y) {
public void drawStatusEffectOverlay(Minecraft client, GuiGraphicsExtractor context, MobEffectInstance statusEffectInstance, int x, int y) {
String duration = getDurationAsString(statusEffectInstance);
int durationLength = client.textRenderer.getWidth(duration);
context.drawTextWithShadow(client.textRenderer, duration, x + 13 - (durationLength / 2), y + 14, 0x99FFFFFF);
int durationLength = client.font.width(duration);
context.text(client.font, duration, x + 13 - (durationLength / 2), y + 14, 0x99FFFFFF);

int amplifier = statusEffectInstance.getAmplifier();
if (amplifier > 0) {
// Convert to roman numerals if possible
String amplifierString = (amplifier < 10) ? I18n.translate("enchantment.level." + (amplifier + 1)) : "**";
int amplifierLength = client.textRenderer.getWidth(amplifierString);
context.drawTextWithShadow(client.textRenderer, amplifierString, x + 22 - amplifierLength, y + 3, 0x99FFFFFF);
String amplifierString = (amplifier < 10) ? I18n.get("enchantment.level." + (amplifier + 1)) : "**";
int amplifierLength = client.font.width(amplifierString);
context.text(client.font, amplifierString, x + 22 - amplifierLength, y + 3, 0x99FFFFFF);
}
}

private String getDurationAsString(StatusEffectInstance statusEffectInstance) {
if (statusEffectInstance.isInfinite()) {
return I18n.translate("effect.duration.infinite");
private String getDurationAsString(MobEffectInstance statusEffectInstance) {
if (statusEffectInstance.isInfiniteDuration()) {
return I18n.get("effect.duration.infinite");
}

int ticks = MathHelper.floor((float) statusEffectInstance.getDuration());
int ticks = Mth.floor((float) statusEffectInstance.getDuration());
int seconds = ticks / 20;

if (seconds >= 3600) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import com.llamalad7.mixinextras.sugar.Local;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.hud.InGameHud;
import net.minecraft.client.render.RenderTickCounter;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphicsExtractor;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.DeltaTracker;
import net.minecraft.world.effect.MobEffectInstance;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
Expand All @@ -19,21 +19,21 @@

// Set priority to 500, to load before default at 1000. This is to better cooperate with HUDTweaks.
@Environment(EnvType.CLIENT)
@Mixin(value = InGameHud.class, priority = 500)
@Mixin(value = Gui.class, priority = 500)
public abstract class StatusEffectTimerMixin {
@Unique
private StatusEffectTimerRenderer renderer = new StatusEffectTimerRenderer();

@Shadow @Final
private MinecraftClient client;
private Minecraft minecraft;

@Inject(method = "renderStatusEffectOverlay",
@Inject(method = "extractEffects",
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lcom/mojang/blaze3d/pipeline/RenderPipeline;Lnet/minecraft/util/Identifier;IIIII)V",
target = "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blitSprite(Lcom/mojang/blaze3d/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIIII)V",
shift = At.Shift.AFTER))
private void appendOverlayDrawing(DrawContext context, RenderTickCounter tickCounter, CallbackInfo c,
@Local StatusEffectInstance statusEffectInstance,
@Local(ordinal = 2) int x, @Local(ordinal = 3) int y) {
renderer.drawStatusEffectOverlay(client, context, statusEffectInstance, x, y);
private void onExtractEffects(GuiGraphicsExtractor context, DeltaTracker deltaTracker, CallbackInfo c,
@Local MobEffectInstance statusEffectInstance,
@Local(ordinal = 2) int x, @Local(ordinal = 3) int y) {
renderer.drawStatusEffectOverlay(minecraft, context, statusEffectInstance, x, y);
}
}
4 changes: 2 additions & 2 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
],

"depends": {
"minecraft": ">=1.21.6",
"fabricloader": ">=0.16.14"
"minecraft": "~26.1",
"fabricloader": ">=0.19.0"
}
}
Loading