Skip to content

Commit be0ad20

Browse files
committed
Many fixes which I don't want to explain
1 parent ae32aba commit be0ad20

File tree

11 files changed

+232
-20
lines changed

11 files changed

+232
-20
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ copycat-image-awt = "0.1.1"
2121

2222
# Per version
2323
textile = "0.18.0"
24-
omnicore = "0.32.0"
24+
omnicore = "0.33.1"
2525
lwjgl = "3.3.3" # All downloaded by the isolated-lwjgl3-loader
2626

2727
# Legacy only

minecraft/mappings/1.16.5-forge+1.12.2-forge.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ net.minecraft.client.renderer.GameRenderer renderItemInHand() renderHand()
1313
net.minecraft.client.renderer.EffectInstance net.minecraft.client.shader.ShaderManager
1414
net.minecraft.client.renderer.EffectInstance getUniform() getShaderUniform()
1515

16+
com.mojang.blaze3d.platform.GlStateManager net.minecraft.client.renderer.GlStateManager
17+
com.mojang.blaze3d.platform.GlStateManager _enableCull() enableCull()
18+
1619
net.minecraft.client.renderer.PostPass net.minecraft.client.shader.Shader
1720
net.minecraft.client.renderer.PostPass getEffect() getShaderManager()
1821

minecraft/src/main/java/org/polyfrost/oneconfig/api/platform/v1/internal/GLPlatformImpl.java

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,75 @@
2626

2727
package org.polyfrost.oneconfig.api.platform.v1.internal;
2828

29+
import dev.deftu.omnicore.client.render.OmniRenderState;
30+
import dev.deftu.omnicore.client.render.OmniTextureManager;
31+
import dev.deftu.omnicore.client.render.state.OmniManagedBlendState;
32+
import dev.deftu.omnicore.client.render.state.OmniManagedColorMask;
33+
import dev.deftu.omnicore.client.render.state.OmniManagedDepthState;
34+
import dev.deftu.omnicore.client.render.state.OmniManagedScissorState;
35+
import org.lwjgl.opengl.GL11;
2936
import org.polyfrost.oneconfig.api.platform.v1.GLPlatform;
3037
import org.polyfrost.oneconfig.utils.v1.MHUtils;
38+
import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_SRC_ALPHA;
39+
import static org.lwjgl.opengl.GL11.GL_SRC_ALPHA;
40+
import static org.lwjgl.opengl.GL13.GL_TEXTURE0;
41+
42+
//#if MC <= 1.12.2
43+
import net.minecraft.client.renderer.GlStateManager;
44+
//#endif
3145

3246
public class GLPlatformImpl implements GLPlatform {
3347

3448
//@formatter:off
35-
//#if MC<=11202
49+
//#if MC <= 1.12.2
3650
private static final java.util.function.Function<String, Long> getProcAddress =
3751
MHUtils.getFunctionHandle(org.lwjgl.opengl.GLContext.class, "getFunctionAddress", long.class, String.class)
3852
.logIfErr().getOrElse(v -> 0L);
3953
//#endif
4054

4155
@Override
4256
public long getFunctionAddress(String addr) {
43-
//#if MC<=11202
57+
//#if MC <= 1.12.2
4458
return getProcAddress.apply(addr);
4559
//#else
4660
//$$ return org.lwjgl.glfw.GLFW.glfwGetProcAddress(addr);
4761
//#endif
4862
}
4963
//@formatter:on
5064

65+
/**
66+
* This method is called to update the game's internally tracked OpenGL state
67+
* to match what NanoVG leaves dropped into the OpenGL context.
68+
*/
69+
@Override
70+
public void updateGameRenderStateAlongsideNanoVG() {
71+
// Blending
72+
OmniManagedBlendState.enableBlend();
73+
OmniManagedBlendState.blendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
74+
75+
// Depth
76+
OmniManagedDepthState.disableDepth();
77+
78+
// Culling
79+
//noinspection deprecation
80+
OmniRenderState.enableCull();
81+
//#if MC <= 1.8.9
82+
GlStateManager.cullFace(GL11.GL_BACK);
83+
//#endif
84+
85+
// Scissor
86+
OmniManagedScissorState.disable();
87+
88+
// Color mask
89+
new OmniManagedColorMask(true, true, true, true).activate();
90+
91+
// Active texture
92+
OmniTextureManager.setActiveTexture(GL_TEXTURE0);
93+
OmniTextureManager.bindTexture(0);
94+
95+
//#if MC >= 1.17.1 && MC < 1.21.5
96+
//$$ net.minecraft.client.render.BufferRenderer.unbindAll();
97+
//#endif
98+
}
99+
51100
}

