高亮 API

高亮 API

一个Minecraft Forge 1.20.1的库模组,为方块、实体和区域添加自定义高亮和轮廓支持。

基础库

Highlight API

⚠️ 这是一个 开发者库,不是独立的模组。 它本身不执行任何功能——旨在作为其他模组的依赖项使用。

这是一个 Minecraft Forge 1.20.1 的库模组,用于为方块、实体和区域添加自定义高亮和轮廓支持。

特性

  • 对方块、实体和 AABB 区域的轮廓和填充渲染
  • 两个 BlockPos 点之间的区域高亮
  • 内置动画(脉冲、闪烁、淡入)
  • 通过 ICustomAnimation 接口支持自定义动画
  • 深度模式(HIDE - 隐藏在方块后面,IGNORE - 透过方块可见)
  • 支持永久和延迟生命周期
  • AnimationScope 支持(ALPHA 或 COLOR)
  • 自定义线宽控制

使用方法

添加为依赖项

JitPack:

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation fg.deobf("com.github.NOIST1611:HighlightAPI:v1.0.0")
}

Modrinth Maven:

repositories {
    maven { url "https://api.modrinth.com/maven" }
}

dependencies {
    implementation fg.deobf("maven.modrinth:highlight-api:1.0.0")
}

快速开始

HighlightHandle handle = HighlightAPI.create(Lifetime.ETERNAL)
    .setTarget(blockPos)
    .setOutlineColor(1.0f, 0.0f, 0.0f, 1.0f)
    .setFillColor(1.0f, 0.0f, 0.0f, 0.3f)
    .register();

// 完成后移除
handle.remove();

区域高亮

HighlightAPI.create(Lifetime.ETERNAL)
    .setRenderMode(RenderMode.REGION)
    .setTarget(new BlockPos(0, 64, 0))
    .setTargetEnd(new BlockPos(10, 70, 10))
    .setOutlineColor(0.0f, 1.0f, 0.0f, 1.0f)
    .setFillColor(0.0f, 1.0f, 0.0f, 0.2f)
    .register();

动画范围

// 动画透明(透明度)
HighlightAPI.create(Lifetime.ETERNAL)
    .setTarget(blockPos)
    .setAnimation(AnimationType.PULSE)
    .setAnimationScope(AnimationScope.ALPHA)
    .register();

// 动画颜色(黑色 → 原始颜色)
HighlightAPI.create(Lifetime.ETERNAL)
    .setTarget(blockPos)
    .setAnimation(AnimationType.PULSE)
    .setAnimationScope(AnimationScope.COLOR)
    .register();

// 自定义动画

HighlightAPI.create(Lifetime.ETERNAL)
    .setTarget(blockPos)
    .setAnimation(new ICustomAnimation() {
        private float time = 0.0f;

        @Override
        public float tick(float partialTick) {
            time += partialTick * 0.05f;
            return (float)(Math.sin(time) * 0.5 + 0.5);
        }
    })
    .register();

深度模式

// 透过方块可见
HighlightAPI.create(Lifetime.ETERNAL)
    .setTarget(blockPos)
    .setDepthMode(DepthMode.IGNORE)
    .register();

链接