Skip to content

Built-in connected texture implementation#4791

Open
screret wants to merge 70 commits intoGregTechCEu:1.20.1from
screret:sc/something-about-ctm-quads
Open

Built-in connected texture implementation#4791
screret wants to merge 70 commits intoGregTechCEu:1.20.1from
screret:sc/something-about-ctm-quads

Conversation

@screret
Copy link
Copy Markdown
Contributor

@screret screret commented Apr 18, 2026

What

Bring the connected texture implementation into GTM proper.

Implementation Details

Most of the implementation is copied from:

  1. ConnectedTexturesMod (same as the original)
  2. AE2's Forge port of Fabric's rendering API

Outcome

"In-house" connected texture implementation with properly documented code and generally better maintainability all around. Also, less dependencies on LowDragLib, which is no longer supported. Once this PR (and a couple closely related ones) are merged, there is exactly ONE usage of LDLib in the codebase outside of UI: WorldSceneRenderer. 🎉🎉🎉🎉🎉

How Was This Tested

image

Additional Information

I took the liberty to pre-emptively replace shimmer mentions in the resource metadata files with the same key, but for GTM. That shouldn't cause any issues, as (AFAIK) bloom is planned for 8.0.

Slabs, as well as other 'variant' blocks, are practically impossible to add automatic support for in a simple implementation such as this one, as most (vanilla included!) do not override the Forge API method that this uses to check connections (IForgeBlock#getAppearanceBlock). If you want your slabs to connect with full blocks, you should instead use ConnectedTexturesMod proper, as it has support for that. I chose to leave it out of this PR for simplicity's sake.

Potential Compatibility Issues

Texture packs, addons, and modpacks will have to change exactly TWO lines of JSON field names for every texture they're using connected textures on. This can be done very easily with a basic search-and-replace and is not an issue.
Shimmer hasn't been properly supported for almost two years now, and as such I do not believe there is an expectation of its support in GTM continuing.

A regex for fixing the MCMeta files

Match: "ldlib":([\s\{]*)"connection"(:\s".*?")(?:,\s.*)?
Replace with: "gtceu":$1"connection_texture"$2

Also run these after to fix bloom (this is simpler to do now rather than when the bloom PR is merged):
Match: \s*\},\s*"shimmer":\s*\{(\s*"bloom":.*)
Replace with: ,$1

And for files with bloom but without CTM:
Match: (\{\s*)"shimmer":(\s*\{\s*"bloom":.*)
Replace with: $1"gtceu":$2

@screret screret requested a review from a team as a code owner April 18, 2026 17:25
@screret screret force-pushed the sc/something-about-ctm-quads branch from cf02ad9 to 8e54f0e Compare April 18, 2026 18:55
@screret screret marked this pull request as draft April 18, 2026 20:56
@screret screret force-pushed the sc/something-about-ctm-quads branch from 836a167 to 89ebb4f Compare April 19, 2026 20:13
@screret screret marked this pull request as ready for review April 20, 2026 19:12
@screret
Copy link
Copy Markdown
Contributor Author

screret commented Apr 24, 2026

I don't think making a wiki page for that is very useful. Most problems people may have using it aren't easily explained in a general case guide like that.
There's not really much to making them, the process is the same for most connected texture implementations, and as for the metadata file, people can just copy an existing one.

But, if you want a page for it, I can just copy CTMCache's documentation.

@jurrejelle
Copy link
Copy Markdown
Contributor

Yeah please, and honestly if other guides suffice you can also link one of those and mention what changes should be made, and/or have an example mcmeta file
in there. Just that they have enough info to get started, and then we'll expand with potential problems and error handling if they occur.

@screret
Copy link
Copy Markdown
Contributor Author

screret commented Apr 24, 2026

Done.

@jurrejelle jurrejelle added Do Not Merge DO NOT MERGE THIS PR YET! type: refactor Suggestion to refactor a section of code Release: Major - 0.X.0 Releases focused on Content, changes to gameplay; While maintaining mostly API stability. labels Apr 24, 2026
@screret screret changed the title Builtin connected texture implentation. Built-in connected texture implentation Apr 25, 2026
@screret screret changed the title Built-in connected texture implentation Built-in connected texture implementation Apr 25, 2026
@screret screret force-pushed the sc/something-about-ctm-quads branch from 1ce9bf1 to b280f01 Compare May 2, 2026 13:44
# Conflicts:
#	src/main/java/com/gregtechceu/gtceu/client/renderer/block/LampItemRenderer.java
#	src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java
#	src/main/java/com/gregtechceu/gtceu/common/item/LampBlockItem.java
#	src/main/resources/assets/gtceu/textures/block/lamps/black.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/black_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/black_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/blue.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/blue_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/blue_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/brown.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/brown_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/brown_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/cyan.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/cyan_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/cyan_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/gray.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/gray_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/gray_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/green.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/green_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/green_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/light_blue.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/light_blue_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/light_blue_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/light_gray.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/light_gray_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/light_gray_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/lime.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/lime_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/lime_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/magenta.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/magenta_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/magenta_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/orange.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/orange_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/orange_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/pink.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/pink_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/pink_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/purple.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/purple_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/purple_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/red.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/red_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/red_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/white.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/white_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/white_off.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/yellow.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/yellow_emissive.png.mcmeta
#	src/main/resources/assets/gtceu/textures/block/lamps/yellow_off.png.mcmeta
@screret screret force-pushed the sc/something-about-ctm-quads branch 2 times, most recently from d11e49a to 09ad0c3 Compare May 2, 2026 13:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.20.1 Do Not Merge DO NOT MERGE THIS PR YET! Release: Major - 0.X.0 Releases focused on Content, changes to gameplay; While maintaining mostly API stability. type: refactor Suggestion to refactor a section of code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants