Визуальная часть Console GUI exp 3.1 ready

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
23 Май 2025
Сообщения
28
Реакции
0
Выберите загрузчик игры
  1. OptiFine

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

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

Спасибо!

добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
 
добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
прикольно
 
ну хз может кому-то нравится
 
вот это прикольна а не ваши скиды ватермарок кривые
 
добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
идея хорошая
 
добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
аххуен делай больше тем, у тебя все классно получается
 
добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
норм ток для кого эт надо ?
 
добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
Годно + rep
 
добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
нету смысла ну нормик
 
добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
это ахуенно, делай дальше +rep, and /up
 
Какая же хуятина бесполезная, еще и по коду выебанная
 
добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
читать файл для отображения логов :roflanEbalo:
 
добавлял себе в клиент только с целью что это будет ахуенно и уникально выглядеть но получилась хуйня, консоль обновляеться а так же ее можно двигать делать больше и тд, хз кому надо но пусть будет)

Пожалуйста, авторизуйтесь для просмотра ссылки.


code:
Expand Collapse Copy
public class ConsoleScreen extends Screen {

    private static final int MIN_WINDOW_WIDTH = 300;
    private static final int MIN_WINDOW_HEIGHT = 150;
    private static final int PADDING = 10;
    private static final int LINE_HEIGHT = 13;
    private static final int RESIZE_AREA_SIZE = 20;

    private int scrollOffset = 0;
    private List<String> logs = new ArrayList<>();
    private Dragging drag;
    private float dragWidth = 400;
    private float dragHeight = 150;
    private boolean resizing;
    private float resizeStartX, resizeStartY;
    private float initialWidth, initialHeight;
    private long lastUpdateTime = 0;
    private static final long UPDATE_INTERVAL = 1000;

    public ConsoleScreen() {
        super(new StringTextComponent("Console"));
        centerWindow();
        loadLogsFromFile();
    }

    [USER=1367676]@override[/USER]
    public void init() {
        super.init();
        centerWindow();
    }

    private void centerWindow() {
        Minecraft minecraft = Minecraft.getInstance();
        drag = new Dragging(null, "Console",
                (minecraft.getMainWindow().getScaledWidth() - dragWidth) / 2,
                (minecraft.getMainWindow().getScaledHeight() - dragHeight) / 2);
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);
    }

    private void loadLogsFromFile() {
        File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
        if (!logFile.exists()) {
            logs.add("Log file not found: " + logFile.getAbsolutePath());
            return;
        }

        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            while ((line = reader.readLine()) != null) {
                logs.add(line);
            }
        } catch (IOException e) {
            logs.add("Error reading log file: " + e.getMessage());
        }
    }

    private void updateLogs() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastUpdateTime >= UPDATE_INTERVAL) {
            File logFile = new File(Minecraft.getInstance().gameDir, "logs/latest.log");
            if (logFile.exists()) {
                try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
                    List<String> newLogs = new ArrayList<>();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        newLogs.add(line);
                    }
                    int existingSize = logs.size();
                    if (newLogs.size() > existingSize) {
                        logs.addAll(newLogs.subList(existingSize, newLogs.size()));
                    }
                } catch (IOException e) {
                    logs.add("Error updating log file: " + e.getMessage());
                }
            }
            lastUpdateTime = currentTime;
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
        drag.onDraw(mouseX, mouseY, Minecraft.getInstance().getMainWindow());
        dragWidth = drag.getWidth();
        dragHeight = drag.getHeight();

        dragWidth = Math.min(dragWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
        dragHeight = Math.min(dragHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
        drag.setWidth(dragWidth);
        drag.setHeight(dragHeight);

        updateLogs();

        Scissor.push();
        Scissor.setFromComponentCoordinates((int) drag.getX(), (int) drag.getY(), (int) dragWidth, (int) dragHeight);
        RenderService.drawRoundedRect(drag.getX(), drag.getY(), dragWidth, dragHeight, 3, ColorService.rgb(17, 17, 17));

        RenderService.drawRoundedRect(drag.getX(), drag.getY() + 15, dragWidth, 2, 0, ColorService.rgb(5, 5, 5));

        int startY = (int) (drag.getY() + PADDING);
        int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
        int startIndex = Math.max(0, logs.size() - maxLines + scrollOffset);

        for (int i = startIndex; i < logs.size() && i < startIndex + maxLines; i++) {
            String log = logs.get(i);
            Fonts.sfui.drawText(matrixStack, log, drag.getX() + PADDING - 4, startY + (i - startIndex) * LINE_HEIGHT + 15, -1, 6.5f);
        }

        Fonts.sfui.drawText(matrixStack, "Console Debug", drag.getX() + 20, drag.getY() + 5, -1, 8);
        Fonts.sfui.drawText(matrixStack, "x", drag.getX() + dragWidth - 12, drag.getY() + 4, -1, 8);
        ClientFonts.icowex[24].drawString(matrixStack, "h", drag.getX() + 5, drag.getY() + 5, -1);
        Scissor.unset();
        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        if (button == 0) {
            boolean isInResizeArea = isResizeHover((int) mouseX, (int) mouseY);
            if (isInResizeArea) {
                resizing = true;
                resizeStartX = (float) mouseX;
                resizeStartY = (float) mouseY;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
                return true;
            }

            boolean isInTitleBar = mouseY >= drag.getY() && mouseY <= drag.getY() + 15 &&
                    mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth;
            if (isInTitleBar && drag.onClick(mouseX, mouseY, button)) {
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (button == 0) {
            drag.onRelease(button);
            if (resizing) {
                resizing = false;
                initialWidth = dragWidth;
                initialHeight = dragHeight;
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
        if (resizing && button == 0) {
            float newWidth = Math.max(MIN_WINDOW_WIDTH, initialWidth + ((float) mouseX - resizeStartX));
            float newHeight = Math.max(MIN_WINDOW_HEIGHT, initialHeight + ((float) mouseY - resizeStartY));
            newWidth = Math.min(newWidth, Minecraft.getInstance().getMainWindow().getScaledWidth() - drag.getX());
            newHeight = Math.min(newHeight, Minecraft.getInstance().getMainWindow().getScaledHeight() - drag.getY());
            drag.setWidth(newWidth);
            drag.setHeight(newHeight);
            dragWidth = newWidth;
            dragHeight = newHeight;
            return true;
        }
        super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
        if (mouseX >= drag.getX() && mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() && mouseY <= drag.getY() + dragHeight) {
            int maxLines = (int) ((dragHeight - 2 * PADDING) / LINE_HEIGHT);
            int maxScrollOffset = Math.max(0, logs.size() - maxLines);
            int newOffset = (int) (scrollOffset - delta);
            scrollOffset = Math.max(-maxScrollOffset, Math.min(0, newOffset));
            return true;
        }
        return super.mouseScrolled(mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public void resize(Minecraft minecraft, int width, int height) {
        super.resize(minecraft, width, height);
        centerWindow();
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        if (keyCode == 256) {
            Minecraft.getInstance().displayGuiScreen(null);
            return true;
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    private boolean isResizeHover(int mouseX, int mouseY) {
        boolean isHovering = mouseX >= drag.getX() + dragWidth - RESIZE_AREA_SIZE &&
                mouseX <= drag.getX() + dragWidth &&
                mouseY >= drag.getY() + dragHeight - RESIZE_AREA_SIZE &&
                mouseY <= drag.getY() + dragHeight;
        return isHovering;
    }
}
Тема чувак
 
Какая же хуятина бесполезная, еще и по коду выебанная
 

Похожие темы

Назад
Сверху Снизу