Skip to content

5.2.0 - #14

Open
rdbtCVS wants to merge 24 commits into
26.1.2from
5.2.0
Open

5.2.0#14
rdbtCVS wants to merge 24 commits into
26.1.2from
5.2.0

Conversation

@rdbtCVS

@rdbtCVS rdbtCVS commented Aug 16, 2026

Copy link
Copy Markdown
Member

See V5-Client/V5#91 for description

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 296c6ad52a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


@JvmStatic
@JvmOverloads
fun drawText(text: String, pos: Vec3, scale: Float = 1f, backgroundBox: Boolean = false, increase: Boolean = false, seeThrough: Boolean = false, translate: Boolean = true) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Honor the requested text background

When callers pass backgroundBox = true, the argument is never used, so Render3D.drawText renders exactly the same output as when it is false. This regresses the replaced RenderUtils.drawText behavior, which drew the requested background; either configure/draw a background here or remove the unsupported parameter rather than silently ignoring it.

Useful? React with 👍 / 👎.

@V5-Client V5-Client deleted a comment from chatgpt-codex-connector Bot Aug 16, 2026
# Conflicts:
#	src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRendererMixin.java
#	src/main/java/com/chattriggers/ctjs/internal/mixins/GuiGraphicsExtractorMixin.java
#	src/main/java/com/v5/mixins/ChatComponentMixin.java
#	src/main/java/com/v5/storage/V5MixinStorage.java
#	src/main/resources/assets/v5/natives/linux/x86_64/V5PathJNI.so
#	src/main/resources/assets/v5/natives/macos/arm64/V5PathJNI.dylib
#	src/main/resources/assets/v5/natives/macos/x86_64/V5PathJNI.dylib
#	src/main/resources/assets/v5/natives/windows/x86_64/V5PathJNI.dll
#	src/main/resources/v5.mixins.json

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c09d652272

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +14 to +15
private void afterExtract(GuiGraphicsExtractor context, int mouseX, int mouseY, float deltaTicks, CallbackInfo ci) {
Render2D.INSTANCE.runPreDrawables(context);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Run pre-render callbacks before extracting an open screen

When any Screen is open, both callback sets are now enqueued at the tail of extractRenderStateWithTooltipAndSubtitles. Because the full-screen PIP state intersects the already-extracted screen elements, it is layered above them, so callbacks registered through registerV5PreRender no longer render behind the GUI as the previous renderer's HEAD hook did; enqueue the pre state before screen extraction and leave only normal callbacks at the tail.

Useful? React with 👍 / 👎.

Comment on lines +255 to +256
fun loadImage(path: String): String {
if (path.isUrl()) return path

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Start URL downloads from loadImage

When path is an HTTP(S) URL, loadImage returns without caching the image or adding it to pendingUrls; downloads begin only if the caller later invokes drawImage. Consequently, code that explicitly preloads a URL and waits for isImageLoaded(url) will wait forever, and even code that draws later receives no preloading benefit. Schedule the URL download here and make the loaded-state API account for the URL cache.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ba0823f078

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

shadow.draw()
outline.draw()
Renderer.drawRect(color, x, y, width, height)
Render2D.drawRect(x, y, width, height, color.toInt())

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve Rectangle rendering outside Skija callbacks

When Rectangle.draw() is called from ordinary CT render triggers such as renderOverlay or guiRender, Render2D.beginSkijaFrame has not installed a canvas, so this inherited drawRect call silently does nothing. The previous implementation rendered through the active DrawContextHolder, and Rectangle remains a public compatibility API; keep a vanilla-context fallback here or route Rectangle through the active GUI extractor so existing rectangles, shadows, and outlines remain visible.

Useful? React with 👍 / 👎.

val (endX, endY) = when (resolveGradient(direction)) {
Gradient.TOP_TO_BOTTOM -> x to y + height
Gradient.TL_TO_BR -> x + width to y + height
Gradient.BL_TO_TR -> x + width to y - height

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Anchor bottom-left gradients at the bottom-left corner

For BottomLeftToTopRight, the shader still starts at (x, y) and ends at (x + width, y - height), placing its axis above the rectangle rather than across the requested corners. As a result, the bottom-left and top-right corners do not receive the requested endpoint colors; construct this direction from (x, y + height) to (x + width, y) instead.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 22933c77d7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


//? if <26.2 {
/*internal fun createSkijaPIP(factoryInput: Any?, pre: Boolean): PictureInPictureRenderer<*> {
val buffers = factoryInput!!.javaClass.getMethod("bufferSource").invoke(factoryInput) as MultiBufferSource.BufferSource

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Resolve the 26.1 render buffer without named reflection

On the advertised 26.1.2 build, the PIP factory receives Minecraft's RenderBuffers, but release jars run against intermediary names: the bundled mappings identify this accessor as method_23000, not bufferSource. Consequently this reflective lookup succeeds in a named development environment but throws NoSuchMethodException when the PIP renderers are initialized from a remapped production jar, preventing the new renderer from starting on 26.1.2; use a mapped call/accessor or resolve the method through the mapping API.

Useful? React with 👍 / 👎.

}

private class EntitySelectorAccess(private val impl: EntitySelector) {
private fun field(name: String): Any? = impl.javaClass.getDeclaredField(name).apply { trySetAccessible() }.get(impl)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep entity-selector access remap-safe

In a remapped production jar, EntitySelector does not expose fields named maxResults, includesEntities, etc.; the repository mappings show intermediary names such as field_10822 and field_10830. Thus every dynamic command using entity() or entities() reaches this helper and throws NoSuchFieldException, whereas the removed mixin accessor was remapped safely. The later reflective isAny/matchesSqr calls have the same problem, so these accesses need mapped accessors rather than named reflection.

Useful? React with 👍 / 👎.

internal var referenceSystemTime: Long = 0
private val heldKeys = mutableSetOf<String>()

@JvmStatic @Volatile var isFreecam = false

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve hide-particles during the storage migration

The other former V5MixinStorage controls are migrated into Client, but the hideParticles control and its BlockMixin consumer were deleted without a replacement (a repo-wide search finds no remaining implementation). When the macro enables crop-particle hiding, it can therefore no longer set this state and melon, crop, cactus, and related break particles render normally; migrate this flag and the corresponding particle-cancellation hook along with the other controls.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

val distanceScale = if (increase) (pos.distanceTo(camera.position()).toFloat() / 120f).coerceAtLeast(0.01f) else 1f
val style = TextGizmo.Style.whiteAndCentered().withScale(TextGizmo.Style.DEFAULT_SCALE * scale * distanceScale)

P2 Badge Preserve distance scaling for increased 3D text

When increase = true, multiplying the distance factor by TextGizmo.Style.DEFAULT_SCALE makes the text roughly 50 times smaller than the replaced renderer: Minecraft applies gizmo text scale as style.scale / 16, while the previous path used scale * distance / 120 directly. At typical long-distance label positions, text intended to remain legible therefore becomes effectively invisible; convert the legacy world scale into gizmo scale units before creating the style.


https://github.com/V5-Client/V5Loader/blob/68d28b3071d7bec557c07a723e6500b5ddc87976/typing-generator/src/main/resources/typings.d.ts#L163-L164
P2 Badge Type Render2D as the bound instance

The runtime binds global.Render2D to Render2D.INSTANCE, but this declaration types it as the class's static side. That static side ends without inherited GuiRendererBackend methods, so TypeScript-backed modules report primary APIs such as drawRect, text, and registerV5Render as nonexistent even though they work at runtime; fix the typing source/generator to expose the instance type and regenerate this file rather than editing it manually.

AGENTS.md reference: AGENTS.md:L41-L41

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants