DynamicTooltipsLib

DynamicTooltipsLib

一个库,为物品动态添加和修改工具提示与名称

图书馆

此模组现已基本冗余,因为 Hytale 已原生实现逐物品提示文本修改功能。我会保持其兼容性更新,但大概率不会添加新功能。

Github 文档

本库使用虚拟物品 ID,在运行时修改物品的视觉与提示文本,同时保持模组兼容性。它管理所有使用本库的模组修改请求,防止编辑冲突并最小化性能影响。

为何使用本库而非直接集成源码?

本库旨在让不同模组无冲突地修改同一物品。若将源码直接集成至您自己的模组,则可能与其他使用相同逻辑的模组产生兼容性问题。目前已有大量玩家和模组使用本库。 hstats 数据

使用示例:

Gradle 配置(通过 CurseMaven):

将仓库和依赖项添加到您的 build.gradle

repositories {
    maven { url "https://cursemaven.com" }
}
dependencies {
    implementation "curse.maven:dynamictooltipslib-1459711:<fileid>"
}

<fileid> 替换为文件 CurseForge 地址末尾的 ID。


以下为极简示例,完整及最新文档请参阅 Github。

import org.herolias.tooltips.api.*;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class MyTooltipProvider implements TooltipProvider {

    @Nonnull
    @Override
    public String getProviderId() {
        return "my-mod:stats";
    }

    @Override
    public int getPriority() {
        return TooltipPriority.DEFAULT; // 100
    }

    @Nullable
    @Override
    public TooltipData getTooltipData(@Nonnull String itemId, @Nullable String metadata) {
        if (metadata == null || !metadata.contains("\"my_data\"")) {
            return null; // 无内容可贡献
        }

        return TooltipData.builder()
                .hashInput("my_data:v1")  // 必需 — 每个状态需保持稳定且唯一
                .addLine("<color is=\"#55FF55\">+10 速度</color>")
                .build();
    }
}

不兼容情况

如果安装了 Soft Packets 模组,物品可能在特定场景下短时间内显示为无效物品。