minecraft-src/net/minecraft/client/gui/components/LerpingBossEvent.java
2025-07-04 01:41:11 +03:00

49 lines
1.3 KiB
Java

package net.minecraft.client.gui.components;
import java.util.UUID;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.Util;
import net.minecraft.network.chat.Component;
import net.minecraft.util.Mth;
import net.minecraft.world.BossEvent;
@Environment(EnvType.CLIENT)
public class LerpingBossEvent extends BossEvent {
private static final long LERP_MILLISECONDS = 100L;
protected float targetPercent;
protected long setTime;
public LerpingBossEvent(
UUID id,
Component name,
float progress,
BossEvent.BossBarColor color,
BossEvent.BossBarOverlay overlay,
boolean darkenScreen,
boolean bossMusic,
boolean worldFog
) {
super(id, name, color, overlay);
this.targetPercent = progress;
this.progress = progress;
this.setTime = Util.getMillis();
this.setDarkenScreen(darkenScreen);
this.setPlayBossMusic(bossMusic);
this.setCreateWorldFog(worldFog);
}
@Override
public void setProgress(float progress) {
this.progress = this.getProgress();
this.targetPercent = progress;
this.setTime = Util.getMillis();
}
@Override
public float getProgress() {
long l = Util.getMillis() - this.setTime;
float f = Mth.clamp((float)l / 100.0F, 0.0F, 1.0F);
return Mth.lerp(f, this.progress, this.targetPercent);
}
}