Начинающий
			
			
				
					
				
			
		Начинающий
		- Статус
- Оффлайн
- Регистрация
- 7 Фев 2024
- Сообщения
- 96
- Реакции
- 0
- Выберите загрузчик игры
- Vanilla
 
Аррей лист, с перемещением по экрану, отзеркаливанием в зависмости от стороны и белой темой :)
На югейме не было аррейлиста, который можно было бы перемещать по экрану, решил сделать и залить
P.s пасыба lustman за удаленную тему без причины
ss -
		 
	
		 
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Ну и в худ
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
				
			На югейме не было аррейлиста, который можно было бы перемещать по экрану, решил сделать и залить
P.s пасыба lustman за удаленную тему без причины

ss -
			
				ArrayListRenderer:
			
		
		
		package Fever.Visual.ui.display.impl;
import Fever.Visual.FeverVisual;
import Fever.Visual.events.EventDisplay;
import Fever.Visual.events.EventUpdate;
import Fever.Visual.functions.api.Category;
import Fever.Visual.functions.api.Function;
import Fever.Visual.ui.display.ElementRenderer;
import Fever.Visual.ui.display.ElementUpdater;
import Fever.Visual.utils.drag.Dragging;
import Fever.Visual.utils.math.StopWatch;
import Fever.Visual.utils.render.ColorUtils;
import Fever.Visual.utils.render.DisplayUtils;
import Fever.Visual.utils.render.font.Fonts;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import ru.hogoshi.Animation;
import java.util.Iterator;
import java.util.List;
public class ArrayListRenderer implements ElementRenderer, ElementUpdater {
    private int lastIndex;
    List<Function> list;
    StopWatch stopWatch = new StopWatch();
    private final Dragging dragging;
    public ArrayListRenderer(Dragging dragging) {
        this.dragging = dragging;
    }
    @Override
    public void update(EventUpdate e) {
        if (stopWatch.isReached(1000)) {
            list = FeverVisual.getInstance().getFunctionRegistry().getSorted(Fonts.sfui, 9 - 1.5f)
                    .stream()
                    .filter(m -> m.getCategory() != Category.Graphics)
                    .filter(m -> m.getCategory() != Category.Theme)
                    .toList();
            stopWatch.reset();
        }
    }
    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();
        float rounding = 6.0F;
        float padding = 3.5F;
        Minecraft mc = Minecraft.getInstance();
        int screenWidth = mc.getMainWindow().getScaledWidth();
        float posX = dragging.getX();
        float posY = dragging.getY();
        int index = 0;
        boolean isWhiteRecolor = FeverVisual.getInstance().getFunctionRegistry().getWhiteRecolor().isState();
        int backgroundColor = isWhiteRecolor ? ColorUtils.rgba(255, 255, 255, 250) : ColorUtils.rgba(16, 16, 16, 200);
        int textColor = isWhiteRecolor ? ColorUtils.rgba(0, 0, 0, 255) : ColorUtils.rgba(255, 255, 255, 255);
        boolean isLeftSide = posX < screenWidth / 2f;
        float maxWidth = 0;
        float totalHeight = 0;
        if (this.list != null) {
            Iterator<Function> iterator = this.list.iterator();
            while(iterator.hasNext()) {
                Function f = iterator.next();
                float fontSize = 6.5F;
                Animation anim = f.getAnimation();
                float value = (float)anim.getValue();
                String text = f.getName();
                float textWidth = Fonts.sfui.getWidth(text, fontSize);
                if (value != 0.0F) {
                    totalHeight += (fontSize + padding * 2.0F) * value;
                    maxWidth = Math.max(maxWidth, textWidth + padding * 2.0F);
                }
            }
            index = 0;
            float currentY = posY;
            Iterator<Function> var9 = this.list.iterator();
            while(var9.hasNext()) {
                Function f = var9.next();
                float fontSize = 6.5F;
                Animation anim = f.getAnimation();
                anim.update();
                float value = (float)anim.getValue();
                String text = f.getName();
                float textWidth = Fonts.sfui.getWidth(text, fontSize);
                if (value != 0.0F) {
                    float localFontSize = fontSize * value;
                    float localTextWidth = textWidth * value;
                    float elementX;
                    float textX;
                    if (isLeftSide) {
                        elementX = posX;
                        textX = elementX + padding;
                    } else {
                        elementX = posX + maxWidth - (localTextWidth + padding * 2.0F);
                        textX = elementX + padding;
                    }
                    DisplayUtils.drawRoundedRect(elementX, currentY, localTextWidth + padding * 2.0F, localFontSize + padding * 2.0F, rounding * value, backgroundColor);
                    Fonts.sfui.drawText(ms, f.getName(), textX, currentY + padding, textColor, localFontSize);
                    currentY += (fontSize + padding * 2.0F - 1.0F) * value;
                    ++index;
                }
            }
            this.lastIndex = index - 1;
            dragging.setWidth(maxWidth);
            dragging.setHeight(totalHeight);
        }
    }
}Ну и в худ
			
				Hud:
			
		
		
		Dragging ArrayListRenderer = FeverVisual.getInstance().createDrag(this,"ArrayList",750f,200f);
this.arrayListRenderer = new ArrayListRenderer(ArrayListRenderer); 
				 
	 
 
		
 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		