Fabric 1.21.1中设置半透明方块导致破坏动画丢失的问题求助
Fabric 1.21.1中设置半透明方块导致破坏动画丢失的问题求助
大家好,我最近在Fabric 1.21.1里开发一个自定义半透明方块(棉花糖方块),遇到了一个头疼的问题:当我把方块设置为半透明渲染层后,破坏时的裂纹动画几乎完全消失了,只有在极端特定的场景下才能勉强看到一点点,基本等于不可用。
我的实现细节
1. 方块核心代码
在DreamBlocks类中注册方块:
public static final Block CottonCandyBlock = register( new Block(AbstractBlock.Settings.copy(Blocks.GLASS) .sounds(BlockSoundGroup.WOOL) .strength(0.8f, 0.8f) .nonOpaque()), "cotton_candy_block", true );
之后将方块加入建筑方块物品组:
ItemGroupEvents.modifyEntriesEvent(ItemGroups.BUILDING_BLOCKS).register((itemGroup) -> { // 其他方块注册... itemGroup.add(CottonCandyBlock.asItem()); });
2. 客户端渲染层配置
在onInitializeClient()中设置了半透明渲染层,就是这行代码直接导致了问题:
BlockRenderLayerMap.INSTANCE.putBlock(DreamBlocks.CottonCandyBlock, RenderLayer.getTranslucent());
3. 资源文件配置
- 方块状态文件
assets/dream-dimensions/blockstates/cotton_candy_block.json:
{ "variants": { "": { "model": "dream-dimensions:block/cotton_candy_block" } } }
- 方块模型文件
assets/dream-dimensions/models/block/cotton_candy_block.json:
{ "parent": "block/cube_all", "textures": { "all": "dream-dimensions:block/cotton_candy_block" } }
另外带alpha通道的纹理、物品模型、战利品表、翻译文件都已正常配置,没有问题。
问题排查过程
- 最初怀疑是Sodium等优化模组的冲突,移除所有第三方模组后问题依然存在;
- 注释掉上述的渲染层设置代码后,方块变成不透明状态,但破坏动画完全正常;
- 偶然发现只有当方块后方没有任何其他方块时,才能勉强看到极其微弱的破坏动画,几乎不可察觉。
求助内容
有没有开发者遇到过同样的问题?或者知道如何在保持方块半透明效果的同时,让破坏动画正常显示?如果需要查看完整项目代码,我可以将GitHub仓库设为公开。
内容来源于stack exchange




