增强方块实体重载版

增强方块实体重载版

[非官方移植] 几乎无妥协地减少方块实体FPS卡顿,并提升其视觉效果

性能

非官方移植版

这是原版增强方块实体模组的非官方移植版,增加了对更新版本 Minecraft 的支持,未来或许还会支持 Forge 和 NeoForge。

增强方块实体

EBE 是一款 100% 客户端的 Minecraft 模组,适用于 Fabric 模组加载器,旨在提升方块实体渲染性能,并通过资源包提供自定义功能。

它是如何工作的? EBE 让部分方块实体使用烘焙方块模型,而非卡顿的实体模型。

它仅仅是一款优化模组吗? EBE 不仅仅是优化模组,其优化还带来了许多视觉上的改进。
这些可能包括:

  • 方块实体上的平滑光照
  • 能够使用方块模型重新塑造方块实体
  • 可切换诸如圣诞箱子等功能
  • 能够从尽可能远的距离看到方块实体

那动画呢? EBE 最棒的一点在于,你仍然可以保留动画,同时获得烘焙模型带来的性能提升!大多数带动画的方块实体模型只会在绝对必要时才渲染。

我可以和 Sodium 一起使用吗? 是的。

  • EBE 0.10.2 及以上版本与 Sodium 0.6+ 完全兼容
  • 更早版本的 EBE 需要安装 Indium,并与 Sodium 0.5.11 或更低版本搭配使用。

下载模组

如需稳定版,你可以查看 CurseForgeModrinth 页面。如果你想要最新的开发版,可以使用 GitHub Actions(或者你也可以自行构建)。此模组需要 Fabric API

常见问题与帮助

问:我需要模组方面的帮助/需要报告错误!
答: 如果你在设置模组或与其他模组一起使用时遇到问题,我建议你加入我们的 Discord 服务器并在那里寻求帮助。 如果问题是 BUG,请在我们的问题追踪器(页面顶部的“问题”选项卡)上报告。

问:这个模组会导致箱子动画出错或让箱子隐形吗? 答: 这个错误已在 EBE 0.5 及以上版本中被完全消除。如果问题仍然存在(不应该),请在 GitHub 上留下问题或加入 Discord 服务器。与 Sodium 一起使用时,箱子盖可能会闪烁。

问:我的箱子仍然隐形!
答: 你很可能使用了低于 0.4 的 Sodium 版本,该版本默认不支持某些 Fabric 渲染功能。如果你需要在 EBE 中使用低于 0.4 的 Sodium 版本,则应安装 Indium



FPS 提升

渲染 1700 个箱子:

原版

之前

使用 EBE

之后
帧率提升 155%!

你的模组与 EBE 不兼容吗?

如果你是一个对方块实体渲染进行修改的模组开发者,你的模组可能会被 EBE 破坏。幸运的是,EBE 提供了一个 API,允许你强制禁用其功能,从而让你的模组正常运行。
你也无需在你的开发环境中将 EBE 添加为依赖项!

添加入口点

fabric.mod.json:

{
    "entrypoints": {
        "main": [...],
        "client": [...],
        "ebe_v1": [
            "my.mod.compat.EBECompatibility"
        ]
    }
}

需要修改配置值?实现 BiConsumer<Properties, Map<String, Text>>

my.mod.compat.EBECompatibility:

public class EBECompatibility implements BiConsumer<Properties, Map<String, Text>>, ... {
    @Override
    public void accept(Properties overrideConfigValues, Map<String, Text> overrideReasons) {
        overrideConfigValues.setProperty("render_enhanced_chests", "false");
    overrideReasons.put(&quot;render_enhanced_chests&quot;,
            Text.literal(&quot;EBE 增强箱子与我的模组不兼容!&quot;)
                    .formatted(Formatting.YELLOW));
}

...

}

accept(Properties, Map<String, Text>) 函数会在 EBE 加载配置值时被调用。你可以通过设置 overrideConfigValues 中对应的属性来覆盖所需的配置值。这也会在配置菜单中使该选项变为灰色。
为了向用户解释你的模组为何做出此更改,你可以向 overrideReasons 映射中添加一个文本组件,其键为你所更改选项的键。
使用 Yarn 映射时,Textnet.minecraft.text.Text

需要手动重新加载 EBE?实现 Consumer<Runnable>

my.mod.compat.EBECompatibility:

public class EBECompatibility implements Consumer<Runnable>, ... {
    private static Runnable ebeReloader = () -> {};
...

@Override
public void accept(Runnable ebeConfigReloader) {
    ebeReloader = ebeConfigReloader;
}

}

如果你的模组需要根据已加载的资源修改 EBE 的配置值,可能会遇到加载顺序问题。这可以通过手动重新加载 EBE 来部分解决。
accept(Runnable) 函数会在 EBE 首次加载时被调用。该 Runnable 执行 EnhancedBlockEntities.load()。将其存储在字段中,以便在需要时执行。

void onMyModResourceReload() {
    EBECompatibility.someParameter = true;
    EBECompatibility.ebeReloader.run();
    // 你在 EBECompatibility 中的配置修改处理器可以根据
    // EBECompatibility.someParameter 改变其行为。
}