Conversation
- render checkerboards with a cached tiled shader - skip unnecessary image clipping and use linear sampling - support callback removal and non-blocking surface submission
[skip-native-auto]
[skip-native-auto]
…ding [skip-native-auto]
[skip-native-auto]
There was a problem hiding this comment.
💡 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) { |
There was a problem hiding this comment.
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 👍 / 👎.
# 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
There was a problem hiding this comment.
💡 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".
| private void afterExtract(GuiGraphicsExtractor context, int mouseX, int mouseY, float deltaTicks, CallbackInfo ci) { | ||
| Render2D.INSTANCE.runPreDrawables(context); |
There was a problem hiding this comment.
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 👍 / 👎.
| fun loadImage(path: String): String { | ||
| if (path.isUrl()) return path |
There was a problem hiding this comment.
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 👍 / 👎.
There was a problem hiding this comment.
💡 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()) |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 👍 / 👎.
There was a problem hiding this comment.
💡 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 |
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 👍 / 👎.
💡 Codex ReviewV5Loader/src/main/kotlin/com/chattriggers/ctjs/api/render/Render3D.kt Lines 96 to 97 in 68d28b3 When https://github.com/V5-Client/V5Loader/blob/68d28b3071d7bec557c07a723e6500b5ddc87976/typing-generator/src/main/resources/typings.d.ts#L163-L164 The runtime binds AGENTS.md reference: AGENTS.md:L41-L41 ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
See V5-Client/V5#91 for description