Skip to content

Commit 281e98e

Browse files
authored
Develop beta 31 (#624)
This is a hotfix release to address issues related to frame computation in class transforms.
2 parents bdfe146 + 38c4ee3 commit 281e98e

File tree

5 files changed

+83
-12
lines changed

5 files changed

+83
-12
lines changed

gradle.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ org.gradle.jvmargs=-Xmx3G
44
org.gradle.daemon=true
55

66
# Versions
7-
versionConnector=1.0.0-beta.30
7+
versionConnector=1.0.0-beta.31
88
versionAdapter=1.9.0-1.20.1-20231215.155717
9-
versionAdapterDefinition=1.9.2
9+
versionAdapterDefinition=1.9.3
1010

1111
versionMc=1.20.1
1212
versionForge=47.1.3

src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java

+23-8
Original file line numberDiff line numberDiff line change
@@ -226,13 +226,6 @@ public class MixinPatchTransformer implements Transformer {
226226
.modifyTarget("renderHealth(IILnet/minecraft/client/gui/GuiGraphics;)V")
227227
.modifyParams(b -> b.insert(0, Type.INT_TYPE).insert(1, Type.INT_TYPE).targetType(ModifyMethodParams.TargetType.METHOD))
228228
.build(),
229-
Patch.builder()
230-
.targetClass("net/minecraft/client/gui/Gui")
231-
.targetMethod("m_280173_(Lnet/minecraft/client/gui/GuiGraphics;)V")
232-
.extractMixin("net/minecraftforge/client/gui/overlay/ForgeGui")
233-
.modifyTarget("renderArmor(Lnet/minecraft/client/gui/GuiGraphics;II)V")
234-
.modifyParams(b -> b.insert(1, Type.INT_TYPE).insert(2, Type.INT_TYPE).targetType(ModifyMethodParams.TargetType.METHOD))
235-
.build(),
236229
Patch.builder()
237230
.targetClass("net/minecraft/client/gui/Gui")
238231
.targetMethod("m_280421_(Lnet/minecraft/client/gui/GuiGraphics;F)V")
@@ -243,6 +236,7 @@ public class MixinPatchTransformer implements Transformer {
243236
.targetClass("net/minecraft/client/gui/Gui")
244237
.targetMethod("m_280421_(Lnet/minecraft/client/gui/GuiGraphics;F)V")
245238
.targetInjectionPoint("RETURN", "")
239+
.targetInjectionPoint("TAIL", "")
246240
.modifyTarget("connector_postRender")
247241
.build(),
248242
Patch.builder()
@@ -252,6 +246,19 @@ public class MixinPatchTransformer implements Transformer {
252246
.modifyTarget("connector_renderFood")
253247
.modifyInjectionPoint("HEAD", "")
254248
.build(),
249+
Patch.builder()
250+
.targetClass("net/minecraft/client/gui/Gui")
251+
.targetMethod("m_280173_(Lnet/minecraft/client/gui/GuiGraphics;)V")
252+
.targetInjectionPoint("HEAD", "")
253+
.modifyTarget("connector_renderHealth")
254+
.build(),
255+
Patch.builder()
256+
.targetClass("net/minecraft/client/gui/Gui")
257+
.targetMethod("m_280173_(Lnet/minecraft/client/gui/GuiGraphics;)V")
258+
.extractMixin("net/minecraftforge/client/gui/overlay/ForgeGui")
259+
.modifyTarget("renderArmor(Lnet/minecraft/client/gui/GuiGraphics;II)V")
260+
.modifyParams(b -> b.insert(1, Type.INT_TYPE).insert(2, Type.INT_TYPE).targetType(ModifyMethodParams.TargetType.METHOD))
261+
.build(),
255262
Patch.builder()
256263
.targetClass("net/minecraft/client/gui/Gui")
257264
.targetMethod("m_280421_(Lnet/minecraft/client/gui/GuiGraphics;F)V")
@@ -273,6 +280,14 @@ public class MixinPatchTransformer implements Transformer {
273280
.modifyTarget("connector_beforeDebugEnabled")
274281
.modifyInjectionPoint("HEAD", "")
275282
.build(),
283+
Patch.builder()
284+
.targetClass("net/minecraft/client/gui/Gui")
285+
.targetMethod("m_280250_(Lnet/minecraft/client/gui/GuiGraphics;)V")
286+
.targetInjectionPoint("HEAD", "")
287+
.extractMixin("net/minecraftforge/client/gui/overlay/ForgeGui")
288+
.modifyTarget("renderHealthMount(IILnet/minecraft/client/gui/GuiGraphics;)V")
289+
.modifyParams(b -> b.insert(0, Type.INT_TYPE).insert(1, Type.INT_TYPE).targetType(ModifyMethodParams.TargetType.METHOD))
290+
.build(),
276291
Patch.builder()
277292
.targetClass("net/minecraft/world/entity/player/Player")
278293
.targetMethod("m_7909_(F)V")
@@ -652,7 +667,7 @@ public Collection<? extends Entry> getExtras() {
652667
this.environment.classGenerator().getGeneratedMixinClasses().forEach((name, cls) -> {
653668
patch.apply(cls.node(), this.environment);
654669

655-
ClassWriter writer = new ClassWriter(0);
670+
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
656671
cls.node().accept(writer);
657672
byte[] bytes = writer.toByteArray();
658673
entries.add(ClassEntry.create(name + ".class", ConnectorUtil.ZIP_TIME, bytes));

src/mod/java/dev/su5ed/sinytra/connector/mod/compat/hud/GuiExtensions.java

+8
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,18 @@ public interface GuiExtensions {
77

88
void resetConnector_didFinishPreRender();
99

10+
boolean isConnector_didFinishStatusBarRender();
11+
12+
void resetConnector_didFinishStatusBarRender();
13+
1014
void connector_preRender(GuiGraphics guiGraphics, float tickDelta);
1115

1216
void connector_postRender(GuiGraphics guiGraphics, float tickDelta);
1317

18+
void connector_renderHealth(GuiGraphics guiGraphics);
19+
20+
void connector_renderArmor(GuiGraphics guiGraphics);
21+
1422
void connector_renderFood(GuiGraphics guiGraphics);
1523

1624
void connector_renderHotbar(GuiGraphics guiGraphics, float tickDelta);

src/mod/java/dev/su5ed/sinytra/connector/mod/mixin/hud/ForgeGuiMixin.java

+27-2
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,34 @@
1313
@Mixin(ForgeGui.class)
1414
public class ForgeGuiMixin {
1515

16-
@Inject(method = "renderFood", at = @At("HEAD"), remap = false)
16+
@Inject(method = "renderHealth", at = @At("HEAD"), remap = false, cancellable = true)
17+
private void onRenderHealth(int width, int height, GuiGraphics guiGraphics, CallbackInfo ci) {
18+
GuiExtensions ext = (GuiExtensions) this;
19+
ext.resetConnector_didFinishStatusBarRender();
20+
ext.connector_renderHealth(guiGraphics);
21+
if (!ext.isConnector_didFinishStatusBarRender()) {
22+
ci.cancel();
23+
}
24+
}
25+
26+
@Inject(method = "renderArmor", at = @At("HEAD"), remap = false, cancellable = true)
27+
private void onRenderArmor(GuiGraphics guiGraphics, int width, int height, CallbackInfo ci) {
28+
GuiExtensions ext = (GuiExtensions) this;
29+
if (!ext.isConnector_didFinishStatusBarRender()) {
30+
ci.cancel();
31+
} else {
32+
ext.connector_renderArmor(guiGraphics);
33+
}
34+
}
35+
36+
@Inject(method = "renderFood", at = @At("HEAD"), remap = false, cancellable = true)
1737
private void onRenderFood(int width, int height, GuiGraphics guiGraphics, CallbackInfo ci) {
18-
((GuiExtensions) this).connector_renderFood(guiGraphics);
38+
GuiExtensions ext = (GuiExtensions) this;
39+
if (!ext.isConnector_didFinishStatusBarRender()) {
40+
ci.cancel();
41+
} else {
42+
ext.connector_renderFood(guiGraphics);
43+
}
1944
}
2045

2146
@Inject(method = "renderHUDText", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Options;renderDebug:Z", opcode = Opcodes.GETFIELD))

src/mod/java/dev/su5ed/sinytra/connector/mod/mixin/hud/GuiMixin.java

+23
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
public abstract class GuiMixin implements GuiExtensions {
1515
@Unique
1616
private boolean connector_didFinishPreRender;
17+
@Unique
18+
private boolean connector_didFinishHealthBarRender;
1719

1820
@Override
1921
public boolean isConnector_didFinishPreRender() {
@@ -25,6 +27,16 @@ public void resetConnector_didFinishPreRender() {
2527
this.connector_didFinishPreRender = false;
2628
}
2729

30+
@Override
31+
public boolean isConnector_didFinishStatusBarRender() {
32+
return this.connector_didFinishHealthBarRender;
33+
}
34+
35+
@Override
36+
public void resetConnector_didFinishStatusBarRender() {
37+
this.connector_didFinishHealthBarRender = false;
38+
}
39+
2840
@Override
2941
public void connector_preRender(GuiGraphics guiGraphics, float tickDelta) {
3042
// Let mods mixin into this method
@@ -36,6 +48,17 @@ public void connector_postRender(GuiGraphics guiGraphics, float tickDelta) {
3648
// Let mods mixin into this method
3749
}
3850

51+
@Override
52+
public void connector_renderHealth(GuiGraphics guiGraphics) {
53+
// Let mods mixin into this method
54+
this.connector_didFinishHealthBarRender = true;
55+
}
56+
57+
@Override
58+
public void connector_renderArmor(GuiGraphics guiGraphics) {
59+
// Let mods mixin into this method
60+
}
61+
3962
@Override
4063
public void connector_renderFood(GuiGraphics guiGraphics) {
4164
// Let mods mixin into this method

0 commit comments

Comments
 (0)