You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动