Исходник ScrollRenderer | exp 3.1

Начинающий
Статус
Оффлайн
Регистрация
16 Дек 2023
Сообщения
494
Реакции[?]
8
Поинты[?]
4K

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Panel:
Добавляем эти переменные:
private float scroll, animatedScrool; // TODO: Параметры прокрутки и анимации прокрутки
private boolean draggingScrollbar = false; // TODO: Флаг для отслеживания, удерживается ли скроллбар
private float lastMouseY; // TODO: Последняя позиция мыши по Y для отслеживания движения скроллбара

в render добавляем:
@Override public void render(MatrixStack stack, float mouseX, float mouseY) {
animatedScrool = MathUtil.fast(animatedScrool, scroll, 10);
float scrollbarHeight = MathHelper.clamp((height - header - 10) * (height - header - 10) / max, 10, height - header - 10);
float scrollbarY = getY() + header + (-getScroll() / (max - height + header + 4)) * (height - header - 4 - scrollbarHeight);
scrollbarHeight = MathHelper.clamp(scrollbarHeight, 20, height - header - 10); // TODO: у меня мин высота скроллбара 20
scrollbarY = MathHelper.clamp(scrollbarY, getY() + header, getY() + height - scrollbarHeight - 4);

рендер самого скроллбара:
// TODO: Отрисовка скроллбара с учетом ограничения прокрутки
if (max > height - header - 10) {
setScroll(MathHelper.clamp(getScroll(), -max + height - header - 10, 0)); // TODO: Ограничение прокрутки (ставите свое значение если это надо)
setAnimatedScrool(MathHelper.clamp(animatedScrool, -max + height - header - 10, 0));

// TODO: Если скролл на верху
if (scroll >= 0) {
setScroll(0);
setAnimatedScrool(0);
}

RectUtils.drawRoundedRect(getX() + getWidth() - 2.5f, scrollbarY, 3.5f, scrollbarHeight, 1.5f, ColorUtils.rgba(100, 100, 100, 200)); (отрисовка самой полоски)
} else {
setScroll(0);
setAnimatedScrool(0);
}

Фух 50% сделали
// TODO: Если мы перетаскиваем скроллбар
if (draggingScrollbar) {
float deltaY = mouseY - lastMouseY;
float scrollRange = max - height + header + 10;
scroll -= deltaY * 2 * (scrollRange / (height - header - 10)); // TODO: Увеличение скорости прокрутки
scroll = MathHelper.clamp(scroll, -scrollRange, 0);
lastMouseY = mouseY;
}

Основное сделали,осталось сделать нажатие на нее.
@Override
public void mouseClick(float mouseX, float mouseY, int button) {
// TODO: Обработка кликов мыши по компонентам
for (ModuleComponent component : modules) {
component.mouseClick(mouseX, mouseY, button);
}

// TODO: Обработка нажатия на скроллбар
if (button == 0) { // ЛКМ
float header = 55 / 2f;
float scrollbarHeight = MathHelper.clamp((height - header - 10) * (height - header - 10) / max, 10, height - header - 10);
float scrollbarY = getY() + header + (-getScroll() / (max - height + header + 4)) * (height - header - 4 - scrollbarHeight);
scrollbarHeight = MathHelper.clamp(scrollbarHeight, 20, height - header - 10);
scrollbarY = MathHelper.clamp(scrollbarY, getY() + header, getY() + height - scrollbarHeight - 4);

if (mouseX >= getX() + getWidth() - 2.5f && mouseX <= getX() + getWidth() + 1.0f && mouseY >= scrollbarY && mouseY <= scrollbarY + scrollbarHeight) {
draggingScrollbar = true;
lastMouseY = mouseY;
}
}
}

@Override
public void mouseRelease(float mouseX, float mouseY, int button) {
// TODO: Обработка отпускания кнопок мыши на компонентах
for (ModuleComponent component : modules) {
component.mouseRelease(mouseX, mouseY, button);
}

// TODO: Отмена перетаскивания скроллбара
if (button == 0) { // ЛКМ
draggingScrollbar = false;
}
}
ну вот и все
задавайте вопросы и тд (TODO: это подписывал для вас + гуи сделал новую.)
1724990807943.png
+- кринж но переделаете,всем споки ноки
 
Начинающий
Статус
Оффлайн
Регистрация
21 Ноя 2021
Сообщения
37
Реакции[?]
1
Поинты[?]
0
Panel:
Добавляем эти переменные:
private float scroll, animatedScrool; // TODO: Параметры прокрутки и анимации прокрутки
private boolean draggingScrollbar = false; // TODO: Флаг для отслеживания, удерживается ли скроллбар
private float lastMouseY; // TODO: Последняя позиция мыши по Y для отслеживания движения скроллбара

в render добавляем:
@Override public void render(MatrixStack stack, float mouseX, float mouseY) {
animatedScrool = MathUtil.fast(animatedScrool, scroll, 10);
float scrollbarHeight = MathHelper.clamp((height - header - 10) * (height - header - 10) / max, 10, height - header - 10);
float scrollbarY = getY() + header + (-getScroll() / (max - height + header + 4)) * (height - header - 4 - scrollbarHeight);
scrollbarHeight = MathHelper.clamp(scrollbarHeight, 20, height - header - 10); // TODO: у меня мин высота скроллбара 20
scrollbarY = MathHelper.clamp(scrollbarY, getY() + header, getY() + height - scrollbarHeight - 4);

рендер самого скроллбара:
// TODO: Отрисовка скроллбара с учетом ограничения прокрутки
if (max > height - header - 10) {
setScroll(MathHelper.clamp(getScroll(), -max + height - header - 10, 0)); // TODO: Ограничение прокрутки (ставите свое значение если это надо)
setAnimatedScrool(MathHelper.clamp(animatedScrool, -max + height - header - 10, 0));

// TODO: Если скролл на верху
if (scroll >= 0) {
setScroll(0);
setAnimatedScrool(0);
}

RectUtils.drawRoundedRect(getX() + getWidth() - 2.5f, scrollbarY, 3.5f, scrollbarHeight, 1.5f, ColorUtils.rgba(100, 100, 100, 200)); (отрисовка самой полоски)
} else {
setScroll(0);
setAnimatedScrool(0);
}

Фух 50% сделали
// TODO: Если мы перетаскиваем скроллбар
if (draggingScrollbar) {
float deltaY = mouseY - lastMouseY;
float scrollRange = max - height + header + 10;
scroll -= deltaY * 2 * (scrollRange / (height - header - 10)); // TODO: Увеличение скорости прокрутки
scroll = MathHelper.clamp(scroll, -scrollRange, 0);
lastMouseY = mouseY;
}

Основное сделали,осталось сделать нажатие на нее.
@Override
public void mouseClick(float mouseX, float mouseY, int button) {
// TODO: Обработка кликов мыши по компонентам
for (ModuleComponent component : modules) {
component.mouseClick(mouseX, mouseY, button);
}

// TODO: Обработка нажатия на скроллбар
if (button == 0) { // ЛКМ
float header = 55 / 2f;
float scrollbarHeight = MathHelper.clamp((height - header - 10) * (height - header - 10) / max, 10, height - header - 10);
float scrollbarY = getY() + header + (-getScroll() / (max - height + header + 4)) * (height - header - 4 - scrollbarHeight);
scrollbarHeight = MathHelper.clamp(scrollbarHeight, 20, height - header - 10);
scrollbarY = MathHelper.clamp(scrollbarY, getY() + header, getY() + height - scrollbarHeight - 4);

if (mouseX >= getX() + getWidth() - 2.5f && mouseX <= getX() + getWidth() + 1.0f && mouseY >= scrollbarY && mouseY <= scrollbarY + scrollbarHeight) {
draggingScrollbar = true;
lastMouseY = mouseY;
}
}
}

@Override
public void mouseRelease(float mouseX, float mouseY, int button) {
// TODO: Обработка отпускания кнопок мыши на компонентах
for (ModuleComponent component : modules) {
component.mouseRelease(mouseX, mouseY, button);
}

// TODO: Отмена перетаскивания скроллбара
if (button == 0) { // ЛКМ
draggingScrollbar = false;
}
}
ну вот и все
задавайте вопросы и тд (TODO: это подписывал для вас + гуи сделал новую.)
Посмотреть вложение 284444
+- кринж но переделаете,всем споки ноки
круто
 
Сверху Снизу