[Question] Trying to get an ExtendedAE block to have connected textures and I'm just confused why they don't work
Barerock opened this issue ยท 28 comments
Question
I'm using 1.20.1, 1.2.3 Fusion for this and I've made a full resourcepack for this mod through its native filepaths. The block in question in "wall_block.png," which functions normally if given a standard texture.
I've provided it a 16x16 and an 80x16 "wall_block_tiles.png" file for the compact method, and I've tried a few scripts but from what I understand this one that I tried first should work for what I need:
folder structure:

The "wall_block.json" is in expatternprovider\models\block. But I've also put it in default expatternprovider\models\block\assembler_matrix where it normally is. The current path above and the previous block\folder\file test renders this:
Which I guess means it's working but clearly there's something wrong with the model or mcmeta?
In the "block": "texture_path" I've tried everything from just block/folder/file to the full filepath. I've put it all in a minecraft directory instead, I've tried other types of code, and I've tried referencing the "wall_block.png" instead to see if the mcmeta took care of the connections for the model.
Speaking of which, here is my mcmeta file:
{ "fusion": { "type": "connecting", "layout": "compact" "render_type": "translucent" } }
I'm almost ripping my hair out at this point trying to figure out why this isn't working with any combo of code I put in. Changing render_type causes a missing texture to render.
I've read the wiki in entirety for the connected textures, and looked through the issues here and found nothing that works. I downloaded an example pack, Midnight's FTC, and used some code there. I just can't get it to work at all. I don't really get where specific files are supposed to go or what files the code is supposed to reference where exactly, but I assume it works identically to all other resources for model/texture paths.
Can you try applying the connecting texture and model you have to a regular cobblestone block to see whether it is related to the mod you are trying to change?
{ "fusion": { "type": "connecting", "layout": "compact" "render_type": "translucent" } }
One thing I did see here is that you are missing a comma before the 'render_type' key. If that's the case in the actual file (and not just a copy-paste thing), it won't be able to parse the json and will print an error message in the console/logs when you reload resources with your resource pack.
I corrected he mcmeta file and got a flat missing texture out of it with this json:
With render_type totally removed nothing changed. I have also changed "block" to the block ID and it now isn't flat, but is still missing.
snippet of error in log
Failed to load model minecraft:models/block/cobblestone.json com.google.gson.JsonParseException: Invalid json for model type 'fusion:connecting'! at TRANSFORMER/[email protected]/com.supermartijn642.fusion.model.ModelTypeRegistryImpl.deserializeModelData(ModelTypeRegistryImpl.java:85) at TRANSFORMER/[email protected]/net.minecraftforge.client.model.ExtendedBlockModelDeserializer.handler$bfa000$fusion$deserialize(ExtendedBlockModelDeserializer.java:551) at TRANSFORMER/[email protected]/net.minecraftforge.client.model.ExtendedBlockModelDeserializer.deserialize(ExtendedBlockModelDeserializer.java) at TRANSFORMER/[email protected]/net.minecraftforge.client.model.ExtendedBlockModelDeserializer.deserialize(ExtendedBlockModelDeserializer.java:38) at MC-BOOTSTRAP/[email protected]/com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:76) at TRANSFORMER/[email protected]/net.minecraft.util.GsonHelper.m_13780_(GsonHelper.java:524) at TRANSFORMER/[email protected]/net.minecraft.util.GsonHelper.m_263475_(GsonHelper.java:531) at TRANSFORMER/[email protected]/net.minecraft.util.GsonHelper.m_13776_(GsonHelper.java:581) at TRANSFORMER/[email protected]/net.minecraft.client.renderer.block.model.BlockModel.m_111461_(BlockModel.java:74) at TRANSFORMER/[email protected]/net.minecraft.client.resources.model.ModelManager.m_246478_(ModelManager.java:110) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) Caused by: com.google.gson.JsonParseException: Invalid json for predicate type 'fusion:match_block'! at TRANSFORMER/[email protected]/com.supermartijn642.fusion.model.types.connecting.predicates.PredicateRegistryImpl.deserializeConnectionPredicate(PredicateRegistryImpl.java:76) at TRANSFORMER/[email protected]/com.supermartijn642.fusion.api.predicate.FusionPredicateRegistry.deserializeConnectionPredicate(FusionPredicateRegistry.java:36) at TRANSFORMER/[email protected]/com.supermartijn642.fusion.model.types.connecting.ConnectingModelType.loadPredicate(ConnectingModelType.java:184) at TRANSFORMER/[email protected]/com.supermartijn642.fusion.model.types.connecting.ConnectingModelType.deserialize(ConnectingModelType.java:99) at TRANSFORMER/[email protected]/com.supermartijn642.fusion.model.types.connecting.ConnectingModelType.deserialize(ConnectingModelType.java:34) at TRANSFORMER/[email protected]/com.supermartijn642.fusion.model.ModelTypeRegistryImpl.deserializeModelData(ModelTypeRegistryImpl.java:83) ... 16 more Caused by: com.google.gson.JsonParseException: Unknown block 'minecraft:block/cobblestone'! at TRANSFORMER/[email protected]/com.supermartijn642.fusion.model.types.connecting.predicates.MatchBlockConnectionPredicate$1.deserialize(MatchBlockConnectionPredicate.java:30) at TRANSFORMER/[email protected]/com.supermartijn642.fusion.model.types.connecting.predicates.MatchBlockConnectionPredicate$1.deserialize(MatchBlockConnectionPredicate.java:21) at TRANSFORMER/[email protected]/com.supermartijn642.fusion.model.types.connecting.predicates.PredicateRegistryImpl.deserializeConnectionPredicate(PredicateRegistryImpl.java:74)
error for the actual block, wall_block
Failed to load model expatternprovider:models/block/assembler_matrix/wall_block.json com.google.gson.JsonParseException: Model loader 'fusion:model' not found. Registered loaders: forge:elements, forge:obj, forge:fluid_container, forge:composite, tetra:modular_loader, expatternprovider:active_formation_plane, forge:separate_transforms, forge:empty, expatternprovider:active_formation_plane_on, forge:item_layers, expatternprovider:ex_drive at TRANSFORMER/[email protected]/net.minecraftforge.client.model.ExtendedBlockModelDeserializer.deserializeGeometry(ExtendedBlockModelDeserializer.java:97) at TRANSFORMER/[email protected]/net.minecraftforge.client.model.ExtendedBlockModelDeserializer.deserialize(ExtendedBlockModelDeserializer.java:55) at TRANSFORMER/[email protected]/net.minecraftforge.client.model.ExtendedBlockModelDeserializer.deserialize(ExtendedBlockModelDeserializer.java:38) at MC-BOOTSTRAP/[email protected]/com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:76) at TRANSFORMER/[email protected]/net.minecraft.util.GsonHelper.m_13780_(GsonHelper.java:524) at TRANSFORMER/[email protected]/net.minecraft.util.GsonHelper.m_263475_(GsonHelper.java:531) at TRANSFORMER/[email protected]/net.minecraft.util.GsonHelper.m_13776_(GsonHelper.java:581) at TRANSFORMER/[email protected]/net.minecraft.client.renderer.block.model.BlockModel.m_111461_(BlockModel.java:74) at TRANSFORMER/[email protected]/net.minecraft.client.resources.model.ModelManager.m_246478_(ModelManager.java:110) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Unknown block 'minecraft:block/cobblestone'!
You need to use the registry id for cobblestone which is just minecraft:cobblestone.
If it wasn't clear, the registry id came back missing texture as well, but fixed it from being flat.
Can you share your entire resource pack of what you have for the cobblestone as a zip?
Two things from the zip file:
In the cobblestone model you specify
"textures": {
"all": "block/wall_block_tiles"
}The only textures I can see in the zip are block/cobblestone and block/cobblestone_tiles.
The block/cobblestone texture is just 16 by 16, but has metadata specifying it is a connecting texture with the compact layout. The block/cobblestone_tiles texture has the 16 by 80 compact layout, but has no metadata.
I can't see the folders in the zip on my phone, only the files, so I can't verify that the locations of all the files are correct currently. I would have to look at that tomorrow when I am at my computer.
Translucent worked to give it a texture, but I can see through the ground through the block and they do not connect. There's also a wild rendering thing going on with the block borders between them. Maybe because I need to use cutout instead.
After trying both: Cutout looks identical to translucent.
Could this be because wall_block.json resides in assembler_matrix folder, overwriting the usual json? I figured that's where it needs to be for the textures to properly apply, otherwise the standard model will clash.
I think Fusion is screwing with my other models as well. I just noticed a few are just missing their textures even though they have the paths set up and have been working for the 6 hours I've been working on this, until I tried doing it with Fusion instead of Continuity. They've just forgotten their paths and idk wtf is wrong with them. Even when corrected they just... don't care???
Nah my textures have just broken for no reason. Idek. This is really infuriating, I'm returning to this tomorrow.
(I did figure out one, but the other is legit broken for no apparent reason other than that god hates me)
I tried to settle for just a translucent block because this specific block only needs to be see-through, honestly, and there's a guaranteed border where it goes anyway. The above is what the center glass texture on the left does when combined with .mcmeta:
{ "fusion": { "type": "base", "render_type": "translucent" } }
I assigned it the glass model in json, and also tried a couple other scripts using no parents and whatnot. Same result.
At this point I'm sort of convinced it's the mod, in which case I'll request resourcepack support from them, but idk. This is dogwater to deal with after 50 hours retexturing stuff for the mod.
OH the method png needs metadata too? Does it have to match the 16x16's?
Wut, I do not understand what you mean
All you need for connected textures is a png in one of the connecting texture formats with corresponding metadata and then replace the model for the block with a connecting model which uses that texture. The texture part is pretty much the same as a vanilla animated texture.
https://github.com/SuperMartijn642/FusionExamples/tree/main/Pieced%20Layout%20Connected%20Glass
Translucent worked to give it a texture, but I can see through the ground through the block
The render type only affects how the texture is rendered. Whether a block culls faces from neighboring blocks, i.e. whether it is considered solid, is unrelated and is hardcoded per block.
At this point I'm sort of convinced it's the mod
If they are doing something special with their model, they likely use a custom baked model through code for the block. That may break the models from fusion and perhaps even regular json models by hardcoding some things.
I have done these steps and gotten nowhere near connecting with the cobblestone test or the modded block.
All you need for connected textures is a png in one of the connecting texture formats with corresponding metadata and then replace the model for the block with a connecting model which uses that texture.
The example I linked has just those two things and works fine ๐คทโโ๏ธ
It should be the same for cobblestone. You overwrite the cobblestone model with a connecting model and overwrite the cobblestone texture with a connecting texture.
Could you share again the resource pack of what you have for the cobblestone block (if you changed anything), the I will have a look.
Okay I am seeing connecting textures with the cobblestone with this:
But they're really not working correctly as dictated by compact method and I can still see through the block because the game is culling behind it. Isn't "translucent" supposed to stop that?
Here's what I see rn:
And thanks for sticking with me, I'm new to texturing and modeling and a lot of this is hard to learn without exposure, although I feel like I'm doing most of this mostly right the first time and getting stuck on confusing snags.
This seems like my template might be wrong, but I've just checked for the third time that it's valid with the ones you have listed. The compact.png seems different and much more confusing to follow than compact_border.png (which is classic optifine, ctm template layout).
You seem to be missing a vertical line in the texture here:

Apart from that, everything looks correct and the image you showed looks mostly as expected.
I assume what you want is the pieced layout. The compact layout result in a pattern like this, similar to the AE2 controller:
https://github.com/SuperMartijn642/FusionExamples/tree/main/Compact%20Layout%20Steel%20Beam

I can still see through the block because the game is culling behind it. Isn't "translucent" supposed to stop that?
The render type only affects how the texture is rendered. Whether a block culls faces from neighboring blocks, i.e. whether it is considered solid, is unrelated and is hardcoded per block.
The render type for a texture is unrelated to whether a block is considered solid and culls faces of neighboring blocks. Each block has a 'visual shape' which is treated as the solid part of a block. A block can, for example, have both translucent and solid parts. The hardcoded shape is what determines what gets culled.
For a lantern or torch the visual shape roughly matches the model and quads occluded by that shape are culled.
Okay, so I can't generally have a non-translucent block be translucent like glass because it will simply cull and look terrible? I can't think of a good reason other than specific building uses that I'd ever want to use cutout or translucent. I guess I'll find out if I ever find a good reason, lol.
I'll see what it looks like with a different texture I have in reserve, and try to get it to work with the block it needs to work with. Thanks for the help.







