Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
8abc37a
fabric: migrate config registration to public forgeconfigapiport-fabr…
joaovictor-martins Aug 19, 2026
b2e8536
fabric: temporarily disable javac's 100-error display cap
joaovictor-martins Aug 19, 2026
970780f
fabric: eager block/item registration, real entity data serializer re…
joaovictor-martins Aug 19, 2026
2ecf8b6
fabric: add Jade, Continuity, SereneSeasons (+ glitchcore) as compile…
joaovictor-martins Aug 19, 2026
40f7583
fabric: rewrite custom block rendering onto the new FabricBlockStateM…
joaovictor-martins Aug 19, 2026
31d7cd5
fabric: migrate color/render-layer/sprite-source registration to curr…
joaovictor-martins Aug 21, 2026
f2706f2
common/fabric: fix HolderSet.isBound(), onDestroyedByPlayer/registerS…
joaovictor-martins Aug 21, 2026
627af0b
fabric: fix remaining Fabric-API and vanilla-API relocations for 26.1.2
joaovictor-martins Aug 21, 2026
b0e6ceb
fabric: migrate WailaBranchHandler to Jade's current UI API
joaovictor-martins Aug 21, 2026
274f654
fabric: fix MixinVegetationBlock's Family->AerialRootsFamily cast
joaovictor-martins Aug 21, 2026
bad1a4c
fabric: drop dead overrideSaplingReplacementWhenCrouching() call
joaovictor-martins Aug 21, 2026
4e8de3e
fabric: remove 5 dead access-widener entries that failed validateAcce…
joaovictor-martins Aug 21, 2026
9ef1754
fabric: stop eagerly building DendroPotion recipe ItemStacks during m…
joaovictor-martins Aug 21, 2026
e70472b
fabric: wire up common's generated resources, remove temporary -Xmaxe…
joaovictor-martins Aug 21, 2026
082c1b0
fabric: fix custom branch/root/roots model registration (blank textur…
joaovictor-martins Aug 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:acacia",
"textures": {
"bark": "minecraft:block/acacia_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:birch",
"textures": {
"bark": "minecraft:block/birch_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:cherry",
"textures": {
"bark": "minecraft:block/cherry_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:crimson",
"textures": {
"bark": "minecraft:block/crimson_stem",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:dark_oak",
"textures": {
"bark": "minecraft:block/dark_oak_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:surface_root",
"fabric:type": "dynamictrees:surface_root",
"textures": {
"bark": "minecraft:block/dark_oak_log"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:jungle",
"textures": {
"bark": "minecraft:block/jungle_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:surface_root",
"fabric:type": "dynamictrees:surface_root",
"textures": {
"bark": "minecraft:block/jungle_log"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:mangrove",
"textures": {
"bark": "minecraft:block/mangrove_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
},
"layer=exposed": {
"type": "dynamictrees:roots",
"fabric:type": "dynamictrees:roots",
"opaque": false,
"textures": {
"side": "minecraft:block/mangrove_roots_side",
Expand All @@ -13,6 +14,7 @@
},
"layer=filled": {
"type": "dynamictrees:roots",
"fabric:type": "dynamictrees:roots",
"opaque": true,
"textures": {
"side": "minecraft:block/muddy_mangrove_roots_side",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
{
"apply": {
"type": "dynamictrees:roots",
"fabric:type": "dynamictrees:roots",
"opaque": false,
"textures": {
"side": "minecraft:block/mangrove_roots_side",
Expand All @@ -16,6 +17,7 @@
{
"apply": {
"type": "dynamictrees:roots",
"fabric:type": "dynamictrees:roots",
"opaque": true,
"textures": {
"side": "minecraft:block/muddy_mangrove_roots_side",
Expand All @@ -37,6 +39,7 @@
{
"apply": {
"type": "dynamictrees:roots_moss",
"fabric:type": "dynamictrees:roots_moss",
"textures": {
"moss": "minecraft:block/moss_block"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:oak",
"textures": {
"bark": "minecraft:block/oak_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:pale_oak",
"textures": {
"bark": "minecraft:block/pale_oak_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
{
"apply": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:pale_oak",
"textures": {
"bark": "minecraft:block/pale_oak_log",
Expand All @@ -16,6 +17,7 @@
{
"apply": {
"type": "dynamictrees:creaking_heart",
"fabric:type": "dynamictrees:creaking_heart",
"family": "dynamictrees:pale_oak",
"textures": {
"bark": "minecraft:block/pale_oak_log",
Expand All @@ -31,6 +33,7 @@
{
"apply": {
"type": "dynamictrees:creaking_heart",
"fabric:type": "dynamictrees:creaking_heart",
"family": "dynamictrees:pale_oak",
"textures": {
"bark": "minecraft:block/pale_oak_log",
Expand All @@ -46,6 +49,7 @@
{
"apply": {
"type": "dynamictrees:creaking_heart",
"fabric:type": "dynamictrees:creaking_heart",
"family": "dynamictrees:pale_oak",
"textures": {
"bark": "minecraft:block/pale_oak_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:surface_root",
"fabric:type": "dynamictrees:surface_root",
"textures": {
"bark": "minecraft:block/pale_oak_log"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:potted_dynamic_sapling",
"fabric:type": "dynamictrees:potted_dynamic_sapling",
"model": "minecraft:block/flower_pot"
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
{
"apply": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:pale_oak",
"textures": {
"bark": "minecraft:block/pale_oak_log",
Expand All @@ -13,6 +14,7 @@
{
"apply": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:pale_oak",
"textures": {
"bark": "minecraft:block/resin_clump",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:aerial_roots_soil",
"fabric:type": "dynamictrees:aerial_roots_soil",
"family": "dynamictrees:mangrove",
"textures": {
"end": "minecraft:block/mangrove_log_top",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:spruce",
"textures": {
"bark": "minecraft:block/spruce_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:acacia",
"textures": {
"bark": "minecraft:block/stripped_acacia_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:birch",
"textures": {
"bark": "minecraft:block/stripped_birch_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:cherry",
"textures": {
"bark": "minecraft:block/stripped_cherry_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:crimson",
"textures": {
"bark": "minecraft:block/stripped_crimson_stem",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:dark_oak",
"textures": {
"bark": "minecraft:block/stripped_dark_oak_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:jungle",
"textures": {
"bark": "minecraft:block/stripped_jungle_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:mangrove",
"textures": {
"bark": "minecraft:block/stripped_mangrove_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:oak",
"textures": {
"bark": "minecraft:block/stripped_oak_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:pale_oak",
"textures": {
"bark": "minecraft:block/stripped_pale_oak_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:spruce",
"textures": {
"bark": "minecraft:block/stripped_spruce_log",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:warped",
"textures": {
"bark": "minecraft:block/stripped_warped_stem",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"variants": {
"": {
"type": "dynamictrees:branch",
"fabric:type": "dynamictrees:branch",
"family": "dynamictrees:warped",
"textures": {
"bark": "minecraft:block/warped_stem",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
import net.minecraft.resources.Identifier;
import net.minecraft.server.permissions.PermissionCheck;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;

import javax.annotation.Nullable;
import java.util.Collection;
import java.util.List;
import java.util.function.Consumer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;

import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Optional;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.dtteam.dynamictrees.model;

import net.minecraft.client.renderer.block.BlockStateModelSet;
import net.minecraft.client.renderer.block.dispatch.BlockStateModel;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
* Direct handle on DT's own dynamic block state models, bypassing the model manager.
*
* <p>DT's falling-tree geometry is built by asking a model for its parts through
* {@link BlockStateModelWithConnectionData} / {@link BlockStateModelWithRadius}. Those are DT-specific
* interfaces, so the lookup only works if the object handed back is genuinely DT's model.
*
* <p>Other mods are free to replace or decorate baked models — Continuity, for instance, wraps them in
* its own emissive/connected-texture model. Such a wrapper implements neither DT interface, so a plain
* {@code modelSet.get(state)} would silently fall through to
* {@code BlockStateModel#collectParts(RandomSource, List)}, which for a dynamic model is a no-op: the
* tree would fall with its trunk invisible while the leaves (ordinary models) still render.
*
* <p>So DT records its own models here as they are baked and consults this registry first. Wrappers keep
* working for normal in-world rendering — where they are applied through the level-aware path and are
* exactly what we want — while DT's own geometry passes stay on the real model.
*/
public final class DynamicModelRegistry {

private static final Map<BlockState, BlockStateModel> MODELS = new ConcurrentHashMap<>();

private DynamicModelRegistry() {
}

/**
* Drops every recorded model. Must be called at the start of each model bake, before
* {@link #register} runs for the new set.
*/
public static void clear() {
MODELS.clear();
}

/**
* Records DT's model for the given state. Called by the platform's model loading hook.
*/
public static void register(BlockState state, BlockStateModel model) {
MODELS.put(state, model);
}

/**
* @return DT's own model for {@code state}, or {@code null} if DT did not supply one.
*/
@Nullable
public static BlockStateModel get(BlockState state) {
return MODELS.get(state);
}

/**
* DT's own model for {@code state} if there is one, otherwise whatever the model manager holds
* (which may be another mod's wrapper). Use this anywhere DT needs to interrogate its own geometry.
*/
public static BlockStateModel getOrFallback(BlockState state, BlockStateModelSet modelSet) {
final BlockStateModel own = MODELS.get(state);
return own != null ? own : modelSet.get(state);
}
}
Loading