minecraft/src/main/java/org/polyfrost/oneconfig/api/ui/v1/internal/wrappers/PolyUIScreen.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import dev.deftu.omnicore.client.render.OmniResolution;
3333
import dev.deftu.omnicore.client.render.framebuffer.Framebuffer;
3434
import dev.deftu.omnicore.client.render.framebuffer.ManagedFramebuffer;
35+
import dev.deftu.omnicore.client.render.state.DepthFunction;
36+
import dev.deftu.omnicore.client.render.state.OmniManagedDepthState;
3537
import dev.deftu.omnicore.client.render.texture.GpuTexture;
3638
import kotlin.Unit;
3739
import net.minecraft.client.Minecraft;
@@ -42,6 +44,7 @@
4244
import org.polyfrost.oneconfig.api.platform.v1.Platform;
4345
import org.polyfrost.oneconfig.api.ui.v1.Notifications;
4446
import org.polyfrost.oneconfig.api.ui.v1.UIManager;
47+
import org.polyfrost.oneconfig.api.ui.v1.internal.RendererImpl;
4548
import org.polyfrost.oneconfig.api.ui.v1.screen.BlurScreen;
4649
import org.polyfrost.polyui.PolyUI;
4750
import org.polyfrost.polyui.component.Drawable;
@@ -149,6 +152,8 @@ public void handleRender(@NotNull OmniMatrixStack matrices, int mouseX, int mous
149152
scaledWidth, scaledHeight,
150153
Color.WHITE.getRGB()
151154
);
155+
156+
OmniManagedDepthState.enable(DepthFunction.LESS_OR_EQUAL);
152157
}
153158

154159
@Override

minecraft/src/main/java/org/polyfrost/oneconfig/internal/mixin/events/Mixin_ChatReceiveEvent_Forge.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import net.minecraftforge.fml.common.eventhandler.EventBus;
3434
import org.polyfrost.oneconfig.api.event.v1.EventManager;
3535
import org.polyfrost.oneconfig.api.event.v1.events.ChatEvent;
36+
import org.polyfrost.oneconfig.internal.utils.ComponentHelper;
3637
import org.spongepowered.asm.mixin.Mixin;
3738
import org.spongepowered.asm.mixin.injection.At;
3839
import org.spongepowered.asm.mixin.injection.Inject;
@@ -53,6 +54,10 @@ private void receiveEventCallback(Event e, CallbackInfoReturnable<Boolean> cir)
5354
return;
5455
}
5556

57+
if (Boolean.getBoolean("oneconfig.debug.chat")) {
58+
System.out.println("Chat message received:\n" + ComponentHelper.prettyPrint(event.message));
59+
}
60+
5661
ChatEvent.Receive ev = new ChatEvent.Receive(MCTextHolder.convertFromVanilla(event.message));
5762
//#else
5863
//#if MC < 1.19
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
package org.polyfrost.oneconfig.internal.utils;
2+
3+
import net.minecraft.util.ChatStyle;
4+
import net.minecraft.util.IChatComponent;
5+
6+
import java.util.List;
7+
8+
public class ComponentHelper {
9+
10+
private static final String baselineIndent = indent(4);
11+
12+
/**
13+
* Returns a prettified string representation of the given component's toString output.
14+
*/
15+
public static String prettyPrint(IChatComponent component) {
16+
if (component == null) {
17+
return "null";
18+
}
19+
20+
StringBuilder sb = new StringBuilder();
21+
prettyPrintHelper(component, sb, 0);
22+
return sb.toString();
23+
}
24+
25+
private static void prettyPrintHelper(IChatComponent component, StringBuilder sb, int indent) {
26+
String indentation = indent(indent);
27+
sb.append(indentation).append(component.getClass().getSimpleName()).append(" {\n");
28+
29+
//#if MC >= 1.19.2
30+
//$$ StringBuilder textBuilder = new StringBuilder();
31+
//$$ component.getContent().visit((content) -> {
32+
//$$ textBuilder.append(content);
33+
//$$ return java.util.Optional.empty();
34+
//$$ });
35+
//$$
36+
//$$ String text = textBuilder.toString();
37+
//#else
38+
String text = component.getUnformattedTextForChat();
39+
//#endif
40+
if (!text.isEmpty()) {
41+
sb.append(indentation).append(baselineIndent).append("text: ").append('"').append(text).append('"').append("\n");
42+
}
43+
44+
ChatStyle style = component.getChatStyle();
45+
if (style != null) {
46+
sb.append(indentation)
47+
.append(baselineIndent)
48+
.append("style: {\n");
49+
50+
sb.append(indentation)
51+
.append(baselineIndent)
52+
.append(baselineIndent)
53+
.append("color: ")
54+
//#if MC >= 1.16.5
55+
//$$ .append(style.getColor() != null ? style.getColor().serialize() : "null")
56+
//#else
57+
.append(style.getColor() != null ? style.getColor().getFriendlyName() : "null")
58+
//#endif
59+
.append("\n");
60+
61+
sb.append(indentation)
62+
.append(baselineIndent)
63+
.append(baselineIndent)
64+
.append("bold: ")
65+
.append(style.getBold())
66+
.append("\n");
67+
68+
sb.append(indentation)
69+
.append(baselineIndent)
70+
.append(baselineIndent)
71+
.append("italic: ")
72+
.append(style.getItalic())
73+
.append("\n");
74+
75+
sb.append(indentation)
76+
.append(baselineIndent)
77+
.append(baselineIndent)
78+
.append("underlined: ")
79+
.append(style.getUnderlined())
80+
.append("\n");
81+
82+
sb.append(indentation)
83+
.append(baselineIndent)
84+
.append(baselineIndent)
85+
.append("strikethrough: ")
86+
.append(style.getStrikethrough())
87+
.append("\n");
88+
89+
sb.append(indentation)
90+
.append(baselineIndent)
91+
.append(baselineIndent)
92+
.append("obfuscated: ")
93+
.append(style.getObfuscated())
94+
.append("\n");
95+
96+
sb.append(indentation)
97+
.append(baselineIndent)
98+
.append("}")
99+
.append("\n");
100+
}
101+
102+
List<IChatComponent> siblings = component.getSiblings();
103+
if (!siblings.isEmpty()) {
104+
sb.append(indentation)
105+
.append(baselineIndent)
106+
.append("siblings: [\n");
107+
108+
for (IChatComponent sibling : siblings) {
109+
prettyPrintHelper(sibling, sb, indent + 8);
110+
}
111+
112+
sb.append(indentation)
113+
.append(baselineIndent)
114+
.append("]\n");
115+
}
116+
117+
sb.append(indentation).append("}\n");
118+
}
119+
120+
private static String indent(int level) {
121+
StringBuilder sb = new StringBuilder();
122+
for (int i = 0; i < level; i++) {
123+
sb.append(' ');
124+
}
125+
126+
return sb.toString();
127+
}
128+
129+
}

minecraft/versions/1.8.9-fabric/src/main/java/org/polyfrost/oneconfig/internal/mixin/fabric/Mixin_ChatReceiveEvent_Fabric.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import net.minecraft.text.Text;
3333
import org.polyfrost.oneconfig.api.event.v1.EventManager;
3434
import org.polyfrost.oneconfig.api.event.v1.events.ChatEvent;
35+
import org.polyfrost.oneconfig.internal.utils.ComponentHelper;
3536
import org.spongepowered.asm.mixin.Mixin;
3637
import org.spongepowered.asm.mixin.Unique;
3738
import org.spongepowered.asm.mixin.injection.At;
@@ -72,7 +73,12 @@ private Text modifyMessage(ChatMessageS2CPacket packet) {
7273
//$$ !packet.isNonChat()
7374
//#endif
7475
) {
75-
ocfg$chatEvent = new ChatEvent.Receive(MCTextHolder.convertFromVanilla(packet.getMessage()));
76+
Text component = packet.getMessage();
77+
if (Boolean.getBoolean("oneconfig.debug.chat")) {
78+
System.out.println("Chat message received:\n" + ComponentHelper.prettyPrint(component));
79+
}
80+
81+
ocfg$chatEvent = new ChatEvent.Receive(MCTextHolder.convertFromVanilla(component));
7682
EventManager.INSTANCE.post(ocfg$chatEvent);
7783
return MCTextHolder.convertToVanilla(ocfg$chatEvent.getMessage());
7884
}

modules/hud/src/main/resources/assets/oneconfig/hud/en_default.lang

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ oneconfig.huds.info=World & Server
66
oneconfig.huds.player=Player
77

88
oneconfig.hudeditor.title=HUD Editor
9-
oneconfig.hudeditor.designer.title=HUD Designer
10-
oneconfig.hudeditor.settings.title=Settings
11-
oneconfig.hudeditor.general.title=Background Options
9+
oneconfig.hudeditor.designer.title=Designer
10+
oneconfig.hudeditor.settings.title=HUD Settings
11+
oneconfig.hudeditor.general.title=Component Options
1212
oneconfig.hudeditor.choosesomething=Click on an element to continue.
1313
oneconfig.hudeditor.cantedit.aslegacy=This HUD is running in legacy compatibility mode and cannot be edited.
1414

modules/ui/src/main/java/org/polyfrost/oneconfig/api/ui/v1/UIManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import dev.deftu.omnicore.client.render.OmniMatrixStack;
3131
import dev.deftu.omnicore.client.render.OmniResolution;
3232
import dev.deftu.omnicore.client.render.framebuffer.ManagedFramebuffer;
33+
import dev.deftu.omnicore.client.render.state.DepthFunction;
34+
import dev.deftu.omnicore.client.render.state.OmniManagedDepthState;
3335
import dev.deftu.omnicore.client.render.texture.GpuTexture;
3436
import dev.deftu.textile.minecraft.MCSimpleTextHolder;
3537
import dev.deftu.textile.minecraft.MCTextFormat;
@@ -139,6 +141,8 @@ default PolyUI createDefault() {
139141
scaledWidth, scaledHeight,
140142
Color.WHITE.getRGB()
141143
);
144+
145+
OmniManagedDepthState.enable(DepthFunction.LESS_OR_EQUAL);
142146
});
143147

144148
EventManager.register(ResizeEvent.class, event -> {

0 commit comments

Comments
 (0)