TextTransformations.java 925 B

123456789101112131415161718192021
  1. package me.shedaniel.rei.impl;
  2. import me.shedaniel.math.Color;
  3. import net.minecraft.Util;
  4. import net.minecraft.client.Minecraft;
  5. import net.minecraft.network.chat.TextColor;
  6. import net.minecraft.util.FormattedCharSequence;
  7. import org.jetbrains.annotations.ApiStatus;
  8. @ApiStatus.Internal
  9. public class TextTransformations {
  10. public static FormattedCharSequence applyRainbow(FormattedCharSequence sequence, int x, int y) {
  11. int[] combinedX = {x};
  12. return sink -> sequence.accept((charIndex, style, codePoint) -> {
  13. if (charIndex == 0) combinedX[0] = x;
  14. int rgb = Color.HSBtoRGB(((Util.getMillis() - combinedX[0] * 10 - y * 10) % 2000) / 2000F, 0.8F, 0.95F);
  15. combinedX[0] += Minecraft.getInstance().font.getSplitter().widthProvider.getWidth(codePoint, style);
  16. return sink.accept(charIndex, style.withColor(TextColor.fromRgb(rgb)), codePoint);
  17. });
  18. }
  19. }