Highlight API

Highlight API

A Minecraft Forge 1.20.1 library mod that adds support for custom highlights and outlines for blocks, entities and regions.

66 downloads
0 followers

Highlight API

⚠️ This is a developer library, not a standalone mod. It does nothing on its own - it is intended to be used as a dependency by other mods.

A Minecraft Forge 1.20.1 library mod that adds support for custom highlights and outlines for blocks, entities and regions.

Features

  • Outline and fill rendering for blocks, entities and AABB regions
  • Region highlighting between two BlockPos points
  • Built-in animations (Pulse, Blink, Fade In)
  • Custom animation support via ICustomAnimation interface
  • Depth modes (HIDE - hidden behind blocks, IGNORE - visible through blocks)
  • Eternal and delayed lifetime support
  • AnimationScope support (ALPHA or COLOR)
  • Custom line width control

Usage

Adding as dependency

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")
}

Quick start

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();

// Remove when done
handle.remove();

Region highlight

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();

Animation Scope

// Animate alpha (transparency)
HighlightAPI.create(Lifetime.ETERNAL)
    .setTarget(blockPos)
    .setAnimation(AnimationType.PULSE)
    .setAnimationScope(AnimationScope.ALPHA)
    .register();

// Animate color (black → original color)
HighlightAPI.create(Lifetime.ETERNAL)
    .setTarget(blockPos)
    .setAnimation(AnimationType.PULSE)
    .setAnimationScope(AnimationScope.COLOR)
    .register();

// Custom animation

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();

Depth mode

// Visible through blocks
HighlightAPI.create(Lifetime.ETERNAL)
    .setTarget(blockPos)
    .setDepthMode(DepthMode.IGNORE)
    .register();

Links