Skip to content

Commit bea6d05

Browse files
committed
Be more friendly to other mods
1 parent 632d2b3 commit bea6d05

File tree

4 files changed

+15
-38
lines changed

4 files changed

+15
-38
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ This is what it looks like when you are using the mod.
2323

2424
## Download
2525

26-
The latest version is 1.1.1.
26+
The latest version is 1.2.0.
2727

2828
Direct download links for Minecraft 1.19:
2929

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ dependencies {
1515
minecraft "com.mojang:minecraft:${project.minecraft_version}"
1616
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
1717
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
18+
include(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:${project.mixinextras_version}")))
1819
}
1920

2021
processResources {

gradle.properties

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ org.gradle.jvmargs=-Xmx1G
55
# check these on https://fabricmc.net/develop
66
minecraft_version=1.19
77
yarn_mappings=1.19+build.2
8-
loader_version=0.14.7
8+
loader_version=0.14.11
99

1010
# Mod Properties
11-
mod_version = 1.1.1+1.19
11+
mod_version = 1.2.0+1.19
1212
maven_group = se.icus.mag
1313
archives_base_name = statuseffecttimer
1414

1515
# Dependencies
1616
# Fabric api
1717
fabric_version=0.56.0+1.19
18+
mixinextras_version=0.2.2

src/main/java/se/icus/mag/statuseffecttimer/mixin/StatusEffectTimerMixin.java

Lines changed: 10 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package se.icus.mag.statuseffecttimer.mixin;
22

3-
import com.google.common.collect.Ordering;
3+
import com.llamalad7.mixinextras.sugar.Local;
44
import net.fabricmc.api.EnvType;
55
import net.fabricmc.api.Environment;
66
import net.minecraft.client.MinecraftClient;
77
import net.minecraft.client.gui.DrawableHelper;
88
import net.minecraft.client.gui.hud.InGameHud;
99
import net.minecraft.client.resource.language.I18n;
1010
import net.minecraft.client.util.math.MatrixStack;
11-
import net.minecraft.entity.effect.StatusEffect;
1211
import net.minecraft.entity.effect.StatusEffectInstance;
1312
import net.minecraft.util.math.MathHelper;
1413
import org.jetbrains.annotations.NotNull;
@@ -19,7 +18,7 @@
1918
import org.spongepowered.asm.mixin.injection.Inject;
2019
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2120

22-
import java.util.Collection;
21+
import java.util.List;
2322

2423
// Set priority to 500, to load before default at 1000. This is to better cooperate with HUDTweaks.
2524
@Environment(EnvType.CLIENT)
@@ -28,38 +27,14 @@ public abstract class StatusEffectTimerMixin extends DrawableHelper {
2827
@Shadow @Final
2928
private MinecraftClient client;
3029

31-
@Inject(method = "renderStatusEffectOverlay", at = @At("TAIL"))
32-
private void renderDurationOverlay(MatrixStack matrices, CallbackInfo c) {
33-
Collection<StatusEffectInstance> collection = this.client.player.getStatusEffects();
34-
if (!collection.isEmpty()) {
35-
// Replicate vanilla placement algorithm to get the duration
36-
// labels to line up exactly right.
37-
38-
int beneficialCount = 0;
39-
int nonBeneficialCount = 0;
40-
for (StatusEffectInstance statusEffectInstance : Ordering.natural().reverse().sortedCopy(collection)) {
41-
StatusEffect statusEffect = statusEffectInstance.getEffectType();
42-
if (statusEffectInstance.shouldShowIcon()) {
43-
int x = this.client.getWindow().getScaledWidth();
44-
int y = 1;
45-
46-
if (this.client.isDemo()) {
47-
y += 15;
48-
}
49-
50-
if (statusEffect.isBeneficial()) {
51-
beneficialCount++;
52-
x -= 25 * beneficialCount;
53-
} else {
54-
nonBeneficialCount++;
55-
x -= 25 * nonBeneficialCount;
56-
y += 26;
57-
}
58-
59-
drawStatusEffectOverlay(matrices, statusEffectInstance, x, y);
60-
}
61-
}
62-
}
30+
@Inject(method = "renderStatusEffectOverlay",
31+
at = @At(value = "INVOKE", target = "Ljava/util/List;add(Ljava/lang/Object;)Z", shift = At.Shift.AFTER))
32+
private void appendOverlayDrawing(MatrixStack matrices, CallbackInfo c,
33+
@Local List<Runnable> list, @Local StatusEffectInstance statusEffectInstance,
34+
@Local(ordinal = 4) int x, @Local(ordinal = 3) int y) {
35+
list.add(() -> {
36+
drawStatusEffectOverlay(matrices, statusEffectInstance, x, y);
37+
});
6338
}
6439

6540
private void drawStatusEffectOverlay(MatrixStack matrices, StatusEffectInstance statusEffectInstance, int x, int y) {

0 commit comments

Comments
 (0)