Skip to content

Certain blocks with the tag "base_block_allow" are unable to have block variants generated #12

Open

Description

@scrin445-maker

When experimenting with Reshape's new tagging feature for version 0.4, I tested tagging vanilla blocks like oak_log, oak_leaves, note_block, gravel, as well as aspen_log and aspen_leaves from Oh The Biomes We've Gone to see if it would work. Unfortunately, it didn't, and I suspect the same can be said for all vanilla blocks (as well as similar modded blocks) that currently aren't automatically marked as base blocks by default.

Given some of these blocks didn't have variants in previous versions, I get the impression this is already a known issue with the rebuilder.

Mods:

  • Fabric API v0.92.7
  • Cloth Config v11.1.136
  • reshaped v0.4
  • Oh The Biomes We've Gone v1.7.5

The following warning/error appears in the logs when you try to tag an oak_log:
[22:01:44]` [Server thread/WARN]: [MatrixRebuilder] rebuild: variant processing FAILED for base minecraft:oak_log (This registry can't create intrusive holders)
java.lang.IllegalStateException: This registry can't create intrusive holders
	at net.minecraft.registry.SimpleRegistry.createEntry(SimpleRegistry.java:374) ~[client-intermediary.jar:?]
	at net.minecraft.block.Block.<init>(Block.java:71) ~[client-intermediary.jar:?]
	at net.minecraft.block.SlabBlock.<init>(SlabBlock.java:34) ~[client-intermediary.jar:?]
	at net.f3rr3.reshaped.block.Slab.ReshapedSlabBlock.<init>(ReshapedSlabBlock.java:7) ~[reshaped-0.4-alpha.jar:?]
	at net.f3rr3.reshaped.registry.VariantCompleter.completeVariant(VariantCompleter.java:65) ~[reshaped-0.4-alpha.jar:?]
	at net.f3rr3.reshaped.util.MatrixRebuilder.rebuild(MatrixRebuilder.java:204) ~[reshaped-0.4-alpha.jar:?]
	at net.f3rr3.reshaped.util.BlockRegistryScanner.lambda$init$2(BlockRegistryScanner.java:31) ~[reshaped-0.4-alpha.jar:?]
	at net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents.lambda$static$12(ServerLifecycleEvents.java:106) ~[fabric-lifecycle-events-v1-2.2.23+1802ada577-1839a3f067e5633.jar:?]
	at net.minecraft.server.MinecraftServer.mdb849ca$fabric-lifecycle-events-v1$lambda$endResourceReload$0$0(MinecraftServer.java:4389) ~[client-intermediary.jar:?]
	at java.util.concurrent.CompletableFuture.uniHandle(Unknown Source) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniHandle.tryFire(Unknown Source) ~[?:?]
	at java.util.concurrent.CompletableFuture$Completion.run(Unknown Source) ~[?:?]
	at net.minecraft.server.ServerTask.run(ServerTask.java:18) ~[client-intermediary.jar:?]
	at net.minecraft.util.thread.ThreadExecutor.executeTask(ThreadExecutor.java:156) ~[client-intermediary.jar:?]
	at net.minecraft.util.thread.ReentrantThreadExecutor.executeTask(ReentrantThreadExecutor.java:23) ~[client-intermediary.jar:?]
	at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:782) ~[client-intermediary.jar:?]
	at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:164) ~[client-intermediary.jar:?]
	at net.minecraft.util.thread.ThreadExecutor.runTask(ThreadExecutor.java:130) ~[client-intermediary.jar:?]
	at net.minecraft.server.MinecraftServer.runOneTask(MinecraftServer.java:764) ~[client-intermediary.jar:?]
	at net.minecraft.server.MinecraftServer.runTask(MinecraftServer.java:758) ~[client-intermediary.jar:?]
	at net.minecraft.util.thread.ThreadExecutor.runTasks(ThreadExecutor.java:115) ~[client-intermediary.jar:?]
	at net.minecraft.server.MinecraftServer.runTasksTillTickEnd(MinecraftServer.java:742) ~[client-intermediary.jar:?]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:675) ~[client-intermediary.jar:?]
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:265) ~[client-intermediary.jar:?]
	at java.lang.Thread.run(Unknown Source) ~[?:?]

Activity

  1. F-3-R-R-3 commented on Mar 16, 2026

    @F-3-R-R-3
    Owner

    Thanks for reporting this bug!

    It is a known issue that the mod crashes when you force it to generate variants for logs. Logs have a facing property, which currently causes the block variant generator to crash. However, I was not aware that oak_leaves, note_block, and gravel could also cause crashes.

    Possible explanations:

    • logs: logs have a facing property, which currently causes the block variant generator to crash.
    • leaves: these blocks have a persistent property, which might cause the block filter to skip them.
    • note_block: has a hard coded rule that forces it to be ignored by the mod. However, it should have been skipped when a tag is applied.
    • gravel: may have been skipped because it has special behavior related to falling blocks.

    The causes of these problems are probably the same for both vanilla and modded blocks.

    A lot of the code responsible for these issues is located here:
    https://github.com/F-3-R-R-3/reshaped-1.20.1/blob/262d89d1f3f2a1d3d8d608ce2643cb9fc3382e2d/src/main/java/net/f3rr3/reshaped/matrix/BaseBlockFilter.java

    I will not be fixing blocks with a facing property soon, because I have plans to implement proper support for them. The idea is to add a system that allows blocks to be rotated before placement while also rotating their textures independently. This will require significant changes, so it will take time to implement.

    However, the other blocks such as gravel, note_block, and leaves should be easier to address, and I will look into those.

    If anyone wants to try and fix this, please do.

  2. F-3-R-R-3 commented on Mar 18, 2026

    @F-3-R-R-3
    Owner

    After investigating this further, I won’t be fixing this issue for now.

    The root cause is that tag-based base blocks are only resolved during the data pack reload phase, which happens after the block registry has already been frozen. At that point, Minecraft no longer allows creating new Block instances (such as slabs, stairs, etc.), which is why the game crashes with the “intrusive holders” error.

    Because of how Minecraft’s lifecycle works, this is not something that can be easily worked around:

    • Tag data is not reliably available before the registry freeze
    • The registry cannot be safely unfrozen
    • Generating variants earlier would ignore data pack tags
    • Generating them later will always fail due to the freeze

    Fixing this properly would require a significant redesign of how and when variants are generated.

    For now, I will leave the tag-based allow system as-is. The deny system does work correctly and can be used as an alternative.

    If anyone has ideas or wants to experiment with a solution, contributions are definitely welcome.

  3. F-3-R-R-3 commented on Mar 18, 2026

    @F-3-R-R-3
    Owner

    What I can do for now is improve configurability around which blocks get variants:

    • Remove some of the hardcoded deny filters (for blocks like oak_leaves or gravel) so they can have variants by default
    • Add a server config that allows you to control which blocks are included or ignored
      @scrin445-maker what do you think?
  4. scrin445-maker commented on Mar 18, 2026

    @scrin445-maker
    Author

    Removing the hardcoded filters will be appreciated, if it can be done without issue. As for the server config, I'm not a modder but isn't that already how the tagging system works as datapacks are server-sided?

    Either way, no real complaints here.

  5. F-3-R-R-3 commented on Mar 20, 2026

    @F-3-R-R-3
    Owner

    Datapacks, block tags, and server configs are quite different.

    Datapacks are built into vanilla and are very easy to implement. However, they have the downside that you can only access them after the game’s registry has closed, which prevents the mod from registering any blocks, because the information from the allow tags is available too late.

    Server configs can be accessed whenever needed, since you have to implement them yourself. This comes at the cost of requiring significantly more code and effort to set up.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions